Skip to content

Farming 2.2.1

Choose a tag to compare

@github-actions github-actions released this 05 Jul 08:36

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.md and 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.md and AGENTS.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-token and ~/.farming/settings.json should 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.