Product history

What's new in BibCode

Release notes, compatibility details, and known issues—pulled directly from the project changelog.

View source

v0.5.13

Details

BiBCode v0.5.13 shows where pending changes live in the Source Control panel,

narrows Files-panel upload tokens to a single file, and makes download and

upload names behave on every platform.

Source Control

Pending changes are grouped by folder inside each section. A folder row

shows the full relative directory (shortened from the start so the deepest

part stays readable), a file count, a collapse chevron, and a checkbox that

stages, unstages, or selects every file in that folder in one request. File

rows underneath show only the name and its diff stats.

A Group by folder / Flat list toggle next to the section actions is

remembered per user. The flat list keeps file names visible and shortens

only the directory.

Git Manager

New branch now forks from the branch you have checked out (or the

current HEAD commit when HEAD is detached) instead of the repository's

default branch, and the dialog shows that base branch in a highlighted chip

before you confirm.

Files panel transfers

An upload URL is now bound to one file name; a leaked upload link can no

longer write any other name in that folder, and a request that names a

different file is refused.

Download names with non-ASCII characters arrive intact in browser mode

(`Content-Disposition` carries an RFC 5987 encoded name), and a name that

previously broke the response no longer does.

Upload names are validated for the filesystem that stores them: Windows-only

rules (reserved names, `<>:"|?*`, trailing dots or spaces) apply only when

the server runs on Windows, so Linux and macOS workspaces keep accepting

their legal names. Names up to 255 bytes upload; the desktop host shortens

an over-long download name instead of refusing it, and on Windows renames a

download that Windows could not store, reporting the saved path.

A refused upload now names the file in its message.

Desktop

macOS builds stay ad-hoc signed; the README and the release runbook explain

that folder and network permissions are asked again after each update.

Downloads

On macOS, copy BiBCode.app from the DMG to Applications before launching it.

Desktop installers and standalone server distributions are provided for macOS,

Linux, and Windows on ARM64 and x64. Linux server `.deb` and `.rpm` packages are

included for both architectures. Stable desktop updater payloads and signatures

remain available through `latest.json`.

Full Changelog: https://github.com/mubeda/BibCode/compare/v0.5.12...v0.5.13

v0.5.12

Details

BiBCode v0.5.12 adds Download and Upload to the Files panel for local and

remote environments, gives the Git Manager a Tags tab with push options, and

fixes four left-panel and Git Manager presentation problems.

Files panel

Download on a right-clicked file saves that file; on a folder it saves a

`.zip` of the folder. The desktop app asks for a destination folder and never

overwrites an existing file (`name (2).ext`); a browser uses its own

download location. Folders over 2 GiB or 200,000 entries are refused with a

message before the download starts; symbolic links and special files are

skipped, ignored files are included.

Upload Files… on a folder row, or on the tree background for the

workspace root, opens a file picker and uploads the chosen files into that

folder. It is disabled on file rows with the reason in the label. A file

that already exists asks before it is replaced; a failure names the file and

the rest of the batch still uploads. Files up to 1 GiB each are accepted.

Both actions work for remote environments. Transfers stream over two new

token-authenticated routes on the server that owns the workspace

(`/api/transfers/{token}`, five-minute signed tokens bound to one file,

folder, or upload directory), so they work on every connection profile.

After an upload the file tree and the Git status refresh at once.

Git Manager tags

A Tags tab after Changes and History lists local tags and, per remote,

the tags that remote advertises, in collapsible sections whose state is

remembered per project. Remote tags are queried when the tab opens and on

its refresh button; rows are marked when a tag is missing locally or points

elsewhere, and an unreachable remote shows its reason with Retry.

Creating a tag offers Push to `<remote>` after creating; if that push

fails the tag still exists locally and the failure says so.

Push, publish, and force push confirm in one dialog with Also push tags,

which sends every local tag with the branch in one atomic push.

Annotated tags are compared by the commit they point to on both sides, so a

tag that matches the remote is no longer reported as differing.

Left panel and Git Manager

A selected project node stays selected in the left panel until another

thread is opened.

The Git Manager toolbar shows the connected environment next to the project.

The merge dialog's Merge commit option is the default and stays visibly

selected.

A thread that runs in its own worktree shows its branch as a muted label

after its title instead of a folder icon that looked like the project's

"New worktree" action.

Server

Asset and transfer URL tokens share one signed-token module with separate

purposes, so a token minted for one can never be redeemed as the other.

The route inventory used by the maintenance audit now lists the transfer

routes.

Downloads

On macOS, copy BiBCode.app from the DMG to Applications before launching it.

Desktop installers and standalone server distributions are provided for macOS,

Linux, and Windows on ARM64 and x64. Linux server `.deb` and `.rpm` packages are

included for both architectures. Stable desktop updater payloads and signatures

remain available through `latest.json`.

Full Changelog: https://github.com/mubeda/BibCode/compare/v0.5.11...v0.5.12

v0.5.11

Details

BiBCode v0.5.11 makes the left panel follow Git Manager branch changes at

once and makes the active host and the managed project visible at a glance.

Left panel and Git Manager

The project row's branch label updates as soon as a Git Manager or

source-control mutation finishes, or a terminal command exits, instead of

waiting for the passive status summary's 30-second cycle.

Worktree rows follow a Git Manager checkout, branch create, rename, delete,

pull, merge, rebase, cherry-pick, revert, or reset without waiting for the

worktree catalog's polling interval.

The Git Manager shows which project it manages: the project's header row

stays highlighted in the left panel while the manager is open, and the

toolbar leads with the project's name, with its checkout path on hover.

