Add appearance theme support (dark/light/system) using CSS custom
property overrides. In light mode the Tailwind zinc scale is inverted
and semantic surface/border tokens are swapped, so all existing
utility classes pick up the new palette automatically.
- Add AppearanceTheme type and theme field to WorkspaceSettings
- Add setTheme IPC channel wiring (contracts, preload, handler, service)
- Add [data-theme='light'] CSS overrides for zinc scale, surface tokens,
scrollbar, and markdown prose colours
- Add Appearance section to SettingsPanel with radio-button theme picker
- Apply data-theme attribute on document root via useEffect in App.tsx,
with matchMedia listener for the system option
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Tighten font sizes to match the app's compact design language:
- WelcomePane: heading from text-xl (20px) to text-base (16px),
buttons and descriptions from text-sm (14px) to text-[13px]
- SettingsPanel: all section headings from text-sm to text-[13px]
- NewSessionModal: title from text-sm to text-[13px]
- PatternEditor: title from text-sm to text-[13px]
- ChatPane: empty-state prompt from text-sm to text-[13px]
- Markdown prose: h1 from 1.25rem to 1.125rem, h2 from 1.125rem
to 1rem, h3 from 1rem to 0.9375rem
Keeps text-sm only for the app brand name, loading state, and error
headings where larger text is intentional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The modal is now only used for project sessions, so filter out the
scratchpad project from the dropdown and remove scratchpad-specific
hints and pattern restrictions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When no sessions exist and a creation button is available, show only
the button — it already communicates emptiness and provides the CTA.
The old 'No sessions yet' text is kept as fallback only when no button
is present.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the single New Session button from the sidebar top and replace it
with contextual creation buttons scoped to each section:
- Scratchpad section: 'New Scratchpad' button that auto-creates a
scratchpad session with the first available single-agent pattern
- Project groups: 'New Session' button that opens the pattern picker
modal pre-scoped to that project
- WelcomePane: primary action updated to 'New Scratchpad'
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the Sparkles icon gradient placeholder with the actual app
icon from assets/icons/icon.png. Import it as a Vite asset so it
works in both dev and production builds.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use pt-3 pb-3 (12px each) for symmetric vertical padding so content
is visually centered in every header bar.
To keep headers draggable, each header container gets the drag-region
class and all interactive elements (buttons) get the no-drag class.
The global fallback drag strip is reduced to h-3.
Title bar overlay reduced from 40px to 32px (standard Windows size).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The jumpToMessage useCallback was placed after a conditional return,
violating React's Rules of Hooks and crashing the app on render.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add RunTimeline component with vertical event timeline, collapsible run
cards, per-kind icons, status animations, and agent lane badges
- Add runTimelineFormatting helpers for timestamps, durations, labels,
content truncation, and consecutive thinking-event collapsing
- Integrate Timeline section into ActivityPanel between Agents and Tools
- Wire jump-to-message in App.tsx using DOM data-message-id attributes
on ChatPane messages with smooth scroll and temporary highlight ring
- Add comprehensive unit tests for all formatting helpers
- Update HANDOVER.md to document completed frontend implementation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Seed new TypeScript LSP profiles with --stdio, validate that shared profiles keep the required flag, auto-add it for existing profiles in the sidecar runtime, and include recent stderr when a language server dies before completing a request. Add shared and sidecar regression coverage.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Match input border/bg to PatternEditor standard (border-zinc-700 bg-zinc-900)
- Tone down form labels from zinc-300 to zinc-400
- Use borderless icon+text Delete button matching PatternEditor
- Group editor fields into named sections with uppercase headers
- Show live entity name in editor title bar instead of generic label
- Shorten header subtitle to a brief role description
- Use AlertCircle icon in validation banners matching PatternEditor style
- Reduce textarea rows from 4 to 3 for tighter layout
- Match body spacing to PatternEditor (space-y-8, px-6 py-5)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Use indigo accent consistently instead of blue for toggle states
- Replace bulky toggle cards with compact toggle switches in Activity panel
- Fix input focus states to use app-standard indigo glow
- Use semantic nav icons: Server for MCP, Code for LSP
- Style Save button with indigo primary, Delete with subtle destructive hover
- Add Info icon to callout hints
- Center empty states, clean up list item detail text
- Fix indentation in App.tsx settings overlay wiring
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the product, runtime surfaces, sidecar projects, docs, tests, and packaging outputs from Kopaya to Eryx across the repository.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add GitContextBadge to sidebar ProjectGroup showing branch name,
dirty indicator, and ahead/behind counts for real projects
- Show git-missing and error states with subtle warning badges
- Add hover-reveal refresh button per project to re-scan git status
- Show branch/dirty/ahead/behind inline in ChatPane header subtitle
- Wire refreshProjectGitContext callback from App through Sidebar
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace rounded-full pill buttons with subtle text toggles that use
a small colored dot indicator when active. Blends better with the
sidebar aesthetic.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reduce chat header padding and tighten the title/subtitle line height so the border-bottom lines up with the activity side panel header.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Extend CopilotStatusCard to surface the new backend diagnostics:
- Account identity row (login + host) when authenticated
- Organization pills with +N overflow
- CLI version freshness badge (latest/outdated/unknown)
- Latest-version hint in expandable details when outdated
- Mark version/account roadmap items as complete
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds section headers to the left sidebar navigation so future
settings items slot naturally under the right category.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace single-scroll settings with two-column layout:
left sidebar nav (Connection, Patterns) + content area
- Consistent back arrow (←) on the left for all navigation levels:
settings → app, pattern editor → settings list
- Fix CopilotStatusCard path overflow: use break-all for long
Windows paths, structured detail sections with proper wrapping
- Simplify status card: cleaner status dot indicator, separated
detail sections with labeled fields and proper text overflow
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- New CopilotStatusCard component with status-specific visuals for
ready, cli-missing, auth-required, and error states
- Expandable technical details section with CLI path and timestamps
- Refresh button wired to refreshSidecarCapabilities IPC
- Integrated into SettingsPanel above orchestration patterns
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Re-apply the inline pill-button design for the scratchpad model and
thinking effort selectors that was overwritten by a concurrent agent.
- InlineModelPill: compact pill with provider icon, upward-opening
grouped dropdown with provider headers and tier badges; respects
the new availableModels prop for live model availability
- InlineThinkingPill: compact Sparkles pill with upward-opening
effort selector; shows N/A when model has no reasoning support
(respects supportedEfforts from per-model capabilities)
- Removes the large bordered card wrapper, replaces with subtle
inline row of pills sitting just above the composer textarea
- Preserves all new logic from the model-availability agent:
availableModels prop, resolveReasoningEffort, getSupportedEfforts
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the large bordered card with model/thinking dropdowns with
subtle inline pill-buttons that sit just above the composer textarea.
- Create InlineModelPill: compact pill showing provider icon + model
name with upward-opening grouped dropdown (same model catalog)
- Create InlineThinkingPill: compact pill with Sparkles icon and
effort label with upward-opening dropdown
- Both pills use minimal border styling that highlights on open/hover
- Dropdowns open upward (bottom-full) so they don't get clipped
- Add loading spinner next to pills while config is saving
- Remove the large 'Applies to future replies' card wrapper
Also fixes 'onUpdateScratchpadConfig is not a function' error:
- Make onUpdateScratchpadConfig optional in ChatPaneProps (only
relevant for scratchpad sessions, not regular project sessions)
- Guard the call with !onUpdateScratchpadConfig early return
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Session cards now show orchestration mode icon (colored per type:
indigo=single, amber=sequential, emerald=concurrent, sky=handoff,
violet=group-chat) giving at-a-glance pattern visibility
- Add relative timestamps (just now, 2m ago, yesterday, etc.)
- Running sessions show animated pulse on left accent bar and
text status label instead of static dot
- Multi-agent sessions display agent count badge (Users icon + count)
- Error sessions show explicit red Error label
- Project headers show running session count as live badge
and total count as pill; folder icon highlights on hover
- Upgrade Kopaya logo from letter badge to gradient icon with
Sparkles, add BETA tag
- Move New Session button to prominent dashed-border CTA below header
- Better empty state with composite folder+plus icon treatment
and indigo Add Project button
- Add sidebar-pulse CSS keyframe animation for running indicators
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace colored letter badges with official SVG icons sourced from
Simple Icons (Anthropic, Google Gemini) and Wikimedia Commons (OpenAI).
- Create shared ProviderIcons.tsx with OpenAI, Anthropic, and Gemini
SVG icon components using the official brand marks
- Update PatternEditor ModelSelect dropdown to use real provider icons
- Update ActivityPanel model badges to use real provider icons
- Remove duplicated providerStyles objects from both files
Icons are inline SVG using currentColor for theme-aware coloring.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Create model catalog (src/shared/domain/models.ts) with 12 models
from OpenAI, Anthropic, and Google including tier metadata
- Replace free-text model input with custom ModelSelect dropdown
grouped by provider with colored provider icons (green AI for
OpenAI, orange A for Anthropic, blue G for Google)
- Show tier badges (premium/standard/fast) on each model option
- Highlight currently selected model with indigo accent
- Update ActivityPanel to show provider icons on model badges
for visual consistency across the app
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fix SettingsPanel and PatternEditor headers with pt-12 to clear
the title bar overlay zone
- Replace mode dropdown with visual mode selector cards showing
icon, description, and inline flow diagrams for each pattern
- Add flow pill diagrams (Single, Sequential, Concurrent, Handoff,
Group Chat, Magentic) illustrating how agents interact
- Add reasoning effort selector (Low/Medium/High/Maximum) to
agent cards — previously not exposed in the editor
- Improve agent cards with numbered badges and 3-column layout
for name, model, and reasoning fields
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Each agent now renders as a card with:
- Status dot and name
- Model badge (e.g. gpt-5.4) and reasoning effort badge
- Agent description text
- Live activity status label
Cards highlight with blue/emerald borders when active/completed.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add react-markdown and remark-gfm for markdown rendering
- Create MarkdownContent component with custom code block renderer
featuring language labels and copy-to-clipboard buttons
- Add full markdown prose styles (headings, lists, tables, links,
blockquotes, inline code) matching the dark zinc theme
- Replace plain-text message rendering in ChatPane with MarkdownContent
- Handle fenced code blocks with and without language specifiers
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Create ActivityPanel component showing per-agent status with
activity dots, agent names, and contextual status labels
- Add detailPanel slot to AppShell layout (right aside, w-64)
- Move agent activity display from inline ChatPane card to the
dedicated side panel
- Remove activity prop and inline panel from ChatPane
- Panel appears when a session is selected, hidden on WelcomePane
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Configure hidden title bar with titleBarOverlay matching dark theme
- Remove native menu bar via Menu.setApplicationMenu(null)
- Fix backgroundColor mismatch (#0f172a -> #09090b)
- Add full-width drag region in AppShell for window dragging
- Adjust sidebar and chat headers with top padding for overlay zone
- Add ThinkingDots component with animated dot sequence
- Show activity indicator in chat when agent is processing
- Replace 'Generating...' spinner with inline blinking cursor
- Refine header status badge to subtle pulsing dot
- Add BACKEND_UI_CHANGES.md documenting future sidecar protocol additions
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Refined dark theme with zinc palette and indigo accents
- Clean sidebar showing only project/session tree
- Moved pattern management to full-screen settings panel
- New session modal with project + pattern picker
- Modern chat with avatar icons, inline send button, Enter-to-send
- Welcome pane when no session is selected
- Added lucide-react for consistent iconography
- Custom scrollbar styling and auto-resize textarea
- Removed clutter: no sidebar pattern list, no verbose headers
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>