docs: finalize release docs

This commit is contained in:
Ogulcan Celik 2026-05-29 21:35:16 +03:00
parent 8c6a9e1f65
commit faaddfe18d
9 changed files with 194 additions and 6 deletions

View File

@ -0,0 +1,20 @@
---
name: herdr-pre-release-audit
description: Audit herdr release readiness by comparing commits since the base release against next-release changelog and docs. Use when asked to run or apply the repo's pre-release audit, validate docs/next before release, inspect issue refs that release CI will close, or finalize release docs for herdr.
---
# Herdr Pre-release Audit
Use this skill only inside the herdr repository.
Read `references/pre-release-audit.md` and follow its workflow. Treat it as the source of truth for:
- choosing the release base ref
- inspecting first-parent history and merged PRs
- auditing `docs/next/CHANGELOG.md`
- auditing `docs/next/README.md` and staged website docs
- checking issue reference lines
- deciding when to run `just release-docs-check`
- producing the final release-readiness report
Do not edit files during the audit unless the user explicitly asks to apply fixes. When applying fixes, keep changes scoped to the files named in the reference workflow.

View File

@ -0,0 +1,121 @@
---
description: Audit next-release docs and changelog before release
---
Audit release readiness for this repo.
Optional starting ref override: `$1`
Extra user intent/context: `${@:2}`
Process:
1. Determine the base ref.
- If `$1` is non-empty and looks like a ref/tag, use it.
- Otherwise use the latest release tag, preferring the repo's semver tag style:
```bash
git describe --tags --abbrev=0
```
2. Inspect the range from base ref to `HEAD`.
- Use first-parent history for release context:
```bash
git log --first-parent --reverse --format='%H%x09%s' <base>..HEAD
```
- Also inspect full commits and commit bodies when needed:
```bash
git log --reverse --format='%H%x09%s%n%b' <base>..HEAD
```
3. Detect merged PRs if any.
- Look for first-parent subjects that indicate PR merges, including squash merges like `title (#123)`.
- If GitHub CLI is available and the PR number is known, use it to fetch PR title/body for context.
- Treat a merged PR as the primary release unit.
- Do **not** also list individual commits that belong to that PR.
4. Handle direct commits separately.
- Any commit in the range not represented by a merged PR should be considered on its own.
5. Infer what matters.
- For each PR or direct commit, inspect changed files and diff stats.
- Read the most relevant files in full when needed to understand user-facing impact.
- Ignore pure housekeeping unless it has release value:
- version bumps
- release/tag commits
- changelog-only commits
- formatting-only changes
- comment-only/doc-only changes unless they materially affect users
6. Audit `docs/next/CHANGELOG.md` and issue references.
- Treat root `CHANGELOG.md` as the latest released changelog.
- Treat `docs/next/CHANGELOG.md` as the next-release changelog.
- Compare meaningful user-facing changes in the commit range against `docs/next/CHANGELOG.md`.
- Flag missing entries for new features, bug fixes, removals, breaking changes, defaults, compatibility changes, user-visible command/config/API behavior, and security-relevant changes.
- Do not require changelog entries solely for internal client/server protocol version bumps. Mention protocol only when the release intentionally changes user-facing compatibility guidance beyond the normal restart requirement.
- Inspect commit bodies for issue reference lines in the form `refs #<issue-number>`.
- Flag normal commits that use GitHub closing keywords like `fixes #<issue-number>`, `closes #<issue-number>`, or `resolves #<issue-number>`, because they close issues before release when they land on `master`.
- For each shipped issue reference, check whether the changelog has a matching user-facing entry that mentions `#<issue-number>` when appropriate.
- For each merged external human PR, check whether the changelog entry mentions the PR number and thanks the contributor in the existing style, e.g. `(#129, thanks @username)`. If the PR primarily ships an issue fix, include both the issue and PR numbers when useful, e.g. `(#128, #129, thanks @username)`. Do not add thanks text for maintainer-owned bots or automation accounts such as `kangal-bot` or `dependabot`.
- Do not require or add GitHub closing keywords like `fixes #<issue-number>`, `closes #<issue-number>`, or `resolves #<issue-number>` to changelog entries or release notes.
- List shipped issue references under `Issue references to close after release:` so the release operator can verify what release CI will close after the GitHub Release is published.
- Flag stale entries that do not appear to correspond to shipped changes in the range.
- Flag entries that are too implementation-focused or unclear for end users.
- Preserve the existing changelog style and sections: `Added`, `Changed`, `Fixed`, `Removed`, and `Breaking Changes` when applicable.
7. Audit next-release public docs.
- Treat root `README.md` and `website/src/content/docs/` as the latest released public docs.
- Treat `docs/next/README.md` as the next-release root README, and `docs/next/website/src/content/docs/` as the full next-release mirror of website docs.
- Compare meaningful user-facing changes in the range against next-release docs first.
- Flag missing release docs for new or changed features, commands, config keys, protocol behavior, integrations, defaults, and compatibility notes.
- Compare `docs/next/README.md` against root `README.md`, and compare the staged website-doc mirror against `website/src/content/docs/`. Flag each difference as intended to ship in this release, stale, or needing user decision.
- Also audit example config snippets for release readiness.
8. Verify finalization state.
- Before `just release`, approved `docs/next/README.md` must be copied to root `README.md`, approved staged website docs must be copied from `docs/next/website/src/content/docs/` to `website/src/content/docs/`, and the deleted root doc files must stay deleted.
- Run or recommend:
```bash
just release-docs-check
```
- This check must include root `README.md`, root `CHANGELOG.md`, the removed root doc files, and exact 1:1 sync between `docs/next/website/src/content/docs/` and `website/src/content/docs/`.
- Do not run `just release` unless the working tree is clean and the docs check passes.
9. Apply changes only when asked.
- Do not edit files during the audit unless the user explicitly asks you to apply fixes.
- When asked to apply audit fixes, update `docs/next/CHANGELOG.md`, `docs/next/README.md`, and any required staged website docs under `docs/next/website/src/content/docs/`.
- When asked to finalize release docs, copy approved next-release README and changelog into root, copy approved staged website docs into `website/src/content/docs/`, then run `just release-docs-check`.
Output format:
```md
Release readiness: READY | NOT READY
Base: <base ref>
Range: <base ref>..HEAD
Meaningful shipped changes: yes | no
Changelog: OK | MISSING ENTRIES | NEEDS ATTENTION
Missing:
- <only user-facing shipped changes missing from docs/next/CHANGELOG.md>
Docs: OK | MISSING | INACCURATE | NEEDS DECISION
Missing:
- <only required next-release public docs gaps>
Wrong or questionable:
- <docs that disagree with implementation, if any>
Issue refs: OK | NEEDS ATTENTION
Will close after release:
- #<issue>
Accepted/no action:
- <items the user explicitly accepted, such as known closing-keyword commits>
Root docs finalized: YES | NO
<result of just release-docs-check or why it was not run>
Required before release:
1. <short action>
```
Keep the main output glanceable. Put commit inventories, excluded housekeeping, and commands run in an appendix only when they materially help the operator.
If the range has no meaningful user-facing changes, say that plainly instead of forcing entries.

