Onboarding only accepted a typed workspace path, which is error-prone and
diverged from the original wizard. Add a pickDirectory IPC backed by Electron's
open-directory dialog and a Choose button beside the path field, so the founder
can select a real folder for agent artifacts.
social-service.ts exceeded 500 lines and mixed the Electron browser-login
window concern with the social domain logic. Move openSocialLoginWindow and its
navigation policy into social-login-window.ts and re-export the public types.
Behaviour unchanged; unit and e2e suites remain green.
chat-service.ts exceeded 500 lines. Move the row-shape interfaces, slash-command
parsing/validation and the small standalone helpers into chat-service-internal.ts
and import them back. Pure relocation with no behaviour change; the chat
governance suite (82 tests) and e2e remain green.
The PRD calls for company, division, department, project, pod and ad-hoc
spaces, but only company, department, project and direct were accepted. Add
division, pod and ad_hoc to the command contract, the service whitelist and the
new-space dialog. The space_type column is free text, so no migration is
needed.
Any employee in the org could send a message as the board (freeze, takeover,
force-approval), because requireSender only checked that the board sender was a
valid employee. Enforce the approval_decider role (org_admin inherits it) via
IdentityAccessService, which also records an access decision for denied
attempts, and only render the thread board-control form for principals who hold
that authority — others get a read-only view of past interventions.