@hiroleague/taskmanager 0.0.1 → 0.0.2
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/LICENSE +21 -0
- package/README.md +41 -52
- package/dist/assets/architecture-YZFGNWBL-C1MoQeSs.js +1 -0
- package/dist/assets/{architectureDiagram-Q4EWVU46-DSQ1_74_.js → architectureDiagram-Q4EWVU46-DUEfvDBu.js} +1 -1
- package/dist/assets/{blockDiagram-DXYQGD6D-DfOGNphI.js → blockDiagram-DXYQGD6D-DQzEOPT2.js} +1 -1
- package/dist/assets/{chunk-2KRD3SAO-9yt00aGC.js → chunk-2KRD3SAO-C2e-_49I.js} +1 -1
- package/dist/assets/{chunk-4TB4RGXK-DF8yJBFl.js → chunk-4TB4RGXK-AZq3s1Dh.js} +1 -1
- package/dist/assets/{chunk-67CJDMHE-5wFKo04G.js → chunk-67CJDMHE-B1-M78qu.js} +1 -1
- package/dist/assets/{chunk-7N4EOEYR-BRRGX_NC.js → chunk-7N4EOEYR-D7mYFpz-.js} +1 -1
- package/dist/assets/{chunk-AA7GKIK3-DUZv_pNI.js → chunk-AA7GKIK3-VWI9k39i.js} +1 -1
- package/dist/assets/{chunk-CIAEETIT-mA5aM_d7.js → chunk-CIAEETIT-hnu4zamm.js} +1 -1
- package/dist/assets/{chunk-FOC6F5B3-B-cqGCPC.js → chunk-FOC6F5B3-BJsh9nO9.js} +1 -1
- package/dist/assets/{chunk-K5T4RW27-BLRDzioh.js → chunk-K5T4RW27-BLIPdXaZ.js} +1 -1
- package/dist/assets/{chunk-KGLVRYIC-CTkQSeKy.js → chunk-KGLVRYIC-DvaW2TkT.js} +1 -1
- package/dist/assets/{chunk-LIHQZDEY-Cf34Nu3J.js → chunk-LIHQZDEY-CUsM0M11.js} +1 -1
- package/dist/assets/{chunk-ORNJ4GCN-D3uXgbay.js → chunk-ORNJ4GCN-CfluNV0_.js} +1 -1
- package/dist/assets/{chunk-OYMX7WX6-syQho5jf.js → chunk-OYMX7WX6-CkWzw4JX.js} +1 -1
- package/dist/assets/{classDiagram-6PBFFD2Q-CotFZI8-.js → classDiagram-6PBFFD2Q-Dx_f-9b7.js} +1 -1
- package/dist/assets/{classDiagram-v2-HSJHXN6E-DAPzeDGn.js → classDiagram-v2-HSJHXN6E-CSfvZ-nt.js} +1 -1
- package/dist/assets/clone-CXokakwV.js +1 -0
- package/dist/assets/{dagre-rhyPjnsQ.js → dagre-Do0eD9eI.js} +1 -1
- package/dist/assets/{dagre-KV5264BT-BBqulDtd.js → dagre-KV5264BT-lveZDhBf.js} +1 -1
- package/dist/assets/{diagram-5BDNPKRD-Ky3EXXj0.js → diagram-5BDNPKRD-Dq5yM_uY.js} +1 -1
- package/dist/assets/{diagram-G4DWMVQ6-t7LbT0Uz.js → diagram-G4DWMVQ6-D-SYOmKm.js} +1 -1
- package/dist/assets/{diagram-MMDJMWI5-CdnLXEMx.js → diagram-MMDJMWI5-lU5t9BZA.js} +1 -1
- package/dist/assets/{diagram-TYMM5635-CnzTqJBM.js → diagram-TYMM5635-6tfUbY3R.js} +1 -1
- package/dist/assets/{erDiagram-SMLLAGMA-BN5eJerP.js → erDiagram-SMLLAGMA-dx09stuy.js} +1 -1
- package/dist/assets/{flatten-C5NL-f24.js → flatten-B2BZ0pzY.js} +1 -1
- package/dist/assets/{flowDiagram-DWJPFMVM-CbFskc8S.js → flowDiagram-DWJPFMVM-CJi2WISS.js} +1 -1
- package/dist/assets/gitGraph-7Q5UKJZL-BXTuQaDM.js +1 -0
- package/dist/assets/{gitGraphDiagram-UUTBAWPF-wpqI2kyI.js → gitGraphDiagram-UUTBAWPF-Bjj94M12.js} +1 -1
- package/dist/assets/{graphlib-COiJG5Qv.js → graphlib-BIlXYGdM.js} +1 -1
- package/dist/assets/{index-lyyIVcc_.js → index-CZZuue3D.js} +5 -5
- package/dist/assets/info-OMHHGYJF-BeeKt8-X.js +1 -0
- package/dist/assets/{infoDiagram-42DDH7IO-BbvTdpSV.js → infoDiagram-42DDH7IO-wq_opQKO.js} +1 -1
- package/dist/assets/{ishikawaDiagram-UXIWVN3A-Epc23N_0.js → ishikawaDiagram-UXIWVN3A-Cnc1bwBo.js} +1 -1
- package/dist/assets/{kanban-definition-6JOO6SKY-C8dW_26n.js → kanban-definition-6JOO6SKY-CwHbIze0.js} +1 -1
- package/dist/assets/{mermaid-parser.core-6Tn8epr_.js → mermaid-parser.core-DrLhKJ48.js} +2 -2
- package/dist/assets/{mindmap-definition-QFDTVHPH-CvpNtrKT.js → mindmap-definition-QFDTVHPH-DswAJiEd.js} +1 -1
- package/dist/assets/packet-4T2RLAQJ-DQ-H9_jd.js +1 -0
- package/dist/assets/pie-ZZUOXDRM-BSj0Jsyj.js +1 -0
- package/dist/assets/{pieDiagram-DEJITSTG-eENymoXZ.js → pieDiagram-DEJITSTG-DgQTCddl.js} +1 -1
- package/dist/assets/radar-PYXPWWZC-B7-oRPFL.js +1 -0
- package/dist/assets/{reduce-BDOBPIXr.js → reduce-Uumu9GdR.js} +1 -1
- package/dist/assets/{requirementDiagram-MS252O5E-CmRO3hLp.js → requirementDiagram-MS252O5E-D1moa23Z.js} +1 -1
- package/dist/assets/{sequenceDiagram-FGHM5R23-B7qNcwNo.js → sequenceDiagram-FGHM5R23-Dvhj7HGn.js} +1 -1
- package/dist/assets/{stateDiagram-FHFEXIEX-CYfGMoR8.js → stateDiagram-FHFEXIEX-Dx5CjenB.js} +1 -1
- package/dist/assets/{stateDiagram-v2-QKLJ7IA2-CO1W_n55.js → stateDiagram-v2-QKLJ7IA2-C_PkrTdc.js} +1 -1
- package/dist/assets/{timeline-definition-GMOUNBTQ-CQWqDPGG.js → timeline-definition-GMOUNBTQ-z-IncVmK.js} +1 -1
- package/dist/assets/treeView-SZITEDCU-CFXle9Az.js +1 -0
- package/dist/assets/treemap-W4RFUUIX-CAW3vWh8.js +1 -0
- package/dist/assets/{vennDiagram-DHZGUBPP-BjTbuhcb.js → vennDiagram-DHZGUBPP-CT1ehozU.js} +1 -1
- package/dist/assets/wardley-RL74JXVD-7q3ju4kc.js +1 -0
- package/dist/assets/{wardleyDiagram-NUSXRM2D-DNhPIFCg.js → wardleyDiagram-NUSXRM2D-D-kouujI.js} +1 -1
- package/dist/assets/{xychartDiagram-5P7HB3ND-BDblAZ11.js → xychartDiagram-5P7HB3ND-D1lnM0pL.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +101 -92
- package/scripts/postinstall-message.mjs +160 -0
- package/scripts/stubs/node-domexception/index.cjs +18 -0
- package/scripts/stubs/node-domexception/package.json +7 -0
- package/skills/hiro-task-manager-cli/SKILL.md +97 -0
- package/skills/hiro-task-manager-cli/reference/boards.md +143 -0
- package/skills/hiro-task-manager-cli/reference/cli-access-policy.md +72 -0
- package/skills/hiro-task-manager-cli/reference/errors.md +85 -0
- package/skills/hiro-task-manager-cli/reference/lists.md +106 -0
- package/skills/hiro-task-manager-cli/reference/releases.md +87 -0
- package/skills/hiro-task-manager-cli/reference/search.md +38 -0
- package/skills/hiro-task-manager-cli/reference/statuses.md +25 -0
- package/skills/hiro-task-manager-cli/reference/tasks.md +144 -0
- package/skills/hiro-task-manager-cli/reference/trash.md +50 -0
- package/src/cli/bootstrap/launcher.test.ts +66 -0
- package/src/cli/bootstrap/launcher.ts +375 -35
- package/src/cli/bootstrap/program.ts +4 -0
- package/src/cli/bootstrap/runtime.test.ts +15 -0
- package/src/cli/bootstrap/runtime.ts +27 -1
- package/src/cli/commands/query.ts +56 -56
- package/src/cli/commands/server.ts +27 -19
- package/src/cli/handlers/boards.test.ts +669 -669
- package/src/cli/handlers/cli-wiring.test.ts +1 -1
- package/src/cli/handlers/search.test.ts +374 -374
- package/src/cli/handlers/search.ts +17 -17
- package/src/cli/handlers/server.test.ts +55 -13
- package/src/cli/handlers/server.ts +16 -3
- package/src/cli/lib/api-client.test.ts +35 -2
- package/src/cli/lib/api-client.ts +43 -10
- package/src/cli/lib/cli-http-errors.test.ts +85 -85
- package/src/cli/lib/command-helpers.ts +161 -154
- package/src/cli/lib/config.ts +4 -0
- package/src/cli/lib/launcherUi.ts +166 -0
- package/src/cli/lib/process.test.ts +24 -5
- package/src/cli/lib/process.ts +86 -55
- package/src/cli/ports/process.ts +8 -2
- package/src/cli/subprocess.real-stack.test.ts +611 -598
- package/src/cli/subprocess.smoke.test.ts +954 -969
- package/src/cli/types/config.ts +2 -6
- package/src/client/components/auth/AuthScreen.tsx +3 -3
- package/src/client/components/board/BoardStatsChips.tsx +233 -233
- package/src/client/components/board/BoardStatsContext.tsx +41 -41
- package/src/client/components/board/boardHeaderButtonStyles.ts +38 -38
- package/src/client/components/board/shortcuts/useBoardShortcutKeydown.ts +49 -49
- package/src/client/components/board/useBoardCanvasPanScroll.ts +108 -108
- package/src/client/components/board/useBoardTaskContainerDroppableReact.ts +33 -33
- package/src/client/components/board/useBoardTaskSortableReact.ts +26 -26
- package/src/client/components/multi-select.tsx +1206 -1206
- package/src/client/components/routing/BoardPage.tsx +20 -20
- package/src/client/components/routing/NavigationRegistrar.tsx +13 -13
- package/src/client/components/settings/SettingsPage.tsx +1 -1
- package/src/client/components/task/TaskCard.tsx +643 -643
- package/src/client/components/ui/badge.tsx +49 -49
- package/src/client/components/ui/button.tsx +65 -65
- package/src/client/components/ui/command.tsx +193 -193
- package/src/client/components/ui/dialog.tsx +163 -163
- package/src/client/components/ui/input-group.tsx +155 -155
- package/src/client/components/ui/input.tsx +19 -19
- package/src/client/components/ui/popover.tsx +87 -87
- package/src/client/components/ui/separator.tsx +28 -28
- package/src/client/components/ui/textarea.tsx +18 -18
- package/src/client/index.css +248 -248
- package/src/client/lib/appNavigate.ts +16 -16
- package/src/client/lib/taskCardDate.ts +111 -111
- package/src/client/lib/utils.ts +6 -6
- package/src/server/auth.ts +351 -302
- package/src/server/bootstrapDev.ts +11 -2
- package/src/server/bootstrapInstalled.ts +6 -1
- package/src/server/index.ts +33 -7
- package/src/server/migrations/013_cli_policy_and_provenance.ts +2 -2
- package/src/server/migrations/019_cli_global_create_board_default_on.ts +14 -0
- package/src/server/migrations/registry.ts +43 -41
- package/src/server/parseBootstrapProfile.ts +42 -0
- package/src/server/storage/cliPolicy.ts +2 -1
- package/src/shared/runtimeConfig.ts +256 -237
- package/src/shared/runtimeIdentity.test.ts +47 -0
- package/src/shared/runtimeIdentity.ts +35 -0
- package/src/shared/serverStatus.ts +21 -0
- package/src/shared/skillsInstall.ts +71 -0
- package/src/shared/terminalColors.ts +24 -0
- package/dist/assets/architecture-YZFGNWBL-3h1eIYfB.js +0 -1
- package/dist/assets/clone-BRQpYu_n.js +0 -1
- package/dist/assets/gitGraph-7Q5UKJZL-CG8f8JF7.js +0 -1
- package/dist/assets/info-OMHHGYJF-C8_SHoRO.js +0 -1
- package/dist/assets/packet-4T2RLAQJ-BvpAX0kJ.js +0 -1
- package/dist/assets/pie-ZZUOXDRM-Ow26Yf-E.js +0 -1
- package/dist/assets/radar-PYXPWWZC-e_ron5jQ.js +0 -1
- package/dist/assets/treeView-SZITEDCU-DsEr3xeq.js +0 -1
- package/dist/assets/treemap-W4RFUUIX-DV7nk2AB.js +0 -1
- package/dist/assets/wardley-RL74JXVD-CrrFU9AE.js +0 -1
|
@@ -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
|
+
});
|