Skip to content

Releases: ZechCodes/build-releases

Build Desktop 0.1.4

Choose a tag to compare

@ZechCodes ZechCodes released this 19 Oct 18:32

Build Desktop 0.1.4, built from ZechCodes/build@bd6420a.

macOS apps are signed with a Developer ID certificate and notarized by Apple.
macOS requires Apple Silicon (arm64). Open the DMG and drag Build to Applications, or extract the ZIP. Intel Macs can use the browser client.

Linux packages are available for x86_64 and ARM64: use the AppImage or install the Debian package.
The shell installer selects the correct platform and verifies the signed checksums:

curl -fsSL https://getbuild.ing/install-desktop.sh | sh

The bridge is installed separately; this app connects to the hosted Build service.

Build Desktop 0.1.3

Choose a tag to compare

@ZechCodes ZechCodes released this 13 Oct 16:47

Build Desktop 0.1.3, built from ZechCodes/build@9c454fb.

macOS apps are signed with a Developer ID certificate and notarized by Apple.
macOS requires Apple Silicon (arm64). Open the DMG and drag Build to Applications, or extract the ZIP. Intel Macs can use the browser client.

Linux packages are available for x86_64 and ARM64: use the AppImage or install the Debian package.
The shell installer selects the correct platform and verifies the signed checksums:

curl -fsSL https://getbuild.ing/install-desktop.sh | sh

The bridge is installed separately; this app connects to the hosted Build service.

Build Desktop 0.1.2

Choose a tag to compare

@ZechCodes ZechCodes released this 12 Oct 21:39

Build Desktop 0.1.2, built from ZechCodes/build@9ffc295.

macOS apps are signed with a Developer ID certificate and notarized by Apple.
macOS requires Apple Silicon (arm64). Open the DMG and drag Build to Applications, or extract the ZIP. Intel Macs can use the browser client.

Linux packages are available for x86_64 and ARM64: use the AppImage or install the Debian package.
The shell installer selects the correct platform and verifies the signed checksums:

curl -fsSL https://getbuild.ing/install-desktop.sh | sh

The bridge is installed separately; this app connects to the hosted Build service.

Latest Build Desktop

Choose a tag to compare

@ZechCodes ZechCodes released this 12 Oct 21:40

version.txt identifies the latest complete desktop-v release.

build-bridge 0.2.8

Choose a tag to compare

@ZechCodes ZechCodes released this 04 Oct 03:43

Wire 3.11.0.

