Skip to content

Latest commit

 

History

History
510 lines (369 loc) · 42 KB

File metadata and controls

510 lines (369 loc) · 42 KB

Changelog

This file records changes that are useful for debugging, rollback decisions, and launch-readiness review.

2026-08-06

Cloudflare OpenNext migration preparation

  • Added OpenNext and Wrangler configuration for a direct Cloudflare Worker named wendanswer; the self-reference service binding uses the same service name.
  • Added R2 incremental-cache binding NEXT_INC_CACHE_R2_BUCKET for bucket wendanswer-next-cache and Durable Object queue binding NEXT_CACHE_DO_QUEUE for the homepage's 60-second ISR revalidation.
  • Added Cloudflare preview/deploy/upload/type-generation commands, immutable Next.js asset headers, ignored local Worker outputs/secrets, and a checked-in non-secret .dev.vars.example.
  • Upgraded Next.js from 16.2.9 to 16.2.11, the first compatible Next.js 16 patch accepted by the installed OpenNext adapter.
  • Added a configuration contract test and a deployment runbook. These repository changes do not by themselves prove a Cloudflare deployment; workers.dev, custom-domain, DNS/TLS, exact-commit, and production route checks remain release gates.
  • Verified the exact migration files in a WSL native Linux checkout: dependency install, configuration test, TypeScript, Next.js production build, OpenNext bundle generation, Wrangler type generation, and Wrangler dry-run all passed. The dry-run reported 1330.39 KiB gzip, below the current Workers Free compressed-script limit of 3 MB.

2026-07-28

P0-P1 release verification

  • Merged and deployed the canonical Today URL, continuous verified archive, puzzle-specific facts, filterable Archive, and Statistics page through PRs #43, #45, #46, #47, and #48.
  • Confirmed Vercel production success, the legacy Today 301, canonical/indexable production pages, 50 sitemap detail URLs, and automatic Wend #50 inclusion in Archive and Statistics.
  • Ran all repository test:* scripts, TypeScript checks, a 77-page production build, 17-route production-mode smoke, and desktop/390px layout checks for Home, the latest detail page, Archive, and Statistics.
  • The Cloudflare Workers Builds: wendanswer GitHub check remains an existing failing integration seen on prior main commits; the production Next.js application continues to be served by successful Vercel deployments behind the Cloudflare-fronted domain.

LinkedIn Wend statistics page

  • Added /linkedin-wend-statistics as an indexable, self-canonical page generated from the verified public Wend dataset.
  • Added archive-wide puzzle counts, answer totals, board/path averages, grid-size/month/difficulty distributions, longest-answer and most-winding-puzzle links, and a visible calculation methodology.
  • Kept editorial difficulty labels separate from computed facts and explicitly stated that the label is not an official LinkedIn rating.
  • Added Header, Archive, and related-resource links plus sitemap coverage and regression tests for aggregates, metadata, structured data, and internal linking.
  • Production verification after the automated Wend #50 publish confirmed that totals and sitemap coverage update from verified data without hard-coded counts.

Filterable archive discovery

  • Added local archive search across puzzle number, date, and verified answer words, plus month, difficulty, and grid-size filters.
  • Added visible result counts, reset and empty states, and generated verified-coverage/month summaries.
  • Kept all canonical answer links in the initial server-rendered archive HTML and avoided query-string index variants.
  • Added pure filter tests and page-level SEO/UI guardrails for server-visible links and local-only filter state.

Verified historical archive completion

  • Added source-quorum and geometry-validated records for Wend #1-#13, #37, #39-#41, #43, and #46, completing continuous verified coverage from #1 through #49.
  • Rebuilt #14 and #15 after the new dataset gate found invalid stored paths, and replaced the unverified placeholder #16 with the real grid, words, and paths.
  • Added scripts/backfill-wend-history.mjs with an explicit puzzle allowlist, dry-run mode, audited secondary-source exceptions, provenance hashes, and fail-closed geometry validation.
  • Added full-dataset and history-parser tests covering unique identities, date/filename agreement, continuous verified coverage, source hashes, blocked cells, ordered paths, and source disagreement.
  • Regenerated the Wend puzzle index from 49 verified JSON records.

Puzzle-specific archive detail content

  • Added deterministic per-puzzle metrics for grid size, open/blocked cells, answer count, word-length range, path turns, edge/corner starts, and longest/most winding answers.
  • Added a server-rendered Wend #{number} puzzle facts section and a unique metrics-based Meta Description to every permanent answer page.
  • Confirmed all 49 verified pages produce distinct metrics signatures without padding copy or changing the spoiler-safe answer flow.

Canonical Today URL deployment

  • Merged and deployed the homepage-canonical change through PR #43.
  • Verified https://wendanswertoday.org/linkedin-wend-answer-today returns 301 to /, the homepage returns 200, and the deprecated URL is absent from the production sitemap.

