Skip to content

fix(memory): make each row scannable and each button say what it deletes - #49

Merged
sulthannauval merged 1 commit into
mainfrom
fix/memory-panel-ux
Aug 6, 2026
Merged

fix(memory): make each row scannable and each button say what it deletes#49
sulthannauval merged 1 commit into
mainfrom
fix/memory-panel-ux

Conversation

@sulthannauval

Copy link
Copy Markdown
Member

Found by opening the console in a browser against a live gateway with real entries — not by reading the component.

Problems

The generated key dominated every row.

Staging credentials rotate weekly on Mondays
memory_de3f612e-dd95-4b1a-8ca4-5268007fa4d9  ·  1m ago

43 characters of UUID, set at the same weight as the timestamp, directly under the content. For someone scanning what the agent remembers it is the least useful thing on the row and takes the most room — the key only matters when addressing the entry from the API or the CLI. This got worse once the gateway began generating keys for entries stored without one; before that, keys came from the agent and were short names like user_lang.

Every delete button had the same accessible name. Three entries produced three buttons all reading Forget this memory. Nothing distinguished them for a screen reader or for anyone tabbing through.

The count read Memory entries· 3 — a missing space.

Change

Staging credentials rotate weekly on Mondays
15m ago  ·  copy key
  • A generated key collapses to a copy key control. A key the agent chose — user_lang — is a name, and still reads as one.
  • The timestamp leads, since that is what people scan by.
  • Delete buttons name what they remove: Forget "Staging credentials rotate weekly on Mondays".
  • Clipboard failure outside a secure context shows the key in a toast instead of failing silently, so it can still be selected by hand.

Verification

Driven in a real browser against a running gateway. Accessibility tree after the change:

- heading "Memory entries · 3"
- button "Forget \"Staging credentials rotate weekly on Mondays\""
- button "copy key"
- button "Forget \"Deploy runbook lives in docs/operations\""
- button "copy key"
- button "Forget \"The operator prefers Bahasa Indonesia\""
- button "copy key"
npx tsc --noEmit   OK
npx next build     Compiled successfully

One thing worth recording: the first attempt at verifying this looked at a stale build. The old dev server still held port 3120, so the new instance failed with EADDRINUSE while the old one kept serving — and a screenshot at that moment would have shown the unchanged panel and been reported as verified. Killing by port rather than by remembered PID is what caught it.

Risk and rollback

Low — presentation only. git revert restores the previous row layout and labels.

Three problems visible the moment the panel is opened with real entries.

Every row led with a 43-character generated key —
`memory_de3f612e-dd95-4b1a-8ca4-5268007fa4d9` — set at the same weight as the
timestamp, directly under the content. For someone scanning what the agent
remembers it is the least useful thing on the row and takes the most room; the
key only matters when addressing the entry from the API or the CLI. That got
worse once the gateway started generating keys for entries stored without one.

Every delete button was labelled "Forget this memory", so three rows produced
three identical accessible names. Nothing distinguished them for a screen
reader or for anyone navigating by keyboard.

And the count read "Memory entries· 3" — a missing space.

- generated keys collapse to a "copy key" control; a key the agent chose, like
  `user_lang`, is a name and still reads as one
- the timestamp leads, since that is what people actually scan by
- delete buttons name the memory they remove
- clipboard failure outside a secure context shows the key instead of failing
  silently, so it can still be selected by hand

Verified against the running console with a browser, not by reading the JSX.
@sulthannauval
sulthannauval merged commit 1dbb4d7 into main Aug 6, 2026
1 check passed
@sulthannauval
sulthannauval deleted the fix/memory-panel-ux branch August 6, 2026 04:43
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