ticketlens 0.43.5 → 0.43.6

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.
package/README.md CHANGED
@@ -164,7 +164,7 @@ After the first fetch, ticket data is cached to `~/.ticketlens/cache/PROFILE/TIC
164
164
  ○ CNV1-2 · from cache (12m ago) · --no-cache to refresh
165
165
  ```
166
166
 
167
- Attachments download to `~/.ticketlens/cache/TICKET-KEY/` (10 MB per-file cap). Claude Code reads images multimodally, extracts PDF text, and reads plain text files as context.
167
+ Attachments download to `~/.ticketlens/cache/TICKET-KEY/` (10 MB per-file cap; 10 files per ticket on Free, 50 on Pro, Team and Enterprise — extras are listed as skipped, with a notice). Claude Code reads images multimodally, extracts PDF text, and reads plain text files as context.
168
168
 
169
169
  Confluence pages linked to the ticket via Jira Remote Links are fetched automatically and included as plain text in the brief (Jira profiles only, same-origin). Use `--no-attachments` to skip both attachments and Confluence pages.
170
170
 
@@ -524,7 +524,7 @@ Write directly to the ticket in its real tracker — Jira, GitHub, or Linear —
524
524
 
525
525
  `ticketlens create` creates a new ticket with a fixed minimal field set — no arbitrary custom fields. Unlike every other write command, there's no existing ticket to target, so `--profile` (or your default profile) picks the tracker instead of a ticket key. `--project` is the Jira project key or Linear team key — required for both, ignored on GitHub since its target repo is already fixed by the profile. `--type` is Jira's issue type (e.g. `"Task"`, `"Bug"`) — required for Jira, ignored elsewhere. No `--confirm` gate, same risk tier as `update`/`assign` — but this is the highest-blast-radius command in the whole family: a bad `--project`/`--type` fabricates a real, hard-to-walk-back item in a live tracker, so an invalid value surfaces the tracker's own error rather than a silent guess.
526
526
 
527
- `--attach=path1,path2` (comma-separated local file paths) is available on `comment` and `create` only. Images render as an inline thumbnail on Jira and Linear; GitHub has no attachment upload API, so `--attach` is unsupported there.
527
+ `--attach=path1,path2` (comma-separated local file paths) is available on `comment` and `create` only, up to 50 files per call (Pro, Team, Enterprise). Images render as an inline thumbnail on Jira and Linear; GitHub has no attachment upload API, so `--attach` is unsupported there.
528
528
 
529
529
  **A bad `--project`/`--type` gets a better error, automatically.** If create fails because the project or issue type doesn't exist, TicketLens fetches your tracker's real, current project list (and, for Jira, the real issue types for that project) and shows them alongside the failure — e.g. `Known creatable projects: CNV1, CNV2.` — rather than a bare tracker error. This is reactive only: it never runs on a successful create, never auto-retries the write, and is cached locally per profile for 3 days (a targeted, single-project lookup — same bar `issue-types --project=KEY` uses) so a burst of failed attempts doesn't re-fetch every time. `ticketlens issue-types` (below) is the proactive counterpart — pre-fetches and caches the same data ahead of time, so a `create` right after it is a pure cache hit.
530
530
 
@@ -700,7 +700,7 @@ ticketlens update-skill --path=~/.gemini/commands # sync to a different AI assi
700
700
  /jtb triage # Scan your assigned tickets
