Releases: tkadauke/syrus
Releases · tkadauke/syrus
Release list
Syrus v0.1.4
Syrus 0.1.4
Highlights
- Walkthrough Videos → Epics: Record or drag in a narrated screen recording; Gemini analyzes it and chat proposes a matching Epic. Includes live red-pen screen annotation, hold-to-draw, and an OCR handoff so Claude can read stills flagged by Gemini. Ships behind a Labs feature flag (default off).
- Coding Mode: A new chat mode that grants the agent write tools against a real checkout, with a live file tree, diff viewer, and an "Open in Coding Mode" take-over workflow for existing Jobs.
- Local Mode: Run agent work against your own machine via a new reverse-tunnel CLI daemon (
syrus local), with a take-over workflow, connection status, and a diff panel in chat. - Test coverage analysis: Parse LCOV/Cobertura reports, annotate diffs with coverage, track trend over time, post PR comments, and auto-schedule coverage-improvement jobs on regressions.
- Main branch health monitoring: Continuous grading of
main, automatic landing-queue pause/resume on breakage, auto-repair jobs, and health status/history surfaced throughout the UI. - Desktop side-by-side channels: Stable and test builds can now be installed and run at the same time, each with its own CLI profile.
- Full i18n pass: English, German, and Latin translations wired across nearly every route and component in the app.
Chat
- New scratchpad: jot down ideas, stash/queue between the scratchpad and the message queue,
/scratchslash command, and a Tab-to-stash shortcut. - New Jobs tab in the chat workspace with a live status feed for jobs linked to the conversation.
- Hover-preview cards for Job/Epic slugs referenced in chat and elsewhere in the app.
- Chat delete flow renamed and reworked: hard delete with worker-side cleanup.
- Coding Mode / Local Mode toggles with mode-aware system prompts and short in-context hints.
- Send media with no accompanying text; walkthrough videos now appear in the media panel.
- Paste-to-attach in the composer, plus subtle flag-gated animations.
Desktop app
- Side-by-side stable/test channels, with an in-app TEST badge and a "Reset Test Setup" option on test builds.
- Install progress bar, redesigned uninstall menu flow, and Docker image cleanup.
- CLI is now actually bundled and installed with the app; "Open in Syrus" focuses the running window.
- DMG installer prefers
/Applicationsand asks before replacing an existing install; hardened against several edge cases. - Streamed backend-update notice with progress phases and connectivity-aware gating.
- Recording HUD floats in its own draggable window; true OS-level hold-to-draw for the red pen.
Web app
- New marketing website rebuilt on Next.js under
website/, replacing the old Astro-based docs site, deployed via GitHub Pages. - Rebuilt
/credentialspage around the setup flow's provider cards. - Coverage card, diff annotations, source hit map, and trend sparkline on jobs and repositories.
- Main branch health status and history shown on the dashboard, repository, and job views, with manual "Check CI Now" and repair actions.
- Epic progress replaced with a colorful progress bar on the dashboard and kanban cards.
- "Create Epic & Start Implementing" gated to developer/admin users.
CLI
- New
syrus localreverse-tunnel daemon subcommand powering Local Mode. - Test-channel builds ship their own CLI profile (
syrus-test), derived from argv0.
Docker and deployment
- New queue-partitioning configs (
config/queue.compute.yml,config/queue.home.yml) for multi-node deployments. - Workspace pruning and disk-health reporting are now per-worker; single-host Docker installs keep correct disk-usage banners.
- Admin-configurable global agent-concurrency cap.
- Trimmed Docker build context;
bin/deployupdated for the multi-worker split topology — operators running multi-worker setups should review the updated deployment docs before upgrading.
Fixes
- Merge train: rebuild instead of unapproving on stale-base failures, incremental rebase recovery on moved bases, guards against reopening failed trains and against assembling with open unapproved siblings.
- Resume now reopens the failed step instead of spawning a new Manual workflow; latest-workflow selection now uses finish time instead of creation time.
- More resilient stale-run reaping (aware of live progress) and reconciliation of workflows stuck after hard step failures.
- Fixed dropped first character on scratchpad Enter-submit and a scratchpad badge that failed to clear when all items were deleted.
- Fixed the overflow menu opening off-screen on mobile.
- Numerous CI stability fixes (timeouts, stale test setup) for React and RSpec suites.
Internal
- Major refactor of the frontend: the 4,700-line
Chat.tsxand 2,300-lineJobDetail.tsxwere split into focused modules and components; largeChatsController,DashboardPayload, andJobmodel concerns extracted for readability. - Consolidated duplicated helpers (
withRoutePrefix,formatDate,errorMessage,formatBytes,inputClass) into shared libraries. - Replaced several type-switch anti-patterns (providers, policies, pending actions) with registry-based dispatch.
- CI: shared reusable
_build-app.ymlbuild spine,test-releaserenamed totest-build, and desktop builds parallelized (~40% faster). - Dead-code removal across Ruby and TypeScript, plus new test coverage for previously untested models and services.
Full changelog
What's Changed
- Fix merge-train stale-base failures to rebuild instead of unapproving by @tkadauke-syrus[bot] in #1622
- Weekly anti-pattern scan: 5 policy-type switch instances flagged by @tkadauke-syrus[bot] in #1614
- Wire i18n t() calls in Dashboard and EpicDetail routes by @tkadauke-syrus[bot] in #1600
- Wire useT() hook and i18n placeholders across 16 route files by @tkadauke-syrus[bot] in #1601
- Remove dead code and deduplicate across Ruby and TypeScript by @tkadauke-syrus[bot] in #1613
- Wire t() calls in Admin routes for i18n by @tkadauke-syrus[bot] in #1597
- Wire i18n t() calls in DirectJobNew and JobDetail routes by @tkadauke-syrus[bot] in #1598
- Extract and wire i18n strings in utility components by @tkadauke-syrus[bot] in #1630
- Wire i18n through GitHub integration modals by @tkadauke-syrus[bot] in #1632
- Extract and translate navigation/filtering component strings by @tkadauke-syrus[bot] in #1631
- 0.1.3: ship the CLI for real, Epic start button, sidebar notices, chat rename/delete, tab-to-complete by @skadauke in #1629
- Fix Resume to reopen the failed step instead of creating a Manual workflow by @tkadauke-syrus[bot] in #1635
- Order latest workflow by finish time, not creation time by @tkadauke-syrus[bot] in #1636
- Website: Next.js marketing site under website/ + GitHub Pages deploy by @martinkadauke in #1639
- Don't fail agentic steps on provider cleanup timeouts by @tkadauke-syrus[bot] in #1637
- Remove edit button on deleted epic bundle proposals by @tkadauke-syrus[bot] in #1638
- Land Epic #158: Chat scratch pad by @tkadauke-syrus[bot] in #1645
- Gate "Create Epic & Start Implementing" to developer/admin users by @tkadauke-syrus[bot] in #1641
- Collapse multi-dependency chips to prevent title starvation by @tkadauke-syrus[bot] in #1644
- Walkthrough videos → Epics: narrated screen recordings analyzed by Gemini, Epics proposed by the chat agent by @skadauke in #1627
- Desktop: DMG self-install prefers /Applications and asks before replacing an existing install by @skadauke in #1650
- Desktop: fix silent hold-to-draw, rectangular auto-sized recording HUD, subtle pen indicator by @skadauke in #1654
- CI: test-release workflow — deterministic full build, GHCR test image, no publishing by @skadauke in #1652
- Chat composer easy wins: paste-to-attach + flag-gated subtle animations by @skadauke in #1655
- Land Epic #160: Chat scratch pad follow-on by @tkadauke-syrus[bot] in #1680
- Install dialog names real versions; test-release tags read consistently by @skadauke in #1688
- Fix overflow menu opening off-screen on mobile by @tkadauke-syrus[bot] in #1678
- Guard merge_train_assemble against open unapproved siblings by @tkadauke-syrus[bot] in #1664
- Desktop: visible backend-update progress + never report "not connected" during the outage by @skadauke in #1690
- Credentials page: rebuild around the setup flow's provider cards by @skadauke in #1691
- CI: rename test-release → test-build; run desktop in parallel (~40% faster) by @skadauke in #1696
- Land Epic #156: Coding Mode for Syrus Chat by @tkadauke-syrus[bot] in #1700
- Buffer grader output to line boundaries before logging by @tkadauke-syrus[bot] in #1697
- Fix scratch pad panel: always show dismiss button and fix visibility after cl...
Syrus v0.1.3
Syrus 0.1.3
Highlights
- Epics: Create & Start Implementing — create a new epic and kick off implementation in one step.
- Chat gets a refresh — renamed UI, tab-to-complete suggestions for next steps, and true hard-delete of chat sessions with worker-side cleanup.
- Desktop app ships the real CLI — the bundled CLI is now properly staged and installed, and "Open in Syrus" now focuses the running app instead of spawning a duplicate window.
Desktop app
- The CLI is now actually shipped and installed with the desktop app (fixed staging/packaging).
- New shell-notice bridge lets the desktop shell surface native notices inside the web app.
- "Open in Syrus" now focuses the existing app window/tab instead of opening a new one.
- Added a dedicated web app window/preload path with its own IPC surface.
- Expanded desktop test coverage: auto-update, CLI install, IPC channel parity, tray "Open in Syrus", shell-notice bridge, and web container behavior.
Web app
- New sidebar notices in the app chrome, driven by app readiness checks.
- Setup flow fixes in the app chrome.
- Chat: renamed UI, hard delete with worker-side cleanup, and tab-to-complete suggestions for next steps.
- Epics: new "Create & Start Implementing" action from the epic form.
Internal
- Added
AppApi::ReadinessChecksservice backing the new sidebar readiness/notices. - Added
ChatSessionCleanupJobfor worker-side hard-delete cleanup of chat sessions. - Added
SuggestNextStepToolfor the chat MCP sidecar to power tab-to-complete suggestions; newsuggested_next_stepcolumn on chat sessions. - Extended
WorkflowWorkspacePruneJobandChatWorkspaceservice. - Updated release workflow (
.github/workflows/release.yml). - Significant expansion of the test suite across desktop, jobs, models, requests, and services.
- Documentation updates for desktop, API, and features.
Full changelog
Full Changelog: v0.1.2...v0.1.3
Syrus v0.1.2
Syrus 0.1.2
Highlights
- New uninstall scripts for a clean, complete removal of Syrus —
uninstall.shanduninstall.ps1joininstall.sh/install.ps1, and are also wired into the desktop app's uninstall flow. - Desktop install progress bar with real-time, JSON-based pull progress reporting during backend image download.
- Automatic recovery from stale GHCR credentials during install/pull, avoiding manual re-authentication.
Desktop app
- Added an install progress bar in onboarding, driven by structured JSON pull progress from Docker.
- New in-app "Uninstall" menu flow that removes containers, images, and local data.
- Added Docker image cleanup logic to reclaim disk space after uninstall/upgrade.
- Fixed DMG background/layout issues (updated background art, Finder window layout script).
- Version and build-time badges are now shown in the app, reflecting the actual release build.
- Disk space warning now reflects real, measured disk usage instead of an estimate.
CLI / Installers
install.sh/install.ps1: added automatic recovery when cached GHCR credentials are stale or invalid.install.sh/install.ps1: pull progress is now reported as structured JSON for better UI integration.- New
uninstall.sh/uninstall.ps1scripts to fully remove Syrus (containers, images, volumes, and data) on Linux/macOS and Windows. bin/docker-image-lib,bin/publish-image,bin/build-local-image: internal updates supporting the new pull-progress and credential-recovery behavior.
Docker and deployment
- Dockerfile updated to support build-time version/badge metadata.
- Docker Compose deployment docs updated to reflect installer and uninstall changes.
Fixes
- Disk space alerts in the app now reflect true available disk space rather than a rough estimate.
Internal
- Extensive new test coverage for image cleanup, pull progress parsing, uninstall command flow, packaging, and install/uninstall parity between shell and PowerShell scripts.
- Desktop shell and bootstrap serializer updated to expose version/build metadata to the frontend.
- Documentation updates for desktop app and troubleshooting guides covering install/uninstall behavior.
Full changelog
Full Changelog: v0.1.1...v0.1.2
Syrus v0.1.1
Syrus 0.1.1
Highlights
- Collaboration modes for cross-fork and upstream PRs. Syrus can now review and approve pull requests opened from forks (modes 2b/3), poll for reviewer feedback, and route it back into the job automatically.
- PR feedback handling end-to-end. New comment ingestion, attribution, and classification pipeline detects reviewer feedback on open PRs and feeds it back into the active job, with per-repository
feedback_policy(confirmorauto) controlling whether Syrus acts on it automatically or waits for confirmation. - Grace period & rejection handling. Jobs now track PR rejection signals, enter a grace period before giving up, and can recover automatically if a closed PR is reopened.
- Feature branch lifetime tracking. Post-upstream-PR branches now track iteration count and lifetime, surfaced in job details and timeline.
Desktop app
- Windows: Syrus now installs Docker Desktop for you — unattended, per-user install with license pre-acceptance, removing a major manual setup step.
- Windows install can resume after a reboot, with clearer first-start guidance for Docker and better per-user install detection.
- Onboarding and runtime setup flows updated to support the new Docker Desktop installer and resume behavior.
Web app
- Job detail and dashboard pages surface fork-review PR status, feedback, and branch lifetime/iteration info.
- Repository settings now include configuration for
feedback_policyand grace period behavior.
Fixes
- Fixed stale GHCR credential guidance shown when pulling images fails.
Internal
- Added specs covering previously untested service classes (job timeline, PR comment ingestion/attribution, fork review approval, grace period expiry, and more).
bin/test-reactnow runs in parallel for faster CI.- Updated
ARCHITECTURE.mdandCLAUDE.mdto reflect collaboration modes, i18n, CLI slugs, and Windows desktop changes. - Added a new "Collaboration" docs section covering all four collaboration modes.
Full changelog
What's Changed
- Add specs for six untested services and parallelize test-react by @tkadauke-syrus[bot] in #1615
- Update ARCHITECTURE.md for changes since 2026-07-01 by @tkadauke-syrus[bot] in #1608
- Land Epic #149: PR Feedback Loop, Fork Review Workflow, and Collaboration Mode Documentation by @tkadauke-syrus[bot] in #1621
- CLAUDE.md: document i18n, CLI slugs, and Windows desktop by @tkadauke-syrus[bot] in #1607
- Field fixes: stale-GHCR-login pull guidance (the 0.1.0 install failures) + Sonnet 5 release notes by @skadauke in #1623
- Windows install: auto-resume after reboot, Docker first-start guidance, per-user install detection by @skadauke in #1624
- Windows: Syrus installs Docker Desktop itself (unattended, no UAC, license pre-accepted) by @skadauke in #1626
Full Changelog: v0.1.0...v0.1.1
Syrus v0.1.0
Syrus 0.1.0
This release introduces native desktop apps for macOS and Windows, shared repositories with team review policies, full internationalization (English, German, Latin), and a substantially reworked release pipeline.
Highlights
- Desktop apps for macOS and Windows. Install and run Syrus from a native app with first-run onboarding, a GUI-driven local Docker install, backend lifecycle management, tray inbox, auto-update, and a bundled CLI you can install with one click.
- Shared repositories. Repositories can now be shared across a team, with per-membership installation and agent provider settings, epic/job authorization, and configurable review policies (self, two-person, and final-say approvals).
- Internationalization. The web app and backend are fully localized in English, German, and Latin, with a language switcher and a saved per-user locale preference.
Desktop app
- First-run onboarding with GUI-driven local Docker install, runtime setup, port-conflict handling, and an install-failure escape hatch.
- Manage the local backend lifecycle directly from the app; retry image pulls before failing an install.
- Web-container main window with dock, single-instance handling, and DMG polish; one universal macOS DMG.
- Auto-update with a tag-driven release pipeline.
- Tray inbox groups jobs by Epic with checkout; context-aware retry actions and tray badge.
- Automatic tray-token provisioning from the signed-in web session, including on in-page navigations, with stale-token healing.
- Register the GitHub App through the default browser; install the App at add-repository time.
- Connect flow is URL-only with live validation; adopt an existing instance or take over stale offers.
- Windows app: local install via
install.ps1, bundled CLI, tray parity, one-click WSL, and Azure Artifact Signing (x64). - Bundle and one-click install the Syrus CLI; offer CLI + skill install after setup.
- Packaged as Syrus.app with signing-ready electron-builder config and a bundled installer.
- Preferences and setup surfaces compacted; "Run Setup Again" escape hatch.
CLI
syrus checkout EPIC-Ngains a--completeflag.- Accept job and epic slugs (
JOB-N,EPIC-N, bare ID) across all commands. - New
skillcommand and agent-aware skill offer;open-urlsupport. - Humanized login flow and email-format hint.
Web app
- Filter/search jobs and epics by slug (
JOB-N,EPIC-N, bare ID). - New Owner filter chip for jobs and epics, replacing the Mine/Team/Claimable tabs.
- Copyable slug in Epic and Job page titles/headers.
- Epic detail: segmented progress bar with an ordered legend, standardized headings.
- Notify the agent when pending actions are confirmed, rejected, or dismissed.
- Hover timestamps on chat message bubbles; Mark as read/unread in the chat sidebar context menu.
- Context-aware job retry actions.
- Standardized button styles, form input dark-mode/focus styles, detail panel metadata layout, tag pills, and admin subpage widths; Repository overview restructured to a 2/3 + 1/3 sidebar layout.
- New brand mark (winged stylus) and unified terracotta accent.
- Latin flavor throughout: status pill tooltips, error-page subtitles, Roman calendar cron dates, PR-description quotes, and a few easter eggs.
Merge train & workflows
- Rebuild the merge train when the base moves, restoring approvals, with explanations for rebuild blockers.
- Harden merge-train land retries; refresh git tokens on auth failure.
- Sync GitHub PR review approvals to job approvals.
- Cross-fork PR creation with fork-to-upstream routing and PR repository tracking; sync forks with upstream at prepare time.
- Release epic-blocked jobs once dependencies complete; skip redundant amend/test-plan turns when upstream has already submitted.
Docker and deployment
- New
bin/build-local-imagebuilds an installable backend from your working tree in one command. - Install script gains a GUI-drivable Docker path and hardened machine interface.
- Renamed backend image
syrus-local→syrus-backend; publish withGITHUB_TOKENinstead of a PAT. - Install prebuilt Ruby (
MISE_RUBY_COMPILE=0), cutting image build from ~13 min to seconds. - Backend image built natively per-arch (no QEMU).
Fixes
- Release epic-blocked and permanently stuck
blocked_by_epicjobs when dependencies resolve; clearlanding_failure_reasonon retry. - Fix stale association cache bypassing epic dependency blocks.
- Fix job self-approval when
owner_user_idis nil. - Fix duplicate filter suggestions and search fields showing base64 filter values.
- Remove remaining Telegram remnants from the May 2026 migration.
- Fix deprecated Context tab in repository navigation and various layout/spacing glitches.
Upgrade notes
- Global repository uniqueness. A migration adds a
repository_membershipstable and makes repository uniqueness global. If you have repositories with duplicate[owner, name]rows, review your data before upgrading; the migration deduplicates existing rows. - New migrations add slugs to jobs and epics, review policies, job approvals, target/PR repository tracking, and per-user locale. Run migrations as part of the upgrade.
Full range: v0.0.6..HEAD
Full changelog
What's Changed
- Fix stale association cache bypassing epic dependency block by @tkadauke-syrus[bot] in #1529
- Make epic slug copyable in detail page header by @tkadauke-syrus[bot] in #1530
- Move copyable slug into Job page title by @tkadauke-syrus[bot] in #1533
- Land Epic #151: Epic grouping in desktop tray inbox by @tkadauke-syrus[bot] in #1535
- Remove remaining Telegram remnants from May 2026 migration by @tkadauke-syrus[bot] in #1531
- Fix deprecated Context tab in repository navigation by @tkadauke-syrus[bot] in #1536
- Standardize admin subpage widths to max-w-6xl by @tkadauke-syrus[bot] in #1537
- Restructure Repository overview to sidebar layout by @tkadauke-syrus[bot] in #1538
- Allow job/epic filter search by slug (JOB-N, EPIC-N, bare ID) by @tkadauke-syrus[bot] in #1539
- Land Epic #148: Team Collaboration: Shared Repository Model, Fork Workflows, and Review Policies by @tkadauke-syrus[bot] in #1542
- Add Owner filter chip for epics; replace Mine/Team/Claimable tabs by @tkadauke-syrus[bot] in #1540
- Remove "Awaiting your approval" sidebar folder by @tkadauke-syrus[bot] in #1544
- Fix spurious separator line between standalone landing queue jobs by @tkadauke-syrus[bot] in #1543
- Add Owner filter chip for jobs; replace Mine/Team/Claimable tabs by @tkadauke-syrus[bot] in #1541
- Fix job self-approval blocked when owner_user_id is nil by @tkadauke-syrus[bot] in #1558
- Fix owner_approved? ignoring nil owner_user_id in ReviewPolicies by @tkadauke-syrus[bot] in #1560
- Show segmented progress bar and ordered legend chips on Epic detail by @tkadauke-syrus[bot] in #1556
- Show hover timestamp on chat message bubbles by @tkadauke-syrus[bot] in #1547
- Fix duplicate filter suggestions caused by FK value type mismatch by @tkadauke-syrus[bot] in #1546
- Notify agent when pending actions are confirmed, rejected, or dismissed by @tkadauke-syrus[bot] in #1562
- Add Latin tooltip to StatusPill for each job and run state by @tkadauke-syrus[bot] in #1563
- Land Epic #152: UI consistency pass by @tkadauke-syrus[bot] in #1582
- Update triaging tooltip to augury reference in STATE_LATIN by @tkadauke-syrus[bot] in #1570
- Add Latin tooltips for mergeable/unmergeable status pills by @tkadauke-syrus[bot] in #1565
- Add Latin subtitles and Latinize quotes on error pages by @tkadauke-syrus[bot] in #1566
- Add random Latin Publilius Syrus quote to PR descriptions by @tkadauke-syrus[bot] in #1567
- Add Ides of March easter egg to AgentActivityIndicator by @tkadauke-syrus[bot] in #1569
- Add Curia Latin tooltip to Admin navigation link by @tkadauke-syrus[bot] in #1568
- Add Roman calendar tooltip to cron task next-fire-at dates by @tkadauke-syrus[bot] in #1572
- Add Latin subtitles to onboarding empty state steps by @tkadauke-syrus[bot] in #1571
- Sync GitHub PR review approvals to job_approvals table by @tkadauke-syrus[bot] in #1559
- Fix epic header title truncation and alignment in desktop tray by @tkadauke-syrus[bot] in #1557
- Skip summarize_amend and test_plan agent turns when upstream already submitted by @tkadauke-syrus[bot] in #1579
- Restore PubliliusSyrusFooter with expanded quotes and tooltip by @tkadauke-syrus[bot] in #1564
- install.sh: GUI-drivable Docker install (+ spaces-in-path portability fixes) by @skadauke in https://github.com/tkadauke/syrus/pull/...
Syrus v0.0.6
Syrus v0.0.6
Highlights
- Read-only chat sharing — Share a chat with teammates via share links; recipients get a read-only view.
- Chat slash commands — New
/copy,/search,/pin,/branch,/report(file a GitHub issue), and bookmark-picker commands, plus editable proposal cards inline in chat. - Switch agent providers mid-chat — Change a chat's provider (Claude ⇄ Codex) from the UI; the switch runs as an async job and per-chat provider selection is persisted.
- Agent memory — Worker runs now read from memory: a
read_memoryMCP tool in the worker sidecar and memory context injected into worker prompts. - Automatic branch cleanup — Syrus deletes its own branches after PRs merge (immediately, with a daily reaper sweep as backstop).
Chat
- Temporal markers in message streams and compact history carried into resumed turns.
- Per-chat provider selection controls and a gear icon in the chat header for Chat Settings.
- Pinning with sidebar ordering (via slash command and sidebar context menu).
- New chats default to your most recently used repository and preserve the default repository.
- Structured Codex tool events are now persisted;
ChatMessagecontent is canonicalized to Anthropic content-blocks, withtranscript_jsonlreduced to a derived cache rehydrated on resume. - Hardened stop handling: stopped turns are reconciled after process exit, queued messages are promoted after terminal turns, and stale chat turns are reaped.
- Compose polish: accessible icon buttons, compact attachment popup that stays open on tab change, empty thinking-only assistant bubbles hidden, constrained agent-question card width, and a Copy button beside Bookmark.
- Proposal outcomes now surface as system events and broadcast live so sidebar indicators update in place.
- Fixed Excalidraw crash by remapping the sticky shape type to rectangle.
Web app
- Epic detail redesigned into a two-column layout with a progress bar, state chips, a clearer action hierarchy, and an Add Job link.
- Job detail redesigned: state badge, red Cancel,
⋯menu, sidebar Claim, improved blocking banner and dependency panel, typeahead dependency search, and a timeline toggle. - Summary tab moved to a content-first two-column layout.
- Action Cable connection lost/reconnected indicator, with app queries refetched after reconnect.
- ANSI terminal styles now render in transcripts.
- Admin: confirm before revoking an invitation, copy invitation share URLs to the clipboard, and hide the empty clearable-secrets section on Admin Settings.
- SPA shell responses are no longer browser-cached.
Terminal
- Rewrote
TerminalRelayfor multi-client broadcast with scrollback; the frontend handles replay frames. - Multiple terminal viewport/sizing fixes for reliable initial fit and resize.
Reliability & fixes
- Reject cron expressions with a zero day-of-month or month field.
- Skip parsed dependencies for non-issue jobs, with repair for stale rows.
- Recover queued workflows that were left blocked without runs, and warn when this happens.
- Fail fast on MCP sidecar startup failures and fix the sidecar bundle boot.
- Dynamic push-rebase recovery, plus guards for retry workflows and branch divergence.
- Landing fixes: correct queue positions for blocked jobs and continue landing after a clean local mergeability check.
- Normalize job and epic slug presentation; fix proposal-card confusion and wrong pending counts on slug reuse.
- Fix chat sidebar sort order being corrupted by
updated_atbumps. - Fix the restart action for direct/cron jobs and wrap it in a transaction.
- Cascade rejected Epic proposals to their proposed child Jobs.
Docker & deployment
- Fixed release image passthrough in
bin/release-image.
Internal
- Removed the legacy repository-note system (models, MCP tools, and API endpoints).
- Refreshed architecture notes for recent workflow changes.
Upgrade notes
- Syrus now deletes its own branches after PRs merge. If you relied on merged Syrus branches persisting, note that they are now removed immediately and swept daily.
- The legacy repository-note feature has been removed, including its MCP tools and API endpoints.
Syrus v0.0.5
Syrus v0.0.5
Highlights
- Chat provider selection. Syrus Chat now runs on either Claude or Codex. Pick your provider in Credentials; the choice persists per user and per chat session, with availability checks so unconfigured providers aren't offered.
- Adversarial review loop. The initial workflow can now run an adversarial review step that critiques the agent's own work before opening a PR. The number of review rounds is read from repo config (
.syrus.yml). - Role-aware Epic workflows. Accounts now carry a selectable role (product owner / developer). Product owners get scoped Epic advancement and job triage; developers get an Epic elaboration mode. Epics also gain version history with an audit display.
- Native desktop notifications. The desktop app can raise native OS notifications on job state changes, with per-event preference controls in notification settings.
Web app
- Chat compose page supports attachments.
- Dependency references render as clickable Job slugs.
- Scheduled job headers link back to their source
ScheduledTask. - Chat exposes a "question" tool at the start of a turn.
- Fixed generated titles for chat sessions that haven't started yet.
Configuration
- New repo config knobs: adversarial review rounds, and
hooks.post_checkoutschema cleanup so schema files are restored after post-checkout hooks run.
Fixes
- Fixed contradictory chat run failure title.
- Fixed role-aware Epic proposal actions.
- Hardened terminal relay readiness and branch-patch-presence guard behavior.
Internal
- Extracted chat provider strategies (
ChatProviders::Claude/Codex) and an agent environment snapshot service. - Removed duplicated ownership and terminal helpers; consolidated terminal session APIs.
- Refreshed architecture and agent-guide documentation for current workflow paths.
Syrus v0.0.4
v0.0.4
Highlights
- Job dependencies from chat — chat proposals can now declare dependencies between proposed Jobs (including cross-proposal and Epic-proposal dependencies), and the chat MCP sidecar gained
add_job_dependency/remove_job_dependencytools plus dependency support inpropose_job. - Auto-generated direct job titles — direct Jobs now get a concise title generated from their prompt text by the agent, produced asynchronously so Job creation stays fast.
- Image annotation in chat — attach images to a chat and annotate them inline; thumbnails show an edit affordance on hover.
- Smarter unified search — search terms are parsed with Google-style semantics, chat matches are grouped in unified results, and match toggles use chevron icons.
Web app
- Chat drafts persist across navigation; pending proposal indicators appear in the chat sidebar, with a jump banner in the compose area when a proposal needs attention.
- Pending feedback actions render inline within the chat message stream, anchored to the current message.
- New chats are created lazily from the sidebar, reuse unstarted chats, and default to your most recently used repository. Repository chips moved above the composer input and can be removed; the empty-compose layout was aligned.
- Detaching a chat attachment now requires confirmation.
- Source browser preserves folder expansion when selecting a file and highlights file contents with syntax highlighting.
- Job detail surfaces a link to the originating chat.
- Memory content in settings renders as Markdown, with full content viewable in a modal and an always-available expansion action.
- Proposal outcomes notify chat agents when they resolve; notification read state broadcasts live; healthy MCP status messages are suppressed.
- Inactive chat bookmarks now show in sidebar menus with working links; bookmarks refresh when menus open.
- Jobs with an active workflow are hidden from actionable lists; saved smart-folder labels are aligned and the folder drag handle stays reachable.
- Admin Features page added as a proper SPA route; several missing SPA shell routes registered so hard reloads resolve.
- Epics with all child Jobs closed can be marked done.
CLI
syrus checkoutruns configurablehooks.post_checkoutcommands after a branch checkout.syrus statusreworked: renamed status jobs and added local branch / checkout status.
Desktop app
- New Job detail tabs (summary and feedback); PR review feedback and local checkout status shown in the tray history.
- Job title tooltips on hover; a dismissible checkout success toast; tray link to the originating chat message.
- Job menu flips near the tray edge to stay on-screen; test-plan code spans render inline; header brand focus outline removed.
- Fixed tray feedback submission (with fallback) and tray renderer startup.
Terminal
- Terminal sessions survive reconnects: the relay and PTY stay alive, relay threads wake on stop, and scrollback is restored across route remounts.
Configuration & docs
.syrus.ymlsupportshooks.post_checkout; configuration, CLI, features, API, recipes, and troubleshooting docs updated. Architecture documentation refreshed.
Fixes
- Reconcile orphaned queued steps after a worker dies.
- Chat image attachments emit absolute paths in prompts; Git askpass env is passed to Claude chat turns; chat repository checkouts refresh on each turn.
- Duplicate chat sidebar pagination entries removed.
Operational notes
- Fixed the
terminal_sessionsmigration for MySQL — relevant if you are upgrading a MySQL deployment that had not yet applied it.
Syrus v0.0.3
Syrus v0.0.3
Highlights
- Interactive terminal sessions (labs). A new worker-side PTY relay lets operators open browser terminal sessions that survive navigation. Sessions are persisted, exposed through a JSON API and Action Cable relay channel, and surfaced in the web app as a terminal route with session tabs and a badge. The whole feature is off by default and gated behind the
terminalfeature flag. See the deployment docs for relay host discovery configuration on Kubernetes and Docker Compose. - Job feedback from the desktop tray and web app. A new direct app API accepts job feedback, with an inline submission form in the web Job detail and a dedicated tray feedback view in the desktop app.
Web app
- Added a diff mode to the job source browser.
- Search now finds Jobs and Epics by slug.
- Chat
JOB-andEPIC-slugs link to their detail pages, and pending-action job slugs are now linked too. - Unified the chat confirmation card presentation.
Desktop app
- New tray notifications page with an unread bell and a compacted tray header.
- Inbox repository groups now remember their collapsed state.
- Chat message fields focus automatically when starting a new chat.
- Fixed tray feedback header title sizing.
Chat
- Split chat MCP tools into a deferred sidecar.
- Redirected chat memory guidance toward the Syrus MCP tools.
Docker and deployment
- Docker builds now ignore release artifacts and the local bundle directory.
- Added terminal relay host discovery configuration for Kubernetes and Docker Compose.
Fixes
- Forced the chat message cursor index on MySQL.
- Restored the v2 UI feature declaration and handled missing feature flags gracefully in the app chrome.
- Fixed Electron runtime install for desktop development and avoided stale desktop release artifacts.
- Removed a duplicate terminal relay enqueue.
Internal
- Release tooling now prevents reuse of a release version.