Skip to content

v0.4.0

@mariusvniekerk mariusvniekerk tagged this 14 Oct 12:42
# Forge 0.4.0

## New features

- Connect Bitbucket Cloud and Data Center repositories to Forge for pull requests, reviews, merges, commit statuses, and branch workspaces. Authenticated live operations remain unverified for both products.
- Use Forge's Android app to connect to an existing server, including through Tailscale, with an optional auth token. Phones use the mobile layout, and tablets offer a desktop layout. Release APKs support installation over previous versions. iOS is not built or verified.
- Run ACP agents as rich chats inside Forge on desktop and mobile, locally or on connected execution hosts. Chats show streamed Markdown, tool activity, permissions, plans, images, audio, diffs, and command output. Model and effort settings persist per client and host. Stop and relaunch existing ACP agents after upgrading.
- Keep typing while an ACP agent replies. Enter steers the current turn when supported or queues your message for the next turn. Queues pause after Stop, an error, or a reload until you resume them.
- Paste images into ACP chats with removable previews and send them with or without text. Tool images and Codex `view_image` screenshots appear directly in the conversation, including after reload while their files remain available.
- Answer agent questions through forms that show each option's explanation and preview. Forms use the full chat column, stay still while you answer, and identify missing required answers when you submit.
- Let agents create interactive widgets in ACP chats using cached Forge data. Widgets support refresh, filters, and links, and return after reload. This is a prototype with untested external-host interoperability and incomplete support for third-party MCP Apps.
- Delegate a chat to an outside coordinator, such as a bot connected to a chat tool, while continuing to send messages, answer questions, and stop turns yourself. Forge identifies the coordinator's prompts and offers **End supervision**. Already queued prompts remain queued. Coordinators support active-time limits and do not automatically resend prompts whose delivery is uncertain after a crash.
- Run persistent workspaces on shared Linux devboxes while keeping personal provider credentials on the controller. Choose an assigned devbox in Settings → Workspaces. Git uses temporary, repository-scoped credentials, and Forge checks commit attribution after pushes. The initial integration supports `github.com`.
- Configure devbox service accounts through the organization's GitHub App. These accounts can write to every repository available to the App installation, subject to branch rules.
- Track multiple pull requests, issues, and Kata tasks in one workspace. **Targets**, the workspace's tracked-item list, also remembers PRs and issues you visit through search or links. Targets persist across reloads, highlight the item in view, and offer **Show closed** and removal controls. Kata task changes require a configured or discovered Kata daemon.
- Search PRs and issues across repositories from the workspace toolbar by number or title. Open items appear by default; **Include closed** adds closed and merged items. Selecting a result opens it inside the current workspace.
- Pin frequently used workspaces at the top of the list. Pins persist per browser, show project names, and follow project filters and search.
- Filter workspaces by the author of their linked PR or issue on desktop and mobile, including workspaces on connected hosts.
- Choose Activity's starting filters in Settings or `config.toml`, including item types, event types, notifications, and commit rollup. **Hide drafts** excludes draft PR activity and supports a saved default with a session override.
- Exclude terms from Pulls, Issues, Activity, and Workspaces searches with `!word` or `NOT word`. Use quotes for phrases, such as `!"needs review"`. Activity now matches separate words; quote a phrase to search it as a unit.
- Browse PR stacks as expandable trees through Filters → View → Stack tree. Forge remembers the preference and expands the stack containing the selected PR.
- Run configured quick actions from an existing workspace's launcher or the lightning button in a terminal pane. New sessions open in the pane where you launched them.
- Display external service results and actions beside a PR through configured local CLI adapters. Cards support Markdown details and text inputs for actions such as adding a note or rejecting with a reason. Unsent text survives refreshes and rejected actions.
- Watch attached videos inside descriptions and comments, including private attachments and diff review comments. Forge supports GitHub, GitLab, Gitea, and Forgejo video formats, with playback controls and seeking. Videos load when played and fall back to attachment links if unavailable.
- Page through visible images and Mermaid diagrams in one expanded viewer. Use arrow keys, buttons, or touch swipes to navigate, and drag or pinch to zoom images.
- Change the hourly sync budget in Settings → Sync without restarting Forge. Raising it releases paused work and starts a sync; lowering it below current spending pauses work until the hour resets. Allowed values are 50 through 15,000.
- Enable persistent airplane mode to pause automatic sync while keeping relay updates, item visits, and manual Sync available.
- Connect remote or container-based MCP clients to Forge's main port using the daemon token. The local MCP companion can also share the backend port. Remote MCP access shares the web UI's port.
- Open Forge and MCP through Tailscale Serve using allowed Tailscale identities without a token. Fleet setup supports multiple allowed logins and a configurable HTTPS port, preserving both when rerun.
- Switch between directly connected Fleet machines, Forge servers linked through a hub, with automatic browser sign-in. Switching between sibling spokes falls back to an ordinary link.
- Keep a spoke usable when its hub cannot connect back by setting `outbound_disabled = true` on its hub configuration entry. The spoke retains hub provider access and local workspaces but disappears from hub workspace host selectors.
- Return a revoked spoke to standalone Forge with `fleet leave --config ...` while its daemon is stopped. Its database, identity, workspaces, and session records remain. Configure provider access separately.
- Export cached PRs, issues, reviews, author association, and archive coverage without making provider requests. Use `issue_scope=open` to include unresolved issues of any age and closed issues referenced by open PRs.
- Configure authenticated wildcard listeners through environment settings or `serve --host` and `--port`, without generating a configuration file.

