Work here is issue-driven, not conversation-driven — the source of truth for "what's the current task" and "what's left to do" is GitHub Issues, not chat history.
- Every branch maps to an issue. Branches are created from the
issue's page on github.com (the "create a branch" link), which
auto-names them
<issue-number>-<slug>(e.g.3-add-electrobun→ issue #3) — the number prefix is generated by GitHub, nobody types it by hand. On starting any session, rungit branch --show-current, extract the leading number, and rungh issue view <number>to get the actual task and its scope. - Check the backlog before assuming scope. Run
gh issue listto see what else is open. If something looks related but isn't literally what the current issue describes, it's probably a different issue — don't fold it into the current branch. - New issue, not scope creep. If you notice something worth doing while implementing (a bug, a missing piece, deferred work like "needs a cert" or "needs a separate account") — file a new issue instead of doing it on the current branch. Title lowercased. Give it a body with enough context (what's missing, why, concrete next steps, relevant code/config) that a future session with zero conversation history can pick it up cold. Simple issues can have an empty body.
- Issue → branch → checkout → implement, in that order. The human creates the issue and branch on github.com and checks the branch out locally themselves; only then does implementation start. Agents never create or check out branches — read the current branch, don't set it.
- When an implementation is completely finished, provide a commit
message. Don't run
git commitunless separately asked — just hand back the message text.
- Nx monorepo. Main branch is
dev, notmain. apps/app— the Angular UI (browser runtime, webview content).apps/desktop— the Bun/Electrobun main-process shell (window, menu, tray, updater). Different runtime thanapps/app— keep them separate, don't let one project's tsconfig sweep in the other's source (this broke the Angular build once: Bun-side code importingelectrobun/bungot type-checked against browser lib options).bun run dev(nx serve desktop) runselectrobun dev, whichdependsOnthe continuousapp:servetarget (Angular dev server, HMR) — this is the only supported dev loop. Nx startsapp:servefirst but doesn't wait for it to be ready, only spawned (Nx has no generic port/health-check gate), soapps/desktop/src/index.tspolls for it. Because it's a realdependsOn, not a raw parallel shell-out, Nx auto-killsapp:serveonceelectrobun devexits for any reason — closing the app window ends the whole dev session.nx build desktop— production build (stableconfig by default;dev/canaryalso available), depends onapp:build.- See README.md for the known Windows
electrobun dev --watchbug (don't try to fix it here — it's upstream, tracked in electrobun#168).