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.
- package/README.md +32 -9
- package/package.json +13 -4
- package/src/cli/command-registry.ts +66 -62
- package/src/cli/commands/continue-command.ts +75 -1
- package/src/cli/commands/install-skills-command.ts +35 -0
- package/src/cli/commands/new-command.ts +62 -0
- package/src/cli/index.ts +19 -44
- package/src/cli/utils/long-arg-guard.ts +28 -0
- package/src/cli/utils/prompt-file.ts +26 -0
- package/src/infrastructure/cli-parser.ts +77 -0
- package/src/infrastructure/io.ts +9 -0
- package/src/services/skills-cli-driver.ts +58 -0
- package/src/services/skills-service.ts +52 -0
- package/.env +0 -2
- package/.github/workflows/manual-release.yml +0 -34
- package/.github/workflows/release.yml +0 -198
- package/.github/workflows/test.yml +0 -29
- package/.opencode/commands/opsx-apply.md +0 -152
- package/.opencode/commands/opsx-archive.md +0 -157
- package/.opencode/commands/opsx-explore.md +0 -169
- package/.opencode/commands/opsx-propose.md +0 -104
- package/.opencode/commands/opsx-sync.md +0 -140
- package/.opencode/commands/search-intelligently.md +0 -9
- package/.opencode/opencode.json +0 -20
- package/.opencode/skills/intellisearch/.version +0 -1
- package/.opencode/skills/intellisearch/SKILL.md +0 -84
- package/.opencode/skills/intellisearch/references/brave-search.md +0 -67
- package/.opencode/skills/intellisearch/references/ddg-search.md +0 -79
- package/.opencode/skills/intellisearch/references/deepwiki-tools.md +0 -246
- package/.opencode/skills/intellisearch/references/examples.md +0 -97
- package/.opencode/skills/intellisearch/references/gh-cli.md +0 -143
- package/.opencode/skills/intellisearch/references/google-search.md +0 -40
- package/.opencode/skills/intellisearch/references/search-workflow.md +0 -143
- package/.opencode/skills/intellisearch/references/workflow.md +0 -115
- package/.opencode/skills/openspec-apply-change/SKILL.md +0 -159
- package/.opencode/skills/openspec-archive-change/SKILL.md +0 -117
- package/.opencode/skills/openspec-explore/SKILL.md +0 -287
- package/.opencode/skills/openspec-propose/SKILL.md +0 -111
- package/.opencode/skills/openspec-sync-specs/SKILL.md +0 -147
- package/.serena/project.yml +0 -133
- package/AGENTS.md +0 -136
- package/CHANGELOG.md +0 -3
- package/bun.lock +0 -105
- package/docs/INSTALL.md +0 -185
- package/docs/PLAYWRIGHT_CLI_API.md +0 -306
- package/docs/python-release-for-reference.md +0 -175
- package/examples/sample_json_export.json +0 -32
- package/examples/sample_markdown_export.md +0 -221
- package/examples/usage_examples.sh +0 -222
- package/install.ps1 +0 -264
- package/install.sh +0 -275
- package/openspec/MAESTRO_MIGRATION.md +0 -180
- package/openspec/changes/archive/2026-06-08-command-spec-conformance/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-06-08-command-spec-conformance/design.md +0 -194
- package/openspec/changes/archive/2026-06-08-command-spec-conformance/proposal.md +0 -52
- package/openspec/changes/archive/2026-06-08-command-spec-conformance/specs/multi-profile-conversations/spec.md +0 -133
- package/openspec/changes/archive/2026-06-08-command-spec-conformance/tasks.md +0 -95
- package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/design.md +0 -28
- package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/proposal.md +0 -22
- package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/specs/interactive-prompt-loop/spec.md +0 -35
- package/openspec/changes/archive/2026-06-09-refactor-interactive-prompt-loop/tasks.md +0 -28
- package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/design.md +0 -323
- package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/proposal.md +0 -122
- package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/specs/no-capability-changes/spec.md +0 -29
- package/openspec/changes/archive/2026-06-09-replace-gemini-api-placeholder-with-gemini-reverse/tasks.md +0 -172
- package/openspec/changes/archive/2026-06-09-v2-install-migration/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-06-09-v2-install-migration/design.md +0 -241
- package/openspec/changes/archive/2026-06-09-v2-install-migration/proposal.md +0 -41
- package/openspec/changes/archive/2026-06-09-v2-install-migration/specs/v2-installer/spec.md +0 -205
- package/openspec/changes/archive/2026-06-09-v2-install-migration/tasks.md +0 -97
- package/openspec/changes/commander-cli-parser/.openspec.yaml +0 -2
- package/openspec/changes/commander-cli-parser/design.md +0 -107
- package/openspec/changes/commander-cli-parser/proposal.md +0 -31
- package/openspec/changes/commander-cli-parser/specs/cli/spec.md +0 -48
- package/openspec/changes/commander-cli-parser/tasks.md +0 -33
- package/openspec/changes/cross-platform-build-and-ci/.openspec.yaml +0 -2
- package/openspec/changes/cross-platform-build-and-ci/design.md +0 -213
- package/openspec/changes/cross-platform-build-and-ci/proposal.md +0 -50
- package/openspec/changes/cross-platform-build-and-ci/specs/path-and-file-mediation/spec.md +0 -335
- package/openspec/changes/cross-platform-build-and-ci/specs/release-pipeline/spec.md +0 -95
- package/openspec/changes/cross-platform-build-and-ci/tasks.md +0 -164
- package/openspec/config.yaml +0 -20
- package/openspec/specs/auth/spec.md +0 -394
- package/openspec/specs/cli/spec.md +0 -108
- package/openspec/specs/commands/spec.md +0 -409
- package/openspec/specs/configuration/spec.md +0 -130
- package/openspec/specs/conversations/spec.md +0 -139
- package/openspec/specs/domain-model/spec.md +0 -128
- package/openspec/specs/formatters/spec.md +0 -158
- package/openspec/specs/install-browser/spec.md +0 -146
- package/openspec/specs/interactive-prompt-loop/spec.md +0 -41
- package/openspec/specs/logger/spec.md +0 -71
- package/openspec/specs/mediator/spec.md +0 -72
- package/openspec/specs/multi-profile-conversations/spec.md +0 -145
- package/openspec/specs/path-utils/spec.md +0 -101
- package/openspec/specs/profiles/spec.md +0 -94
- package/openspec/specs/storage/spec.md +0 -198
- package/openspec/specs/testing/spec.md +0 -237
- package/openspec/specs/v2-installer/spec.md +0 -205
- package/openspec/specs/validators/spec.md +0 -65
- package/scripts/build.ts +0 -88
- package/scripts/clean-build.ps1 +0 -4
- package/scripts/clean-build.sh +0 -5
- package/scripts/install-browser.ps1 +0 -5
- package/scripts/install-browser.sh +0 -6
- package/scripts/lint-path-mediation.ps1 +0 -65
- package/scripts/lint-path-mediation.sh +0 -40
- package/tests/cli/auth-command.test.ts +0 -220
- package/tests/cli/command-registry.test.ts +0 -67
- package/tests/cli/continue-command.test.ts +0 -100
- package/tests/cli/delete-command.test.ts +0 -128
- package/tests/cli/export-all-command.test.ts +0 -375
- package/tests/cli/install-browser-command.test.ts +0 -48
- package/tests/cli/list-command.test.ts +0 -179
- package/tests/cli/new-command.test.ts +0 -139
- package/tests/cli/status-command.test.ts +0 -106
- package/tests/core/query-handlers.test.ts +0 -187
- package/tests/fixtures/auth-fixtures.ts +0 -98
- package/tests/fixtures/chat-fixtures.ts +0 -87
- package/tests/infrastructure/cli-table.test.ts +0 -107
- package/tests/infrastructure/formatters.test.ts +0 -202
- package/tests/infrastructure/io.test.ts +0 -197
- package/tests/infrastructure/logger.test.ts +0 -74
- package/tests/infrastructure/storage.test.ts +0 -335
- package/tests/infrastructure/validators.test.ts +0 -67
- package/tests/integration/commands/auth.test.ts +0 -186
- package/tests/integration/commands/continue.test.ts +0 -130
- package/tests/integration/commands/delete.test.ts +0 -140
- package/tests/integration/commands/export.test.ts +0 -266
- package/tests/integration/commands/fetch.test.ts +0 -238
- package/tests/integration/commands/list.test.ts +0 -281
- package/tests/integration/commands/profile.test.ts +0 -258
- package/tests/integration/commands/status.test.ts +0 -223
- package/tests/integration/installer-script-shape.test.ts +0 -67
- package/tests/parity/compare-outputs.ts +0 -359
- package/tests/parity/test-commands-parity.ps1 +0 -82
- package/tests/parity/test-commands-parity.sh +0 -61
- package/tests/services/auth-service.test.ts +0 -315
- package/tests/services/cookie-monitor.test.ts +0 -229
- package/tests/services/cookie-storage-service.test.ts +0 -230
- package/tests/services/gemini-client-wrapper.test.ts +0 -688
- package/tests/services/install-browser-service.test.ts +0 -83
- package/tests/services/playwright-cli-driver.test.ts +0 -468
- package/tests/services/profile-auth-manager.test.ts +0 -334
- package/tests/services/profile-service.test.ts +0 -224
- package/tests/setup.ts +0 -95
- package/tests/smoke/smoke.test.ts +0 -52
- package/tests/unit/config.test.ts +0 -159
- package/tests/unit/errors.test.ts +0 -119
- package/tests/unit/formatters.test.ts +0 -316
- package/tests/unit/mediator.test.ts +0 -152
- package/tests/unit/path-utils.test.ts +0 -289
- 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
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
|
-
```
|