CC Manager UI 0.6.0
A sessions-list release: the list gains a right-click menu, done marks and an archive scope. It also fixes a menu that quietly froze the entire app.
Fixed
- "Filter by instance" opened nothing and froze the whole app. Clicking it appeared to do nothing, and then no other control responded until you pressed Escape. Both halves were the same bug. reka positions a popup by walking the Vue component tree for the nearest popper root, and the menu was wrapped around its own tooltip, so the tooltip claimed the anchor and the menu's popper never got one. The menu really did open. It just rendered at floating-ui's unpositioned
translate(0, -200%), which is off-screen above the window. Being a modal menu, it also setpointer-events: noneon the page while it was "open", which is what made everything else stop responding. The popper root now lives inside the tooltip, so each anchors to its own element. The advanced-search popover next to it was broken in exactly the same way and had simply been failing in silence, because a popover is not modal and so froze nothing. It is fixed too. A repo guardrail now fails the build on that nesting, and it is tested against both the broken and the fixed shape, because the previous guard for this encoded the wrong cause and crashed on import without ever running. - "Open the session file" asked which app to use instead of just opening.
.jsonlhas no file association on a stock Windows machine, so handing the path to the OS default handler made Windows pop its "How do you want to open this file?" picker. The app now names an editor itself: the first one it finds (VS Code, Cursor, Notepad++, Sublime), falling back to Notepad, which always exists, so the picker can never appear. macOS opens the default text editor. A new Transcript editor setting overrides the choice, and a path that points at nothing falls back to auto-detect rather than leaving the button silently dead.
Added
- Right-click a session. The sidebar list has its own context menu now: mark as done, open the transcript, open or copy the session file, and copy the title, folder or id. Right-clicking acts on the row under the pointer without selecting it, so it never loads a transcript you did not ask for.
- Mark a session as done. A way to say "I have dealt with this" without losing it. The row keeps its place in the list and just stops competing for attention (a check, a struck-through title, dimmed). Marks are stored by the app rather than in the browser, so they survive a cleared browser store. Deliberately not a filter. "Clear all done marks" appears in the list menu once anything is marked.
- Archived sessions are recognised, and hidden by default. The app now reads Claude's own archive flag. Archived is the large majority of a real transcript store, so including them buries the live work. That same ratio is why the control is three-way (Hidden, Shown, Only archived) rather than a checkbox, since finding one archived session in a mixed list is hopeless. The scope is applied before the newest-N cap, so hiding archived returns a full list of live sessions instead of the handful that survived the cap.
- One list-options menu. The sessions toolbar had grown a row of icon buttons, and each new toggle squeezed the search field. Refresh, multi-select, the instance filter and the archive scope now live in a single "..." menu, which lights up whenever something is narrowing the list, so a filter set once and forgotten can no longer read as an empty list with no visible cause.
- A CI guard against vendored-library export drift, so the break this release had to fix cannot recur silently.