## Improvements

- Return to cached workspaces, terminals, PRs, issues, and Activity immediately while fresh data loads in the background. Startup also serves the saved repository catalog before provider discovery completes.
- Filter large PR and issue lists with less browser blocking. Activity no longer waits for every slow Fleet member, though another host's workspace indicators can lag by one poll.
- Keep Activity fresh across workspace navigation while retaining expanded threads. Author choices load faster and remain selectable during background refreshes.
- Read more content on phones with denser lists, smaller headers, and a compact navigation menu. The Files view keeps controls compact and hides the file tree until you choose **File list**.
- Read PR and issue history with denser timelines, sentence-case labels, and clearer text contrast. Quiet themes use darker reading areas in dark mode and softer slate colors in light mode.
- Open workspaces directly on their sessions instead of a persistent Home tab. Workspace information, including the copyable worktree path, is available from the toolbar. Agent menus are sorted alphabetically, and quick-action agent settings support search.
- See the relevant work when opening the workspace Diff panel. It chooses HEAD for uncommitted edits, Branch for unpushed commits with an upstream, or Target for clean, pushed work. Your selection remains while the panel stays open.
- Inspect per-commit additions and removals in the desktop commit range menu. Counts and timestamps align across rows.
- Resize Actions panes and retain their widths. Recent runs appear in a sortable table, and the repository list supports search and sorting. Relay activity refreshes selected workflow runs and known PR checks.
- Choose ACP chat fonts independently of terminal fonts under Settings → Workspaces → ACP, with a live preview. Thoughts and tool calls share an expandable summary while replies remain visible.
- Clear a stale ACP error with **Dismiss error** without sending another prompt. Startup notices appear as header warnings, and agents without HTTP MCP support remain usable with their own tools.
- Free memory in idle pty-owner workspaces, the backend Windows uses, by setting `[workspaces] idle_runtime_stop_hours`. Opening the workspace resumes saved agent conversations and starts fresh shells. The default `0` disables this behavior.
- Use fewer Windows consoles for agent workspaces. Forge starts unused base terminals when you attach instead of starting every shell after a restart.
- Use less background provider traffic through hourly notification discovery by default, daily checks of dormant open items, and shared notification reads. Forge shows overdue checks when budgets prevent refreshes. Existing explicit notification intervals remain unchanged.
- Keep Forge usable while a PR merges. Confirmation closes immediately, **Merging** shows progress, and failures appear in notifications across navigation.
- Serve supported piped `gh pr list` and numeric `gh pr view` JSON queries from Forge's cached GitHub data with the opt-in GitHub CLI shim. Run it through `kenn-forge gh` or a `gh` link or wrapper. Unsupported queries pass through to the real `gh`.
- Use repositories available to the devbox broker's GitHub App installation without maintaining a second repository list. Upgrade the broker binary and configuration together, removing old `[[repositories]]` sections.
- Keep repository history and links attached through renames and transfers. GitHub, GitLab, Gitea, and Forgejo `platform_repo_id` values now use numbers in configuration, HTTP responses, and MCP. Older configuration values convert automatically. The upgrade detaches workspaces whose repositories never had verified IDs; older workspaces that fail setup after two repository renames need recreation.
- Upgrade Fleet hubs and spokes to the same build, starting with the hub and then restarting each upgraded spoke. Upgrade connected Forge servers before deploying the updated relay.
- Identify the running version, source revision, and modified state through anonymous health responses. Usage reports distinguish browser opens from background servers and measure daily screen use and visible session duration.

