Release notes

FEATURE

New app icon arrives, and the Concierge automatically resumes your last session

When launching the app, you'll see a dedicated brand icon instead of the generic rocket, and it now comes with an incredibly handy "Progress Concierge". Previously, whenever you started a new Claude Code session (like launching or typing /clear), you had to painstakingly re-explain to the AI where you left off and what your next goal was. Now, if you toggle on "Resume Last Session" in the menu, it automatically bundles your last request, recent commits, and unfinished to-dos, then quietly hands them to the AI as the new session opens. The AI will even greet you with "🐾 Picked up where you left off — let's keep going!" so you know it worked. In addition, the long list of 9 panel themes that used to hog the menu has been neatly tucked into a "Panel theme" submenu. It's like going to a hair salon: you used to have to re-explain your desired haircut to a new stylist every time, but now the receptionist hands your styling history and pending coloring notes to the stylist before you even sit down, and they just say "Let's continue where we left off"; plus, the salon finally replaced its generic stock-image sign with a proper custom logo.

FEATURE

Bad files are blocked securely, and the panel loads without unexpected crashes

Reading your local data is now much more "drop-proof". Previously, if your hard drive contained a few garbled files (bad UTF-8 encodings), corrupted configurations (bad JSON), or weird fields where numbers appeared instead of text, reading them would immediately panic and crash the application. Every single "file reading entry point" is now armored: when it encounters these toxic files, it calmly filters them out instead of bringing down the whole app. Additionally, on the WebKit panel's fallback loading route (loadBundle), the missing block signature for evaluateJavaScript has been registered to prevent the screen from rendering completely blank. It's like a recycling plant sorting machine: it used to jam and catch fire if it accidentally swallowed a rock, but now it has a heavy-duty filter that automatically bounces out anything that isn't an aluminum can, letting the machine hum along uninterrupted.

Original changelog

Original changelogNew app icon arrives, and the Concierge automatically resumes your last session
**"Progress Concierge" feature** (menu label: "Resume Last Session"): fully local, zero API. When you open a new Claude Code session (`startup` / `/clear`), it automatically hands your last progress to the AI — no need to re-explain. A single menu toggle (off by default, opt-in) installs a Claude Code SessionStart hook (`usage_session_resume.py`, stdlib-only so it runs under macOS's bundled Python 3.9) that reads the project's previous session for **your last request + the commits made + any unfinished todos (if TodoWrite was used)**, assembles a resume prompt, injects it at the start of the new session, and asks Claude to open with "🐾 Picked up where you left off — let's keep going!" so you know it took effect. Wording lives in `i18n.json` (written to a sidecar at install time so the hook stays single-sourced); `setup_hook` handles install/remove/backup/self-heal. The menu item carries a tooltip with the full explanation.
**Dedicated app icon**: replaces py2app's default rocket; NSAlert dialogs now use the brand icon too (via `setIcon_`).
**Slimmer menu**: the 9 panel themes are collapsed into a "Panel theme" submenu, so the menu is no longer dominated by a long inline list.
Original changelogBad files are blocked securely, and the panel loads without unexpected crashes
**Broad robustness hardening**: systematically hardened every entry point that reads user files on disk against bad UTF-8, bad JSON, and type drift (numeric strings, non-dict, non-str fields) — covering `setup_hook`, `codex_loader`, the Codex / Claude / rate-limit adapters, the statusline, the history loader, subscription reads and JWT decoding, and the tips loader.
**WebKit panel fallback**: registered the missing `evaluateJavaScript` block signature on the `loadBundle` fallback path.