Files
ServerKit/frontend/scripts
Juan DenisandClaude Opus 5 a8e9f605e4 fix(skeletons): make bone capture reliable, and cap what it will bake
The capture tool shipped with two targets and had evidently never been
run past them — every one of them failed for reasons the tool could not
report.

Three bugs, in the order they bit:

- login filled the first `input[type="text"]` on the page, which is a 2FA
  digit box rendered above the real form. The credential form stayed
  empty, so every target then timed out waiting for content on a page
  that was still /login. Target #email/#password, and fail loudly rather
  than silently proceeding unauthenticated.

- The API client clears both tokens from localStorage whenever any
  request 401s, and one admin-only endpoint doing so was enough to bounce
  every later target back to /login. The captured tokens are now re-seeded
  before app code runs on each navigation, with a re-auth-and-retry as
  backstop.

- A bare "waitForSelector timeout" hid all of the above. Failures now say
  which cause applies: bounced to /login, root selector absent, or the
  page rendered its empty state.

Targets grew to services and domains alongside ssl and wordpress-list.
/templates is deliberately excluded: its catalog measures ~975 bones over
5700px — a skeleton nobody scrolls, at a node count costing more to
animate than the page costs to load. A MAX_BONES cap now rejects that
class of capture outright, pointing at the PageSkeleton archetypes, and
the target list documents that a page only qualifies once the dev
database reliably has rows for it — bones measured from an empty page
would predict that nothing is coming.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 05:05:39 -04:00
..