尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證One editor for every kind of document: Word, PDF, Markdown, drawings and more, drawn with WebGL. Your documents stay ordinary files in a folder.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗One editor for every kind of document. Open, edit and keep Word files, PDFs, spreadsheets, notes and drawings together, organized in folders on your computer.
Open Golem Docs · Download for your computer · Why it's open source · Sponsor on GitHub
[[wikilinks]] that follow a rename, next to your Word files and PDFs. Every document is an ordinary file in a folder you choose, so an Obsidian vault opens as it is.Made by David Figatner with Claude. Much of the code was written by Claude, with David steering: work that would have taken one person years.
Text is drawn with WebGL (MSDF glyph atlases), so zooming stays sharp and large documents stay fast. Documents are saved in the browser with no account; signed in, they are saved to the account instead (the browser keeps a cache for speed and offline work). The desktop app keeps every document as a file in a folder on disk, in step with the account.
pnpm workspace:
| Package | What it is |
|---|---|
client | The app: Vite + WebGL renderer, menus and toolbars, browser storage |
server | Cloudflare Worker: sign-in, cloud documents (D1 for the catalogue, R2 for the files), sharing, and multiplayer rooms (a Durable Object per document) |
desktop | Tauri shell for Mac, Windows and Linux: the web app in a native window, with the documents folder kept in sync |
docx, odt, pdf | Readers and writers for Word, OpenDocument and PDF |
layout, editor, ops | Page layout, editing, and the operations that merge live edits |
| Part | License |
|---|---|
The app: client, server, desktop, and everything else not listed below | AGPL-3.0 |
The libraries: docx, layout, editor, ops, odt, pdf | MIT (each package's LICENSE) |
Fonts, spelling dictionaries and the PDF font metrics keep their own licenses: see THIRD_PARTY_NOTICES.md. The Golem Docs name and logo aren't covered by these licenses: see TRADEMARKS.md. To contribute, see CONTRIBUTING.md.
Requirements: Node 22.13 or newer, and pnpm (corepack enable gets you one).
pnpm install
pnpm dev
Open http://localhost:5173. pnpm dev is the one command for local testing. It creates server/.dev.vars on first run, applies the database migrations, then starts the client (Vite, port 5173) and the server (wrangler dev, port 3001) with prefixed output. Ctrl-C stops both, and if either one crashes the other is stopped too.
The editor on its own needs nothing else (pnpm dev:client runs just that): documents save themselves in this browser as you edit (IndexedDB, see File ▸ Open Recent). The font atlases are committed, so there is nothing to generate.
The server has three Cloudflare environments in server/wrangler.jsonc, and local development never uses production's:
| Environment | Used by | D1 and R2 | Cloud documents |
|---|---|---|---|
dev | pnpm dev (once set up) | The real dev database and bucket (golemdocs-directory-dev, golemdocs-files-dev). The Worker runs on your machine; only D1 and R2 are remote. | On. Per-user databases are named golemdocs-dev-user-<id>. |
local | pnpm dev --local, or pnpm dev before dev is set up | Simulated on your machine (server/.wrangler/); works offline. | On, kept in the simulated directory database (per-user tables) instead of per-user databases. Sharing and multiplayer work too. |
| production | pnpm --filter @golemdocs/server deploy:prod only | golemdocs-directory, golemdocs-files, golemdocs-user-<id> | On |
Set up the dev environment once:
pnpm --filter @golemdocs/server exec wrangler login, so wrangler can reach your dev resources.pnpm --filter @golemdocs/server cf:setup:dev creates the dev D1 database and R2 bucket.server/wrangler.local.example.json to server/wrangler.local.json (git-ignored) and fill in DIRECTORY_DEV_ID with the printed database id and ACCOUNT_ID with your Cloudflare account id. server/wrangler.jsonc keeps REPLACE_… placeholders for these; the server's scripts merge your values into a git-ignored wrangler.generated.jsonc before each wrangler call.server/.dev.vars as CF_API_TOKEN. The Worker uses it to create and query the per-user databases, which a Worker can't bind at deploy time. This is separate from the wrangler login credential.After that, pnpm dev uses the dev resources on its own and applies the dev migrations on each start (pnpm dev --local forces the offline mode). It says which mode it chose when it starts.
Other things server/.dev.vars controls:
| Setting | Effect |
|---|---|
[email protected] | The API treats you as signed in, with no provider needed. Local development only; the first-run copy has it set. |
Provider keys (GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and so on) | Real sign-in buttons. Register http://localhost:5173/api/auth/callback/<provider> as the redirect URI. Apple doesn't allow localhost, so test it on a deployed https domain. Setup for each provider is in server/AUTH.md. |
pnpm dev works offline with no Cloudflare account (cloud documents, sharing and rooms are all simulated). To see two people editing:
http://localhost:5173/api/auth/start/[email protected]&return=/. That signs that window in as a second user. Back in the first window, File ▸ Share… with [email protected]; the document appears under "Shared with me" on Alice's dashboard.word). Each copy has an owner (the account's user id) once it belongs to an account; signing in gives the ones without one to that account, and signing out deletes the account's copies. The last signed-in account is remembered in localStorage (golem.account) so the app still shows its documents offline.local mode: server/.wrangler/. Delete it to reset the simulated D1, R2 and sessions. In dev mode the data is in your dev Cloudflare resources (delete the golemdocs-dev-user-… databases and empty the bucket from the dashboard to reset).?doc= in the URL opens a document (welcome, fonts, war-and-peace, local:<id>, cloud:<id>).pnpm --filter @golemdocs/docx corpus downloads the .docx round-trip corpus; the dev server then lists it under File ▸ Open Sample.pnpm fonts regenerates the font atlases (needs cmake, FreeType and libpng; see scripts/fonts/generate.ts).pnpm typecheck
pnpm test
One Worker serves both the API and the built client. The steps, in order:
pnpm --filter @golemdocs/server cf:setup creates the golemdocs-directory D1 database and the golemdocs-files R2 bucket. Put the printed database id and your account id in server/wrangler.local.json as DIRECTORY_ID and ACCOUNT_ID (production).pnpm --filter @golemdocs/server exec wrangler secret put <NAME> --env="": CF_API_TOKEN (D1 Edit) plus each sign-in provider's values (server/AUTH.md).pnpm --filter @golemdocs/server cf:migrate applies the directory migrations to the remote database.pnpm --filter @golemdocs/server deploy:prod builds the client and deploys.The --env="" in the scripts selects the production (top-level) config. Never set DEV_USER in production.
CF_API_TOKEN (or the account id in wrangler.local.json) is missing. Sign-in still works without it.pnpm dev fails applying dev migrations: not logged in to Cloudflare or offline; run wrangler login, or use pnpm dev --local.@golemdocs/ops: run pnpm install so the workspace packages are linked.