Skip to content

Tags: massive-value/wealthbox-cli

Tags

v2.3.1

Toggle v2.3.1's commit message
v2.3.1: fix startup crash when click is not installed

typer 0.26+ dropped click as a dependency, so skill_ref_gen's top-level
import click caused wbox to crash on startup in clean environments.
Deferred the import to inside the regen-skill-refs command body so click
is only required when that hidden dev command is actually invoked.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

v2.3.0

Toggle v2.3.0's commit message
fix(release): defer skill_ref_gen import to avoid click dependency at…

… startup

typer 0.26+ no longer depends on click, so it's not installed in the
binary build environment. skill_ref_gen.py imports click at module level,
causing wbox to crash on startup. Moving the import inside regen_skill_refs()
defers it until the hidden dev command is actually invoked — normal CLI
commands no longer need click at all.

Also reverts the spurious --hidden-import click flag added in the prior
attempt (it was a no-op since click was never installed).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

v2.2.1

Toggle v2.2.1's commit message
v2.2.1: gate `wbox self upgrade` on install kind

`wbox self upgrade` was silently no-op'ing for uv/pipx installs: it
computed the install root from `sys.executable` (the venv's python.exe)
and tried to swap the console-script shim there, but PATH points at a
copy uv/pipx made under ~/.local/bin. Replacing the venv-side shim
never changed what `wbox` resolved to, and the deferred Windows helper
left a `wbox.exe.partial.<ts>` orphan with no status file.

`upgrade_cmd` now detects the install kind (`bundle` / `uv-tool` /
`pipx` / `pip`) via `sys.frozen` + a path heuristic on `sys.executable`,
and refuses with the correct follow-up command when it's not the
standalone bundle. No download, no partial file, no orphaned marker.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v2.2.0

Toggle v2.2.0's commit message
release: v2.2.0 — `wbox me user-id`, users list pagination, Node 24 CI

Highlights:

- feat(me): `wbox me user-id` and table relabeling to disambiguate the
  login profile ID from the workspace user ID (closes #90).
- fix(users): paginate `wbox users list` so firms with >25 users see
  the full list.
- ci: fix mkdocs docs deploy, bump deprecated Node 20 actions to Node
  24-compatible versions ahead of GitHub''s June 2 2026 cutoff.

v2.1.0

Toggle v2.1.0's commit message
fix(users): paginate `wbox users list` so firms with >25 users see th…

…e full list

The CLI was calling the single-page `list_users()` and exposes no
--page/--per-page flags, so any firm with more users than the API
default page size silently got a truncated list. Switch to the
existing paginated `list_all_users()` (already used by the firm
bootstrap path) so the CLI matches the bootstrap path's correctness.

Add a respx test that mocks two pages and asserts all 120 users
make it through `wbox users list --format json`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v2.0.0

Toggle v2.0.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: remove dead v1 codex plugin manifest, consolidate changelog (#89)

Follow-up to #27 / #50 — v2.0.0 cleanup audit found two leftovers.

- Delete `.codex-plugin/plugin.json`. PR #51 (closing #27) explicitly
  punted on this manifest because "the issue scope is explicit and
  `.codex-plugin/` is not in the deletion list" — but its sibling
  artifacts (the Claude marketplace manifest and the `codex-skill/`
  mirror) were deleted, leaving this file with a broken `./codex-skill`
  pointer to a directory that no longer exists. Removing it makes the
  v2.0.0 changelog claim "Removed v1 distribution artifacts (#27)"
  fully accurate.

- Consolidate the changelog. Migrate the v0.1–v1.3 history from
  `docs/changelog.md` into the root `CHANGELOG.md` (which previously
  held only the v2.0.0 entry), delete the docs copy, and drop the
  Changelog entry from `mkdocs.yml` nav. Single source of truth at the
  repo root, no duplication risk for future releases.

`ruff check src/ tests/` clean. `pytest -q` 391 passed, 1 skipped.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v1.5.1

Toggle v1.5.1's commit message
refactor: address /simplify findings; revise version to 1.5.1

Cleanups on top of the prior commit, then revising the version bump from
1.6.0 to 1.5.1 to keep the release patch-scoped.

Code:
- ASCII-only stderr (drop unicode glyphs in workflows complete-step hint),
  matching the project's Windows console convention.
- complete-step now runs the mutation + advance-hint GET in a single
  event loop / shared httpx client, saving a TLS handshake and a
  rate-limiter file roundtrip per call.
- Extract `_workflow_state(workflow)` so `workflows next` and
  `_emit_advance_hint` share the "completed_at-vs-active_step" branch.
- Order swap in `output_result`: `_filter_fields` runs before
  `_strip_html_keys` so we don't recurse into fields we're about to drop.
- Put `comments` directly in `_GET_DEFAULT_FIELDS` and drop the dense
  conditional concatenation.
- Trim narrative comments down to one-liners; better `--no-advance-hint`
  help text noting the saved API call.

Tests:
- `test_complete_step_no_advance_hint_skips_followup` now asserts
  `result.stderr == ""` (user-visible behavior) instead of a
  call_count implementation detail.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

v1.5.0

Toggle v1.5.0's commit message
chore: bump version to 1.5.0

Bundles three task/contact UX improvements:
- feat(tasks): kebab-case --frame accepted; document Sunday "next_week" quirk (#18, #19)
- feat(contacts): top-level --tags flag on update + add subcommands (#20)
- fix(comments): align --no-comments code and docs; contacts get does not have a comment flag (#21)

Also re-syncs plugins/ and codex-skill/ skill mirrors via scripts/sync-plugin.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>