2026-07-22

LinkedIn Wend on-page SEO consolidation

  • Made / the single indexable daily LinkedIn Wend answer URL and changed /linkedin-wend-answer-today to a permanent 301 compatibility redirect.
  • Removed the duplicate Today URL from the sitemap, navigation, contextual internal links, public llms.txt, IndexNow submissions, and indexability monitoring while preserving an explicit production redirect check.
  • Rewrote Ready and Pending Title, Meta Description, and H1 templates around LinkedIn Wend Answer Today, with (Verifying) and accurate fallback language when the current solution is not ready.
  • Added server-rendered explanations covering the Wend game, progressive spoiler controls, answer verification, official play access, internal resources, and recent verified answers.
  • Replaced misleading pending FAQ language, labeled the fallback answer module as Latest verified, and added data-nosnippet to the fallback module while verification is pending.
  • Reduced repeated reveal-interface phrases with Not revealed, Next letter, and Show word while retaining descriptive accessible labels.
  • Changed trusted official LinkedIn Wend links to noopener noreferrer without nofollow; unrelated press-link policy remains unchanged.
  • Updated SEO, daily publishing, monitoring, and regression guidance for the consolidated canonical route and expanded homepage content.

2026-07-10

Wend daily publishing

  • Published verified Wend #33 for July 11, 2026 after the scheduled workflow failed before writing the new daily JSON.
  • Added publish-script context logging for the expected date, configured public sources, trusted-input mode, primary extraction, and secondary-source match so future GitHub Actions failures identify the failing boundary without requiring private log downloads.

Press external references

  • Added the Leontina Silva F6S founder profile to /press as an external reference card.
  • Added the Leontina Silva AlternativeTo profile to /press as an external reference card.
  • Added the StackShare post to /press as an external reference card.
  • Updated Press page regression coverage so the F6S, AlternativeTo, and StackShare titles and URLs stay present with the existing safe external-link attributes.

P0/P1 Wend daily reliability

  • Replaced the fixed 08:00 UTC release assumption with shared America/Los_Angeles scheduling, including PDT, PST, and DST-boundary regression fixtures.
  • Added authenticated /api/ops/wend-dispatch and public no-store /api/wend-status routes so an external scheduler can trigger publishing independently and a one-minute monitor can observe freshness independently of GitHub Actions.
  • Changed GitHub schedules to off-peak fallback retries across both 07:00 and 08:00 UTC windows.
  • Added trusted workflow JSON input with authenticated verifier identity, preserved the emergency input-file path, and required automatic public ingestion to match an independent source on date, puzzle number, and normalized answer words before geometry validation can mark it verified.
  • Added real capture/verification timestamps, SHA-256 source hashes, source URLs, verification method, and verifier provenance to new records. Re-verified Wend #32 through the two-source path and backfilled its provenance.
  • Added a production visibility gate before smoke and IndexNow, plus automatic recovery comments and issue closure for publishing and monitoring incidents.
  • Made production smoke mandatory, removed its stale dependency on the deleted /status page, and added regression coverage so valid deployments are not blocked by that obsolete route.
  • Added a visible verification-pending state that identifies the expected puzzle and labels any fallback as Latest verified; current Article metadata stays suppressed until the expected verified data exists.
  • Corrected sitemap lastModified behavior so daily pages use the latest verified content timestamp and unchanged static pages no longer claim a new timestamp on every request.
  • Added focused regression suites for scheduling, ops routes, source quorum, production polling, provenance validation, pending UI, workflow ordering, and recovery behavior.

2026-07-09

LinkedIn Wend SEO keyword layout

  • Updated homepage metadata and hero copy to target LinkedIn Wend Answer Today while keeping the displayed date and puzzle number dynamic.
  • Expanded Today, archive, archive detail, solver, and FAQ headings around natural LinkedIn Wend answer intent.
  • Added one FAQ-style Wend LinkedIn answer phrase for reverse-order search coverage without forcing awkward copy into the main title or H1.
  • Updated SEO regression tests and the SEO runbook to preserve the dual homepage/Today-page keyword strategy.

Homepage countdown placeholder

  • Kept the next-puzzle countdown card visible on the homepage even when today's puzzle is not yet verified.
  • Added a placeholder mode with -- time values so the Hero never opens with an empty gap while the countdown is waiting for fresh data.
  • Updated countdown regression coverage and the SEO runbook to reflect the always-visible placeholder behavior.

Homepage recent archive preview

  • Replaced the homepage All Wend Answers grid with a compact Recent Wend Answers preview that shows the latest four verified puzzles.
  • Added a View Full Archive CTA from the homepage preview to /linkedin-wend-archive, while keeping the archive page as the complete verified Wend answer list.
  • Updated archive coverage tests and the SEO runbook so homepage preview behavior and full archive coverage are guarded separately.

