Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 3.06 KB

File metadata and controls

51 lines (40 loc) · 3.06 KB

Lane TUI Redesign — Plan & Status

Target: premium dark productivity TUI (Linear/Raycast-style) per design mock. Backend (gitlab/llm/jobs/sync/labels/sanitize/model) stays intact.

Status legend: [ ] todo · [~] in progress · [x] done

STATUS: COMPLETE — all phases landed; 262 tests green, cargo fmt --check clean, clippy: only 5 pre-existing warnings in untouched code (sanitize.rs, jobs.rs).

Phase 1 — Theme + app modes + component structure

  • src/theme.rs: centralized palette (BG #0B1117, SURFACE #111827, elevated #162231, border #263445, accent #7C5CFF, semantic colors), style helpers, spinner frames
  • src/lib.rs rewrite: state + logic only; new overlays Settings/Help/Confirm; StatusKind; busy tracking; search filter; story tabs; delete+confirm; settings form wiring (+new logic tests)
  • src/ui/mod.rs: render dispatch, modal frame, buttons, shortcut bar done; ported render tests pending integration

Phase 2 — Settings persistence

  • src/settings.rs (subagent): Settings struct, JSON persistence in config dir, validation, SettingsForm model, apply_to_env merge (env wins)
  • main.rs: config loads env → settings.json fallback; live reload after save (config_dirty)
  • Missing config guides to Settings (Ctrl+,)

Phase 3 — Async status/toast/spinner

  • busy label per job in main loop (subagent); spinner + colored status in status bar (subagent)
  • jobs.rs: status kinds on results (success/error arms)

Phase 4 — Board polish

  • src/ui/board.rs (subagent): column accents, label pills, focus ring, empty states, appearance settings, search-filtered rendering
  • src/ui/chrome.rs (subagent): topbar (brand, connection dot, project@user, search box, buttons), context-aware footer

Phase 5 — Modal redesign

  • src/ui/modals.rs (subagent): issue editor + notes + palette on shared modal chrome
  • src/ui/confirm.rs (subagent): confirm dialog (destructive actions)
  • src/ui/settings_ui.rs (subagent): tabbed settings modal, masked secrets, inline validation, save feedback

Phase 6 — Markdown + Generate Stories

  • src/ui/markdown.rs (subagent): themed renderer, links underlined, italic, ordered lists, tests
  • src/ui/stories.rs (subagent): Edit/Preview/Generated tabs, scrolling source, spinner while generating, review/select/edit/create flow

Phase 7 — Help, keys, tests, lint

  • src/ui/help.rs (subagent): ? overlay with grouped shortcuts
  • main.rs keys (subagent): h/j/k/l, / search, e edit, ? help, Ctrl+, settings, s sync (r kept); search input routing; settings-file config fallback; live reload; busy labels
  • Port/update render tests to new theme; new tests: settings, search nav, confirm flow, story tabs, help
  • cargo fmt + cargo test + clippy clean
  • Commit, push, draft PR

Acceptance criteria mapping

  • Env vars optional → Phase 2
  • Settings persist + guide → Phase 2
  • Async feedback everywhere → Phase 3
  • Markdown/story flow → Phase 6
  • Navigation/modals/theme → Phases 1/4/5/7
  • Backend intact → no changes beyond status kinds