Skip to content

feat(ai): model selector, chat sessions, markdown rendering, stop generating#28

Merged
exitzerolabs-admin merged 1 commit into
mainfrom
feat/ai-chat-improvements
Mar 4, 2026
Merged

feat(ai): model selector, chat sessions, markdown rendering, stop generating#28
exitzerolabs-admin merged 1 commit into
mainfrom
feat/ai-chat-improvements

Conversation

@exitzerolabs-admin

Copy link
Copy Markdown
Contributor

Summary

  • Model selector: configurable LLM model per provider (Claude Opus 4 / Sonnet 4 / Haiku 3.5, GPT-4o / GPT-4o Mini) via AI settings
  • Chat sessions: persistent per-file sessions with create/switch/delete, localStorage-backed, auto-titled from first message
  • Markdown rendering: react-markdown + remark-gfm for AI responses with Tailwind-styled components
  • Stop generating: AbortController (browser) + Arc (Rust) cancel mechanism with stop button + Escape key
  • Enhanced system prompts: deeper STRIDE expertise, canvas positioning guidance, position data in model context, markdown formatting instructions

Code quality fixes

  • cancel_chat_stream returns Result<(), String> per project convention
  • Runtime value imports for session limit constants (no magic numbers)
  • migrateSessionKey wired up to prevent session loss on Save As
  • XSS safety comment on MarkdownContent (rehype-raw intentionally omitted)

Docs updated

  • architecture.md, product-design.md, overview.md, market-analysis.md, releasing runbook, CLAUDE.md

Test plan

  • npx biome check --write . — clean (1 pre-existing CSS warning)
  • cargo clippy — clean
  • npx vitest --run — 416 tests pass
  • cargo test — 59 tests pass
  • Manual: open a model, send AI chat message, verify markdown renders
  • Manual: switch sessions, create new session, delete session
  • Manual: change model in settings, verify it's used for next request
  • Manual: click stop button mid-stream, verify partial response kept
  • Manual: press Escape mid-stream, verify stop works
  • Manual: Save As on unsaved file, verify sessions migrate

🤖 Generated with Claude Code

…erating, enhanced prompts

AI chat pane improvements:
- Model selector: configurable LLM model per provider (Anthropic/OpenAI) in settings
- Chat sessions: persistent per-file sessions with create/switch/delete, localStorage-backed
- Markdown rendering: react-markdown + remark-gfm for AI responses with Tailwind styling
- Stop generating: AbortController (browser) + Arc<AtomicBool> (Rust) cancel mechanism
- System prompts: enhanced STRIDE expertise, canvas positioning guidance, position data in context

Code quality fixes from deep review:
- cancel_chat_stream returns Result<(), String> per project convention
- Runtime value imports for MAX_SESSIONS_PER_FILE/MAX_MESSAGES_PER_SESSION (no magic numbers)
- migrateSessionKey wired up in AiChatTab to prevent session loss on Save As
- XSS safety comment on MarkdownContent (rehype-raw intentionally omitted)

Docs updated: architecture, product-design, overview, market-analysis, releasing runbook, CLAUDE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel

vercel Bot commented Mar 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
threat-forge Ready Ready Preview, Comment Mar 4, 2026 0:24am

Request Review

@exitzerolabs-admin exitzerolabs-admin merged commit 243f713 into main Mar 4, 2026
8 checks passed
@exitzerolabs-admin exitzerolabs-admin deleted the feat/ai-chat-improvements branch March 4, 2026 00:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant