A small but necessary patch on top of v0.3.0.
Fixed — personal mode wouldn’t boot
CASUAL_PERSONAL_MODE=single / multi crashed the server on first
boot with SqliteError: unable to open database file. The named
casual-data volume mounted at /data is root-owned, but the server
drops to USER node before bootstrap — SQLite couldn’t open
users.db for write, the healthcheck never passed, signups 502’d.
The Dockerfile now provisions /data with node:node ownership
before dropping privileges.
Default CASUAL_PERSONAL_MODE also reverts from single back to
none — the flip to single gated the anonymous-room co-edit suite
and broke the live demo’s default flow. Personal mode is now opt-in
via a one-line .env entry.
Added — @casualoffice/sheets xlsx extraction (#56)
The xlsx import path moves into packages/sdk/src/xlsx/ and publishes
as @casualoffice/sheets/xlsx. A host can load .xlsx into a
Univer IWorkbookData snapshot via xlsxToWorkbookData(bytes)
instead of vendoring the parser. The apps/web pipeline is unchanged
— it just imports the shared mappers from the SDK.