NS3 slice: Build the shared list/filter/select panel primitive #20

Closed
opened 2026-06-20 23:28:16 +00:00 by tmk241 · 1 comment
Owner

OBJECTIVE: Add one reusable panel primitive for lists with filtering, movement, selection, empty state, and cancel.

AUTHORITY: Parent #3 NS3: Narrow terminal UI and panel grammar; PRODUCT.md; REQUIREMENTS.md (PRODUCT.md; req: ui/001-002; req: session/003).

AGENT AUTHORITY:

  • Delivery authority: local-commit
  • Tracker authority: this issue may be commented and closed when acceptance passes.
  • Handoff state: committed clean, tracker commented/closed.

PARENT: #3 via explicit issue link and parent checklist.

SCOPE: The smallest source/docs/tests needed to make this behavior real and verified.

BOUNDARIES: No separate UI per feature.

ACCEPTANCE: Trace tests filter/select/cancel a fixture list and state remains inspectable through the protocol.

VERIFICATION: Run the cheapest command that proves acceptance. Include regular tests for the intended payoff and adversarial tests for realistic failure, boundary, or regression cases. If no implementation test command exists yet, create/record the canonical command in AGENTS.md as part of the slice.

BLOCKERS: none

GOAL: Implement this vertical slice to the ACCEPTANCE above, keep the repo clean, cite relevant req: anchors in code/tests where applicable, and close only after verification passes.

OBJECTIVE: Add one reusable panel primitive for lists with filtering, movement, selection, empty state, and cancel. AUTHORITY: Parent #3 `NS3: Narrow terminal UI and panel grammar`; PRODUCT.md; REQUIREMENTS.md (PRODUCT.md; req: ui/001-002; req: session/003). AGENT AUTHORITY: - Delivery authority: local-commit - Tracker authority: this issue may be commented and closed when acceptance passes. - Handoff state: committed clean, tracker commented/closed. PARENT: #3 via explicit issue link and parent checklist. SCOPE: The smallest source/docs/tests needed to make this behavior real and verified. BOUNDARIES: No separate UI per feature. ACCEPTANCE: Trace tests filter/select/cancel a fixture list and state remains inspectable through the protocol. VERIFICATION: Run the cheapest command that proves acceptance. Include regular tests for the intended payoff and adversarial tests for realistic failure, boundary, or regression cases. If no implementation test command exists yet, create/record the canonical command in AGENTS.md as part of the slice. BLOCKERS: none GOAL: Implement this vertical slice to the ACCEPTANCE above, keep the repo clean, cite relevant `req:` anchors in code/tests where applicable, and close only after verification passes.
tmk241 added this to the v1 milestone 2026-06-20 23:28:16 +00:00
tmk241 added the sliceready-for-agentgoal labels 2026-06-20 23:28:16 +00:00
Author
Owner

Implemented in commit c0a4d1c9bb (Add generic list panel primitive).

Verification:

  • zig fmt src/panel.zig src/session.zig src/protocol.zig src/tui.zig src/replay.zig: pass
  • zig build test: pass
  • zig build: pass
  • zig build run -- --help: pass
  • redgate lint / health: pass

Regular tests: generic list panels open with fixture rows, filter, move selection, select, cancel, expose summary state through protocol, and render rows/cursor/no-match state in TUI panels.
Adversarial tests: empty lists, invalid list items/filters, non-list operations, missing panels, and invalid protocol list commands fail with explicit errors without corrupting panel/editor state.

Boundary: generic list/filter/select panel primitive only. No concrete file picker/tree, git/LSP/job/Pi panel, or desktop split UI added.

Implemented in commit c0a4d1c9bb0d (Add generic list panel primitive). Verification: - zig fmt src/panel.zig src/session.zig src/protocol.zig src/tui.zig src/replay.zig: pass - zig build test: pass - zig build: pass - zig build run -- --help: pass - redgate lint / health: pass Regular tests: generic list panels open with fixture rows, filter, move selection, select, cancel, expose summary state through protocol, and render rows/cursor/no-match state in TUI panels. Adversarial tests: empty lists, invalid list items/filters, non-list operations, missing panels, and invalid protocol list commands fail with explicit errors without corrupting panel/editor state. Boundary: generic list/filter/select panel primitive only. No concrete file picker/tree, git/LSP/job/Pi panel, or desktop split UI added.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tmk241/mim#20