Skip to content

Improve the TUI Journal with a searchable feed - #275

Merged
robzolkos merged 4 commits into
mainfrom
concept/tui-journal-feed
Aug 22, 2026
Merged

Improve the TUI Journal with a searchable feed#275
robzolkos merged 4 commits into
mainfrom
concept/tui-journal-feed

Conversation

@robzolkos

@robzolkos robzolkos commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Replace the TUI Journal's fixed 30-day date strip with a newest-first feed of entries so a person can scan history, search, jump to a date, and write without stepping through empty days. Existing agent-facing Journal commands and server write semantics remain unchanged.

Review readiness: ✅ Yes — interaction evidence, production read validation, local gates, and all required checks are complete
Risk: 🟡 Medium — the change replaces one TUI section's navigation and asynchronous request state
Decision: Confirm the feed interaction and explicit discard/removal safeguards are the right Journal model

✅ Change — Journal history is browsable, searchable, and directly addressable

Before

Open Journal
└── 30 consecutive date tabs
    ├── empty days consume navigation space
    ├── one day visible at a time
    ├── ❌ no history beyond the window
    └── ❌ no search or direct date jump

After

Open Journal
└── newest-first entries feed  ← CHANGED
    ├── scroll near the end → load older entries
    ├── / search → open a matching entry
    ├── g → jump directly to YYYY-MM-DD
    └── a → add today; e → edit with safe discard/remove

The feed reads one geared page at a time, keeps page loading separate from foreground requests, and ignores stale responses. Search is server-side and date detail/write behavior continues through the existing Journal service.

✅ Evidence — before state, complete interaction recording, tests, and production reads are captured

Before

The visible strip contains seven dates; the remaining dates in the fixed 30-day window sit behind horizontal navigation.

Current Journal date-strip view

After

The recording shows feed opening, incremental scrolling, search and opening a result, clearing search, direct date navigation, and adding today's entry.

Journal feed interaction

  • make test passed at this head.
  • make lint passed with 0 issues.
  • make build produced bin/hey against released HEY SDK v0.15.0.
  • make update-nix-hash updated and verified the dependency hash; the required Nix build check passes.
  • ✅ A read-only production walkthrough with the built TUI loaded the feed and completed a zero-result Journal search without exposing captured private content.
GOWORK=off make test
passed

GOWORK=off make lint
0 issues

GOWORK=off make build
passed

The reusable VHS tape and recording are committed. The interaction recording predates only the rebase, released-SDK substitution, and Nix hash refresh; those changes do not alter Journal behavior, and the exact-head production walkthrough reconfirmed feed and search behavior.

✅ Scope — TUI Journal only; CLI commands, agent skill, and server writes are preserved

Included:

  • newest-first entry summaries with friendly dates
  • incremental older-page loading
  • server-side Journal search and result opening
  • direct date jump, today, refresh, add, edit, and explicit removal
  • two-step discard protection for changed forms
  • request-lane protection against stale detail/feed responses

Preserved:

  • hey journal list, read, and write
  • existing rich Trix HTML and attachment data on edits
  • account switching rules and global TUI section navigation
  • HEY's one-entry-per-day write contract

Not included:

  • new agent-facing commands or skill guidance
  • changes to other TUI sections
  • automatic loading of all history or paginated search
✅ Delivery — Haystack is deployed and HEY SDK v0.15.0 is released
  • haystack#8655 is merged and the JSON feed/search endpoint has been verified in production.
  • hey-sdk v0.15.0 is released and pinned in go.mod.

There are no migrations, backfills, feature flags, credentials, configuration changes, or new runtime services. Existing Journal records appear through the feed automatically. Rollback restores the previous TUI section; server and SDK additions are backward compatible.

⚠️ Review decision — focus on async list state and destructive-action safeguards

Please begin with:

  1. feed/search/date request transitions, especially stale response rejection and selection preservation
  2. form cancellation and removal confirmation, including empty and unchanged entries

Known boundary: entry browsing is paginated, while Journal search uses the server's bounded unpaginated result set.

✅ Review path — feed state, editing safety, integration, then delivery artifacts
  1. Journal view and feed list — requests, modes, paging, search, date navigation, and rendering.
  2. Journal form — dirty-state discard and explicit removal behavior.
  3. Journal tests, TUI integration tests, and navigation integration — behavioral and section-level coverage.
  4. SDK pin, module checksums, and Nix package — released dependency and reproducible build.
  5. Demo artifacts — before screenshot, interaction tape, and recording.

Origin and supporting links: Basecamp usability concept · Haystack endpoint · HEY SDK operation

@robzolkos
robzolkos force-pushed the concept/tui-journal-feed branch from ded7e27 to 668f92f Compare August 22, 2026 14:53
@robzolkos
robzolkos marked this pull request as ready for review August 22, 2026 15:04
@robzolkos
robzolkos requested a review from a team as a code owner August 22, 2026 15:04
@robzolkos
robzolkos requested review from monorkin and a balanced review from Copilot and removed request for Copilot and monorkin August 22, 2026 15:04
@robzolkos
robzolkos merged commit 7e35c79 into main Aug 22, 2026
33 checks passed
@robzolkos
robzolkos deleted the concept/tui-journal-feed branch August 22, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant