Skip to content

Releases: LunarWerxs/AgentHydra

CC Manager UI 0.13.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 09:39

Added

  • Quick instance mode opens a compact Claude/Codex instance launcher without starting the
    session scanner, database, queue, scheduler, monitor, usage refresh, settings sync, or updater.
    Launch it with CCManagerUI.exe --instances, bun run instances, the generated
    CCManagerUI Instances shortcut, or the shortcut action in Settings.

Fixed

  • The Sessions list no longer stalls the app on first load. Every transcript it showed was being
    read and parsed from scratch on each daemon start, all of them at once. On a store of ~1,100
    transcripts that meant a 4.6-second wait for the first list and a jump from 101 MB to 3.1 GB of
    memory. Parsed transcript metadata is now cached on disk, so a restart is warm; the list reads at
    most a dozen transcripts at a time instead of two hundred; and the daemon warms the newest ones in
    the background at startup. Same store, same list: 0.35 seconds and a bounded footprint.
  • Sessions list latency no longer grows with the size of your transcript folder. Building the file
    index globs the whole store and stats every file, and that ran inside requests, so each refresh
    paid a folder-sized tax (145 ms for 1,255 transcripts, and rising). The index is now served from
    the last snapshot and re-swept in the background, which takes routine refreshes from ~150 ms to
    ~3 ms. Looking up a session that is genuinely missing still re-sweeps, at most once every two
    seconds, so a newly created transcript is still found straight away.

CC Manager UI 0.12.2

Choose a tag to compare

@github-actions github-actions released this 28 Jul 08:03

Changed

  • Resuming a Claude Desktop chat now automatically uses the desktop instance that owns that chat,
    rather than an unrelated ambient CLI login. The composer makes that default visible and lets you
    deliberately choose the ambient login, another signed-in desktop or CLI instance, or a saved
    credential account.
  • Archived conversations are shown by default, session source badges are easier to distinguish,
    and the composer makes scheduling the primary Queue action while keeping immediate queueing one
    click away.

Fixed

  • Weekly Claude quota walls are now recognized from the CLI's structured rate-limit event and
    human notice, so affected runs are parked as rate-limited and can be resumed after reset instead
    of being reported as ordinary failures.
  • Composer and queue-builder option menus no longer render empty model, effort, or permission
    entries.

CC Manager UI 0.12.1

Choose a tag to compare

@github-actions github-actions released this 26 Jul 10:04

Added

  • Codex Desktop instances can now run side by side. Each managed Codex instance launches the
    desktop app with its own CODEX_HOME and CODEX_ELECTRON_USER_DATA_PATH, so work, personal, and
    client OpenAI logins have independent windows and local state. The Instances view reports which
    desktops are running and can open, focus, or quit each one; CLI launch/login remains available on
    the same row.
  • Provider settings and manual ChatGPT handoff. Claude Desktop, Claude CLI, Codex Desktop, and
    Codex CLI surfaces can be shown independently. An opt-in composer action creates a bounded,
    secret-screened repository context attachment, copies the task prompt, and opens ChatGPT without
    automating the user's account or submission.

Changed

  • Version tags now publish their tested platform bundles automatically using the matching
    versioned changelog section. Release retries update the existing release in place instead of
    deleting it or leaving another unpublished draft.
  • Windows releases now expose an icon-bearing, single-file GUI executable while retaining a
    compact ZIP for automatic updates. The web UI is embedded, so no loose web or node_modules
    folders are needed beside the executable.
  • Connections settings sync now uses the multi-device-safe 1.2 engine, with atomic first-account
    seeding, conflict-safe nested patches, token-isolated caching, and a five-second final flush that
    cancels a stuck token or network request instead of delaying shutdown indefinitely.

Fixed

  • Codex sessions now match the chats shown by Codex Desktop: canonical sidebar titles come from
    session_index.jsonl, while subagent rollout files no longer appear as separate sessions with
    duplicated titles and forked chat history. Child-agent rollouts remain implementation details of
    their parent chat.
  • Release builds now honor both spaced and --option=value arguments, so every platform compiler
    writes into the versioned one-executable bundle that the smoke and publication jobs validate.

CC Manager UI 0.11.1

Choose a tag to compare

@github-actions github-actions released this 24 Jul 03:08

CC Manager UI 0.11.1

This is a focused maintenance release following the larger 0.11.0 provider-session update. It
does not change configuration or require a data migration.

Reliability

  • Windows shortcut validation is no longer timing-sensitive on cold machines. The real
    PowerShell and WScript.Shell integration test now has a bounded 20-second allowance instead of
    Bun's five-second default. This prevents correct .lnk creation from being reported as a failure
    when PowerShell or COM needs a few extra seconds to initialize.

Session-mapping safety

  • Consolidated the verified Claude Desktop/CLI session-sharing rules into the maintained reference
    and the scanner's source comments:
    • Desktop metadata is matched to transcripts only through cliSessionId.
    • Both the default Claude store and isolated CC Manager UI instance stores are scanned.
    • claude://resume is explicitly treated as a lossy import, not a way to refresh a live chat.
    • Desktop activity timestamps are not trusted for externally appended turns.

Documentation

  • Expanded the reference with the instance-appearance storage contract: labels, icons, and colors
    live in ~/.ccmanagerui/instance-meta.json, while profile folders remain stable even when an
    instance is renamed.
  • Removed completed research and release-process notes after moving their lasting constraints into
    the live reference and source.

Upgrade notes

  • No settings changes.
  • No database migration.
  • No action is required beyond installing or updating to 0.11.1.

Compare v0.11.0...v0.11.1

CC Manager UI 0.11.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 07:41

Added

  • Claude, Codex, and OpenCode conversations now share one Sessions view. Every row is
    source-tagged and the list, full-body search, transcript tail, done marks, REST API, and MCP
    session tools all understand provider identity. Codex reads active and archived rollout JSONL;
    OpenCode CLI and Desktop are both covered through the SQLite store they share. Injected Codex
    runtime blocks and provider reasoning records stay out of the human transcript.
  • Codex CLI instances can be managed alongside Claude instances. Create an isolated
    CODEX_HOME, open codex login for the user, launch it in a terminal, rename it, or delete it
    with exact-name confirmation. The REST API and MCP expose the same lifecycle.

Changed

  • Provider browsing cannot leak into Claude execution. Queue/session composers, rate-limit
    discovery, and Desktop-instance filtering remain explicitly Claude-only, while Codex and
    OpenCode are read-only conversation sources. OpenCode's database is never offered as a raw
    transcript download.
  • OpenCode full-body search now filters and extracts text inside SQLite. Large tool payloads
    are no longer loaded and parsed in JavaScript; against the 260 MB local store this reduced the
    measured search allocation from roughly 49 MiB to 5 MiB.
  • Development now uses Bun's native parallel workspace runner. Removing concurrently
    eliminates a redundant dependency and its shell-command dependency chain. Biome, Hono, Vue,
    Tailwind, Lucide, and other compatible dependencies move to their current non-breaking releases.
  • Manually added dispatch credentials remain portable SQLite values. The app briefly sealed
    this one column with Windows DPAPI during the pre-release hardening pass, but that added
    machine/user coupling without changing the local database threat model enough to justify it.
    A compatibility migration converts any such rows back when the same Windows user can decrypt
    them; the per-user state directory and database still receive restrictive filesystem modes.
  • The completed Codex/ChatGPT/OpenCode research note and the original merge plan were removed after
    their work was implemented and verified.

Fixed

  • Session metadata caching now replaces an active transcript's previous parse instead of retaining
    one cache entry for every appended turn.
  • Scheduler and monitor numeric settings are finite and bounded, and changing the scheduler poll
    interval now updates the live timer immediately rather than waiting for a restart.
  • Filesystem containment uses resolved path components instead of string prefixes, preventing a
    sibling such as instances-elsewhere from being treated as a child of instances.
  • Queue writes reject malformed statuses, booleans, positions, account references, and launch
    options before they can create invalid persisted state or reach a terminal command.
  • A selected dispatch account that cannot be read now fails the run instead of silently falling
    back to the ambient login.
  • Child-process tests use the exact Bun executable running the suite, avoiding Windows bun.cmd
    quote loss in updater fixtures.

Security

  • The passwordless daemon now refuses every non-loopback bind host, and OAuth callback origins are
    restricted to the same loopback set. API bodies are capped at 2 MiB.
  • User-supplied session-search regular expressions are length-bounded and structurally checked
    before execution, preventing synchronous catastrophic backtracking from bypassing the search
    deadline.
  • Terminal launch model and effort values are allowlisted before crossing the shell boundary.
  • GitHub Actions defaults to read-only repository contents; only the release job receives write
    access.

CC Manager UI 0.10.0

Choose a tag to compare

@github-actions github-actions released this 23 Jul 21:39
5aba912

Highlights

Copy the exact session file path. The transcript header and the session right-click menu now
have Copy the session file location to the clipboard. It copies the original absolute .jsonl
path as text, resolved by the daemon rather than reconstructed in the browser.

Shut down the whole app from Settings. The new two-click power control exits the daemon and
signals the tray host to quit, so the watchdog cannot immediately revive an app you intentionally
stopped.

Settings is quieter and more direct. Theme selection and shutdown live in the panel header;
tooltips and the transcript-editor override sit under Appearance → Advanced. The version number is
now both update status and control: green when current, amber when an update is ready, red when
blocked, with a tooltip explaining the state and a click to check or apply.

Added

  • Plain-text copying of the original absolute session transcript location.
  • Full-app shutdown from the Settings header, protected by a two-click confirmation.
  • A verified scoping document for future Codex/ChatGPT/OpenCode session and instance support.
  • bun run screenshots, a synthetic-data screenshot pipeline that fails on missing fixtures,
    page errors, broken view state, or any attempted real API request.
  • Opt-in drag-and-drop path forwarding in the shared Windows tray launcher.

Changed

  • The Instances Plan column now treats a generic live Anthropic tier as Free instead of upgrading
    from stale historical Max/Pro flags left behind after a subscription expires.
  • Appearance settings prioritize everyday controls and tuck specialist options under Advanced.
  • Update state and actions are consolidated into the current-version display.
  • The README's Sessions, Instances and Queue screenshots were recaptured on the current theme using
    synthetic data; captions now match the Plan column and finished-run state shown.

Validation

  • CI passed on Ubuntu and Windows: lint, typecheck, i18n, guardrails, production build, and the full
    test suite.
  • Release bundles compiled for Windows x64, macOS x64/ARM64, and Linux x64/ARM64.
  • Native Windows, macOS and Linux bundles passed boot/health/SPA smoke tests; Linux ARM64 also passed
    its QEMU launch canary.

Full Changelog: v0.9.0...v0.10.0

CC Manager UI 0.9.0

Choose a tag to compare

@github-actions github-actions released this 21 Jul 03:12

Highlights

The interface now follows Claude's own surfaces. The window used to be a single near-black sheet: every region painted the same token and leaned on hairline borders for structure, so there was effectively one shade on screen. There are now three grounds, using Claude's values directly.

Chrome (top bar + session list) #181817
Working area #1a1a19
Cards, popovers, table headers #232321
Search + composer fields #2c2c2b
Accent #d06c74

The accent is no longer painted as a background wash. The selected session row and your own chat bubbles were tinted with the accent at 10-15%, which composites over a dark ground into a muddy maroon rather than reading as a highlight. Both are the neutral raised grey now, and the rose is kept for things that are actually accents (Send, Queue, checked states).

