Commit Graph

  • 28b0ef6766 Word Search select: put Today's theme in a standout accent card thejayman77 2026-06-11 09:23:11 -04:00
  • 52a8bc5326 Word Search mobile: focused viewport, theme placement, unique-per-size words thejayman77 2026-06-11 09:15:06 -04:00
  • 1dda91fd96 Play: app-safe in-app Back + canonicalize shareable URLs (Codex audit) thejayman77 2026-06-11 08:57:12 -04:00
  • d6015dd44e Play: make Back step through the game screens (URL-driven views) thejayman77 2026-06-11 08:50:48 -04:00
  • dc2e382dea Daily Word: bring back the tall, prominent Backspace/Enter keys thejayman77 2026-06-11 08:44:48 -04:00
  • 924f885400 Daily Word controls: matched SVG icons + row-aligned Backspace/Enter thejayman77 2026-06-11 08:42:08 -04:00
  • dbf8ab6085 Daily Word: enlarge the ↵ Enter glyph to match the ⌫ backspace thejayman77 2026-06-11 08:37:42 -04:00
  • 15fe2d1ae5 Daily Word keyboard: QWERTY, slim ↵ controls, floated up & centered thejayman77 2026-06-11 08:34:14 -04:00
  • ac418591a8 Daily Word: keyboard fills full width + kill the last overflow/scrollbar thejayman77 2026-06-11 08:20:50 -04:00
  • 35c5dc0c74 Daily Word: give the keyboard + board some JUICE thejayman77 2026-06-11 07:55:44 -04:00
  • abfbcabad0 Daily Word keyboard: maxed-out game layout + no-overflow board thejayman77 2026-06-11 07:43:39 -04:00
  • 067e77ed5a Daily Word mobile: true viewport + flat warm keyboard + height-aware tiles thejayman77 2026-06-11 07:27:39 -04:00
  • bd2a477570 Stability: cache-control at origin + non-hanging startup thejayman77 2026-06-10 22:13:21 -04:00
  • a52226ce61 Play: Game-Selection step + mobile sticky on-brand keyboard thejayman77 2026-06-10 21:58:44 -04:00
  • 98441fae15 Extract + unit-test the padding-aware cell geometry (Codex nice-to-have) thejayman77 2026-06-10 21:43:28 -04:00
  • b909b7e64b Word Search bug-fixes + Codex polish thejayman77 2026-06-10 21:09:33 -04:00
  • 9f7eb11155 Word Search polish: constant cell size, 28-word themes, per-size variety, palette thejayman77 2026-06-10 20:57:44 -04:00
  • f43f645d69 Games batch: neutral words/themes, Word Search sizes + per-word colours thejayman77 2026-06-10 20:32:53 -04:00
  • 33d5d55c33 Word Search: extract pure selection/match logic + pin with vitest thejayman77 2026-06-10 20:23:13 -04:00
  • 90cd0291a3 Play hub Phase 2: Word Search (LLM theme/words, code places the grid) thejayman77 2026-06-10 20:15:19 -04:00
  • 1bc9925e40 Daily Word: server-adjudicate guesses (answer no longer in the response) thejayman77 2026-06-10 18:48:47 -04:00
  • bccf03fb77 Fix Daily Word stuck on "Loading…" (infinite reload loop) thejayman77 2026-06-10 18:44:31 -04:00
  • a7fb8e5739 Daily Word: grow the hopeful answer pool + lock it with a validation test thejayman77 2026-06-10 17:34:44 -04:00
  • 215a5c4d64 Play hub + Daily Word game (Phase 1 of the games feature) thejayman77 2026-06-10 16:06:20 -04:00
  • d0fb153e46 "Since you last visited" cue + PWA install (add to home screen) thejayman77 2026-06-09 20:38:12 -04:00
  • 008364e922 Why-it-belongs: top-up requires all three fields (idempotency fix) thejayman77 2026-06-09 20:10:27 -04:00
  • 337dc3f901 Article pages: structured "Why it belongs" editorial read thejayman77 2026-06-09 20:05:26 -04:00
  • 9befbffd94 Deploy: smoke-check the digest masthead asset (logo-email.png) thejayman77 2026-06-09 19:39:15 -04:00
  • 1efe0a76eb Digest: darker section rule before 'From what you follow' thejayman77 2026-06-09 19:37:33 -04:00
  • 2feccedcc7 Digest: more space below the 'From what you follow' heading thejayman77 2026-06-09 19:34:52 -04:00
  • 71f140e8d0 Digest: restore azure on the enlarged 'From what you follow' heading thejayman77 2026-06-09 19:32:41 -04:00
  • c042b947a2 Digest: enlarge 'From what you follow' heading to a proper section size thejayman77 2026-06-09 19:23:55 -04:00
  • a7d72f2f84 Digest v2: restrained "From what you follow" section thejayman77 2026-06-09 19:17:17 -04:00
  • 35725e15dc Following lane: don't bounce out of it when editing lanes thejayman77 2026-06-09 19:10:58 -04:00
  • d8e246b4ff Follow source/topic — account-backed personalization (v1) thejayman77 2026-06-09 17:34:46 -04:00
  • 69ed202c4e Digest masthead: use the real logo as a hosted PNG thejayman77 2026-06-09 17:24:43 -04:00
  • 798f08b256 Digest masthead: two-tone tight-tracked 'upbeat bytes' wordmark thejayman77 2026-06-09 17:15:31 -04:00
  • bd253b4a9c Digest email: lowercase 'upbeat bytes' masthead + intro spacing/divider thejayman77 2026-06-09 17:03:56 -04:00
  • 7da14bd4fd Digest email: 'Daily Highlights' masthead + warm intro, point back to the site thejayman77 2026-06-09 16:55:17 -04:00
  • 0199e5108c Digest CTA: clear pending opt-in if sign-in is cancelled thejayman77 2026-06-09 16:46:25 -04:00
  • 1956d7fd23 Digest polish: honest on-site wording, one-tap opt-in after sign-in, List-Unsubscribe thejayman77 2026-06-09 16:35:05 -04:00
  • cf5cbb33c0 Daily digest (opt-in) + finite "you're caught up" ending thejayman77 2026-06-09 16:17:46 -04:00
  • 5d36e6b639 Cards: tighter media on phones (single-column) thejayman77 2026-06-09 15:55:14 -04:00
  • ee00d8e89b Sources: "Check source" read-only spot-check action thejayman77 2026-06-09 15:11:08 -04:00
  • eacf91225a Sources table: Media column (image coverage % + paywall marker) thejayman77 2026-06-09 14:58:19 -04:00
  • 9ba9851f6d Feedback reply: Reply-To header routes reader replies to our inbox thejayman77 2026-06-09 13:24:34 -04:00
  • 6bfee767d0 CSV export: defuse formula injection in cells thejayman77 2026-06-09 13:14:59 -04:00
  • 1cd7f1d89a Admin CSV export (sources snapshot + audience time-series) thejayman77 2026-06-09 13:05:09 -04:00
  • 26014297f4 Attention: long rate-limit item scans active sources only thejayman77 2026-06-09 12:09:17 -04:00
  • d2e2b303ac Attention strip: richer source-health items (stale/reject/dup/thin/rate-limit) thejayman77 2026-06-09 11:50:17 -04:00
  • 01de5a3ef0 source_health: next_due_at = later of streak-backoff and retry_after_at thejayman77 2026-06-09 11:45:54 -04:00
  • 38abc26ddd Honor Retry-After on HTTP 429 (polite rest, not a failure) thejayman77 2026-06-09 10:47:40 -04:00
  • 373571b476 Candidate UI: sync local state from server-returned candidate thejayman77 2026-06-09 10:39:32 -04:00
  • 1a8d1b3bf1 Promote-candidate UI: add-a-source pipeline in the admin console thejayman77 2026-06-09 10:28:00 -04:00
  • 35aaeece6d Fix status/active mirror drift in upsert_sources (pre Promote-candidate) thejayman77 2026-06-09 10:12:26 -04:00
  • 9ed817c051 Source Retire lifecycle (Phase 1: status + content_visible, active mirrored) thejayman77 2026-06-09 09:58:15 -04:00
  • ba92c0a04b Reply sanitizer: cap raw input, auto-close open tags (no severed HTML) thejayman77 2026-06-09 09:22:41 -04:00
  • a5cea7cd74 Feedback reply: admin-only WYSIWYG editor (server stays the adult) thejayman77 2026-06-09 09:10:57 -04:00
  • 9deca522b4 Sources: accepted-duplicate % (curation-quality signal) thejayman77 2026-06-08 15:47:51 -04:00
  • 0f8d5b555a Feedback reply: light Markdown formatting (bold / bullets / heading) thejayman77 2026-06-08 15:27:46 -04:00
  • fd4cd2ac9c Admin: inline flag-reason popover (replaces prompt()) thejayman77 2026-06-08 15:16:46 -04:00
  • 245b415163 Feedback reply: release DB connection before SMTP send thejayman77 2026-06-08 14:58:19 -04:00
  • 84fd61bf3f In-site feedback reply (plain-text v1) thejayman77 2026-06-08 14:23:56 -04:00
  • 8cce3a2165 Admin: analytics date-range toggle (7d / 30d / 90d) thejayman77 2026-06-08 14:14:47 -04:00
  • 84bc5b0267 Source management console: pause/resume, flag/clear, decision metrics thejayman77 2026-06-08 14:04:40 -04:00
  • f90324c5a6 Feedback admin: check rowcount before commit (tidy 404 path) thejayman77 2026-06-08 13:52:19 -04:00
  • 18707a50d2 Feedback admin: 404 on missing id for read/delete thejayman77 2026-06-08 13:45:14 -04:00
  • ecaca35977 Feedback inbox: read/unread + delete thejayman77 2026-06-08 13:33:24 -04:00
  • 13722f04a8 Admin polish: section fallback, live-scoped coverage, dual source status thejayman77 2026-06-08 13:19:15 -04:00
  • 575f562ad5 Admin: tabbed operator console (Overview/Content/Sources/Audience/Feedback) thejayman77 2026-06-08 13:03:23 -04:00
  • 489c34d2f2 Nav Back: track popstate delta so back-then-forward keeps accurate depth thejayman77 2026-06-08 09:15:43 -04:00
  • eb91a2f856 Nav hardening: app-safe deep-link Back + stale-load guard on Today thejayman77 2026-06-08 09:11:24 -04:00
  • dc245ab6ea Unify navigation: URL-backed views, one shared history thejayman77 2026-06-08 09:05:57 -04:00
  • a8175db63e Back button: move inline-right; show on deep-linked source views; clean ?source thejayman77 2026-06-08 08:47:30 -04:00
  • 8c52582ae3 In-feed Back button + clickable source on the article page thejayman77 2026-06-08 08:38:44 -04:00
  • 38889f76e5 Source feeds: click a source to see its publication feed thejayman77 2026-06-08 08:30:33 -04:00
  • 50dc2167cd Durable image quality: stop trusting feed thumbnails; cycle enriches Latest thejayman77 2026-06-07 15:55:57 -04:00
  • b134c2dab6 Image quality gate: reject too-small images (no more blurry thumbnails) thejayman77 2026-06-07 15:40:04 -04:00
  • 8b44e559e4 Images Phase 3+4: roll tile treatment to Latest, topic/tag feeds, Saved thejayman77 2026-06-07 15:25:34 -04:00
  • 224a95d64a Placeholder: settle on the clean flat word thejayman77 2026-06-07 15:23:20 -04:00
  • b9168b56ea Placeholder: revert drop-cap; add soft orb+ring graphic motif thejayman77 2026-06-07 15:21:17 -04:00
  • 6435840966 Placeholder initial: bold uppercase drop-cap, larger thejayman77 2026-06-07 15:16:29 -04:00
  • 86a6bd3b45 Card + article-page polish thejayman77 2026-06-07 15:05:32 -04:00
  • 101ebb33c2 Remove now-dead .why CSS selectors thejayman77 2026-06-07 14:00:52 -04:00
  • e41fcf6cea Brief cards: drop "why" for more summary; flat placeholder, darker word thejayman77 2026-06-07 13:59:53 -04:00
  • d472b63cbf Validate images actually load (fix overcounted coverage) thejayman77 2026-06-07 13:20:12 -04:00
  • d19099ee7d Images Phase 2: uniform brief tiles — photo or topic-colored placeholder thejayman77 2026-06-07 13:13:18 -04:00
  • 403749e26f Images phase 1: attention-triggered og:image coverage thejayman77 2026-06-07 12:30:11 -04:00
  • 9813af40ed Classifier: don't over-score cortisol for abstract/distant science thejayman77 2026-06-07 12:06:18 -04:00
  • e7610d2889 Classifier: reject body-horror / disease-threat; anxiety outweighs informative thejayman77 2026-06-07 11:42:17 -04:00
  • c64d0fda09 Article Back button: bolder SVG arrow, vertically centered thejayman77 2026-06-06 21:56:40 -04:00
  • 67d6b82ed3 Article page: add a Back button in the top bar thejayman77 2026-06-06 21:52:43 -04:00
  • c25e14ed6a Add a permanent "Latest" lane beside "Highlights" thejayman77 2026-06-06 15:56:48 -04:00
  • d87347b032 Dashboard: content + source-health; per-viewer local dates thejayman77 2026-06-06 19:34:22 +00:00
  • 452e5a3fe4 Hardening pass: scheduler backoff, FK cascade, a11y, test safety net thejayman77 2026-06-06 19:18:18 +00:00
  • 978edc8f4a Mirror lane picker into the Account page thejayman77 2026-06-06 18:26:38 +00:00
  • 722bcf6317 Customizable nav lanes: pin moods / topics / discovery tags thejayman77 2026-06-06 18:19:58 +00:00
  • 8653a46fd4 Classifier: explicit "no AI dread" boundary thejayman77 2026-06-06 14:07:31 +00:00
  • a36b1a098e Retune classifier gate: calm/non-anxiety, absorbing-allowed thejayman77 2026-06-06 02:03:24 +00:00
  • ea58039fb9 SEO flywheel: /today digest, sitemap, robots, home OG tags thejayman77 2026-06-05 19:37:05 +00:00