gemiterm 2.0.0 → 2.1.1

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 (155) hide show
  1. package/README.md +32 -9
  2. package/package.json +13 -4
  3. package/src/cli/command-registry.ts +66 -62
  4. package/src/cli/commands/continue-command.ts +75 -1
  5. package/src/cli/commands/install-skills-command.ts +35 -0
  6. package/src/cli/commands/new-command.ts +62 -0
  7. package/src/cli/index.ts +19 -44
  8. package/src/cli/utils/long-arg-guard.ts +28 -0
  9. package/src/cli/utils/prompt-file.ts +26 -0
  10. package/src/infrastructure/cli-parser.ts +77 -0
  11. package/src/infrastructure/io.ts +9 -0
  12. package/src/services/skills-cli-driver.ts +58 -0
  13. package/src/services/skills-service.ts +52 -0
  14. package/.env +0 -2
  15. package/.github/workflows/manual-release.yml +0 -34
  16. package/.github/workflows/release.yml +0 -198
  17. package/.github/workflows/test.yml +0 -29
  18. package/.opencode/commands/opsx-apply.md +0 -152
  19. package/.opencode/commands/opsx-archive.md +0 -157
  20. package/.opencode/commands/opsx-explore.md +0 -169
  21. package/.opencode/commands/opsx-propose.md +0 -104
  22. package/.opencode/commands/opsx-sync.md +0 -140
  23. package/.opencode/commands/search-intelligently.md +0 -9
  24. package/.opencode/opencode.json +0 -20
  25. package/.opencode/skills/intellisearch/.version +0 -1
  26. package/.opencode/skills/intellisearch/SKILL.md +0 -84
  27. package/.opencode/skills/intellisearch/references/brave-search.md +0 -67
  28. package/.opencode/skills/intellisearch/references/ddg-search.md +0 -79
  29. package/.opencode/skills/intellisearch/references/deepwiki-tools.md +0 -246
  30. package/.opencode/skills/intellisearch/references/examples.md +0 -97
  31. package/.opencode/skills/intellisearch/references/gh-cli.md +0 -143
  32. package/.opencode/skills/intellisearch/references/google-search.md +0 -40
  33. package/.opencode/skills/intellisearch/references/search-workflow.md +0 -143
  34. package/.opencode/skills/intellisearch/references/workflow.md +0 -115
  35. package/.opencode/skills/openspec-apply-change/SKILL.md +0 -159
  36. package/.opencode/skills/openspec-archive-change/SKILL.md +0 -117
  37. package/.opencode/skills/openspec-explore/SKILL.md +0 -287
  38. package/.opencode/skills/openspec-propose/SKILL.md +0 -111
  39. package/.opencode/skills/openspec-sync-specs/SKILL.md +0 -147
  40. package/.serena/project.yml +0 -133
  41. package/AGENTS.md +0 -136
  42. package/CHANGELOG.md +0 -3
  43. package/bun.lock +0 -105
  44. package/docs/INSTALL.md +0 -185
  45. package/docs/PLAYWRIGHT_CLI_API.md +0 -306
  46. package/docs/python-release-for-reference.md +0 -175
  47. package/examples/sample_json_export.json +0 -32
  48. package/examples/sample_markdown_export.md +0 -221
  49. package/examples/usage_examples.sh +0 -222
  50. package/install.ps1 +0 -264
  51. package/install.sh +0 -275
  52. package/openspec/MAESTRO_MIGRATION.md +0 -180
  53. package/openspec/changes/archive/2026-06-08-command-spec-conformance/.openspec.yaml +0 -2
  54. package/openspec/changes/archive/2026-06-08-command-spec-conformance/design.md +0 -194
  55. package/openspec/changes/archive/2026-06-08-command-spec-conformance/proposal.md +0 -52
  56. package/openspec/changes/archive/2026-06-08-command-spec-conformance/specs/multi-profile-conversations/spec.md +0 -133
  57. package/openspec/changes/archive/2026-06-08-command-spec-conformance/tasks.md +0 -95
  58. package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/.openspec.yaml +0 -2
  59. package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/design.md +0 -28
  60. package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/proposal.md +0 -22
  61. package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/specs/interactive-prompt-loop/spec.md +0 -35
  62. package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/tasks.md +0 -28
  63. package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/.openspec.yaml +0 -2
  64. package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/design.md +0 -323
  65. package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/proposal.md +0 -122
  66. package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/specs/no-capability-changes/spec.md +0 -29
  67. package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/tasks.md +0 -172
  68. package/openspec/changes/archive/2026-06-09-v2-install-migration/.openspec.yaml +0 -2
  69. package/openspec/changes/archive/2026-06-09-v2-install-migration/design.md +0 -241
  70. package/openspec/changes/archive/2026-06-09-v2-install-migration/proposal.md +0 -41
  71. package/openspec/changes/archive/2026-06-09-v2-install-migration/specs/v2-installer/spec.md +0 -205
  72. package/openspec/changes/archive/2026-06-09-v2-install-migration/tasks.md +0 -97
  73. package/openspec/changes/commander-cli-parser/.openspec.yaml +0 -2
  74. package/openspec/changes/commander-cli-parser/design.md +0 -107
  75. package/openspec/changes/commander-cli-parser/proposal.md +0 -31
  76. package/openspec/changes/commander-cli-parser/specs/cli/spec.md +0 -48
  77. package/openspec/changes/commander-cli-parser/tasks.md +0 -33
  78. package/openspec/changes/cross-platform-build-and-ci/.openspec.yaml +0 -2
  79. package/openspec/changes/cross-platform-build-and-ci/design.md +0 -213
  80. package/openspec/changes/cross-platform-build-and-ci/proposal.md +0 -50
  81. package/openspec/changes/cross-platform-build-and-ci/specs/path-and-file-mediation/spec.md +0 -335
  82. package/openspec/changes/cross-platform-build-and-ci/specs/release-pipeline/spec.md +0 -95
  83. package/openspec/changes/cross-platform-build-and-ci/tasks.md +0 -164
  84. package/openspec/config.yaml +0 -20
  85. package/openspec/specs/auth/spec.md +0 -394
  86. package/openspec/specs/cli/spec.md +0 -108
  87. package/openspec/specs/commands/spec.md +0 -409
  88. package/openspec/specs/configuration/spec.md +0 -130
  89. package/openspec/specs/conversations/spec.md +0 -139
  90. package/openspec/specs/domain-model/spec.md +0 -128
  91. package/openspec/specs/formatters/spec.md +0 -158
  92. package/openspec/specs/install-browser/spec.md +0 -146
  93. package/openspec/specs/interactive-prompt-loop/spec.md +0 -41
  94. package/openspec/specs/logger/spec.md +0 -71
  95. package/openspec/specs/mediator/spec.md +0 -72
  96. package/openspec/specs/multi-profile-conversations/spec.md +0 -145
  97. package/openspec/specs/path-utils/spec.md +0 -101
  98. package/openspec/specs/profiles/spec.md +0 -94
  99. package/openspec/specs/storage/spec.md +0 -198
  100. package/openspec/specs/testing/spec.md +0 -237
  101. package/openspec/specs/v2-installer/spec.md +0 -205
  102. package/openspec/specs/validators/spec.md +0 -65
  103. package/scripts/build.ts +0 -88
  104. package/scripts/clean-build.ps1 +0 -4
  105. package/scripts/clean-build.sh +0 -5
  106. package/scripts/install-browser.ps1 +0 -5
  107. package/scripts/install-browser.sh +0 -6
  108. package/scripts/lint-path-mediation.ps1 +0 -65
  109. package/scripts/lint-path-mediation.sh +0 -40
  110. package/tests/cli/auth-command.test.ts +0 -220
  111. package/tests/cli/command-registry.test.ts +0 -67
  112. package/tests/cli/continue-command.test.ts +0 -100
  113. package/tests/cli/delete-command.test.ts +0 -128
  114. package/tests/cli/export-all-command.test.ts +0 -375
  115. package/tests/cli/install-browser-command.test.ts +0 -48
  116. package/tests/cli/list-command.test.ts +0 -179
  117. package/tests/cli/new-command.test.ts +0 -139
  118. package/tests/cli/status-command.test.ts +0 -106
  119. package/tests/core/query-handlers.test.ts +0 -187
  120. package/tests/fixtures/auth-fixtures.ts +0 -98
  121. package/tests/fixtures/chat-fixtures.ts +0 -87
  122. package/tests/infrastructure/cli-table.test.ts +0 -107
  123. package/tests/infrastructure/formatters.test.ts +0 -202
  124. package/tests/infrastructure/io.test.ts +0 -197
  125. package/tests/infrastructure/logger.test.ts +0 -74
  126. package/tests/infrastructure/storage.test.ts +0 -335
  127. package/tests/infrastructure/validators.test.ts +0 -67
  128. package/tests/integration/commands/auth.test.ts +0 -186
  129. package/tests/integration/commands/continue.test.ts +0 -130
  130. package/tests/integration/commands/delete.test.ts +0 -140
  131. package/tests/integration/commands/export.test.ts +0 -266
  132. package/tests/integration/commands/fetch.test.ts +0 -238
  133. package/tests/integration/commands/list.test.ts +0 -281
  134. package/tests/integration/commands/profile.test.ts +0 -258
  135. package/tests/integration/commands/status.test.ts +0 -223
  136. package/tests/integration/installer-script-shape.test.ts +0 -67
  137. package/tests/parity/compare-outputs.ts +0 -359
  138. package/tests/parity/test-commands-parity.ps1 +0 -82
  139. package/tests/parity/test-commands-parity.sh +0 -61
  140. package/tests/services/auth-service.test.ts +0 -315
  141. package/tests/services/cookie-monitor.test.ts +0 -229
  142. package/tests/services/cookie-storage-service.test.ts +0 -230
  143. package/tests/services/gemini-client-wrapper.test.ts +0 -688
  144. package/tests/services/install-browser-service.test.ts +0 -83
  145. package/tests/services/playwright-cli-driver.test.ts +0 -468
  146. package/tests/services/profile-auth-manager.test.ts +0 -334
  147. package/tests/services/profile-service.test.ts +0 -224
  148. package/tests/setup.ts +0 -95
  149. package/tests/smoke/smoke.test.ts +0 -52
  150. package/tests/unit/config.test.ts +0 -159
  151. package/tests/unit/errors.test.ts +0 -119
  152. package/tests/unit/formatters.test.ts +0 -316
  153. package/tests/unit/mediator.test.ts +0 -152
  154. package/tests/unit/path-utils.test.ts +0 -289
  155. package/tsconfig.json +0 -16
package/AGENTS.md DELETED
@@ -1,136 +0,0 @@
1
- # GemiTerm Agent Guide (Bun Rewrite)
2
-
3
- Context for AI assistants and human contributors working in this repository.
4
- This file is the **persistent project context**; the per-session **goal** is supplied
5
- in the user message and is intentionally not duplicated here.
6
-
7
- ---
8
-
9
- ## What this project is
10
-
11
- A Bun-native TypeScript rewrite of **gemiterm**, a CLI for Google's Gemini web app.
12
- This rewrite will be released as **v2.0.0** and will replace the Python v1.4.1
13
- implementation currently published from `Expert-Vision-Software/gemiterm`.
14
-
15
- - **Upstream repo (reference only):** https://github.com/Expert-Vision-Software/gemiterm
16
- - **Local clone of upstream (Python v1.4.1 source, reference only):**
17
- `C:\dev\projects\github\webgemini-cli\`
18
- - **This repo (Bun rewrite, the v2.0.0 target):** `C:\dev\projects\github\gemiterm-bun-rewrite\`
19
- - **Active branch:** `gemiterm-bun-rewrite`
20
- - **Status:** functionally complete (432/432 tests pass, 11 CLI commands
21
- registered, auth flow working). CI/release pipeline is captured in the
22
- `cross-platform-build-and-ci` OpenSpec change and is **not yet implemented in code** —
23
- only the OpenSpec artifact is on disk (`openspec/changes/cross-platform-build-and-ci/`).
24
-
25
- ## Goal & design intent
26
-
27
- The goal of **each work session** is supplied in the user message — read it there.
28
-
29
- Standing design intent (does not change session to session):
30
-
31
- - **Functional parity with the Python v1.4.1 implementation** is the baseline.
32
- - **Explicit deviation:** browser launch and automation go through the
33
- `playwright-cli` subprocess (`@playwright/cli` on npm), not the
34
- Python `playwright` SDK. This means some of the cross-platform browser
35
- detection the Python code carried is no longer ours to do — `playwright-cli`
36
- handles its own browser install (`playwright-cli install chromium`),
37
- its own browser selection (`--browser=chromium|chrome|msedge|firefox|webkit`),
38
- and its own CDP attach (`--cdp=`).
39
- - **Seamless v1.4.1 → v2.0.0 upgrade** is required: the v2.0.0 binary must
40
- read the existing `%APPDATA%\gemiterm\` (Windows) / `~/gemiterm/`
41
- (POSIX) config dir unchanged, and the new `install.ps1`/`install.sh` must
42
- replace the v1.4.1 installer in place. This is captured in the
43
- `v2-install-migration` OpenSpec change.
44
-
45
- ## Sensitive area — do not modify lightly
46
-
47
- We troubleshooted and fixed a specific issue with **subprocess spawning and
48
- capturing authentication cookies** through `playwright-cli`. The fix landed in
49
- commits `4bc4de8` and `0ec3682`. The following files are the working
50
- implementation and must be treated as a regression-test gate:
51
-
52
- - `src/services/playwright-cli-driver.ts` — subprocess runner, argv builder,
53
- cookie-list output parser. Owns the `BunPlaywrightRunner` and
54
- `PlaywrightRunner` interface.
55
- - `src/services/cookie-monitor.ts` — login-detection polling loop. Uses the
56
- sign-out link probe (`e4d1fef`), not a textarea/URL check.
57
- - `src/services/auth-service.ts` — orchestrates `playwright-cli-driver` +
58
- `cookie-monitor` for the `auth` command flow.
59
- - `src/services/cookie-storage-service.ts` — 7-day freshness window, composes
60
- `CookieStorage` via DI.
61
-
62
- If any change touches these files, the full test suite must pass
63
- (`bun run test` — 432/432 baseline) and the affected service-level tests
64
- (`tests/services/playwright-cli-driver.test.ts`,
65
- `tests/services/cookie-monitor.test.ts`,
66
- `tests/services/auth-service.test.ts`,
67
- `tests/services/cookie-storage-service.test.ts`) must be inspected manually.
68
-
69
- ## Tooling
70
-
71
- - **openspec CLI** — used per the `openspec-*` skills for proposing, applying,
72
- syncing, and archiving OpenSpec changes. The change artifacts in
73
- `openspec/changes/` are the source of truth for pending work; the
74
- committed specs in `openspec/specs/` describe the current state.
75
- - **deepwiki** — for any GitHub link mentioned in context or any third-party
76
- library reference (e.g. `@playwright/cli`, `bun build`).
77
- - **plannotator** — `submit_plan` is for **action plans** that the user will
78
- execute. Not for plans that themselves produce further plans.
79
- - **serena** — preferred for code exploration and editing. Use serena
80
- `find_symbol`, `find_file`, `search_for_pattern`, `read_file`, `replace_*`
81
- before falling back to `grep`/`glob`/`read`/`edit`.
82
- - **bash** — PowerShell 7+ (`pwsh`) on Windows. Use the `workdir` parameter
83
- instead of `cd`; do not change directories inside a command.
84
-
85
- ## How to work
86
-
87
- - Default to **delegating to subagents**; behave as a master coordinator.
88
- Batch work into **sequential** chains (when output feeds the next step)
89
- and **parallel** batches (when investigations are independent).
90
- - **Run `bun run test` after any non-trivial change** and confirm it stays
91
- at the 432/432 baseline.
92
- - **Commit frequently** with conventional-commit messages. **Never push.**
93
- - The OpenSpec proposal/design/tasks artifacts in
94
- `openspec/changes/<change-name>/` are documentation, not implementation.
95
- They describe what to build; the build is done by a follow-up
96
- implementation pass that the OpenSpec change's `tasks.md` tracks.
97
- - Read `openspec/MAESTRO_MIGRATION.md` before proposing new work — it maps
98
- the original Python → Bun migration tasks to current status and to the
99
- specific OpenSpec change that handles any remaining work.
100
-
101
- ## Code conventions
102
-
103
- - **Path and file operations are mandatory mediation.** No file in `src/`
104
- outside `src/infrastructure/path-utils.ts`, `src/infrastructure/io.ts`,
105
- and `src/services/install-browser-service.ts` may import from
106
- `node:fs`, `node:path`, or `node:os`. The lint script
107
- `scripts/lint-path-mediation.{sh,ps1}` (also exposed as
108
- `bun run lint:mediation`) enforces this. If you need a new path or
109
- file-system helper, add it to the right module first and consume it
110
- from there — do not bypass the mediation.
111
- - **All new file-system operations go through `io.ts`.** Use
112
- `writeTextFile` / `readTextFile` / `readJsonFile` / `writeJsonFile` /
113
- `ensureDir` / `existsFile` / `removeDir` / `renameDir` /
114
- `isDirectory` / `listSubdirectories` / `safeReadTextFile`. New
115
- functions should be added only when at least 2 call sites need them.
116
- - **All new path operations go through `path-utils.ts`.** Use
117
- `resolvePath`, `joinPath`, `dirnamePath`, `getConfigDir`,
118
- `getProfilesDir`, `getProfilePath`, `getProfileDir`,
119
- `getDefaultProfileMarkerPath`, `isWSL`, `getProjectRoot`, or
120
- `getPackageJson`. Do not call `node:path` directly.
121
- - **Errors from `io.ts` throw `IOError`** with a `cause` field for the
122
- original error. Do not catch and re-throw the raw `node:fs` error.
123
-
124
- ## Repo hygiene
125
-
126
- These items are tracked in the `cross-platform-build-and-ci` change's tasks:
127
-
128
- - Orphan file literally named `{` at the repo root.
129
- - Stray bare `{` line in `.gitignore:23`.
130
- - Unused `commander@^15.0.0` in `package.json:29` (the CLI uses hand-rolled
131
- argv parsing; `commander` is installed but never imported).
132
- - Empty `src/commands/` placeholder containing only `.gitkeep`.
133
- - `bun run build` is broken on Bun 1.3.x (`--compile` no longer accepts
134
- `--outdir`).
135
-
136
-
package/CHANGELOG.md DELETED
@@ -1,3 +0,0 @@
1
- ## [2.0.0] - 2026-06-08
2
-
3
- Initial Bun typescript rewrite release. All 11 CLI commands, auth flow, and cross-platform delivery.
package/bun.lock DELETED
@@ -1,105 +0,0 @@
1
- {
2
- "lockfileVersion": 1,
3
- "configVersion": 1,
4
- "workspaces": {
5
- "": {
6
- "name": "gemiterm-bun-rewrite",
7
- "dependencies": {
8
- "chalk": "^5.6.2",
9
- "cli-table3": "^0.6.5",
10
- "gemini-reverse": "^1.0.12",
11
- },
12
- "devDependencies": {
13
- "@types/bun": "^1.3.14",
14
- },
15
- "peerDependencies": {
16
- "typescript": "^6.0.3",
17
- },
18
- },
19
- },
20
- "packages": {
21
- "@colors/colors": ["@colors/colors@1.5.0", "", {}, "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="],
22
-
23
- "@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="],
24
-
25
- "@types/node": ["@types/node@25.9.2", "", { "dependencies": { "undici-types": ">=7.24.0 <7.24.7" } }, "sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw=="],
26
-
27
- "agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="],
28
-
29
- "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
30
-
31
- "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
32
-
33
- "axios": ["axios@1.17.0", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw=="],
34
-
35
- "bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="],
36
-
37
- "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
38
-
39
- "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
40
-
41
- "cli-table3": ["cli-table3@0.6.5", "", { "dependencies": { "string-width": "^4.2.0" }, "optionalDependencies": { "@colors/colors": "1.5.0" } }, "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ=="],
42
-
43
- "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
44
-
45
- "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
46
-
47
- "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
48
-
49
- "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
50
-
51
- "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
52
-
53
- "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
54
-
55
- "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
56
-
57
- "es-object-atoms": ["es-object-atoms@1.1.2", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="],
58
-
59
- "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
60
-
61
- "follow-redirects": ["follow-redirects@1.16.0", "", {}, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="],
62
-
63
- "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="],
64
-
65
- "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
66
-
67
- "gemini-reverse": ["gemini-reverse@1.0.12", "", { "dependencies": { "axios": "^1.13.6", "form-data": "^4.0.5", "uuid": "^13.0.0" } }, "sha512-k1k3uxQQ9LIX2c0iWbyeG6JPPMAYVP8K1AQWvmtNqiMhePr6XY5QCOXLy5NzZ94q12m/a0N+p3vQRQKWFhHx5Q=="],
68
-
69
- "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
70
-
71
- "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
72
-
73
- "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
74
-
75
- "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
76
-
77
- "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
78
-
79
- "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="],
80
-
81
- "https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="],
82
-
83
- "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
84
-
85
- "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
86
-
87
- "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
88
-
89
- "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
90
-
91
- "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
92
-
93
- "proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="],
94
-
95
- "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
96
-
97
- "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
98
-
99
- "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
100
-
101
- "undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="],
102
-
103
- "uuid": ["uuid@13.0.2", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw=="],
104
- }
105
- }
package/docs/INSTALL.md DELETED
@@ -1,185 +0,0 @@
1
- # Installation Guide
2
-
3
- The installer scripts are attached to every GitHub release by the `release.yml` workflow. If you see a 404 on the one-liner URL, the release pipeline (owned by the `cross-platform-build-and-ci` change) may not have attached the scripts; check the GitHub release page directly.
4
-
5
- ## Install
6
-
7
- **Windows** (PowerShell 7+):
8
-
9
- ```powershell
10
- irm https://github.com/expert-vision-software/GemiTerm/releases/latest/download/install.ps1 | iex
11
- ```
12
-
13
- **Linux / WSL**:
14
-
15
- ```bash
16
- curl -fsSL https://github.com/expert-vision-software/GemiTerm/releases/latest/download/install.sh | bash
17
- ```
18
-
19
- > **Recommended install via package manager.** If you have `bun` or `npm` on PATH, the installer will detect it and prompt: "It is recommended to install via bun or npm package manager. Are you sure you want to continue with binary install?" Answer `y` to proceed with the binary drop, or install via:
20
- > - `bun i -g gemiterm`
21
- > - `npm i -g gemiterm`
22
- >
23
- > The prompt is suppressed when stdin is not a TTY (e.g. the `curl | bash` one-liner flow), so unattended installs proceed.
24
-
25
- ## Upgrade from v1.4.1
26
-
27
- Your profiles, cookies, and default-profile marker are preserved. The installer replaces the binary in place; it does **NOT** touch `%APPDATA%\gemiterm\` (Windows) or `~/gemiterm/` (POSIX). This is verified by the path-resolution logic in `src/infrastructure/path-utils.ts` — the v2.0.0 binary reads from the same config directory that v1.4.1 wrote to.
28
-
29
- On Windows, the v1.4.1 Python config lived at `%USERPROFILE%\.config\gemiterm\` (Python's `Path.home() / ".config/gemiterm"` has no Windows branch). When the installer detects a v1.4.1 config at that path and no v2.0.0 config at `%APPDATA%\gemiterm\`, it copies the tree forward automatically. The v1.4.1 directory is left in place as a safety net — you can delete it manually after verifying the migration.
30
-
31
- On POSIX, the v1.4.1 Python config lived at `~/.config/gemiterm/`. v2.0.0 reads from `~/gemiterm/`. The installer performs the same one-time copy-forward when it detects the old path.
32
-
33
- If you have the Python v1.4.1 version installed via `pip`, the installer will detect it and ask you to run `pip uninstall gemiterm` first. Your config data is safe and will be preserved through the uninstall/reinstall cycle.
34
-
35
- ## Uninstall
36
-
37
- **Windows**:
38
-
39
- ```powershell
40
- pwsh -File install.ps1 -Uninstall
41
- ```
42
-
43
- **Linux / WSL**:
44
-
45
- ```bash
46
- bash install.sh --uninstall
47
- ```
48
-
49
- Uninstall removes the binary and PATH entry but **preserves** your config directory (profiles, cookies, default-profile marker). Re-installing afterward will find the same profiles as before.
50
-
51
- ## Data Paths
52
-
53
- | Path | Windows | Linux / WSL |
54
- |------|---------|-------------|
55
- | **Binary** | `$env:LOCALAPPDATA\GemiTerm\GemiTerm.exe` | `~/.local/bin/gemiterm` |
56
- | **Config** | `%APPDATA%\gemiterm\` | `~/gemiterm/` |
57
- | **Chromium cache** | `$env:LOCALAPPDATA\ms-playwright\` | `~/.cache/ms-playwright/` |
58
-
59
- > **Note:** On Windows, the install directory is **capital G** (`GemiTerm`) while the config directory is **lowercase** (`gemiterm`). This matches the v1.4.1 convention and is intentional.
60
-
61
- ## Tag Override (Canary / RC Installs)
62
-
63
- To install a specific release instead of the latest:
64
-
65
- **Windows**:
66
-
67
- ```powershell
68
- pwsh -File install.ps1 -Tag v2.0.0-rc.1
69
- ```
70
-
71
- **Linux / WSL**:
72
-
73
- ```bash
74
- GEMITERM_TAG=v2.0.0-rc.1 bash install.sh
75
- ```
76
-
77
- ## Custom Install Directory
78
-
79
- **Windows**:
80
-
81
- ```powershell
82
- pwsh -File install.ps1 -InstallDir D:\Tools\GemiTerm
83
- ```
84
-
85
- **Linux / WSL**:
86
-
87
- ```bash
88
- GEMITERM_INSTALL_DIR=~/.local/bin bash install.sh
89
- ```
90
-
91
- ## Troubleshooting
92
-
93
- ### PATH did not refresh in current shell
94
-
95
- After installing, if `gemiterm` is not found:
96
-
97
- **Windows** — reload your PATH in the current PowerShell session:
98
-
99
- ```powershell
100
- $env:Path = [Environment]::GetEnvironmentVariable('Path', 'User')
101
- gemiterm --version
102
- ```
103
-
104
- Or open a new terminal.
105
-
106
- **Linux / WSL** — source the env snippet:
107
-
108
- ```bash
109
- source ~/gemiterm/env.sh
110
- gemiterm --version
111
- ```
112
-
113
- Or open a new terminal.
114
-
115
- ### Chromium installation fails
116
-
117
- The installer runs `bunx @playwright/cli install chromium` as part of the install flow. If it fails:
118
-
119
- 1. Check your network connection (Chromium is ~100 MB).
120
- 2. Re-run the installer.
121
- 3. Or manually run: `bunx @playwright/cli install chromium`
122
-
123
- ### Cannot reach GitHub releases
124
-
125
- If the installer cannot contact `api.github.com`:
126
-
127
- 1. Check your network connection.
128
- 2. Use the **Build from source** instructions below.
129
-
130
- ### Bun not installed
131
-
132
- The installer automatically bootstraps [Bun](https://bun.sh) if it is not found. If the bootstrap fails:
133
-
134
- 1. Install Bun manually from [bun.sh](https://bun.sh).
135
- 2. Re-run the installer.
136
-
137
- ### fish / nushell users
138
-
139
- The POSIX installer appends a `source` line to `~/.bashrc` and `~/.zshrc`. For other shells, add the PATH manually:
140
-
141
- **fish** (`~/.config/fish/config.fish`):
142
-
143
- ```fish
144
- set -gx PATH ~/.local/bin $PATH
145
- ```
146
-
147
- **nushell** (`~/.config/nushell/config.nu`):
148
-
149
- ```nu
150
- $env.PATH = ($env.PATH | prepend ~/.local/bin)
151
- ```
152
-
153
- ## Build from Source
154
-
155
- Requires [Bun](https://bun.sh) 1.3.13 or later.
156
-
157
- ```bash
158
- git clone https://github.com/expert-vision-software/GemiTerm.git
159
- cd GemiTerm
160
- bun install
161
- bun run build
162
- ```
163
-
164
- The resulting binary is at `dist/gemiterm` (Linux/macOS) or `dist/gemiterm.exe` (Windows). Move it to the install path:
165
-
166
- **Linux / WSL**:
167
-
168
- ```bash
169
- mkdir -p ~/.local/bin
170
- mv dist/gemiterm ~/.local/bin/gemiterm
171
- chmod +x ~/.local/bin/gemiterm
172
- ```
173
-
174
- **Windows**:
175
-
176
- ```powershell
177
- mkdir $env:LOCALAPPDATA\GemiTerm
178
- Move-Item dist\gemiterm.exe $env:LOCALAPPDATA\GemiTerm\GemiTerm.exe
179
- ```
180
-
181
- Then install Chromium:
182
-
183
- ```bash
184
- bunx @playwright/cli install chromium
185
- ```