Text fields paint their own surface. The kit draws them at 30% alpha, so the token never reached its real value: the search and composer boxes came out darker than intended and had no visible edge. They now paint the surface outright and carry a real outline.

Fixed

  • The release workflow no longer trips GitHub's Node 20 deprecation warning: upload-artifact, download-artifact and setup-qemu-action move to their current majors.

Full Changelog: v0.8.0...v0.9.0

CC Manager UI 0.7.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 19:08

Mostly a cleanup release: the session list was full of things that were not really sessions, and the auto-resume monitor was full of work that had already finished.

The session list should look markedly cleaner

  • Sessions are named after what you asked, not after a warning notice. The list used to repeat "<local-command-caveat>Caveat: The messages below were generated by the user while running local commands. DO NOT respond..." over and over. On the machine this was found on, that was the title of 103 of the newest 200 sessions. Titles fall back to your first message, and nothing checked whether that message was the CLI talking to itself.
  • Transcripts that were never conversations are no longer listed. Checking your remaining quota sometimes has to launch claude to ask, and that launch wrote a roughly 3 KB session containing a caveat, a /usage line and nothing else. 127 of the newest 300 sessions were these. They are no longer listed, no longer written among your real sessions, and cleaned up after the check.
  • New time period filter, set to the last 24 hours. In the ... menu, alongside the instance and archived filters. Widen it to 7 days, 30 days or all time whenever you need to reach further back.

Auto-resume monitor shows only what still needs you

Rows were written when a resume was scheduled and then never looked at again, so resumes that had finished, been cancelled, or whose queue entry was long gone still reported "Scheduled, resumes ~09:14" indefinitely. They are now reconciled against what actually happened. A failed resume is kept and flagged; sessions you have archived are excluded, and auto-resume no longer picks those up at all.

Queue and scheduler

  • Clear finished runs in one click, instead of deleting each card by hand.
  • "Run at" uses the chat composer's picker: in 5 hours, tomorrow at your configured time, hour and 10-minute steppers, or an exact date. It has also moved up beside Account, since when a run happens is a decision you make up front.
  • The scheduler indicators are clickable. The on/off indicator in the queue drawer and the header chip both open Settings at the scheduler, which pulses on arrival so you can see where you landed.
  • Fixed: Advanced options was quietly broken. Its three "Default" dropdown entries threw, and the failure took out everything rendered after them in that section.

Instances and Settings

  • Instances and CLI instances are collapsible, and the choice is remembered.
  • The instance editor applies as you type: the row behind the dialog updates live, so the in-dialog preview is gone and the button says Done.
  • The transcript editor setting now shows which editor will actually open a transcript, with the path field tucked behind it.
  • Settings dropped the Accounts section, which only ever told you to go to the Instances tab, and gained back a missing gap above the auto-resume monitor.

Full details in CHANGELOG.md.

Full Changelog: v0.6.0...v0.7.0

CC Manager UI 0.6.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 19:12

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 set pointer-events: none on 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. .jsonl has 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.

CC Manager UI 0.5.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 19:12

Mostly about the app misreading a failure and then doing the wrong thing about it: a few-second server hiccup filed as your five-hour rate limit, a liveness check that kept finding itself, and a resume monitor that could only see work it had started.

