generated from eblume/project-template
New crate crates/heph-tui: a ratatui terminal agenda, thin client of the hephd unix socket (never touches SQLite, same as heph.nvim). The next big surface — the interactive triage UI the §6.2.1 Todoist study calls for. - 3-pane layout: sidebar (the five §8.2 filter views + projects), task list (attention-colored rows with compact human do/late dates), and a preview pane (the highlighted task's canonical-context doc body + log tail). - App state is generic over a `Backend` seam, so navigation/selection logic is unit-testable without a terminal or daemon; `ClientBackend` forwards to the socket. Rendering is a pure `ui::render(frame, &app)`. - Navigation: j/k within the focused pane, Tab / h / l to move focus, selecting a sidebar source reloads the list, moving the task cursor refreshes the preview. r refresh, q quit. - Socket resolution: --socket flag, then $HEPH_SOCKET, then the standard runtime path (the TUI honors the env var the CLI doesn't). Tests: a headless TestBackend render against a real spawned daemon (asserts views/projects/tasks/preview paint, and Top of Mind excludes blue), plus in-memory navigation unit tests. 8 heph-tui tests; clippy/fmt clean. Mutations (add/done/attention/reschedule/blue) + nvim handoff land in T2. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
31 lines
678 B
TOML
31 lines
678 B
TOML
[package]
|
|
name = "heph-tui"
|
|
description = "Hephaestus terminal UI: the task agenda/triage surface (a thin client of the local hephd daemon)."
|
|
edition.workspace = true
|
|
version.workspace = true
|
|
license.workspace = true
|
|
publish.workspace = true
|
|
authors.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[[bin]]
|
|
name = "heph-tui"
|
|
path = "src/main.rs"
|
|
|
|
[lib]
|
|
name = "heph_tui"
|
|
path = "src/lib.rs"
|
|
|
|
[dependencies]
|
|
heph-core = { path = "../heph-core" }
|
|
hephd = { path = "../hephd" }
|
|
ratatui.workspace = true
|
|
chrono.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
anyhow.workspace = true
|
|
clap.workspace = true
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
tokio.workspace = true
|