Environment rail

The selected host is framed by a primary-colored ring and unselected hosts

are muted, so the active host is unambiguous next to the panel separator.

Downloads

On macOS, copy BiBCode.app from the DMG to Applications before launching it.

Desktop installers and standalone server distributions are provided for macOS,

Linux, and Windows on ARM64 and x64. Linux server `.deb` and `.rpm` packages are

included for both architectures. Stable desktop updater payloads and signatures

remain available through `latest.json`.

Full Changelog: https://github.com/mubeda/BibCode/compare/v0.5.10...v0.5.11

v0.5.10

Details

BiBCode v0.5.10 makes Git Manager merges keep their promises, detects and

launches Zed as an external editor, lets Add Project browse remote host

folders, and fixes Create Worktree and terminal input problems.

Git Manager merges

Merge commit always records a merge commit. It never fast-forwards and

overrides repository settings such as `merge.ff` or branch merge options

that would skip the commit or squash it.

Squash merge now works in repositories that set `merge.ff=false`,

`merge.ff=only`, or a branch `--commit` merge option; Git previously

rejected or aborted the squash.

The bypass-hooks option of the squash-merge operation now applies to the

squash commit itself.

The merge dialog disables Merge and says Nothing to merge when the

source branch has no commits the current branch lacks.

External editors

Open in Zed now appears when Zed is installed. Zed is detected on `PATH`,

through the `zeditor` alias, a Flatpak export (`dev.zed.Zed`),

`~/.local/bin`, the macOS app bundle CLI, and the Windows per-user install

directory.

Every external editor is resolved through one shared server catalog.

Detection runs on the server that owns the environment, so a remote

environment lists the editors installed on that remote host.

Flatpak editors are launched with access to the opened file's directory, so

projects outside the home directory open without extra Flatpak overrides.

Add Project on remote hosts

Remote hosts, and browser clients without a native dialog, open a folder

browser that lists the selected host's directories; Type a path instead

switches to manual entry of an absolute or home-relative path. Local and WSL

locations keep the native folder picker.

The Settings remote directory picker uses the same browser and stays stable

through the dialog's exit transition.

Create Worktree

The Reuse branch control is visible whenever a branch is selected. It is

enabled for a free local branch and disabled, with an explanation, for a

remote branch or a branch already checked out elsewhere.

A branch list that fails to load is reported in the dialog with a recovery

hint, and a typed name still creates a new branch.

Terminals

`Shift+Enter` inside a terminal sends a soft newline, so Codex and Claude

Code prompts insert a line break instead of submitting; plain `Enter` still

submits.

Release engineering

Raised the publication preflight budget to 60 minutes after v0.5.9 approval

runs reached the previous 30- and 45-minute limits while the full test graph

was still running. Every gate stays enabled, and the workflow contract and

release runbook record the measured limits.

Downloads

On macOS, copy BiBCode.app from the DMG to Applications before launching it.

Desktop installers and standalone server distributions are provided for macOS,

Linux, and Windows on ARM64 and x64. Linux server `.deb` and `.rpm` packages are

included for both architectures. Stable desktop updater payloads and signatures

remain available through `latest.json`.

Full Changelog: https://github.com/mubeda/BibCode/compare/v0.5.9...v0.5.10

v0.5.9

Details

BiBCode v0.5.9 fixes Git network operations from the Linux AppImage and adds

repeatable compatibility coverage for Debian, Ubuntu, Fedora, and Arch.

Linux Git compatibility

Fixed Fetch origin and other system Git operations failing from the Linux

AppImage with `symbol lookup error` when Fedora's `libcurl` loaded an

incompatible `libnghttp2` bundled by the AppImage.

Isolated Git and source-control helper processes from both the current

AppImage library directory and stale `.mount_*` directories inherited after

application updates. This applies to text and binary-output Git commands.

Preserved unrelated host library directories, credential and SSH-agent

settings, command-local environment overrides, and Linux loader semantics for

current-directory entries. The desktop process environment remains unchanged.

Kept ordinary non-AppImage server launches unchanged and avoided

distribution-specific library paths, so the fix uses each host's own system

Git dependency set.

Validation and supported distributions

Added a production-runner regression that builds an intentionally

incompatible shared library, proves the system Git HTTPS helper fails when it

loads that library, and verifies the patched runner restores normal helper

initialization without contacting an external Git server.

Added CI coverage using system Git on Debian 12 and 13, Ubuntu 22.04 and

24.04, Fedora 44, and Arch rolling. Coverage includes extracted AppImages,

paths containing spaces, stale mounts, colon and semicolon separators, and

parent-environment isolation.

Reproduced the original Fedora failure and verified a patched dry-run fetch

against the affected repository completed without a loader error or changing

refs or `FETCH_HEAD`.

Updated the Linux testing runbook, runtime architecture, CI reference, and

script reference to define the cross-distribution Git compatibility contract

and distinguish it from complete packaged desktop qualification.

Downloads

On macOS, copy BiBCode.app from the DMG to Applications before launching it.

Desktop installers and standalone server distributions are provided for macOS,

Linux, and Windows on ARM64 and x64. Linux server `.deb` and `.rpm` packages are

included for both architectures. Stable desktop updater payloads and signatures

remain available through `latest.json`.

Full Changelog: https://github.com/mubeda/BibCode/compare/v0.5.8...v0.5.9

v0.5.8

Details

BiBCode v0.5.8 improves remote terminal responsiveness and makes AI usage status

follow the server you are working on.

Remote terminal responsiveness

Added capability-negotiated, ordered terminal input. Updated clients can send