Wend reveal guidance and official game CTA

  • Changed the homepage secondary hero action from the internal hint anchor to an Official Wend Game external link pointing to https://www.linkedin.com/games/wend with safe new-tab attributes.
  • Moved the Wend solver and hint usage guidance into the answer reveal card header area, above the grid and reveal controls, so Today and archive answer pages explain the interaction before users start solving.
  • Removed the smaller grid-underlay instruction line to reduce duplicate guidance while keeping click-to-reveal letters, Reveal all, Reveal Letter, Reveal Word, and progress tracking behavior unchanged.

2026-07-06

Cloudflare deployment compatibility

  • Removed the redundant src/proxy.ts redirect layer because the legacy Wend archive redirect already lives in src/app/[slug]/page.tsx.
  • This removes the Node.js middleware path that Cloudflare OpenNext could not build, while preserving the 308 redirect from legacy /linkedin-wend-answer-* URLs to canonical /wend-answer-puzzle-* URLs.
  • Updated tests/wend-archive-url.test.mjs to guard the in-route redirect behavior instead of the removed proxy file.

2026-07-06

P0 monitor robots false-positive fix

  • Added scripts/robots-policy.mjs and updated scripts/monitor-production.mjs so /robots.txt monitoring now parses robots groups instead of treating any Disallow: / line as a whole-site block.
  • The production monitor still fails on real freshness and archive coverage gaps, but Cloudflare-managed bot-specific disallow groups no longer create a false P0 on their own.
  • Added tests/robots-policy.test.mjs to guard the new robots parsing behavior with a Cloudflare-style sample and a strict global block sample.
  • Updated docs/MONITORING_RUNBOOK.md to describe the grouped robots behavior.

2026-07-02

Press links

  • Added the creator Linktree profile to /press.
  • Updated Press page regression coverage and documentation so the external link list stays in sync.

Press page

  • Added a Footer Press link after Contact.
  • Added /press with external links for Ko-fi updates and the WendAnswer GitHub repository.
  • Added /press to the sitemap with support-page priority.
  • Added tests/press-page.test.mjs to guard the Footer link, Press page content, external link safety attributes, and sitemap entry.

Wend Unlimited practice navigation

  • Removed public-facing MVP pause copy from /wend-unlimited.
  • Removed the top helper chips that linked away to Today's Answer and Wend Solver.
  • Added a practice puzzle switcher above the solver with Previous, Next, current puzzle position, difficulty, and letter-count metadata.
  • Kept /wend-unlimited noindex,follow while using verified Wend puzzles as the current practice set.
  • Added tests/wend-unlimited-navigation.test.mjs to guard the public copy, removed helper links, query-based navigation, and noindex status.

Navigation simplification

  • Renamed the desktop Wend Game dropdown to Play Game and shortened the official game entry to Official Wend.
  • Removed Find Wend and FAQ from the top-level desktop navigation while keeping Find Wend available from the FAQ page and how-to resources available from related links and Today page body links.
  • Kept mobile bottom navigation limited to Today, Solver, and Archive.
  • Simplified the footer to Contact, Disclaimer, Privacy Policy, and Terms.
  • Removed the low-value public /status page and dropped it from the sitemap.
  • Reworked the Today page bottom CTA around Finished today's Wend? with follow-up actions after the user completes the daily puzzle.

2026-07-01

Wend Game desktop navigation

  • Added a desktop-only Wend Game dropdown to the primary header navigation.
  • Added an Official-labeled external entry for https://www.linkedin.com/games/wend with safe nofollow noopener new-tab behavior.
  • Added a secondary internal entry to /wend-unlimited while keeping Wend Unlimited noindex,follow and out of the mobile bottom navigation, sitemap, RelatedGames, and llms.txt.
  • Added tests/wend-game-nav.test.mjs to lock the Phase 1 boundaries for the desktop menu, official link, mobile nav, and Wend Unlimited SEO status.

Microsoft Clarity analytics

  • Added Microsoft Clarity project xff0m0uvmc through the shared Analytics component, loaded before interactive hydration from the page head path.
  • Added NEXT_PUBLIC_CLARITY_DISABLED and NEXT_PUBLIC_CLARITY_ID deployment controls for pausing or swapping the Clarity project without code changes.
  • Updated CSP, privacy policy, monitoring runbook, and growth guardrails so Clarity scripts, collection endpoints, and data-disclosure copy stay aligned.
  • Post-change review confirmed Clarity, GTM, Plausible, CSP, and privacy disclosures are aligned; test:growth-guardrails, test:ops-monitoring, and typecheck passed.

Google Tag Manager analytics

  • Added Google Tag Manager container GTM-5C5M7XPH through the shared Analytics component, with the script loaded before interactive hydration and the noscript iframe rendered immediately after the opening body tag.
  • Kept the existing Plausible reveal-funnel analytics layer and added NEXT_PUBLIC_GTM_DISABLED / NEXT_PUBLIC_GTM_ID controls for deployment-level GTM management.
  • Updated CSP headers to allow Google Tag Manager and Google Analytics endpoints, and updated the privacy policy plus monitoring runbook to match the new analytics collection behavior.

