Skip to content

draylegend/letora

Repository files navigation

letora

Development

bun run dev   # runs `nx serve app` (Angular dev server, HMR) + `electrobun dev` together

The desktop shell (Bun main process, window/menu/tray code) lives in apps/desktop/src, separate from the Angular UI in apps/app — they're different runtimes with different tsconfigs. Edit apps/desktop/src/index.ts and restart electrobun dev manually to see changes — do not use electrobun dev --watch on Windows, see below.

Releasing

bun run release              # every release after the first
bun run release -- --dry-run # preview what it would do, changes nothing

This runs nx release --skip-publish, which bumps the version (from Conventional Commits since the last tag), writes CHANGELOG.md, commits, tags (vX.Y.Z), pushes, and creates the GitHub Release itself (via your authenticated gh CLI or a GITHUB_TOKEN/GH_TOKEN env var) — no npm/Docker publish step runs. That tag push then triggers .github/workflows/release.yml, which builds the app (bun run build:stable) and uploads the .exe/.zip from artifacts/ to that same release as downloadable assets.

For the very first release ever, there's no prior tag to diff from, so add --first-release:

bun run release -- --first-release --dry-run   # preview first
bun run release -- --first-release

Versions live in three places kept in sync by nx release (nx.json's release.version.manifestRootsToUpdate): the root package.json (which electrobun.config.ts reads for app.version), and apps/app/package.json / apps/desktop/package.json (present only so Nx has a manifest to read/write per project — this is an integrated Nx workspace with no other use for per-project package.json files).

Known issues

  • Killing electrobun dev leaves orphaned processes on Windows (electrobun#168): killing the app only kills the top-level launcher.exe; the actual bun.exe process and its WebView2 tree survive. Two symptoms:
    • With --watch, the next rebuild fails with EACCES: permission denied, rm build\dev-win-x64 (the orphaned process still has those files open). Workaround: fully close the app window before the next edit, or just skip --watch and restart electrobun dev manually — UI iteration already gets HMR from the Angular dev server above, so --watch is rarely needed.
    • Without --watch, if a session gets killed from the terminal (not the window's close button), the orphaned bun.exe/WebView2 tree keeps holding the WebView2 user-data folder. The next electrobun dev then fails immediately with ERROR: Failed to create WebView2 controller, HRESULT: 0x800700AA (ERROR_BUSY). Fix: find and kill the leftover bun.exe/launcher.exe/msedgewebview2.exe processes under build\dev-win-x64, then retry.

About

letora is an open-source, cross-platform desktop email client built with Electrobun, Bun, Angular, Tailwind CSS, and embedded SurrealDB.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors