* rewards: claim what the chain pays, without recording a score first
The People chain has no pezRewards.recordTrustScore and no userEpochScores since the payroll
started holding the roll still through each claim window: a claim pays the trust score at
claim time times the epoch's rate, plus the seat share for a Parlementer seat taken by the
time of the roll. The app still asked for the recorded score, so the claimable list was
always empty, and three screens offered a Record Trust Score button that signed a call that
does not exist.
The buttons, their handlers and texts, and the messages for an error and a success that can
no longer happen are removed; the claimable amount is worked out as the chain's entitlement
does, and the empty state shows in every epoch status. Past recordTrustScore extrinsics in
the transaction history keep their label.
* backend: body-parser 2.4.0 and ip-address 10.7.5
npm audit on the production dependencies: body-parser 2.0.0-2.3.0 (GHSA-27r3-jxmh-p828,
high, denial of service by trailing bytes after a compressed body) and ip-address <=10.7.3
(GHSA-rxp7-6hxx-x8q5, moderate). Lockfile only; npm audit --omit=dev finds nothing after.
* ops: lower the typecheck baseline to 335
Four TS2339 errors in shared/lib/scores.ts went with the userEpochScores code.
* web: dompurify 3.4.17 and zod 4.6.7
npm audit on the production dependencies: dompurify <=3.4.16 (critical: GHSA-cg2g-xh64-v4q7,
GHSA-mrv2-3pqr-j5jr, GHSA-c6gr-qvv4-5v3f) and zod <4.6.6 (high, GHSA-mrhx-c7xc-m3w5, fixed
only in 4.x). No code imports zod; it is here for abitype, whose peer range is
^3.22.0 || ^4.0.0. Typecheck ratchet, lint and the build are unchanged.
The founder-only wizard registered PezkuwiChain as a teyrchain on
Westend, Rococo or Polkadot (Rococo is shut down) and does nothing in
the current architecture. XCMBridgeSetupModal was not mounted anywhere.
Remove both, their xcm-wizard and xcm-bridge libraries, the DEX admin
card, their translations in all six locales, and the typecheck baseline
entries for the deleted files.
The typecheck ran with continue-on-error, so it could not fail, and it did
not see much of the code it was meant to check: shared/ resolved none of its
imports (61 TS2307), which hid every type error behind them.
- tsconfig.app.json resolves packages that shared/ imports from web's
node_modules (types first), and @pezkuwi/utils subpaths as vite does.
Unresolved imports: 61 -> 0. The real errors behind them are now visible:
353 in total, most in production code with little test cover.
- Fixing those in one change would be a large edit to that code. Instead
ops/typecheck-ratchet.py records them per file and error code in
ops/typecheck-baseline.txt and fails when any file gains one, or when
errors were fixed without lowering the baseline in the same change.
Line numbers are not part of the signature, so unrelated edits do not
trip it. Checked: a new error in App.tsx fails (exit 1); an unlowered
baseline fails (exit 1); the current tree passes.
The CI step runs the ratchet instead of the non-blocking typecheck.