Skip to content

Syrus v0.1.4

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Jul 00:40

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, /scratch slash 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 /Applications and 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 /credentials page 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 local reverse-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/deploy updated 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.tsx and 2,300-line JobDetail.tsx were split into focused modules and components; large ChatsController, DashboardPayload, and Job model 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.yml build spine, test-release renamed to test-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 close by @tkadauke-syrus[bot] in #1699
  • Add incremental rebase recovery when merge_train_land sees a moved base by @tkadauke-syrus[bot] in #1701
  • CI: dedup release/test-build into a reusable _build-app.yml module by @skadauke in #1707
  • Pin CTA anchor targets and fix stale website README paths by @skadauke in #1653
  • Land Epic #154: First-class test coverage support by @tkadauke-syrus[bot] in #1708
  • Remove v2_ui and v2_sidebar_subject_selector feature flags by @tkadauke-syrus[bot] in #1712
  • Land Epic #161: Broken Main Branch Detection and Recovery by @tkadauke-syrus[bot] in #1714
  • Replace epic progress pill with colorful progress bar on dashboard by @tkadauke-syrus[bot] in #1702
  • Remove stale PR references from feature flag descriptions by @tkadauke-syrus[bot] in #1713
  • Enable coverage analysis for Ruby and JavaScript test suites by @tkadauke-syrus[bot] in #1715
  • Land Epic #162: Coding mode: workspace prep + chat-first handoff by @tkadauke-syrus[bot] in #1720
  • Land Epic #157: Local Mode for Syrus Chat by @tkadauke-syrus[bot] in #1726
  • Land Epic #163: Job and Epic hover preview cards by @tkadauke-syrus[bot] in #1729
  • Add adversarial review round to .syrus.yml by @tkadauke-syrus[bot] in #1719
  • Eliminate policy type-switches via registry dispatch by @tkadauke-syrus[bot] in #1733
  • Add test coverage for previously untested models and services by @tkadauke-syrus[bot] in #1732
  • Remove dead code and deduplicate bind/finished-at helpers by @tkadauke-syrus[bot] in #1731
  • Update ARCHITECTURE.md for changes since 2026-07-06 by @tkadauke-syrus[bot] in #1730
  • Document coding_handoff workflow and Coding Mode chat workspace by @tkadauke-syrus[bot] in #1727
  • Block landing units with failing or pending CI check-run state by @tkadauke-syrus[bot] in #1724
  • Fix text element height truncation for multi-line content by @tkadauke-syrus[bot] in #1725
  • Fix Excalidraw elements unselectable after agent draw_* updates by @tkadauke-syrus[bot] in #1728
  • Add blocked reason column to landing queue dashboard by @tkadauke-syrus[bot] in #1734
  • Land Epic #165: Syrus feature documentation search for chat agents by @tkadauke-syrus[bot] in #1739
  • Side-by-side stable/test channels for the desktop app by @skadauke in #1709
  • Fix two broken main branch test failures by @tkadauke-syrus[bot] in #1746
  • Land Epic #169: Workflow UI improvements by @tkadauke-syrus[bot] in #1758
  • Show elapsed time for completed workflow steps by @tkadauke-syrus[bot] in #1750
  • Land Epic #168: Chat job status sidebar by @tkadauke-syrus[bot] in #1759
  • Allow editing memory scope and repository attachment by @tkadauke-syrus[bot] in #1745
  • Link MainBranchHealthCheck rows to their grader workflow by @tkadauke-syrus[bot] in #1741
  • Limit main-branch grading to one active job per repo by @tkadauke-syrus[bot] in #1743
  • Add manual main-branch grader action to repository health UI by @tkadauke-syrus[bot] in #1744
  • Fix health banner showing "queued jobs are held" when not paused by @tkadauke-syrus[bot] in #1765
  • Fix chat Jobs tab clearing when live events arrive by @tkadauke-syrus[bot] in #1768
  • Add per-route RouteErrorBoundary with opt-in bug reporting by @tkadauke-syrus[bot] in #1766
  • Add root AppErrorBoundary as full-page safety net by @tkadauke-syrus[bot] in #1767
  • Make textarea required conditional on attachments in chat composer by @tkadauke-syrus[bot] in #1764
  • Clean up infrastructure workflow workspaces immediately; suppress retry/reopen UI by @tkadauke-syrus[bot] in #1761
  • Remove redundant mode dropdown from chat settings by @tkadauke-syrus[bot] in #1771
  • Sort Jobs tab by updated_at and add hide-closed toggle by @tkadauke-syrus[bot] in #1770
  • Compact desktop tray epic group headers with icon checkout by @tkadauke-syrus[bot] in #1760
  • Fix main_grader jobs appearing in operator dashboard by @tkadauke-syrus[bot] in #1742
  • Bump CI timeouts: react 10→15 min, rspec 20→30 min by @tkadauke-syrus[bot] in #1781
  • Use job slug in landing queue blocked reasons by @tkadauke-syrus[bot] in #1778
  • Move step artifact buttons into run row, render summary as markdown by @tkadauke-syrus[bot] in #1779
  • Land Epic #137: Adversarial Review Loop by @tkadauke-syrus[bot] in #1786
  • Render adversarial review critique as markdown by @tkadauke-syrus[bot] in #1776
  • Fix Local Mode appearing 5 times on Admin Features page by @tkadauke-syrus[bot] in #1773
  • Keep at most one workflow workspace per Job to fix disk fill by @tkadauke-syrus[bot] in #1785
  • Show coding handoff jobs in the chat Jobs tab by @tkadauke-syrus[bot] in #1774
  • Require title and enforce brief description in submit_coding_changes by @tkadauke-syrus[bot] in #1772
  • Fix tool result content showing as (empty) in chat by @tkadauke-syrus[bot] in #1769
  • Add Check CI Now button to main branch health section by @tkadauke-syrus[bot] in #1782
  • Add patch_search_mount to bin/deploy for writable search volume by @tkadauke-syrus[bot] in #1790
  • Guard array .length accesses against undefined in SPA by @tkadauke-syrus[bot] in #1787
  • Add when_files_changed skip condition to graders by @tkadauke-syrus[bot] in #1791
  • Make hover card slugs copyable via CopyableSlug by @tkadauke-syrus[bot] in #1792
  • Add sidebar chat mode icon and hide dots on hover by @tkadauke-syrus[bot] in #1775
  • Remove duplicate My Profile link from settings popup by @tkadauke-syrus[bot] in #1793
  • Fix All Jobs appearing twice in smart folder sidebar by @tkadauke-syrus[bot] in #1794
  • Enrich submit_coding_changes pending action card by @tkadauke-syrus[bot] in #1795
  • Land Epic #161: Broken Main Branch Detection and Recovery by @tkadauke-syrus[bot] in #1804
  • Reject job proposals targeting done or archived epics by @tkadauke-syrus[bot] in #1797

New Contributors

Full Changelog: v0.1.1...v0.1.4