Logo refresh

  • Replaced the canonical WendAnswerToday logo with the rounded yellow-and-white puzzle tile mark and blue winding W path.
  • Regenerated the 512, 192, 180, 128, and 64px PNG logo assets from the new source image.
  • Updated shared logo alt text, footer description, /icon.svg, SEO runbook wording, and metadata regression coverage for the new logo description.

2026-06-30

Verified Wend public data chain hardening

  • Split Wend data access into allWendPuzzles for raw generated JSON and verifiedWendPuzzles / wendPuzzles for public pages.
  • Changed todayWend to default to the latest verified Wend puzzle, with raw data used only as an empty-data fallback.
  • Updated homepage and archive copy from generic complete coverage to verified archive coverage so unverified internal captures are not described as public verified answers.
  • Updated the Solver page to render an explicit solverWend verified fallback and label it as the latest verified puzzle when the current release has not been verified.
  • Kept publish-wend-daily.mjs guarded by validateWendPuzzle, which still refuses unverified daily publishes unless the private dry-run override is explicitly enabled.

2026-06-29

Logo and brand asset refresh

  • Added the new blue-and-gold WendAnswerToday puzzle W logo as the canonical site brand asset under public/images/.
  • Generated 512, 192, 180, 128, and 64px PNG variants for favicon, Apple touch icon, header, footer, and social preview usage.
  • Updated Header, Footer, metadata icons, /icon.svg, and the dynamic Open Graph image route to use the new logo and shared logo description.
  • Added SEO regression coverage so the logo assets and references stay wired through the site shell and OG route.

Wend board arrow removal

  • Removed route direction arrows from the Wend game board because dense boards could still make boundary arrows visually overlap with large letter glyphs.
  • Kept colored path tubes, circular start markers, and solved-word check badges as the stable route visualization.
  • Updated regression coverage so WendGrid and board CSS do not reintroduce wend-cell-arrow styles.

Wend #21 publish backfill and trigger hardening

  • Published the June 29, 2026 Wend #21 data from the public HTML fallback source after confirming the local importer can reconstruct the board, words, and paths in two seconds.
  • Compared competitor update paths: wendanswertoday.me embeds current board data in HTML data-* attributes, while wendgames.org uses a manually maintained src/answers-data.js list with words/screenshots.
  • Expanded the daily publish workflow with longer 8:00 UTC retries, 9:00 UTC catch-up runs, manual expected_date / source_url inputs, and repository_dispatch support for an external cron trigger.
  • Updated the daily runbook so GitHub schedule is treated as fallback rather than the only five-minute publish trigger.

Homepage Wend display consistency

  • Changed the homepage Hero to use the same displayWend source as the answer game module, instead of advancing the visible date and puzzle number from the calendar alone.
  • Hid the next-puzzle countdown while the current expected Wend puzzle is not verified in local data, preventing Hero, countdown, and game module puzzle numbers from drifting apart.
  • Added regression coverage so the homepage cannot claim a newer Wend puzzle before the matching verified puzzle data is available.

Compact horizontal Hero countdown

  • Changed the Hero countdown time blocks from stacked number-over-label layout to horizontal value/unit pairs such as 04 Hours.
  • Reduced countdown card vertical padding and spacing so the Hero keeps the countdown signal while taking less first-screen height.
  • Added regression coverage to keep the ticker labels beside the numbers instead of below them.

Hero-integrated Wend countdown

  • Moved the next Wend countdown from a standalone homepage section into the lower half of the Hero, directly under the primary CTA buttons.
  • Restored the stronger image-style countdown card treatment with a centered white card, soft shadow, three compact time blocks, and short expected-release copy.
  • Split the countdown into a server-rendered Hero shell and client-side ticker so the next Wend date, puzzle number, and release-time copy remain visible in initial HTML.
  • Updated countdown regression coverage so the component stays inside the Hero and does not regress to a desktop left-right layout or long explanatory text.

2026-06-28

Next Wend puzzle countdown

  • Added a homepage countdown module for the next scheduled LinkedIn Wend reset at 8:00 UTC, positioned after the support/tip content and before the full archive.
  • The module shows the next Wend date, expected puzzle number, and live hours/minutes/seconds countdown while keeping static SEO-visible copy for next-puzzle and tomorrow/date searches.
  • Added shared nextWendDisplay() release metadata and regression coverage to keep the countdown tied to the official 8:00 UTC Wend release window.

Complete Wend archive coverage on homepage

  • Replaced the homepage Recent Wend Answers three-card slice with a complete All Wend Answers archive list sourced from every verified Wend puzzle JSON file.
  • Added first-to-latest coverage copy on the homepage and archive page so users can see the archive range at a glance.
  • Added archive coverage tests to ensure every Wend data file is included in the generated puzzle index, sitemap, archive static params, and homepage archive list.

P1 growth, SEO, analytics, and security guardrails

  • Added HowTo JSON-LD to the Wend how-to pages and FAQPage JSON-LD plus visible FAQ accordions to Wend archive detail pages and the Solver page.
  • Kept homepage and Today on 60-second ISR and updated Today fallback metadata so title and description retain the expected date and Wend puzzle number instead of reverting to generic copy.
  • Added IndexNow support with a configurable key route, npm run indexnow:submit, and daily publish workflow submission after production smoke checks.
  • Added Plausible-based lightweight analytics without a package dependency, plus custom reveal funnel events for Today, Archive, and Solver reveal actions.
  • Added CSP and HSTS headers while preserving existing frame, content-type, referrer, permissions, and powered-by protections.
  • Aligned Solver controls and answer cards with the compact Today reveal panel styling and added tests to guard these growth and security details.

Wend board arrow placement fix

  • Moved Wend route direction arrows from cell interiors to the boundary between the current letter cell and the next letter cell, preventing arrows from overlapping the large letter text.
  • Corrected the directional edge mapping so right, left, down, and up arrows sit on the matching cell edge.
  • Added parity test coverage to keep route arrows below letter text and anchored to the correct inter-cell boundaries.

P0 production monitoring and crawlability checks

  • Added scripts/monitor-production.mjs and npm run monitor:production to check production uptime, core-page noindex regressions, robots/sitemap crawlability, Today page freshness, and the latest legacy archive 308 redirect.
  • Added .github/workflows/monitor-production.yml to run the production monitor every five minutes, send Discord-compatible or Telegram alerts through shared ops secrets, and open a automation / monitoring / p0 GitHub issue on failure.
  • Added scripts/ops-alert.mjs and updated daily Wend publishing to reuse the same ops alert channel while preserving WEND_ALERT_WEBHOOK_URL compatibility.
  • Added monitoring test coverage and a dedicated monitoring runbook, including the rule that analytics or tracking packages must not be added without matching privacy and Cookie Notice updates.

2026-06-27

Homepage dynamic Wend hero copy

  • Replaced the static homepage Hero headline with the dynamic search phrase Wend answer today for {date} puzzle no {number}.
  • Added a one-line Hero status bar that shows Wend #{number} answer, the current Wend date, and the 8:00 UTC daily update signal.
  • Updated homepage metadata to use the same dynamic date and puzzle-number source as the visible Hero copy, covering searches such as wend answer today, wend answer june 28, and wend #20 answer.

Publish Wend #19 and make daily source extraction real

  • Added verified Wend #19 data for June 27, 2026 with the 8x8 board, blocked cells, answer words, and full path coordinates.
  • Upgraded publish-wend-daily.mjs so it can extract a Wend puzzle from HTML containing data-row, data-col, data-word-index, and data-letter-index cell attributes, instead of only accepting prebuilt JSON.
  • Added a public fallback source URL for the daily publish job when WEND_DAILY_SOURCE_URL is not configured, while still allowing WEND_DAILY_INPUT_FILE to override the network source for manual publishes.
  • Added a GitHub Actions failure-issue fallback so a broken daily publish creates a visible automation / wend-publish issue instead of silently falling behind.
  • Updated latest-date, LinkedIn parity, and publish automation tests to guard Wend #19 and the HTML extraction path.

Remove verification-pending UI from public pages

  • Removed the public verification-pending notice component and all pending/not-published copy from the homepage and Today page.
  • Kept the freshness check, but when the current-day puzzle is missing or unverified the pages now render the latest verified Wend puzzle through the normal answer module.
  • Updated tests to forbid pending/verification copy in public page sources and require the consistent displayWend fallback path.

Wend pending fallback game module

  • Kept the freshness gate intact when the current Wend date is missing or unverified, but replaced the empty game area with the latest verified archived Wend puzzle.
  • Updated the verification-pending notice to explicitly explain that the visible game module is a fallback and not today's unverified answer.
  • Added freshness test coverage so homepage and Today page continue to render the latest verified game module while the current-day answer is pending.

Wend answer layout density pass

  • Compressed the right-side answer reveal panel with a desktop two-column word-card grid, smaller in-panel letter bubbles, and shorter reveal buttons so its height better matches the Wend board area.
  • Reused compact archive card styles for homepage recent answers and the archive page, including two-line hint truncation for steadier card heights.
  • Reworked the related Wend resources area into a responsive resource grid and aligned the dormant game card component with the same compact card/link system.

Wend readiness, SEO, and solver polish

  • Restored readiness-aware Today page metadata: verified puzzles use a date-and-puzzle-number title/description/social subtitle, while pending puzzles keep generic metadata so stale dates are not promoted.
  • Switched / and /linkedin-wend-answer-today from full force-dynamic rendering to 60-second ISR, preserving freshness checks without forcing every request to hit server rendering.
  • Updated the Wend Solver page to reuse the upgraded word-card, letter-bubble, progress-bar, and reveal-action styling from the Today answer module.
  • Added a shared FaqDetails component so homepage and Today page FAQ disclosures use the same rotating chevron feedback.
  • Strengthened WendVerificationNotice with a direct link to the latest verified archive detail page.
  • Added narrow-screen CSS tuning for Wend board letters, start rings, check badges, arrows, word cards, and letter bubbles.
  • Updated runbooks and tests to guard verified metadata, 60-second ISR, solver UI parity, mobile checks, and real legacy archive redirect verification.

2026-06-26

Wend interactive path styling

  • Studied wendanswertoday.me interaction behavior: board-cell click reveals the matching answer bubble, Reveal Word completes one word, and Reveal all draws colored route tubes with start markers, check badges, and direction arrows.
  • Reworked WendGrid to render colored path tubes, circular start markers, check markers, and directional arrows for revealed cells instead of simple color blocks.
  • Reworked WendAnswerReveal to show a Words found progress bar, circular answer bubbles, per-word Reveal Letter and Reveal Word controls, completed word-card styling, and full clear/reveal states.
  • Added responsive CSS for the Wend board and word cards so the 7x7 board fits mobile without horizontal overflow.
  • Updated tests to guard the path-tube, start-marker, check-marker, progress, and bubble UI primitives.

LinkedIn Wend board parity investigation

  • Replaced the June 25 placeholder 5x5 Wend grid with the 6x6 letter layout and gray blocked-cell regions shown in the LinkedIn screenshot.
  • Added the June 26 Wend #18 verified 7x7 board, blocked cells, answer words, and official path coordinates: ADD, PLUS, EXTRA, CREATE, PREMIUM, and POSITIVE.
  • Filled the June 25 Wend #17 verified answer words and paths: TOY, RACK, SPIRAL, AUCTION, and QUANTITY.
  • Updated WendGrid to render variable board sizes, LinkedIn-style light square cells, and connected gray wall blocks with dark borders instead of hard-coded 5-column card tiles.
  • Removed the custom site watermark from the rendered Wend board so the game surface is closer to LinkedIn's native board.
  • Fixed the proxy rule that accidentally redirected /linkedin-wend-answer-today as if it were an old dated archive URL.
  • Changed Wend grid data to allow null blocked cells and updated TypeScript types accordingly.
  • Strengthened publish validation to follow LinkedIn's orthogonal adjacency rule, reject paths through blocked cells, reject overlapping answer paths, and require every open cell to be used exactly once before verified publication.
  • Added tests/wend-linkedin-parity.test.mjs to guard against regressing back to the placeholder 5x5 board or stale daily data.
  • Updated the latest-date expectation so todayWend resolves to June 26 / Wend #18 instead of June 25 / Wend #17.

Wend publish reliability hardening

  • Added scripts/validate-wend-puzzle.mjs to validate required fields, expected publish date, verified status, grid shape, in-grid path coordinates, adjacent path steps, and path-spelled answer words before publishing.
  • Updated scripts/publish-wend-daily.mjs to use the dedicated validator, support WEND_PERSIST_TO_GIT=true, commit generated Wend data back to the repository, and send a single webhook alert through WEND_ALERT_WEBHOOK_URL on failure.
  • Updated .github/workflows/publish-wend-daily.yml to retry at 0,1,3,5 8 * * * UTC, serialize overlapping runs, and grant contents: write for generated data commits.
  • Added dynamic freshness protection for / and /linkedin-wend-answer-today; stale or unverified data now shows a verification-pending notice instead of old answers, hints, or reveal controls.
  • Added src/lib/wend-status.ts and src/components/WendVerificationNotice.tsx.
  • Updated scripts/smoke-local.mjs to derive the latest Wend archive URL from data instead of hard-coding a dated puzzle.
  • Added tests/wend-freshness.test.mjs and tests/wend-validator.test.mjs; expanded publish automation coverage for git persistence and webhook alerting.
  • Updated launch docs to call out the official LinkedIn scraping spike as a Phase 0 risk check rather than assuming unauthenticated official-page scraping is reliable.

2026-06-25

