8 Commits

Author SHA1 Message Date
e3d7c28820 feat: add persistent browser server with auto-discovery
Add `glimpse serve` which starts geckodriver + Firefox and proxies
WebDriver requests through a Unix socket at
$XDG_RUNTIME_DIR/glimpse-<uid>.sock. All commands auto-discover the
socket and reuse the running browser session (~300ms vs ~2-3s per
command).

The proxy intercepts session create/delete to keep Firefox alive:
new session requests return the existing session ID, delete session
navigates to about:blank instead of closing Firefox.

- `glimpse serve` starts in foreground, logs to stderr
- `glimpse serve --stop` sends shutdown via socket
- `glimpse serve --status` prints JSON status
- SIGTERM/SIGINT do full cleanup (Firefox + geckodriver + socket)
- Second instance detected and rejected with exit code 1
- GLIMPSE_SOCKET_PATH env var for test isolation
- Three new smoke tests for serve lifecycle
2026-05-02 20:32:23 -04:00
d02df19469 feat: change --timeout from milliseconds to seconds
Accept seconds (including decimals like 0.5) instead of milliseconds
for the --timeout flag. Converts to ms internally. Default is now 10
(seconds) instead of 10000. Error messages display seconds.

Update AGENTS.md, tests, and skill docs to match.
2026-05-02 20:10:20 -04:00
6adb5111de refactor!: replace snapshot with reader fallback, collapse commands
Remove the snapshot command and enhance reader to try Firefox Reader
View first, falling back to raw Turndown conversion of document.body
when Reader View fails or is skipped via --no-reader.

- reader always returns markdown by default (--format=json for structured)
- JSON output includes method: 'reader' | 'raw' to signal extraction path
- --no-reader skips Reader View (stays on loaded page, preserving JS mutations)
- Add @ts-nocheck to test/smoke.js and exclude test/ from tsconfig
- Update all tests from snapshot to reader with --no-reader for data URIs
- Update AGENTS.md and help text

BREAKING CHANGE: snapshot subcommand removed; use reader instead.
2026-05-02 20:05:27 -04:00
eb1de23f4e fix(test): prevent config file from leaking kagi token into search test
The search token validation test only cleared KAGI_TOKEN from the
environment but still loaded the user config file, which could supply
the token and cause the test to pass incorrectly. Pass
--config=/nonexistent/path so loadConfig returns an empty object.

Also includes search command improvements: markdown/json format output
and --format flag.
2026-05-02 19:29:53 -04:00
8db4ed1370 style: add explicit types to eliminate implicit any in index.ts 2026-05-02 18:47:08 -04:00
6b3ec32b3a feat(config): add TypeScript build and config support 2026-04-27 08:53:17 -04:00
2f83fa3117 chore: rearrange 2026-04-26 13:01:34 -04:00
fe1244ad0b initial commit 2026-04-26 12:49:28 -04:00