Record PERF-03: ListDetail Table view virtualization, sticky-scroll root cause
Mirrors the DECISIONS.md entry, and root-causes the "classic bug pairing"
Frontend-Research §B.2 caveat 5 already flagged for sticky + window
virtualization: theme.css's html/body overflow-x:hidden computes
overflow-y:auto per the CSS Overflow spec, making <body> shadow <html> as the
scroll container position:sticky pins to. Also corrects the stale
speculative "plain <table>" note in §E.3 to match what actually shipped.
On-Behalf-Of: @cheyras
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Document administration tiers, feature controls and AI usage
Synchronize the owner guide, architecture, security boundaries, UI conventions and decision record with app commit 8f44c4b6. Live release verification remains separate.
On-Behalf-Of: @cheyras
Co-Authored-By: GPT-6 <noreply@anthropic.com>
Document reusable admin tables and verified preview status
Record the shared DataTable contract, six administration consumers, full-result filter semantics, desktop/mobile behavior and completed isolated browser acceptance. Preserve historical decisions and release records.
On-Behalf-Of: @cheyras
Co-Authored-By: Codex <noreply@openai.com>
Document administration, roles and configurable AI credits
Add the owner guide and synchronize architecture, schema, frontend, MCP and decision records for DeckPal PR188. Production schema and payment verification remain pending.
On-Behalf-Of: @cheyras
Co-Authored-By: Codex in-session worker <noreply@anthropic.com>
docs: ingest archived Capacitor iOS scanner research
Explain the web-first scanner recommendation and optional native fallback, summarize all seven saved issue reports with historical limits, and preserve the original search JSON byte-for-byte.
On-Behalf-Of: @cheyras
Co-Authored-By: Codex in-session worker <noreply@anthropic.com>
docs: record DeckE dependency visual review
Document the validated Three.js update from PR181, retained Node types, and the current custom AgX rendering path.
On-Behalf-Of: @cheyras
Co-Authored-By: GPT-6 Astra <noreply@anthropic.com>
Co-Authored-By: GLM-5.2 <noreply@anthropic.com>
Architecture + Frontend Research + Decision Log + Contribution Record: first paint has a deadline now (#75)
The grey screen that survived #87 was an unbounded `supabase.auth.getSession()`,
not a bundle: it refreshes over the network inside the 90s expiry margin and
auth-js puts no timeout on that fetch, so a stalled socket held `beforeLoad`,
AuthGuard and every api.ts request open forever.
On-Behalf-Of: @cheyras
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Frontend Research A.6.1 + Decision Log + Contribution Record: the API base is the same sub-path trap (#89, #113)
On-Behalf-Of: @cheyras
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Card art: direct object URLs, cloud warm path, and the 2026-08-26 measurements
Architecture: the SPA no longer goes through the image function for art that is
already in the bucket; records why a HIT was never free (invocation + Storage
probe before the 302) and that the proxied path remains the fallback. Also
corrects the "no manifest row is a FAIL" description, which was a permanent
placeholder for 585 cards.
Data-Layer 5.3a: the cloud tier had no bulk warmer at all -- the disk warmers
cannot reach it and storage:backfill only mirrors a disk cache -- so the bucket
held only what someone had looked at (18,840 of 21,066 cards missing).
warm:cloud is that path now.
Frontend-Research C.2a: the SW route matches two origins, the image cache is
deckpal-img-v2, and the rename is load-bearing because v1 held opaque responses
the browser pads against the origin quota.
Decision Log + Contribution Record: the full entry with before/after figures.
Both the Decision Log and Data-Layer note that pkmn.gg is ruled out as a source
on the owner's decision, so warm:pkmn is not the route for the remaining 592
cards and should not be reached for on the next gap either.
On-Behalf-Of: @cheyras
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VqQ2pWdA2FAhXPjsooPy7K
Record issue #75: the character chunk on the document critical path
`index.html` preloaded the 1.2 MB `Decke-runtime` chunk on every page for every
visitor. An `advancedChunks` group absorbs the DEPENDENCIES of its matches, so
`cardSource.ts` importing `lib/api.ts` pulled the app's shared plumbing into the
character chunk and gave the entry a static edge to three.js.
- Frontend-Research: new subsection under "Lazy chunks — must not be in the entry
bundle" ("Lazy" is a property of the OUTPUT), plus the measured critical-path
figures against the §B.5 budget and what should enforce it.
- Decision-Log: the DECISIONS.md entry.
- Contribution-Record: ledger line.
On-Behalf-Of: @cheyras
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sync the wiki, and correct a page that described branch work as shipped
Brings Architecture, Decision Log and the Contribution Record in line with
the 2026-08-22 work on `decke-agent` (PR #74, open): the approval
`signature` bug that broke every approved write once
DECKE_APPROVAL_SECRET was set, the round trip extracted into a testable
module, the narration transform's move, search_cards no longer grounding
a guessed set id, and the chat model switch. Twelve DECISIONS entries
appended verbatim -- this page is a snapshot, not a rewrite.
The correction that mattered most was to our OWN previous sync. MCP Setup
said the 23 tools "are defined once, in the packages/agent-tools workspace
package". That package does not exist on origin/main. It is branch-only
work from PR #74, and the 2026-08-21 sync wrote it up as current
behaviour -- so a reader following that page would have gone looking in a
directory that is not there, and Deck-E in production has its own separate
tool set rather than a share of the MCP registry. The page now says what
is true today and names the pending PR without claiming it.
Everything new is marked as branch-only for the same reason. Nothing here
describes the collection-write path as working, because it does not: the
model will not call `log_cards` at all, which is recorded plainly rather
than omitted.
Two older pages get a banner instead of a rewrite. Data Layer and
Frontend Research §D sized a single-user Raspberry Pi deployment that the
project abandoned for Vercel + Supabase the same week they were finished.
Their measurements are captioned with the command that produced them, so
they are left as measured and the banner says which sections are still
evidence and which describe a plan that was dropped. A dated measurement
rewritten to a current number stops being evidence.
Also: removed an orphaned mid-file footer from Decision Log and the
Contribution Record, each left behind by an earlier sync that appended
below it, so both pages now carry exactly one and a reader scanning for
the date gets the right one. TypeScript's entry corrected to 7.0.2.
Home was checked against the files on disk and the AGENTS.md inventory
and left alone. Dex Data, Prior Art, Project Brief and UI Spec were
checked and deliberately not touched -- Project Brief is historical by
designation, and UI Spec already carries its own supersession notice.
On-Behalf-Of: @cheyras
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Document the Deck-E three.js character runtime
Architecture gains §15: the subsystem, the decision to drive 47 normalised pose
channels rather than AnimationMixer clips, and the traps worth knowing before
touching it. Frontend Research gains section F on the stack choices — vanilla
three.js over r3f, the AgX colour recipe for matching Blender, why PMREM is a
correctness fix and not just an aliasing one, and why Draco cannot be used with
morph targets.
Also records that the separate character wiki is now stale in eight measured
places: its own regeneration chain died on 2026-08-17, so the .blend is the
authority.
On-Behalf-Of: @cheyras
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Rename the product to DeckPal
Follows the repo rename: DeckScout → DeckPal, deckscout.io → deckpal.app,
and the MCP server rotom-mcp → deckpal-mcp.
docs: initialize DeckScout wiki with design docs and attribution system
Pages: Home, Architecture, Data-Layer, Frontend-Research, Dex-Data,
UI-Spec, Prior-Art (merged with raw scan), Project-Brief, Decision-Log
(snapshot), Contribution-Record (attribution ledger).
All content authored from current (homelab-stripped) repo sources.
Every page carries an agent+human attribution footer.
On-Behalf-Of: @cheyras
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0136MZx8gJRZn4ET9ieof6bt