A Hackable Workshop π
Monorepo for the four desktop apps:
All four share a common platform (Electron + React + xterm.js +
Tailwind). Per-app source lives at tool/<name>/code/; per-app Electron
shell at tool/<name>/dock/. Shared platform packages will eventually
live at the repo-root code/ folder (Phase 2).
(Just playing around with these right now, seeing how hackable and useful coulud make them π).
pnpm install # one-time
pnpm --filter @cluesurf/term-dock dev # launch dev
pnpm --filter @cluesurf/term make # build the runtime library
pnpm --filter @cluesurf/term-dock package:mac # build Term.app
pnpm --filter @cluesurf/term-dock open # launch the built .app
pnpm --filter @cluesurf/term ship # release to GitHub + brew tap
Or via the root-level convenience scripts:
pnpm term:dev
pnpm term:make
pnpm term:package
pnpm term:open
pnpm term:ship
pnpm term:icons
tool/ # @cluesurf/tool monorepo root (this folder)
βββ package.json
βββ pnpm-workspace.yaml # workspaces: tool/term, tool/term/dock
βββ readme.md
βββ tool/
βββ term/ # @cluesurf/term (the runtime library)
β βββ code/ # library source
β β βββ base/ # tree / types / ids / layout / theme
β β βββ boot/ # Electron main + preload entries
β β βββ desktop/ # macOS / win / linux helpers
β β βββ face/ # React components (palette, find, slab, dock, β¦)
β β βββ node/ # PTY manager, state-store, paths, program
β β βββ theme/ # color themes (term/, dracula, monokai, β¦)
β β βββ tailwind/ # preset.css
β βββ dock/ # @cluesurf/term-dock (Electron app shell)
β β βββ boot/ # Electron main + preload entry points
β β βββ call/ # `term` CLI source + bash launcher
β β βββ code/ # base.tsx, main.tsx, index.html, assets/
β β βββ electron.vite.config.ts
β βββ view/ # term.svg, term.png (icon sources)
β βββ task/ # icons.sh, ship.sh, verify.sh, trust-keychain.sh
β βββ test/ # smoke tests + zone/ demo workspace
β βββ note/ # user-facing docs (concepts, hotkeys, β¦)
β βββ package.json
βββ base/ # @cluesurf/base β stub
βββ mesh/ # @cluesurf/mesh β stub
βββ view/ # @cluesurf/view β stub
- Each app's runtime library is
@cluesurf/<name>and lives attool/<name>/code/. Published to npm. - Each app's Electron shell is
@cluesurf/<name>-dockand lives attool/<name>/dock/. Private β packaged via electron-builder into a separately-branded.app. - User project config lives at
<project>/.tool/<name>/β so a project that uses both Term and View would have.tool/term/and.tool/view/side by side. The umbrella.tool/dir replaces the old.rock/.
Made by ClueSurf, meditating on the universe Β€. Follow the work on YouTube, X, Instagram, Substack, Facebook, and LinkedIn, and browse more of our open-source work on GitHub.
