[ { "rank": 1, "title": "Add Codex SQLite schema-drift coverage and user-visible data errors", "why": "The app currently converts FileNotFoundError/sqlite3.Error into empty lists or zero stats. That prevents crashes but can silently hide DB schema changes, permission failures, or corrupt data.", "suggested_checks": [ "test missing expected columns in threads/logs tables", "test malformed timestamp/token fields", "test UI/status layer can distinguish no data from data access error" ], "files_to_touch_later": [ "src/codex_dashboard/codex_data.py", "src/codex_dashboard/app.py", "tests/test_codex_data.py", "tests/test_crash_safety.py" ] }, { "rank": 2, "title": "Introduce testable UI adapter seams for GTK actions and row rendering", "why": "Headless tests cover startup/import safety but not most GUI behavior: buttons, dialogs, row contents, tray menu, refresh status updates, or xdg-open/resume command construction.", "suggested_checks": [ "unit-test command construction for resume/open-folder without launching processes", "test stop action confirmation path with mocked terminate_process", "test visible-child refresh routing and status text behavior" ], "files_to_touch_later": [ "src/codex_dashboard/app.py", "tests/" ] }, { "rank": 3, "title": "Tighten and document process matching and termination scope", "why": "The process scanner is used by a UI with stop buttons, but it matches broad keywords including claude, gemini, opencode, and MCP servers although the product is described as Codex-first.", "suggested_checks": [ "test false-positive commands such as filenames or arguments containing codex/claude substrings", "add family filters or safer default for stoppable processes", "document why non-Codex families are included if retained" ], "files_to_touch_later": [ "src/codex_dashboard/processes.py", "src/codex_dashboard/app.py", "tests/test_processes.py" ] }, { "rank": 4, "title": "Make service and desktop launch assets relocatable", "why": "systemd and desktop files contain hard-coded absolute paths for this checkout. That is brittle for other users, relocated clones, or packaging.", "suggested_checks": [ "generate files from templates or document local-only nature", "test ExecStart/Exec paths are not stale", "consider console_scripts entry point for installed package launch" ], "files_to_touch_later": [ "pyproject.toml", "systemd/codex-dashboard.service", "desktop/codex-dashboard.desktop", "README.md" ] }, { "rank": 5, "title": "Resolve Claude helper module status", "why": "README and PLAN say unfinished Claude-specific views are not shipped, yet src/codex_dashboard/claude_data.py remains substantial and untested. This increases maintenance surface and ambiguity.", "suggested_checks": [ "decide keep/remove/feature-flag", "if kept, add focused tests for malformed JSONL, bad task JSON, and large directories", "make README explicitly state why Claude data helpers exist" ], "files_to_touch_later": [ "src/codex_dashboard/claude_data.py", "tests/", "README.md", "docs/PLAN.md" ] } ]