subsequent keystrokes before the previous write's reply, reducing the extra

queue delay on remote connections. A controlled 120 ms round-trip test reduced

median time queued before sending from about 59 ms to under 1 ms. Network

round-trip latency still affects when remote output appears.

Added bounded input windows and reserved RPC capacity for control operations,

including when terminal traffic competes with persistent subscriptions.

Unicode paste and control sequences retain their delivery order.

Bound each input lease to its physical connection and exact terminal process.

Failed, duplicate, incomplete, disconnected, or stale input cannot be replayed

into a replacement process. A delayed old attachment request cannot replace

a newer attachment's lease.

Added Reconnect input after delivery failures. It reattaches to the

existing agent process without restarting it or replaying discarded text.

Fixed input preparation after open, reopen, restart, and fresh attachment so

immediate programmatic writes work before the terminal renderer arrives.

Visual panel hiding and moving preserve the existing input binding.

Older servers retain the existing serialized input path. Update both the

desktop client and remote server to activate ordered input; failures on the

new path never silently retry through the old path.

Correct AI usage and environment status

Claude and Codex usage now comes from the environment selected in the rail,

rather than always using the primary local server.

Manual/background refresh and usage-reset actions target that same selected

environment. Late responses remain associated with their original server.

A loading or disconnected remote server no longer borrows local account

usage. Terminal counts and remote diagnostics also follow the selection,

while the separate local desktop diagnostic source remains available.

Reliability and validation

Fixed newly active center panels remaining blank while a geometry update is

waiting for paint. Initial and activation layout measurements run before

paint and refresh replaced targets, while ordinary resizing remains batched.

Fixed macOS process termination when navigation cancels an in-flight WebKit

request. Optimized builds now retain the exception unwinding required by

Wry's recovery path, with a native release-profile regression and build guard.

Wait for native navigation and the new document's load event after desktop

test reloads. This avoids sending JavaScript into a document being replaced.

Readiness generations are recorded only in test builds. Backend logs and

bounded macOS crash summaries are retained for native test failures. macOS

smoke tests now verify and run an isolated installation copied from the DMG.

Scenario reloads restore the test motion guard, while motion assertions

explicitly exercise native transitions.

Made packaged desktop validation independent of suspended macOS paint frames,

wait for native viewport resizing and workspace terminal controls, and target

Pierre selection shortcuts

at the shadow editor on Windows. Existing edit, undo, and lifecycle assertions

remain in the native platform suite.

Added regression coverage for input ordering, queue bounds, cancellation,

stale attachments, legacy-server compatibility, immediate writes after

lifecycle changes, and provider-usage isolation.

Added a native encrypted-transport test that delivers reversed frame arrivals

into a real PTY in the correct order and refuses another socket's lease use,

even when it authenticates with the same bearer.

Integrated current main without reverting its toolchain changes and

regenerated the new RPC fixtures against the current Effect protocol.

Updated the connection/RPC architecture, workspace guide, and native testing

procedures for input recovery and selected-server usage.

Downloads

On macOS, copy BiBCode.app from the DMG to Applications before launching it.

Desktop installers and standalone server distributions are provided for macOS,

Linux, and Windows on ARM64 and x64. Linux server `.deb` and `.rpm` packages are

included for both architectures. Stable desktop updater payloads and signatures

remain available through `latest.json`.

Full Changelog: https://github.com/mubeda/BibCode/compare/v0.5.7...v0.5.8

v0.5.7

Details

BiBCode v0.5.7 makes remote servers easier to identify when sharing a host or

saving a paired connection.

Remote server sharing

The Share this host → Address dropdown now displays each endpoint's IP

address or hostname instead of repeated labels such as “Local network” and

“Private network”. Active LAN, Tailscale, and NetBird interfaces can be

distinguished directly in the list, with duplicate endpoint URLs removed by

the existing selection logic.

Automatic (LAN) remains available. Explicit network addresses appear once

native sharing is enabled; endpoint availability, default selection, public

address restrictions, and pairing behavior remain unchanged.

Server aliases

Added Server alias (optional) to the Add Server pairing-code form.

The alias is saved on the connecting device and appears in its saved-server

list and environment rail, including after reconnecting or restarting.

Aliases are trimmed; blank input uses the name supplied by the pairing code.

Failed pairing preserves the entered alias for retry, while successful

pairing clears the completed form.

Aliases use the existing connection catalog labels and retain the

storage-instance identity introduced in v0.5.5. They do not rename the remote

host, change its identity, or affect names on other clients.

Reliability, validation, and documentation

Fixed loopback/SSH-tunnel pairing being rolled back when an already-active

standard credential could not call the administrative confirmation RPC. The

client now verifies that credential through its connection supervisor;

server permission checks and pending-pairing confirmation remain enforced.

Fixed a terminal cleanup race by retaining a child process's exit result for

late subscribers, including children that finish before a watcher attaches.

Added regression coverage for address selection, alias persistence and

hydration, blank aliases, and failed-pairing retry behavior.

Updated the remote-access guide, connection-runtime documentation, and

macOS, Linux, and Windows native validation procedures.

Full Changelog: https://github.com/mubeda/BibCode/compare/v0.5.6...v0.5.7

v0.5.6

Details

BiBCode v0.5.6 is a supported dependency and toolchain convergence release. It

moves the web, desktop, server, relay, and repository tooling onto one reviewed

set of current compatible versions while preserving the native Rust/Tauri

runtime and the existing browser/desktop RPC boundary.

Toolchains and frontend foundations

Standardized development on Node.js 26.8.1, pnpm 11.25.0, Rust/Cargo 1.98.0,

