THIS PAGE IS THE ACTUAL FILE THAT SHIPS IN THE REPOSITORY — PUBLISHED SO YOU CAN JUDGE THE OPERATIONAL COST BEFORE YOU PAY.

Upgrade guide

How to take Vigil updates after you've customized your copy.

The workflow

Treat the purchased source as an upstream remote:

git remote add vigil-upstream <your private access URL>
git fetch vigil-upstream

# Review what changed
git log --oneline HEAD..vigil-upstream/main
git diff HEAD...vigil-upstream/main --stat

# Merge (or rebase your changes onto the new version)
git merge vigil-upstream/main

Because customizations concentrate in predictable places (branding files, globals.css, your own modules), merges stay small. The architecture keeps upstream-heavy areas (src/modules, src/worker, src/db/schema) separate from buyer-heavy areas (branding, landing, your custom routes).

After every upgrade

npm install                # dependency changes
npm run db:migrate         # new SQL migrations apply in order
npm run typecheck && npm run lint && npm test

Database changes always ship as ordered files in drizzle/ — never edit an existing migration; upstream never rewrites one.

Version policy

If a merge goes wrong

Your escape hatch is the service layer: as long as src/modules/*/service.ts functions keep their (db, actor, input) signatures, UI and worker from either side keep working. Resolve conflicts there first, run the integration suite (npx vitest run tests/integration/), then reconcile UI.