Skip to content

feat(memory): give the memory panel search, filtering and paging - #50

Merged
sulthannauval merged 1 commit into
mainfrom
feat/memory-panel-search-and-paging
Aug 6, 2026
Merged

feat(memory): give the memory panel search, filtering and paging#50
sulthannauval merged 1 commit into
mainfrom
feat/memory-panel-search-and-paging

Conversation

@sulthannauval

Copy link
Copy Markdown
Member

Problem

Driving the panel against a 121-entry store — rather than reading it — the
header said "100 of 121" and the list simply stopped. The remaining 21
were unreachable by any control on the page, although api.memory() already
took an offset and the gateway already honoured it. The capability was there;
the panel never asked for it.

Alongside that: no search (the CLI and the TUI both search), no category
filter (though every row shows a category badge and the store form has a
category picker), long entries clamped to three lines with no way to read the
rest, and no way to name an entry the API would happily have named.

And one object went by five names on a single screen — Memory, Facts, Memory
entries, "a fact", "this memory".

Change

  • Paging. 50 per page, Previous/Next, and a range that says which rows are
    on screen. Every entry is reachable.
  • Search, debounced, through the gateway's new ?q=, so results come back
    ranked; matches show their relevance.
  • Category filter, matching the badges and picker already present.
  • Show more on long entries instead of a silent clamp.
  • Optional name in the store form. Naming is what makes an entry
    addressable from the CLI and API afterwards; unnamed ones get a UUID that
    reads as noise.
  • One vocabulary. It is a memory; the verbs are Remember and Forget.

Depends on

RantAIClaw #415 (?q= and ?category= on GET /api/v1/memory). Without it
the two new controls return unfiltered results.

Validation

npx tsc --noEmit clean, npm run build clean, then driven in a real browser
against a live gateway holding 123 entries:

Action Result
baseline Memories · 1–50 of 123
Next, Next 51–100 of 123, then 101–123 of 123, Next disabled
search roadmap 1–1 of 1 matching, the roadmap entry
filter daily 1–3 of 3 matching, only daily badges
search deployment 1–50 of 119 matching; page 2 still of 119
Show more clamp drops, 57.75px → 77px, aria-expanded=true

The stable total across search pages is worth noting: an earlier read said
"1–50 of 50" and that turned out to be a stale gateway binary, not the
panel. Restarting it against the current build gave 119 on both pages.

Risk / rollback

Low: three files, one panel. Revert the commit. The two new query params are
additive server-side, so an older gateway degrades to unfiltered results
rather than erroring.

The panel read "100 of 121" and stopped there: the remaining entries were
unreachable by any control on the page, although api.memory() already took an
offset and the gateway already honoured it.

- Paging. 50 per page, Previous/Next, and a range that says which rows are on
  screen. Every entry is now reachable.
- Search, debounced, routed through the gateway's new ?q= so results come back
  ranked; matches show their relevance.
- Category filter, alongside the badges and the category picker that were
  already there — you could file into a category but never read one back.
- Long entries get Show more instead of a silent three-line clamp.
- The store form can name an entry. Naming is what makes it addressable from
  the CLI and API afterwards; unnamed entries get a UUID that reads as noise.
- One vocabulary. The screen previously called one object Memory, Facts,
  Memory entries, a fact, and a memory across five labels. It is a memory, and
  the verbs are Remember and Forget.

Requires the gateway's ?q= and ?category= params.
@sulthannauval
sulthannauval merged commit 933e108 into main Aug 6, 2026
1 check passed
@sulthannauval
sulthannauval deleted the feat/memory-panel-search-and-paging branch August 6, 2026 06:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant