Commit Graph

139 Commits

Author SHA1 Message Date
Nicolas Varrot
32bc43d54f docs: add SECURITY.md with security policy and vulnerability reporting 2026-02-12 20:38:41 +00:00
Nicolas Varrot
87f4c8ebf9 docs: release v1.14.0 — collapse/expand all tool calls 2026-02-12 19:37:11 +00:00
Nicolas Varrot
2b1ca2d0c8 feat: add collapse/expand all tool calls toggle button
Adds a floating button in the chat area that lets users collapse or expand
all tool call details at once. Useful for long conversations with many tool
calls where scrolling through expanded results is tedious.

- New ToolCollapseContext provides global collapse/expand state
- ToolCall components react to global state changes via version tracking
- Toggle button appears only when conversation has tool calls
- Supports EN/FR i18n
2026-02-12 19:36:53 +00:00
Nicolas Varrot
cab78db057 docs: add keyboard shortcuts section to README, version/stars badges, update landing page with v1.13 2026-02-12 19:17:06 +00:00
Nicolas Varrot
268105e125 docs: release v1.13.0 — session navigation shortcuts 2026-02-12 19:08:30 +00:00
Nicolas Varrot
1fc63b4e92 feat: add Alt+↑/↓ keyboard shortcuts to navigate between sessions 2026-02-12 19:08:00 +00:00
Nicolas Varrot
89056884ad docs: add Recent Updates section to landing page highlighting v1.4–v1.12 features 2026-02-12 19:01:43 +00:00
Nicolas Varrot
d969207ea9 docs: release v1.12.0 — conversation export 2026-02-12 18:39:17 +00:00
Nicolas Varrot
8d4b606482 feat: export conversation as Markdown file
Add a download button in the header that exports the current session's
messages as a well-formatted Markdown file. Includes:
- User/assistant/system event labels with timestamps
- Thinking blocks as collapsible <details>
- Tool calls with JSON parameters
- Tool results as collapsible sections
- Image placeholders
- Session label and export date in header

i18n: EN + FR translations for the export tooltip.
2026-02-12 18:38:54 +00:00
Nicolas Varrot
d6449773c3 docs: add ARCHITECTURE.md with detailed codebase guide 2026-02-12 18:27:58 +00:00
Nicolas Varrot
9b7f15f5ad docs: release v1.11.1 — fix Windows textarea scrollbar 2026-02-12 18:15:43 +00:00
Nicolas Varrot
ad7d149f88 fix: hide horizontal scrollbar on textarea for Windows compatibility
Add overflow-x: hidden and word-break styles to textarea to prevent
ugly horizontal scrollbar on Windows. Also hide the horizontal webkit
scrollbar track entirely.
2026-02-12 18:15:08 +00:00
Nicolas Varrot
cecfa3e010 style: custom webkit scrollbar styling for macOS/Chrome
Add ::-webkit-scrollbar rules matching the dark theme. Textarea gets
an even thinner 4px scrollbar. Fixes ugly default scrollbar on macOS.

Closes feedback #36.
2026-02-12 18:05:15 +00:00
Nicolas Varrot
2afdc7b8fa docs: release v1.11.0 — sidebar timestamps, previews, and recency sort 2026-02-12 17:59:48 +00:00
Nicolas Varrot
53d619c357 feat: relative timestamps, message preview, and recency sort in sidebar
- Show relative time (2m, 3h, 1d) next to each session name
- Display last message preview below session name (truncated to 80 chars)
- Sort sessions by most recently updated (within pinned/unpinned groups)
- Map updatedAt and lastMessagePreview from gateway sessions.list response
2026-02-12 17:59:16 +00:00
Nicolas Varrot
073084e303 docs: add missing v1.10.0 changelog entry 2026-02-12 17:55:13 +00:00
Nicolas Varrot
313242cbd9 fix(ci): lowercase Docker image tags — ghcr.io requires lowercase repo names 2026-02-12 17:49:14 +00:00
Nicolas Varrot
7d9c4098f2 docs: mark feedback #33 as done 2026-02-12 17:46:13 +00:00
Nicolas Varrot
c6a12f1899 docs: release v1.10.0 — agent name badge in header 2026-02-12 17:46:04 +00:00
Nicolas Varrot
17ff52aaaf feat: display agent name badge in header next to session label
Shows the agentId (e.g. 'main') with a bot icon in the header subtitle,
making it clear which agent is handling the current conversation.
Useful for multi-agent setups.
2026-02-12 17:45:38 +00:00
Nicolas Varrot
7faab405db docs: release v1.9.0 — human-friendly session titles 2026-02-12 17:36:07 +00:00
Nicolas Varrot
52a1a7f270 feat: human-friendly session titles in header and sidebar
Replace raw session keys/UUIDs with readable names derived from
session metadata (label, kind, channel). Priority: label > kind-based
name (Main, Cron, Task) with channel suffix > cleaned key fallback.

