Add a GitHub Actions workflow that validates the app on pushes and pull requests, and publishes Windows, macOS, and Linux release assets when a tag is pushed.
Also replace the Windows-only packaging flow with cross-platform Bun scripts for sidecar publishing and Electron packaging so the release job can package each runner natively.
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>
Mark the roadmap items that are now fully implemented by the rich run
timeline work, while leaving partial follow-up items unchecked.
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>
Audit confirmed that single, sequential, concurrent, and handoff are mapped to distinct workflow builders as intended. Group-chat was also using the correct round-robin manager, but the agents only had one-shot role prompts, so the reviewer could behave like a fresh assistant instead of refining the draft in progress. Add explicit runtime guidance for group-chat participants plus clearer built-in Writer/Reviewer instructions and regression coverage.
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>
Configure the sidecar LSP tool serializer with a DefaultJsonTypeInfoResolver and freeze it read-only before handing it to AIFunctionFactory. Add regression coverage so enabling LSP-backed tools cannot reintroduce the runtime JsonSerializerOptions failure.
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 an explicit rule that agents must always check whether README.md needs updating before handing work off.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Create a product-focused README for people using Kopaya, keep the copy high-level, and feature the app logo prominently at the top.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the Electron icon wiring to use the new assets/icons layout, remove the old app-icon files, and keep Windows packaging pointed at the new platform-specific ico.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move the root logo into app assets, wire the Electron main window to use the branded icon, and stamp the packaged Windows executable icon with rcedit.
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>
Add persisted session and pattern metadata for pinning, archiving, manual titles, and favorite patterns. Expose backend query and mutation APIs for session library features, and cover the shared helpers with tests.
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>
Clarify in the agent guidelines that experiments, workarounds, helpers, and test paths that do not end up in the final correct solution must be removed before handoff.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Drop the refresh-time sidecar restart workaround and its helper/tests now that the verified fix is in the sidecar subprocess launcher itself. This keeps the runtime simpler and leaves only the changes required for correct Copilot version detection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Redirect and immediately close stdin for sidecar-spawned CLI subprocesses so they do not inherit the long-lived stdio pipe from the Electron/Node host. This fixes the Copilot version probe timing out under the actual app runtime while preserving the direct CLI and account diagnostics behavior.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Wait for an intentional sidecar dispose to exit before refreshing capabilities, and ignore exit events from stale sidecar processes. This prevents a refresh from killing the old process and then having that old exit reject the new capabilities request with an unexpected sidecar exit error.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Force-refreshing sidecar capabilities now disposes the idle sidecar process before re-querying capabilities, so Kopaya can pick up backend sidecar changes and refreshed Copilot connection state without a full app restart.
Add a small helper and regression tests for the refresh decision.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Run the Copilot CLI version probe through the resolved launch path and args instead of invoking the Windows shim directly. This keeps the version check aligned with the SDK launch strategy and avoids false 'Version unknown' results from the Winget-installed Copilot executable.
Add a regression test covering the constructed launch command.
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>
- report Copilot CLI version freshness as latest, outdated, or unknown
- expose active Copilot account metadata from the SDK auth status
- add best-effort GitHub organization context when gh is available
- document the frontend follow-up in HANDOVER.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- record shipped Copilot connection diagnostics and settings UI
- split the roadmap item into implemented foundation vs remaining work
- update sequencing and shortlist to focus on the unfinished pieces
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>
Add backend support for Copilot connection and account-status UX without introducing raw provider credential management.
This change extends sidecar capabilities with explicit connection diagnostics, adds a refreshable capabilities IPC path, classifies common Copilot CLI failure modes, and includes a frontend handover document describing the new payload and expected UI states.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>