## Bug fixes

- Resume workspace agents in their saved conversations after reboots, crashes, and Forge upgrades. Recovery includes Copilot, Cursor, Droid, and Gemini. Claude hooks on Windows require Claude Code 2.1.139 or later and a rerun of `kenn-forge agent-hook install`.
- Keep terminal tabs across Forge restarts so surviving sessions reconnect. Explicit Stop and genuine process exits still close tabs; `KENN_FORGE_DEV_RESTART=0` opts out.
- Give terminals keyboard focus when you open their panel, create a terminal, or split a pane. Cmd/Ctrl-clicking a terminal link no longer sends the click to the remote program.
- Preserve quick-action prompts through slow agent startup and Claude trust dialogs without duplicate delivery. The trust decision remains yours.
- Launch Windows agents when another agent has their context file open, avoiding the previous "Access is denied" failure.
- Reuse approved, unchanged Codex hooks across sibling worktrees, including launches through shell wrappers. Changed hooks and named profiles retain native review.
- Follow force-pushed base branches when creating or reopening Forge-managed workspaces. The previous tip remains recoverable, and checked-out or diverged bases in user checkouts stay untouched.
- Apply current global Git ignore rules each time an agent launches in a managed worktree.
- Complete workspace deletion when its terminal sessions have already exited. Interrupted preparation of a spare checkout no longer leaves sibling worktrees unusable.
- Show queued GitHub check reruns as pending instead of retaining the cancelled attempt's failure. PR conflict status also refreshes after base-branch and relay updates.
- Continue repository sync after a previously open GitHub PR disappears upstream. Empty repositories no longer produce repeated missing-branch warnings.
- Treat exhausted sync and archive request budgets as waits while preserving the last completed result and any earlier failure.
- Show clone and fetch credential failures in sync status. GitHub App-only configurations maintain clones and provide PR diffs without requiring a user write credential.
- Show items matching any selected inclusion filter in Pulls, Issues, and Activity. Repository, search, state, and exclusion filters still constrain the results.
- Preserve saved Settings preferences while writes are pending, and keep local spoke settings readable and editable when the hub is unavailable.
- Report accurate PR titles and states in spoke and ad-hoc workspace rows. Phone workspace badges distinguish merged, closed, draft, and open PRs.
- Keep the Android Brave terminal composer against the keyboard without an empty gap.
- Protect document creation and renaming from overwriting a destination another process creates at the same time.
- Keep opt-in Rust terminal sessions from reporting false exits during output bursts. Stopping a session also stops its background jobs, and reconnecting clients receive replayed and final output in order.
- Include security patches for HTML sanitization, HTTP/2 handling, and container image pulls and builds. These address script injection, resource exhaustion, server crashes, and bypasses of build protections.
Assets 2
Loading