Vite+ 0.3.0, Vite 8.2.2, and the single Vitest 4.1.11 runtime supplied by

Vite+. The main workspace now uses TypeScript 7.0.2; the Astro marketing app

remains on TypeScript 6.0.3 until its public checker supports TypeScript 7.

Updated React and React DOM to 19.2.8 with matching types, and refreshed the

Base UI, Lexical, TanStack, fonts, icons, DOM test runtime, and other

maintained frontend dependencies as compatible cohorts.

Moved Pierre Diffs to stable 1.3.6 and its public editing API, removed the

retired Pierre prerelease patch, and retained diff review, partial staging,

editor history, undo, and conversation rendering behavior.

Runtime and dependency compatibility

Converged Effect core and its selected v4 companions on

`4.0.0-beta.107`. Alchemy remains on the newest compatible beta.72 release,

paired with the exact Drizzle ORM and Kit RC5 build required by that train,

avoiding the incompatible Effect RC.112 split.

Updated the supported Rust and Tauri dependency floors under Rust 1.98,

including the source compatibility repairs required by the new compiler and

libraries. The application remains a native Rust/Tauri desktop and server

runtime; no production Node.js service or Electron host was introduced.

Retained WebdriverIO 9.29 and the Tauri automation service/plugin 1.2 cohort.

The 1.3 line remains blocked until upstream fixes teardown ordering and aligns

its globals/expect dependency train.

Reliability, security, and maintenance

Reworked vendored-reference synchronization into an exact,

history-independent snapshot transaction. Linked worktrees share one writer

lock; literal Git paths, pruning, casing, and file modes are preserved; and

typed failures, defects, interruption, and timed rollback all quiesce their

child processes before recovery advances. An unverifiable recovery keeps the

lock for explicit repair instead of exposing partial state.

Refreshed the exact Effect and Alchemy reference snapshots and made the

dependency ledger declaration-complete: 221 audited entries, no pending row,

and no unaccounted direct dependency or toolchain declaration.

Hardened Clerk frontend-domain validation by rejecting malformed or

unsupported Punycode labels before URL construction. Valid IDN custom Clerk

domains remain unsupported until BiBCode owns one deterministic

cross-runtime IDNA validator.

Updated immutable GitHub Actions pins, release/test contracts, native port

probing, process-watchdog coverage, raw Git parsing, and repository identity

checks used by the cross-platform build and packaged-test paths. The Git

broadcaster cancellation regression now proves synchronous lifecycle

cancellation and joined cleanup without depending on a five-second scheduler

race, and Claude hook-plumbing coverage uses an isolated probe context under

parallel load. Catalog joins now reserve a workspace's current direct path

before any retained-snapshot fallback, preventing duplicate old/new ownership

after a retarget; its integration coverage uses an owned healthy-refresh

boundary.

Supported release assets

Desktop installers for macOS 11+ on Apple Silicon and Intel, Linux on ARM64

and x64, and Windows 11 ARM64 plus Windows 10/11 x64.

Standalone server archives for all six OS/architecture targets, plus ARM64

and x64 Debian and RPM packages and `bibcode-server-SHA256SUMS`.

Signed updater payloads and a six-target `latest.json` manifest for the

stable in-app update channel. macOS applications remain ad-hoc signed and

unnotarized, and Windows installers remain without Authenticode.

Full Changelog: https://github.com/mubeda/BibCode/compare/v0.5.5...v0.5.6

v0.5.5

Details

BiBCode v0.5.5 fixes desktop pairing: Add Server refused every pairing code

with "Server already saved" even when no server was saved at all.

Pairing fixes

A saved remote server is now identified by the host's storage instance id

rather than by the environment id the host declares about itself. Every

BiBCode server declares the same id — `local` — including the server the

desktop app runs in process, so the app's own Local environment and every

remote host claimed one key in the client's environment registry. Pairing saw

that key already taken and refused the code; removing the saved server could

not help, because the entry it collided with was Local, which cannot be

removed. Two different remote servers would have overwritten each other the

same way. Reproduced in the desktop app on a data root that had never seen the

remote host, and verified afterwards against an independent second server:

both hosts declare `local` with different storage ids, the remote pairs

end-to-end encrypted, and it now appears in the environment rail alongside

Local instead of replacing it.

The host's declared id is kept beside the client's own key, and the connection

resolver checks the endpoint against that stored value on every connect, so

the identity assertion is preserved rather than dropped. Servers saved before

this release carry the declared id in their existing field and resolve through

it unchanged — no re-pairing and no migration.

The manual endpoint-and-token path identifies a server the same way, keeping

the declared id for hosts that report no storage id.

"Server already saved" now names the entry that was collided with instead of

printing one generic sentence, so the dialog says which saved server to

reconnect to or adopt.

Documentation

The remote architecture document records how a saved remote is identified and

why a host's declared id cannot key it. The Linux, macOS, and Windows desktop

runbooks check that a paired server appears alongside Local and that a second

offer from the same host is refused by name.

v0.5.4

Details

BiBCode v0.5.4 fixes the desktop workspace sidebar: the floating **Toggle main

sidebar** control sat on top of the environment rail's first entry, so aiming

at Local collapsed the sidebar instead of selecting the environment.

Interface fixes

The environment rail now reserves the same topbar strip the thread sidebar

header reserves, so the first environment entry starts below the fixed

toggle instead of underneath it. The rail's separator line is continued

across the reserved strip, keeping the header edge unbroken between rail and

sidebar. On a native macOS titlebar the control resolves to the top-left

52px column, which is exactly the rail's width, so the two overlapped