Fixed

  • A 529 overload was treated as your rate limit, so the run died instead of retrying. 529 Overloaded means Anthropic's servers are saturated and it clears in seconds. A session limit means your own 5-hour allowance is spent and only time fixes it. Both wear the word "limit", and dispatch matched them with one pattern list, so a run killed by a brief server hiccup was parked against a reset that had nothing to do with it. They are now told apart, and a transient overload is retried automatically: three tries over about 35 seconds, backing off, before giving up as its own new overloaded status, which is neither failed (nothing is wrong with the run) nor rate_limited (your quota is fine). The retry only fires when the run produced no output first, so it can never silently redo work you already paid for, and it survives a daemon restart mid-backoff. Ambiguous text still classifies as a quota wall, the conservative default, and a migration relabels rows the old detector mis-filed.
  • A run could be stuck "running" forever after a crash, and cancelling it could kill an unrelated program. On restart the app re-adopts runs that outlived it, and it is careful not to trust a dead runner's recorded process id, because Windows recycles those numbers. That care never actually happened: the liveness probe searched running processes for the run's spec file by command line, and the search itself carried that text in its own command line, so it always found itself and always answered "still alive". Every Windows reattach therefore trusted a stale id. If that id had been recycled by a live program, the run waited on it forever and pressing Cancel would have killed that innocent program. The probe now excludes itself, and a failed reattach ends the run cleanly with its work still on disk.
  • Stray console windows could flash on an ordinary click. Spawning a console program on Windows allocates a console unless the spawn says otherwise, and nothing here said otherwise. It stayed invisible only because the tray happens to launch the daemon with a window-less console that child processes inherit. Started any other way (from a terminal, from Explorer, as the portable exe) the same clicks flashed a real window. The worst of them was the periodic usage check, which runs on a timer, so on machines where claude resolves to a .cmd batch file it was a CMD window blinking on a schedule with no click to blame. Every such spawn now states its intent explicitly, and a repo guardrail enforces both directions of the rule.
  • The composer claimed "this session is busy" the moment you hit send, with nothing running. Submitting awaits a queue refresh, and the server does not answer until the run is already marked running, so the banner flipped on within the same click and then announced that the message "will queue and start on its own" about one that had just started immediately.

Added

  • The auto-resume monitor now finds rate-limited sessions it never launched. It used to look only at queue rows the daemon itself had spawned and tailed, so a session you started yourself (a bare claude in a terminal, or the desktop app) that died on a 5-hour limit had a transcript on disk, no queue row, and no path into the resume list. The list said "Nothing to resume right now" while real sessions sat at the wall. It now also looks on disk: transcripts touched in the last 12 hours whose tail is the CLI's own limit notice with nothing after it, which is exactly what "still stopped" looks like. Found stops go through the same rails as any other (the weekly usage gate, the per-session attempt cap, the resume buffer, the idempotency check) and carry a Found badge so they never read as something you queued. Still behind the monitor's off-by-default switch.
  • Downloaded transcripts are named after the session, not its UUID. Save a copy now writes <session title>.jsonl, falling back to the id only when a title has nothing filesystem-safe left in it. One shared helper backs both the download link and the server's Content-Disposition header, because the browser honours the link's name only same-origin and the header only cross-origin, so fixing one alone would have left the other broken. It strips characters Windows rejects, refuses reserved device names (CON, COM1), trims the trailing dots Windows drops silently, and sends the header as RFC 5987 so an emoji or non-Latin title names the file properly instead of throwing.
  • Copy the session file to the clipboard. A button beside "save a copy" puts the .jsonl file itself on the clipboard, not its text, so pasting into a folder, a chat or an email pastes the actual file under the session's name. A web page cannot do this at all, by design, so the daemon does it. Windows and macOS only, since Linux has no cross-desktop convention for it.
  • A 10-minute stepper in the composer's "queue for later". The hours stepper now sits beside a minutes one that steps in 10s, and a single button queues the combined delay. With both, the fixed In 15 min and In 1 hour presets were redundant, so they are gone. In 5 hours and Tomorrow remain.
  • The scheduler status chip in the header is now a link to the setting it reports on.
  • CI actually typechecks now, and it covers the tests too. The job had been named "lint, typecheck, build, test" since day one while never running a typecheck, and something had already slipped through: three portable-window exports went undeclared for two commits because nothing looked. tests/ was outside every tsconfig for the same reason, so a test could only fail at runtime. Wiring it in immediately caught a real error in a new fixture.

Changed

  • Pink means "you can click this now". In the composer's "queue for later" popover, Queue for then was pink even before a date was picked, when it did nothing. It is grey until you pick one, and the hours/minutes button beside it follows the same rule at 0h 0m.