Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
835a66a
perf: trim therapy startup and sidebar work
BigSimmo Jul 30, 2026
ff270e9
fix(therapy): preserve catalogue compatibility aliases
BigSimmo Jul 30, 2026
f7f24db
merge: sync origin/main into therapy perf branch
cursoragent Jul 30, 2026
b4e0b60
docs(review): clarify Therapy catalogue split
BigSimmo Jul 30, 2026
f2a5c0d
merge: sync origin/main into therapy perf branch
cursoragent Jul 31, 2026
66323b9
fix(therapy): harden alias caching and drop dead sidebar helper
cursoragent Jul 31, 2026
d65141d
test(therapy): pin hashed vs alias Cache-Control contract
cursoragent Jul 31, 2026
5c85e6f
docs(review): record PR #1489 reopen-prep bugbot pass
cursoragent Jul 31, 2026
8dce2ae
Merge remote-tracking branch 'origin/main' into codex/address-perform…
cursoragent Jul 31, 2026
c1172ae
fix: apply CodeRabbit auto-fixes
coderabbitai[bot] Jul 31, 2026
04f7cf7
Revert "fix: apply CodeRabbit auto-fixes"
cursoragent Jul 31, 2026
fe0d7e0
Merge remote-tracking branch 'origin/main' into codex/address-perform…
cursoragent Jul 31, 2026
ddd51f3
Merge remote-tracking branch 'origin/main' into codex/address-perform…
cursoragent Jul 31, 2026
ff18900
fix(therapy): harden generator checks and credit PR #1489 on #117
cursoragent Jul 31, 2026
b8fa1db
docs(review): record PR #1489 heavy review+bugbot+fix pass
cursoragent Jul 31, 2026
f3cd6db
merge: sync origin/main into therapy perf branch
cursoragent Jul 31, 2026
e9faf6a
docs(review): supersede PR #1489 heavy pass after main sync
cursoragent Jul 31, 2026
9b3dee0
fix(ci): retry Docker npm ci on registry disconnects
cursoragent Jul 31, 2026
602743d
merge: sync origin/main; keep hashed catalogues + search-full routing
cursoragent Jul 31, 2026
2d3d4e8
Merge branch 'main' into codex/address-performance-issues-in-package
BigSimmo Jul 31, 2026
82ab8e1
fix(phone-chrome): keep hide-on-scroll across viewport resize
cursoragent Jul 31, 2026
ef5e9e9
docs(ledger): record PR #1489 Production UI viewport-resize fix
cursoragent Jul 31, 2026
a861c96
merge: sync origin/main into therapy perf PR
cursoragent Jul 31, 2026
2257c22
docs(ledger): record PR #1489 main sync after DIRTY false conflict
cursoragent Jul 31, 2026
caced05
fix(ci): stop bundle-budget hanging after success on Build
cursoragent Jul 31, 2026
6cb211d
docs(ledger): record PR #1489 bundle-budget hang fix
cursoragent Jul 31, 2026
8c73031
merge: sync origin/main after bundle-budget hang fix
cursoragent Jul 31, 2026
7ecc4e1
fix(ci): harden bundle-budget unexpected-error exit path
cursoragent Jul 31, 2026
2cdb950
docs(ledger): record PR #1489 bundle-budget stress review
cursoragent Jul 31, 2026
e2a470b
merge: sync origin/main; combine both #146 hide-on-scroll guards
cursoragent Jul 31, 2026
580fd3c
docs(ledger): record PR #1489 main merge conflict resolution
cursoragent Jul 31, 2026
3e56dd9
fix(ci): unblock Static PR typecheck and stop mangling task-centred
cursoragent Jul 31, 2026
986446f
docs(ledger): record PR #1489 CI typecheck and sk-escape fixes
cursoragent Jul 31, 2026
ac2d0ec
docs(ledger): pin PR #1489 review scope to tip 986446f6
cursoragent Jul 31, 2026
ef0feef
merge: sync origin/main (Sentry + source-governance #1478)
cursoragent Jul 31, 2026
aa8c2df
merge: sync main and unblock Static PR doc gates
cursoragent Jul 31, 2026
f5e57e6
docs(ledger): record PR #1489 main sync and CI unblock
cursoragent Jul 31, 2026
67036ed
merge: sync origin/main (#1524); regenerate scripts-index
cursoragent Jul 31, 2026
67d5cb9
Merge branch 'main' into codex/address-performance-issues-in-package
BigSimmo Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -413,8 +413,15 @@ jobs:
NEXT_BUILD_CPUS: "4"
run: npm run build

# Step timeout (not job timeout): a stuck exit must fail this step quickly
# as `failure` so "Re-run failed jobs" actually re-runs Build. Job-level
# cancellation after timeout-minutes left Build as `cancelled`, which the
# failed-only rerun path skips — the PR #1489 loop. Invoke `node` directly
# so an npm lifecycle wrapper cannot keep the step alive after the check
# has printed success.
- name: Bundle budget (enforced — fails on >tolerancePct gzip growth vs baseline)
run: npm run check:bundle-budget
timeout-minutes: 3
run: node scripts/check-bundle-budget.mjs

- name: Deployment boot smoke
if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')
Expand Down
14 changes: 12 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,13 @@ WORKDIR /app
COPY package.json package-lock.json .npmrc ./
COPY scripts/check-node-engine.cjs scripts/check-node-engine.cjs
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
RUN npm ci
# Registry blips (ECONNRESET) have failed CI app-image builds mid-install; retry
# the whole `npm ci` rather than relying only on per-request fetch retries.
RUN for attempt in 1 2 3; do \
npm ci --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
if [ "$attempt" -eq 3 ]; then exit 1; fi; \
sleep $((attempt * 10)); \
done

FROM node:24-bookworm-slim AS build
WORKDIR /app
Expand Down Expand Up @@ -59,7 +65,11 @@ WORKDIR /app
COPY package.json package-lock.json .npmrc ./
COPY scripts/check-node-engine.cjs scripts/check-node-engine.cjs
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
RUN npm ci --omit=dev
RUN for attempt in 1 2 3; do \
npm ci --omit=dev --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
if [ "$attempt" -eq 3 ]; then exit 1; fi; \
sleep $((attempt * 10)); \
done

FROM node:24-bookworm-slim AS runner
WORKDIR /app
Expand Down
13 changes: 11 additions & 2 deletions Dockerfile.worker
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@ WORKDIR /app
COPY package.json package-lock.json .npmrc ./
COPY scripts/check-node-engine.cjs scripts/check-node-engine.cjs
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
RUN npm ci
# Same install-retry contract as the app Dockerfile (registry ECONNRESET flakes).
RUN for attempt in 1 2 3; do \
npm ci --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
if [ "$attempt" -eq 3 ]; then exit 1; fi; \
sleep $((attempt * 10)); \
done
COPY . .
RUN node scripts/build-worker.mjs

Expand All @@ -35,7 +40,11 @@ WORKDIR /app
COPY package.json package-lock.json .npmrc ./
COPY scripts/check-node-engine.cjs scripts/check-node-engine.cjs
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
RUN npm ci --omit=dev
RUN for attempt in 1 2 3; do \
npm ci --omit=dev --fetch-retries=5 --fetch-retry-mintimeout=20000 --fetch-retry-maxtimeout=120000 && break; \
if [ "$attempt" -eq 3 ]; then exit 1; fi; \
sleep $((attempt * 10)); \
done

FROM node:24-bookworm-slim AS runner
RUN apt-get update \
Expand Down
69 changes: 42 additions & 27 deletions docs/branch-review-ledger.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/outstanding-issues.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/scripts-index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Scripts index

Curated map of `scripts/` (197 files) and the `package.json` script surface (212 entries),
Curated map of `scripts/` (198 files) and the `package.json` script surface (212 entries),
grouped by purpose. This is orientation, not an exhaustive per-file listing — the authoritative
command list is `package.json`, and `npm run docs:check-scripts` verifies every `npm run <x>`
referenced in docs resolves to a real script. `npm run docs:update` refreshes the exact counts above.
Expand Down
14 changes: 14 additions & 0 deletions next.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,20 @@ const nextConfig: NextConfig = {
source: "/manifest.webmanifest",
headers: [{ key: "Cache-Control", value: "public, max-age=0, must-revalidate" }],
},
{
// Therapy catalogues are content-addressed by the generator. A new data
// revision gets a new URL, so browsers and the CDN can retain old bytes
// without revalidation while an already-open client finishes using them.
source: "/therapy-compass-data/:asset(therapies(?:-(?:home|index))?\\.[a-f0-9]{16}\\.json)",
headers: [{ key: "Cache-Control", value: "public, max-age=31536000, immutable" }],
},
{
// Compatibility aliases for deployment-straddling clients. These names
// stay stable across regenerations, so force revalidation instead of
// inheriting the hashed-asset immutable policy above.
source: "/therapy-compass-data/:asset(therapies(?:-(?:home|index))?\\.json)",
headers: [{ key: "Cache-Control", value: "public, max-age=0, must-revalidate" }],
},
];
},
};
Expand Down
Loading
Loading