completely; a WebKit geometry harness built from the shipped stylesheet

reported 672 px^2 of overlap and a hit-test at Local's centre landing on the

toggle, and reports no overlap with Local receiving the hit after the fix.

The thread sidebar brand drops its control-clearance margin because the

control no longer overlays that header, while the collapsed-sidebar centre

panel header keeps using the shared offset variable. A regression assertion

pins the reserved strip ahead of the environments group.

v0.5.3

Details

BiBCode v0.5.3 fixes the encrypted pairing channel in every desktop app: with

the v0.5.1 connect policy and the v0.5.2 macOS transport exception in place,

pairing still ended as "Server unreachable" because the client rejected the

server's handshake reply.

Connection fixes

The end-to-end-encrypted channel now reads WebSocket frames delivered as

`ArrayBuffer`, which is what every real browser hands over once the socket

is switched to `binaryType "arraybuffer"`. The client previously treated

such frames as non-binary, failed the Noise handshake as a protocol error

right after receiving the server's reply, and closed the socket without

sending its pairing message. Verified end to end inside a WebKit page

carrying the app's policy against a live server: the handshake completes,

the pairing token is consumed, and the session is minted. A regression test

drives the handshake through a socket that delivers `ArrayBuffer` frames.

Test reliability

The blocked-remote cancellation test in the Git status broadcaster awaits

the cancellation before releasing the blocking permit, removing a race that

failed a release preflight under CI load.

v0.5.2

Details

BiBCode v0.5.2 is a macOS-only fix on top of v0.5.1: the desktop app can now

reach plain-HTTP remote servers on a LAN or tailnet, which App Transport

Security had been refusing before any packet left the machine.

Connection fixes

The macOS bundle now merges an `Info.plist` that relaxes App Transport

Security for web content only (`NSAllowsArbitraryLoadsInWebContent` and

`NSAllowsLocalNetworking`) and declares the Local Network usage description,

so Add Server → Pairing code works against `http://` servers. Native

code keeps the default policy, and the hardening test rejects the blanket

`NSAllowsArbitraryLoads`.

Documentation

The remote architecture and release documents record the macOS gate beside

the webview connect policy introduced in v0.5.1.

v0.5.1

Details

BiBCode v0.5.1 makes headless servers pairable from the desktop app without a

browser detour, keeps them running across reboots as a per-user service, and

fixes two connection blockers found in real use: the desktop webview refused

plain-HTTP remote servers, and a WebKit downgrade left the Linux desktop unable

to open its connection database.

Headless server pairing

Added `bibcode pairing offer`, which mints an encrypted `bibcode://pair?code=…`

offer directly against the data root, beside a running server, for pasting

into Add Server → Pairing code. Endpoint and reach rules are shared with

the Share tab, and the command fails closed until the server has started on

that data root once.

`bibcode serve` now prints a ready-to-paste `pairingCode` in its startup line

when bound to a routable address. `--no-startup-pairing-offer` (or

`BIBCODE_NO_STARTUP_PAIRING_OFFER=1`) keeps that credential out of service

logs; loopback and wildcard binds print none.

The Add Server dialog names the CLI as a source of pairing codes alongside the

Share tab.

Per-user background service

Added `bibcode service install | uninstall | status`, which installs a systemd

user unit on Linux (enabling lingering so it starts at boot), a LaunchAgent on

macOS, or a logon scheduled task on Windows, running `bibcode serve` as the

invoking user with that shell's `PATH` so provider CLIs keep finding their

credentials. Nothing ships inside the Linux packages; the definition is

written on request.

Connection fixes

Fixed the desktop webview policy that made every Add Server attempt against

a LAN or tailnet server fail with "Server unreachable" before a packet left

the machine, on all desktop platforms. `connect-src` now admits `http:` and

`ws:` in addition to loopback and TLS, while scripts and default sources stay

same-origin; a hardening test pins the policy.

The Linux desktop now offers its acknowledged reset when WebKit reports

"Unable to establish IDB database file", which happens when an AppImage

bundling an older WebKitGTK opens a connection database migrated by a newer

one. The dialog explains each cause, and the runbook documents the data-root

isolation that avoids it.

Server bind failures now report the address and the operating-system error

instead of a bare "failed to bind the server listener".

Release reliability

The updater signature verifier covers all six supported desktop targets,

including Linux ARM64 and Windows ARM64, and manual release repair runs stay

pinned to the immutable tag while using current release tooling.

Documentation

Remote access and standalone server guides cover the CLI pairing offer, the

startup pairing code, and running the server as a per-user service. The

remote architecture document records the offline offer path, the startup

offer, the service installer, and the webview connect policy. The three OS

runbooks add headless pairing, restart, and service validation steps.

v0.5.0

Details

BiBCode v0.5.0 adds first-class remote environments, a complete project-level

Git Manager, and a dedicated Agents view. It also expands native desktop and

standalone-server releases to six OS/architecture targets and hardens the

connection, process, packaging, and test boundaries exercised by those

features.

Remote servers and secure connectivity

Added Remote Servers settings, pairing-code and `bibcode://` deep-link

flows, manual and SSH-assisted connection setup, saved-server lifecycle

controls, compatibility/version status, remote update actions, and an

environment rail that scopes projects and actions to the selected machine.

Added authenticated Noise NK transport with bounded record fragmentation,

no-downgrade credentials, pinned host identity, transport-scoped sessions,

and explicit protocol-compatibility negotiation for off-host connections.

Added grant-derived sharing state and verified exposure transitions. Windows

remote access uses a program-scoped firewall rule and rolls back firewall,

