jira-cli-toolkit 2.5.1rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. jira_cli_toolkit-2.5.1rc1/.env.example +4 -0
  2. jira_cli_toolkit-2.5.1rc1/.github/workflows/ci.yml +44 -0
  3. jira_cli_toolkit-2.5.1rc1/.github/workflows/pages.yml +59 -0
  4. jira_cli_toolkit-2.5.1rc1/.github/workflows/release.yml +137 -0
  5. jira_cli_toolkit-2.5.1rc1/.gitignore +13 -0
  6. jira_cli_toolkit-2.5.1rc1/CHANGELOG.md +36 -0
  7. jira_cli_toolkit-2.5.1rc1/LICENSE +661 -0
  8. jira_cli_toolkit-2.5.1rc1/NOTICE +25 -0
  9. jira_cli_toolkit-2.5.1rc1/PKG-INFO +212 -0
  10. jira_cli_toolkit-2.5.1rc1/README.md +195 -0
  11. jira_cli_toolkit-2.5.1rc1/docs/assets/cli-toolkit-cover-illustrated.png +0 -0
  12. jira_cli_toolkit-2.5.1rc1/docs/assets/cli-toolkit-cover-illustrated.prompt.txt +34 -0
  13. jira_cli_toolkit-2.5.1rc1/docs/assets/cli-toolkit-cover.svg +10 -0
  14. jira_cli_toolkit-2.5.1rc1/docs/branding.md +13 -0
  15. jira_cli_toolkit-2.5.1rc1/docs/install.md +52 -0
  16. jira_cli_toolkit-2.5.1rc1/docs/migration/legacy-commands.md +170 -0
  17. jira_cli_toolkit-2.5.1rc1/docs/migration/upgrade-to-v2.md +200 -0
  18. jira_cli_toolkit-2.5.1rc1/docs/releases/2.5.md +17 -0
  19. jira_cli_toolkit-2.5.1rc1/docs/sprints/v2-upgrade/acceptance.md +93 -0
  20. jira_cli_toolkit-2.5.1rc1/docs/sprints/v2-upgrade/interface-contract.md +99 -0
  21. jira_cli_toolkit-2.5.1rc1/docs/sprints/v2-upgrade/migration.md +66 -0
  22. jira_cli_toolkit-2.5.1rc1/docs/sprints/v2-upgrade/roadmap.md +441 -0
  23. jira_cli_toolkit-2.5.1rc1/docs/sprints/v2.5-api/roadmap.md +128 -0
  24. jira_cli_toolkit-2.5.1rc1/docs/usage.md +238 -0
  25. jira_cli_toolkit-2.5.1rc1/pyproject.toml +29 -0
  26. jira_cli_toolkit-2.5.1rc1/requirements-ci.lock +491 -0
  27. jira_cli_toolkit-2.5.1rc1/scripts/command_tree.py +81 -0
  28. jira_cli_toolkit-2.5.1rc1/scripts/entrypoint.py +11 -0
  29. jira_cli_toolkit-2.5.1rc1/scripts/install.ps1 +86 -0
  30. jira_cli_toolkit-2.5.1rc1/scripts/install.sh +100 -0
  31. jira_cli_toolkit-2.5.1rc1/scripts/release/binary.py +37 -0
  32. jira_cli_toolkit-2.5.1rc1/scripts/release/installer_smoke.py +117 -0
  33. jira_cli_toolkit-2.5.1rc1/scripts/release/manifest.py +43 -0
  34. jira_cli_toolkit-2.5.1rc1/scripts/release/publish.py +51 -0
  35. jira_cli_toolkit-2.5.1rc1/scripts/release/windows_smoke.py +28 -0
  36. jira_cli_toolkit-2.5.1rc1/scripts/smoke.py +33 -0
  37. jira_cli_toolkit-2.5.1rc1/src/jsup/__init__.py +7 -0
  38. jira_cli_toolkit-2.5.1rc1/src/jsup/api.py +352 -0
  39. jira_cli_toolkit-2.5.1rc1/src/jsup/api_spec.py +309 -0
  40. jira_cli_toolkit-2.5.1rc1/src/jsup/application.py +330 -0
  41. jira_cli_toolkit-2.5.1rc1/src/jsup/auth.py +248 -0
  42. jira_cli_toolkit-2.5.1rc1/src/jsup/cli.py +103 -0
  43. jira_cli_toolkit-2.5.1rc1/src/jsup/client.py +412 -0
  44. jira_cli_toolkit-2.5.1rc1/src/jsup/commands.py +369 -0
  45. jira_cli_toolkit-2.5.1rc1/src/jsup/completion.py +56 -0
  46. jira_cli_toolkit-2.5.1rc1/src/jsup/config.py +160 -0
  47. jira_cli_toolkit-2.5.1rc1/src/jsup/credentials.py +125 -0
  48. jira_cli_toolkit-2.5.1rc1/src/jsup/data/callback.json +13 -0
  49. jira_cli_toolkit-2.5.1rc1/src/jsup/fields.py +204 -0
  50. jira_cli_toolkit-2.5.1rc1/src/jsup/maintenance.py +105 -0
  51. jira_cli_toolkit-2.5.1rc1/src/jsup/templates.py +89 -0
  52. jira_cli_toolkit-2.5.1rc1/src/jsup/ui.py +170 -0
  53. jira_cli_toolkit-2.5.1rc1/src/jsup/update.py +328 -0
  54. jira_cli_toolkit-2.5.1rc1/tests/test_api.py +360 -0
  55. jira_cli_toolkit-2.5.1rc1/tests/test_api_spec.py +232 -0
  56. jira_cli_toolkit-2.5.1rc1/tests/test_auth.py +212 -0
  57. jira_cli_toolkit-2.5.1rc1/tests/test_cli.py +376 -0
  58. jira_cli_toolkit-2.5.1rc1/tests/test_client.py +34 -0
  59. jira_cli_toolkit-2.5.1rc1/tests/test_commands.py +87 -0
  60. jira_cli_toolkit-2.5.1rc1/tests/test_fields.py +109 -0
  61. jira_cli_toolkit-2.5.1rc1/tests/test_installers.py +144 -0
  62. jira_cli_toolkit-2.5.1rc1/tests/test_maintenance.py +113 -0
  63. jira_cli_toolkit-2.5.1rc1/tests/test_release.py +39 -0
  64. jira_cli_toolkit-2.5.1rc1/tests/test_reliability.py +93 -0
  65. jira_cli_toolkit-2.5.1rc1/tests/test_templates.py +79 -0
  66. jira_cli_toolkit-2.5.1rc1/tests/test_update.py +192 -0
  67. jira_cli_toolkit-2.5.1rc1/tests/test_website_commands.py +27 -0
  68. jira_cli_toolkit-2.5.1rc1/uv.lock +786 -0
  69. jira_cli_toolkit-2.5.1rc1/web/BRAND_REVIEW.md +38 -0
  70. jira_cli_toolkit-2.5.1rc1/web/DESIGN.md +135 -0
  71. jira_cli_toolkit-2.5.1rc1/web/README.md +47 -0
  72. jira_cli_toolkit-2.5.1rc1/web/components.json +25 -0
  73. jira_cli_toolkit-2.5.1rc1/web/index.html +31 -0
  74. jira_cli_toolkit-2.5.1rc1/web/package-lock.json +2200 -0
  75. jira_cli_toolkit-2.5.1rc1/web/package.json +37 -0
  76. jira_cli_toolkit-2.5.1rc1/web/playwright.config.ts +16 -0
  77. jira_cli_toolkit-2.5.1rc1/web/public/agents/claudecode.svg +1 -0
  78. jira_cli_toolkit-2.5.1rc1/web/public/agents/cline.svg +1 -0
  79. jira_cli_toolkit-2.5.1rc1/web/public/agents/commandcode.svg +32 -0
  80. jira_cli_toolkit-2.5.1rc1/web/public/agents/cursor.svg +1 -0
  81. jira_cli_toolkit-2.5.1rc1/web/public/agents/githubcopilot.svg +1 -0
  82. jira_cli_toolkit-2.5.1rc1/web/public/agents/googlegemini.svg +1 -0
  83. jira_cli_toolkit-2.5.1rc1/web/public/agents/opencode.svg +1 -0
  84. jira_cli_toolkit-2.5.1rc1/web/public/agents/pi.svg +1 -0
  85. jira_cli_toolkit-2.5.1rc1/web/public/agents/qwen.svg +1 -0
  86. jira_cli_toolkit-2.5.1rc1/web/public/agents/warp.svg +1 -0
  87. jira_cli_toolkit-2.5.1rc1/web/public/agents/windsurf.svg +1 -0
  88. jira_cli_toolkit-2.5.1rc1/web/public/agents/zedindustries.svg +1 -0
  89. jira_cli_toolkit-2.5.1rc1/web/public/apple-touch-icon.png +0 -0
  90. jira_cli_toolkit-2.5.1rc1/web/public/favicon.svg +1 -0
  91. jira_cli_toolkit-2.5.1rc1/web/public/third-party-notices.txt +687 -0
  92. jira_cli_toolkit-2.5.1rc1/web/src/App.css +111 -0
  93. jira_cli_toolkit-2.5.1rc1/web/src/App.tsx +501 -0
  94. jira_cli_toolkit-2.5.1rc1/web/src/components/AsciiField.tsx +96 -0
  95. jira_cli_toolkit-2.5.1rc1/web/src/components/Terminal.css +174 -0
  96. jira_cli_toolkit-2.5.1rc1/web/src/components/Terminal.tsx +405 -0
  97. jira_cli_toolkit-2.5.1rc1/web/src/components/ThemeToggle.tsx +29 -0
  98. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/accordion.tsx +71 -0
  99. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/badge.tsx +51 -0
  100. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/button.tsx +57 -0
  101. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/card.tsx +102 -0
  102. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/input.tsx +19 -0
  103. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/kbd.tsx +26 -0
  104. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/separator.tsx +24 -0
  105. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/table.tsx +113 -0
  106. jira_cli_toolkit-2.5.1rc1/web/src/components/ui/tabs.tsx +79 -0
  107. jira_cli_toolkit-2.5.1rc1/web/src/data/commands.json +2932 -0
  108. jira_cli_toolkit-2.5.1rc1/web/src/index.css +132 -0
  109. jira_cli_toolkit-2.5.1rc1/web/src/lib/utils.ts +1 -0
  110. jira_cli_toolkit-2.5.1rc1/web/src/main.tsx +10 -0
  111. jira_cli_toolkit-2.5.1rc1/web/src/sandbox/complete.ts +70 -0
  112. jira_cli_toolkit-2.5.1rc1/web/src/sandbox/help.ts +135 -0
  113. jira_cli_toolkit-2.5.1rc1/web/src/sandbox/parse.ts +146 -0
  114. jira_cli_toolkit-2.5.1rc1/web/src/sandbox/sample.ts +89 -0
  115. jira_cli_toolkit-2.5.1rc1/web/src/sandbox/scenarios.ts +185 -0
  116. jira_cli_toolkit-2.5.1rc1/web/src/sandbox/session.ts +456 -0
  117. jira_cli_toolkit-2.5.1rc1/web/src/sandbox/tree.ts +38 -0
  118. jira_cli_toolkit-2.5.1rc1/web/src/shadcn.css +638 -0
  119. jira_cli_toolkit-2.5.1rc1/web/tests/landing.spec.ts +421 -0
  120. jira_cli_toolkit-2.5.1rc1/web/tsconfig.app.json +29 -0
  121. jira_cli_toolkit-2.5.1rc1/web/tsconfig.json +8 -0
  122. jira_cli_toolkit-2.5.1rc1/web/tsconfig.node.json +23 -0
  123. jira_cli_toolkit-2.5.1rc1/web/vite.config.ts +10 -0
@@ -0,0 +1,4 @@
1
+ JIRA_SITE=https://YOUR-site.atlassian.net
2
+ JIRA_EMAIL=you@example.com
3
+ JIRA_API_TOKEN=xxxx
4
+ JIRA_PROJECT=SUP
@@ -0,0 +1,44 @@
1
+ name: CLI tests and packages
2
+ on:
3
+ push:
4
+ branches: ['**']
5
+ pull_request:
6
+ workflow_dispatch:
7
+ workflow_call:
8
+ permissions:
9
+ contents: read
10
+ concurrency:
11
+ group: ci-${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+ jobs:
14
+ test:
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ include:
19
+ - os: ubuntu-24.04
20
+ python: '3.10'
21
+ - os: ubuntu-24.04
22
+ python: '3.14'
23
+ - os: windows-2022
24
+ python: '3.12'
25
+ - os: macos-15
26
+ python: '3.12'
27
+ runs-on: ${{ matrix.os }}
28
+ timeout-minutes: 15
29
+ steps:
30
+ - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
31
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
32
+ with:
33
+ python-version: ${{ matrix.python }}
34
+ - run: python -m pip install --require-hashes -r requirements-ci.lock
35
+ - run: python -m pip install --no-deps .
36
+ - run: python -m unittest discover -s tests -v
37
+ - run: python -m compileall -q src tests scripts
38
+ - run: python -m build --no-isolation
39
+ - run: python scripts/smoke.py
40
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
41
+ with:
42
+ name: python-${{ matrix.os }}-${{ matrix.python }}
43
+ path: dist/*
44
+ if-no-files-found: error
@@ -0,0 +1,59 @@
1
+ name: Website checks and GitHub Pages
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ paths: ['web/**', '.github/workflows/pages.yml']
6
+ pull_request:
7
+ paths: ['web/**', '.github/workflows/pages.yml']
8
+ workflow_dispatch:
9
+ permissions:
10
+ contents: read
11
+ concurrency:
12
+ group: pages-${{ github.ref }}
13
+ cancel-in-progress: true
14
+ jobs:
15
+ build:
16
+ runs-on: ubuntu-24.04
17
+ timeout-minutes: 15
18
+ defaults:
19
+ run:
20
+ working-directory: web
21
+ # Project Pages live under the repository path; Vercel builds at the root.
22
+ env:
23
+ BASE_PATH: /jira-cli-toolkit/
24
+ steps:
25
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
26
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
27
+ with:
28
+ node-version: '24'
29
+ cache: npm
30
+ cache-dependency-path: web/package-lock.json
31
+ - run: npm ci
32
+ - run: npm run lint
33
+ - run: npm run build
34
+ - run: npx playwright install --with-deps chromium
35
+ - run: npm test
36
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
37
+ if: failure()
38
+ with:
39
+ name: website-test-results
40
+ path: web/test-results/
41
+ - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5
42
+ if: github.ref == 'refs/heads/main'
43
+ with:
44
+ path: web/dist
45
+ deploy:
46
+ if: github.ref == 'refs/heads/main'
47
+ needs: build
48
+ runs-on: ubuntu-24.04
49
+ timeout-minutes: 10
50
+ permissions:
51
+ pages: write
52
+ id-token: write
53
+ environment:
54
+ name: github-pages
55
+ url: ${{ steps.deployment.outputs.page_url }}
56
+ steps:
57
+ - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6
58
+ - uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5
59
+ id: deployment
@@ -0,0 +1,137 @@
1
+ name: Native binaries and GitHub Releases
2
+ on:
3
+ push:
4
+ branches: [main]
5
+ tags: ['v*']
6
+ pull_request:
7
+ workflow_dispatch:
8
+ permissions:
9
+ contents: read
10
+ concurrency:
11
+ group: release-${{ github.ref }}
12
+ cancel-in-progress: false
13
+ jobs:
14
+ compatibility:
15
+ if: startsWith(github.ref, 'refs/tags/v')
16
+ uses: ./.github/workflows/ci.yml
17
+ package:
18
+ runs-on: ubuntu-24.04
19
+ timeout-minutes: 15
20
+ steps:
21
+ - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
22
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
23
+ with:
24
+ python-version: '3.12'
25
+ - run: python -m pip install --require-hashes -r requirements-ci.lock
26
+ - run: python -m pip install --no-deps .
27
+ - run: python -m unittest discover -s tests -v
28
+ - run: python -m build --no-isolation
29
+ - run: python scripts/smoke.py
30
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
31
+ with:
32
+ name: release-python
33
+ path: dist/*
34
+ if-no-files-found: error
35
+ native:
36
+ strategy:
37
+ fail-fast: false
38
+ matrix:
39
+ os: [ubuntu-24.04, macos-15, macos-15-intel, windows-2022]
40
+ runs-on: ${{ matrix.os }}
41
+ timeout-minutes: 25
42
+ steps:
43
+ - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
44
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
45
+ with:
46
+ python-version: '3.12'
47
+ - run: python -m pip install --require-hashes -r requirements-ci.lock
48
+ - run: python -m pip install --no-deps .
49
+ - run: python -m unittest discover -s tests -v
50
+ - run: python scripts/release/binary.py
51
+ - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
52
+ with:
53
+ name: release-native-${{ matrix.os }}
54
+ path: dist/jira-cli-toolkit-*
55
+ if-no-files-found: error
56
+ attest:
57
+ if: startsWith(github.ref, 'refs/tags/v') && vars.RELEASE_ATTESTATIONS == 'true'
58
+ needs: [compatibility, package, native]
59
+ runs-on: ubuntu-24.04
60
+ timeout-minutes: 10
61
+ permissions:
62
+ contents: read
63
+ id-token: write
64
+ attestations: write
65
+ steps:
66
+ - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
67
+ with:
68
+ fetch-depth: 0
69
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
70
+ with:
71
+ python-version: '3.12'
72
+ - run: python -m pip install --require-hashes -r requirements-ci.lock
73
+ - run: python -m pip install --no-deps .
74
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
75
+ with:
76
+ pattern: release-*
77
+ path: release-assets
78
+ merge-multiple: true
79
+ - run: python scripts/release/manifest.py
80
+ env:
81
+ RELEASE_ATTESTATIONS: 'true'
82
+ - uses: actions/attest@1e69f48acb82d1966a394da916b4c1698aa569d6 # v4
83
+ with:
84
+ subject-path: 'release-assets/*'
85
+ publish:
86
+ if: >-
87
+ always() && startsWith(github.ref, 'refs/tags/v') &&
88
+ needs.compatibility.result == 'success' && needs.package.result == 'success' &&
89
+ needs.native.result == 'success' &&
90
+ (needs.attest.result == 'success' || needs.attest.result == 'skipped')
91
+ needs: [compatibility, package, native, attest]
92
+ runs-on: ubuntu-24.04
93
+ timeout-minutes: 10
94
+ permissions:
95
+ contents: write
96
+ steps:
97
+ - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262
98
+ with:
99
+ fetch-depth: 0
100
+ - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
101
+ with:
102
+ python-version: '3.12'
103
+ - run: python -m pip install --require-hashes -r requirements-ci.lock
104
+ - run: python -m pip install --no-deps .
105
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
106
+ with:
107
+ pattern: release-*
108
+ path: release-assets
109
+ merge-multiple: true
110
+ - run: python scripts/release/manifest.py
111
+ env:
112
+ RELEASE_ATTESTATIONS: ${{ vars.RELEASE_ATTESTATIONS }}
113
+ - run: python scripts/release/publish.py
114
+ env:
115
+ GH_TOKEN: ${{ github.token }}
116
+ pypi:
117
+ # Uploads the same wheel and sdist that the GitHub release published, without a stored token:
118
+ # PyPI trusts this workflow in the pypi environment as the publisher of jira-cli-toolkit.
119
+ if: always() && startsWith(github.ref, 'refs/tags/v') && needs.publish.result == 'success'
120
+ needs: [publish]
121
+ runs-on: ubuntu-24.04
122
+ timeout-minutes: 10
123
+ environment:
124
+ name: pypi
125
+ url: https://pypi.org/project/jira-cli-toolkit/
126
+ permissions:
127
+ contents: read
128
+ id-token: write
129
+ steps:
130
+ - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
131
+ with:
132
+ name: release-python
133
+ path: dist
134
+ - uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
135
+ with:
136
+ # A rerun after a partial upload must not fail on files already published.
137
+ skip-existing: true
@@ -0,0 +1,13 @@
1
+ __pycache__/
2
+ .venv/
3
+ .env
4
+ dist/
5
+ build/
6
+ *.spec
7
+ *.egg-info/
8
+ .pipx/
9
+
10
+ node_modules/
11
+ web/dist/
12
+ web/test-results/
13
+ web/playwright-report/
@@ -0,0 +1,36 @@
1
+ # Changelog
2
+
3
+ ## 2.1.0
4
+
5
+ - Install `jira` as the primary command; retain `jira-cli-toolkit` and `jsup` aliases throughout v2.x.
6
+ - Legacy executables print a startup migration notice on stderr without changing JSON stdout or internal completion/update protocols.
7
+ - Native binaries now identify themselves as `jira`; release asset filenames remain compatible with existing updaters.
8
+ - Preserve configuration/profile paths and credential-store references, so v2.0 users need no auth migration.
9
+ - Update help, completion, installation and developer migration examples for the shorter command and public GitHub downloads.
10
+ - Make the GitHub repository public after reviewing reachable Git history and available Actions logs for credential leaks.
11
+
12
+ Published as latest stable with all eight verified assets. The actual v2.0-to-v2.1 standalone update, retained backup/config, repeated no-op check and anonymous wheel download pass. The cross-platform CI/native/tag pipelines pass; 132 regression tests cover the new command and legacy notices.
13
+
14
+ ## 2.0.0
15
+
16
+ - Promote the tested v2 release candidate, including project-neutral commands, guided API-token auth, discovery, issue maintenance, native releases and verified updates.
17
+ - Record successful user acceptance of macOS Keychain migration and live credential retrieval in separate CLI invocations.
18
+ - Correct pipx recovery instructions for existing uv-backed environments: replace the managed environment with the verified wheel using the pip backend; an install-time backend override alone does not switch it.
19
+
20
+ Published as latest stable with four native binaries, wheel/sdist, manifest and checksums. Published-asset verification, actual RC-to-stable standalone update, pipx upgrade, both CLI entry points, config preservation and repeated no-op checks passed. The initial v2 release checklist is complete; generic authenticated API access remains planned for v2.5.
21
+
22
+ ## 2.0.0rc1
23
+
24
+ - Introduce project-neutral resource commands and help with legacy jsup compatibility.
25
+ - Add guided API-token login, scoped-token routing, secure profiles, contexts, migration, auth health, and diagnostics.
26
+ - Add bounded safe-read retries, complete pagination, POST search, structured script errors, and uncertain-write reporting.
27
+ - Discover required creation/edit/transition fields and support typed/structured custom input.
28
+ - Add editing, assignment, relationships, attachments, comment maintenance, and richer searches.
29
+ - Add declarative templates, shell completion, CSV and selected columns.
30
+ - Add hash-locked cross-platform CI, native binaries, tag-triggered releases, and a verified installation-aware updater.
31
+
32
+ At candidate publication, live BUG acceptance, package bootstrap, publication and standalone update checks had passed. Interactive native-store acceptance and stable promotion were completed subsequently for 2.0.0.
33
+
34
+ ## 0.2.0
35
+
36
+ Original support-oriented Jira Cloud CLI with flat commands and legacy configuration.