
# Teamwork Graph CLI changelog

The public Teamwork Graph CLI changelog source is:

[https://developer.atlassian.com/cloud/twg-cli/changelog.md](https://developer.atlassian.com/cloud/twg-cli/changelog.md)

This page mirrors the same release notes so the version headings appear in the page navigation.

## 1.0.18

### Highlights

- **Complete Confluence permission management:** `twg confluence content permissions` now uses the Confluence v2 API and adds filtered, paginated `list`, full `replace`, and filtered `remove` workflows alongside `add` and `clear`. Destructive changes require confirmation and retain server-side self-lockout protection.
- **Restriction-state controls and clearer automation:** New `twg confluence content restriction-state get|set` commands manage `OPEN`, `EDIT_RESTRICTED`, and `VIEW_RESTRICTED` states. Permission envelopes now report command-specific resource types, and comment deletion explains when child replies must be removed first.
- **More resilient discovery:** `twg responsibility infer` returns partial results when traversal reaches a cloud without the relevant active product, while `twg jsm portal query` supplies required defaults and limits unfiltered results to three.
- **Correct Talent site targeting:** `twg talent position query|me --site` now resolves the selected site's cloud ID instead of reusing stale global context; `--site` and `--cloud-id` are mutually exclusive.

### Compatibility notes

- Confluence v2 permissions identify users by account ID and groups by group ID rather than group name. The legacy v1 restriction service has been removed.

## 1.0.17

### Highlights

- **Smoother Confluence content workflows:** `twg confluence content get` can now write editable page content directly to a local file with `--body-output-file`, while keeping the snapshot token available in JSON output.
- **More reliable pasted-link support:** Confluence content lifecycle commands now accept full Confluence URLs, tiny links, ARIs, and numeric IDs consistently, including move targets such as `--parent-id`, `--before`, and `--after`.
- **Clearer Confluence URLs and comment metadata:** create/update output now prints full content URLs when available, and inline comment responses expose `inlineMarkerRef` for clients that need to reconnect comments to document positions.
- **Better troubleshooting and updates:** backend-error feedback links are easier to open from terminals, `twg feedback --last-error` exposes the most recent error context, Windows `twg update` now runs in the foreground for clearer progress and failure reporting, and `twg update --version <version>` now installs the requested version instead of printing the CLI version.

## 1.0.16

### Highlights

- **Bounded work and pull-request reporting:** `twg work query` now accepts `--from` and `--to`, and pull-request activity queries support upper date bounds. Help documents accepted date formats and reviewer-count semantics.
- **More reliable discovery:** `twg work query` no longer fails when `--to` is omitted, and `twg help <terms>` searches the full help index even when a term also matches a command namespace.
- **Better agent output and routing metadata:** Pull-request queries include counts in compact `--only-counts` output, while graph-backed, Rovo Search, Collaboration Graph, mixed-family, and compatibility commands expose corrected tier metadata.

## 1.0.15

### Highlights

- **General availability:** Remove beta product labels from CLI and DAC surfaces. Beta terms now apply only to beta-channel releases, and update guidance consistently points to `twg update`.
- **Search that fails gracefully:** User search now limits each Jira, Confluence, and Slack source to 30 seconds and returns partial results when one times out. Rovo Jira search adds actionable filter suggestions after transient search-service failures.
- **Safer automation contracts:** `twg jira workitem create` accepts `--yes`, Teams create and update default scope to the configured site, and local validation failures return structured 400-level usage errors with exit code 2.
- **Reliable Trello identifiers:** Read commands accept canonical ARIs from earlier results while preserving supported shortlinks and usernames. Malformed or wrong-entity board and member identifiers now fail locally with clearer guidance.
- **Public feedback and steadier Windows setup:** `twg feedback` opens an anonymous, prefilled public support form, backend errors link directly to it, and the Windows installer now handles successful setup commands that write diagnostic output.

### Compatibility notes

- The deprecated `twg confluence space query` alias has been removed. Use `twg confluence space list`.

## 1.0.14

### Highlights

- **Run Bitbucket pipelines from the CLI:** Add `twg bitbucket pipeline run` for branch, tag, and custom pipeline executions.
- **Complete Confluence draft workflows:** Add `--draft` to content create, get, and update. Purge errors now explain the required trash-first flow, and singular label and comment aliases open the correct help.
- **Safer Jira operations across sites:** Transitions now identify issues found on another accessible Jira site and require an explicit `--site`. Work-item deletion accepts either a positional issue key or `--id` and documents its permission requirements.
- **More reliable lookup and recovery:** Resolve exact Jira, Atlas project, and Atlas goal keys with optional type disambiguation. Ambiguous org-tree searches return structured candidates instead of failing, and Assets rejects malformed object IDs before making requests.
- **Clearer agent work summaries:** Status-rollup guidance now covers personal work summaries and defines reviewed pull-request counts consistently.

### Upgrade notes

- Public installs and updates now use the signed `twg` or `twg.exe` executable directly and clean up legacy `twg-bin` and `twg.cmd` launchers automatically. Continue updating with `twg update`.

## 1.0.13

### Highlights

- **Goals type discovery:** Add `twg goals types` and let `twg goals create` resolve `--goal-type <name>` safely. Ambiguous names list matching IDs, pagination fails closed instead of returning partial results, and invalid selectors fail before authentication or network calls.
- **Confluence drafts and browser URLs:** Add publish and delete workflows for page and blog-post drafts. `twg confluence content get` now accepts browser URLs for folders, whiteboards, databases, and dated blog posts, while command-local `--site` reliably controls lifecycle operations.
- **Safer Confluence permissions:** `twg confluence content permissions add` now previews the target, operations, and grantees before applying restrictions and requires `--yes` for non-interactive use.
- **Bitbucket authentication repair:** `twg setup bitbucket --force` now reliably starts re-authentication. The command also supports `--no-browser`, including clipboard-based token setup.
- **Actionable diagnostics:** Fatal backend errors now provide a clickable, prefilled public feedback form link with safe command and trace context, so users can report failures without running another command or copying user-provided arguments.

### Compatibility notes

- Compass commands and Loom workspace query are now hidden from public builds. `twg loom get` examples now correctly use positional IDs.
- Direct-install updates do not support downgrading the new one-binary layout back to pre-GA wrapper-era versions. Rollbacks should target supported GA one-binary releases.

## 1.0.12

### Highlights

- **Bitbucket pipeline diagnostics:** Add `twg bitbucket pipeline tail` for live step-log streaming with WebSocket notifications and polling fallback, plus `pipeline grep` for literal or regex matching with case, context, match-limit, and step filters. `pipeline get --logs` also accepts step UUIDs and `--full`; streaming output is available as JSON and JSONL for agents.
- **Work and document discovery:** Redesign `twg work query` as an authored-by-default relationship summary with full-window counts, bounded previews, activity selectors, and separate document and calendar sections. Add `twg work search`, source-balanced broad Rovo and document search, and Rovo-backed Trello board and card search.
- **Jira search and issue types:** Route fuzzy work-item text searches through Jira-native JQL, add explicit issue-type ID and ARI lookup through `twg jira workitem types get --id`, and bound issue-type discovery to project-scoped selectors.
- **More reliable relationships and projects:** `twg context get` and `twg responsibility get|infer` now discover direct relationships without metagraph dependency while preserving typed enrichment and reporting scan coverage. Project queries preserve inherited filters and accept repeatable `--name` organization roots.
- **Resilient partial results:** Confluence tree reads now retain accessible descendants when another descendant is inaccessible or untitled. `twg pull-requests query` independently hydrates author and reviewer relationships, keeps valid deduplicated pull requests when individual relationships fail, reports partial omissions, and calculates aggregate counts independently of `--limit`.
- **Bitbucket credential repair:** `twg setup bitbucket --force` now re-persists an unchanged token, repairing stale or partially stored credentials instead of silently leaving authentication broken.

### Compatibility notes

- `twg jira workitem types query --id` remains available as a deprecated compatibility path; use `twg jira workitem types get --id`. Issue-type queries without an ID now require a project-scoped selector rather than enumerating every visible Jira issue type.

## 1.0.11

### Migration required

- `twg code-intelligence` is now `twg search-code`, with no compatibility alias. Update scripts and agent skills that use the old command; its subcommands, flags, and behavior are unchanged. Confluence version listing also removes `--sort` and `--content-type` because history is always newest-first and content type is resolved automatically.

### Highlights

- **Rovo connectors:** `twg rovo list-apps` gains the `list-connectors` alias, compact readiness and remediation output, structured JSON failures, `twg rovo auth <app>`, and authentication preflight for explicit connector searches. Salesforce search is now available through `--app salesforce` or `--app sfdc`, including `--type` narrowing.
- **Confluence history:** `twg confluence content versions|history` now supports pages, live docs, and blog posts, accepts Confluence URLs, renders historical bodies as Markdown or HTML, and adds server-computed `diff` plus version restore workflows.
- **Discovery and administration:** `twg context get <reference>` resolves canonical Atlassian ARIs into a product-neutral context envelope. Assets adds schema-scoped object-type discovery, schema settings, UUID reference IDs, typed select options, and richer attribute metadata; JSM approval commands are now available in every build profile.
- **Reporting and Bitbucket:** `twg talent position query --group-by` produces up to three levels of human-readable headcount aggregation, and Bitbucket PR create, update, and comment commands can upload images with fail-fast placeholder validation.
- **Reliability and cleanup:** transient upstream failures are retried and surfaced with stable error codes and trace IDs instead of empty results. `twg uninstall` now removes scheduled upkeep, installer-owned skills, credentials, and local TWG configuration without leaving update checks behind.

## 1.0.10

### Highlights

- **Safer OAuth maintenance.** Adds non-interactive `twg auth refresh` with
  persistence checks and cross-process coordination so sandboxed agents cannot
  lose rotated refresh tokens. New `twg upkeep` schedules near-expiry refreshes
  and update reminders; setup enables it automatically and uninstall removes it.
- **Richer Confluence content workflows.** Adds Word export alongside PDF,
  routes content listing through the unified endpoint, and improves SVG and CSV
  handling for whiteboards and databases.
- **Better Bitbucket CI diagnostics.** Adds pipeline test report and test case
  retrieval, while `twg doctor` now verifies live Bitbucket connectivity instead
  of only checking whether a token exists.
- **Faster agent discovery and more tolerant reads.** `twg help` can discover
  bundled skill references and `skill:` targets, Jira and Confluence guidance is
  split into focused skills, and common PR, Assets, media, user, meeting, and JSM
  reads accept more natural command shapes with structured fallback guidance.
- **Broader scoped access and steadier output.** Expands OAuth scope mappings for
  Confluence templates, drafts, properties, and Jira administration, while
  improving row output, cloud ID resolution, and degraded GraphStore handling.

### Upgrade Notes

- `twg confluence content export <id>` now requires `--format word` or
  `--format pdf`; the bare command no longer defaults to PDF.
- `twg setup` now attempts to enable scheduled upkeep. If the OS scheduler is
  unavailable, setup still completes and prints `twg upkeep enable` as the
  repair command.

## 1.0.9

### Highlights

- Adds `twg compass` for operational component data and `twg responsibility`
  (`twg ownership`) for ranked ownership, expertise, review, and escalation
  discovery.
- Expands product workflows with JSM approvals, Teams membership management,
  Jira administration, Assets reference types, Confluence copy and templates,
  Bitbucket file reads, and file-backed pull request descriptions.
- Makes Rovo connected-app search more reliable across Graph and federated
  connectors, including Slack, surfaces downstream failures instead of
  misleading empty results, and adds connector auth state, targeted recovery,
  and `twg rovo auth <app>`.
- Adds `twg uninstall` with safe preservation and explicit purge modes, and
  retires the beta custom Homebrew distribution path.
- Improves embedded and agent operation with delegated OAuth via
  `TWG_OAUTH_ACCESS_TOKEN`, fresher saved auth profiles, `TWG_SKILLS_DIR`,
  `twg --report-paths`, command-tier metadata, and Code Search enablement checks.
- Hardens Jira and Confluence writes with REST-backed Jira updates, ADF mentions,
  reliable inline comment defaults, and warnings for local image references that
  cannot be uploaded automatically.

### Compatibility Notes

- Removes deprecated JSM request-location and priority-group commands, plus the
  legacy `twg confluence whiteboard` and `twg confluence database` groups. Use
  unified `twg confluence content ... --content-type whiteboard|database`;
  availability remains build-gated.

## 1.0.8

### Patch Changes

- Fix Windows sign step: use npm instead of pnpm to bootstrap tsx (pnpm not on PATH on Windows runner).

## 1.0.7

### Patch Changes

- Pipeline: each step now self-installs via `pnpm install --frozen-lockfile` — fixes EMFILE on macOS runners after pnpm migration.

## 1.0.6

### Patch Changes

- Updated pnpm to 11.5.2 and ensured `corepack enable pnpm` is present in all release pipeline steps.

## 1.0.5

### Highlights

- **Confluence legacy command deprecation.** The `twg confluence whiteboard` and `twg confluence database` command groups are deprecated. Use `twg confluence content create|update|get --content-type=whiteboard|database` instead.
- **`twg logout` now fully revokes tokens.** Signing out revokes both the OAuth access and refresh tokens server-side, not just clears local credentials.
- **New command: `twg confluence space me`.** Resolves the authenticated user's personal Confluence space directly.

### Breaking Changes

- **Confluence body format `plain` removed.** Page, blog, and content write commands no longer accept `plain` or `text` as a body format. Use `markdown`, `md`, or `html`.
- **Jira workitem create now uses ADF for `--description`.** The `twg jira workitem create --description` flag now accepts Markdown or HTML and converts to Atlassian Document Format, consistent with `workitem update`.

## 1.0.4

### Patch Changes

- Version-only release prepared for 1.0.4 without pending changesets.

## 1.0.3

### Patch Changes

- 5f21300: `twg login` now uses OAuth by default in installer paths too. The public curl
  installer (`bin/install-template.sh`) and Windows installer
  (`bin/install-template.ps1`) no longer forward `--from-clipboard` to the
  post-install login step. PAT remains available as a hidden dev escape hatch via
  `twg login --pat`. `--force` always re-authenticates with the default flow
  (OAuth) unless `--pat` is also passed. Non-OAuth-capable contexts (non-TTY, the
  `TWG_TOKEN`+`TWG_USER` env shortcut, `twg env auth`, and existing PAT
  `auth.conf` users not passing `--force`) continue to use token flow.
- 3ceaa91: Remove beta labels from version output, top-level help, DAC navigation and pages, and consent copy for GA readiness.
- c31202b: Do not ask for email or site during `twg setup` OAuth login; keep the setup profile prompt only for the hidden PAT setup flow.

## 1.0.2

### Highlights

- **OAuth-first login and clearer auth recovery.** `twg login` now uses OAuth by default, `--force` consistently starts a fresh auth flow, `--no-browser` works across login prompts, and 401/403 failures now show mode-aware remediation with a stable `AUTH_EXPIRED` agent envelope and exit code 77. Bitbucket token setup remains token-based and is prompted when needed.
- **New and expanded Atlassian work surfaces.** This release adds Assets write lifecycle commands with dry-run/delete guards, Confluence content update/body-format guidance/move/label improvements, JSM customer request creation and request-type field metadata, Loom video comments, Bitbucket deployment variable mutations, repository/branch/pipeline/PR parity commands, and external Code Intelligence access.
- **Better query, context, and agent behavior.** Generic query contracts now distinguish natural language from query-language inputs, agent summaries and compact/evidence output are more predictable, `TWG_AGENT_DEFAULTS=1` lets installed skills call `twg` directly with agent-friendly defaults, and `twg doctor` now highlights duplicate `twg` binaries on `PATH`.
- **Safer defaults and richer object handling.** `pr-tree` is now count-only by default, supports `--limited-fetch`, and bounds zero-flag merged rollups to the last 30 days. Jira issue-key resolution, Jira rich-text validation, Talent position lookup/rendering, JSM linked repositories, and Teams ARI lookups were also improved.
- **Release and packaging updates.** Codex plugin packaging is now available with public-safe bundled guidance, the benchmark latest-release pipeline can run non-interactively, and release builds hide or remove unfinished/unsupported Jira Align, Trello, Talent proposal, and JSM channel/request-location commands.

### Upgrade Notes

- `twg login` is OAuth-first. The old `--oauth` flag has been removed because OAuth is now the default path. Existing classic token auth still works for installer, clipboard, non-TTY, environment-token, and existing `auth.conf` flows.
- Stale OAuth environment overrides (`TWG_OAUTH_CLIENT_ID`, `TWG_OAUTH_AUTH_BASE_URL`, `TWG_OAUTH_SCOPE`) were removed; endpoints and client ID now come from environment config.
- Some in-development or unsupported commands are intentionally absent from release builds, including Jira Align, JSM channel mutations, JSM request-location query, Trello bulk list deletion, and Talent focus-area proposal commands.

## 1.0.1

### Highlights

- Adds `twg api` to every build profile, so signed-in users can make
  authenticated Atlassian REST and GraphQL calls with the CLI's saved
  credentials, product shortcuts, and structured JSON/JSONL output.
- Makes `twg admin` available in the external CLI with Admin API key onboarding,
  org switching, user lifecycle commands, and lifecycle capability checks.
- Improves command discoverability across Jira, Confluence, JSM, Bitbucket,
  Trello, Loom, Talent, Atlas Goals, and Atlas Projects with clearer help,
  examples, guards, synonyms, and safety guidance.
- Adds `twg confluence ... --help-body-format` so rich-body commands can show
  supported plain text, Markdown, and HTML input formats directly from the CLI.
- Hardens day-to-day workflows, including JSM service search, Confluence tiny
  URL reads, Jira goal/project links, Ctrl+C cancellation during long fetches,
  OAuth refresh timing, and final analytics delivery before exit.

## 1.0.0

TWG CLI 1.0.0 brings the 0.9.x release line together as a stable baseline for
agent-oriented Atlassian workflows, with broader Jira and Confluence coverage,
more reliable installs and updates, improved authentication, and better command
discoverability.

### Highlights

- Establishes the agent-friendly command model as the stable 1.0 baseline, with
  richer Jira, Confluence, Bitbucket, Loom, and Feedback workflows.
- Adds a large Confluence `content` surface that lets agents work with pages,
  blog posts, whiteboards, databases, folders, comments, labels, permissions,
  tasks, versions, history, attachments, and reactions through a more uniform
  command shape.
- Expands Jira REST parity across work items, attachments, worklogs, comments,
  properties, changelog, votes, filters, dashboards, boards, sprints, project
  components, versions, and bulk operations.
- Improves install, update, and OAuth behaviour so the binary is safer to
  distribute and easier for agents to diagnose.

### Breaking changes

- No intentional command removals are included in this release. Some Confluence
  and install flows now prefer normalized command shapes and clearer guarded
  behaviours, while compatibility aliases remain where required.

### Confluence

- Adds the new `twg confluence content` surface as the preferred agent-friendly
  entry point for content lifecycle operations.
- Wires page, blog post, whiteboard, database, and folder lifecycle parity where
  underlying services exist, including page create/update/archive/restore/delete
  and move, blog post create/update/delete, whiteboard/database list/get/create/delete,
  and folder get/create/delete.
- Adds content subresources for:
  - `attachments` upload/download.
  - `comments` list/get/create/reply/update/resolve/reopen/delete.
  - `labels` list/add/remove.
  - `permissions` list/add/remove.
  - `tasks` list/get/complete/reopen.
  - `versions` and `history` list/get/restore.
  - `reactions` get/add/remove.
- Makes `--type` optional for many ID-only `confluence content` commands by
  adding dispatcher probes and structured unsupported-operation errors.
- Adds `confluence content create` over the agentic content API for pages,
  live docs, blog posts, whiteboards, databases, embeds, smart links, folders,
  and slides.
- Normalizes `twg confluence space` verbs to align with the new content surface,
  while preserving compatibility aliases where needed.

### Jira

- Adds REST-backed Jira work item subresource commands for attachments,
  comments, watchers, issue links, properties, changelog, votes, and worklogs.
- Adds `twg jira workitem bulk-get` and `twg jira workitem bulk-transition`,
  including a safe dry-run default for bulk transitions.
- Speeds up repeated `twg jira workitem get` reads by using REST search batching
  when possible and falling back to per-issue reads when needed.
- Adds rich description/comment/worklog input formats for plain text, Markdown,
  HTML, and ADF, with HTML as the safer default for rich-text authoring.
- Adds REST-backed Jira filter and dashboard commands, including saved filter
  lifecycle, sharing/subscriptions, dashboard lifecycle, and gadget administration.
- Adds Jira Agile board and sprint parity commands, sprint snapshots, board and
  sprint discovery from project URLs or issue keys, and project component/version
  lifecycle commands under `jira space`.

### Bitbucket, Loom, and Feedback

- Adds `twg bb inbox` for a bounded current-user PR inbox with reviewer
  and author filters plus compact task, comment, and check signals.
- Adds `twg bb pipeline latest-failure` to locate the newest failed
  pipeline and hydrate failed step log tails in one bounded flow.
- Normalizes Bitbucket PR descriptions that contain escaped newlines so
  agent-generated Markdown renders correctly.
- Adds Loom transcript preview and file-backed full transcript support to
  `twg loom get`.
- Routes `twg feedback` Jira issue creation through the Jira REST gateway with
  clearer authentication and timeout guidance.

### Agent and workflow experience

- Adds agent-friendly command repairs and aliases for common lookups, including
  positional user search, pull-request status aliases, project/goal shortcuts,
  Confluence page positional get, and Loom/video/meeting URL hydration.
- Splits bundled TWG workflow guidance into outcome-specific skills for better
  agent discovery.
- Restores and refreshes generated CLI catalog discoverability for the new
  Confluence content and space surfaces.

### Auth, install, and update hardening

- Ships and fixes the OAuth device-code login path, including refresh behaviour
  and a corrected scope allowlist for the TWG CLI OAuth client.
- Adds low-frequency update checks from `doctor`/version commands and reports
  installed TWG skill freshness with repair guidance.
- Fixes Windows `twg update` replacement flows, records install metadata, and
  preserves logs when background replacement fails.
- Warns about duplicate Homebrew/direct installs and prevents accidental direct
  installs over active Homebrew-managed installs.
- Simplifies direct installers by requiring setup finalization and sharing the
  POSIX installer template across shell installs.
- Fixes shell installer checksum parsing for CRLF `SHA256SUMS` manifests.
- Improves command compatibility coverage so supported aliases resolve more
  reliably.

## 0.9.8

### Minor Changes

- b48bdbd: Add `twg access` for product, site, org, test-like, configured-site, Bitbucket, and Rovo access inventory checks.
- 91c25e2: Add a `BUILD_ENABLE_CONFLUENCE_CONTENT_TOOLS` build flag so release-style setups
  can opt into the agentic Confluence content tools bundle. The bundle currently
  exposes a `confluence content get` preview backed by Confluence's
  `/wiki/api/v2/agentic/content/{id}` (and `?content_url=`) endpoint, with
  summary, outline, and full detail levels; future agentic create/update/delete
  commands will land behind the same flag so the surface graduates as a unit.

  The flag defaults to on in dev/internal builds and off in release/external
  builds; invalid values warn and fall back to the build-profile default. Set
  `BUILD_ENABLE_CONFLUENCE_CONTENT_TOOLS=1` at build time (e.g.
  `BUILD_ENABLE_CONFLUENCE_CONTENT_TOOLS=1 npm run setup`) to opt a release-style
  build into the surface.

  Coordinate the default flip with the monolith's `agentic_content_tools` Statsig
  gate so client-side availability tracks server-side availability.

- 2f94fe9: Help discovery: typed `Guards:` and `Synonyms:` sections, plus ranking fixes

  Adds a `Guards:` heading and an inline `Synonyms:` line that authors can drop into any
  command's `addHelpText("after", …)` block. The catalog parses both into typed
  `HelpCommandRecord.guards` and `HelpCommandRecord.synonyms` fields, the index persists
  them, and flexsearch slots them into the existing weight ladder
  (`path: 12, cmd: 10, synonyms: 9, alias: 8, meta: 5, desc: 3, guards: 2, args: 2, opts: 2, input: 2`):
  - `synonyms` — weight 9, just **above** `alias: 8`, so curated semantic neighbours such
    as `cmdb` → `assets` or `calendar` → `meetings` win against incidental description
    prose and even against legacy aliases when the alias is the wrong target.
  - `guards` — weight 2, low enough to act as a tie-breaker for sibling-overlap commands
    without inventing matches on unrelated commands.

  As part of the content rollout, `pr-tree` and `workitem-tree` had their existing
  free-form prose footers converted to typed `Guards:` blocks. Those footers were
  previously not indexed at all (the catalog only captured `Examples:` blocks), so the
  conversion is also a strict gain in search coverage for those two commands.

  Two complementary ranking fixes ship in the same change so existing commands benefit even
  without authored content:
  - Drop single-character query tokens (`a`, `i`, `o`, …) at the tokenize boundary so
    noise tokens stop prefix-matching every `assets *` / `auth *` path.
  - Damp the path-prefix bonus by the ratio of query-token length to path-token length so
    short prefixes no longer dominate ranking against full-word matches.

  `guards` and `synonyms` are additive optional fields, so the help-record and help-index
  schema versions stay at `1`. Cache invalidation on upgrade is carried by
  `programSignature()`, which now hashes per-command rendered help-text length and so
  changes whenever a Guards/Synonyms block is added or removed.

  Authored content covers the full multi-surface ambiguity surface: `meetings`, `docs`,
  `videos`, `spaces`, `org-tree`, `pr-tree` (existing prose footer converted),
  `workitem-tree` (converted), `assets`, `collaborators`, `recently-viewed`,
  `notifications`, `pull-requests`, `context jira workitem`, `context user`,
  `context confluence` (page/space/blogpost/whiteboard), `goals`, `projects`,
  `focus-areas`, `talent`, `teams`, `jsm incident query`, `jsm alert query`,
  `jsm post-incident-review query`, `confluence blog`, `confluence database`,
  `confluence whiteboard`, `bitbucket search prs`, and `bitbucket default-reviewer`.

  Examples of fixed rankings (`twg help <freeform>` → top result):
  - `find a persons meetings` → `meetings` (was assets subtree)
  - `okr` → `goals`
  - `postmortem` → `jsm post-incident-review query`
  - `outage incident` → `jsm incident query`
  - `monitoring page alert` → `jsm alert query`
  - `issue context` → `context jira workitem`
  - `user perimeter` → `context user`
  - `team membership` → `teams`
  - `open positions` → `talent`
  - `blog post announcement` → `confluence blog`
  - `whiteboard diagram` → `confluence whiteboard`
  - `default reviewer` → `bitbucket pull-requests default-reviewer`
  - `find pr by text` → `bitbucket search prs`
  - `atlas project` → `projects`
  - `focus area initiative` → `focus-areas`
  - `cmdb` → `assets`
  - `who reports to whom` → `org-tree`

- 15a40ce: Make `twg work query` count-first by default, add distinct entity counts for
  validated sections, require `--fetch items` when callers need hydrated work item
  rows, and guard unbounded item fetches with a 2000-relationship preflight limit.

### Patch Changes

- 3b0a2d7: Add a `--body-output-file` option to Confluence page reads so body content can be saved to a file while JSON output stays metadata-focused.
- e3c4f17: Stop user search from calling the admin users GraphQL lookup.
- ab03591: Document agent-facing help search behavior changes that de-rank advanced raw graph/debug commands unless the query names them directly, and tighten high-fanout agent output contracts for org, goal, and project hydration commands.
- 7f69e9e: Add project-aware Jira field discovery and generic custom field support for workitem create and update.
- ba5649a: Stop publishing the duplicate Windows `setup.ps1` installer; `install.ps1` is now the canonical PowerShell installer URL for both public Bifrost and internal Statlas releases.
- 7f2d4f9: Skip the optional Bitbucket token prompt during login when accessible product discovery confirms the account has no Bitbucket access.
- b437a97: Add `twg workitem-tree` with an `issue-tree` alias to summarize Jira work item activity by reporting tree with fast GraphStore Cypher-backed counts by default and guarded `--full-fetch` issue sample fetching.

## 0.9.7

### Patch Changes

- 5087758: context: gracefully handle partial GraphQL responses; search snippet formatting

  `twg context user`, `twg context confluence <type>`, and `twg context jira workitem`
  now return whatever data the graph store _did_ manage to fetch when one or
  more relationship branches fail to load. The dropped branches are surfaced as
  a brief warning on the v2 envelope's `warnings` field (and to stderr in text
  mode) instead of throwing a hard
  `Unable to retrieve data: cannot route the request` error.

  `twg search` results no longer show multi-line raw content in snippet previews —
  descriptions are now collapsed to a single readable line and dimmed for visual
  consistency with other result metadata.

