Skip to content

fix(workboard): hide archived cards in CLI list by default#94562

Merged
vincentkoc merged 3 commits into
openclaw:mainfrom
ZengWen-DT:radar/issue-94555
Jun 24, 2026
Merged

fix(workboard): hide archived cards in CLI list by default#94562
vincentkoc merged 3 commits into
openclaw:mainfrom
ZengWen-DT:radar/issue-94555

Conversation

@ZengWen-DT

@ZengWen-DT ZengWen-DT commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Fixes compact openclaw workboard list output so soft-archived Workboard cards are hidden by default.
  • Adds openclaw workboard list --include-archived to show archived cards in compact text output.
  • Preserves the shipped openclaw workboard list --json full-card output, including archived cards, for existing automation.

Linked context

Fixes #94555

Changed surface

  • extensions/workboard/src/cli.ts filters archived cards only for compact text output unless --include-archived is set.
  • extensions/workboard/src/cli.test.ts covers text default, --include-archived, and JSON compatibility.
  • docs/cli/workboard.md documents the text-output default and JSON compatibility behavior.

Real behavior proof

  • Behavior or issue addressed: Compact openclaw workboard list output printed archived cards, making archive operations look ineffective.
  • Real environment tested: WSL2 Linux, Node 24, local OpenClaw checkout, Workboard plugin enabled, isolated OPENCLAW_HOME SQLite state dir.
  • Root cause / premise evidence: extensions/workboard/src/cli.ts listed all store cards and only filtered by status; extensions/workboard/src/command.ts already hides archived cards for /workboard list. WorkboardStore.list remains the full-card store boundary.
  • Before evidence (bug reproduced on main): Issue Bug: openclaw workboard list CLI does not filter archived cards (CLI/API inconsistency) #94555 includes current-release reproduction where default terminal list still printed a card after archived_at was set, and source inspection of current upstream/main shows the CLI list path has no archived-card filter.
  • Exact steps or command run after this patch:
export OPENCLAW_HOME="$(mktemp -d)"
pnpm openclaw plugins enable workboard
pnpm openclaw workboard create "active demo card"
pnpm openclaw workboard create "archive me card"
node --no-warnings -e "<set archived_at on the archive me card row>"
pnpm openclaw workboard list
pnpm openclaw workboard list --include-archived
pnpm openclaw workboard list --json | node -e "<count cards titled archive me card>"
  • Evidence after fix:

Terminal output from the real pnpm openclaw commands above:

=== list default terminal output ===
758cba20  todo      normal  default  active demo card

=== list --include-archived terminal output ===
758cba20  todo      normal  default  active demo card
e00f4142  todo      normal  default  archive me card

=== list --json archived title count ===
1
  • Observed result after fix: Default compact text output hides the archived card. --include-archived shows it. Default --json still includes the archived card, so scripts that consume the full card list keep their shipped behavior.
  • What was not tested: Full repo suite and full CI locally; CI remains the broad gate. No Control UI/dashboard behavior is changed.
  • Proof limitations or environment constraints: The archive step used a direct SQLite archived_at update to create the same persisted state described in Bug: openclaw workboard list CLI does not filter archived cards (CLI/API inconsistency) #94555; the observed list behavior was exercised through the real pnpm openclaw workboard CLI.

Tests and validation

  • pnpm docs:list
  • node scripts/run-vitest.mjs extensions/workboard/src/cli.test.ts
  • pnpm exec oxfmt --check extensions/workboard/src/cli.ts extensions/workboard/src/cli.test.ts docs/cli/workboard.md
  • git diff --check

Risk checklist

Did user-visible behavior change? Yes

Did config, environment, or migration behavior change? No

Did security, auth, secrets, network, or tool execution behavior change? No

Highest-risk area: Workboard CLI output compatibility.

How is that risk mitigated? The patch changes only compact text output by default; --include-archived restores archived text rows, and --json keeps the full-card output for existing automation.

Current review state: maintainer review and CI.

AI-assisted (Claude). Proof above was run manually.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation plugin: workboard size: XS triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 18, 2026
@clawsweeper

clawsweeper Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed June 23, 2026, 6:54 PM ET / 22:54 UTC.

Summary
The PR changes Workboard CLI list compact text output to hide archived cards by default, adds --include-archived for compact text output, preserves JSON full-card output, and updates Workboard CLI tests and docs.

PR surface: Source +14, Tests +34, Docs +5. Total +53 across 3 files.

Reproducibility: yes. source-reproducible. Current main and v2026.6.9 show terminal openclaw workboard list filtering only by status, while the Workboard tool and /workboard list hide archived cards by default; the linked issue also gives a concrete archived_at reproduction path.

Review metrics: 1 noteworthy metric.

  • CLI visibility contract: 1 flag added, 1 text default changed, JSON default preserved. This is the compatibility choice maintainers need to notice before merge because terminal output changes while machine JSON remains stable.

Stored data model
Persistent data-model change detected: vector/embedding metadata: extensions/workboard/src/cli.ts. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #94555
Summary: This PR is a candidate fix for the canonical Workboard CLI archived-card visibility mismatch, alongside other open candidate PRs.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🦞 diamond lobster
Proof: 🦞 diamond lobster
Patch quality: 🦞 diamond lobster
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Risk before merge

  • [P1] Merging this changes default compact terminal output: operators or scripts scraping archived cards from openclaw workboard list would need --include-archived, although default JSON output remains a full-card list.
  • [P1] Several open PRs target the same Workboard bug, so maintainers should select one canonical landing path before merging or closing duplicate candidates.

