TallyUI uses RxDB Premium (ADR-031, ADR-044).
The rxdb-premium package's install script downloads and decrypts the
licensed plugins, so pnpm install needs a licence token. Without one, the
install fails.
Never publish the decrypted plugins. This repo is public, and its Actions caches and artifacts can be read from fork PRs. So:
- CI never caches the pnpm store or
node_modules; sideEffectsCachestaysfalseinpnpm-workspace.yaml, and CI checks it;- CI uploads no build output, trace or HTML report that could contain the worker bundle.
-
Put the token in your environment before installing. The installer reads the
RXDB_PREMIUMenvironment variable:export RXDB_PREMIUM=<token>
On the agent host (the Mac mini), the token is in the keychain:
export RXDB_PREMIUM="$(security find-generic-password -s rxdb-premium -w)"
Alternatively, put
RXDB_PREMIUM=<token>in a.envfile at the repo root..envis git-ignored, and the installer searches parent directories for it. Never write the token to a committed file, and never usepackage.jsonaccessTokens. -
Install and build:
pnpm install --frozen-lockfile pnpm build
-
Run the tests with at most two workers:
pnpm vitest run --maxWorkers=2
The Playwright e2e suite (
pnpm test:e2e:web) starts its web servers on ports derived from the worktree's path, so two worktrees never test each other's servers;node e2e/ports.tsprints them.E2E_WEB_PORTandE2E_SQLITE_PORToverride them, andE2E_REUSE=1reuses a server already running on those ports. WithoutE2E_REUSE=1, a port that is already taken fails the run before any test, naming the process that holds it: stop that process, or setE2E_REUSE=1to test its server. Then, before the first test, theserver-identitysetup project fails the run unless each server's process was started from this worktree (skipped under CI and withE2E_REUSE=1). CI keeps 8081 and 8090.
The installer prints the token in its output. Don't paste install logs anywhere public.
pnpm lint runs apps/web's Next lint through turbo and the shared config over
packages/ and connectors/ (pnpm lint:code). New violations fail; existing
ones are listed per file in eslint-suppressions.json. After fixing
grandfathered violations, run pnpm lint:code --prune-suppressions and commit
the smaller file. Never add new entries with --suppress-all to get a PR through.
pnpm knip reports unused files, exports, dependencies and binaries; new ones
fail. Known dead code is listed in knip.jsonc under baseline comments;
remove an entry when its code is fixed. Never add an ignore just to get a PR
through: a new permanent ignore needs a one-line reason comment.
rxdb and rxdb-premium are pinned to the same exact version (currently
17.5.0; ADR-031). Upgrade them together, in one PR.
See RELEASING.md.