- 7f0e519: test(coverage): use real fixtures for `confluence labels attachment` and `confluence labels custom-content`

  The static read coverage harness was passing a Confluence page ID to `confluence labels attachment` and a placeholder `0` to `confluence labels custom-content`. Both produced HTTP 404s, which the harness mis-classified as "token lacks Confluence scope" — masking the fact that both commands work correctly. The harness now discovers a real attachment and custom-content ID via CQL on each run, and the Confluence skip-matchers are reordered so genuine 404s can no longer be reported as scope failures.

- 142758c: fix(search): recover full results when AGG returns partial success with downstream errors

  `twg search query --assignee <user>` (and other filtered searches) previously showed a warning that results were limited to Confluence and Jira. This was caused by two issues:
  1. **Partial AGG responses were discarded**: When AGG fanout to a downstream connector returned a 403, AGG still returned HTTP 200 with valid search results alongside a `DOWNSTREAM_ERROR` GraphQL error. `graphql-request`'s default error policy treated this as a failure and threw away the usable data, triggering the Confluence/Jira-only fallback. Fixed by catching the `ClientError` directly in `runAggSearch` and recovering the data when `response.data.search.results.edges` is non-null, scoped strictly to the Rovo search path so other GraphQL callers are unaffected.
  2. **Default search fanned out to all connected apps implicitly**: Searches without `--app` were fetching entity types from all 55+ connected third-party apps and including them in the search, causing AGG to fan out to connectors that may fail. Third-party entities are now only included when explicitly requested via `--app`.

- 5f2273e: Remove `jsm conversation by-container query`, `jsm conversation workspace experience-config get`, `jsm conversation workspace related-experience-config get`, and `jsm automation task-agent query` from the public CLI surface at the request of the upstream `jsmChannels` owners. Also hide `jsm incident get` from `--help`, the generated catalog, and the command-policy schema until the required `read:incident:jira-service-management` scope is available in the `twg login` granular-scope flow; the runner remains wired so existing scripts continue to work.
- e189268: Add `twg pr-tree` with a `pull-requests-tree` alias to summarize pull request activity by reporting tree with fast GraphStore Cypher-backed counts, guarded full-fetch samples, and per-person direct examples.

## Earlier Releases

This public changelog starts at 0.9.7. Earlier internal and pre-stable entries
are omitted to keep release notes focused on currently relevant TWG CLI
behavior.

Please use the latest stable installer for supported setup and update flows.
