Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
449 commits
Select commit Hold shift + click to select a range
b0e10c4
chore(deps): bump proptest from 1.10.0 to 1.11.0
dependabot[bot] Mar 29, 2026
22c61d2
chore(deps): bump insta from 1.46.3 to 1.47.1
dependabot[bot] Mar 29, 2026
ab5aa39
Merge pull request #76 from Zious11/feat/sprint-current-limit
Zious11 Mar 29, 2026
d7872fa
chore: bump version to 0.4.0-dev.5
Zious11 Mar 29, 2026
f27e2ae
Merge pull request #80 from Zious11/chore/bump-v0.4.0-dev.5
Zious11 Mar 29, 2026
6f45c0f
Merge pull request #77 from Zious11/dependabot/github_actions/codecov…
Zious11 Mar 29, 2026
23617d7
Merge pull request #78 from Zious11/dependabot/cargo/proptest-1.11.0
Zious11 Mar 29, 2026
448f670
Merge pull request #79 from Zious11/dependabot/cargo/insta-1.47.1
Zious11 Mar 29, 2026
786fd31
docs: add design spec for issue edit description (#82)
Zious11 Apr 1, 2026
a9e42da
docs: fix empty description behavior in edit spec (#82)
Zious11 Apr 1, 2026
c69699f
docs: add implementation plan for issue edit description (#82)
Zious11 Apr 1, 2026
df67ac7
feat: add --description, --description-stdin, --markdown flags to iss…
Zious11 Apr 1, 2026
00d255e
feat: wire description handling into issue edit handler (#82)
Zious11 Apr 1, 2026
ce7b686
test: add integration and CLI tests for issue edit description (#82)
Zious11 Apr 1, 2026
8723944
style: fix rustfmt in CLI smoke test (#82)
Zious11 Apr 1, 2026
7b70a30
fix: address Copilot review — add conflicts_with to create, update sp…
Zious11 Apr 1, 2026
e1f7ef7
fix: hold env mutex for entire test duration to prevent flaky coverag…
Zious11 Apr 1, 2026
0fe81a5
fix: use tokio::sync::Mutex in project_meta tests to satisfy clippy
Zious11 Apr 1, 2026
bb37547
Merge pull request #91 from Zious11/feat/issue-edit-description
Zious11 Apr 1, 2026
a3eb50c
docs: add design spec for issue list --asset filter (#88)
Zious11 Apr 1, 2026
74b8e08
docs: add implementation plan for issue list --asset filter (#88)
Zious11 Apr 1, 2026
446c2bc
fix: correct AQL attribute from objectKey to Key in spec and plan (#88)
Zious11 Apr 1, 2026
f23e0a2
refactor: widen filter_cmdb_fields to return (id, name) pairs (#88)
Zious11 Apr 1, 2026
8bb7c5f
refactor: update CmdbFieldsCache to store (id, name) pairs (#88)
Zious11 Apr 1, 2026
615c0f6
refactor: update CMDB field callers for (id, name) pairs (#88)
Zious11 Apr 1, 2026
760854c
test: update CMDB integration tests for (id, name) pairs (#88)
Zious11 Apr 1, 2026
675b41b
feat: add validate_asset_key and build_asset_clause (#88)
Zious11 Apr 1, 2026
64106d3
feat: add --asset filter to issue list (#88)
Zious11 Apr 1, 2026
f379402
test: update build_filter_clauses tests for --asset parameter (#88)
Zious11 Apr 1, 2026
0ddd4b6
fix: address review — cache miss on old format, deduplicate CMDB fetc…
Zious11 Apr 1, 2026
1366229
fix: address Copilot review — debug_assert, rename method, spec fixes…
Zious11 Apr 1, 2026
f350483
Merge pull request #92 from Zious11/feat/issue-list-asset-filter
Zious11 Apr 1, 2026
f2348a7
docs: add design spec for resolving asset-typed custom fields (#90)
Zious11 Apr 1, 2026
f51b658
docs: add implementation plan for resolving asset custom fields (#90)
Zious11 Apr 1, 2026
5662fdb
feat: add extract_linked_assets_per_field for per-field asset display…
Zious11 Apr 1, 2026
dd506e8
feat: add enrich_json_assets for JSON output enrichment (#90)
Zious11 Apr 1, 2026
6fa4941
feat: per-field asset rows and JSON enrichment in issue view (#90)
Zious11 Apr 1, 2026
d640eb7
feat: enrich CMDB fields in issue list JSON output (#90)
Zious11 Apr 1, 2026
1aa253f
feat: show CMDB custom fields in project fields output (#90)
Zious11 Apr 1, 2026
3853ac4
fix: address clippy and fmt — use from_ref, fix formatting (#90)
Zious11 Apr 1, 2026
464932c
fix: address review — eliminate name-based reverse lookup in handle_v…
Zious11 Apr 1, 2026
ca1db3a
fix: address Copilot review — handle single-object CMDB field shape i…
Zious11 Apr 1, 2026
15746ac
Merge pull request #93 from Zious11/feat/resolve-asset-custom-fields
Zious11 Apr 1, 2026
0ac46ba
docs: add design spec for assets tickets status filtering (#89)
Zious11 Apr 1, 2026
914b443
docs: add implementation plan for assets tickets status filtering (#89)
Zious11 Apr 1, 2026
681dc91
feat: add --open and --status flags to assets tickets (#89)
Zious11 Apr 1, 2026
0d997b9
feat: wire --open and --status filtering into assets tickets (#89)
Zious11 Apr 1, 2026
297d994
test: add unit tests for assets tickets status filtering (#89)
Zious11 Apr 1, 2026
f969b8d
test: add CLI smoke test for --open/--status conflict (#89)
Zious11 Apr 1, 2026
5cab333
fix: address review — preserve JSON envelope for unfiltered assets ti…
Zious11 Apr 1, 2026
00140e3
Merge pull request #94 from Zious11/feat/assets-tickets-status-filter
Zious11 Apr 1, 2026
6ebf04c
docs: update README and CLAUDE.md for asset features (#88, #89, #90)
Zious11 Apr 1, 2026
d86e9b9
fix: use annotated tags in release skill for best practice compliance
Zious11 Apr 1, 2026
6c28cfc
fix: improve release skill — add clippy, tag verification, expand ste…
Zious11 Apr 1, 2026
79cda9c
docs: improve README — add Why section, shell completions, exit codes…
Zious11 Apr 1, 2026
44703df
docs: improve CLAUDE.md — add missing files, gotchas, trim verbose de…
Zious11 Apr 1, 2026
bdc9bda
Merge pull request #95 from Zious11/chore/docs-refresh
Zious11 Apr 1, 2026
a9de066
refactor: replace QueueIssue with QueueIssueKey for two-step fetch (#84)
Zious11 Apr 1, 2026
a241b5b
fix: use two-step fetch in queue view for full issue fields (#84)
Zious11 Apr 1, 2026
298c31c
fix: update queue integration tests for get_queue_issue_keys (#84)
Zious11 Apr 1, 2026
b274dab
test: add unit tests for queue view JQL building and reordering (#84)
Zious11 Apr 1, 2026
b6833ff
test: add CLI smoke tests for queue commands (#84)
Zious11 Apr 1, 2026
65289d1
style: move test imports to top of module, add JQL length comment (#84)
Zious11 Apr 1, 2026
cf746c3
fix: address Copilot review — add default limit, fix doc comment (#84)
Zious11 Apr 1, 2026
f341f85
Merge pull request #96 from Zious11/fix/queue-view-fields-84
Zious11 Apr 1, 2026
e8bd7b2
fix: show attributes by default in assets view (#85)
Zious11 Apr 1, 2026
b767254
test: add CLI smoke test for assets view --no-attributes (#85)
Zious11 Apr 1, 2026
f47d32c
test: add integration test for attributes filtering (#85)
Zious11 Apr 1, 2026
13a07f2
docs: add spec and implementation plan for assets view default attrib…
Zious11 Apr 1, 2026
38fd678
fix: address Copilot review — rename test, update spec accuracy (#85)
Zious11 Apr 1, 2026
8805e9e
Merge pull request #97 from Zious11/fix/assets-view-default-attribute…
Zious11 Apr 1, 2026
c58ad6b
docs: add spec for sprint issue management (#83)
Zious11 Apr 1, 2026
274338f
docs: add implementation plan for sprint issue management (#83)
Zious11 Apr 1, 2026
137bce1
feat: add API methods for sprint issue management (#83)
Zious11 Apr 1, 2026
1335224
feat: add Add and Remove variants to SprintCommand (#83)
Zious11 Apr 1, 2026
ab7a23a
feat: implement sprint add and remove handlers (#83)
Zious11 Apr 1, 2026
c4dc6f8
style: use output::render_json and add doc comments (#83)
Zious11 Apr 1, 2026
4ec115e
test: add CLI smoke tests for sprint add and remove (#83)
Zious11 Apr 1, 2026
f55b605
test: add integration tests for sprint add and remove (#83)
Zious11 Apr 1, 2026
7f87e21
fix: refactor handle_add to fix clippy too_many_arguments (#83)
Zious11 Apr 1, 2026
b059add
docs: update README and CLAUDE.md for sprint add/remove (#83)
Zious11 Apr 1, 2026
7af3af0
fix: address Copilot review — add body matchers, fix spec accuracy (#83)
Zious11 Apr 1, 2026
8da1c88
Merge pull request #98 from Zious11/feat/sprint-issue-management-83
Zious11 Apr 1, 2026
8fce3f4
feat: resolve attribute names in assets search (#86)
Zious11 Apr 2, 2026
badeaa1
fix: resolve merge conflict with develop in tests/assets.rs
Zious11 Apr 2, 2026
7de38c7
fix: address Copilot review — RAII env guard, fallback attribute disp…
Zious11 Apr 2, 2026
6e77890
Merge pull request #99 from Zious11/feat/assets-search-attribute-name…
Zious11 Apr 2, 2026
600ab40
docs: add spec for assets schema discovery (#87)
Zious11 Apr 2, 2026
cd61c92
docs: add includeObjectCounts flag to objecttypes/flat spec
Zious11 Apr 2, 2026
9e602db
docs: add implementation plan for assets schema discovery (#87)
Zious11 Apr 2, 2026
92d9823
feat(types): add ObjectSchema and ObjectTypeEntry serde structs (#87)
Zious11 Apr 2, 2026
7070a23
feat(types): extend ObjectTypeAttributeDef with defaultType, referenc…
Zious11 Apr 2, 2026
d5f16c9
feat(api): add list_object_schemas and list_object_types methods (#87)
Zious11 Apr 2, 2026
7b0b071
feat(cli): add schemas, types, schema subcommand definitions (#87)
Zious11 Apr 2, 2026
44d357e
feat(cli): implement handle_schemas for assets schemas command (#87)
Zious11 Apr 2, 2026
b3cfa87
feat(cli): implement handle_types for assets types command (#87)
Zious11 Apr 2, 2026
8cea4e1
feat(cli): implement handle_schema for assets schema command (#87)
Zious11 Apr 2, 2026
bf2ff99
test: add unit tests for format_attribute_type (#87)
Zious11 Apr 2, 2026
5e2b9ef
docs: add assets schema discovery commands to CLAUDE.md and README (#87)
Zious11 Apr 2, 2026
5c20d35
fix: add empty-schemas guard to handle_schemas, fix tempdir leak in t…
Zious11 Apr 2, 2026
1a27cba
style: fix rustfmt in handle_schemas (#87)
Zious11 Apr 2, 2026
97fad8d
fix: handle cross-schema duplicate type names in assets schema (#87)
Zious11 Apr 2, 2026
15f6515
Merge pull request #100 from Zious11/feat/assets-schema-discovery-87
Zious11 Apr 2, 2026
9da5a51
chore: bump version to 0.4.0-dev.6
Zious11 Apr 2, 2026
a1e63b0
docs: add design spec for cache dedup refactor (#104)
Zious11 Apr 2, 2026
795db54
docs: add doc comment and corrupt test guidance to cache dedup spec (…
Zious11 Apr 2, 2026
f48dc45
docs: add implementation plan for cache dedup refactor (#104)
Zious11 Apr 2, 2026
a68b4be
test: add corrupt-file tests for team, workspace, project_meta caches…
Zious11 Apr 2, 2026
fe61166
refactor: add Expiring trait and generic read_cache/write_cache (#104)
Zious11 Apr 2, 2026
c28de1e
refactor: migrate 3 whole-file caches to generic read_cache/write_cac…
Zious11 Apr 2, 2026
b724625
docs: add doc comments to keyed cache functions (#104)
Zious11 Apr 2, 2026
96360d4
docs: clarify error semantics in cache doc comments (#104)
Zious11 Apr 2, 2026
ffb3710
fix: replace exists() check with ErrorKind::NotFound match in read_ca…
Zious11 Apr 2, 2026
a61d5d4
Merge pull request #116 from Zious11/refactor/cache-dedup-104
Zious11 Apr 2, 2026
040c52c
feat: add search_assignable_users API method (#105)
Zious11 Apr 2, 2026
b4a0f1f
feat: add resolve_assignee helper for issue-scoped user resolution (#…
Zious11 Apr 2, 2026
821237a
fix: resolve --to display names to account IDs before assignment (#105)
Zious11 Apr 2, 2026
d94c3c6
test: add integration tests for assign --to user resolution (#105)
Zious11 Apr 2, 2026
1269914
style: fix rustfmt formatting in users.rs and issue_commands.rs (#105)
Zious11 Apr 2, 2026
384fbb1
fix: improve error messages and doc comment accuracy (#105)
Zious11 Apr 2, 2026
13602f6
fix: add actionable suggestion to user-not-found error message (#105)
Zious11 Apr 2, 2026
fbad837
fix: address Copilot review — add query_param matchers, include assig…
Zious11 Apr 2, 2026
fcba388
Merge pull request #118 from Zious11/fix/assign-to-105
Zious11 Apr 2, 2026
be1d41f
test: add integration test for labels/parent/issuelinks in search res…
Zious11 Apr 2, 2026
95aa7f6
fix: add labels, parent, issuelinks to search_issues field list (#107)
Zious11 Apr 2, 2026
248c939
test: add body_partial_json matcher to verify search requests labels/…
Zious11 Apr 2, 2026
a35c423
Merge pull request #119 from Zious11/fix/list-missing-fields-107
Zious11 Apr 2, 2026
29b86f2
feat: add search_assignable_users_by_project API method (#106)
Zious11 Apr 2, 2026
117d2ac
feat: add resolve_assignee_by_project helper (#106)
Zious11 Apr 2, 2026
fe65d71
feat: add --to flag to issue create for assignment at creation (#106)
Zious11 Apr 2, 2026
f61f5f0
test: add integration tests for issue create --to flag (#106)
Zious11 Apr 2, 2026
f8c9992
docs: address PR review — improve comments and doc accuracy (#106)
Zious11 Apr 2, 2026
f342e89
fix: address Copilot review — correct doc comment to say single proje…
Zious11 Apr 2, 2026
e08bdd0
Merge pull request #121 from Zious11/worktree-feat+create-issue-assig…
Zious11 Apr 2, 2026
b2c4163
docs: add design spec for issue move status name matching (#108)
Zious11 Apr 2, 2026
5756fa5
docs: add implementation plan for issue move status name matching (#108)
Zious11 Apr 2, 2026
3d9e588
test: add transitions_response_with_status fixture (#108)
Zious11 Apr 3, 2026
773e95a
feat: accept target status name in issue move matching (#108)
Zious11 Apr 3, 2026
6cfcad4
test: add integration tests for issue move status name matching (#108)
Zious11 Apr 3, 2026
6326e70
fix: address PR review — idempotency check and unwrap removal (#108)
Zious11 Apr 3, 2026
69bff14
fix: address Copilot review — hoist to_lowercase and align spec (#108)
Zious11 Apr 3, 2026
7e72d08
Merge pull request #124 from Zious11/worktree-feat-move-status-108
Zious11 Apr 3, 2026
253ad71
docs: add design spec for handle_list error propagation (#32)
Zious11 Apr 3, 2026
c04c3cd
docs: add edge cases section to handle_list error propagation spec (#32)
Zious11 Apr 3, 2026
7ad404e
docs: add implementation plan for handle_list error propagation (#32)
Zious11 Apr 3, 2026
6f182c5
fix: propagate get_board_config errors in handle_list (#32)
Zious11 Apr 3, 2026
221ccef
fix: propagate list_sprints errors in handle_list (#32)
Zious11 Apr 3, 2026
05f0a9b
style: apply cargo fmt to error propagation changes (#32)
Zious11 Apr 3, 2026
c840777
test: add exit code assertions to error propagation tests (#32)
Zious11 Apr 3, 2026
eaef9bc
fix: address Copilot review — search error chain for exit codes (#32)
Zious11 Apr 3, 2026
7cf7d59
Merge pull request #125 from Zious11/fix/handle-list-error-propagatio…
Zious11 Apr 3, 2026
fe4cee2
docs: add design spec for partial_match duplicate name disambiguation…
Zious11 Apr 3, 2026
b6921ce
docs: add implementation plan for partial_match duplicate name disamb…
Zious11 Apr 3, 2026
0f6be01
chore: add .claude/worktrees/ to .gitignore
Zious11 Apr 3, 2026
4b8a5fe
fix: detect duplicate exact matches in partial_match (#117)
Zious11 Apr 3, 2026
f419c8c
fix: add ExactMultiple match arms to all partial_match callers (#117)
Zious11 Apr 3, 2026
a9cdc22
style: apply cargo fmt to ExactMultiple changes (#117)
Zious11 Apr 3, 2026
efc8ab2
fix: disambiguate users and teams with duplicate display names (#117,…
Zious11 Apr 3, 2026
90d0f25
fix: remove misleading account prefix from duplicate user error label…
Zious11 Apr 3, 2026
31f7754
fix: use index-based lookup in Exact and Ambiguous branches (#117)
Zious11 Apr 3, 2026
f0039c5
fix: return error for duplicate schema names and add test coverage (#…
Zious11 Apr 3, 2026
0e6df68
fix: address Copilot review — always show accountId in duplicate user…
Zious11 Apr 3, 2026
c3d4dc7
Merge pull request #128 from Zious11/fix/partial-match-duplicate-name…
Zious11 Apr 3, 2026
45cce7d
docs: add design spec for ExactMultiple simplification (#126, #127)
Zious11 Apr 3, 2026
5ee1c83
docs: add implementation plan for ExactMultiple simplification (#126,…
Zious11 Apr 3, 2026
a356fc9
refactor: simplify ExactMultiple variant from Vec<String> to String (…
Zious11 Apr 3, 2026
9c2080d
refactor: replace unreachable ExactMultiple arms and update filtering…
Zious11 Apr 3, 2026
d199ec0
fix: replace unreachable!() with graceful fallback for non-code-enfor…
Zious11 Apr 3, 2026
eb74683
test: add unit tests for resolve_schema in assets.rs (#126)
Zious11 Apr 3, 2026
7725ce5
docs: clarify ExactMultiple doc comment to specify first matching can…
Zious11 Apr 3, 2026
acf423b
docs: sync spec and plan with actual implementation — graceful fallba…
Zious11 Apr 3, 2026
27c2dee
refactor: use consistent graceful fallback for all 6 ExactMultiple ar…
Zious11 Apr 3, 2026
e109888
Merge pull request #130 from Zious11/refactor/simplify-exact-multiple…
Zious11 Apr 3, 2026
1f65b84
test: add integration test for resolve_queue_by_name error formatting…
Zious11 Apr 3, 2026
97c725d
Merge pull request #132 from Zious11/test/queue-resolve-error-129
Zious11 Apr 3, 2026
8bd3388
feat: show asset name only in issue list table (#102)
Zious11 Apr 3, 2026
fdcfb6b
fix: address Copilot review — use backticks in doc comment (#102)
Zious11 Apr 3, 2026
895870b
Merge pull request #133 from Zious11/feat/assets-name-only-list-102
Zious11 Apr 3, 2026
6bd3880
docs: add design spec for issue create browse URL (#112)
Zious11 Apr 4, 2026
3a9375f
docs: add implementation plan for issue create browse URL (#112)
Zious11 Apr 4, 2026
f06f3d1
feat: add browse URL to issue create output (#112)
Zious11 Apr 4, 2026
306b7b2
docs: address Copilot review — align spec and plan with implemented t…
Zious11 Apr 4, 2026
1683ca7
Merge pull request #136 from Zious11/feat/issue-create-url-112
Zious11 Apr 4, 2026
e13af63
docs: add design spec for case-insensitive queue name test (#131)
Zious11 Apr 4, 2026
554f7b0
docs: add implementation plan for case-insensitive queue name test (#…
Zious11 Apr 4, 2026
b2d8eb4
test: add case-insensitive duplicate queue name integration test (#131)
Zious11 Apr 4, 2026
433ccfe
docs: improve test comments for clarity (#131)
Zious11 Apr 4, 2026
4bcc305
Merge pull request #137 from Zious11/feat/queue-case-insensitive-test…
Zious11 Apr 4, 2026
100972e
docs: add design spec for issue assign/create --account-id (#115)
Zious11 Apr 4, 2026
89bd47a
docs: clarify error codes for invalid accountId in spec (#115)
Zious11 Apr 4, 2026
58f693a
docs: add implementation plan for issue assign/create --account-id (#…
Zious11 Apr 4, 2026
6afd041
feat: add --account-id flag to issue assign (#115)
Zious11 Apr 4, 2026
034729d
feat: add --account-id flag to issue create, fix assignee field to ac…
Zious11 Apr 4, 2026
458c70a
docs: improve comments for --account-id display name trade-off (#115)
Zious11 Apr 4, 2026
187ca58
Merge pull request #143 from Zious11/feat/issue-assign-account-id-115
Zious11 Apr 4, 2026
77f8d31
docs: mention "me" keyword in Assign --to doc comment (#138)
Zious11 Apr 4, 2026
296f856
Merge pull request #144 from Zious11/docs/assign-to-doc-comment-138
Zious11 Apr 4, 2026
3bdcd15
test: add clap conflicts_with smoke tests for all untested flag confl…
Zious11 Apr 5, 2026
a68e329
Merge pull request #145 from Zious11/test/clap-conflicts-smoke-140
Zious11 Apr 5, 2026
d77ad6b
test: add error propagation test for invalid accountId (#141)
Zious11 Apr 5, 2026
6dbccd2
review: use downcast_ref for structurally typed error assertion
Zious11 Apr 5, 2026
c38050a
Merge pull request #147 from Zious11/test/invalid-account-id-error-141
Zious11 Apr 5, 2026
3f70de2
test: add cli_handler.rs with assign --account-id handler test (#139)
Zious11 Apr 5, 2026
268261d
test: add assign handler tests for --to, self-assign, --unassign, ide…
Zious11 Apr 5, 2026
5f7b335
test: add create handler tests for --account-id, --to, and basic crea…
Zious11 Apr 5, 2026
d91da26
review: strengthen assertions and add explicit expect(0) on idempoten…
Zious11 Apr 5, 2026
f0e9fb6
fix: limit tokio worker threads to 2 per test to avoid CI oversubscri…
Zious11 Apr 5, 2026
a15dca5
Merge pull request #149 from Zious11/test/cli-handler-139
Zious11 Apr 5, 2026
36eabe4
docs: add design spec for snapshot tests on write command JSON output…
Zious11 Apr 5, 2026
2e05bb8
docs: add implementation plan for snapshot tests on JSON output (#135)
Zious11 Apr 5, 2026
b458c97
docs: fix snapshot acceptance commands in plan after Perplexity valid…
Zious11 Apr 5, 2026
0474efb
feat: add JSON output builder functions with snapshot tests (#135)
Zious11 Apr 5, 2026
cfe6f7b
refactor: replace inline json!() with builder functions in issue hand…
Zious11 Apr 5, 2026
786dc89
refactor: extract sprint JSON output builders with snapshot tests (#135)
Zious11 Apr 5, 2026
df2a1bf
review: fix formatting, narrow module visibility, add sprint doc comm…
Zious11 Apr 5, 2026
b0681d8
docs: align spec and plan with implementation (mod visibility, snap f…
Zious11 Apr 5, 2026
21cdd14
Merge pull request #154 from Zious11/worktree-test-snapshot-json-outp…
Zious11 Apr 5, 2026
755ada0
test: add handler-level tests for --to me keyword and idempotent name…
Zious11 Apr 5, 2026
e7acd39
review: improve comment precision and assertion coverage (#148)
Zious11 Apr 5, 2026
edb49c4
Merge pull request #155 from Zious11/worktree-handler-me-keyword-148
Zious11 Apr 5, 2026
f012a87
fix: add missing conflicts_with between --to and --unassign on issue …
Zious11 Apr 5, 2026
4751905
Merge pull request #156 from Zious11/worktree-fix-to-unassign-conflic…
Zious11 Apr 5, 2026
4031620
docs: add design spec for handler-level --to me and idempotent tests …
Zious11 Apr 5, 2026
720c504
docs: add implementation plan for handler-level --to me tests (#148)
Zious11 Apr 5, 2026
e0e709d
chore: bump version to 0.4.0-dev.7
Zious11 Apr 5, 2026
7618d66
fix: preserve original error in parse_error fallback (#142)
Zious11 Apr 5, 2026
9974d0a
Merge pull request #157 from Zious11/worktree-fix-parse-error-fallbac…
Zious11 Apr 5, 2026
bb58283
fix: add idempotency check to issue assign --unassign (#153)
Zious11 Apr 5, 2026
d772456
review: add snapshot test for idempotent unassign response (#153)
Zious11 Apr 5, 2026
a2c7590
Merge pull request #158 from Zious11/worktree-fix-unassign-idempotent…
Zious11 Apr 5, 2026
6d5e86b
refactor: extract shared default fields constant for issue endpoints …
Zious11 Apr 5, 2026
cca636e
Merge pull request #159 from Zious11/worktree-refactor-shared-fields-120
Zious11 Apr 5, 2026
e04a46c
refactor: extract shared user disambiguation logic from resolve helpe…
Zious11 Apr 5, 2026
c89d247
review: preserve resolve_user error message and restore design commen…
Zious11 Apr 5, 2026
e10e62c
style: apply rustfmt to closure formatting (#123)
Zious11 Apr 5, 2026
c7a8041
Merge pull request #160 from Zious11/worktree-refactor-disambiguate-u…
Zious11 Apr 5, 2026
54e4b0f
test: add unit tests for disambiguate_user helper branches (#161)
Zious11 Apr 5, 2026
54a4fbd
Merge pull request #162 from Zious11/worktree-test-disambiguate-user-161
Zious11 Apr 5, 2026
77d33af
docs: add design spec for date filter flags (#113)
Zious11 Apr 5, 2026
e2eda64
docs: add implementation plan for date filter flags (#113)
Zious11 Apr 5, 2026
0fbbbbd
feat: add validate_date function for date filter flags (#113)
Zious11 Apr 5, 2026
abed9c6
feat: add date filter CLI flags to issue list (#113)
Zious11 Apr 5, 2026
321a46a
feat: wire date filter flags into JQL generation (#113)
Zious11 Apr 5, 2026
1f7b1c3
test: add smoke test for --created-after/--recent conflict (#113)
Zious11 Apr 5, 2026
35e7fb9
test: add handler tests for date filter flags (#113)
Zious11 Apr 5, 2026
297b5e6
test: add unit tests for date filter clauses in build_filter_clauses …
Zious11 Apr 5, 2026
596a921
Merge pull request #163 from Zious11/worktree-feat-date-filters-113
Zious11 Apr 5, 2026
03de147
chore: bump version to 0.4.0-dev.8
Zious11 Apr 5, 2026
6eafc12
Merge pull request #164 from Zious11/chore/bump-v0.4.0-dev.8
Zious11 Apr 5, 2026
dc37a2e
chore: bump version to 0.4.0
Zious11 Apr 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 40 additions & 15 deletions .claude/commands/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,23 @@ ephemeral pre-releases and the stable version is chosen at release time.
3. Bump the version in `Cargo.toml` to the dev version (e.g., `0.3.0-dev.1`)
4. Run `cargo check` to update `Cargo.lock`
5. Run `cargo fmt --all`
6. Run `cargo test` to verify everything passes
7. Commit the version bump:
6. Run `cargo clippy -- -D warnings` to verify no lint issues
7. Run `cargo test` to verify everything passes
8. Commit the version bump:
```
git commit -m "chore: bump version to X.Y.Z-dev.N"
```
8. Tag: `git tag vX.Y.Z-dev.N`
9. Push commit and tag:
9. Tag (annotated — required to trigger the Release workflow and show as verified):
```
git tag -a vX.Y.Z-dev.N -m "chore: release vX.Y.Z-dev.N"
```
10. Push commit and tag:
```
git push origin develop
git push origin vX.Y.Z-dev.N
```
10. Print: "Dev release vX.Y.Z-dev.N tagged and pushed. GitHub Actions will build and publish pre-release binaries."
11. Provide the releases URL
11. Print: "Dev release vX.Y.Z-dev.N tagged and pushed. GitHub Actions will build and publish pre-release binaries."
12. Provide the releases URL

---

Expand Down Expand Up @@ -89,21 +93,41 @@ If already on `develop` or `main`, skip to Stage 2.
## Stage 3: Tag & Release

1. Checkout `main` and pull latest
2. Verify the version in `Cargo.toml` is the stable version (no pre-release suffix)
2. Verify the version in `Cargo.toml` matches the intended release (no pre-release suffix):
```
grep '^version' Cargo.toml
```
3. Run `cargo check` to update `Cargo.lock`
4. Run `cargo fmt --all` to ensure formatting is correct
5. Run `cargo test` to verify everything passes
6. If any changes from steps 3-5, commit them on a branch, PR into `main`
7. After merge confirmation, tag `vX.Y.Z` on main
8. Push the tag to trigger the release workflow
9. Print: "Release vX.Y.Z tagged and pushed. GitHub Actions will build and publish binaries."
10. Provide the releases URL
11. Clean up dev tags for this release cycle:
5. Run `cargo clippy -- -D warnings` to verify no lint issues
6. Run `cargo test` to verify everything passes
7. If any changes from steps 3-6, commit them on a branch, PR into `main`
8. After merge confirmation, create an annotated tag on main:
```
git tag -a vX.Y.Z -m "chore: release vX.Y.Z"
```
9. Verify the tag matches `Cargo.toml`:
```
TAG_VERSION=$(git describe --tags --exact-match | sed 's/^v//')
CARGO_VERSION=$(grep '^version' Cargo.toml | head -1 | sed 's/.*"\(.*\)".*/\1/')
```
If they don't match, stop and report the mismatch.
10. Push the tag to trigger the release workflow
11. Print: "Release vX.Y.Z tagged and pushed. GitHub Actions will build and publish binaries."
12. Provide the releases URL
13. Clean up dev tags for this release cycle:
```
git tag -l "vX.Y.Z-dev.*" | xargs -I {} git push origin :refs/tags/{}
git tag -l "vX.Y.Z-dev.*" | xargs git tag -d
```
12. Checkout `develop`, merge `main` back into `develop`, bump to next dev version, push
14. Merge `main` back into `develop` and bump to next dev version:
- Checkout `develop` and pull latest
- Merge `main` into `develop`: `git merge main`
- If conflicts, resolve and commit
- Bump `Cargo.toml` to next optimistic dev version (e.g., `0.4.0` → `0.5.0-dev.1`)
- Run `cargo check` to update `Cargo.lock`
- Commit: `git commit -m "chore: bump version to X.Y.Z-dev.1"`
- Push: `git push origin develop`

## Rules

Expand All @@ -115,3 +139,4 @@ If already on `develop` or `main`, skip to Stage 2.
- Ask the user before every destructive or visible action
- If any step fails, stop and report the error — don't continue
- Dev tags go on `develop`, stable tags go on `main`
- Always verify tag/version match before pushing tags
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ jobs:
- uses: taiki-e/install-action@cargo-llvm-cov
- uses: Swatinem/rust-cache@v2
- run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
- uses: codecov/codecov-action@v5
- uses: codecov/codecov-action@v6
with:
files: lcov.info
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ Thumbs.db

# Worktrees
.trees/
.worktrees/
.claude/worktrees/
40 changes: 31 additions & 9 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,39 +14,55 @@ src/
│ ├── issue/ # issue commands (split by operation theme)
│ │ ├── mod.rs # dispatch + re-exports
│ │ ├── format.rs # row formatting, headers, points display
│ │ ├── list.rs # list + view + comments (read operations)
│ │ ├── list.rs # list + view + comments (read operations, unified JQL composition)
│ │ ├── create.rs # create + edit (field-building)
│ │ ├── workflow.rs # move + transitions + assign + comment + open
│ │ ├── links.rs # link + unlink + link-types
│ │ └── helpers.rs # team/points resolution, prompts
│ │ ├── helpers.rs # team/points resolution, user resolution, prompts
│ │ └── assets.rs # linked assets (issue→asset lookup)
│ ├── assets.rs # assets search/view/tickets/schemas/types/schema (search enrichment, schema discovery)
│ ├── board.rs # board list/view
│ ├── sprint.rs # sprint list/current (scrum-only, errors on kanban)
│ ├── sprint.rs # sprint list/current/add/remove (scrum-only, errors on kanban)
│ ├── worklog.rs # worklog add/list
│ ├── team.rs # team list (with cache + lazy org discovery)
│ ├── auth.rs # auth login (API token default, --oauth for OAuth 2.0), auth status
│ ├── init.rs # Interactive setup (prefetches org metadata + team cache + story points field)
│ └── project.rs # project fields (issue types, priorities for a project)
│ ├── project.rs # project fields (types, priorities, statuses, CMDB fields)
│ └── queue.rs # queue list/view (JSM service desks)
├── api/
│ ├── client.rs # JiraClient — HTTP methods, auth headers, rate limit retry, 429/401 handling
│ ├── auth.rs # OAuth 2.0 flow, API token storage, keychain read/write, token refresh
│ ├── pagination.rs # Offset-based (most endpoints) + cursor-based (JQL search)
│ ├── rate_limit.rs # Retry-After parsing
│ ├── assets/ # Assets/CMDB API call implementations
│ │ ├── workspace.rs # workspace ID discovery + cache
│ │ ├── linked.rs # CMDB field discovery, asset extraction/enrichment (per-field + JSON)
│ │ ├── objects.rs # AQL search, get object, resolve key
│ │ └── tickets.rs # connected tickets
│ └── jira/ # Jira-specific API call implementations (one file per resource)
│ ├── issues.rs # search, get, create, edit, list comments
│ ├── boards.rs # list boards, get board config
│ ├── sprints.rs # list sprints, get sprint issues
│ ├── fields.rs # list fields, story points field discovery
│ ├── fields.rs # list fields, story points + CMDB field discovery
│ ├── statuses.rs # get all statuses (global, not project-scoped)
│ ├── links.rs # create/delete issue links, list link types
│ ├── teams.rs # org metadata (GraphQL), list teams
│ ├── worklogs.rs # add/list worklogs
│ ├── projects.rs # project details
│ └── users.rs # current user, assignable users
│ └── users.rs # current user, user search, assignable users
│ ├── jsm/ # JSM-specific API call implementations
│ │ ├── servicedesks.rs # list service desks, project meta orchestration
│ │ └── queues.rs # list queues, get queue issues
├── types/assets/ # Serde structs for Assets API responses (AssetObject, ConnectedTicket, LinkedAsset, etc.)
├── types/jira/ # Serde structs for API responses (Issue, Board, Sprint, User, Team, etc.)
├── cache.rs # XDG cache (~/.cache/jr/) — team list with 7-day TTL
├── types/jsm/ # Serde structs for JSM API responses (ServiceDesk, Queue, etc.)
├── cache.rs # XDG cache (~/.cache/jr/) — team list, project meta, workspace ID (all 7-day TTL)
├── config.rs # Global (~/.config/jr/config.toml) + per-project (.jr.toml), figment layering
├── output.rs # Table (comfy-table) and JSON formatting
├── adf.rs # Atlassian Document Format: text→ADF, markdown→ADF, ADF→text
├── duration.rs # Worklog duration parser (2h, 1h30m, 1d, 1w)
├── lib.rs # Crate root (re-exports for integration tests)
├── jql.rs # JQL utilities: escaping, validation, asset clause builder
├── partial_match.rs # Case-insensitive substring matching with disambiguation
└── error.rs # JrError enum with exit codes (0/1/2/64/78/130)
```
Expand Down Expand Up @@ -93,8 +109,7 @@ See `docs/adr/` for detailed rationale:

- **v1 design spec:** `docs/superpowers/specs/2026-03-21-jr-jira-cli-design.md`
- **v1 implementation plan:** `docs/superpowers/plans/2026-03-21-jr-implementation.md`
- **Feature specs (post-v1):** `docs/specs/{feature-name}.md`
- **Team assignment spec:** `docs/specs/team-assignment.md`
- **Feature specs (post-v1):** `docs/specs/` — one spec per feature, read before implementing

When adding a new feature:
1. Read this file
Expand All @@ -103,6 +118,13 @@ When adding a new feature:
4. Create a feature spec in `docs/specs/` before implementing
5. Follow TDD — write tests first

## Gotchas

- **Cache format changes:** `~/.cache/jr/cmdb_fields.json` stores `(id, name)` tuples. Old format (ID-only) causes deserialization failure, handled as cache miss. If you change cache structs, old caches auto-expire (7-day TTL) or fail gracefully.
- **`list.rs` is large (~970 lines):** Contains both `handle_list` and `handle_view` plus all JQL composition logic. If modifying, read the full function you're changing — context matters.
- **`aqlFunction()` not `assetsQuery()`:** The Jira Assets JQL function is `aqlFunction()`. It requires the human-readable field **name**, not `cf[ID]` or `customfield_NNNNN`. AQL attribute for object key is `Key` (not `objectKey` — that's the JSON field name).
- **Status category colors are fixed:** `green` = Done, `yellow` = In Progress, `blue-gray` = To Do. These mappings are hardcoded in Jira Cloud across all instances. Used by `--open` filtering.

## AI Agent Notes

- `JR_BASE_URL` env var overrides the configured Jira instance URL (used by tests to inject wiremock)
Expand Down
36 changes: 8 additions & 28 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "jr"
version = "0.3.0"
version = "0.4.0"
edition = "2024"
description = "A fast CLI for Jira Cloud"
repository = "https://github.com/Zious11/jira-cli"
Expand Down Expand Up @@ -30,6 +30,7 @@ tokio = { version = "1", features = ["full"] }
toml = "1"
base64 = "0.22"
chrono = { version = "0.4", features = ["serde"] }
futures = { version = "0.3", default-features = false, features = ["async-await"] }
urlencoding = "2"

[dev-dependencies]
Expand Down
Loading