An AI-native office suite with web collaboration, assembled from two open-source engines plus our own services:
- PanOffice Desktop — the GenOffice document engines
(Apache-2.0) running in a
Tauri v2 shell (
desktop-tauri/, no Electron in the shipping product), for.docx/.xlsx/.pptx/.pdfwith block-level AI editing and byte-preserving round-trip saves.desktop/holds the upstream Electron fork — engine source and behavioral reference. - PanOffice Web — Collabora Online (MPL-2.0), embedded over WOPI, for browser-based real-time multi-user editing of the same file formats.
- Arch-GPT — in-house account (JWT SSO) and AI capabilities (OpenAI-compatible LLM gateway); no third-party AI accounts.
- PanOffice Server (
server/) — the glue we own: a WOPI host (server/wopi-host), and later the file-sync (Drive) service.
See docs/ARCHITECTURE.md for how the pieces fit,
docs/TAURI-MIGRATION.md for the Electron→Tauri
plan, docs/ARCHGPT.md for the account/AI integration,
docs/CODE-BUILD.md for building Collabora Online
from source on this machine (done, verified), and
docs/ROADMAP.md for milestones.
desktop-tauri/ shipping desktop shell (Tauri v2 + React) — new
desktop/ GenOffice 0.5.1 fork (Electron; engines + reference)
server/wopi-host/ minimal WOPI host bridging Collabora Online to a file store
deploy/ docker-compose for the web-collaboration stack
docs/ architecture, migration plan, Arch-GPT notes, roadmap
Upstream references kept outside this repo (in ~/panspace/):
genoffice-0.5.1/— pristine upstream GenOffice export (diff baseline)online/— Collabora Online source, cloned from Gerrit (the GitHub repo is now an issue tracker only; official read-only mirror: CollaboraOnline/online.mirror)
All PanOffice development runs in this WSL checkout. Start the web shell, WOPI host, native XLSX sidecar, local Collabora build, and the local Arch-GPT CLI bridge with:
./tools/start-services.sh
# open http://127.0.0.1:5180The script creates an ignored .runtime-local/ directory with a new, empty
file store. It never reads deploy/data/files, browser recent-file storage,
or any directory on 192.168.1.100. The ARM host is a deployment target only:
build and test here, then transfer release artifacts only. Never transfer
runtime file stores, .versions, lock files, browser profiles/localStorage,
or .runtime-local/. Development services run as transient user units: they
survive terminal closure, do not auto-start after a WSL reboot, and can be
started again with the same command.
Desktop shell (Tauri; Node ≥ 20 + Rust + platform webview deps — see
desktop-tauri/README.md):
cd desktop-tauri
npm install
npm run build:ui # frontend only; `npm run dev` boots the full Tauri appEngines / reference Electron fork (works today, upstream-complete):
cd desktop
npm install
npm test
npm run dev:docs # one app; `npm run dev` runs all editors + shellWeb collaboration (Docker):
cd deploy
docker compose up --build
# open http://localhost:3000 — file list, click a file to edit it in Collabora
# (Collabora is on host port 9981; 9980 belongs to a pre-existing container)desktop/is Apache-2.0 (upstream GenOffice). "GenOffice" and "Genspark" are trademarks of Mainfunc, Inc. and may not be used for this fork — user-facing branding has been renamed to PanOffice; the remaining de-branding work is tracked indocs/ROADMAP.md(M2).- Collabora Online is MPL-2.0. We run it as a separate service and do not
link it into the desktop code; any local patches to files under
online/must stay MPL-2.0 and be published. "Collabora" branding is likewise reserved — production builds need own branding (ROADMAP M7). - New code under
desktop-tauri/,server/,deploy/,docs/is Apache-2.0.