Wend fast publishing and canonical archive URLs

  • Added scripts/publish-wend-daily.mjs and npm run publish:wend as the daily automation entry point for publishing verified Wend data inside the five-minute post-reset window.
  • Added .github/workflows/publish-wend-daily.yml to run the publish command every day at 8:00 UTC and via manual workflow dispatch.
  • The publish script validates required JSON fields, refuses unverified public data by default, regenerates src/lib/generated/wend-puzzles.ts, runs fast route/data tests, and can run an optional deployment command through WEND_DEPLOY_COMMAND.
  • Added canonical archive URL support using /wend-answer-puzzle-{number}-{month-day-year}, for example /wend-answer-puzzle-17-june-25-2026.
  • Updated archive links, sitemap entries, static params, neighboring puzzle links, and smoke coverage to use the canonical archive URL.
  • Legacy /linkedin-wend-answer-{number}-{date} archive URLs now redirect to the matching canonical archive URL.
  • Added tests/wend-archive-url.test.mjs and tests/wend-publish-automation.test.mjs with npm scripts to guard the new URL and automation behavior.
  • Updated README.md, docs/DAILY_UPDATE_RUNBOOK.md, and docs/SEO_RUNBOOK.md with the fast publish workflow and canonical URL rules.

P0 launch hardening

  • Added data/puzzles/wend/2026-06-25.json so the MVP no longer serves June 24 as the latest Wend entry on June 25.
  • Marked the June 25 entry as isVerified: false; replace it with verified real puzzle data before public promotion.
  • Added scripts/generate-wend-puzzles.mjs and npm run generate:wend to generate src/lib/generated/wend-puzzles.ts from every data/puzzles/wend/YYYY-MM-DD.json file.
  • Updated src/lib/puzzles.ts so todayWend comes from the generated newest-first list instead of a manually hard-coded dated import.
  • Added prebuild and pretypecheck hooks so the generated Wend index is refreshed before build/typecheck.
  • Locked all package.json dependencies and devDependencies to exact versions; no latest, ^, or ~ ranges remain.
  • Synchronized package-lock.json after pinning versions.
  • Paused /wend-unlimited as a public SEO page because the current implementation is a single practice puzzle, not a true unlimited mode.
  • Removed /wend-unlimited from RelatedGames, llms.txt, sitemap.ts, and the main Today / how-to-solve user paths.
  • Set /wend-unlimited to noindex,follow and removed the non-functional New Puzzle and Share buttons.
  • Updated tests/latest-date.test.mjs, tests/wend-mvp.test.mjs, tests/seo-metadata.test.mjs, and scripts/smoke-local.mjs to guard the new behavior.

Known Risk

  • The June 25 Wend JSON is an unverified placeholder. Do not treat it as a final public answer until real puzzle data is checked.
  • npm audit --omit=dev reports two moderate issues from Next's internal postcss dependency range. npm's suggested automatic fix would install an incompatible old Next version, so this was not applied.

2026-06-24

Centered MVP homepage redesign

  • Reworked the homepage to match the approved centered mockup direction.
  • Removed the separate right-side Today's Wend plan / snapshot-style panel because it looked like a feature but duplicated the real answer controls.
  • Changed the hero to a single-column centered layout with two anchors: Get Today's Answer to #answer and Start with a Hint to #hints.
  • Moved the real interactive WendAnswerReveal module directly under the hero so the first functional section is the daily answer card.
  • Updated WendAnswerReveal to use the homepage module structure: title, date / puzzle / difficulty / word-count metadata, left grid, right reveal controls, and row-level Get Word buttons.
  • Reorganized homepage support content into bordered modules for spoiler-safe hints, step-by-step explanation, Wend FAQ, fast tip, common mistake, difficulty note, and recent Wend answers.
  • Reduced shared card radius from rounded-xl to rounded-lg to stay closer to the approved 8px bordered-card visual style.
  • Updated tests/seo-metadata.test.mjs to prevent reintroducing a right-side plan/snapshot panel and to require the centered hero plus real answer reveal module.

Structured card-based frontend polish

  • Added shared layout classes in src/app/globals.css: content-card, section-heading, section-icon, and inner-card.
  • Applied a clearer card-and-divider structure inspired by the referenced Wend answer page: each major module now has a white card, light gray border, icon-led heading, and inner bordered rows.
  • Updated the homepage right-side action card, archive block, FAQ block, and help block to use the shared card structure.
  • Updated /linkedin-wend-answer-today sections for hero, answer reveal, hints, explanation, tips, practice CTA, related resources, and visible FAQ.
  • Rendered the existing Today FAQ as visible accordion-style rows instead of only JSON-LD.
  • Updated HintAccordion, ArchiveList, RelatedGames, and WendAnswerReveal to use the same visual language.
  • Added regression coverage so the shared card primitives remain present and the answer reveal keeps the icon-led card structure.

Homepage hero action card clarification

  • Replaced the homepage right-side static Wend grid preview with a Today’s Wend plan action card.
  • The old grid looked interactive but only acted as a visual preview, which made the homepage purpose unclear.
  • The new card explains the intended flow: start with a hint, reveal one word, then reveal all only if needed.
  • Primary homepage CTA now points to /linkedin-wend-answer-today#answer, where the real interactive answer reveal lives.
  • Updated tests/seo-metadata.test.mjs to prevent reintroducing a fake interactive grid preview on the homepage.

