Skip to content

TheClaudeHub: answer Claude, continue desktop sessions, formatted messages, Store app sessions - #198

Closed
kellylford wants to merge 4 commits into
mainfrom
theclaudehub-claude-features
Closed

kellylford wants to merge 4 commits into
mainfrom
theclaudehub-claude-features

Conversation

@kellylford

Copy link
Copy Markdown
Collaborator

What's in it

  • Desktop sessions from the Microsoft Store app (#183). The Store version keeps its session files under %LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude; both places are read now.
  • Answer Claude in TheClaudeHub's own sessions (#187, TheClaudeHub: answer Claude's questions and approve plans in TheClaudeHub's own sessions AIChat#14). Turns run with stream-json input and --permission-prompts host --permission-prompt-tool stdio, so permission requests, questions (AskUserQuestion) and plans (ExitPlanMode) come to the app and the turn waits. They're announced, the session shows as needing you, and Ctrl+Shift+A answers:
    • Permission: Allow, Allow for this session (kept with the session and passed as --allowedTools on later turns), or Deny (default) with a reason Claude reads.
    • Questions: one group per question, options with descriptions, multi-select and Other.
    • Plans: Approve into a chosen mode (kept with the session), or Keep Planning (default) with a note.
  • Continue Here (#189). Ctrl+Shift+N copies a desktop app session into a TheClaudeHub session with --resume <id> --fork-session --session-id <new>; the desktop session's transcript is untouched.
  • Full messages as a formatted page (#190). Read Full Message opens an inert HTML page in Edge WebView2 (headings, tables, lists, code blocks as named regions). Alt+P or a setting gives plain text. The release build now collects wx's binaries, because a local PyInstaller build left out WebView2Loader.dll; the smoke test checks for it. New dependency: markdown==3.11.

Checked

  • 329 tests pass; ruff clean.
  • Permission allow, deny with reason, plan approval into accept edits, and Continue Here were run against the real claude 2.1.286.
  • The formatted page loads, takes focus, passes Escape and Alt+P back to the dialog, and sends links to the browser (checked under a real event loop).
  • A local PyInstaller build with --collect-binaries wx passes the smoke test with WebView2 available.

Not yet checked

  • JAWS and NVDA with the new dialogs and the formatted page.
  • One unexplained single test failure during development; not reproduced in 30+ full runs since.

Fixes TheIdeaPlace/AIChat#9, fixes TheIdeaPlace/AIChat#13, fixes TheIdeaPlace/AIChat#14, fixes TheIdeaPlace/AIChat#15, fixes TheIdeaPlace/AIChat#16

🤖 Generated with Claude Code

kellylford and others added 4 commits October 6, 2026 20:16
The Store (MSIX) version of the Claude desktop app keeps its session files
under %LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude, so a fresh
install on a PC with it listed no sessions. Both folders are now read, and a
session found in both is read from the newer copy.

Fixes #183

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s (#187, #188)

TheClaudeHub's own sessions now run claude -p with stream-json input and
--permission-prompts host --permission-prompt-tool stdio, the control
protocol the Agent SDK uses. Anything that would ask arrives as a
can_use_tool request and the turn waits for the answer:

- Permission: Allow, Allow for this session, or Deny (the default) with a
  reason Claude reads. "For this session" rules are kept with the session
  and passed as --allowedTools on later turns, since each turn is a new
  process; a suggested mode switch (accept edits) becomes the session's mode.
- Questions (AskUserQuestion): one group per question, options with their
  descriptions, multi-select and Other; answers go back in the tool input.
- Plans (ExitPlanMode): read the plan, Approve into a chosen mode (kept with
  the session) or Keep Planning (the default) with a note.

Nothing pops up by itself: the request is announced, the session shows as
needing you, and Ctrl+Shift+A answers. Escape answers later. Checked
end to end against Claude Code 2.1.286.

Fixes #187
Fixes #188

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Continue Here (Ctrl+Shift+N, and a button beside Open in Claude) starts a
TheClaudeHub session with claude -p --resume <desktop id> --fork-session
--session-id <new id>. Claude Code copies the history into the new session
and leaves the desktop one alone: checked with 2.1.286, its transcript was
byte for byte the same afterwards. The copy shows the whole conversation,
says where it came from in its heading, and if its first turn never gets
going, Send copies the session again.

Fixes #189

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Read Full Message opens the message as a small HTML page in Edge WebView2,
so a screen reader's browse mode moves by heading, table and cell, list and
code block (each code block is a region named like "Code block, Python, 14
lines"). Read as Plain Text (Alt+P) and a setting keep the text box, and it
opens anyway when WebView2 isn't there. The plan dialog has Read Formatted.

The page is inert: raw HTML in a message is shown as text, images aren't
loaded, a Content-Security-Policy blocks anything remote and any script,
and links (http, https, mailto only) open in the browser. Escape and Alt+P
inside the page are passed back to the dialog by a user script.

A local PyInstaller build left out wx's WebView2Loader.dll, so the release
build now collects wx's binaries, and the smoke test checks for the loader.
markdown==3.11 is a new dependency.

Fixes #190

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kellylford

Copy link
Copy Markdown
Collaborator Author

TheClaudeHub moved to its own repository, kellylford/AIChat, and this work is in its main branch there.

@kellylford kellylford closed this Oct 7, 2026
@kellylford
kellylford deleted the theclaudehub-claude-features branch October 7, 2026 02:50

This branch was successfully deployed

1 active deployment
azure-signing — f4d5cfef Deployed Oct 7, 2026 by kellylford via release #7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment