feat(memory): give the memory panel search, filtering and paging - #50
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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()alreadytook an
offsetand 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
on screen. Every entry is reachable.
?q=, so results come backranked; matches show their relevance.
addressable from the CLI and API afterwards; unnamed ones get a UUID that
reads as noise.
Depends on
RantAIClaw #415 (
?q=and?category=onGET /api/v1/memory). Without itthe two new controls return unfiltered results.
Validation
npx tsc --noEmitclean,npm run buildclean, then driven in a real browseragainst a live gateway holding 123 entries:
Memories · 1–50 of 12351–100 of 123, then101–123 of 123, Next disabledroadmap1–1 of 1 matching, the roadmap entrydaily1–3 of 3 matching, onlydailybadgesdeployment1–50 of 119 matching; page 2 stillof 119aria-expanded=trueThe 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.