listener, and persisted state when widening or narrowing cannot complete.

Hardened pairing and session authority across cancellation, reconnects,

concurrent server processes, stale delivery, duplicate requests, revocation,

forwarded loopback peers, and bounded per-principal byte/message capacity.

Remote failures remain typed and retryable without silently substituting a

local or WSL backend.

Added remote server update discovery and installation through the existing

desktop-owned updater boundary, including status badges and bounded

multi-server checks.

Project-level Git Manager

Added a GitHub Desktop-shaped centre panel for each project, covering working

tree and staged changes, per-line and per-hunk selection, commit/amend/undo,

safe discard, paged history and diffs, branches, tags, fetch/pull/push,

publication and force-with-lease, stashes, merge previews, rebase,

cherry-pick, squash, reorder, revert, reset, conflict recovery, and image

diffs.

Added an on-demand pull-request and checks pane with GitHub, GitLab, and Azure

provider resolution. Pull-request creation now opens a non-mutating review

dialog and only publishes the branch and creates the PR after final

confirmation; retries reuse an existing pull request.

Kept Git Manager activity server-owned, bounded, non-interactive, and free of

background telemetry. Repository generations fence stale reads, concurrent

mutations share one owner, capabilities degrade independently, and remote

environments retain the same typed RPC boundary.

Improved the final packaged behavior found during macOS and Windows native

validation: clean checkouts select History, dirty/loading selections are

preserved, merge recovery stays on Changes, history rejects stale pages,

symbolic remote `*/HEAD` pointers are not shown as branches, and a temporarily

missing upstream tracking ref no longer makes the manager unavailable.

Redesigned the pull-request review dialog for readable repository/base/head

metadata, clear branch-publication guidance, stable padding, and a fixed

action footer.

Agents view and interface polish

Added a full-height Agents view with environment/project/status grouping,

filtering, unread state, provider identity, branch and conversation previews,

live detail, and capped server-pushed shell summaries.

Raised the sidebar and navigation text floor, increased the default sidebar

width with double-click reset, and improved Linux WebKitGTK font hinting and

subpixel rendering without changing other applications' GTK settings.

Added a shared orange panel-separator token and aligned the environment rail,

sidebar, content headers, Git Manager, diff/file/preview panels, terminal,

status bar, and top frame in both themes.

Corrected route, capability, stale-status, dialog, and layout edge cases found

during packaged macOS, Linux, and Windows interaction testing.

Native releases and standalone server packages

Expanded the release matrix to macOS, Linux, and Windows on both ARM64 and

x64. Desktop downloads now include two DMGs, two AppImages, and two NSIS

installers; the signed updater manifest contains all six matching targets.

Added standalone `bibcode` server archives for all six targets plus native

ARM64/x64 Debian and RPM packages, install-and-run container tests, a sorted

SHA-256 manifest, and optional minisign signatures.

Hardened Windows ARM64 and x64 builds with architecture-aware MSVC setup,

drive-safe portable ZIP creation, checkout-local Vite+ execution, cached NSIS

tooling, explicit sidecar execution manifests, bind-only port probes that do

not trigger firewall prompts, and targeted cleanup for test-generated rules.

Hardened Linux packaging around an Ubuntu 20.04 server compatibility build,

native package smoke matrices, AppImage portability, minimal RPM curl

dependencies, and ownership restoration after container builds.

Hardened macOS/Linux startup PATH hydration so login-shell probes detach from

inherited controlling terminals, accept a complete framed result without

waiting for lingering descendants, and reap their process group before

desktop startup continues.

Data, compatibility, and validation

Database migrations 46–49 add pairing reach metadata, a durable pairing-offer

idempotency ledger, shared authentication-authority revision state, and active

pairing-delivery state. Existing stores continue through the verified

pre-migration backup path.

Remote transport, Git Manager, Agents-view, provider-check, and update

contracts are additive; no intentional breaking API change is documented.

Expanded native CI, release-candidate validation, packaged desktop UI and

upgrade smoke tests, remote Docker validation, source-control fixtures, and

cross-platform runbooks. The macOS Git Manager flow was exercised against a

real private GitHub repository through branch, diff, staging, commit, history,

push, pull-request, checks, tag, fetch, and checkout behavior.

Stabilized release gates by target-gating macOS-only test imports, giving

uncached Rust workspace jobs an explicit workflow budget, and replacing a

scheduler-sensitive Git broadcaster teardown timer with canonical lifecycle

retirement. Windows forced-shutdown coverage now exercises the production

timeout instead of a scheduler-sensitive 250 ms fixture window, and

cross-process auth revocation coverage distinguishes queued prior revisions

from the forbidden post-revocation event. Authority-expiry coverage starts

its short-lived grant only after nonessential fixture setup is complete.

Removed an accidental literal NUL from tracked TypeScript source and added a

repository-wide guard so text-source corruption fails tests immediately.

Supported downloads and trust

macOS 11+ Apple Silicon (`arm64`) DMG

macOS 11+ Intel (`x64`) DMG

Linux ARM64 AppImage

Linux x64 AppImage

Windows 11 ARM64 NSIS installer

Windows 10/11 x64 NSIS installer

Standalone server archives for all six targets, plus Linux ARM64/x64 `.deb`

and `.rpm` packages and `bibcode-server-SHA256SUMS`

macOS builds remain ad-hoc signed and unnotarized, and Windows installers remain

without Authenticode. Tauri updater payloads are independently signed and

verified by BiBCode before publication.

Full changelog: v0.4.2...v0.5.0

v0.4.2

Details

BiBCode v0.4.2 makes desktop updates easier to understand and recover from,

while keeping Codex and Claude terminal interfaces readable across app-theme

changes.

Safer, observable desktop updates

Added live update-protection progress for every local backend, including the

current protection stage, elapsed time, and active mutation count while

BiBCode drains work, quiesces the runtime, checkpoints SQLite, creates a

verified backup, and stops the backend.

Classified RPC methods through the typed contract inventory so long-lived

read subscriptions do not block an update, while unknown methods still fail

closed as mutations.

Kept verified backup protection as the default and the primary retry path.

Installing without a backup is available only after a real protection

attempt fails and the user explicitly acknowledges the risk; the native host

rejects forged first-attempt bypasses.

Preserved exact backend-topology safety for the acknowledged fallback: the

desktop host still snapshots and stops the running native and WSL backends,

restarts that same set if installation fails, and reports each environment

as skipped instead of protected.

Improved the protection-failure dialog so retry, exact secondary exclusions,

and the destructive no-backup action remain distinct and correctly laid out.

Terminal and agent compatibility

Kept each Codex terminal on its launch palette until an explicit restart, so

changing the BiBCode app theme cannot make Codex composer text disappear or

leave the terminal half-repainted on macOS, Linux, or Windows.

Applied the resolved terminal palette when opening agent and script

terminals, including the OSC foreground, background, cursor, and Windows

console markers that terminal applications snapshot at spawn.

Prevented a light in-band color-scheme reply from selecting Claude Code's

broken fullscreen light path inside the embedded xterm host, while retaining

dark-scheme and OSC color support.

Removed inherited `NO_COLOR`/disabled-color host settings from PTY launches

unless the launch explicitly opts out, and advertised true-color support so

agent TUIs do not silently lose their ANSI colors.

Changed the device-local terminal-theme default to Follow app theme;

Always dark remains available for users who prefer a fixed terminal

palette.

Release reliability

Prevented the chat surface from reading an unavailable nested platform value

while server configuration is still partial, so opening a local draft cannot

fail during configuration bootstrap.

Made the startup activity-recovery test use a current fixture timestamp so it

continues to exercise unresolved-versus-completed recovery after the

production 30-day completed-activity retention window advances.

Compatibility and downloads

No database migration or intentional breaking API change is included. New

updater progress and skipped-protection fields are additive and decode with

safe defaults.

The release pipeline provides macOS 11+ Apple Silicon and Intel DMGs, a Linux

x64 AppImage, and a Windows 10/11 x64 NSIS installer, plus signed updater

payloads and the four-platform `latest.json` manifest.

macOS builds remain ad-hoc signed and unnotarized; Windows installers remain

without Authenticode. Tauri updater payloads are independently signed and

verified by BiBCode.

Full changelog: v0.4.1...v0.4.2

v0.4.1

Details

BiBCode v0.4.1 is a reliability release for Git/worktree coordination, the

Files surface, provider error reporting, and embedded terminals. It replaces

poll-heavy or ambiguous state with lifecycle-owned observation, keeps UI state

honest across races and failures, and restores the intended Create Worktree

flow.

Source control and worktrees

Replaced per-project branch polling with server-owned, event-driven VCS

observation. Native worktree and Git-metadata watches coalesce bursts, retain

one trailing read, and use a bounded 60–300 second safety read when native

observation is unavailable or misses an event.

Added shared local/full status-read owners with cancellation leases, mutation

epochs, publication fences, deterministic shutdown, and clean reattachment.

A slow remote fetch, provider lookup, or cancelled caller can no longer delay

or publish over newer local state.

Added one automatic-fetch owner per physical repository. Linked worktrees

share the default 180-second fetch, exact remotes are fetched once, failures

use bounded backoff, and `0` still disables automatic fetch.

Added lightweight passive VCS summaries for sidebar state. Fresh local and

provider data publishes independently from pull-request enrichment; a prior

matching PR may be retained for only one stale cycle, and provider failures

no longer make the repository appear clean or unavailable.

Reduced Git work by using one porcelain-v2 status snapshot, running numstat

only for areas that exist, and setting `GIT_OPTIONAL_LOCKS=0` on background

reads. Added native measurement tooling for Git-process rate and foreground

mutation queue latency.

Added bounded, no-follow repository fingerprints so healthy Focus refreshes

can reuse trusted worktree inventory between mandatory five-minute Git

reconciliations. Unknown, changed, malformed, replaced, or over-limit inputs

fail open to a real inventory scan.

Hardened create, publish, retarget, detach, remove, file-write, and stacked Git

mutations so their status/catalog invalidation settles after the actual

filesystem, Git, and durable ownership result—even when the requester

disconnects, cancellation races, or a panic occurs.

Reworked Create Worktree around one permanent Name editor plus optional

Smart/GitHub/Branch sources. Exact local and remote refs no longer appear as a

duplicate result, free local branches enable Reuse branch by default, and

edited names remain stable.

If a selected remote branch becomes local before submission, the server now

reuses that free local branch. A branch already checked out by another

worktree retains the safe suffixed-branch fallback, including concurrent

creation races.

Added strict Bitbucket request/body bounds and exact selected-remote handling

when publishing repositories, including protection against option-shaped

remote names.

Files surface

Added a server-authoritative workspace entry stream and immediate Refresh

action. External file/folder creates, renames, and removals rescan without

collapsing expanded folders; watcher startup now closes the initial-snapshot

race with an explicit resync.

Rebuilt the cached file index from concurrent tracked/ignored Git listings

plus bounded directory walks. Ignored trees and empty directories remain

visible, cold callers share one build, and ordinary warm reads start no Git