701
701
  ```
702
702
 
703
- Attachments are listed in the brief as absolute paths. Claude Code reads images (multimodal), PDFs, and text files before planning. Files over 10 MB are skipped.
703
+ Attachments are listed in the brief as absolute paths. Claude Code reads images (multimodal), PDFs, and text files before planning. Files over 10 MB are skipped, and so are files past the per-ticket cap (10 on Free, 50 on Pro, Team and Enterprise).
704
704
 
705
705
  ---
706
706
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ticketlens",
3
- "version": "0.43.5",
3
+ "version": "0.43.6",
4
4
  "description": "Jira CLI for developers — fetch ticket context, triage your queue, and stop tab-switching. Zero dependencies, all local.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,4 +1,4 @@
1
- <!-- jtb-skill-version: 0.49.0 -->
1
+ <!-- jtb-skill-version: 0.49.1 -->
2
2
  ---
3
3
  name: jtb
4
4
  description: Fetch a Jira ticket's full context (description, comments, linked issues, code references) and assemble a structured TicketBrief for implementation planning. Use when user types /jtb, mentions a Jira ticket key, or wants to plan work from a Jira ticket.
@@ -484,7 +484,7 @@ ticketlens worklog PROD-1234=1h30m PROD-5678=45m --comment="Sprint work" --confi
484
484
  - The MCP tool takes `entries[]` with per-ticket `comment`/`started`.
485
485
  - The CLI applies one `--comment`/`--started` to every ticket.
486
486
 
487
- `--attach=path1,path2` (comma-separated local file paths) is available on `comment` and `create` only. Images render as an inline thumbnail on Jira and Linear; GitHub has no attachment upload API, so `--attach` is unsupported there.
487
+ `--attach=path1,path2` (comma-separated local file paths) is available on `comment` and `create` only, up to 50 files per call (Pro, Team, Enterprise). Images render as an inline thumbnail on Jira and Linear; GitHub has no attachment upload API, so `--attach` is unsupported there.
488
488
 
489
489
  The write actions (comment/transition/assign/link/update/create/worklog) have a short local debounce (10s) against an accidental double-fire, and every write is appended to a local audit log (`~/.ticketlens/ticket-action-log.jsonl`). A write that times out is never retried automatically — surface the failure to the user rather than silently re-attempting, since a ticket write isn't naturally idempotent the way a Recall note save is. `duplicates` has neither, since nothing is written.
490
490
 
@@ -668,7 +668,7 @@ Forces a fresh fetch from Jira, bypassing the local brief cache (4-hour TTL by d
668
668
 
669
669
  ### --no-attachments
670
670
 
671
- Skip downloading and reading ticket attachments. Speeds up the fetch for tickets with large or irrelevant file attachments.
671
+ Skip downloading and reading ticket attachments. Speeds up the fetch for tickets with large or irrelevant file attachments. Without it, downloads stop at 10 files per ticket on Free and 50 on Pro, Team and Enterprise; the excess is listed as skipped and a notice is printed.
672
672
 
673
673
  ### Team Jira config auto-sync (Pro/Team)
674
674
 
@@ -735,7 +735,7 @@ export function printCommentHelp({ stream = process.stdout } = {}) {
735
735
  ` ${s.bold('OPTIONS')}`,
736
736
  '',
737
737
  ` ${s.brand('--body')}=${s.dim('TEXT')} Comment body ${s.dim('(required)')}`,
738
- ` ${s.brand('--attach')}=${s.dim('PATHS')} Comma-separated local file paths to attach ${s.dim('(optional)')}`,
738
+ ` ${s.brand('--attach')}=${s.dim('PATHS')} Comma-separated local file paths to attach ${s.dim('(optional, up to 50 files)')}`,
739
739
  ` Images render as an inline thumbnail on Jira and Linear.`,
740
740
  ` Not supported on GitHub — no attachment upload API exists there.`,
741
741
  ` ${s.brand('--profile')}=${s.dim('NAME')} Connection profile to use ${s.dim('(optional)')}`,
@@ -973,7 +973,7 @@ export function printCreateHelp({ stream = process.stdout } = {}) {
973
973
  ` ${s.brand('--summary')}=${s.dim('TEXT')} Ticket title/summary ${s.dim('(required)')}`,
974
974
  ` ${s.brand('--description')}=${s.dim('TEXT')} Ticket description`,
975
975
  ` ${s.brand('--attach')}=${s.dim('PATHS')} Comma-separated local file paths to attach, uploaded after creation`,
976
- ` ${s.dim('(optional)')}. Not supported on GitHub — no attachment upload API exists there.`,
976
+ ` ${s.dim('(optional, up to 50 files)')}. Not supported on GitHub — no attachment upload API exists there.`,
977
977
  ` ${s.brand('--profile')}=${s.dim('NAME')} Connection profile to use ${s.dim('(optional)')}`,
978
978
  ` ${s.brand('-h')}, ${s.brand('--help')} Show this help`,
979
979
  '',