Releases: zhuwenzhuang/farming
Release list
Farming 2.2.14
Farming v2.2.14
This is a small follow-up release that fixes a keyboard-focus race and refreshes Farming's public introduction around the default Farming Code experience.
Fixed
- Stable New Agent focus: closing and immediately reopening the New Agent dialog no longer lets a delayed focus-restoration callback move keyboard focus behind the new dialog.
Documentation
- Reworked the README around Farming Code as the default remote web workspace, with a direct setup path and updated desktop, Files, mobile Chat, Agent activity, and optional CRT screenshots.
- Updated the repository description to state the remote-web-workbench role directly while keeping CRT as an optional interface.
Maintenance
- Split the unchanged Chromium browser suite across six isolated CI shards.
- Removed a documentation-wording assertion from the terminal renderer test and made focus, transcript-scroll, and layout checks deterministic without weakening their product behavior assertions.
Verification
- TypeScript typecheck, ESLint, and 184 backend/source-contract tests
- 172 Chromium cases across six isolated shards, with no retries or flaky results in the release baseline
/farmingproduction build and release-workflow package smoke tests
Upgrade
npm install --global farming-code@2.2.14 && farming daemonFarming 2.2.13
Farming v2.2.13
This release makes Farming CRT's structured Chat substantially easier to read while preserving its keyboard-first control-room character. It also fixes Main Agent recovery and focus edges, hardens stale terminal-link handling, and refreshes the public README with the CRT Billing control room.
Highlights
- Safe Markdown in CRT Chat: Agent replies now render GitHub Flavored Markdown, syntax-highlighted code, KaTeX formulas, and lazily loaded Mermaid diagrams. Raw HTML stays disabled, unsafe links are stripped, and invalid diagrams retain their source in a bounded error state.
- More readable CRT typography: structured Chat, controls, metadata, and Agent previews use a tighter shared type scale. Code keeps useful syntax colors, while preview text drops the phosphor blur that reduced clarity.
- Reliable Main Agent entry: starting Main Agent reclaims an already-running Main process if its authoritative id was temporarily lost. Opening Main Agent after another session now keeps terminal input focused after the initial authoritative screen checkpoint settles, without stealing focus from a control the user already selected.
- Safer terminal links and deterministic browser coverage: delayed terminal-link activations are fenced to the session that created them, and browser checks use more stable contracts for files, navigation, display flows, and focus recovery.
- CRT control-room showcase: the README now leads with the current CRT Billing view as the public product image.
Verification
- Backend and source-contract test suite
- TypeScript typecheck and ESLint
- Focused Chromium coverage for CRT Markdown, KaTeX, Mermaid, and Main Agent focus recovery
/farmingproduction build
Upgrade
npm install --global farming-code@2.2.13 && farming daemonFarming 2.2.12
Farming v2.2.12
This release makes Farming Code's project navigation, workspace selection, Chat composer, Project Files, and local token activity easier to read and operate. It also completes several project and Codex lifecycle actions, adds an installable app-mode guide, and refreshes the public product tour.
Highlights
- Ordered pinned Projects and complete Project actions: pin or unpin Projects from the
...menu, keep multiple pins in the order they were added, reveal a Project in the host file manager, create a permanent Git worktree, rename it, mark its Agents read, archive its chats, remove it from Farming, or delete an eligible worktree through the explicit destructive flow. - Independent Agent visibility per Project: a compact eye control on each Project row hides or restores only that Project's Agent list. Files remain available, and the Project title and actions keep a stable aligned baseline.
- In-place workspace directory tree: New Agent's host-backed directory picker now expands nested directories lazily in place instead of replacing the current level. Parent and sibling context remain visible while selecting a deep workspace, including from a remote browser.
- More useful local token activity: Usage opens into larger 24-hour and 52-week views with compact token totals, exact hourly labels, a selected-day readout, current-versus-previous seven-day analysis, peak-day emphasis, and an hourly histogram aggregated by Agent type. The peak day uses a crown silhouette and days above one billion tokens use a flame silhouette without losing heat intensity.
- Consistent Chat and Terminal composer controls: both runtimes expose the same edge-hover collapse and restore action. Collapsing hides only the input surface, preserves unsent drafts, and keeps the active transcript or Terminal visible. Chat spacing and copy controls are tightened so the latest result stays closer to the Composer.
- Clearer Project Files and lightweight editing: Files, Changes, Untracked, History, and tree rows share one compact typography and spacing rhythm. Markdown links retain the source Agent return path, and JavaScript/TypeScript editing enables syntax diagnostics without pretending to provide a full project typecheck.
- Bounded History and explicit Codex archive behavior: History uses stable pages and loads older provider sessions only at a page boundary. Archiving a live Codex Agent completes Farming's local lifecycle first and then invokes the provider archive operation for the stable session, reporting provider failure without reviving the Agent.
- Installable desktop app guidance: Farming Code exposes an app/fullscreen entry with Chrome installation guidance for a standalone window. Installed launches use the clean base-path URL and the existing authentication cookie instead of persisting the startup token in the launch URL.
- Refreshed product tour and responsive layout: the public Code and CRT screenshots now match the current interface, interface-switching instructions are explicit, transcript typography is more consistent, and wide or narrow layouts preserve stable alignment instead of introducing empty gutters.
- More deterministic browser coverage: browser tests now target stable semantic or test-id contracts for project actions, terminal links, context menus, files, Chat continuity, workspace selection, Usage, and platform-specific rendering.
Verification
- 184 backend and source-contract tests
- TypeScript typecheck and ESLint
- Focused Chromium Playwright coverage for Project actions, workspace directory expansion, Chat spacing, Project Files, editor diagnostics, Agent return, and Usage activity
- Real Codex cross-skin release gate across Code Terminal, ACP Chat, CRT, model controls, and resize recovery
- Deterministic Terminal input gate with key-to-PTY-output p95 within the 250 ms release limit
/farmingproduction build and Mac browser smoke- npm package global-install, daemon-start, auth-status, and native
node-ptysmoke - Native macOS CLI and standalone app-bundle verification and startup smoke
- Remote Linux token-auth and native PTY smoke with process cleanup checks
- Textual outgoing-history scan for private paths, internal links, tokens, and key material
Compatibility Note
- The macOS CLI artifact is ad-hoc signed, not Developer ID signed or notarized. Depending on local security settings, the first launch may require an explicit manual allow action before rerunning the CLI.
Upgrade
npm install --global farming-code@2.2.12 && farming daemonFarming 2.2.11
Farming v2.2.11
This release adds Farming Net as a separate deployment portal, brings a VS Code-derived Git history workflow into Project Files, makes live Agent controls follow the active runtime more faithfully, and strengthens runtime boundaries, Farming CRT, updates, remote deployment, and release packaging.
Highlights
- Farming Net deployment portal: run an independent, token-protected directory for local, remote, intranet, and tunneled Farming instances. Enrolled targets exchange short-lived, target-bound, one-time Ed25519 passes for their own normal cookies; the portal does not store or expose target tokens.
- Git history inside Project Files: inspect a bounded commit graph with branches, tags, merge parents, changed files, and working-copy state, then open a commit or local changes in Review with the correct captured revision. Project removal remains a membership action rather than a filesystem deletion and now has a clear remove icon.
- Explicit runtime and workspace boundaries: browser state uses tagged runtime bindings and backend-owned runtime observations, provider-specific planning stays behind provider adapters, routine terminal metadata uses narrow per-Agent patches, and Project Files keep their persisted workspace identity independently of live Agent hydration.
- Confirmed workspace creation: when a requested workspace directory is missing, New Agent presents the exact path and requires explicit confirmation before creating it and launching the Agent.
- Truthful live Agent controls: Codex Terminal model, reasoning, Fast, and Ultra controls follow the active CLI footer and capability catalog rather than global launch defaults. Supported changes settle before the next Composer message, while runtimes without a verified live-profile adapter hide current-session controls.
- More coherent ACP workflows: structured Chat keeps ordered transcript details across history and live updates, handles queued input and child Agent interactions more safely, preserves visible results around failures and authentication, and keeps runtime switching tied to the same provider session.
- A stronger keyboard-first CRT surface: Code and CRT switch the same live Agent, global close/kill/runtime commands follow a consistent keyboard contract, dashboard cards show compact terminal or structured-Chat activity, and dead or archived Agents no longer occupy live grid slots. When only the Main Agent is running, the dashboard restores the centered, actionable
[N] New Agentempty state instead of leaving the main screen blank. - Safer updates and remote deployment: update settings use a compact explicit flow, source deployment validates remote health before reporting success, records matching server-control metadata, and can launch through a configured glibc 2.28 runtime on older Linux hosts.
- Complete runtime packaging: both the npm package and standalone app bundles now include the shared browser protocol used by the server. Package-contract, bundle-verification, install, and startup smoke tests prevent incomplete artifacts from being published.
- Portable cross-architecture CLI packaging: Linux release builders retain plain JavaScript source whenever target-architecture V8 bytecode cannot be generated, while still rejecting any artifact that contains neither executable bytecode nor source.
- Reliable legacy Linux launch commands: app bundles now resolve the absolute Node.js executable before invoking it through the glibc 2.28 loader, so CLI commands such as
url,status, and agent operations work on older hosts instead of being treated as shared-library names. - Instant, provable Terminal recovery: the native PTY host now checkpoints its authoritative headless-xterm state with a runtime epoch and exact output index. Returning from a long-hidden page installs one current screen instead of visibly chasing old TUI redraws;
/session-viewis no longer polled, duplicates are ignored, and gaps or runtime changes recover through one authoritative checkpoint. Transport failures back off, while a repeatedly invalid checkpoint stops visibly instead of retrying forever.
Verification
- 182 backend and source-contract tests
- TypeScript typecheck and ESLint
- Focused Chromium Playwright coverage for Project removal and the Main-Agent-only CRT empty state
- Real Codex cross-skin release gate: one provider session preserved across Code Terminal, ACP Chat, CRT, MSG, model changes, and resize recovery
- Deterministic Terminal input gate with key-to-PTY-output p95 within the 250 ms release limit
/farmingproduction build- npm package smoke test: global install, daemon startup, HTTP auth-status check, and native
node-ptyload - Standalone app-bundle verification and startup smoke, including the shared browser protocol runtime dependency
- Package-content comparison against
farming-code@2.2.8: no top-level package area was removed, and all new Farming Net backend and frontend files are present - Textual outgoing-history scan for private paths, internal links, tokens, and key material
Compatibility Note
- The macOS CLI artifact is ad-hoc signed, not Developer ID signed or notarized. Depending on local security settings, the first launch may require an explicit manual allow action before rerunning the CLI.
Upgrade
npm install --global farming-code@2.2.11 && farming daemonFarming 2.2.8
Farming v2.2.8
This patch keeps structured Chat live when its browser page is in the background, makes fresh OpenCode ACP launches more reliable, and includes the latest model-control and product-guide polish from the main branch.
Highlights
- Chat continues while the page is hidden: Farming Code keeps its shared backend WebSocket alive instead of deliberately closing it on
visibilitychange. ACP transcript revisions and terminal output continue to arrive in a background tab, and returning to the page no longer creates a false disconnected/reconnecting state. Nonessential usage, context, session-id, and relative-time polling still pauses while hidden. - Fresh OpenCode sessions stay on ACP Chat: a newly launched OpenCode Agent no longer falls back to Terminal merely because its provider session id has not materialized yet. The existing resumable-session guard remains in place after Terminal input, so an established conversation cannot be discarded silently.
- Smoother live model controls: the compact model matrix and Advanced controls now remain mounted during their height/cross-fade transition, preserve the current selection, and avoid replaying the Ultra rocker animation after ordinary model or reasoning changes. Activating Ultra changes the charged rail and rocker to a restrained purple glow, then adds a short landing vibration after the automatic drop. Terminal Codex uses the same capability-aware matrix and queues supported live profile changes before the next prompt.
- Current product guides and screenshots: the README and Farming Code / CRT guides now present the two interfaces, supported Agent paths, Review, model controls, mobile use, and current product screenshots more directly.
Verification
- 145 backend and source-contract tests
- TypeScript typecheck and ESLint
- Focused Playwright coverage for hidden-page ACP continuity, fresh OpenCode ACP launch, and ACP / Terminal model controls
- Headed Chrome lifecycle freeze/resume verification: the ACP turn completed, the shared WebSocket stayed open, and the answer returned without a reconnect banner
/farmingproduction build and packed npm smoke test
Upgrade
npm install --global farming-code@2.2.8 && farming daemonFarming 2.2.7
Farming v2.2.7
This release makes model and runtime controls more faithful across Farming Code and Farming CRT, fixes History search for older provider sessions, and hardens packaged startup and npm updates.
Highlights
- History now searches the full provider archive: Farming Code sends non-empty History queries to the bounded backend session search instead of filtering only the first loaded page. Older Codex, Claude Code, OpenCode, and Qoder sessions can therefore be found without manually loading every page. Search results retain Farming's claimed-session and main-page filtering, merge with loaded rows by provider identity, and keep the freshest metadata.
- One intentional search clear control: History and global Search use text inputs with searchbox semantics, so Chromium no longer adds a second native clear button beside Farming's accessible clear action.
- Live model matrix controls: Codex and Claude sessions expose provider-aware model, reasoning, and speed choices in a compact matrix. ACP applies related configuration atomically; native Codex terminals apply supported
/modeland/fastchoices before the queued prompt. - Safer runtime switching: fresh Codex and Qoder sessions can move into structured ACP before provider history is materialized, while sessions that have received terminal input still require a resumable provider record. Failed switches preserve or restore the original runtime and report actionable errors.
- More complete CRT telemetry and transcripts: selected billing totals now show both exact and compact
K/M/Bvalues, and CRT can render canonical structured transcript entries when the legacy turn projection is unavailable. - Stronger packaged startup and updates: daemon startup now includes a short liveness-stability check and cleans stale state after an early exit. npm update helpers run from a stable configuration directory, strip inherited server-mode flags, and preserve bundled loader invocation where required.
Verification
- TypeScript typecheck and ESLint
- 145 backend and source-contract tests
- Farming Code and CRT Playwright coverage, including the model matrix and History flows
/farmingproduction build- npm package smoke test
Farming 2.2.6
Farming v2.2.6
This release advances Farming from a single workspace view into a more complete multi-Agent development environment. It strengthens the Farming Code review and file workflows, adds an independent live Farming CRT skin over the same backend sessions, expands Coding Agent runtime support, and hardens session recovery, updates, packaging, and release verification.
Highlights
- Two live UI skins over one runtime: Farming Code remains the default at
/code/, while/crt/provides a keyboard-first multi-terminal view. Both skins observe and control the same backend Agents without duplicating processes. - Farming CRT is now a complete working surface: it includes live terminal previews, xterm sessions, New Agent, recent workspaces, History, keyboard navigation, unread state, configurable terminal text size, CRT effects, and a return path to Farming Code.
- File workflows are substantially deeper, with a first-class Review surface: Project Files, Changes, Open Editors, search, preview, diff, and blame are product workflows; the standalone
/reviewroute now provides immutable comparisons, inline comments, reviewed state, preferences, patchsets, and ACP historical-change capture. - Agent runtimes are broader and more truthful: Codex, Claude Code, OpenCode, Qoder, Qwen Code, Aider, GitHub Copilot CLI, Amazon Q, bash, and zsh use provider-aware launch behavior, environment isolation, and stable metadata where supported.
- Codex runtime selection is explicit: the normal CLI path remains the default, while the experimental App Server path is isolated per Agent Home and covered by transcript, request, permission, and recovery checks.
- Structured Chat now uses ACP: Codex, Claude Code, OpenCode, and Qoder can switch between Chat and Terminal while preserving the provider session, with native permissions, session controls, image prompts, queued follow-ups, embedded interactive terminals, and independently controllable child sessions.
- Sessions survive frontend and server churn more reliably: native PTY hosting, persisted Farming session ids, provider-session correlation, terminal screen restoration, and reconnect behavior were hardened.
- Install and update paths are release-aware: npm installs can use the in-app updater, source checkouts remain Git-based, and standalone CLI/app bundles carry checksums and manifests.
- Mobile and terminal interaction received a broad pass: compact workspace layouts, composer behavior, terminal sizing/input, Chinese IME, links, share QR, and narrow-screen file/review flows were tightened.
Farming CRT
- Added an independent CRT entry with a cool-retro-terminal-inspired monochrome green visual system, mixed-language readable terminal fonts, lightweight scan effects, and GPU-friendly static texture layers.
- Added keyboard-first dashboard, New Agent, Settings, and History flows, including boundary wrapping on the dashboard and New Agent chooser.
- New Agents become the active keyboard selection after the backend confirms creation.
- Added adaptive History pagination, provider names, supported-Coding-Agent filtering, restore/resume/open actions, and stable reverse-video selection.
- Added configurable opened-terminal text size from 10 to 20 px with immediate persistence.
- Added live ANSI-colored terminal previews, working-state blink, unread framing, stable card sizing, optional Dynamic Heat, and richer project/task titles.
- Standardized opened sessions on xterm.js; Ghostty Web remains an explicit debug override.
- Added Farming Code as a UI Theme destination so users can return without changing backend sessions.
- Added ACP Chat controls, queued follow-up messages, native image prompts, runtime switching with
Alt+M, and reliable Composer focus recovery after interruption. - Expanded Billing into token telemetry rather than monetary invoicing: a logarithmic 120-day chart and 52-week activity strip show cache and non-cache usage, while a selected day reveals hourly activity and provider attribution without rescanning provider history.
- Stabilized the dashboard as reserved
2 x 2,3 x 2, and3 x 3Agent bays, refreshed available Agent choices when New Agent opens, clarified terminal close shortcuts, and added a dedicated Farming CRT browser icon.
Farming Code, Review, and Files
- Expanded project-scoped Files with search, Changes, Open Editors, text editing, Markdown preview, diff, blame, create/rename/delete/move, and bounded watching.
- Promoted Review from a demo route to the standalone
/reviewproduct surface, with immutable revisions, file lists, patchsets, inline comments, reviewed state, preferences, snapshots, and isolated lazy-loaded styling. Review diffs include character-level ranges, missing-final-newline notices, incremental context expansion above, below, or across a complete gap, and exact historical ACP patch capture. - Improved workspace navigation, recent workspaces, path suggestions, project naming, file reveal, sticky context, and mobile sidebar behavior. Delayed reveal and focus work now respects a directory the user just closed and does not steal focus back from a file context menu.
- Improved agent hover details, launch icons, dark/light icon variants, provider grouping, shell labeling, and runtime/profile controls.
- Tightened Codex transcript sanitization, App Server message handling, goal controls, permission switching, and terminal/chat fallback behavior. ACP Chat now reads revision-based transcript deltas, presents progress updates and grouped actions as a compact timeline, renders client terminals through embedded xterm sessions, supports child-session preview/stop and child elicitation, loads large tool details on demand, and preserves explicit interruption state.
- Added cursor-based Agent session pagination, server-backed title/project search across provider history, an in-page History filter, a shared 15-second search timeout, and stable inline file rename focus and basename selection.
Runtime and Reliability
- Moved interactive Agent ownership to the native PTY host by default, with restart recovery and idle cleanup outside the Farming server process.
- Added stable
fsess_*Farming session ids and separated runtime ids from provider correlation fields. - Hardened shell environment resolution, login-shell profiles, prompt ownership, OSC busy/cwd markers, terminal status, resizing, screen replay, cursor isolation, and link handling. New Agent discovery and launch now use the latest login-shell
PATH, and terminal replay preserves hidden-cursor state used by TUIs. - Restricted run History to explicitly supported Coding Agents; bash, zsh, and unknown commands do not enter the archive.
- Added Agent Home metadata and per-Agent Codex App Server runtime isolation.
- Runtime switches are rejected while an Agent turn is active; if the target runtime cannot start, Farming restores the original runtime and provider session before reporting the failure.
- Improved update rollback, install-type detection, release manifests, checksums, package validation, and Linux compatibility packaging.
Release and Compatibility Notes
- Package version, lockfile version, release notes, and Git tag must all remain
2.2.6/v2.2.6. - Existing
~/.farming/.session-token, settings, sessions, and history are reused and normalized automatically; no manual migration is expected. - Standard app bundles use the target system's Node.js and native runtime. The separate Linux x64 legacy bundle includes a pinned glibc 2.28 runtime and activates it only when the host glibc is older than 2.28; Node.js 22 is still required.
- macOS CLI artifacts are ad-hoc signed, not Developer ID signed or notarized. Some systems may require a one-time manual allow action.
- GitHub Release notes for this version come from this file.
Install / Upgrade
Install from npm:
npm install -g farming-code@2.2.6
farmingOr download the matching GitHub Release asset:
| Platform | CLI | App bundle |
|---|---|---|
| macOS Apple Silicon | farming_2.2.6_darwin_arm64 |
farming-2.2.6-darwin-arm64.tar.gz |
| macOS Intel | farming_2.2.6_darwin_amd64 |
farming-2.2.6-darwin-x64.tar.gz |
| Linux x64 | farming_2.2.6_linux_amd64 |
farming-2.2.6-linux-x64.tar.gz |
| Legacy Linux x64 (glibc < 2.28) | — | farming-2.2.6-linux-x64-legacy-glibc228.tar.gz |
| Linux ARM64 | farming_2.2.6_linux_arm64 |
— |
Use farming_2.2.6_checksums.txt and manifest.json to verify downloaded assets.
Farming 2.2.5
Farming v2.2.5
This release continues the Farming Code polish after v2.2.2, focused on project/file navigation stability, mobile reading/composer details, terminal behavior, agent launch settings, and the public README.
Compared with v2.2.2, Farming Code now keeps Open Editors visible while the file tree is scrolled or auto-revealed, adds a capped Open Editors list for larger review sessions, improves mobile Markdown reading and compact sidebar labeling, tightens terminal and shell state handling, and updates the README screenshot and feature summary to match the current product.
Highlights
- Open Editors stays usable while browsing Files: Open Editors now keeps up to seven rows visible and scrolls internally after that, so file-tree reveal operations do not push it out of view.
- File navigation is closer to VS Code: file-tree reveal now accounts for project rows, agent rows, Open Editors, Files headers, and sticky folder context before scrolling.
- Project Files review is easier to scan: the sidebar includes lightweight Changes, Open Editors, file search, previews, diff, and blame in one project-scoped flow.
- Mobile reading wastes less space: Markdown preview mode on phones now removes the extra bottom padding used by composer surfaces, leaving more room for the document itself.
- Narrow sidebars keep the brand readable: the footer product label falls back from
Farming CodetoFarmingwhen the available width is too small. - Terminal and shell state are steadier: shell environment resolution, terminal busy state, prompt handling, active-state detection, and terminal link behavior were tightened.
- Agent launch controls are clearer: provider-specific Codex / Claude controls only surface options Farming can pass through to the underlying CLI.
- README is current again: the main workspace screenshot was replaced and the user-facing feature list now mentions Open Editors, Changes, provider controls, preview support, and usage/context signals.
Fixes
- Fixed Open Editors disappearing when a deep file-tree row was selected or auto-revealed.
- Fixed Open Editors overflowing long lists instead of keeping a bounded internal scroll area.
- Fixed file reveal calculations that treated the whole project sidebar as visible even when sticky project/file sections covered the top.
- Fixed excessive blank space below Markdown previews on mobile reading screens.
- Fixed the footer product label truncating as
Farming C...in narrow sidebars. - Fixed several terminal state edge cases around shell activity, prompt preservation, and link targets.
- Fixed workspace/file interaction details around changes, preview, diff, tabs, and keyboard navigation.
- Fixed README drift from the current Farming Code interface.
Features and Improvements
- Added a seven-row Open Editors cap with internal scrolling and active-editor reveal.
- Added Playwright coverage for large Open Editors lists plus deep file reveal.
- Added mobile Playwright coverage for Markdown reading bottom spacing and composer recording state.
- Added sidebar coverage for the compact
Farmingfooter label. - Updated Project Files sticky context behavior to include Open Editors in the visible file-tree boundary.
- Improved Code workspace desktop and mobile shell behavior from the post-
v2.2.2polishing commits. - Updated the README and README.zh_cn feature summaries.
- Replaced the README workspace screenshot with the current Farming Code view.
Change Map
src/components/files/OpenEditorsSection.tsx,src/components/files/ProjectFilesSection.tsx,src/components/files/useWorkspaceFileFocus.ts,src/components/files/useWorkspaceFileStickyContext.ts,src/styles/main.css: Open Editors visibility, sizing, and file reveal behavior.tests/e2e/display-flows.spec.ts,backend/tests/test-project-files-section.js: focused coverage for Open Editors and project file layout.src/components/CodeWorkspace.tsx,src/components/code/*,src/components/files/*,src/lib/workspace-*: accumulated Farming Code workspace, mobile layout, and Project Files polish.tests/e2e/additional-user-scenarios.spec.ts,tests/e2e/iphone-mobile-layout.spec.ts: compact footer label and mobile Markdown reading coverage.backend/agent-env.js,backend/agent-manager.js,backend/*session-engine*.js,backend/shell-busy-integration.js,backend/terminal-status.js: agent environment, terminal state, and native PTY lifecycle improvements.README.md,README.zh_cn.md,docs/products/code/assets/01-code-workspace.png: public README refresh.
Notes
- GitHub Release notes for this version come from
release-notes/v2.2.5.md. - The package version, Git tag
v2.2.5, and release note filename must stay aligned. - No manual configuration migration is expected.
- Existing
~/.farming/.session-tokenand~/.farming/settings.jsonshould continue to be reused across upgrades. - No intentional production dependency, native PTY asset, runtime file, or install script removal is part of this release.
- macOS CLI artifacts are still ad-hoc signed in this release. Depending on local security settings, the first run may require a manual allow step before the packaged smoke or normal launch succeeds. Developer ID signing and notarization remain follow-up release hardening work.
Install / Upgrade
Download the matching asset from GitHub Releases:
| Platform | Asset |
|---|---|
| macOS Apple Silicon | farming_2.2.5_darwin_arm64 |
| macOS Intel | farming_2.2.5_darwin_amd64 |
| Linux x64 | farming_2.2.5_linux_amd64 or farming-2.2.5.tar.gz |
| Linux ARM64 | farming_2.2.5_linux_arm64 |
On older Linux hosts that need the bundled Node modules and glibc runtime, prefer the app bundle tarball: farming-2.2.5.tar.gz.
On macOS, if the downloaded CLI is blocked on first launch, allow it once in the system security prompt/settings, then rerun the command.
Farming 2.2.2
Farming v2.2.2
This release continues the Farming Code polish after v2.2.1, with a focus on safer poetic startup tokens, workspace/file interaction refinements, QR sharing, and shell prompt preservation.
Compared with v2.2.1, Farming now generates Chinese, Japan-inspired, and India/Tagore-inspired 5-7-5 startup tokens from larger source-specific corpora while keeping conservative entropy checks. The release also includes editor state fixes, QR share popovers, improved workspace launch controls, and shell prompt handling improvements.
Highlights
- Poetic startup tokens are safer and more source-aware: Chinese, Japanese, and India/Tagore token modes now use generated source wordlists with quality scores, source anchors, conservative entropy checks, and reduced cross-source marker leakage.
- Token quality is measurable:
scripts/evaluate-poetic-tokens.jssamples generated tokens, checks entropy, 5-7-5 shape, uniqueness, source marker coverage, and repeated strong imagery. - Workspace launch is smoother: Farming Code has a richer new-agent launch submenu and larger workspace/path suggestion coverage.
- Editor state survives common file operations better: open editor state and working copies are preserved more consistently across save, navigation, and project file interactions.
- QR sharing is easier to use: share tickets can be surfaced through a QR popover with clearer copy handling.
- Shell prompts are preserved more carefully: shell busy integration avoids clobbering user prompt setup in interactive shells.
- Packaged terminal startup is safer: packaged CLI releases now start the native PTY host through a minimal environment and avoid logging the parent process environment while launching terminals.
Fixes
- Fixed India/Tagore-style marker words such as
心花,心弦,爱人, and诗歌leaking into Chinese or Japanese token openings. - Fixed feeling-oriented words being treated as generic landscape imagery in generated poetic tokens.
- Fixed dead source-specific token templates that reduced entropy and reintroduced noisy words when enabled experimentally.
- Fixed editor working-copy state around save and tab navigation.
- Fixed shell prompt initialization so Farming's shell hooks preserve the user's prompt setup.
- Fixed packaged CLI native PTY host startup on macOS, where the packaged binary could treat the old host-mode argument as a module path.
Features and Improvements
- Added generated poetic source wordlists for China, Japan-inspired, and India/Tagore-inspired token modes.
- Added source word quality metadata and extraction heuristics to
scripts/generate-poem-wordlists.js. - Added
scripts/evaluate-poetic-tokens.jsas a release/diagnostic quality gate for poetic tokens. - Added QR share ticket backend and UI coverage.
- Added focused workspace/file interaction and path suggestion tests.
Change Map
backend/haiku-token.js,backend/data/poetic-word-sources/*: source-aware poetic token generation and entropy accounting.scripts/generate-poem-wordlists.js,scripts/evaluate-poetic-tokens.js: corpus extraction and token quality evaluation.backend/tests/test-haiku-token.js,backend/tests/test-auth-token-file.js: token format, source marker, and entropy coverage.src/components/code/ShareQrButton.tsx,backend/qr-share-tickets.js: QR share ticket flow.src/components/files/*,src/lib/workspace-*,backend/workspace-file-service.js: workspace file/editor state refinements.backend/shell-busy-integration.js,backend/local-session-engine.js: shell prompt preservation.backend/native-pty-host-client.js: packaged native PTY host launch hardening.
Notes
- GitHub Release notes for this version come from
release-notes/v2.2.2.md. - The package version, Git tag
v2.2.2, and release note filename must stay aligned. - No manual configuration migration is expected.
- Existing
~/.farming/.session-tokenand~/.farming/settings.jsonshould continue to be reused across upgrades. - No intentional production dependency, native PTY asset, runtime file, or install script removal is part of this release.
- macOS CLI artifacts are still ad-hoc signed in this release. Depending on local security settings, the first run may require a manual allow step before the packaged smoke or normal launch succeeds. Developer ID signing and notarization remain follow-up release hardening work.
Install / Upgrade
Download the matching asset from GitHub Releases:
| Platform | Asset |
|---|---|
| macOS Apple Silicon | farming_2.2.2_darwin_arm64 |
| macOS Intel | farming_2.2.2_darwin_amd64 |
| Linux x64 | farming_2.2.2_linux_amd64 or farming-2.2.2.tar.gz |
| Linux ARM64 | farming_2.2.2_linux_arm64 |
On older Linux hosts that need the bundled Node modules and glibc runtime, prefer the app bundle tarball: farming-2.2.2.tar.gz.
On macOS, if the downloaded CLI is blocked on first launch, allow it once in the system security prompt/settings, then rerun the command.
Farming 2.2.1
Farming v2.2.1
This is a stability and release-readiness patch after v2.2.0, focused on the Farming Code terminal path, agent lifecycle cleanup, hidden-tab resource use, workspace picking, and the release process itself.
Compared with v2.2.0, this release makes native PTY recovery and archive behavior less likely to leave invisible sessions behind, keeps the main Projects page membership in sync when agents are archived, reduces background browser work from hidden tabs, and adds a repository-tracked release note gate for future GitHub releases.
Highlights
- Terminal lifecycle cleanup is stricter: unrecovered shell sessions are killed during native PTY recovery instead of being left in the native host with no visible agent row.
- Archive and main-page session membership are aligned: archiving a recoverable Codex / Claude agent removes its provider session from
mainPageSessionKeys, so a restart does not silently restore something the user moved out of the live page. - Background browser work is reduced: hidden Farming tabs close their WebSocket, stop heartbeat-style polling, pause context-window refreshes, and pause parked terminal resize observers.
- Terminal repaint behavior is cleaner while switching agents: detached terminal views keep state without continuing unnecessary resize work, and unobserved output marks the terminal unread without forcing redundant visible renders.
- New Agent workspace picking handles large directory lists: path suggestions now allow more matches, scroll within the dialog, and keep keyboard navigation usable.
- Release process is now repository-tracked: the release workflow requires
release-notes/vX.Y.Z.mdand publishes GitHub Release notes from that file instead of a generic inline sentence. - Packaged CLI startup smoke is less flaky: daemon startup now waits longer for the packaged server to finish cold-start extraction and create its token file.
Fixes
- Fixed recovered shell sessions accumulating in the native PTY host after server restarts.
- Fixed archived provider-backed agents remaining in main-page membership and being auto-resumed later.
- Fixed the frontend archive path so removed main-page provider session keys are applied immediately.
- Fixed hidden tabs continuing WebSocket and periodic fetch work while not visible.
- Fixed parked terminals continuing to observe resize events after being detached from the visible pane.
- Fixed New Agent workspace path suggestions being capped too low and visually clipped when many directories match.
- Fixed active-turn agent rows showing redundant age labels while they already have a live status indicator.
- Fixed generic terminal-derived titles by stripping leading status glyph noise before showing them as agent row titles.
- Fixed packaged CLI release smoke occasionally failing during cold start because the daemon ready timeout was too short.
Features and Improvements
- Added recovery cleanup coverage for native PTY shell sessions.
- Added archive/history coverage for provider-backed agents and ephemeral shell agents.
- Added a focused Playwright check for scrollable workspace path suggestions.
- Added pre-release gates to
AGENTS.mdandAGENTS.zh_cn.md, covering version alignment, local and remote dogfood smoke, packaged dependency checks, release notes, and GitHub publication checks. - Updated the GitHub Release workflow to fail if the matching release note file is missing.
Change Map
backend/agent-manager.js: native PTY recovery cleanup and provider-session membership removal during archive.src/hooks/useWebSocket.ts,src/hooks/usePageVisibility.ts,src/App.tsx,src/components/CodeWorkspace.tsx: visible-page gating for WebSocket and polling work.src/lib/terminal-session-pool.ts,src/lib/terminal-output.ts: parked terminal resize and unobserved-output render handling.backend/server.js,src/components/InputDialog.tsx,src/styles/main.css: larger and scrollable workspace path suggestions..github/workflows/release.yml,release-notes/v2.2.1.md: release notes are now part of the tagged source tree.backend/farming-app-cli.js: packaged daemon startup timeout is now configurable and defaults to a wider release-smoke-friendly window.
Notes
- GitHub Release notes for this version come from
release-notes/v2.2.1.md. - The package version, Git tag
v2.2.1, and release note filename must stay aligned. - No manual configuration migration is expected.
- Existing
~/.farming/.session-tokenand~/.farming/settings.jsonshould continue to be reused across upgrades. - No intentional production dependency, native PTY asset, runtime file, or install script removal is part of this release.
- macOS CLI artifacts are still ad-hoc signed in this release. Depending on local security tooling, the first run may require a manual allow step before the packaged smoke or normal launch succeeds. Developer ID signing and notarization remain follow-up release hardening work.
- Before publishing the tag, this release should pass fast source checks, focused Playwright coverage, a local Mac browser smoke, remote Linux dogfood smoke, and built-artifact smoke.
Install / Upgrade
Download the matching asset from GitHub Releases:
| Platform | Asset |
|---|---|
| macOS Apple Silicon | farming_2.2.1_darwin_arm64 |
| macOS Intel | farming_2.2.1_darwin_amd64 |
| Linux x64 | farming_2.2.1_linux_amd64 or farming-2.2.1.tar.gz |
| Linux ARM64 | farming_2.2.1_linux_arm64 |
On older Linux hosts that need the bundled Node modules and glibc runtime, prefer the app bundle tarball: farming-2.2.1.tar.gz.
On macOS, if the downloaded CLI is blocked on first launch, allow it once in the system security prompt/settings, then rerun the command.