work.

Added explicit cache invalidation for create, rename, delete, duplicate, new

parent paths, `.gitignore`, and `.git` classification controls while keeping

ordinary existing-file content saves inexpensive.

Added drag-and-drop moves to folders or the workspace root, correct new-entry

parent selection, open-tab path updates after rename/move, and close-on-delete

behavior.

Failed, cancelled, or availability-raced moves and mutations now roll the

optimistic tree back to server truth instead of leaving duplicated or stale

rows. Refresh failures preserve the existing tree and remain retryable.

Kept every directory as its own row rather than merging single-child folder

chains, so actions and paths always target the directory the user sees.

Providers, delivery, and runtime lifecycle

Added compatible runtime error classes beside provider messages. The UI can

now distinguish a provider-reported failure from a BiBCode transport,

permission, or validation failure without guessing who is at fault.

Preserved provider-native failure details and terminal reasons for Claude,

Codex, Cursor, Grok, and OpenCode. Fixed healthy Codex turns with `error: null`

being reported as failures and mapped documented refusal, output-limit, and

content-filter outcomes truthfully.

Made refused or uncertain delivery visible in the sidebar and thread status,

derived atomically from the durable outbox. Retry, dismissal, or successful

delivery clears it without overwriting provider-session identity or state.

Hardened OpenCode event-stream handling so connection failures, HTTP errors,

clean EOF, chunk failures, and explicit stop all publish their terminal state

and close the provider stream. Supervisors no longer wait forever on a sender

retained by a completed runtime.

Tightened process, logging, provider, VCS, watcher, workspace, and catalog

ownership across shutdown and reattachment so cancellation-ignoring work is

still awaited and cannot publish into a replacement lifecycle.

Terminal and interface fixes

Added a device-local Terminal theme setting: Always dark by default,

Always light, or Follow app theme. Terminal OSC colors and xterm's

extended grayscale palette now match that choice, avoiding dark TUI panels on

an otherwise light terminal.

Fixed resize bursts that could strand Codex or another full-screen TUI at an

intermediate PTY size. Every requested resize is retained and the worker

coalesces only to the newest dimensions.

Fixed center-panel separators disappearing against adjacent surfaces.

Prevented stale sidebar and thread-status updates from overwriting newer

unresolved-delivery, worktree, provider, or availability state.

Data, compatibility, and documentation

Database migrations 44–45 add provider error attribution and unresolved

delivery projection fields. Existing stores upgrade through the normal

verified pre-migration backup path.

Contract additions are additive and older error-class values decode safely as

unknown. No intentional breaking API change is documented.

Expanded living architecture, source-control, workspace, observability, and

cross-platform validation documentation. Added implementation plans and

reference screenshots for the future full Git Manager UI; those planning

documents do not claim that the complete planned Git Manager interface ships

in v0.4.1.

Validation and supported downloads

`vp check`, all 11 `vp run typecheck` targets, 8,266 Vite+ tests, release

smoke, Rust formatting, workspace Clippy with warnings denied, the full Rust

workspace test suite, and the production desktop build passed with Rust

1.97.1.

Packaged macOS interaction was visually verified with Codex Computer Use,

including the single-editor Create Worktree dialog and the checked/unchecked

Reuse branch behavior.

The release pipeline builds and verifies macOS 11+ Apple Silicon and Intel

DMGs, a Linux x64 AppImage, and a Windows 10/11 x64 NSIS installer, together

with signed updater payloads and the four-platform `latest.json` manifest.

macOS builds remain ad-hoc signed and unnotarized; Windows installers remain

without Authenticode. Tauri updater payloads are independently signed and

verified by BiBCode.

Known limitations

External Files changes are detected within seconds rather than instantly;

use Refresh for an immediate rescan. An arbitrary custom Git

`core.excludesFile` also requires manual Refresh after it changes.

The complete Git Manager interface described in the new implementation plans

is future work; this release ships its VCS coordination, summaries,

measurement, and reliability foundations.

Full changelog: v0.4.0...v0.4.1

v0.4.0

Highlights

Added an authoritative worktree catalog that discovers existing Git worktrees, lets users adopt one or all discovered checkouts without recreating them, and preserves physical identity across path aliases and reconnects.

Added explicit recovery and removal flows for missing or present worktrees, including fresh server-side plans, dirty/stale-registration confirmations, durable retry receipts, and identity-safe cleanup on Windows, macOS, and Linux.

Improved local desktop presentation: macOS and Linux now focus on the local environment, Windows keeps truthful WSL location and recovery controls, Cursor is enabled as a supported provider, and legacy Grok actions are hidden.

Improved Activity timestamps and hierarchy while bounding Claude fallback ambiguity so stale or unrelated processes are not presented as controllable activity.

Hardened provider, terminal, logging, persistence, update, and shutdown ownership under parallel load, including bounded OpenCode reaping, isolated native fixtures, and per-runtime process cleanup that preserves sibling desktop runtimes.

Hardened Linux packaging and expanded repeatable native validation across macOS arm64/x64, Linux x64, and Windows x64.

Data and compatibility

Database migrations 40–43 add per-project worktree discovery state, repository identity pins, and durable worktree-removal receipts. Existing stores are migrated through the normal verified pre-migration backup path.

No intentional breaking API change is documented. Older servers that do not advertise worktree-catalog support continue without the new catalog controls.

macOS artifacts remain ad-hoc signed and unnotarized; Windows installers remain unsigned.

Known issues

Native Windows, Linux, and both macOS architectures require their respective release runners for final installer and updater verification.

Full changelog: v0.3.13...v0.4.0