Skip to content

Dev Main Sync#6

Merged
vyakymenko merged 123 commits intomainfrom
dev
Mar 19, 2026
Merged

Dev Main Sync#6
vyakymenko merged 123 commits intomainfrom
dev

Conversation

@vyakymenko
Copy link
Collaborator

No description provided.

vyakymenko and others added 17 commits March 14, 2026 20:27
- Expose reconnect() from useChatWebSocket; add Reconnect header button when offline/error
- Move STATE_LABELS to chat-state.ts; add chat-state.spec.ts
- Add use-chat-websocket.spec.tsx (return shape, reconnect)
- Fix message-list.spec.tsx assistant bubble selector (class*="bg-card")
- Memoize filteredMessages in ChatPage
- Sidebar widths 280px, header padding -1px, layout constants tests updated
… tweaks

- File viewer: single header with filename, language, line count, Copy/Download/Close and Search in file; reduced header padding
- Chat input bar always visible when file view is open
- Agent thinking sidebar: fix Model (default) layout (min-w-0, shrink-0); remove debug instrumentation
- Phoenix logo: animate only on hover; remove yellow sparkles
- Chat page: move useMemo above early return to fix rules-of-hooks
- Add AgentThinkingSidebar unit tests; update file-explorer tests for new heading
- usePlaygroundFiles: refetch every 8s when entries empty, refetch on tab visible
- FileExplorer: refetch callback, same interval + visibility observer when tree empty
- ChatPage: show left sidebar on desktop always (!isMobile), empty state when no files
- bothSidebarsCollapsed: simplify to !isMobile && sidebarCollapsed && rightSidebarCollapsed
- Add use-playground-files.spec.ts (return shape, initial fetch, error, refetch, visibility)
…ree refresh

- Right panel: Online activity list with live indicator, relative times, timeline
- Story as JSON: GET /api/messages returns story[]; submit_story WS action; story empty by default
- Claude (claude-code): stream-json + thinking_delta + tool_use for reasoning and commands
- File tree: refresh on file_created and stream_end (refreshTrigger prop)
- Message store: setStoryForLastAssistant; StreamingCallbacks.onReasoningStart
- formatRelativeTime util + unit tests; message-store and sidebar tests
- Version 1.4.3
- Persist full story to activity.json (ActivityStoreService, GET /api/activity)
- Chain thinking_delta into single activity entry; show in sidebar and message Activity
- Support command/path in story; terminal and file blocks in sidebar and message list
- Add search in Agent Thinking sidebar; thinking_delta uses delta.thinking
- TypingText component for command display; remove unused useTypingComplete
- Remove dead reasoningStartedLoggedRef
- Add TypingText and ActivityStoreService unit tests
- Bump version to 1.4.4
- Extract toolUseToEvent from Claude strategy; add 7 unit tests (file_created vs tool_call)
- Fix activity search input dark mode (bg-input-background)
- Bump version to 1.4.5
- File explorer: hide empty state and toggle when no files; animate-in when first file appears; auto-expand when first file appears; collapse when empty
- Agent activity: scroll to latest activity; stop reasoning pulse when task complete; guard scrollIntoView for jsdom tests
- Chat: remove Activity block from message bubbles (activity only in right sidebar); keep thinking state at bottom
- Tests: AgentThinkingSidebar (pulse when streaming/complete), MessageList (no Activity in bubbles), FileExplorer (no toggle when empty)
- Bump version 1.4.5 -> 1.4.6
- File viewer as overlay over header+messages, chat input stays visible
- Main content min width from layout constant (MAIN_CONTENT_MIN_WIDTH_PX)
- Tests: FileViewerPanel inline + onClose, layout MAIN_CONTENT_MIN_WIDTH_PX
- Fix: use-chat-websocket spec onmessage getter return type
- Fix: orchestrator handleClientConnected expects auth_status + activity_snapshot
- Bump version 1.4.6 -> 1.4.7
…t, bump to 1.4.8

- Remove unused HeaderThinkingIcons component and spec (flame animation)
- Use CHAT_HEADER_PADDING_BOTTOM_PX from layout-constants for header padding
- Add unit test for CHAT_HEADER_PADDING_BOTTOM_PX
- Version 1.4.7 → 1.4.8 (patch)
- Add shared ui-classes.ts; refactor components to use it (less inline Tailwind)
- Remove unused animation-colors, getThinkingStatusLabels, StoryJson, fullWidth prop
- Remove dead New chat button; use ui-classes for chat header search
- Env: drop VITE_ prefix (API_URL, LOCK_CHAT_MODEL, USER_AVATAR_URL, ASSISTANT_AVATAR_URL)
- Generic env injection in vite.config via CHAT_ENV_KEYS
- Add configurable user/assistant avatar URLs from env
- Tests: chat-avatar.spec, getApiUrl/getWsUrl in api-url.spec, fix layout-constants spec (CHAT_HEADER_PADDING_BOTTOM_PX 16)
- Bump version 1.4.8 -> 1.4.9
- Replace model input with dropdown select (portal, z-index 100) so it appears above right sidebar
- Remove model badge from Agent Thinking sidebar; single model display in header
- Remove redundant playground label (e.g. todo-app/) from file explorer
- Show Loading only when tree is empty; keep file tree visible during refetch
- Add file-explorer test: show tree when refetching and tree already has files
- Update file-explorer test for removed label (tree with one dir)
- Simplify model-selector: PANEL_DATA_ATTR constant for click-outside
- Bump version 1.4.9 -> 1.5.0 (patch was 9)
@vyakymenko vyakymenko self-assigned this Mar 15, 2026
vyakymenko and others added 12 commits March 15, 2026 04:14
- Add markdown-cache module with LRU-style cache (max 200 entries)
- Use cached renderMarkdown in message-list for message bodies and streaming
- Wrap MessageRow in React.memo to avoid unnecessary re-renders
- Add unit tests for cache hit, eviction, and markdown rendering
Improves tree-shaking and separates icon bundle from main app code.
- Move Prism and all language components into prism-loader.ts
- Load prism-loader only when FileViewerPanel opens a file (dynamic import)
- Split vendor-prism chunk from vendor-markdown in Vite
- Reduces initial bundle by ~175KB; Prism loads on first file open
- Extract ActivityBlock as memo() component to avoid re-renders when only search or streaming state changes
- Add unit test for tool_call activity block rendering
- Add VITE_HIDE_HEADER_LOGO to hide Phoenix logo in header, sidebar, login
- Add VITE_THEME_SOURCE (localStorage | frame) for parent-driven theme via postMessage set_theme
- Add VITE_HIDE_THEME_SWITCH to hide in-app theme toggle when controlled from iframe
- Simplify embed-config with testable env injection and TRUTHY set
- Simplify theme frame message guard (isSetThemeMessage), export for tests
- Add embed-config.spec.ts and isSetThemeMessage tests in theme.spec
- Document embedding and postMessage in docs/API.md
- Bump version to 1.5.2
- ensureUniqueStoryIds: unique ids for story entries, dedupe same id+content
- buildFullStoryItems/sidebar use it so no duplicate blocks from session+live
- simplify ensureUniqueStoryIds with single Map (signature + nextSuffix)
- add unit tests: ensureUniqueStoryIds (incl. dedupe), buildFullStoryItems
- bump version 1.8.4 → 1.8.5
- Prepare dense TS/JS user text and fenced blocks for marked/Prism
- Markdown cache LRU; normalize raw HTML <pre> for Prism; memo MarkdownWithPrism
- Cancel stale Prism highlights on virtual list unmount/remount
- Contenteditable serialize for line breaks; mention-input integration
- User bubble code label strip + styles; copy raw message control
- Unit tests: markdown-cache, user-markdown-prep, message-list, contenteditable
- Single normalizeBarePreElementsInContainer + stringHash32 in markdown-bare-pre
- message-list: reuse helper, for-of Prism loop, slimmer part keys
- Tests: container mutation + hash stability
- Root package version 1.8.6 -> 1.8.7 (patch≠9)
- Flex min-w-0 on bubbles/prose; relax scroll contain; extra bottom padding for Latest
- Markdown pre min/max width; user code-lang ::before as block + fit-content (no gap with first line)
- Treat only plausible @tokens as file mentions (CSS at-rules, PascalCase decorators)
- Unify MentionInput segments with parseMessageBodyParts; expand tests
@vyakymenko vyakymenko merged commit e592eeb into main Mar 19, 2026
7 checks passed
vyakymenko added a commit that referenced this pull request Mar 23, 2026
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.

2 participants