Skip to content

Repository files navigation

Timegrass

Time flies and tasks grow like grass.

Workflow

https://github.com/Cumulo/calcium-workflow

Local development

corepack enable
corepack prepare yarn@4.12.0 --activate
caps
yarn install --immutable

# browser client and static assets
yarn watch-page
yarn dev-page

# realtime server
mode=dev calcit -w calcit.cirru --entry server

calcit.cirru now uses explicit entries: the default browser entry runs in JavaScript mode and the server entry runs natively. storage.cirru remains Cirru EDN and is loaded with parse-cirru-edn then written with format-cirru-edn; its existing on-disk shape is preserved, with only runtime sessions omitted as before.

The browser and server use nominal ClientMessage and ServerMessage envelopes. Snapshots and patches carry monotonic revisions; the server advances each client's diff baseline only after an ACK. Revision mismatch or invalid patches are rejected atomically and request a fresh snapshot. Visibility and heartbeat messages let inactive tabs stop receiving projections, while bounded WebSocket backpressure retains only the newest dirty revision for retry.

The server coalesces updater-driven synchronization instead of scanning every client on a fixed render interval. read-sync-metrics exposes patch/snapshot attempts, UTF-8 payload bytes, diff latency, resync count, pending clients, and slow clients. See docs/realtime-sync.md for the protocol, failure behavior, and real slow-reader evidence.

Keep the Calcit CLI and @calcit/procs runtime on the same version. The local development command starts Vite with --force so stale optimized dependencies cannot retain a previous runtime after an upgrade.

Upgrade validation

Use released module tags and validate the full graph before committing:

caps --strict --ci
calcit edit format
calcit --check-only
calcit --entry server --check-only
calcit analyze deprecated
yarn check-sync
yarn compile-page
yarn release-page

Never test a migration against the live storage.cirru. Copy it outside the repository, then verify the same load/persist path used by the server. The revision-protocol migration was checked against a copy of the real 736,198-byte state; after a native server run and persistence, both the copy and source kept SHA-256 18212a22d8dfdcd9e9f3ecd8cbc7a5fd8975b7644432e4435ea0297a1935b191.

License

MIT

About

Very simple Tickets App

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Used by

Contributors

Languages