kando
kando copied to clipboard
Monorepofication and pnpmping out.
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.