@hiroleague/taskmanager 0.0.1 → 0.0.3

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 (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -52
  3. package/dist/assets/architecture-YZFGNWBL-DoE0KxgG.js +1 -0
  4. package/dist/assets/architectureDiagram-Q4EWVU46-DeuBhy7X.js +36 -0
  5. package/dist/assets/{blockDiagram-DXYQGD6D-DfOGNphI.js → blockDiagram-DXYQGD6D-BDBy9ns9.js} +1 -1
  6. package/dist/assets/{c4Diagram-AHTNJAMY-B2Yfcwbo.js → c4Diagram-AHTNJAMY-CpqJj_8a.js} +1 -1
  7. package/dist/assets/channel-PHRyjspt.js +1 -0
  8. package/dist/assets/{chunk-2KRD3SAO-9yt00aGC.js → chunk-2KRD3SAO-DEpUsxdZ.js} +1 -1
  9. package/dist/assets/chunk-336JU56O-BGQvSwLk.js +2 -0
  10. package/dist/assets/chunk-426QAEUC-Cl9nQN9c.js +1 -0
  11. package/dist/assets/{chunk-4TB4RGXK-DF8yJBFl.js → chunk-4TB4RGXK-Dq7aiIrZ.js} +2 -2
  12. package/dist/assets/{chunk-5FUZZQ4R-XEga0hMC.js → chunk-5FUZZQ4R-B_HuuUjf.js} +1 -1
  13. package/dist/assets/{chunk-5PVQY5BW-BrmXs2Gs.js → chunk-5PVQY5BW-cGfZCZGU.js} +2 -2
  14. package/dist/assets/{chunk-67CJDMHE-5wFKo04G.js → chunk-67CJDMHE-BMYAVZfw.js} +1 -1
  15. package/dist/assets/{chunk-7N4EOEYR-BRRGX_NC.js → chunk-7N4EOEYR-Ct-EY7Nc.js} +1 -1
  16. package/dist/assets/{chunk-AA7GKIK3-DUZv_pNI.js → chunk-AA7GKIK3-Bd4HFpeo.js} +1 -1
  17. package/dist/assets/{chunk-CIAEETIT-mA5aM_d7.js → chunk-CIAEETIT-CrFUkPMT.js} +1 -1
  18. package/dist/assets/{chunk-EDXVE4YY-DxUqDyxy.js → chunk-EDXVE4YY-DMDyt0NF.js} +1 -1
  19. package/dist/assets/{chunk-ENJZ2VHE-BgZKYo1l.js → chunk-ENJZ2VHE-DrWzOrpd.js} +1 -1
  20. package/dist/assets/{chunk-FOC6F5B3-B-cqGCPC.js → chunk-FOC6F5B3-Bemzq96j.js} +1 -1
  21. package/dist/assets/{chunk-ICPOFSXX-BNR1V8rT.js → chunk-ICPOFSXX-DkUVjrLw.js} +5 -5
  22. package/dist/assets/{chunk-K5T4RW27-BLRDzioh.js → chunk-K5T4RW27-ALKIf000.js} +5 -5
  23. package/dist/assets/{chunk-KGLVRYIC-CTkQSeKy.js → chunk-KGLVRYIC-Bg6HNTZ-.js} +1 -1
  24. package/dist/assets/{chunk-LIHQZDEY-Cf34Nu3J.js → chunk-LIHQZDEY-DeyGongE.js} +1 -1
  25. package/dist/assets/{chunk-ORNJ4GCN-D3uXgbay.js → chunk-ORNJ4GCN-Bx83s1bJ.js} +1 -1
  26. package/dist/assets/{chunk-OYMX7WX6-syQho5jf.js → chunk-OYMX7WX6-BqRUtRpL.js} +1 -1
  27. package/dist/assets/{chunk-U2HBQHQK-DTJPeU7W.js → chunk-U2HBQHQK-DogcerR6.js} +1 -1
  28. package/dist/assets/{chunk-X2U36JSP-CrTnmMqG.js → chunk-X2U36JSP-CwVWdmZV.js} +1 -1
  29. package/dist/assets/chunk-XPW4576I-DQpNCogT.js +32 -0
  30. package/dist/assets/{chunk-YZCP3GAM-9wq0QKUn.js → chunk-YZCP3GAM-crQSbji9.js} +1 -1
  31. package/dist/assets/{chunk-ZZ45TVLE-D3I1kLlo.js → chunk-ZZ45TVLE-Bk1S1YtS.js} +1 -1
  32. package/dist/assets/classDiagram-6PBFFD2Q-B_TabGaU.js +1 -0
  33. package/dist/assets/classDiagram-v2-HSJHXN6E-CGnZkUWw.js +1 -0
  34. package/dist/assets/clone-D4ka472w.js +1 -0
  35. package/dist/assets/{cose-bilkent-S5V4N54A-BygGvZGW.js → cose-bilkent-S5V4N54A-RBTHUit8.js} +1 -1
  36. package/dist/assets/cytoscape.esm-BGJwlmkf.js +321 -0
  37. package/dist/assets/dagre-B32eYLtm.js +1 -0
  38. package/dist/assets/{dagre-KV5264BT-BBqulDtd.js → dagre-KV5264BT-nX7tuXXn.js} +1 -1
  39. package/dist/assets/diagram-5BDNPKRD-DRxMXlQr.js +10 -0
  40. package/dist/assets/diagram-G4DWMVQ6-CoojevGm.js +24 -0
  41. package/dist/assets/diagram-MMDJMWI5-CWtJyfVW.js +43 -0
  42. package/dist/assets/diagram-TYMM5635-CsDJC4Hq.js +24 -0
  43. package/dist/assets/{erDiagram-SMLLAGMA-BN5eJerP.js → erDiagram-SMLLAGMA-Cf7Xtd9A.js} +2 -2
  44. package/dist/assets/{flatten-C5NL-f24.js → flatten-CYX_pHZ7.js} +1 -1
  45. package/dist/assets/{flowDiagram-DWJPFMVM-CbFskc8S.js → flowDiagram-DWJPFMVM-DQaeR16a.js} +3 -3
  46. package/dist/assets/{ganttDiagram-T4ZO3ILL-OCTvbRxF.js → ganttDiagram-T4ZO3ILL-8EIcztcH.js} +1 -1
  47. package/dist/assets/gitGraph-7Q5UKJZL-BH9A1SAZ.js +1 -0
  48. package/dist/assets/{gitGraphDiagram-UUTBAWPF-wpqI2kyI.js → gitGraphDiagram-UUTBAWPF-DO9ODqYw.js} +1 -1
  49. package/dist/assets/graphlib-bPBqlJKT.js +1 -0
  50. package/dist/assets/identity-Me9aart9.js +1 -0
  51. package/dist/assets/index-oKG1C41_.js +273 -0
  52. package/dist/assets/info-OMHHGYJF-BvKR-zWh.js +1 -0
  53. package/dist/assets/infoDiagram-42DDH7IO-pRTXCm5C.js +2 -0
  54. package/dist/assets/isEmpty-Cu0k-j1j.js +1 -0
  55. package/dist/assets/{ishikawaDiagram-UXIWVN3A-Epc23N_0.js → ishikawaDiagram-UXIWVN3A-BP2YE5QI.js} +2 -2
  56. package/dist/assets/{journeyDiagram-VCZTEJTY-BkMxoaPq.js → journeyDiagram-VCZTEJTY-B3l2juoL.js} +1 -1
  57. package/dist/assets/{kanban-definition-6JOO6SKY-C8dW_26n.js → kanban-definition-6JOO6SKY-BpIpEOZZ.js} +4 -4
  58. package/dist/assets/{line-DNzQATGr.js → line-otOkzGl8.js} +1 -1
  59. package/dist/assets/mermaid-parser.core-xWsW24Gq.js +4 -0
  60. package/dist/assets/{mindmap-definition-QFDTVHPH-CvpNtrKT.js → mindmap-definition-QFDTVHPH-B9khyC7X.js} +3 -3
  61. package/dist/assets/packet-4T2RLAQJ-D8Dw3nmf.js +1 -0
  62. package/dist/assets/pie-ZZUOXDRM-ZghowlAE.js +1 -0
  63. package/dist/assets/{pieDiagram-DEJITSTG-eENymoXZ.js → pieDiagram-DEJITSTG-v32hL3i7.js} +1 -1
  64. package/dist/assets/{quadrantDiagram-34T5L4WZ-c0iZxo2I.js → quadrantDiagram-34T5L4WZ-DIL3GDFt.js} +1 -1
  65. package/dist/assets/radar-PYXPWWZC-D-PK3JOd.js +1 -0
  66. package/dist/assets/reduce-CImcgAcU.js +1 -0
  67. package/dist/assets/{requirementDiagram-MS252O5E-CmRO3hLp.js → requirementDiagram-MS252O5E-D8os2-4y.js} +2 -2
  68. package/dist/assets/{sankeyDiagram-XADWPNL6-woJZoQ58.js → sankeyDiagram-XADWPNL6-BV70D4l5.js} +1 -1
  69. package/dist/assets/{sequenceDiagram-FGHM5R23-B7qNcwNo.js → sequenceDiagram-FGHM5R23-Cwu8hQW1.js} +1 -1
  70. package/dist/assets/stateDiagram-FHFEXIEX-oYUWv7Fb.js +1 -0
  71. package/dist/assets/stateDiagram-v2-QKLJ7IA2-CFUTpFu-.js +1 -0
  72. package/dist/assets/{timeline-definition-GMOUNBTQ-CQWqDPGG.js → timeline-definition-GMOUNBTQ-CxSdKxpL.js} +1 -1
  73. package/dist/assets/treeView-SZITEDCU-uVgaJQzG.js +1 -0
  74. package/dist/assets/treemap-W4RFUUIX-Dcad_9AN.js +1 -0
  75. package/dist/assets/vennDiagram-DHZGUBPP-D4wgD7QI.js +34 -0
  76. package/dist/assets/wardley-RL74JXVD-CFXrK8mx.js +1 -0
  77. package/dist/assets/{wardleyDiagram-NUSXRM2D-DNhPIFCg.js → wardleyDiagram-NUSXRM2D-5Q201ea3.js} +1 -1
  78. package/dist/assets/{xychartDiagram-5P7HB3ND-BDblAZ11.js → xychartDiagram-5P7HB3ND-BPZv_axd.js} +3 -3
  79. package/dist/index.html +16 -12
  80. package/package.json +99 -92
  81. package/scripts/stubs/node-domexception/index.cjs +18 -0
  82. package/scripts/stubs/node-domexception/package.json +7 -0
  83. package/skills/hiro-task-manager-cli/SKILL.md +97 -0
  84. package/skills/hiro-task-manager-cli/reference/boards.md +143 -0
  85. package/skills/hiro-task-manager-cli/reference/cli-access-policy.md +72 -0
  86. package/skills/hiro-task-manager-cli/reference/errors.md +85 -0
  87. package/skills/hiro-task-manager-cli/reference/lists.md +106 -0
  88. package/skills/hiro-task-manager-cli/reference/releases.md +87 -0
  89. package/skills/hiro-task-manager-cli/reference/search.md +38 -0
  90. package/skills/hiro-task-manager-cli/reference/statuses.md +25 -0
  91. package/skills/hiro-task-manager-cli/reference/tasks.md +144 -0
  92. package/skills/hiro-task-manager-cli/reference/trash.md +50 -0
  93. package/src/cli/bootstrap/launcher.test.ts +66 -0
  94. package/src/cli/bootstrap/launcher.ts +389 -35
  95. package/src/cli/bootstrap/program.test.ts +46 -0
  96. package/src/cli/bootstrap/program.ts +54 -1
  97. package/src/cli/bootstrap/runtime.test.ts +15 -0
  98. package/src/cli/bootstrap/runtime.ts +27 -1
  99. package/src/cli/commands/query.ts +56 -56
  100. package/src/cli/commands/server.ts +27 -19
  101. package/src/cli/handlers/boards.test.ts +669 -669
  102. package/src/cli/handlers/cli-wiring.test.ts +1 -1
  103. package/src/cli/handlers/search.test.ts +374 -374
  104. package/src/cli/handlers/search.ts +17 -17
  105. package/src/cli/handlers/server.test.ts +55 -13
  106. package/src/cli/handlers/server.ts +16 -3
  107. package/src/cli/lib/api-client.test.ts +35 -2
  108. package/src/cli/lib/api-client.ts +43 -10
  109. package/src/cli/lib/cli-http-errors.test.ts +85 -85
  110. package/src/cli/lib/command-helpers.ts +161 -154
  111. package/src/cli/lib/config.ts +4 -0
  112. package/src/cli/lib/launcherUi.test.ts +74 -0
  113. package/src/cli/lib/launcherUi.ts +213 -0
  114. package/src/cli/lib/process.test.ts +24 -5
  115. package/src/cli/lib/process.ts +86 -55
  116. package/src/cli/ports/process.ts +8 -2
  117. package/src/cli/subprocess.real-stack.test.ts +611 -598
  118. package/src/cli/subprocess.smoke.test.ts +954 -969
  119. package/src/cli/types/config.ts +2 -6
  120. package/src/client/components/auth/AuthScreen.tsx +3 -3
  121. package/src/client/components/board/BoardStatsChips.tsx +233 -233
  122. package/src/client/components/board/BoardStatsContext.tsx +41 -41
  123. package/src/client/components/board/boardHeaderButtonStyles.ts +38 -38
  124. package/src/client/components/board/shortcuts/useBoardShortcutKeydown.ts +49 -49
  125. package/src/client/components/board/useBoardCanvasPanScroll.ts +108 -108
  126. package/src/client/components/board/useBoardTaskContainerDroppableReact.ts +33 -33
  127. package/src/client/components/board/useBoardTaskSortableReact.ts +26 -26
  128. package/src/client/components/multi-select.tsx +1206 -1206
  129. package/src/client/components/routing/BoardPage.tsx +20 -20
  130. package/src/client/components/routing/NavigationRegistrar.tsx +13 -13
  131. package/src/client/components/settings/SettingsPage.tsx +1 -1
  132. package/src/client/components/task/TaskCard.tsx +643 -643
  133. package/src/client/components/ui/badge.tsx +49 -49
  134. package/src/client/components/ui/button.tsx +65 -65
  135. package/src/client/components/ui/command.tsx +193 -193
  136. package/src/client/components/ui/dialog.tsx +163 -163
  137. package/src/client/components/ui/input-group.tsx +155 -155
  138. package/src/client/components/ui/input.tsx +19 -19
  139. package/src/client/components/ui/popover.tsx +87 -87
  140. package/src/client/components/ui/separator.tsx +28 -28
  141. package/src/client/components/ui/textarea.tsx +18 -18
  142. package/src/client/index.css +248 -248
  143. package/src/client/lib/appNavigate.ts +16 -16
  144. package/src/client/lib/taskCardDate.ts +111 -111
  145. package/src/client/lib/utils.ts +6 -6
  146. package/src/server/auth.ts +351 -302
  147. package/src/server/bootstrapDev.ts +11 -2
  148. package/src/server/bootstrapInstalled.ts +6 -1
  149. package/src/server/index.ts +33 -7
  150. package/src/server/migrations/013_cli_policy_and_provenance.ts +2 -2
  151. package/src/server/migrations/019_cli_global_create_board_default_on.ts +14 -0
  152. package/src/server/migrations/registry.ts +43 -41
  153. package/src/server/parseBootstrapProfile.ts +42 -0
  154. package/src/server/storage/cliPolicy.ts +2 -1
  155. package/src/shared/runtimeConfig.ts +256 -237
  156. package/src/shared/runtimeIdentity.test.ts +47 -0
  157. package/src/shared/runtimeIdentity.ts +35 -0
  158. package/src/shared/serverStatus.ts +21 -0
  159. package/src/shared/skillsInstall.ts +70 -0
  160. package/src/shared/terminalColors.ts +24 -0
  161. package/dist/assets/architecture-YZFGNWBL-3h1eIYfB.js +0 -1
  162. package/dist/assets/architectureDiagram-Q4EWVU46-DSQ1_74_.js +0 -36
  163. package/dist/assets/channel-yBmN_ln0.js +0 -1
  164. package/dist/assets/classDiagram-6PBFFD2Q-CotFZI8-.js +0 -1
  165. package/dist/assets/classDiagram-v2-HSJHXN6E-DAPzeDGn.js +0 -1
  166. package/dist/assets/clone-BRQpYu_n.js +0 -1
  167. package/dist/assets/cytoscape.esm-BIYWHPG0.js +0 -321
  168. package/dist/assets/dagre-rhyPjnsQ.js +0 -1
  169. package/dist/assets/diagram-5BDNPKRD-Ky3EXXj0.js +0 -10
  170. package/dist/assets/diagram-G4DWMVQ6-t7LbT0Uz.js +0 -24
  171. package/dist/assets/diagram-MMDJMWI5-CdnLXEMx.js +0 -43
  172. package/dist/assets/diagram-TYMM5635-CnzTqJBM.js +0 -24
  173. package/dist/assets/gitGraph-7Q5UKJZL-CG8f8JF7.js +0 -1
  174. package/dist/assets/graphlib-COiJG5Qv.js +0 -1
  175. package/dist/assets/identity-D4WOnl_h.js +0 -1
  176. package/dist/assets/index-lyyIVcc_.js +0 -304
  177. package/dist/assets/info-OMHHGYJF-C8_SHoRO.js +0 -1
  178. package/dist/assets/infoDiagram-42DDH7IO-BbvTdpSV.js +0 -2
  179. package/dist/assets/mermaid-parser.core-6Tn8epr_.js +0 -4
  180. package/dist/assets/packet-4T2RLAQJ-BvpAX0kJ.js +0 -1
  181. package/dist/assets/pie-ZZUOXDRM-Ow26Yf-E.js +0 -1
  182. package/dist/assets/radar-PYXPWWZC-e_ron5jQ.js +0 -1
  183. package/dist/assets/reduce-BDOBPIXr.js +0 -1
  184. package/dist/assets/stateDiagram-FHFEXIEX-CYfGMoR8.js +0 -1
  185. package/dist/assets/stateDiagram-v2-QKLJ7IA2-CO1W_n55.js +0 -1
  186. package/dist/assets/treeView-SZITEDCU-DsEr3xeq.js +0 -1
  187. package/dist/assets/treemap-W4RFUUIX-DV7nk2AB.js +0 -1
  188. package/dist/assets/vennDiagram-DHZGUBPP-BjTbuhcb.js +0 -34
  189. package/dist/assets/wardley-RL74JXVD-CrrFU9AE.js +0 -1
  190. /package/dist/assets/{chunk-4BX2VUAB-ean5NKtU.js → chunk-4BX2VUAB-C70mcfQR.js} +0 -0
  191. /package/dist/assets/{chunk-55IACEB6-CvSRyJqy.js → chunk-55IACEB6-CWfnqcLM.js} +0 -0
  192. /package/dist/assets/{chunk-BSJP7CBP-D8kBlJsf.js → chunk-BSJP7CBP-B0LrXV9y.js} +0 -0
  193. /package/dist/assets/{chunk-FMBD7UC4-DrNhFt1N.js → chunk-FMBD7UC4-_mV71Mwu.js} +0 -0
  194. /package/dist/assets/{chunk-QZHKN3VN-Csp3OYJY.js → chunk-QZHKN3VN-t2nrsegL.js} +0 -0
  195. /package/dist/assets/{katex-8mXVa4k3.js → katex-B2dtGfSp.js} +0 -0
  196. /package/dist/assets/{rough.esm-DtEqI08j.js → rough.esm-DEh6Frf9.js} +0 -0
@@ -0,0 +1,106 @@
1
+ # Lists Commands
2
+
3
+ Use `hirotm lists` to inspect and manage board columns. Lists belong to a board, so most commands require `--board <id-or-slug>`.
4
+
5
+ ## Shared arguments
6
+
7
+ - `--board <id-or-slug>`: target board id or slug.
8
+ - `<list-id>`: numeric list id.
9
+ - `--yes`: use for non-interactive delete, restore, and purge commands.
10
+
11
+ ### Position flags
12
+
13
+ Used by `lists move`. Pass exactly one.
14
+
15
+ - `--before <list-id>`: place before another list.
16
+ - `--after <list-id>`: place after another list.
17
+ - `--first`: move to the first position.
18
+ - `--last`: move to the last position.
19
+
20
+ ## Commands
21
+
22
+ ### `lists list`
23
+
24
+ Format:
25
+
26
+ ```bash
27
+ hirotm lists list --board <id-or-slug> [--limit <n>] [--offset <n>] [--page-all] [--fields <keys>]
28
+ ```
29
+
30
+ Use this to discover lists on a board before mutation.
31
+
32
+ - `--limit <n>`: page size.
33
+ - `--offset <n>`: skip rows.
34
+ - `--page-all`: merge all pages.
35
+ - `--fields <keys>`: project only selected fields.
36
+ - Supports global `--quiet` with `--format ndjson`.
37
+
38
+ ### `lists add`
39
+
40
+ Format:
41
+
42
+ ```bash
43
+ hirotm lists add --board <id-or-slug> [name] [--emoji <text>]
44
+ ```
45
+
46
+ Create a new list on a board.
47
+
48
+ - `[name]`: list name. Optional.
49
+ - `--emoji <text>`: emoji prefix for the list.
50
+
51
+ ### `lists update`
52
+
53
+ Format:
54
+
55
+ ```bash
56
+ hirotm lists update --board <id-or-slug> <list-id> [--name <text>] [--color <css> | --clear-color] [--emoji <text> | --clear-emoji]
57
+ ```
58
+
59
+ Update list fields. Pass at least one change.
60
+
61
+ - `--name <text>`: rename the list.
62
+ - `--color <css>`: set a CSS color value.
63
+ - `--clear-color`: remove the list color.
64
+ - `--emoji <text>` or `--clear-emoji`: set or clear emoji.
65
+
66
+ ### `lists move`
67
+
68
+ Format:
69
+
70
+ ```bash
71
+ hirotm lists move --board <id-or-slug> <list-id> [--before <list-id> | --after <list-id> | --first | --last]
72
+ ```
73
+
74
+ Reorder a list within a board.
75
+
76
+ - Position flags are listed once in `Position flags`.
77
+
78
+ ### `lists delete`
79
+
80
+ Format:
81
+
82
+ ```bash
83
+ hirotm lists delete --board <id-or-slug> <list-id> --yes
84
+ ```
85
+
86
+ Move a list to Trash.
87
+
88
+ ### `lists restore`
89
+
90
+ Format:
91
+
92
+ ```bash
93
+ hirotm lists restore <list-id> --yes
94
+ ```
95
+
96
+ Restore a trashed list.
97
+
98
+ ### `lists purge`
99
+
100
+ Format:
101
+
102
+ ```bash
103
+ hirotm lists purge <list-id> --yes
104
+ ```
105
+
106
+ Permanently delete a trashed list. This is irreversible.
@@ -0,0 +1,87 @@
1
+ # Releases Commands
2
+
3
+ Use `hirotm releases` to inspect and manage board releases. Releases are board-level labels used to group tasks.
4
+
5
+ ## Shared arguments
6
+
7
+ - `--board <id-or-slug>`: target board id or slug.
8
+ - `<release-id>`: numeric release id.
9
+ - `--yes`: use for non-interactive delete commands.
10
+
11
+ ### Shared list/read flags
12
+
13
+ Used by `releases list` and partially by `releases show`.
14
+
15
+ - `--limit <n>`: page size.
16
+ - `--offset <n>`: skip rows.
17
+ - `--page-all`: merge all pages.
18
+ - `--fields <keys>`: project only selected fields.
19
+ - `releases list` supports global `--quiet` with `--format ndjson`.
20
+
21
+ ### Shared update fields
22
+
23
+ Used by `releases add` and `releases update`.
24
+
25
+ - `--name <text>`: release name.
26
+ - `--color <css>` or `--clear-color`: set or clear release color.
27
+ - `--release-date <text>` or `--clear-release-date`: set or clear the release date.
28
+
29
+ ## Commands
30
+
31
+ ### `releases list`
32
+
33
+ Format:
34
+
35
+ ```bash
36
+ hirotm releases list --board <id-or-slug> [--limit <n>] [--offset <n>] [--page-all] [--fields <keys>]
37
+ ```
38
+
39
+ Use this to discover releases on a board before setting `--release` or `--release-id` on tasks.
40
+
41
+ ### `releases show`
42
+
43
+ Format:
44
+
45
+ ```bash
46
+ hirotm releases show --board <id-or-slug> <release-id> [--fields <keys>]
47
+ ```
48
+
49
+ Inspect one release by id.
50
+
51
+ ### `releases add`
52
+
53
+ Format:
54
+
55
+ ```bash
56
+ hirotm releases add --board <id-or-slug> --name <text> [--color <css> | --clear-color] [--release-date <text> | --clear-release-date]
57
+ ```
58
+
59
+ Create a release on a board.
60
+
61
+ - Shared update fields are listed once in `Shared update fields`.
62
+ - Release names must be unique per board.
63
+
64
+ ### `releases update`
65
+
66
+ Format:
67
+
68
+ ```bash
69
+ hirotm releases update --board <id-or-slug> <release-id> [--name <text>] [--color <css> | --clear-color] [--release-date <text> | --clear-release-date]
70
+ ```
71
+
72
+ Update release fields. Pass at least one change.
73
+
74
+ - Shared update fields are listed once in `Shared update fields`.
75
+
76
+ ### `releases delete`
77
+
78
+ Format:
79
+
80
+ ```bash
81
+ hirotm releases delete --board <id-or-slug> <release-id> [--move-tasks-to <id>] --yes
82
+ ```
83
+
84
+ Delete a release from a board.
85
+
86
+ - `--move-tasks-to <id>`: move tagged tasks to another release before deletion.
87
+ - If omitted, tasks on that release become untagged.
@@ -0,0 +1,38 @@
1
+ # Search Commands
2
+
3
+ Use `hirotm query search` for full-text task search across indexed task fields such as title, body, list name, group label, and status label.
4
+
5
+ ## Command
6
+
7
+ ### `query search <query...>`
8
+
9
+ Format:
10
+
11
+ ```bash
12
+ hirotm query search <query...> [--board <id-or-slug>] [--limit <n>] [--offset <n>] [--page-all] [--no-prefix] [--fields <keys>]
13
+ ```
14
+
15
+ Search tasks by text.
16
+
17
+ - `<query...>`: search text. Quote phrases when needed.
18
+ - `--board <id-or-slug>`: limit hits to one board.
19
+ - `--limit <n>`: page size. Defaults to `20` when omitted.
20
+ - `--offset <n>`: skip rows.
21
+ - `--page-all`: merge all pages.
22
+ - `--no-prefix`: disable automatic prefix matching on the last token.
23
+ - `--fields <keys>`: project only selected fields.
24
+ - Supports global `--quiet` with `--format ndjson`.
25
+
26
+ ## Search behavior
27
+
28
+ - By default, the last token is prefix-matched unless `--no-prefix` is used.
29
+ - Results are ordered by relevance score, best matches first.
30
+ - Invalid search syntax returns an error.
31
+
32
+ ## Result fields
33
+
34
+ - `taskId`: global task id.
35
+ - `boardSlug` / `boardName`: where the task lives.
36
+ - `listName`: list name for the hit.
37
+ - `snippet`: short excerpt with match context.
38
+ - `score`: relevance score; lower is better.
@@ -0,0 +1,25 @@
1
+ # Statuses Commands
2
+
3
+ Use `hirotm statuses` to inspect the global workflow status table. These status ids are the values used by task commands for `--status`.
4
+
5
+ ## Commands
6
+
7
+ ### `statuses list`
8
+
9
+ Format:
10
+
11
+ ```bash
12
+ hirotm statuses list [--fields <keys>]
13
+ ```
14
+
15
+ List all workflow statuses in display order.
16
+
17
+ - `--fields <keys>`: project only selected fields.
18
+ - Supports global `--quiet` with `--format ndjson`.
19
+
20
+ ## Field meaning
21
+
22
+ - `statusId`: value accepted by task commands for `--status`.
23
+ - `label`: human-readable status name.
24
+ - `sortOrder`: workflow display order.
25
+ - `isClosed`: whether the status counts as closed.
@@ -0,0 +1,144 @@
1
+ # Tasks Commands
2
+
3
+ Use `hirotm tasks` to inspect, create, update, move, and remove tasks on a board.
4
+
5
+ ## Shared arguments
6
+
7
+ - `--board <id-or-slug>`: target board id or slug.
8
+ - `<task-id>`: numeric task id.
9
+ - `--yes`: use for non-interactive delete, restore, and purge commands.
10
+
11
+ ### Body input variants
12
+
13
+ Used by `tasks add` and `tasks update` when setting the task body.
14
+
15
+ - `--body <text>`: inline Markdown text.
16
+ - `--body-file <path>`: read body from file.
17
+ - `--body-stdin`: read body from stdin.
18
+
19
+ ### Release selectors
20
+
21
+ Used by `tasks add` and `tasks update`. Use only one release selector at a time.
22
+
23
+ - `--release <name>`: select a release by exact name.
24
+ - `--release none`: explicitly leave the task untagged.
25
+ - `--release-id <id>`: select a release by numeric id.
26
+ - Omit both release flags to allow server defaults or auto-assignment when configured.
27
+
28
+ ### Move position flags
29
+
30
+ Used by `tasks move`. Pass exactly one when you need placement control.
31
+
32
+ - `--before-task <id>`: place before another task.
33
+ - `--after-task <id>`: place after another task.
34
+ - `--first`: move to the first position.
35
+ - `--last`: move to the last position.
36
+
37
+ ## Commands
38
+
39
+ ### `tasks list`
40
+
41
+ Format:
42
+
43
+ ```bash
44
+ hirotm tasks list --board <id-or-slug> [--list <id>] [--group <id>...] [--priority <id>...] [--status <id>...] [--release-id <id>...] [--untagged] [--date-mode opened|closed|any] [--from <yyyy-mm-dd>] [--to <yyyy-mm-dd>] [--limit <n>] [--offset <n>] [--page-all] [--fields <keys>]
45
+ ```
46
+
47
+ Use this to inspect tasks on a board and narrow the result set before mutation.
48
+
49
+ - `--list <id>`: filter to one list.
50
+ - `--group <id>...`: filter by group id; repeat or use comma-separated values.
51
+ - `--priority <id>...`: filter by priority id; repeat or use comma-separated values.
52
+ - `--status <id>...`: filter by workflow status id; repeat or use comma-separated values.
53
+ - `--release-id <id>...`: filter by release id; repeat or use comma-separated values.
54
+ - `--untagged`: include tasks without a release; combine with `--release-id` as OR.
55
+ - `--date-mode`: use `opened`, `closed`, or `any`.
56
+ - `--from <yyyy-mm-dd>` / `--to <yyyy-mm-dd>`: inclusive date range.
57
+ - `--limit <n>`: page size.
58
+ - `--offset <n>`: skip rows.
59
+ - `--page-all`: merge all pages.
60
+ - `--fields <keys>`: project only selected fields.
61
+ - Supports global `--quiet` with `--format ndjson`.
62
+
63
+ ### `tasks add`
64
+
65
+ Format:
66
+
67
+ ```bash
68
+ hirotm tasks add --board <id-or-slug> --list <id> --group <id> [--title <text>] [--status <id>] [--priority <id>] [release selector] [--emoji <text>] [body input]
69
+ ```
70
+
71
+ Create a task on a board.
72
+
73
+ - `--list <id>`: destination list id.
74
+ - `--group <id>`: required task group id.
75
+ - `--title <text>`: task title. Optional.
76
+ - `--status <id>`: workflow status id. Optional.
77
+ - `--priority <id>`: priority id. Optional.
78
+ - `--emoji <text>`: emoji prefix for the task.
79
+ - Release selectors are listed once in `Release selectors`.
80
+ - Body input variants are listed once in `Body input variants`.
81
+
82
+ ### `tasks update`
83
+
84
+ Format:
85
+
86
+ ```bash
87
+ hirotm tasks update --board <id-or-slug> <task-id> [--title <text>] [--status <id>] [--list <id>] [--group <id>] [--priority <id>] [release selector] [--color <css> | --clear-color] [--emoji <text> | --clear-emoji] [body input]
88
+ ```
89
+
90
+ Update task fields. Pass at least one change.
91
+
92
+ - `--title <text>`: rename the task.
93
+ - `--status <id>`: change workflow status.
94
+ - `--list <id>`: move to another list.
95
+ - `--group <id>`: change task group.
96
+ - `--priority <id>`: change priority.
97
+ - `--color <css>` or `--clear-color`: set or clear card color.
98
+ - `--emoji <text>` or `--clear-emoji`: set or clear emoji.
99
+ - Release selectors are listed once in `Release selectors`.
100
+ - Body input variants are listed once in `Body input variants`.
101
+
102
+ ### `tasks move`
103
+
104
+ Format:
105
+
106
+ ```bash
107
+ hirotm tasks move --board <id-or-slug> --to-list <id> <task-id> [--to-status <id>] [--before-task <id> | --after-task <id> | --first | --last]
108
+ ```
109
+
110
+ Move a task to another list and optionally change its status in the destination.
111
+
112
+ - `--to-list <id>`: destination list id.
113
+ - `--to-status <id>`: destination workflow status. Optional.
114
+ - Move position flags are listed once in `Move position flags`.
115
+
116
+ ### `tasks delete`
117
+
118
+ Format:
119
+
120
+ ```bash
121
+ hirotm tasks delete --board <id-or-slug> <task-id> --yes
122
+ ```
123
+
124
+ Move a task to Trash.
125
+
126
+ ### `tasks restore`
127
+
128
+ Format:
129
+
130
+ ```bash
131
+ hirotm tasks restore <task-id> --yes
132
+ ```
133
+
134
+ Restore a trashed task.
135
+
136
+ ### `tasks purge`
137
+
138
+ Format:
139
+
140
+ ```bash
141
+ hirotm tasks purge <task-id> --yes
142
+ ```
143
+
144
+ Permanently delete a trashed task. This is irreversible.
@@ -0,0 +1,50 @@
1
+ # Trash Commands
2
+
3
+ Use `hirotm trash` to inspect what is currently in Trash. These commands are read-only; restore and purge are done through `boards`, `lists`, or `tasks`.
4
+
5
+ ## Shared arguments
6
+
7
+ - `--limit <n>`: page size.
8
+ - `--offset <n>`: skip rows.
9
+ - `--page-all`: merge all pages.
10
+ - `--fields <keys>`: project only selected fields.
11
+ - Supports global `--quiet` with `--format ndjson`.
12
+
13
+ ## Row meaning
14
+
15
+ - `trash list boards`: trashed boards.
16
+ - `trash list lists`: trashed lists with parent board context.
17
+ - `trash list tasks`: trashed tasks with parent board and list context.
18
+ - `canRestore`: whether restore is currently possible.
19
+
20
+ ## Commands
21
+
22
+ ### `trash list boards`
23
+
24
+ Format:
25
+
26
+ ```bash
27
+ hirotm trash list boards [--limit <n>] [--offset <n>] [--page-all] [--fields <keys>]
28
+ ```
29
+
30
+ List boards currently in Trash.
31
+
32
+ ### `trash list lists`
33
+
34
+ Format:
35
+
36
+ ```bash
37
+ hirotm trash list lists [--limit <n>] [--offset <n>] [--page-all] [--fields <keys>]
38
+ ```
39
+
40
+ List trashed lists with their board context.
41
+
42
+ ### `trash list tasks`
43
+
44
+ Format:
45
+
46
+ ```bash
47
+ hirotm trash list tasks [--limit <n>] [--offset <n>] [--page-all] [--fields <keys>]
48
+ ```
49
+
50
+ List trashed tasks with their board and list context.
@@ -0,0 +1,66 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import { resolveLauncherStartPlan } from "./launcher";
3
+
4
+ describe("resolveLauncherStartPlan", () => {
5
+ test("uses background mode by default outside setup", () => {
6
+ expect(
7
+ resolveLauncherStartPlan({
8
+ shouldRunSetup: false,
9
+ needsRecoveryKeyExitFlow: false,
10
+ alreadyRunning: false,
11
+ shouldOpenBrowser: true,
12
+ }),
13
+ ).toEqual({
14
+ startMode: "background",
15
+ readyLabel: "Started",
16
+ shouldOpenBrowserOnReady: true,
17
+ });
18
+ });
19
+
20
+ test("allows explicit foreground outside setup", () => {
21
+ expect(
22
+ resolveLauncherStartPlan({
23
+ shouldRunSetup: false,
24
+ needsRecoveryKeyExitFlow: false,
25
+ alreadyRunning: false,
26
+ shouldOpenBrowser: false,
27
+ preferForegroundWhenNotSetup: true,
28
+ }).startMode,
29
+ ).toBe("foreground");
30
+ });
31
+
32
+ test("does not reopen browser when already running", () => {
33
+ expect(
34
+ resolveLauncherStartPlan({
35
+ shouldRunSetup: false,
36
+ needsRecoveryKeyExitFlow: false,
37
+ alreadyRunning: true,
38
+ shouldOpenBrowser: true,
39
+ }),
40
+ ).toEqual({
41
+ startMode: "background",
42
+ readyLabel: "Already started",
43
+ shouldOpenBrowserOnReady: false,
44
+ });
45
+ });
46
+
47
+ test("keeps setup launches attached unless recovery flow needs background-attached", () => {
48
+ expect(
49
+ resolveLauncherStartPlan({
50
+ shouldRunSetup: true,
51
+ needsRecoveryKeyExitFlow: false,
52
+ alreadyRunning: false,
53
+ shouldOpenBrowser: true,
54
+ }).startMode,
55
+ ).toBe("foreground");
56
+
57
+ expect(
58
+ resolveLauncherStartPlan({
59
+ shouldRunSetup: true,
60
+ needsRecoveryKeyExitFlow: true,
61
+ alreadyRunning: false,
62
+ shouldOpenBrowser: true,
63
+ }).startMode,
64
+ ).toBe("background-attached");
65
+ });
66
+ });