norenwake
GitHub の自分の公開リポジトリを暖簾分けした新しいリポジトリを作る、Windows 用 TUI 。Rustで書かれています。
これまでの課題と、このアプリの解決
| これまでの課題 | このアプリの解決 |
|---|---|
| 一連の作業の認知負荷が高く、疲労しやすい | TUIで可視化し、認知負荷を軽減します。 |
| 対象 repo を探すのに時間がかかる | / の絞り込み(スペース区切り AND)で、対象 repo をすばやく見つけられます。 |
| clone 後に remote が元 repo を向いたままで、誤 push の不安がある | clone 直後に remote を再構成し、upstream を削除。origin の fetch は HTTPS、push は SSH に統一します。 |
| 新しい repo 名への変更時に設定と README の整合が崩れやすい | n で repo 名を変えると、作業ディレクトリ名・remote 設定・README.ja.md 先頭ヘッダをまとめて更新します。 |
| 変更内容の確認に時間がかかる | 画面内で README preview と差分(delta)を確認でき、ログも保持されます。 |
| push 前の設定ミスに気づきにくい | Shift + P で検証画面を開き、origin / push URL / upstream をチェック。危険状態ならハードガードで push を拒否します。 |
実運用の最短手順は「Enter で clone → n で命名 → c で commit → Shift + P で検証 → y で push」です。
一手ずつTUIで進めることで、誤りや漏れのリスクと認知負荷を軽減できます。
安全装置
- clone 元として表示するのは「自分の owner リポジトリ」かつ「public / non-fork / non-archived」のみです。
- clone 直後に remote を安全側へ再構成します。
upstreamは削除し、originの fetch URL は HTTPS、push URL は SSH に設定します。- push 前にハードガードを実施します。
originが暖簾分け元を向いている場合は push を拒否します。upstreamが残っている場合は push を拒否します。
必要なもの
- Rust(
cargo) - Python
gitgh(GitHub CLI)delta(diffツール)
Python は norenwake update のセルフアップデート処理で cat-self-update-lib に委譲するためにだけ必要です。
gh は API 認証に使います。token は次の優先順で取得します。
GH_TOKENGITHUB_TOKENgh auth token
インストール
cargo install --force --git https://github.com/cat2151/norenwake
起動
norenwake
更新
norenwake update
更新確認
norenwake check
キー操作
h/l/←/→: フォーカスペイン移動(repos / dir tree / log)j/k/↑/↓: 現在ペイン内で移動PageUp/PageDown: 現在ペイン内をページ移動Enter(repos ペイン上): 選択 repo を clonen: new repo name 編集c: commitShift + P: push 前検証と push confirmShift + L: log 全文を clipboard へコピー/: repos 絞り込み overlay を開く(space 区切り AND 検索)?: help overlayq: 終了
ワークフロー
reposで対象を選びEnterで clonenでnew repo nameを編集・確定cで commitShift + Pで検証結果を確認yを押して push
README 更新ルール
update_readme_ja は、README.ja.md の先頭に次の暖簾分けヘッダを 1 つだけ維持します。
# <new repo name>
元repoからcloneして暖簾分けしました。暖簾分け断面までの履歴を持っています。
既存の同種ヘッダが連続していた場合は畳み込み、重複を残しません。
README preview
- 取得順は
README.ja.md優先、失敗時はREADME.mdにフォールバックします。
データ保存先(Windows)
%LOCALAPPDATA%\norenwake\
前提
- 自分用のアプリですので、他の人が使うことを想定していません。似たような機能がほしいときはcloneや自作をおすすめします。
このアプリが目指すもの
- PoC。Codexで自分用にあると助かるアプリが作れることを実証する(実証した)
目指さないもの(スコープ外)
- サポート。要望や提案に応える