Changed

  • Same-LAN browser mDNS candidates are resolved on every eligible LAN interface,
    with explicit multicast membership and egress, subnet-validated answers, shared
    reply handling and retries that leave TURN available. Container and tunnel
    interfaces are excluded; same-credential offers retain pending discovery, and
    only live lookups count toward the discovery limit. Relayed sessions keep
    checking for direct viability and may restart ICE once when a direct pair
    succeeds or mDNS host discovery completes. Optional restarts give direct
    candidates a head start
    while retaining fallback signaling. Sampling backs off and ends after a bounded
    observation window once the one upgrade attempt finishes; slow gathering can
    remain pending. The browser's TURN allocation remains allocated after direct
    nomination, while relayed traffic stops. Connection diagnostics now say why no
    direct pair was attempted and report remote candidate and resolution counts
    without peer addresses, coalesced by generation/reason with query details at
    debug level (rtc.candidateDiagnostics, wire 3.11.0, #369).

  • Text inputs and textareas share token-based field styling in both themes,
    with the same standard or compact height, radius, border, background and
    focus ring as adjacent selects. Read-only fields retain muted text and a
    stable hover border. Task review bases, capture branches and workspace labels
    now match the rest of the forms; embedded composers and the source editor
    retain their sizing and native editing behaviour. Branch routing menus stay
    inside narrow screens, and short task rails keep their Close action fully
    in view (#368).

  • Saving the conversation menu's Compact at threshold updates the open menu
    in place. Its menu, thumb, focus and active drag survive cache repaints
    without closing, reopening or replaying animations. Surface rows can appear
    or disappear while the menu stays open; removing the focused row moves focus
    to the nearest remaining row. Lifted menus remain inside their bounds as
    rows change, and removed sliders cannot commit a retired preview (#366).

  • Every select shares Build's field styling, chevron and focus ring in both
    themes. Chromium's native picker uses the same panel, rows and selection
    marks as Build menus; other browsers retain a themed native popup. Compact
    diff sorting and narrow conversation reset fields stay within their rows.
    Pickers open below their field and flip above when needed, keep single-line
    options within the viewport, and fade long selected labels. Settings and sheet
    selects match neighbouring input backgrounds (#367).

  • Setting the conversation menu's Compact at slider keeps the menu open and
    focus on the slider. Its explanation line is removed; the selected value,
    stop ticks and accessible name remain. A saved stop stays visible while its
    reply is pending and returns to the cached stop on refusal. Escape cancels
    a preview and closes the menu, and an outside click saves it and closes (#364).

  • The conversation menu's Compact at setting is a slider with discrete stops
    for the existing limits, showing only the selected value and description.
    Touch release commits a stop; Left/Right preview it until Enter or blur,
    Escape cancels the preview, and Up/Down still walk the menu. The conversation
    setting and cache update behavior are preserved (#357).

Added

  • Clear conversation at the bottom of every agent conversation's menu
    confirms removal and opens the harness, model and effort chooser with the
    previous settings. conversation.reset stops the old session and removes
    its history and artifacts while retaining the agent's identity, workspace
    membership and task links. Thread generations prevent stale requests and
    cached pages from restoring cleared content, including MCP calls and task
    handoffs admitted before the clear. Established turns are stopped before
    history is replaced. Project agents receive their standing instructions
    again on the fresh start (#358, wire 3.11.0).
  • The project rail has a Files section with the workspace's shared explorer:
    one collapsible root per project source, persistent open tabs, keyboard
    navigation, previews, selection and guarded file edits. Project Files links
    retain the source, path and line. fs.projectSources (wire 3.9.0) lets
    fs.tree, fs.read and fs.write resolve a configured project source
    with the same containment checks as workspace files (#359).
  • Markdown checklists render as native checkboxes. Readers can tick or untick
    task body items with a click or Space; each change saves the marker through
    tasks.update, repaints from the cache and survives reopening. Comments and
    other markdown surfaces display disabled checkboxes (#347).
  • Conditional task body writes: tasks.update accepts expected_body_hash
    (SHA-256 of the exact saved UTF-8 body), announced by
    tasks.bodyPrecondition. The hash requires body; sending it on a
    status/priority/label-only update refuses with invalid_params.
    A changed body refuses the whole update with
    stale_body. Checklist ticks use this precondition and reload on refusal,
    preserving body edits from other devices and agents (#347, wire 3.10.0).
  • Task reviews save the committed head and resolved base of every Git directory
    in a workspace, retain them with private refs, and keep non-Git and unavailable
    directories visible. tasks.review.snapshot, tasks.review.get,
    tasks.review.diff and tasks.review.complete have matching agent tools.
    Reviews include the full saved tree and paged, read-only blob content, even
    for unchanged files. Completion records who finished the review and what
    they did, and moves the task to Done without closing it or finishing its
    workspace. Moving a task to Done also completes its open review, recording
    the mover and “Marked done”. Explicit completion also records the column move
    and runs its normal follow-on behavior. Diff file listings and patch buffers
    are bounded; truncated file listings are marked. Taking a snapshot from a new
    workspace replaces the old review history and releases its pins. RPC and MCP
    share one description limit. Snapshot updates use a version check; review tasks bypass the
    older automatic report/merged-workspace task transitions (#328).

Fixed

  • The web client keeps pre-3.11 conversation request shapes on older bridges,
    including image paste and attachment reads. Generation fields and new
    attachment selectors follow the greeting's conversation.reset capability,
    using its per-device cached value until hello answers on a reconnect. Cleared
    conversations retain required generation fields before hello, and revision
    reads keep their already-supported agent and conversation selectors (#363).
  • The web client loads safely when device contexts are imported before the
    connection layer, including Inbox review captures. Shared app state lives
    outside the shell so device contexts, feed and cache sync cannot import
    their connection consumer; the security-stop export keeps its live binding
    without reading it during module initialization (#361).
  • Installed CLI model probes keep their last usable catalog through failed
    or abandoned refreshes. Retries start at 15 seconds, double up to the
    ten-minute TTL, and reset after recovery. Background refresh keeps cached
    catalogs current. Direct installs and symlinks are re-asked when their PATH
    hit, target or modification time changes; underlying updates behind unchanged
    mise shims or wrappers rely on periodic refresh or session version hints.
    Failures include bounded stderr within the original deadline, abandoned
    probes release their claim, and older results cannot overwrite a fresh
    reading (#345).

build-bridge 0.2.8, built from ZechCodes/build@8628628.

Install:

curl -fsSL https://getbuild.ing/install.sh | sh

macOS binaries are signed with a Developer ID certificate and notarized by Apple.
Linux builds target glibc 2.35 or newer; macOS builds target macOS 13 or newer.

Verify a download by hand:

sha256sum --check --ignore-missing SHA256SUMS
cosign verify-blob \
  --bundle SHA256SUMS.sigstore.json \
  --certificate-identity-regexp '^https://github\.com/ZechCodes/(build-web|build)/\.github/workflows/release\.yml@refs/tags/bridge-v' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  SHA256SUMS

build-bridge 0.2.7

Choose a tag to compare

@ZechCodes ZechCodes released this 02 Oct 04:51

Wire 3.5.0.

Added

  • A moved task action carries its destination column as task_action.to
    (wire 3.5.0), so the agent's own conversation line can name it (#323).
  • A development build the bridge service runs can be replaced by a release
    from Settings: Install shows a warning naming the release and the restart,
    then sends bridge.install_update with replace_development_build (wire
    3.5.0, updates.replaceDevelopmentBuild). It goes through the same
    verified download and helper, and rollback restores the development build
    and its marker as they were. A bridge started by hand, or a service running
    another executable, is still refused; the panel shows the install script
    command. A development build running from a cargo target directory is
    warned that the next cargo build overwrites the release. An install
    queued for when agents are done keeps the confirmation; one queued before
    the binary became a development build never runs (#322).

Fixed

  • capture.reroute with a destination other than a branch is refused before
    the capture's router is touched; it used to end the routing session first
    (#211).
  • Conversation task notices use the new wording on one line, with an ellipsis
    when they run out of room. Actor and assignee names omit the workspace;
    hover text carries the full line and task title (#323).
  • build-bridge pair retires a stored approval only on the word of the api
    that approved it. The identity file now records that api when a pairing
    through it completes; one paired before that counts as approved by
    https://getbuild.ing, whatever another api later says about it, so one
    paired with a self-hosted api needs pair --retire after a revoke. Urls
    name the same api when scheme, host (any case) and port (written or
    implied) agree.
    Another api's "not approved" leaves the identity untouched: pair names
    the api it asked and exits with status 3, and the installer then offers
    pair --retire, which takes that api's word. pair refuses any other
    argument (#320).
  • Agent sessions and CLI probes the bridge starts no longer inherit
    BRIDGE_IDENTITY_FILE or identity keys from its environment, so a tool an
    agent runs under a temporary HOME cannot reach this machine's identity.
    A user's own terminal keeps them (#320).
  • install.sh quotes the commands it prints to paste, and the line that puts
    the install directory on PATH, so any install path it accepts works
    pasted into sh, bash or zsh, including one with $, a backtick, a quote, a
    backslash or !. Run with BRIDGE_API_URL, it starts each command it
    prints with that variable, so a pasted pair or install-service asks
    the same api (#320).
  • A device you just approved is usable in seconds rather than 30 s or more.
    The bridge sends its first heartbeat the moment the relay authenticates
    its socket, and again each time the socket comes back, a failed beat's
    retry included, instead of at the next 30 s tick. It dials the relay before
    starting its background services and redials about half a second after a
    socket ends (spread either way, doubling to 30 s). While showing a pairing
    code it asks for its approval every second for two minutes, then every
    2 s; an api answering 429 or 5xx is asked less often, after its
    Retry-After when it gives one, and an api out of reach (no connection, or
    a 404 while it is redeployed) is waited for up to two minutes instead of
    ending the pairing. A code the api says is gone (revoked, or no such
    device) ends the pairing after three such answers, saying to run
    build-bridge pair again. After an approve, the app reads the device list every
    second until it lists the device online, for up to 90 s (#321).
  • A failed update check no longer sticks: the next successful check clears
    it, and it reads "Could not check for updates.", beside the available
    version when one was found. Only a failed install reads "The update
    failed." and lasts until an install succeeds. An error saved by an older
    bridge with no sign an install ran is read as a check's, so the stuck 404
    goes with the next check; a development build drops it at startup (#322).
  • A disabled Install button in the update panel no longer looks pressable
    (#322).

Changed

  • Add a device's pairing-link warning reads as a warning, in amber, not as an
    error (#320).
  • A development build no longer checks for releases on its own, at startup
    or daily; it checks when asked. Nothing marks it as having an update, and
    it forgets an earlier run's check at startup, so it sends no
    update_available an older app would badge (#322).

build-bridge 0.2.7, built from ZechCodes/build@ccb486f.

Install:

curl -fsSL https://getbuild.ing/install.sh | sh

macOS binaries are signed with a Developer ID certificate and notarized by Apple.
Linux builds target glibc 2.35 or newer; macOS builds target macOS 13 or newer.

Verify a download by hand:

sha256sum --check --ignore-missing SHA256SUMS
cosign verify-blob \
  --bundle SHA256SUMS.sigstore.json \
  --certificate-identity-regexp '^https://github\.com/ZechCodes/(build-web|build)/\.github/workflows/release\.yml@refs/tags/bridge-v' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  SHA256SUMS

build-bridge 0.2.6

Choose a tag to compare

@ZechCodes ZechCodes released this 02 Oct 00:32

Changed

  • build-bridge pair prints a short block that fits 80 columns: the pairing
    code, the fingerprint's first 32 hex digits (128 bits), and one
    approve at: link to /app/#/pair/<code>. The link opens Add a device
    with this device looked up, after sign-in if needed. The sheet says a link
    opened it and warns that approving gives the machine access to your
    account; approving is still your press. The approve screen shows the same
    32 digits, with the full fingerprint beneath (#319).
  • When pair sets aside a revoked or unknown pairing, it now says so in two
    lines naming ~/.build. The README says how to put the old identity back
    (#319).
  • install.sh drops its "If a pairing code appears" hint. Both installers
    break their lines between words to fit 80 columns, and give commands to
    paste lines of their own (#319).

build-bridge 0.2.6, built from ZechCodes/build@1ebff70.

Install:

curl -fsSL https://getbuild.ing/install.sh | sh

macOS binaries are signed with a Developer ID certificate and notarized by Apple.
Linux builds target glibc 2.35 or newer; macOS builds target macOS 13 or newer.

Verify a download by hand:

sha256sum --check --ignore-missing SHA256SUMS
cosign verify-blob \
  --bundle SHA256SUMS.sigstore.json \
  --certificate-identity-regexp '^https://github\.com/ZechCodes/(build-web|build)/\.github/workflows/release\.yml@refs/tags/bridge-v' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  SHA256SUMS

build-bridge 0.2.5

Choose a tag to compare

@ZechCodes ZechCodes released this 01 Oct 21:22

Changed

  • install.sh and install-desktop.sh print one plain line per step, say
    nothing when cosign is absent (the checksum is still verified), and end
    every error on what to do next; colour only on a terminal without
    NO_COLOR (#318).

Fixed

  • The release workflow stages its assets outside the checkout and publishes
    through a draft, so a failed upload leaves no public release (#305).
  • Release notes carry this file's entry for the tagged version (#303).
  • build-bridge pair on a machine whose stored pairing was revoked or is
    unknown to the api no longer dead-ends on "not approved yet": it sets the old
    identity aside, says which api answered and how to undo it, and pairs a new
    device with a fresh code. install-service gives the same reason,
    uninstall-service says it keeps the identity, and the status check times
    out instead of hanging (#317).

build-bridge 0.2.5, built from ZechCodes/build@5c3d5e1.

Install:

curl -fsSL https://getbuild.ing/install.sh | sh

macOS binaries are signed with a Developer ID certificate and notarized by Apple.
Linux builds target glibc 2.35 or newer; macOS builds target macOS 13 or newer.

Verify a download by hand:

sha256sum --check --ignore-missing SHA256SUMS
cosign verify-blob \
  --bundle SHA256SUMS.sigstore.json \
  --certificate-identity-regexp '^https://github\.com/ZechCodes/(build-web|build)/\.github/workflows/release\.yml@refs/tags/bridge-v' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  SHA256SUMS

build-bridge 0.2.4

Choose a tag to compare

@ZechCodes ZechCodes released this 01 Oct 00:43

build-bridge 0.2.4, built from ZechCodes/build@7d3ce64.

Install:

curl -fsSL https://getbuild.ing/install.sh | sh

macOS binaries are signed with a Developer ID certificate and notarized by Apple.
Linux builds target glibc 2.35 or newer; macOS builds target macOS 13 or newer.

Verify a download by hand:

sha256sum --check --ignore-missing SHA256SUMS
cosign verify-blob \
  --bundle SHA256SUMS.sigstore.json \
  --certificate-identity-regexp '^https://github\.com/ZechCodes/(build-web|build)/\.github/workflows/release\.yml@refs/tags/bridge-v' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  SHA256SUMS

build-bridge 0.2.13

Choose a tag to compare

@ZechCodes ZechCodes released this 21 Oct 22:59

Wire 3.24.0.

Security

This release removes a compromised certificate authority from the root
certificates bundled with the bridge, which secure its relay connection;
upgrade promptly. The bridge's other HTTPS requests trust your operating
system's certificate store, so apply your OS certificate updates too.

  • Update the bridge's Rust CA bundles to remove a compromised root certificate
    (#753).

Fixed

  • Publish newly opened workspace reviews before notifying clients, and
    acknowledge review closes only after durable completion.

  • Restore startup and message delivery for capture agents.

  • Load the user's Claude MCP servers and connectors alongside Build's server.

  • Keep slow MCP replies alive for a bounded five-minute wait without resending
    actions; Pi budgets each queued tool call from dispatch and timeouts advise
    checking the outcome before retrying.

  • Retain Codex provider-recovery state across restarts, avoid retrying permanent
    failures, and deliver sanitized failure notices once to the requester and
    assigned task.

  • Keep quiet-workspace reminders informational and limit reminders for locked
    workspaces to once a week.

  • Preserve parked projects when their home folder is unavailable, and restore
    their coordinator and workers when it returns (#533).

  • Fence source change subscriptions against replaced scopes and stale watcher
    passes, preserving separate cache keys for each source (#550).

  • Close failed WebRTC peers after a replacement client session is established,
    while retaining peers that recover (#373).

  • Accept repeated Linux ARP-table configuration records so safe LAN discovery
    is not disabled (#674).

  • Source Git mutations and settings edits serialize with base sync off the app
    mutex. Queued syncs and mutations recheck source location after waiting;
    project.sync_source accepts captured source_path (sources.syncBasePath).
    Workspace cuts pin configured-base commits, include and disclose local base
    commits, and retain the fetched fast-forward cut path (#530).

  • Claude headless agents show as working when the child resumes a turn itself
    after a result, including the elapsed clock and interrupt control (#553).

  • Centre the collapsed inbox popover and hover-peek carets beneath the inbox
    toggle on phone and desktop layouts, including left safe-area insets. Keep
    the card attached by sharing the standing directory rail's inset policy (#482).

  • Unread counters include only watched conversations and task news since the
    current watch began. Watch baselines survive restart; rewatching excludes
    earlier history. Cached SPA badges also suppress unwatched agents on older
    bridges (#474).

  • Read marks publish the conversation owner's updated badge state. Chat read
    reports survive transient failures with bounded backoff and work when a
    cached unread count lags behind the transcript. Accepted reads are confirmed
    from the reported cursor, so reading earlier history unblocks the tail; older
    bridges get a conditional attention-only roster refresh that preserves detail
    fields and skips unchanged values (#473).

  • Chat message ages update live and on return to the foreground without moving
    rows; refresh pauses while chat is hidden or Agents overview is open (#467).

  • Recognize Claude's saved API key using its config precedence, and treat blank
    or non-string credentials as absent across harnesses (#434, #466).

  • Detect installed or removed harness CLIs in model listings without restarting
    the bridge (#434).

  • Keep Codex sessions alive through late items and compaction turns, queuing
    messages during compaction for their own turn (#421).

  • Preserve the last applied model and effort, including defaults, when
    adopting a Codex-started turn (#421).

  • Cap WebRTC GSO batches at the peer family's UDP payload limit, including
    IPv4-mapped peers, to prevent whole-batch drops (#375).

  • Move LAN sweep interface and neighbour reads outside the WebRTC core lock,
    stopping probes when ownership changes or cached state expires (#376).

  • Treat an overflowed LAN sweep address watch as a change until drained,
    so stale interface ownership cannot authorize probes (#376).

  • Report IPv6 and oversized neighbour-table sweep skips accurately, and allow
    bounded scouting when neighbour GC thresholds are equal (#376).

  • Refresh after mutations during a cache pass, so Git initialization and other
    changes appear without waiting for an unrelated refresh (#454).

  • Stop superseded cache reads without blocking fresh diff reads; abandoned
    session waits cannot restart sync or clear a new sync's marker (#454, #460).

  • Read newly created files before opening them, replacing earlier deleted-file
    contents without overwriting newer concurrent cache updates (#433).

  • Keep cached PR status and sync observations current across delayed replies,
    cleared reviews and reconnects, preserving review drafts (#406).

  • Bound and reuse commits-since-review history reads, and reject counts for a
    different displayed snapshot head (#427, #453).

  • Wait briefly for overlapping explicit PR synchronization, and release capture
    and merge leases when their operations finish even if a child retains an
    inherited descriptor (#404).

  • Preserve effective project Git hooks and their nested Git configuration during
    fenced PR merges; recover registered hook fence resources at startup after
    verifying ownership and process death, preserving live or uncertain launches
    (#423).

  • Retain workspaces and build output while PR merge or saved publication is
    unsettled, preserve concurrent merge completion during task comments and read
    backfills, and classify legacy PR action refusals as client errors (#404, #423).

  • Keep PR push bursts coalesced across polling, bound metadata registration,
    share linked-worktree metadata watches without watching private pins, and
    recover interrupted unpublished snapshot captures (#403).

  • Recover interrupted initial PR receiving-ref writes and preserve review
    opening setup when another worktree holds the original branch (#402).

  • Establish recoverable PR tracking refs before opening succeeds, so the first
    UI Push publishes to the review receiver even without origin (#402).

  • Keep long task comments and loaded images in place when ages, references or
    review metadata refresh, and follow new comments when reading at the bottom
    (#410).

Added

  • Keep one pinned project coordinator and add source-writing project workers,
    including retry-safe task assignment without creating a workspace (#532, #533).

  • Open terminal tabs against an explicit original project source, including
    plain folders; live shells hold that source's location until closed (#531).

  • Load newest-only activity pages with exact whole-run digests, while retaining
    on-demand access to the full activity (#496).

  • Add per-harness compaction thresholds at device, project and workspace scopes,
    with conversation overrides and inherited/configured settings kept separate
    from the policy applied when a session opens (wire 3.22.0, #655, #660).

  • Attach agent-created files to chat replies and agent handoffs, preserving
    stored copies and ranged reads for larger recordings (wire 3.23.0, #696).

  • Introduce the durable write journal, bounded status and confirmation
    subscriptions, and authenticated process epochs (wire 3.24.0, #739). No write
    methods are enabled for acknowledgement/confirmation yet.

  • Waiting-on task orchestration (wire 3.21.0, #558/#562): atomic create and
    scoped dependency tools, bounded reverse reads, saved assignment/retry
    answers and quiet delivery notices. Blocked user assignments preserve
    explicit questions and become actionable when prerequisites resolve.

  • Secure transport is maintained in this checkout (transport/js, Python
    reference/tests, and the existing Rust implementation). SPA/web locks, CI and
    app/QA images use the in-tree binding; developers no longer need a sibling
    clone. Build is the maintenance/audit and private vulnerability-reporting
    destination. The imported JS/Python BSL notice and original pinned repository
    history remain intact; no protocol, session, identity or root-license change
    accompanies this consolidation (#572, #575–#579).

  • Project sources in Git and pushes (wire 3.21.0, #529): every Git verb
    project Changes uses addresses one original source by project_id,
    source_id and its captured source_path (git.projectSources), with
    per-source cache keys; a moved source is refused with conflict and a plain
    folder says it is not a Git repository. changes.subscribe takes a
    project_source scope (changes.projectSources) whose git, files and
    terminal items carry the source's identity, for plain folders too. Clients
    that do not ask hear nothing new.

  • Harness inventory reports installation, CLI/session versions and saved sign-in
    status for Claude, Codex and Pi (harnesses.list, harnesses.refresh, #434).

  • PR task pages show snapshots and opinions, with Merge, Close, Reopen and
    retryable publication results (#408).

  • PR task pages offer Reclaim after merge and publication settle; locked
    workspaces must be unlocked first (#408).

  • New file from the Files tree: fs.createFile creates one empty file in a
    workspace or project source, refusing names that already exist (#433).

  • PR-style review tasks with dedicated branches, local push synchronization,
    explicit base retargeting and RPC/MCP lifecycle controls (#405).

  • PR sync observations count the commits since the user's last reviewed
    snapshot, or flag a rewritten history, and the Changes header shows
    "N commits since your last review" (#427).

  • Internal PR lifecycle and durable merge service: current-snapshot opinions,
    recoverable Closed reopening, guarded merge finalization, interrupted-operation
    recovery and explicit retry of saved publication results (#404).

  • Bridge-owned PR ref synchronization without a connected client: terminal
    pus...

Read more