Merge pull request #3 from CraigBuckmaster/codex/review-recent-master… - #4
Conversation
…-push-for-genesis-chapters Merge pull request #2 from CraigBuckmaster/master
8248df7
into
codex/review-recent-master-push-for-genesis-chaptersUh oh!
There was an error while loading. Please reload this page.
…-push-for-genesis-chapters Merge pull request #4 from CraigBuckmaster/master
…tons All 4 P2 items from UI_UX_AUDIT.md resolved in one pass: 1. FONT FAMILY STRING LITERALS (#5): 194 raw string literals replaced with fontFamily.* tokens across 57 files. fontFamily import added to 56 files that were missing it. Zero string literals remain. 2. STYLESHEET EXTRACTION (#6): All 14 remaining screens now use StyleSheet.create(). Every screen in the app is extracted. - Full rewrites: BookIntroScreen, PersonDetailScreen, ParallelPassageScreen, PlanDetailScreen, ScholarBioScreen, WordStudyDetailScreen, BookmarkListScreen, ReadingHistoryScreen, PlanListScreen, ScholarBrowseScreen, WordStudyBrowseScreen - Partial extraction: GenealogyTreeScreen, MapScreen, TimelineScreen 3. UNICODE BACK ARROWS (#4): All 3 screens (BookIntroScreen, ParallelPassageScreen, PersonDetailScreen) now use ScreenHeader with Lucide ArrowLeft instead of text '← Back'. 4. LOADING SKELETONS (#7): All 3 blank-loading screens now show LoadingSkeleton shimmer (PlanDetailScreen, ScholarBioScreen, WordStudyDetailScreen). BookIntroScreen and PersonDetailScreen also upgraded from blank View to LoadingSkeleton. Bonus: ScholarBrowseScreen and WordStudyBrowseScreen gained ScreenHeader back buttons (were missing from P1 scope since they weren't in the audit's list of 6). Files: 59 changed, +1320/-599
Merge pull request #3 from CraigBuckmaster/codex/review-recent-master…
…-push-for-genesis-chapters Merge pull request #4 from CraigBuckmaster/master
…tons All 4 P2 items from UI_UX_AUDIT.md resolved in one pass: 1. FONT FAMILY STRING LITERALS (#5): 194 raw string literals replaced with fontFamily.* tokens across 57 files. fontFamily import added to 56 files that were missing it. Zero string literals remain. 2. STYLESHEET EXTRACTION (#6): All 14 remaining screens now use StyleSheet.create(). Every screen in the app is extracted. - Full rewrites: BookIntroScreen, PersonDetailScreen, ParallelPassageScreen, PlanDetailScreen, ScholarBioScreen, WordStudyDetailScreen, BookmarkListScreen, ReadingHistoryScreen, PlanListScreen, ScholarBrowseScreen, WordStudyBrowseScreen - Partial extraction: GenealogyTreeScreen, MapScreen, TimelineScreen 3. UNICODE BACK ARROWS (#4): All 3 screens (BookIntroScreen, ParallelPassageScreen, PersonDetailScreen) now use ScreenHeader with Lucide ArrowLeft instead of text '← Back'. 4. LOADING SKELETONS (#7): All 3 blank-loading screens now show LoadingSkeleton shimmer (PlanDetailScreen, ScholarBioScreen, WordStudyDetailScreen). BookIntroScreen and PersonDetailScreen also upgraded from blank View to LoadingSkeleton. Bonus: ScholarBrowseScreen and WordStudyBrowseScreen gained ScreenHeader back buttons (were missing from P1 scope since they weren't in the audit's list of 6). Files: 59 changed, +1320/-599
Blockers: #1 userDatabase.ts v6 migration — add prominent SQL-quoting warning comment explaining why JSON.stringify + single-quoted SQL literal is safe, so future edits don't break it #2 review.ts / userMutations.ts — spaced repetition was pre-creating all 4 interval rows (1/3/7/30d) up front, causing users to see 3 copies of each prompt between day 7 and day 30. Now schedules ONE row at interval 1; completeGuidedReviewItem inserts the next-interval row in the same transaction via new nextIntervalAfter() helper #3 build_sqlite_loaders.py — proof_text_guards loader was silently falling back to guard's own book/chapter on missing suggested_chapter. Now raises ValueError with the offending guard ref. (Note: self-reference itself is valid — it's the UX for 'read in full chapter context' — so equal values are allowed, only missing/malformed values fail) #4 guidedStudy.test.ts — fixture used 'at_a_glance: [...] as any' which disabled TS checking. Replaced with correctly-typed ParsedBookIntro containing a full BookIntroAtAGlance object, so the bookIntro code path in buildConceptChips is now actually exercised #5 userDatabase.ts — new migration v20 adds partial unique index on guided_study_sessions(chapter_id) WHERE status='active' to prevent session leaks from crashes between insert and status flip. Migration dedupes any existing duplicates to the most recently updated row first Nits: #7 types/user.ts — export GUIDED_STUDY_STEPS const; derive GuidedStudyStep type from it; add GUIDED_STUDY_STEP_LABELS map in guidedStudy/types.ts; StudySessionStepper consumes both. Migration SQL CHECK gets a comment pointing at the const as single source of truth #8 plan.ts — CONCEPT_WORDS and genrePrompt refactored; concepts gets TODO(#1584); genrePrompt switched from label.includes(...) substring match to exact Record<label,prompt> lookup (with fallback for unknown genres). Filed #1584 to migrate concepts to content/meta/concepts.json #9 ChapterScreen.tsx + navigation/types.ts — added TODO(#1585) comments around the nav escape hatch. Filed #1585 to track typed CrossTabNavProp #10 StudySessionScreen.tsx — Amicus seed query fields now truncated to 200 chars with ellipsis sentinel so long syntheses don't blow past the peek sheet or Amicus's seed-query limit #12 .gitattributes — added '* text=auto eol=lf' + binary asset list. Normalized CRLF → LF on translations.json and db-manifest.json Deferred (filed/noted separately): #6 EraTimeline RAF cleanup — legit scope creep, but splitting now is more ceremony than benefit for a solo-dev PR. Kept bundled #11 GoldStripeListItem primitive — real refactor opportunity touching 5 components; out of scope for a review-response commit Tracking issues: #1584 (concepts from meta), #1585 (typed CrossTabNavProp)
…-push-for-genesis-chapters
Merge pull request #2 from CraigBuckmaster/master