Skip to content

Batch fix: 6 easy-tier issues (#11, #6, #8, #17, #5, #7) - #24

Merged
mbmorote merged 6 commits into
masterfrom
issues-batch-easy-fixes
Aug 28, 2026
Merged

Batch fix: 6 easy-tier issues (#11, #6, #8, #17, #5, #7)#24
mbmorote merged 6 commits into
masterfrom
issues-batch-easy-fixes

Conversation

@mbmorote

Copy link
Copy Markdown
Owner

Summary

Six small, self-contained fixes batched into one PR to cut down on PR/CI/deploy overhead for unrelated one-off issues:

Closes #11, closes #6, closes #8, closes #17, closes #5, closes #7

Test plan

  • npx tsc --noEmit -p . — clean
  • npm test (vitest) — 68 files / 880 tests passed
  • npx tsx scripts/build-prompts.ts — regenerated output verified byte-identical to the old JSON.stringify() extraction for hermes/daedalus/prometheus

🤖 Generated with Claude Code

https://claude.ai/code/session_01CdL8gBSztcb3PrPTBbAH1T

mbmorote and others added 6 commits August 27, 2026 17:23
saveNameEdit() used a bare fetch(), skipping the shared apiFetch()
helper's 401 redirect-to-login behavior that every other call site
in this file already relies on.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CdL8gBSztcb3PrPTBbAH1T
scrollToBottom() was only called after the success-proposal branch of
doSend(), so error/dry-run/network-failure replies and outgoing user
messages didn't scroll the view. Replaced the single call site with
a useEffect keyed on messages.length so every append is covered.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CdL8gBSztcb3PrPTBbAH1T
addCustomKey()'s two validation alerts were the only window.alert()
use in the app. Both now set the existing configError state, which
already renders inline in the same config zone — no new UI needed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CdL8gBSztcb3PrPTBbAH1T
Generated lib/ai/prompts/generated/*.ts used JSON.stringify(), producing
one giant escaped-string line per file. Switched to a template literal
that preserves the source's actual newlines, escaping \, `, and \${ so
the compiled value is unchanged. Verified byte-identical against the
old extraction logic for all three agents (hermes/daedalus/prometheus).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CdL8gBSztcb3PrPTBbAH1T
GuidedTour's autostart and the post-signup ConsentPopup were wired
independently, so a fresh signup could land on the tour with the
consent modal still stacked on top of it. GuidedTour now only mounts
(and can autostart) once tourReady is true — set immediately when no
popup is needed, or from ConsentPopup's onClose otherwise.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CdL8gBSztcb3PrPTBbAH1T
The one-time token reveal showed a literal <url> placeholder in the
claude mcp add command, and Copy only copied the bare token — pasting
the shown command into a CLI didn't work. buildMcpCommand() now fills
in the real endpoint (window.location.origin + /api/mcp), and a
second "Copy command" button copies the fully-assembled command.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CdL8gBSztcb3PrPTBbAH1T
@mbmorote
mbmorote merged commit 90415c5 into master Aug 28, 2026
3 checks passed
@mbmorote
mbmorote deleted the issues-batch-easy-fixes branch August 31, 2026 21:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment