振る舞いの契約は デスクトップアプリ、層の境界は 層の依存方向、検証は 検証方針 にある。この文書は、GUI を作り動かすための要件と依存の固定方針、確認結果を示す。
workspace の default-members に GUI を含めないため、root の cargo build・cargo run は CLI だけを対象にし、GUI は package(axon-gui)を指定して起動・検証する。
macOS で、アイコンと名前を持つアプリ(Axon.app)として使うときは scripts/bundle-gui で作る。cargo-bundle の版は mise.toml で固定し、設定とアイコンの元は crates/axon-gui/Cargo.toml の [package.metadata.bundle] にある。macOS は、作った .app を一度開いたときに axon gui のリンクの宛先として認識する。macOS 版は リリース で CLI と同じタグから作り、Developer ID で署名・公証して cask で配布する。Windows と Linux は配布しておらず、アイコン(実行ファイルへの埋め込み、.desktop とアイコンの配置)は配布するときに足す。
axon gui を試すときは、普段の登録の一覧に触れないよう open -a <Axon.app のパス> --env AXON_GUI_DATA_DIR=<絶対パス> で起動してから、管理 root で axon gui を実行する。起動していない .app をリンクで起動すると、この環境変数は渡らず普段の保存場所を使う。
| crate | 指定 | 役割 |
|---|---|---|
gpui-kit |
=0.7.1 |
GPUI、GPUI Base、GPUI Component と既定 asset の facade。アプリは GPUI を gpui_kit 経由で使う |
gpui-pre |
gpui-kit が =0.3.8 に固定 |
Zed の GPUI の snapshot。直接は依存しない |
markdown |
=1.0.0(GPUI Base が使う版) |
本文と Note を描画する前に、GPUI Base と同じ構文の設定で構文木を得て、段落の中の改行を書き換える。画像を代替テキストで描く GPUI Base の Markdown の plugin も、この構文木の節を受け取る。HTML の <img> の代替テキストの文字参照も、この crate の HTML5 の名前付き文字参照の表で読む |
版は exact 指定と Cargo.lock で固定し、開発ブランチや Git 依存には追従しない。更新するときは版を上げる変更として、要件と確認結果も見直す。一次資料は GPUI Kit の導入手順 と v0.7.1 の Cargo.toml。
GPUI は serde_json の preserve_order を有効にするため、GUI と同じ build では CLI・コアの serde_json も挿入順の map になる。記録の canonical bytes がこれに依存しないよう、コアは記録者 metadata のキーを整列して書く(crates/axon-core/src/lifecycle/model.rs の serialize_recorder_data)。
- Rust: 固定した依存の一部が新しい標準ライブラリ API を使うため、GUI は workspace の MSRV より新しい版を自身の
rust-version(crates/axon-gui/Cargo.toml)に宣言し、scripts/check-msrv がその版でも検査する。CLI の MSRV は GUI に合わせて上げない。 - macOS: 15 以上と Xcode Command Line Tools(GPUI Kit の要件)。
- Linux: ビルドに
gcc g++ clang libfontconfig-dev libwayland-dev libxkbcommon-x11-dev libx11-xcb-devを使う。CI は Ubuntu 24.04 でこれを導入し、ビルド・lint と headless の UI テストだけを行う(検証方針)。リンクは x86_64 Linux の Rust 既定である LLD を前提にする。window の表示には Wayland または X11 の session と Vulkan driver が要る。 - Windows: GPUI Kit は Windows 10 以上、MSVC toolchain、Visual Studio 2022 Build Tools、CMake を要件とする。
2026-10-05、macOS 27.0.1(Apple Silicon)、Rust 1.98.0、上記の依存で次を確認した。
cargo run -p axon-guiでウィンドウが開き、日本語のプレースホルダーと説明文が表示される。システムの外観(ライト・ダーク)に追従する。- 当時の作業欄の headless UI テストで、日本語入力、Tab・Shift-Tab によるフォーカスの一巡、メニューの選択と閉鎖、当時の最小ウィンドウ(420×320)で全操作要素がウィンドウ内に収まることを確認した。この作業欄は 2026-10-07 に取り除いた。
- GUI の Rust 1.95.0 でのビルドと、CLI の Rust 1.89.0 での
cargo +1.89.0 check --locked --all-targets --all-featuresが通る。 - Ubuntu 24.04(aarch64 の container、4 CPU、メモリ 7.7 GB、LLD でリンク)で上記の package を導入し、full verification の各 command が headless で通る。同じ環境で GNU ld を使うと、GUI の test binary のリンクがメモリ不足で失敗した。GitHub Actions の x86_64 runner では未実行。
2026-10-05、macOS 27.0.1(Apple Silicon)、Rust 1.98.0 で単一起動を次のように確認した。当時のデータの保存場所には、取り除いたアプリ専用の保存先(projects.json と projects/)を置いていた。
- 単一起動 lock は同一 process 内の二重取得と、lock を持つ子 process を SIGKILL した後の再取得をテストで確認した。
/を作業ディレクトリにしてAXON_GUI_DATA_DIRを一時ディレクトリにした binary を起動し、lock が保持されること、二つ目の起動が lock を取らずデータを作らずに動き続けること、一つ目を SIGKILL すると lock が解放され、三つ目の起動が lock を取ることを確認した。画面の取得はできず、二つ目の説明ウィンドウとメインウィンドウの見た目は目視していない。crates/axon-gui/tests/projects.rsの headless UI テストで、メインウィンドウが単一起動 lock を保持し続けることを確認した。
2026-10-05、macOS 27.0.1(Apple Silicon)、Rust 1.98.0 で共通一覧と詳細を次のように確認した。
crates/axon-gui/src/board/の単体テストで、絞り込みの OR・AND、項目ごとの全解除がゼロ件になること、検索がタイトルと本文の大文字小文字を区別する部分一致であること、子の着手・完了から導く Group の実効状態での絞り込み、階層での参考表示の祖先と件数、依存・前提待ち・Note・履歴の変換、再浮上条件のコマンドを実行しないことを確認した。crates/axon-gui/tests/explorer.rsの headless UI テストで、library で一時保存場所に書いた記録を、チェックボックス・検索・階層とフラットの切り替え・初期値に戻す操作で絞り込めること、行・前提待ちの理由・所属・子のクリックで詳細を辿れること、絞り込みから外れた選択が詳細に残ること、矢印キーでの選択移動、空のプロジェクトと一致ゼロ件の区別、再読み込みで選択が残り新しい Note が出ること、読み込み失敗で前の一覧を出さないこと、プロジェクトを素早く切り替えても別のプロジェクトの記録が混ざらないこと(scheduler の seed を変えた 32 回の実行で、二つの読み込みの完了順の両方)、最小ウィンドウで長いタイトルと多数の Note があっても操作要素が収まることを確認した。- CLI で記録を書いた一時保存場所を
AXON_GUI_DATA_DIRで開き、実機の画面で三列の配置、階層の字下げ、状態・状況・label の表示を目視した。実機のマウス・キーボードでの操作と詳細の表示は目視していない。
2026-10-06、macOS 27.0.1(Apple Silicon)、Rust 1.98.0 で状態の絞り込みの「衝突」の選択肢を次のように確認した。
crates/axon-gui/tests/explorer.rsの headless UI テストで、「衝突」の選択肢が衝突の発生・解消とプロジェクトの切り替えに従って出入りし、隠れている間と初期値に戻す操作で選択済みに戻ること、同じプロジェクトの読み直し中と読み込み失敗の間は外した選択が残ることを確認した。実機の画面では目視していない。
2026-10-07、macOS 27.0.1(Apple M6、メモリ 32 GB)、Rust 1.98.0、release build で、閲覧専用にした版(記録を変更する操作と、詳細の操作の可否の検査を取り除いた後)の大量の記録での資源使用を次のように測った。比較に挙げる 2026-10-06 の値は、macOS 27.0.1(Apple Silicon)で、合成した記録を当時のアプリ専用の保存先に置く手順で同じ形のデータを測ったもので、「対策後」は一覧が表示範囲の行だけを組み立て、詳細が操作の可否の検査を含んでいた版、「対策前」は一覧が全行を組み立て、詳細の検査ごとに記録全体から view を導出し直していた版である。
- データ: 一時的な管理 root に library で合成した 5,000 Entity(上位 Group 110 がそれぞれ Group 4 × Issue 10 を持ち、上位 Issue 50)、Note 3,300、記録 12,700 件。完了・着手中・未着手・未判断の Issue と Group 内の依存を含む。比較に同じ形の 500 Entity(上位 Group 10、記録 1,200 件)も使った。合成と純粋な導出の計時は
cargo run --release -p axon-gui --example scale -- <dir> [上位 Group 数]で行う。<dir>は絶対パスで、なければ管理 root<dir>/rootに合成し、データの保存場所<dir>/dataに登録してから測る。window の描画と操作の計時は、同じ<dir>を開いたアプリを閉じてから(計時も単一起動 lock を取るため)AXON_GUI_SCALE_DIR=<dir> cargo test --release -p axon-gui --test scale -- --ignored --nocaptureで行い、実機ではAXON_GUI_DATA_DIR=<dir>/data cargo run --release -p axon-guiで開く。 - 読込(保存先の読み取り・解析・view の導出、background): 5,000 Entity で 218 ms(うち view の導出 22 ms)、500 Entity で 19 ms(同 1.3 ms)。続く board(一覧と詳細の元になる値)の導出は 8.2 ms / 0.53 ms。
- 絞り込み・検索・階層とフラットの切り替え(行の並びの導出): 5,000 Entity で、条件ごとの中央値が 0.36〜0.60 ms(最大 0.75 ms)。
- 詳細の導出(UI thread): 5,000 Entity で 0.37〜0.47 ms、500 Entity で 0.02〜0.07 ms。2026-10-06 の対策後の版では 23〜150 ms、対策前は 130〜310 ms だった。
- 一覧の描画: GPUI の test platform の headless window(1200×760、固定幅の文字、GPU なし)で、5,000 Entity の初期の絞り込み(3,680 行)の 1 フレームが 0.58〜0.65 ms。描画までを含めて、階層とフラットの切り替えが 1.8〜2.0 ms、状態のチェックボックスの切り替えが 3.6 ms、一覧の 31 行目の詳細を開く操作が 2.2 ms。2026-10-06 の対策後の版ではそれぞれ 0.9〜1.0 ms、2.3〜2.4 ms、4.9 ms、99 ms、対策前は 85〜89 ms、173〜175 ms、525 ms、505 ms だった。500 Entity では 1 フレーム 0.59〜0.65 ms。
- メモリ(実機の release binary の phys_footprint を
footprintで、起動直後から約 12 秒の間に 1.5 秒ごとに取得): 登録なしで 46〜61 MB、5,000 Entity で 77〜80 MB(footprintが示す起動からのピーク 112 MB)。画面を取得していないため、一覧の表示後の値かは目視していない。2026-10-06 に対策後の版で一覧の表示後として測った値(このときも画面は取得できていない)は、プロジェクトなしで 63〜67 MB、5,000 Entity で 93〜97 MB で、全行を組み立てていた対策前の binary も 94〜97 MB だったことから、増加分は表示量ではなく保持する記録と view の量に比例すると判断した。取得の方法と時点が異なるため、二つの日の値は直接比べられない。この大きさならメモリへの対策は不要と判断した。実機の描画のフレーム時間は測っていない。 crates/axon-gui/tests/explorer.rsの headless UI テストで、200 件の一覧が表示範囲外の行を組み立てないこと、長いタイトルの行も同じ高さであること、表示範囲外の Entity を選ぶとその行までスクロールしクリックで開けることを確認した。
2026-10-07、macOS 27.0.1(Apple Silicon)、Rust 1.98.0 で、記録を変更する操作を取り除いた閲覧専用の画面を次のように確認した。
crates/axon-gui/tests/explorer.rsの headless UI テスト(記録はaxonlibrary の保存 adapter のLocation・Store::updateで準備)で、絞り込み・階層・詳細・依存先と依存元を含むリンクでの移動・絞り込みから外れた詳細の注記・Note と履歴の表示・最小ウィンドウのレイアウトが通り、閲覧と再読み込みの前後で保存先の.axon/配下の file とディレクトリの一覧・大きさ・更新時刻が変わらないことを確認した。crates/axon-gui/tests/window.rsの headless UI テストで、検索欄への日本語入力で一覧が絞り込まれること、Tab で検索欄から一覧へフォーカスが移り検索欄に入力されないこと、Shift-Tab で同じ順に戻ること、メニューバーの項目と、ウィンドウの最小サイズの指定を確認した。crates/axon-gui/tests/projects.rsで、最小ウィンドウでプロジェクトの欄・検索欄・「再読み込み」・詳細の空の表示が収まることを確認した。
2026-10-07、macOS 27.0.1(Apple Silicon)、Rust 1.98.0 で、前面に戻ったときの読み直しを次のように確認した。
crates/axon-gui/tests/explorer.rsとcrates/axon-gui/tests/projects.rsの headless UI テスト(GPUI の test platform でウィンドウのアクティブ化と非アクティブ化を模擬)で、記録を外から書いた後のアクティブ化で一覧と詳細が新しい記録になること、非アクティブ化では読まないこと、読み直しの間も前の一覧と詳細が表示され、フラットの表示・検索・選択・一覧と詳細のスクロール位置が保たれること、読み直しの失敗では前の一覧を出さないこと、登録の一覧(当時はプロジェクトの一覧)を読めなかった後のアクティブ化でその一覧から読み直すこと、読み直し中・その一覧の読み込み中のアクティブ化で読み込みが重ならないことを確認した。当時はプロジェクトの作成中のアクティブ化も確認したが、作成はその後取り除いた。フォルダを選ぶダイアログを開いている間のアクティブ化は、下の登録の確認に含む。
2026-10-07、macOS 27.0.1(Apple Silicon)、Rust 1.98.0 で、既存の管理 root の登録・解除・切り替えを次のように確認した。
crates/axon-gui/src/project/の単体テストで、二つの管理 root を登録してそれぞれの記録だけを読めること、登録の一覧が開き直した後も残ること、header のないフォルダ・ファイル・存在しないパスの登録拒否と、そのとき一覧を書かないこと、.・..・symlink で指したパスを同じ登録として拒否すること、解除で登録先のファイルが変わらないこと、読めない一覧・未知のformatの一覧で登録・解除せず一覧を書き換えないこと、以前の版のprojects.jsonとprojects/を読まず変えないこと、一時的な Git リポジトリ内の管理 root を読めて、読み取りの前後で.axon/配下の file と Git の index が変わらないこと、index で.axon/配下が unmerged の管理 root も登録でき、読み取りが unmerged のエラーになること(header が欠けていても「保存先がない」ではなく unmerged として示すこと)、一覧の file を書けないときに登録・解除が失敗して一覧が変わらないこと、登録先の管理 root か header が欠けると欠けた path をエラーとし初期化しないこと、記録ディレクトリがない保存先を記録のない保存先として読むこと、.axonがファイルのフォルダを header のないフォルダとして拒否すること、単一起動 lock を保持する起動だけが一覧を変更でき、二つ目が lock を取れないことを確認した。crates/axon-gui/tests/projects.rsの headless UI テスト(フォルダの選択は GPUI の test platform のsimulate_path_prompt_responseで応答)で、二つの管理 root を登録して切り替えるとそれぞれの記録だけが一覧に出ること、新しいウィンドウで開き直しても登録が復元され、先頭のリポジトリが開くこと、重複と header のないフォルダの登録を理由付きで拒否し一覧を書かないこと、ダイアログを閉じても登録が変わらず、開いていた間に書かれた記録が閉じた後に表示されること、登録を解除したリポジトリを解除前に開いたメニューから選んでも選択されないこと、解除で登録先のファイルが変わらず一覧の先頭のリポジトリが開くこと、見つからない登録先をエラーとして示し他の登録へ切り替えられること、Git リポジトリ内の管理 root を登録して読めること、ダイアログを開いている間の切り替えが登録後も保たれること、ダイアログを開いている間に前面に戻っても読み込みを重ねないこと、一覧を保存できないときと、ウィンドウの外で一覧が変わったため解除・登録が拒否されたときに、理由を示して読み直した一覧を表示すること、最小ウィンドウで登録・解除・切り替えの操作要素が収まることを確認した。crates/axon-gui/tests/explorer.rsの閲覧のテストは、一時的な管理 root を登録して行う。crates/axon-guiの本番コード(テストと example を除く)に、保存先の初期化や記録の書き込み(Location::init・Store::update)を呼ぶ箇所がないことをコードの検索で確かめた。
2026-10-08、macOS 27.0.1(Apple Silicon)、Rust 1.98.0 で、ID での検索と一覧の行の ID を次のように確認した。
crates/axon-gui/src/board/の単体テストで、完全 ID・suffix・ID の一部でタイトルと本文に含まない Entity と衝突中の Entity が一致すること、大文字小文字を区別すること、ID で一致しても状態の絞り込みで外れる Entity は一致せず、一致しない項目に検索語を含まないこと、ID にもタイトル・本文にもない検索語が一致しない項目として示されることを確認した。crates/axon-gui/tests/explorer.rsの headless UI テストで、検索欄に入力した ID の suffix で該当する行だけが一覧に出ることと、一覧の各行の 2 行目の文字列が ID から始まることを確認した。test platform は描画した文字を読めないため、2 行目は描画が使う文字列を組み立てる関数の結果で確かめた。最小ウィンドウで操作要素が収まる既存のテストも通った。実機の画面では目視していない。
2026-10-08、macOS 27.0.1(Apple Silicon)、Rust 1.98.0 で、配色と一覧・詳細の見た目を作り直した版を次のように確認した。
cargo test --locked -p axon-guiとcargo +1.95.0 check --locked -p axon-gui --all-targetsが通り、最小ウィンドウで操作要素が収まる既存のテストも通った。- release build を実機で起動し、CLI で作った入れ子の Group・完了・着手中・未着手・未判断・取りやめ・前提待ち・Note を含む一時的な管理 root と、このリポジトリを開いて、ライトとダークの外観で三列の配置、状態ごとの色、階層の罫線、選択した行、詳細の線路・前提待ち・所属・依存元・Note・履歴の表示を画面の取得で目視した。行の選択とダークの外観は、確認用に一時的に加えたコードで切り替え、マウス・キーボードでは操作していない。
- 全幅で操作の置き場所を揃えた版で、
crates/axon-gui/src/app/layout.rsの単体テストにより列の数の境界と狭めるときの遊び、パスの短縮を、crates/axon-gui/tests/explorer.rsとcrates/axon-gui/tests/projects.rsの headless UI テストにより、詳細のバーの左上のボタンが一列・三列ともリンクを辿った順に戻ってから一覧または空の表示に戻ること、詳細が進むときは右から、戻るときは左から入ること(アニメーションはテストの scheduler ではなく実時間で進むため、実時間で待って確認)、パネルの中でパスと「登録を解除」が使えることを確認した。実機では、前面に出さずに起動した確認用のアプリを幅 1180・820・400 で画面の取得で目視し、三つの幅でバーの高さと左上の操作が揃うこと、パネルの閉じるボタンがメニューのボタンと同じ位置にあることを確かめた。動きは実機では目視していない。 - 幅で列を切り替える版で、
crates/axon-gui/tests/explorer.rsとcrates/axon-gui/tests/projects.rsの headless UI テストにより、各境界の幅での列の数、パネルの開閉(ボタン・パネルの外・Escape)と開いたままの絞り込み、一列での詳細と一覧の切り替え(クリック・Enter・「一覧に戻る」・Escape)と矢印キーで一覧が残ること、最小ウィンドウと二列の最小幅で一覧・詳細・パネルの操作要素が収まることを確認した。実機では幅 820 と 400 のウィンドウで、二列、一列の一覧・詳細、パネルを画面の取得で目視した。行の選択とパネルを開いた状態は確認用の一時的なコードで作り、マウス・キーボードでは操作していない。
2026-10-09、macOS 27.0.1(Apple M6)、Rust 1.98.0 で、本文と Note の Markdown の描画と、詳細の文字の選択とコピーを次のように確認した。
crates/axon-gui/src/app/markdown.rsの単体テストで、段落(引用・箇条書き・強調やリンクの中を含む)の中の単独の改行だけが hard break になり、fenced code・インデントされたコード・HTML ブロック・テーブル・見出し・数式のブロックは変わらないこと、書き換えの前後で見出し・箇条書き・引用・コード・テーブル・強調の構文木が変わらないこと、Markdown の画像・段落の中の HTML の<img>・<img>で始まる HTML ブロックが代替テキストになること、描画で消えるタグ(<id>など)を書かれたとおりに示すこと、左・中クリックの http・https のリンクだけを開き、ほかの scheme と右クリック・Control キーを押したクリックでは開かないことを確認した。crates/axon-gui/tests/explorer.rsの headless UI テストで、検索欄にフォーカスがある状態から、タイトル・本文・再浮上条件・Note の文字をドラッグで選択し、編集メニューの「コピー」の action と ⌘C の両方で、表示どおりの文字(Markdown の記号を含まず、画像は代替テキスト)がクリップボードに入ること、タイトルから再浮上条件までまたいだ選択が表示の順にコピーされること、本文の文字を選択した後も Escape で戻れることを確認した。4 KB を超える本文(非同期に解析される)を持つ Entity でも、読み直しの間と後で詳細のスクロール位置が保たれること、詳細が滑り込む既存のテストが通ることを確認した。- 大量の記録の計時(上の 2026-10-07 と同じ 5,000 Entity の合成データと手順)で、一覧の 31 行目の詳細を開く操作は、この変更の版が 3.6〜5.0 ms(計時ごとのばらつきが大きい)、変更前の版(同じ日に同じ Mac で計時)が 3.1〜3.4 ms、詳細を表示した 1 フレームはこの変更の版が 1.1〜1.3 ms、変更前の版が 1.1〜1.2 ms だった。合成データの本文は 1 件 400 byte ほどで、Note は 1〜6 件である。同じ日の計時は、2026-10-07 の値(詳細を開く操作 2.2 ms)より変更前の版でも大きく、計時した時の負荷の違いを含む。
- 実機の画面での表示と、実機のマウス・キーボードでの選択・コピー・リンクの操作は確認していない。数十 KB を超える本文や Note の詳細を開く時間も計時していない。描画の前の書き換え(構文木の解析)は、GPUI Base が 4 KB を超える本文の解析を background で行うのと違い、UI thread で行う。
2026-10-09、macOS 27.0.1(Apple M6)、Rust 1.98.0 で、起動時の復元を次のように確認した。
crates/axon-gui/src/session.rsの単体テストで、session.jsonの書き込みと読み込みの往復、外した label 以外(後から増えた label を含む)が選ばれること、「衝突」と検索欄の文字を持たないこと、壊れた JSON・未知のformat・未知のフィールドや値・相対パスのリポジトリを初期値として扱い、大きさが 0 以下のウィンドウはウィンドウだけを捨てること、古い世代の書き込みが新しい世代(失敗した書き込みを含む)の後に書かないことを確認した。crates/axon-gui/tests/session.rsの headless UI テストで、リポジトリの切り替え・絞り込み・フラット・ウィンドウの大きさの変更が変更のたびに(大きさは 0.5 秒後に)保存され、閉じる直前の大きさも残り、メインウィンドウを開き直すと大きさと位置・リポジトリ・絞り込み・表示形式が戻り、検索欄・詳細は戻らないこと、読めないsession.jsonで初期値から始まり、何も変えずに起動して閉じても書き換えないこと、登録から外れたリポジトリでは先頭のリポジトリを開くこと、起動時に登録の一覧を読めなくても読み直せたときに最後のリポジトリを開くこと、リンクで起動するとリンクのリポジトリが開くこと、全画面にした後も全画面の前の大きさを保つこと、最大化していたウィンドウを最大化して開く指定にすること、test platform の 1920×1080 のディスプレイの外にあったウィンドウが中央に開き、一部だけ外れたウィンドウはその位置に開くこと、大きさがディスプレイと最小サイズの間に収まること、つながっていないディスプレイのウィンドウが主ディスプレイの中央に開き、ディスプレイを示さない場所は主ディスプレイのその位置に開くことを確認した。test platform はウィンドウの移動・最大化を模擬できず(最大化して開くと実装がないため止まる)、ディスプレイが一つで、タイトルバーもないため、位置は開いたときの位置が戻ることで確かめた。- macOS では GPUI がウィンドウの位置をディスプレイからの相対で返し、最大化を
window_boundsで示さず、開くときの大きさを内容の大きさとして扱うことを GPUI 0.3.8 のコードで確かめ、ディスプレイの UUID、is_maximized、内容の大きさを保存するようにした。実機での終了と起動し直し、ウィンドウの移動・最大化・全画面、二つ目のディスプレイや外したディスプレイの上にあったウィンドウの復元は確認していない。
2026-10-06、利用者が macOS の実機で、確認用の保存場所を AXON_GUI_DATA_DIR で指定して cargo run --release -p axon-gui で起動した、閲覧専用にする前の版のアプリを操作し、次の項目をひと通り確認して問題がなかった。確認した環境の OS の版と機種は分かっていない。同じ確認に含めた作成・編集・Note・状態と構造の変更、保存していない入力がある場合の終了の確認は、その機能ごと 2026-10-07 に取り除いたため省く。
- 二つの日本語名のプロジェクトでの検索・絞り込み・階層の切り替え・終了と再起動を続けて行い、内容が混ざらないこと。
- 詳細のリンクでの移動。
- 検索欄での日本語 IME の変換と確定。
- Tab と矢印キーでの移動。
- ウィンドウを縮小したときの表示、空のプロジェクトと絞り込みの一致ゼロ件の表示の区別、二重起動したときの説明ウィンドウ。
2026-10-07、利用者が macOS 27.0.1(Apple M6)の実機で、確認用の保存場所を AXON_GUI_DATA_DIR で指定して、閲覧専用への再編(記録を変更する操作の削除、前面に戻ったときの読み直し、管理 root の登録・解除・切り替え)を終えた時点の release build のアプリを起動・操作し、次の項目を問題なく確認した。登録したのは、このリポジトリ(約 1,900 file の記録)、日本語名のディレクトリにある CLI で作った一時的な管理 root(入れ子の Group、完了・着手中・未着手・未判断・取りやめの各状態、前提待ち、長いタイトル、Note を含む)、名前を変えて見つからなくする一時的な管理 root の三つである。
- フォルダを選ぶダイアログでの三つの登録、重複の登録でその旨を示して登録済みのリポジトリを開くこと、
.axonのないフォルダの登録の拒否と理由の表示、ダイアログを閉じても登録が変わらないこと。 - 左列のメニューでの切り替えで、それぞれの記録だけが表示されること。検索欄での日本語 IME の変換と確定と、それによる絞り込み、状態・種類・label のチェックボックスと初期値に戻す操作、階層とフラットの切り替え。
- 行のクリックと矢印キーでの詳細の表示、前提待ちの理由、所属・依存先へのリンクでの移動、「閉じる」、日本語の Note と履歴の表示。
- CLI で Note の追加・採用・タイトルの変更をした後、ウィンドウを前面に戻すと一覧と詳細に反映されること。
- 登録先の管理 root を名前の変更で見つからなくすると、欠けた path を示すエラーになり、他の登録へ切り替えられること。
- 登録の解除で一覧から外れて先頭のリポジトリが開くこと、終了して起動し直すと登録が残ること、同じ保存場所で二つ目を起動すると説明のウィンドウだけが開くこと。
- 最小ウィンドウまで縮めたときの表示と長いタイトルの切り詰め、日本語の表示。
- 操作の前後で各管理 root の
.axon/配下の file とディレクトリの一覧・内容の SHA-256・大きさ・更新時刻を比べ、差分は確認の手順で CLI から書いた記録の追加だけで、アプリの操作による増減・変更がないこと。このリポジトリではgit statusの.axon/の出力も変わらなかった。
同じ日に、同じ Mac と Rust 1.98.0(MSRV 検査は 1.95.0)で、full verification、GUI の MSRV 検査(cargo +1.95.0 check --locked -p axon-gui --all-targets)、層構造の地図 の cargo tree による crate 境界の検査が通ることを確認した。
未確認の範囲は 2026-10-07 時点で次のとおり。
- 実機での「再読み込み」による反映。CLI を実行した後にウィンドウを前面に戻した時点で読み直されるため、実機ではボタン単独での反映を確かめていない。headless UI テストでは、再読み込みの処理で新しい記録が出ることと、ボタンで読み込み失敗が示されることを確認している。
- 実機での検索欄の日本語 IME の変換中(確定前)の絞り込みの挙動。変換と確定、確定後の絞り込みは確認した。
- 上の 2026-10-07 の利用者の確認に挙げていない、現在の版の実機の画面での表示と操作。たとえば Tab・Shift-Tab によるフォーカスの移動、空のリポジトリと絞り込みの一致ゼロ件の文言の区別(2026-10-06 は閲覧専用にする前の版で確認)、読み直し中の表示、階層の参考表示、絞り込みから外れた選択の詳細の注記、衝突中の Entity の表示と状態の絞り込みの「衝突」、構造の違反と記録にない ID の表示、ダイアログを開いている間の切り替えと記録の変更、見つからない登録先以外の読み込みの失敗(記録の破損・Git の index の unmerged)、登録の一覧を読めない・保存できない・ウィンドウの外で変わった場合の表示、ライトとダークの外観、メニューバーの編集の操作。
AXON_GUI_DATA_DIRを指定しない、既定の保存場所での実機の起動。- 実機の画面での大量の記録のスクロールとフレーム時間。
- Linux と Windows でのウィンドウ表示と入力。Linux は CI 相当のビルドと headless テストだけを対象にする。GitHub Actions の runner での実行は確認していない。
- macOS 15・26 と Intel Mac での起動。