ticketlens 0.21.10 → 0.21.11

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
@@ -403,7 +403,7 @@ Every note is scanned before saving — anything shaped like a real secret (API
403
403
 
404
404
  **Quality loop:** inside a Claude Code session using the jtb skill, a saved note can be silently refined afterward — a generator subagent drafts a more actionable version, a validator subagent checks it against other notes on the same ticket for duplication, up to 3 rounds — and the improved draft overwrites the original via the internal `note patch` command (not typically invoked by hand). This makes zero API calls and costs zero extra tokens beyond your already-running session; it never runs for a bare shell invocation of `note add`, which is skipped silently. Known limitation: a refined draft is not re-synced to your team even if the original was — teammates who already pulled the note keep the earlier draft.
405
405
 
406
- **Team sync:** on a Team plan with Recall enabled for your account (owner-managed, per-tier or per-client), notes also sync to your team's shared pool — `note add` pushes in the background, `recall` always pulls the team's notes fresh before searching, so a manager's verify/delete in Console is visible on that very search. (Ticket-brief injection uses a separate, short-timeout 4h-cached pull so it never slows down your everyday `ticketlens PROJ-123` — it doesn't need to be instant the way an explicit search does.) A team manager reviews and verifies incoming notes at `console/admin/recall` before they're marked trusted. Without Team Recall entitlement, everything stays on your machine — no network call.
406
+ **Team sync:** included by default on Team/Enterprise; available on Pro too, as a separate add-on (owner-managed per-client, in case the default ever needs to flex). With it enabled, notes also sync to your team's shared pool — `note add` pushes in the background, `recall` always pulls the team's notes fresh before searching, so a manager's verify/delete in Console is visible on that very search. (Ticket-brief injection uses a separate, short-timeout 4h-cached pull so it never slows down your everyday `ticketlens PROJ-123` — it doesn't need to be instant the way an explicit search does.) A team manager reviews and verifies incoming notes at `console/admin/recall` before they're marked trusted. Without Team Recall entitlement, everything stays on your machine — no network call.
407
407
 
408
408
  **Offline resilience:** if a team push fails for a transient reason (network error, timeout, or a 5xx from the backend), the note stays safely in your local vault and is queued for retry — nothing is lost. The queue flushes automatically in the background before every command, not just `recall`/`note add` — a short timeout on that check means it never stalls an unrelated command — or on demand with `ticketlens recall sync`. A session-expired (401) or not-entitled (403) push is never queued — those need you to act (`ticketlens login`, or an owner grant), not a retry. Switching accounts never flushes a note under the wrong login.
409
409
 
@@ -688,8 +688,8 @@ echo "note body" | ticketlens note add --title="..." --ticket=CNV1-2 --tags=a,b
688
688
  ticketlens note delete --id="..." --ticket=CNV1-2 # Remove a note from your local vault [Pro]
689
689
  ticketlens recall CNV1-2 # Search saved notes by ticket key [Pro]
690
690
  ticketlens recall "retry backoff" # Free-text search across all notes [Pro]
691
- ticketlens recall sync # Retry any notes stuck in the local queue [Pro]
692
- ticketlens recall settings # Show effective retry-queue settings, fetched live [Pro]
691
+ ticketlens recall sync # Retry any notes stuck in the local queue [Team+]
692
+ ticketlens recall settings # Show effective retry-queue settings, fetched live [Team+]
693
693
 
694
694
  # ── Stats ──────────────────────────────────────────────────────────────────────
695
695
  ticketlens stats # Response-time metrics from local history
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ticketlens",
3
- "version": "0.21.10",
3
+ "version": "0.21.11",
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": {
@@ -58,8 +58,8 @@ Fetches a Jira ticket and produces a structured brief with code references, then
58
58
  /jtb cloud-keys timeout anthropic 15 # set per-request timeout in seconds
59
59
  /jtb note add --title="gotcha text" --ticket=PROD-1234 # save a Recall note (Pro, body from stdin)
60
60
  /jtb recall PROD-1234 # search saved Recall notes (Pro)
