You are browsing as a guest. Sign up (or log in) to start making projects!

4h 11m 13s logged

Devlog 9 - StudyBuddy

the merge tool could double up a question number

  • renumbering the survivor of a duplicate pair used Math.min of just those two rows, blind to the rest of the paper
  • merging a phantom #5 into a real #9 could hand the paper a second #5, the exact thing the tool exists to prevent
  • zero tests on a function that deletes rows. five now, including the repro

$15/hour was losing its sign, not just $5

  • the math-stripper runs from one $ to the next, so “earns $15/hour and $18/hour” reads the slash as a fraction and eats both signs. same with $40 = $25 + $15 on the =
  • i wrote this down once as “one weird case.” it’s the whole unit-rate and equation category
  • fix checks the char after the closing $: a digit means it’s opening the next price, not real math

figure crops didnt need a new pipeline, just reusing one

  • filed as “never produced,” which reads like crop, store, backfill
  • the verify screen already computes a crop window from the bbox over the stored page image. review got wired to the same math, every old worksheet gets it free
  • the real work was the guards: zero-area, inverted, off-page, or no recorded page size all have to degrade to nothing rather than to the wrong crop

a fence i built to be un-escapable, wasnt

  • the comment says a new tag can’t be added without going through the escaping. page-seam work added two by typing them directly
  • a page whose OCR contains the literal closing tag closes the fence early, and everything after reads as instructions instead of data
  • tag list exists once now, every fence built from it

every worksheets.status write was a bare UPDATE

  • no guard on the current value, so a stale job retry could drag an already-reviewed worksheet back to failed
  • one transitionWorksheet(from, to) now, every write through it

preview deploys were migrating the prod database

  • guard only checked VERCEL_ENV === 'production', but previews fire on every push against one shared DATABASE_URL
  • two finishing together were racing through the migration folder

9 tests could go quiet and nobody would know

  • one e2e file, 12 tests serial in a single tab, everything past “verify” depending on a question a drag gesture created three tests earlier
  • a drag regression silently skipped 9 unrelated tests instead of failing them
  • api fixture, split the file, broke the drag on purpose to prove it. held

the question list rendered all 114 cards for a screen that edits one at a time

  • deferred a while back: virtualizing editable rows risks one unmounting mid-edit
  • only one card can ever be expanded, so the risk surface is exactly one row
  • virtualizes past 40 now, open row pinned into the rendered range wherever scrolling goes. typed into one at 60 questions, scrolled thousands of px away, still there, still focused, still holding the edit

also

  • profile save had devlog 4’s router.refresh() remount bug
  • login rate limit skipped Auth.js’s own credentials endpoint
  • ollama worker had no startup timeout and just hung
  • worksheet text leaked into console logs on schema rejections
  • review screen shipped every page’s OCR text on page-1 load
  • admin console got merge, tree edit, queue, usage
  • doc-count drift (third time), and a false-positive LaTeX check flagging real set notation as broken math
0
24

Comments 0

No comments yet. Be the first!