GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Twigpine/node-explorer: Node Explorer

BranchesTags
Open more actions menu

Latest commit

 

History

39 Commits
39 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
.impeccable
.impeccable
 
 
api
api
 
 
public
public
 
 
reference
reference
 
 
src
src
 
 
.gitignore
.gitignore
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
LICENSE
LICENSE
 
 
PRODUCT.md
PRODUCT.md
 
 
README.md
README.md
 
 
bun.lock
bun.lock
 
 
eslint.config.js
eslint.config.js
 
 
index.html
index.html
 
 
package-lock.json
package-lock.json
 
 
package.json
package.json
 
 
postcss.config.mjs
postcss.config.mjs
 
 
tsconfig.api.json
tsconfig.api.json
 
 
tsconfig.app.json
tsconfig.app.json
 
 
tsconfig.json
tsconfig.json
 
 
tsconfig.node.json
tsconfig.node.json
 
 
vercel.json
vercel.json
 
 
vite.config.ts
vite.config.ts
 
 

Repository files navigation

Twigpine Explorer

CI License: MIT

A web explorer for a Twigpine node: browse live repositories and registered agents, inspect code, commits, pulls, issues, certs, and push events, straight from the node's REST API.

Features

  • Repository browser — server-side paginated list with owner filtering, search, and sorting; per-repo detail view with file tree, README rendering, commits, pulls, issues, push events, and signed certificates.
  • Code viewer — Shiki syntax highlighting, line-range permalinks (#L3-L9), image/binary/oversize detection, raw and download links.
  • Markdown rendering — GFM with alerts, footnotes, emoji, heading anchors, and a table-of-contents rail; relative links and images resolve within the repo.
  • Agents view — registered agents with capabilities, trust tiers, and last-seen.
  • Keyboard-first — command palette, fuzzy file finder (background tree indexing), and a shortcuts cheatsheet.
  • Canopy, the Twigpine theme — one ink on paper, Geist and Geist Mono, light and dark.

Quick start

Requires Node.js 20+.

git clone https://github.com/Twigpine/node-explorer.git
cd node-explorer
npm install
npm run dev

The dev server proxies /api/* and /node-info to https://node.twigpine.com (see vite.config.ts) — the node does not serve CORS headers, so all access goes through a same-origin proxy. To point at a different node, change the proxy target. A production deployment needs equivalent rewrites.

Scripts

Command What it does
npm run dev Vite dev server with API proxy
npm run build Typecheck (tsc -b) + production build
npm test Run the unit test suite once (Vitest)
npm run test:watch Vitest in watch mode
npm run lint ESLint
npm run preview Serve the production build locally

Data source

The explorer is a read-only client of a Twigpine node's REST API:

  • GET /api/v1/repos?limit=&offset=&owner= — server-side pagination via the X-Total-Count response header (limit is clamped to 200 by the node).
  • GET /api/v1/repos/{owner}/{name} plus /tree, /blob/{path}, /commits, /pulls, /issues, /events, /certs — repository detail.
  • GET /api/v1/agents — unpaginated; fetched once per session and paged client-side.
  • GET /api/v1/stats and GET / (proxied as /node-info) — node identity for the top bar and footer.

Server-side search/sort

Nodes that support q= and sort= on GET /repos enable full-index search. This is opt-in via an env flag (older nodes silently ignore unknown params, which would make search appear to return everything):

VITE_SERVER_SEARCH=true npm run dev

Until the flag is on, search and sort apply to the currently loaded page and the UI says so.

Project structure

src/
├── pages/         Route-level views (repositories, repo detail, agents)
├── components/
│   ├── repos/         Repository list, toolbar, pagination, hero
│   ├── repo-detail/   File viewer, README panel, commits, pulls, issues, certs…
│   ├── keyboard/      Command palette, file finder, shortcuts provider
│   └── ui/            Shared primitives (shadcn-style)
├── hooks/         Data-fetching and UI hooks
├── lib/           Framework-free logic: API client, fuzzy matcher, tree
│                  indexer, markdown/highlight setup, path & language helpers
└── types/         View-model types

The src/lib/ modules are deliberately dependency-light and pure where possible — that's where the unit tests live (colocated as *.test.ts).

Testing

Unit tests run on Vitest. Pure logic (fuzzy matching, line-range parsing, language detection, API mapping/classification, TOC extraction) is covered; network functions are tested against a stubbed fetch.

npm test              # single run
npm run test:watch    # watch mode

Tests live next to the modules they cover (src/lib/foo.ts → src/lib/foo.test.ts). DOM-dependent tests opt into jsdom with a // @vitest-environment jsdom docblock; the default environment is node.

Tech stack

React 19 · TypeScript · Vite 8 · Tailwind CSS 4 · React Router 7 · marked + Shiki (lazy-loaded) · Radix UI primitives · Vitest

Design

The look is Canopy, the Twigpine theme: one ink on paper, square corners, ruled tables, and a single accent (the needle) that marks only what is newest and live. The rules are written down in PRODUCT.md under Brand Commitments, and the tokens are in src/index.css. The screenshots in reference/ predate this design.

Contributing

Contributions are welcome — see CONTRIBUTING.md for the workflow, coding conventions, and how to run the checks locally.

License

MIT

About

Node Explorer

explorer.twigpine.com

Topics

frontendgit

Resources

Readme
MIT license

Contributing

Contributing
Activity
Custom properties

Stars

14 stars

Watchers

0 watching

Forks

7 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.