Restructure to apps/desktop monorepo + Linux installer pipeline #11

Merged
parkerhdavis merged 5 commits from apps-monorepo-restructure into main 2026-04-20 23:47:06 -06:00
parkerhdavis commented 2026-04-20 23:47:00 -06:00 (Migrated from github.com)

Summary

  • Adopt portfolio-wide always-monorepo structure: code moves under apps/desktop/{backend,frontend,shared}/, repo root holds only workspace configs + ancillary dirs (resources/, scripts/, target/, wiki/). Root package.json declares workspaces: ["apps/*"].
  • tsconfig split: root for shared compiler options only; apps/desktop/tsconfig.json owns app-specific path aliases + jsx + DOM lib.
  • electrobun.config.ts moves into apps/desktop/ and reads version from package.json so builds land in per-version subfolders — target/v<version>/seria_<version>_amd64.deb alongside target/v<version>/stable-linux-x64/seria/.
  • New scripts/package-linux.sh produces real .deb (via dpkg-deb) and .rpm (via rpmbuild when installed) from the Electrobun stable .tar.zst artifact. Missing tools skip their format rather than failing.
  • Icon pipeline: resources/icons/generate-icons.sh produces the hicolor set + .ico + .icns from seria-icon-fullres.png. File-based Makefile target so regeneration only happens when source changes.
  • Makefile overhaul: sectioned help, OS detection, platform-guarded builds, new targets (setup, install, lint-fix, typecheck, icons, version). make version V=X.Y.Z updates both root and apps/desktop/ package.json files.
  • Remove setup.sh (superseded by make setup); .gitignore uses **/dist/ to catch dist output at any depth.

Rationale documented in Obsidian vault: 40 PhD/Seria/90-99 Agents/Transient/Project Structure Study.md.

Test plan

  • bun test — 160/160 passing after restructure
  • bunx tsc --noEmit -p apps/desktop — clean
  • bun apps/desktop/frontend/build.ts — view bundle builds with path aliases resolving
  • make build-linux — produces target/v0.1.0/seria_0.1.0_amd64.deb (33 MB)
  • Extracted .deb and ran /usr/lib/seria/bin/launcher — window opens, RPC bootstraps, React mounts
  • Fresh install of the .deb on a clean system + launch from desktop entry — smoke-test as you go
## Summary - Adopt portfolio-wide always-monorepo structure: code moves under `apps/desktop/{backend,frontend,shared}/`, repo root holds only workspace configs + ancillary dirs (`resources/`, `scripts/`, `target/`, `wiki/`). Root `package.json` declares `workspaces: ["apps/*"]`. - `tsconfig` split: root for shared compiler options only; `apps/desktop/tsconfig.json` owns app-specific path aliases + `jsx` + DOM `lib`. - `electrobun.config.ts` moves into `apps/desktop/` and reads version from `package.json` so builds land in per-version subfolders — `target/v<version>/seria_<version>_amd64.deb` alongside `target/v<version>/stable-linux-x64/seria/`. - New `scripts/package-linux.sh` produces real `.deb` (via `dpkg-deb`) and `.rpm` (via `rpmbuild` when installed) from the Electrobun stable `.tar.zst` artifact. Missing tools skip their format rather than failing. - Icon pipeline: `resources/icons/generate-icons.sh` produces the hicolor set + `.ico` + `.icns` from `seria-icon-fullres.png`. File-based Makefile target so regeneration only happens when source changes. - Makefile overhaul: sectioned help, OS detection, platform-guarded builds, new targets (`setup`, `install`, `lint-fix`, `typecheck`, `icons`, `version`). `make version V=X.Y.Z` updates both root and `apps/desktop/` `package.json` files. - Remove `setup.sh` (superseded by `make setup`); `.gitignore` uses `**/dist/` to catch dist output at any depth. Rationale documented in Obsidian vault: `40 PhD/Seria/90-99 Agents/Transient/Project Structure Study.md`. ## Test plan - [x] `bun test` — 160/160 passing after restructure - [x] `bunx tsc --noEmit -p apps/desktop` — clean - [x] `bun apps/desktop/frontend/build.ts` — view bundle builds with path aliases resolving - [x] `make build-linux` — produces `target/v0.1.0/seria_0.1.0_amd64.deb` (33 MB) - [x] Extracted `.deb` and ran `/usr/lib/seria/bin/launcher` — window opens, RPC bootstraps, React mounts - [ ] Fresh install of the `.deb` on a clean system + launch from desktop entry — smoke-test as you go
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
parker/seria!11
No description provided.