New utility: src/lib/sessionName.ts used by both Header and Sidebar.
2026-02-12 17:35:53 +00:00
Nicolas Varrot
79b516bf9d docs: release v1.8.1 — fix markdown rendering in long messages 2026-02-12 17:26:56 +00:00
Nicolas Varrot
4c8faf07e3 fix: prevent autoFormatText from wrapping markdown prose in code fences
The looksLikeCode/isCodeLine heuristics were too aggressive:
- Pattern /^\s*(\/\/|#|\/\*|\*)/ matched markdown bold (**text**) and
  headings (# title) as code comments, causing entire sections to be
  wrapped in code fences and rendered as raw text
- Pattern /^\s*(\/\/|#)/ in isCodeLine caught markdown headers
- Added early bail-out when text contains markdown indicators (**bold**,
  headings, bullet lists) to prevent false positives
- Narrowed comment detection to actual code comments only

Fixes: raw **bold** shown in long assistant messages (reported by Josh)
2026-02-12 17:26:32 +00:00
Nicolas Varrot
ce05315868 docs: release v1.8.0 — per-session input drafts 2026-02-12 17:15:54 +00:00
Nicolas Varrot
03eb9e6de2 feat: per-session input drafts preserved on session switch 2026-02-12 17:15:26 +00:00
Nicolas Varrot
e9679091e7 docs: release v1.7.0 — delete session from sidebar 2026-02-12 16:57:46 +00:00
Nicolas Varrot
e94325b38a feat: delete session from sidebar with confirmation dialog 2026-02-12 16:57:18 +00:00
Nicolas Varrot
94df362001 docs: mark feedback #34 as done 2026-02-12 16:49:55 +00:00
Nicolas Varrot
0f2dfb129c docs: release v1.6.0 — system event detection 2026-02-12 16:49:46 +00:00
Nicolas Varrot
581675d00c feat: distinguish system events from user messages
System events (heartbeats, cron triggers, webhooks, channel events)
now render as subtle inline notifications instead of full user bubbles.
Detection based on content patterns ([EVENT], [cron:], [HEARTBEAT], etc.).
2026-02-12 16:49:16 +00:00
Nicolas Varrot
a17fbf134a docs: release v1.5.0 — resizable sidebar 2026-02-12 15:47:09 +00:00
Nicolas Varrot
fa9b10ac97 feat: resizable sidebar with drag handle and persisted width 2026-02-12 15:46:39 +00:00
Nicolas Varrot
15f8060beb docs: mark feedback #27 as done 2026-02-12 14:44:55 +00:00
Nicolas Varrot
aa158ad090 ci: add release workflow with semver Docker tags and GitHub Releases
- New release.yml: triggers on v* tags, builds/pushes Docker with vX.Y.Z, vX.Y, vX, latest tags, creates GitHub Release with changelog
- Updated docker.yml: main pushes now tag as 'edge' (dev) instead of 'latest'
- latest tag is now only set by the release workflow on version tags
2026-02-12 14:44:33 +00:00
Nicolas Varrot
0e57ab8718 docs: release v1.4.0 — changelog update and version bump 2026-02-12 13:43:28 +00:00
Nicolas Varrot
06b2b1cbcf docs: mark feedback #26 as done 2026-02-12 12:42:28 +00:00
Nicolas Varrot
8ef1b428a3 fix: mobile viewport overflow — prevent horizontal clipping on iPhone
- Add overflow-x: hidden on html/body and max-width: 100vw
- Add overflow-x: hidden on root app container
- Add overflow-x: hidden on chat scroll container
- Make markdown tables scrollable with display: block + overflow-x: auto
- Add overflow-hidden + min-w-0 on expanded tool call content
- Fix tool result summary max-width from max-w-md to max-w-full

Fixes #26
2026-02-12 12:42:20 +00:00
Nicolas Varrot
7df30d87ee docs: mark feedback #25 as done 2026-02-12 12:25:28 +00:00
Nicolas Varrot
1465ae1887 style: move model badge from header to token progress bar area 2026-02-12 12:25:17 +00:00
Nicolas Varrot
e24378aa75 feat: add session pinning to sidebar
- Pin icon appears on hover for each session, filled when pinned
- Pinned sessions sort to top of list (preserved across page reloads via localStorage)
- Subtle divider separates pinned from unpinned sessions
- i18n support for pin/unpin labels (EN + FR)
2026-02-12 12:19:18 +00:00
Nicolas Varrot
8640585426 docs: mark feedback #24 as done 2026-02-12 12:06:21 +00:00
Nicolas Varrot
96f28836cd feat: display model name badge in header for active session
Shows the model (e.g. claude-opus-4-6) as a subtle chip next to the
session label in the header. Hovering reveals agent ID if available.
Model and agentId are now extracted from sessions.list response.
2026-02-12 12:06:12 +00:00
Nicolas Varrot
4312a71bc9 docs: release v1.3.0 — changelog update and version bump 2026-02-12 11:56:20 +00:00
Nicolas Varrot
7a55940cc9 docs: add troubleshooting section to README 2026-02-12 11:45:44 +00:00
Nicolas Varrot
c0d27a7754 feat: add unread message indicators on sidebar sessions
Show a cyan dot on sessions that received new messages while
viewing a different session. The dot clears when switching to
that session.
2026-02-12 11:36:31 +00:00
Nicolas Varrot
6734b54389 fix: resolve CI lint errors in Sidebar, TypingIndicator, and useGateway
- Sidebar: replace useEffect setState with callback pattern for filter reset
- TypingIndicator: initialize useRef with 0 instead of impure Date.now()
- TypingIndicator: remove redundant setElapsed(0) from mount effect
- useGateway: remove unused eslint-disable directive
2026-02-12 11:27:42 +00:00
Nicolas Varrot
908dbb4a60 feat: add copy buttons to expanded tool call parameters and results 2026-02-12 11:16:34 +00:00
Nicolas Varrot
756287c380 docs: release v1.2.2 — changelog update and version bump 2026-02-12 10:55:18 +00:00
Nicolas Varrot
ae3f6839bc feat: show language label on fenced code blocks
Display a header bar above code blocks with the detected language
name (e.g. TypeScript, Python, Shell). Pretty-prints common language
identifiers. The copy button remains in the top-right corner.
2026-02-12 10:46:18 +00:00