kando icon indicating copy to clipboard operation
kando copied to clipboard

Monorepofication and pnpmping out.

Open SimHacker opened this issue 1 month ago • 0 comments

Monorepo setup with pnpm; move Electron app to apps/kando; add skeleton packages

Summary

  • Converted repo to pnpm monorepo (apps/, packages/) without app behavior changes.
  • Moved Electron app into apps/kando and fixed paths.
  • Added placeholder packages @kando/core and @kando/renderer-dom for future extraction.

Changes

  • Added pnpm-workspace.yaml (packages/, apps/), pnpm-lock.yaml.
  • Root package.json: [email protected]; scripts: dev, build, clean, start:kando.
  • Added .npmrc (prefer-workspace-packages, auto-install-peers, strict-peer-dependencies).
  • Expanded .gitignore (dist, build, .svelte-kit, apps/kando/.webpack, apps/kando/Release, apps/kando/out).
  • Relocated app to apps/kando: src, assets, locales, tools, appstream, webpack.*.config.ts, CMakeLists.txt, forge.config.ts.
  • Path updates after move:
    • docs/changelog.md: key-codes.ts link -> apps/kando/src/common/key-codes.ts.
    • apps/kando/forge.config.ts: icon URL -> apps/kando/assets/icons/icon.ico.
    • apps/kando/appstream/menu.kando.Kando.metainfo.xml: screenshot paths fixed.
    • REUSE.toml: paths updated to apps/kando/*.
    • Root tsconfig.json: include apps/kando/src///* to keep webpack/ts-loader happy.
  • Renderer webpack polyfill: resolve.fallback.events = require.resolve('events/'); added events devDependency.
  • New skeleton packages:
    • packages/core (@kando/core) – placeholder (types/schemata/math later).
    • packages/renderer-dom (@kando/renderer-dom) – placeholder (overlay/portal/theme later).

What did not change

  • No functional changes to Electron app code; builds and runs as before.

How to run

  • From repo root: pnpm -r install
  • Then: cd apps/kando && pnpm start
  • If Electron binary error appears, re-run its install script or reinstall; macOS may require Accessibility and Screen Recording permissions.

Follow-ups (separate PRs)

  • Add Changesets and TypeScript project references.
  • Extract real code into @kando/core and @kando/renderer-dom.
  • Add theme packages (@kando/themes-menu, @kando/themes-sound).
  • Add @kando/wrapper-svelte and a SvelteKit demo app.
  • CI: cache pnpm store; build/test affected workspaces only.

Review focus

  • Verify moved paths under apps/kando, updated links, and the small webpack events fallback.

SimHacker avatar Nov 17 '25 01:11 SimHacker