61
- /jtb recall sync # retry any notes stuck in the local queue (Pro)
62
- /jtb recall settings # show effective retry-queue settings, fetched live (Pro)
61
+ /jtb recall sync # retry any notes stuck in the local queue (Team+)
62
+ /jtb recall settings # show effective retry-queue settings, fetched live (Team+)
63
63
  ```
64
64
 
65
65
  ## Prerequisites
@@ -250,7 +250,7 @@ This never calls any external API or bills any tokens beyond the session you alr
250
250
  **Known limitation:** `note patch` only updates the local vault copy. If `note add` already pushed the original draft to a team (Team Recall enabled), a later refinement from this loop is *not* re-pushed — teammates who already pulled the note keep the original draft until this is addressed in a future iteration.
251
251
 
252
252
  ### Privacy
253
- Recall notes are stored locally at `~/.ticketlens/recall/`. On a Free/Pro account with no Team Recall entitlement, they never leave the machine — no network calls. On a Team account with Recall enabled (owner-managed, may vary per user), notes also sync to the team's shared pool in the background so teammates can benefit from them too; a team manager reviews and verifies each incoming note before it's marked trusted. If a team push fails for a transient reason (network error, timeout, 5xx), the note is queued locally and retried automatically in the background, or on demand with `ticketlens recall sync` — a session-expired or not-entitled push is never queued, since retrying those can't succeed without the user acting first.
253
+ Recall notes are stored locally at `~/.ticketlens/recall/`. On a Pro account with no Team Recall entitlement, they never leave the machine — no network calls (Free tier can't use Recall at all). On Team/Enterprise, Recall's team sync is included by default (Pro accounts can get it too, as a separate add-on); notes also sync to the team's shared pool in the background so teammates can benefit from them too, and a team manager reviews and verifies each incoming note before it's marked trusted. If a team push fails for a transient reason (network error, timeout, 5xx), the note is queued locally and retried automatically in the background, or on demand with `ticketlens recall sync` [Team+] — a session-expired or not-entitled push is never queued, since retrying those can't succeed without the user acting first.
254
254
 
255
255
  ---
256
256
 
@@ -51,8 +51,8 @@ export function printHelp({ stream = process.stdout } = {}) {
51
51
  ` ${s.brand('ticketlens')} note add ${s.dim('--title=... [--ticket=KEY]')} Save a Recall note ${s.dim('[Pro]')}`,
52
52
  ` ${s.brand('ticketlens')} note delete ${s.dim('--id=... [--ticket=KEY]')} Remove a note from your local vault ${s.dim('[Pro]')}`,
53
53
  ` ${s.brand('ticketlens')} recall ${s.dim('<query|TICKET-KEY>')} Search your saved Recall notes ${s.dim('[Pro]')}`,
54
- ` ${s.brand('ticketlens')} recall sync Retry any notes stuck in the local queue ${s.dim('[Pro]')}`,
55
- ` ${s.brand('ticketlens')} recall settings Show effective retry-queue settings, fetched live ${s.dim('[Pro]')}`,
54
+ ` ${s.brand('ticketlens')} recall sync Retry any notes stuck in the local queue ${s.dim('[Team+]')}`,
55
+ ` ${s.brand('ticketlens')} recall settings Show effective retry-queue settings, fetched live ${s.dim('[Team+]')}`,
56
56
  '',
57
57
  ` ${s.brand('ticketlens')} delete ${s.dim('<PROFILE-NAME>')} Remove a profile`,
58
58
  ` ${s.brand('ticketlens')} activate ${s.dim('<KEY>')} Activate a license key`,
@@ -555,7 +555,9 @@ export function printRecallHelp({ stream = process.stdout } = {}) {
555
555
  '',
556
556
  ` ${s.bold(s.brand('ticketlens'))} ${s.bold('recall')} ${s.dim('<query|TICKET-KEY>')} ${s.dim('[Pro]')}`,
557
557
  '',
558
- ` Search your saved Recall notes. Local only — no network calls. ${s.dim('[Pro]')}`,
558
+ ` Search your saved Recall notes. ${s.dim('[Pro]')}`,
559
+ ` Works fully offline if you have no team. Logged in with team sync enabled,`,
560
+ ` pulls the team's notes fresh before every search.`,
559
561
  '',
560
562
  ` ${s.bold('OPTIONS')}`,
561
563
  '',
@@ -565,8 +567,10 @@ export function printRecallHelp({ stream = process.stdout } = {}) {
565
567
  '',
566
568
  ` ${s.bold('COMMANDS')}`,
567
569
  '',
568
- ` ${s.brand('sync')} Manually retry any team-synced notes stuck in the local retry queue ${s.dim('[Pro, requires login]')}`,
569
- ` ${s.brand('settings')} Show effective retry-queue settings (cooldown, timeout, queue limits) ${s.dim('[Pro]')}`,
570
+ ` ${s.brand('sync')} Manually retry any team-synced notes stuck in the local retry queue ${s.dim('[Team+, requires login]')}`,
571
+ ` ${s.brand('settings')} Show effective retry-queue settings (cooldown, timeout, queue limits) ${s.dim('[Team+]')}`,
572
+ '',
573
+ ` ${s.dim('Team+ = included on Team/Enterprise; available on Pro as a separate Recall add-on.')}`,
570
574
  '',
571
575
  ` ${s.bold('EXAMPLES')}`,
572
576
  '',