View File

@ -2,6 +2,20 @@
## Unreleased
### Added
- Added pane copy mode at `prefix+[` with keyboard navigation, visual selection, and clipboard yank support. (#231)
- Added `foreground_cwd` to pane and agent API/CLI responses so integrations can inspect the active foreground process directory without changing the existing pane/workspace `cwd` semantics. (#345)
- Added read-only `agent_session` metadata to pane and agent API/CLI responses when official integrations report native session references.
### Fixed
- Live handoff now preserves terminal state when transferring supported running panes to a replacement server.
- WSL clipboard writes now prefer OSC 52 before WSLg clipboard tools, so mouse selection and double-click copy populate Windows clipboard history in Windows Terminal. (#333)
- Incomplete host terminal OSC default-color replies no longer get misread as Alt-key input and forwarded into panes, preventing interactive prompts such as `gh auth login --web` from aborting on split `ESC ]` input. (#279, #306, #344)
- Workspace rename prompts and background notifications now use live cwd-derived workspace labels instead of stale session labels. (#332)
- `herdr session stop` no longer fails on zero-duration socket timeouts when the stop deadline is nearly exhausted.
- Update preview instructions now wrap long package-manager commands instead of truncating the shell command suffix.
- Restored native agent resume panes now fall back to a shell when the resumed agent exits instead of closing the whole pane.
## [0.6.4] - 2026-05-27
### Fixed

View File

@ -147,7 +147,7 @@ not a gui window, not a web dashboard, not electron. herdr runs inside whatever
- **workspaces** — organized around git repos or folder names, each with its own tabs and panes
- **tabs** — first-class in the socket api and cli
- **mouse-native** — click panes/tabs/workspaces/agents, drag borders, drag-select text to copy, double-click tokens to copy, right-click menus; not keyboard-only
- **copy-friendly** — drag-select text, double-click tokens, or use keyboard copy mode with `prefix+[`, `h/j/k/l`, `{`/`}`, `v`, and `y`
- **notifications** — sounds and toasts for background events; tab-aware suppression
- **18 built-in themes** — catppuccin, terminal, tokyo night, gruvbox, one, solarized, kanagawa, rosé pine, vesper, and light variants for the main palettes
- **session persistence** — pane processes survive client detach; sessions restore panes after full restart, with opt-in recent screen history
@ -195,7 +195,7 @@ automatic detection works out of the box. process name matching plus terminal ou
| antigravity cli | ✓ | ✓ | ✓ |
| kimi code cli | ✓ | ✓ | ✓ |
| [github copilot cli](https://github.com/features/copilot) | ✓ | ✓ | ✓ |
| qoder cli | ✓ | ✓ | ✓ |
| [qodercli](https://qoder.com/cli) | ✓ | ✓ | ✓ |
| [kiro cli](https://kiro.dev/docs/cli/) | ✓ | ✓ | — |
detected but not fully tested: gemini cli, cline.
@ -204,7 +204,7 @@ for agents outside the built-in list, herdr still works as a terminal multiplexe
### direct integrations
the built-in pi, omp, claude code, codex, opencode, hermes, and qoder cli integrations forward semantic state to herdr over the socket api. install with:
the built-in pi, omp, claude code, codex, opencode, hermes, and qodercli integrations forward semantic state to herdr over the socket api. install with:
```bash
herdr integration install pi
@ -297,7 +297,7 @@ full logging and environment variable details: [configuration docs](https://herd
## docs
- [configuration](https://herdr.dev/docs/configuration/) — keybindings, themes, notifications, environment variables
- [integrations](https://herdr.dev/docs/integrations/) — pi, omp, claude code, codex, opencode, hermes, qoder cli integrations
- [integrations](https://herdr.dev/docs/integrations/) — pi, omp, claude code, codex, opencode, hermes, qodercli integrations
- [`SKILL.md`](./SKILL.md) — reusable agent skill
- [socket api](https://herdr.dev/docs/socket-api/) — socket protocol and cli reference

View File

@ -5,10 +5,15 @@
### Added
- Added pane copy mode at `prefix+[` with keyboard navigation, visual selection, and clipboard yank support. (#231)
- Added `foreground_cwd` to pane and agent API/CLI responses so integrations can inspect the active foreground process directory without changing the existing pane/workspace `cwd` semantics. (#345)
- Added read-only `agent_session` metadata to pane and agent API/CLI responses when official integrations report native session references.
### Fixed
- Live handoff now preserves terminal state when transferring supported running panes to a replacement server.
- WSL clipboard writes now prefer OSC 52 before WSLg clipboard tools, so mouse selection and double-click copy populate Windows clipboard history in Windows Terminal. (#333)
- Incomplete host terminal OSC default-color replies no longer get misread as Alt-key input and forwarded into panes, preventing interactive prompts such as `gh auth login --web` from aborting on split `ESC ]` input. (#279, #344)
- Incomplete host terminal OSC default-color replies no longer get misread as Alt-key input and forwarded into panes, preventing interactive prompts such as `gh auth login --web` from aborting on split `ESC ]` input. (#279, #306, #344)
- Workspace rename prompts and background notifications now use live cwd-derived workspace labels instead of stale session labels. (#332)
- `herdr session stop` no longer fails on zero-duration socket timeouts when the stop deadline is nearly exhausted.
- Update preview instructions now wrap long package-manager commands instead of truncating the shell command suffix.
- Restored native agent resume panes now fall back to a shell when the resumed agent exits instead of closing the whole pane.
## [0.6.4] - 2026-05-27

View File

@ -129,9 +129,15 @@ herdr pane report-agent <pane_id> \
--state idle|working|blocked|unknown \
[--message TEXT] \
[--custom-status TEXT] \
[--seq N]
[--seq N] \
[--agent-session-id ID] \
[--agent-session-path PATH]
```
`pane get`, `pane list`, `agent get`, and `agent list` include a read-only `agent_session` object when an official integration has reported a native session reference. If no native session reference is stored, the field is omitted.
Those commands include `foreground_cwd` when Herdr can resolve the cwd of the foreground process controlling the pane. The existing `cwd` field remains the pane/workspace cwd used for labels and follow-cwd behavior.
Report display-only pane metadata without taking over semantic state:
```bash

View File

@ -124,6 +124,7 @@ next_tab = "prefix+n"
switch_tab = "prefix+1..9"
rename_tab = "prefix+shift+t"
close_tab = "prefix+shift+x"
copy_mode = "prefix+["
focus_pane_left = "prefix+h"
focus_pane_down = "prefix+j"
focus_pane_up = "prefix+k"

View File

@ -53,6 +53,10 @@ Herdr is mouse-native. You can click panes, tabs, workspaces, and agents; drag b
Ctrl-click opens pane links when your terminal sends the modified click to Herdr. This works for OSC 8 hyperlinks and visible `http://` or `https://` URLs. The portable terminal-native fallback is Shift-Ctrl-click on Linux or Shift-Cmd-click on macOS.
## Copy from the keyboard
Press `prefix+[` to enter copy mode for the focused pane. Use `h/j/k/l`, `w/b/e`, and `{`/`}` to move, `v` or Space to start a selection, `y` or Enter to copy it, and `q` or Esc to leave without copying.
## Manage named sessions
Named sessions are separate Herdr server namespaces. Use them when you want fully separate runtime state.

View File

@ -163,6 +163,23 @@ Integrations report agent state with `pane.report_agent`.
`custom_status` is visual. It can show a short label like `indexing` without changing semantic behavior.
Official integrations can also report a native session reference. `pane.get`, `pane.list`, `agent.get`, and `agent.list` expose a read-only `agent_session` object when Herdr has a stored native session reference:
```json
{
"agent_session": {
"source": "herdr:codex",
"agent": "codex",
"kind": "id",
"value": "..."
}
}
```
If no native session reference is stored, the field is omitted.
`pane.get`, `pane.list`, `agent.get`, and `agent.list` also expose `foreground_cwd` when Herdr can resolve the cwd of the process currently controlling the pane PTY. The existing `cwd` field remains the pane/workspace cwd used for labels, follow-cwd behavior, and restored session state.
Use `pane.report_metadata` when a user hook wants to customize presentation without taking over lifecycle state from a Herdr integration.
```json