Maintainer options:

  1. Accept The JSON-Preserving Compact Default (recommended)
    Land this PR as the canonical fix if maintainers accept that compact terminal output hides archived cards by default while --include-archived and JSON preserve access.
  2. Keep Archived Cards Visible By Default
    If the old compact text output is considered a shipped contract, reject this default change and design an explicit filter flag or separate archive view instead.
  3. Choose One Same-Issue PR
    Pick this PR or another viable candidate as canonical, then close the remaining same-root PRs after the selected path lands or is rejected.

Next step before merge

  • No automated repair is needed; maintainers need to choose the canonical same-issue PR and accept or reject the compact-output compatibility change.

Security
Cleared: The diff changes Workboard CLI filtering, focused tests, and CLI docs only; it adds no dependency, workflow, secret, install, or code-execution surface.

Review details

Best possible solution:

Land one canonical JSON-preserving Workboard CLI fix after maintainers accept the compact text output compatibility change; this PR is a strong current candidate because it preserves the store and JSON contracts.

Do we have a high-confidence way to reproduce the issue?

Yes, source-reproducible. Current main and v2026.6.9 show terminal openclaw workboard list filtering only by status, while the Workboard tool and /workboard list hide archived cards by default; the linked issue also gives a concrete archived_at reproduction path.

Is this the best way to solve the issue?

Yes. Filtering only compact text output at the CLI presentation boundary fixes the inconsistent user-visible list while preserving WorkboardStore.list and default JSON output for existing automation.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against b08d901dd2fc.

Label changes

Label justifications:

  • P2: The PR fixes a normal-priority bundled Workboard CLI consistency bug with limited plugin-local blast radius.
  • merge-risk: 🚨 compatibility: Changing default compact list visibility can affect users or scripts that expected archived cards in terminal output, even though JSON output remains preserved.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body includes after-fix terminal output from real pnpm openclaw workboard commands showing default text hides the archived card, --include-archived shows it, and default JSON still includes it.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix terminal output from real pnpm openclaw workboard commands showing default text hides the archived card, --include-archived shows it, and default JSON still includes it.
Evidence reviewed

PR surface:

Source +14, Tests +34, Docs +5. Total +53 across 3 files.

View PR surface stats
Area Files Added Removed Net
Source 1 21 7 +14
Tests 1 34 0 +34
Docs 1 11 6 +5
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 3 66 13 +53

What I checked:

  • Repository policy read: Root AGENTS.md and scoped extensions/AGENTS.md and docs/AGENTS.md were read and applied; the review used the plugin boundary, docs accuracy, and compatibility-risk guidance. (AGENTS.md:1, b08d901dd2fc)
  • No matching maintainer note: The only maintainer note present is Telegram-specific, so there was no Workboard-specific note to apply to this PR.
  • Current main CLI behavior: Current main's workboard list command reads params.store.list, optionally filters by status, and writes every card without checking metadata.archivedAt. (extensions/workboard/src/cli.ts:135, b08d901dd2fc)
  • Sibling tool default: The workboard_list tool exposes includeArchived and filters out archived cards unless that parameter is true, which defines the sibling default the CLI currently diverges from. (extensions/workboard/src/tools.ts:237, b08d901dd2fc)
  • Sibling slash-command default: The /workboard list command already filters out cards with metadata.archivedAt, so the inconsistency is isolated to the terminal CLI list presentation path. (extensions/workboard/src/command.ts:97, b08d901dd2fc)
  • Store boundary: WorkboardStore.list returns board-matching persisted cards and does not own archived-card visibility policy, supporting a caller-side presentation fix rather than a store change. (extensions/workboard/src/store.ts:2327, b08d901dd2fc)

Likely related people:

  • Peter Steinberger: Git history shows this author introduced the Workboard worker-dispatch CLI containing the current list handler and also authored adjacent Workboard tool/cleanup work. (role: introduced Workboard CLI and adjacent feature surfaces; confidence: high; commits: f8b566b9c1df, 61031d1b1cec, fee64cfa3edb; files: extensions/workboard/src/cli.ts, extensions/workboard/src/tools.ts, extensions/workboard/src/command.ts)
  • Vincent Koc: Current-main blame attributes the present Workboard CLI, tool, and slash-command snapshots to this recent repository snapshot commit. (role: recent area contributor; confidence: medium; commits: 8e6624cb6cb8; files: extensions/workboard/src/cli.ts, extensions/workboard/src/tools.ts, extensions/workboard/src/command.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jun 18, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. label Jun 18, 2026
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 19, 2026
@openclaw-barnacle openclaw-barnacle Bot added the triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. label Jun 19, 2026
@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Dependency graph guard cleared

This PR no longer has blocked dependency graph changes. A future dependency graph change requires a fresh /allow-dependencies-change comment after the guard blocks that new head SHA.

  • Current SHA: 06fe3bab81db9827a5cf06f6e743067bf4f9425c

ZengWen-DT and others added 3 commits June 24, 2026 10:04
The `openclaw workboard list` CLI printed soft-archived cards, while the
`workboard_list` agent tool and the `/workboard list` command both hide
cards with `metadata.archivedAt` set unless archives are requested. Users
who archived cards still saw them in CLI output and assumed archive failed.

Filter archived cards by default in the CLI list handler and add an
`--include-archived` flag mirroring the tool's `includeArchived` option, so
all three list surfaces share one default. Docs updated to match.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
@vincentkoc

Copy link
Copy Markdown
Member

Merged via squash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: ios App: ios cli CLI command changes docs Improvements or additions to documentation merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P2 Normal backlog priority with limited blast radius. plugin: workboard proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. scripts Repository scripts size: S status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: openclaw workboard list CLI does not filter archived cards (CLI/API inconsistency)

2 participants