{"_id":"@bstncartwright/glimpse","_rev":"3-8dd3efec6ac02b552f455192e8c3bc40","name":"@bstncartwright/glimpse","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@bstncartwright/glimpse","version":"0.1.0","keywords":["bun","cli","diff","git","terminal","tui"],"author":"Boston Cartwright <bostonc@gmail.com>","license":"MIT","_id":"@bstncartwright/glimpse@0.1.0","maintainers":[{"name":"bstncartwright","email":"bostonc@gmail.com"}],"bin":{"glimpse":"src/index.ts"},"dist":{"shasum":"cdd69bc9f0445dcea118cbb9b1d5adaf738c94b5","tarball":"https://registry.npmjs.org/@bstncartwright/glimpse/-/glimpse-0.1.0.tgz","fileCount":18,"integrity":"sha512-qwifrEjPxA82wnCo70OnuA1Q5WEOcZpfBpGxyAb6iUD1WVt/dJRxU8Ek0wPYQTczV17b4bCLQ5li8V7pyqLEtA==","signatures":[{"sig":"MEUCIHq0b36pFFSpOf7VuXF47+73IGr6uUi4RyCQu0V3/qg2AiEA0jEcDQLgQ6iORJDPvoinX+5q1Q3wVJSKaLOOP12dpdw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83918},"type":"module","module":"src/index.ts","shasum":"cdd69bc9f0445dcea118cbb9b1d5adaf738c94b5","engines":{"bun":">=1.2.0"},"scripts":{"dev":"bun run src/index.ts","test":"bun test","prepack":"bun run typecheck && bun test","typecheck":"tsc --noEmit","generate:huge-sample":"bun run scripts/generate-large-fixture.ts","generate:large-varied-sample":"bun run scripts/generate-varied-fixture.ts"},"_npmUser":{"name":"bstncartwright","email":"bostonc@gmail.com"},"_integrity":"sha512-qwifrEjPxA82wnCo70OnuA1Q5WEOcZpfBpGxyAb6iUD1WVt/dJRxU8Ek0wPYQTczV17b4bCLQ5li8V7pyqLEtA==","_npmVersion":"10.8.3","description":"full-screen terminal diff review for bun-powered terminals","directories":{},"_nodeVersion":"24.3.0","dependencies":{"diff":"8.0.2","@opentui/core":"^0.1.103","tree-sitter-c":"^0.24.1","tree-sitter-go":"^0.25.0","tree-sitter-cpp":"^0.23.4","tree-sitter-css":"^0.25.0","tree-sitter-php":"^0.24.2","web-tree-sitter":"0.25.10","@lumis-sh/wasm-c":"^0.26.0","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-java":"^0.23.5","tree-sitter-json":"^0.24.8","tree-sitter-ruby":"^0.23.1","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","@lumis-sh/wasm-sql":"^0.26.1","tree-sitter-python":"^0.25.0","@lumis-sh/wasm-html":"^0.26.1","@lumis-sh/wasm-json":"^0.26.2","@lumis-sh/wasm-toml":"^0.26.0","@lumis-sh/wasm-yaml":"^0.26.0","tree-sitter-c-sharp":"^0.23.5","@vscode/tree-sitter-wasm":"^0.3.1","@derekstride/tree-sitter-sql":"^0.3.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.13","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/glimpse_0.1.0_1777264861386_0.4310923663986028","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bstncartwright/glimpse","version":"0.1.3","keywords":["bun","cli","diff","git","terminal","tui"],"author":{"name":"Boston Cartwright","email":"bostonc@gmail.com"},"license":"MIT","_id":"@bstncartwright/glimpse@0.1.3","maintainers":[{"name":"bstncartwright","email":"bostonc@gmail.com"}],"homepage":"https://github.com/bstncartwright/glimpse#readme","bugs":{"url":"https://github.com/bstncartwright/glimpse/issues"},"bin":{"glimpse":"src/index.ts"},"dist":{"shasum":"c8c69c76b7be4f3135572eefec0e75f0f3ab4416","tarball":"https://registry.npmjs.org/@bstncartwright/glimpse/-/glimpse-0.1.3.tgz","fileCount":20,"integrity":"sha512-i5mA30/B6ZQXTixbq1tqXXDJpSqH3/5og+Jd6L+/vO/IkL5lhq/dWApxFjV3H32CTkziyTvYXrXn0I0ooK8Yog==","signatures":[{"sig":"MEYCIQCBUjbmL4x6wBXgprePVbQNZyJbB5djecQHqz4f9uuGQgIhAKCV5Sj65rzSU3HFTYpSm9JeW1ZlW50g7rMiolEhVVBK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bstncartwright%2fglimpse@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":88048},"type":"module","module":"src/index.ts","engines":{"bun":">=1.2.0"},"gitHead":"492b3bb5f208905db0d4868f911d9c2f2de4b9fd","scripts":{"dev":"bun run src/index.ts","lint":"bun run typecheck","test":"bun test","prepack":"bun run typecheck && bun test","typecheck":"tsc --noEmit","generate:huge-sample":"bun run scripts/generate-large-fixture.ts","generate:large-varied-sample":"bun run scripts/generate-varied-fixture.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9e9bebd6-8e05-4092-8d2e-64ebd062364f"}},"repository":{"url":"git+https://github.com/bstncartwright/glimpse.git","type":"git"},"_npmVersion":"11.11.0","description":"full-screen terminal diff review for bun-powered terminals","directories":{},"_nodeVersion":"24.14.1","dependencies":{"diff":"8.0.2","@opentui/core":"^0.1.103","tree-sitter-c":"^0.24.1","tree-sitter-go":"^0.25.0","tree-sitter-cpp":"^0.23.4","tree-sitter-css":"^0.25.0","tree-sitter-php":"^0.24.2","web-tree-sitter":"0.25.10","@lumis-sh/wasm-c":"^0.26.0","tree-sitter-bash":"^0.25.1","tree-sitter-html":"^0.23.2","tree-sitter-java":"^0.23.5","tree-sitter-json":"^0.24.8","tree-sitter-ruby":"^0.23.1","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-wasms":"^0.1.13","@lumis-sh/wasm-sql":"^0.26.1","tree-sitter-python":"^0.25.0","@lumis-sh/wasm-html":"^0.26.1","@lumis-sh/wasm-json":"^0.26.2","@lumis-sh/wasm-toml":"^0.26.0","@lumis-sh/wasm-yaml":"^0.26.0","tree-sitter-c-sharp":"^0.23.5","tree-sitter-javascript":"^0.25.0","tree-sitter-typescript":"^0.23.2","@vscode/tree-sitter-wasm":"^0.3.1","@derekstride/tree-sitter-sql":"^0.3.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.13","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/glimpse_0.1.3_1777343836664_0.9791818619851624","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@bstncartwright/glimpse","version":"0.1.4","description":"full-screen terminal diff review for bun-powered terminals","module":"src/index.ts","type":"module","license":"MIT","author":{"name":"Boston Cartwright","email":"bostonc@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/bstncartwright/glimpse.git"},"keywords":["bun","cli","diff","git","terminal","tui"],"bin":{"glimpse":"src/index.ts"},"engines":{"bun":">=1.2.0"},"publishConfig":{"access":"public"},"scripts":{"dev":"bun run src/index.ts","generate:huge-sample":"bun run scripts/generate-large-fixture.ts","generate:large-varied-sample":"bun run scripts/generate-varied-fixture.ts","prepack":"bun run typecheck && bun test","test":"bun test","test:e2e":"bunx --bun @microsoft/tui-test","typecheck":"tsc --noEmit","lint":"bun run typecheck"},"devDependencies":{"@microsoft/tui-test":"^0.0.4","@types/bun":"^1.3.13","typescript":"^6.0.3"},"dependencies":{"@derekstride/tree-sitter-sql":"^0.3.11","@lumis-sh/wasm-c":"^0.26.0","@lumis-sh/wasm-html":"^0.26.1","@lumis-sh/wasm-json":"^0.26.2","@lumis-sh/wasm-sql":"^0.26.1","@lumis-sh/wasm-toml":"^0.26.0","@lumis-sh/wasm-yaml":"^0.26.0","@opentui/core":"^0.1.103","@vscode/tree-sitter-wasm":"^0.3.1","diff":"8.0.2","tree-sitter-bash":"^0.25.1","tree-sitter-c":"^0.24.1","tree-sitter-c-sharp":"^0.23.5","tree-sitter-cpp":"^0.23.4","tree-sitter-css":"^0.25.0","tree-sitter-go":"^0.25.0","tree-sitter-html":"^0.23.2","tree-sitter-java":"^0.23.5","tree-sitter-javascript":"^0.25.0","tree-sitter-json":"^0.24.8","tree-sitter-php":"^0.24.2","tree-sitter-python":"^0.25.0","tree-sitter-ruby":"^0.23.1","tree-sitter-rust":"^0.24.0","tree-sitter-toml":"^0.5.1","tree-sitter-typescript":"^0.23.2","tree-sitter-wasms":"^0.1.13","web-tree-sitter":"0.25.10"},"gitHead":"4b4d30e0d0d9e1405222abe196b8a0bcfa52afbb","_id":"@bstncartwright/glimpse@0.1.4","bugs":{"url":"https://github.com/bstncartwright/glimpse/issues"},"homepage":"https://github.com/bstncartwright/glimpse#readme","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-ZWVO9e+DFcKggY2SajZYMWkaCeLzwCkQX4sGlnnqJpr7uendNyW4PuonNGauBxnS7+AmpYhYgG+YgupSkL90Sg==","shasum":"1035715858deb0d53593fa20451730869603e2d6","tarball":"https://registry.npmjs.org/@bstncartwright/glimpse/-/glimpse-0.1.4.tgz","fileCount":20,"unpackedSize":94717,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bstncartwright%2fglimpse@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEmhdDr95A/Q6/nvj+C6TM+lqFrMW6+Q8Zk5KefKjVkZAiBuu3nj8aUZcWDmNoy7sOwxVKK3p4yelrsnb/sY5oe9jQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9e9bebd6-8e05-4092-8d2e-64ebd062364f"}},"directories":{},"maintainers":[{"name":"bstncartwright","email":"bostonc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/glimpse_0.1.4_1777498524703_0.02271951638160008"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-27T04:41:01.269Z","modified":"2026-04-29T21:35:25.105Z","0.1.0":"2026-04-27T04:41:01.536Z","0.1.3":"2026-04-28T02:37:16.811Z","0.1.4":"2026-04-29T21:35:24.854Z"},"bugs":{"url":"https://github.com/bstncartwright/glimpse/issues"},"author":{"name":"Boston Cartwright","email":"bostonc@gmail.com"},"license":"MIT","homepage":"https://github.com/bstncartwright/glimpse#readme","keywords":["bun","cli","diff","git","terminal","tui"],"repository":{"type":"git","url":"git+https://github.com/bstncartwright/glimpse.git"},"description":"full-screen terminal diff review for bun-powered terminals","maintainers":[{"name":"bstncartwright","email":"bostonc@gmail.com"}],"readme":"# glimpse\n\nfull-screen terminal diff review, built with bun and opentui.\n\nglimpse opens a git diff in a keyboard-native terminal ui with file tabs, side-by-side or stacked diff layouts, hunk navigation, word wrap, inline highlights, and syntax coloring for common languages.\n\nwhen you run `glimpse` outside a git worktree, it scans the directories below the current folder for git repos. if it finds 1-5 repos, it opens their diffs together with repo-prefixed file tabs; if it finds more than 5, it asks before loading them all.\n\n## demo\n\n![glimpse demo](assets/glimpse-demo.gif)\n\nthe demo video is also available as [mp4](assets/glimpse-demo.mp4). regenerate it with:\n\n```bash\nvhs demo/glimpse.tape\n```\n\n## why\n\nthis project started as a tool i built to help myself review agents' work better in a place where i already am: the terminal.\n\n## install\n\nglimpse runs on [bun](https://bun.sh/). install bun first, then install the cli from npm:\n\n```bash\nbun install -g @bstncartwright/glimpse\n```\n\nthen run:\n\n```bash\nglimpse\n```\n\nthe npm package is scoped as `@bstncartwright/glimpse`, but the installed command is `glimpse`.\n\n## local development\n\n```bash\nbun install\nbun run dev\n```\n\n## publish (github release -> npm)\n\na github actions workflow now publishes to npm whenever a github release is marked **published**.\n\n### one-time setup (npm trusted publishing / OIDC)\n\n1. on npm, open your package settings and configure a **Trusted Publisher** for GitHub Actions.\n2. use your github owner/repo and set workflow filename to `.github/workflows/release-publish.yml`.\n3. make sure `package.json` has the correct `name` and a `repository.url` that matches your github repo.\n4. publish once and verify provenance appears on npm (trusted publishing enables this automatically for public repos/packages).\n\n> with trusted publishing, you do **not** need an `NPM_TOKEN` repository secret.\n\n### release process (manual)\n\n1. bump `version` in `package.json` (for example `0.1.0` -> `0.1.1`).\n2. run local checks:\n\n```bash\nbun run typecheck\nbun test\nbun run test:e2e\nbun pm pack --dry-run\n```\n\n3. commit and push.\n4. create a git tag that matches the package version with a `v` prefix (example: `v0.1.1`).\n5. create/publish a github release from that tag.\n6. the `Publish to npm` workflow runs and publishes with `npm publish --access public` using OIDC.\n\n> the publish workflow validates that the release tag matches `package.json` (for example, release `v0.1.1` must match `\"version\": \"0.1.1\"`). this avoids publishing the wrong version.\n\n### one-click release (workflow dispatch)\n\nif you want a single click release, run the **Prepare and release** workflow from the actions tab.\n\nit will:\n\n1. check out the repository default branch\n2. bump `package.json` version (patch/minor/major, or use an explicit version input)\n3. commit + push that change to the default branch\n4. create and push `v<version>` tag\n5. create and publish a github release for that tag with auto-generated release notes\n6. trigger `Publish to npm` automatically via the release event\n\nnotes:\n- this workflow needs `contents: write` permission (already configured).\n- publishing happens in `release-publish.yml` using npm trusted publishing (OIDC), not a long-lived token.\n- if a tag already exists, it fails safely before changing anything else.\n\nthe package ships source files directly and uses `#!/usr/bin/env bun` for the command entrypoint. native compiled binaries may come later, but the first public release intentionally stays bun-native so every platform uses the same package.\n\n## sources\n\n```bash\nglimpse\nglimpse --staged\nglimpse main...HEAD\ngit diff main...HEAD | glimpse --stdin\nglimpse --file patch.diff\nglimpse --file fixtures/realistic-code-sample.diff\n```\n\nwhen run from a folder that is not a git repo:\n\n```bash\nglimpse\n```\n\nopens changed files across the nested repos below that folder.\n\n## keys\n\n```text\nh/l, left/right    scroll diff horizontally\nshift+w            toggle word wrap\ns                  toggle stacked/side-by-side\ntab/shift+tab      next/previous file tab\n[/] or p/n         previous/next file tab\n{/}                previous/next hunk\nw/b                next/previous hunk, then file tab\nj/k, up/down       scroll diff\nctrl+d/ctrl+u      scroll diff\nspace/pageup       page scroll\ngg/G               top/bottom\nc                  toggle viewed\nC                  unmark viewed\n?                  help\nq                  quit\n```\n\n## current limits\n\n- requires bun on the user's `PATH`.\n- reads git-backed diffs by shelling out to `git diff`.\n- does not persist viewed-file state between runs.\n- does not yet support search, config files, or custom keymaps.\n\n## release checklist\n\n- either run **Prepare and release** (one click), or manually do the steps below\n- bump `version` in `package.json`\n- run `bun test`\n- run `bun run test:e2e`\n- run `bun run typecheck`\n- run `bun pm pack --dry-run` and inspect package contents\n- create tag `v<package.json version>`\n- publish a github release from that tag (workflow publishes to npm)\n\n## license\n\nmit\n","readmeFilename":"README.md"}