Wend user-pain P0/P1 optimization

  • Added src/components/WendAnswerReveal.tsx, a Wend-first answer card with Reveal Letter, Get Word, Reveal all, and Clear all.
  • Reused the existing WendGrid path-highlighting logic and extended its cell click callback so clicked cells can reveal a single letter without exposing the full answer.
  • Replaced the generic solver block on /linkedin-wend-answer-today with the Wend answer reveal card.
  • Replaced the archived full-path reveal block on Wend history pages with the same Wend answer reveal card.
  • Added daily puzzle fields: fastTip, commonMistake, and difficultyNote.
  • Rendered fast solving tip, common mistake, and difficulty note on Today and history detail pages.
  • Added /where-is-linkedin-wend for users who cannot find Wend or need the direct official game link.
  • Expanded FAQ coverage for Wend access, Wend not showing, loading issues, and streak-safe help.
  • Removed Practice from primary desktop and mobile navigation so /wend-unlimited stays a retention CTA instead of competing with Today.
  • Added npm run test:wend-mvp and tests/wend-mvp.test.mjs to guard the Wend-first MVP behavior.
  • Updated README.md, docs/DAILY_UPDATE_RUNBOOK.md, and docs/SEO_RUNBOOK.md with the new checks, JSON fields, and access page.

Wend-first information architecture

  • Repositioned the homepage around Wend only instead of a broad LinkedIn Games hub.
  • Removed the homepage All Games section and active secondary-game promotion.
  • Updated homepage title and description to focus on Wend daily hints, solver help, and archives.
  • Updated RelatedGames into More Wend Resources, removing Patches and Zip links.
  • Updated site.description, FAQ copy, and public/llms.txt to describe the site as a Wend resource.
  • Updated tests/seo-metadata.test.mjs to guard against homepage, related-link, and llms.txt promotion of secondary games during the Wend-first MVP window.

Homepage TDK update

  • Updated the homepage title to Wend Answer Today & LinkedIn Games Answers | Daily Hints & Solutions; later superseded by the Wend-first title above.
  • Updated the homepage description to target daily LinkedIn Games answers, spoiler-safe hints, and solvers; later narrowed by the Wend-first positioning above.
  • Added homepage keywords for Wend answer intent.
  • Extended pageMetadata() with keywords and absoluteTitle support so the homepage title can render exactly without the root layout title template appending the brand.
  • Updated tests/seo-metadata.test.mjs to guard the homepage TDK.
  • Updated docs/SEO_RUNBOOK.md with the current homepage TDK.

SEO P0/P1 metadata hardening

  • Added dynamic Open Graph image generation at /api/og with a 1200x630 ImageResponse.
  • Updated pageMetadata() to output Open Graph images, Twitter summary_large_image, optional article times, page-specific OG copy, and optional robots settings.
  • Shortened core Wend TDK titles so the root layout can append the brand without making titles too long.
  • Added route-specific sitemap priorities and change frequencies.
  • Temporarily set Patches and Zip pages to noindex,follow and removed them from sitemap.ts until their daily data is verified.
  • Updated scripts/smoke-local.mjs so noindex pages are checked separately from public indexable pages.
  • Added tests/seo-metadata.test.mjs and npm run test:seo-metadata.
  • Added docs/SEO_RUNBOOK.md for TDK, OG image, index strategy, and sitemap rules.

Duplicate SEO route removal

  • Removed the indexable /linkedin-games-answers-today page that reused the homepage content.
  • Added a route handler that returns a 301 redirect from /linkedin-games-answers-today to /.
  • Removed /linkedin-games-answers-today from src/app/sitemap.ts.
  • Updated scripts/smoke-local.mjs to verify the legacy URL redirects instead of treating it as a normal public page.
  • Added tests/seo-routes.test.mjs and npm run test:seo-routes to prevent this duplicate page from returning.

Wend daily data freshness

  • Added data/puzzles/wend/2026-06-24.json for the June 24, 2026 Wend page.
  • Updated src/lib/puzzles.ts so todayWend now imports the June 24, 2026 JSON first.
  • Added scripts/latest-date.mjs to find the newest YYYY-MM-DD.json file under data/puzzles/wend.
  • Added npm run latest:wend for quick latest-date inspection.
  • Added tests/latest-date.test.mjs and npm run test:latest-date.
  • Updated local smoke coverage to include /linkedin-wend-answer-16-june-24-2026.

Verification

The following checks passed after the change:

npm run test:latest-date
npm run latest:wend
npm run typecheck
npm run build
npm run smoke:local

Known Risk

  • data/puzzles/wend/2026-06-24.json is marked with isVerified: false. Before public launch, replace the placeholder content with verified real puzzle data and set isVerified according to the actual verification status.

Pending Launch Items

These are known issues from the current audit and are not resolved by the June 24 data freshness change:

  • Add analytics, preferably Plausible for a lightweight MVP.