This file records changes that are useful for debugging, rollback decisions, and launch-readiness review.
- 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_BUCKETfor bucketwendanswer-next-cacheand Durable Object queue bindingNEXT_CACHE_DO_QUEUEfor 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.9to16.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 KiBgzip, below the current Workers Free compressed-script limit of3 MB.
- 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: wendanswerGitHub 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.
- Added
/linkedin-wend-statisticsas 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.
- 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.
- 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.mjswith 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.
- 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 factssection 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.
- Merged and deployed the homepage-canonical change through PR #43.
- Verified
https://wendanswertoday.org/linkedin-wend-answer-todayreturns301to/, the homepage returns200, and the deprecated URL is absent from the production sitemap.
- Made
/the single indexable daily LinkedIn Wend answer URL and changed/linkedin-wend-answer-todayto a permanent301compatibility 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 addeddata-nosnippetto the fallback module while verification is pending. - Reduced repeated reveal-interface phrases with
Not revealed,Next letter, andShow wordwhile retaining descriptive accessible labels. - Changed trusted official LinkedIn Wend links to
noopener noreferrerwithoutnofollow; unrelated press-link policy remains unchanged. - Updated SEO, daily publishing, monitoring, and regression guidance for the consolidated canonical route and expanded homepage content.
- 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.
- Added the Leontina Silva F6S founder profile to
/pressas an external reference card. - Added the Leontina Silva AlternativeTo profile to
/pressas an external reference card. - Added the StackShare post to
/pressas 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.
- Replaced the fixed 08:00 UTC release assumption with shared
America/Los_Angelesscheduling, including PDT, PST, and DST-boundary regression fixtures. - Added authenticated
/api/ops/wend-dispatchand public no-store/api/wend-statusroutes 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
/statuspage, 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
lastModifiedbehavior 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.
- Updated homepage metadata and hero copy to target
LinkedIn Wend Answer Todaywhile keeping the displayed date and puzzle number dynamic. - Expanded Today, archive, archive detail, solver, and FAQ headings around natural
LinkedIn Wendanswer intent. - Added one FAQ-style
Wend LinkedIn answerphrase 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.
- 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.
- Replaced the homepage
All Wend Answersgrid with a compactRecent Wend Answerspreview that shows the latest four verified puzzles. - Added a
View Full ArchiveCTA 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.
- Changed the homepage secondary hero action from the internal hint anchor to an
Official Wend Gameexternal link pointing tohttps://www.linkedin.com/games/wendwith 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.
- Removed the redundant
src/proxy.tsredirect layer because the legacy Wend archive redirect already lives insrc/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.mjsto guard the in-route redirect behavior instead of the removed proxy file.
- Added
scripts/robots-policy.mjsand updatedscripts/monitor-production.mjsso/robots.txtmonitoring now parses robots groups instead of treating anyDisallow: /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.mjsto guard the new robots parsing behavior with a Cloudflare-style sample and a strict global block sample. - Updated
docs/MONITORING_RUNBOOK.mdto describe the grouped robots behavior.
- Added the creator Linktree profile to
/press. - Updated Press page regression coverage and documentation so the external link list stays in sync.
- Added a Footer
Presslink afterContact. - Added
/presswith external links for Ko-fi updates and the WendAnswer GitHub repository. - Added
/pressto the sitemap with support-page priority. - Added
tests/press-page.test.mjsto guard the Footer link, Press page content, external link safety attributes, and sitemap entry.
- 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-unlimitednoindex,followwhile using verified Wend puzzles as the current practice set. - Added
tests/wend-unlimited-navigation.test.mjsto guard the public copy, removed helper links, query-based navigation, and noindex status.
- Renamed the desktop
Wend Gamedropdown toPlay Gameand shortened the official game entry toOfficial Wend. - Removed
Find WendandFAQfrom 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, andArchive. - Simplified the footer to
Contact,Disclaimer,Privacy Policy, andTerms. - Removed the low-value public
/statuspage 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.
- Added a desktop-only
Wend Gamedropdown to the primary header navigation. - Added an
Official-labeled external entry forhttps://www.linkedin.com/games/wendwith safenofollow noopenernew-tab behavior. - Added a secondary internal entry to
/wend-unlimitedwhile keeping Wend Unlimitednoindex,followand out of the mobile bottom navigation, sitemap,RelatedGames, andllms.txt. - Added
tests/wend-game-nav.test.mjsto lock the Phase 1 boundaries for the desktop menu, official link, mobile nav, and Wend Unlimited SEO status.
- Added Microsoft Clarity project
xff0m0uvmcthrough the sharedAnalyticscomponent, loaded before interactive hydration from the page head path. - Added
NEXT_PUBLIC_CLARITY_DISABLEDandNEXT_PUBLIC_CLARITY_IDdeployment 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, andtypecheckpassed.
- Added Google Tag Manager container
GTM-5C5M7XPHthrough the sharedAnalyticscomponent, 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_IDcontrols 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.
- Replaced the canonical WendAnswerToday logo with the rounded yellow-and-white puzzle tile mark and blue winding
Wpath. - 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.
- Split Wend data access into
allWendPuzzlesfor raw generated JSON andverifiedWendPuzzles/wendPuzzlesfor public pages. - Changed
todayWendto 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
solverWendverified fallback and label it as the latest verified puzzle when the current release has not been verified. - Kept
publish-wend-daily.mjsguarded byvalidateWendPuzzle, which still refuses unverified daily publishes unless the private dry-run override is explicitly enabled.
- Added the new blue-and-gold WendAnswerToday puzzle
Wlogo as the canonical site brand asset underpublic/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.
- 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
WendGridand board CSS do not reintroducewend-cell-arrowstyles.
- 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.meembeds current board data in HTMLdata-*attributes, whilewendgames.orguses a manually maintainedsrc/answers-data.jslist with words/screenshots. - Expanded the daily publish workflow with longer 8:00 UTC retries, 9:00 UTC catch-up runs, manual
expected_date/source_urlinputs, andrepository_dispatchsupport for an external cron trigger. - Updated the daily runbook so GitHub schedule is treated as fallback rather than the only five-minute publish trigger.
- Changed the homepage Hero to use the same
displayWendsource 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.
- 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.
- 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.
- 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.
- Replaced the homepage
Recent Wend Answersthree-card slice with a completeAll Wend Answersarchive 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.
- 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.
- 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.
- Added
scripts/monitor-production.mjsandnpm run monitor:productionto check production uptime, core-page noindex regressions, robots/sitemap crawlability, Today page freshness, and the latest legacy archive308redirect. - Added
.github/workflows/monitor-production.ymlto run the production monitor every five minutes, send Discord-compatible or Telegram alerts through shared ops secrets, and open aautomation/monitoring/p0GitHub issue on failure. - Added
scripts/ops-alert.mjsand updated daily Wend publishing to reuse the same ops alert channel while preservingWEND_ALERT_WEBHOOK_URLcompatibility. - 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.
- 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, andwend #20 answer.
- 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.mjsso it can extract a Wend puzzle from HTML containingdata-row,data-col,data-word-index, anddata-letter-indexcell attributes, instead of only accepting prebuilt JSON. - Added a public fallback source URL for the daily publish job when
WEND_DAILY_SOURCE_URLis not configured, while still allowingWEND_DAILY_INPUT_FILEto override the network source for manual publishes. - Added a GitHub Actions failure-issue fallback so a broken daily publish creates a visible
automation/wend-publishissue instead of silently falling behind. - Updated latest-date, LinkedIn parity, and publish automation tests to guard Wend #19 and the HTML extraction path.
- 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
displayWendfallback path.
- 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.
- 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.
- 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-todayfrom fullforce-dynamicrendering 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
FaqDetailscomponent so homepage and Today page FAQ disclosures use the same rotating chevron feedback. - Strengthened
WendVerificationNoticewith 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.
- Studied
wendanswertoday.meinteraction behavior: board-cell click reveals the matching answer bubble,Reveal Wordcompletes one word, andReveal alldraws colored route tubes with start markers, check badges, and direction arrows. - Reworked
WendGridto render colored path tubes, circular start markers, check markers, and directional arrows for revealed cells instead of simple color blocks. - Reworked
WendAnswerRevealto show aWords foundprogress bar, circular answer bubbles, per-wordReveal LetterandReveal Wordcontrols, 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.
- 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, andPOSITIVE. - Filled the June 25 Wend #17 verified answer words and paths:
TOY,RACK,SPIRAL,AUCTION, andQUANTITY. - Updated
WendGridto 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-todayas if it were an old dated archive URL. - Changed Wend grid data to allow
nullblocked 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.mjsto guard against regressing back to the placeholder 5x5 board or stale daily data. - Updated the latest-date expectation so
todayWendresolves to June 26 / Wend #18 instead of June 25 / Wend #17.
- Added
scripts/validate-wend-puzzle.mjsto 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.mjsto use the dedicated validator, supportWEND_PERSIST_TO_GIT=true, commit generated Wend data back to the repository, and send a single webhook alert throughWEND_ALERT_WEBHOOK_URLon failure. - Updated
.github/workflows/publish-wend-daily.ymlto retry at0,1,3,5 8 * * *UTC, serialize overlapping runs, and grantcontents: writefor 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.tsandsrc/components/WendVerificationNotice.tsx. - Updated
scripts/smoke-local.mjsto derive the latest Wend archive URL from data instead of hard-coding a dated puzzle. - Added
tests/wend-freshness.test.mjsandtests/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.
- Added
scripts/publish-wend-daily.mjsandnpm run publish:wendas the daily automation entry point for publishing verified Wend data inside the five-minute post-reset window. - Added
.github/workflows/publish-wend-daily.ymlto 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 throughWEND_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.mjsandtests/wend-publish-automation.test.mjswith npm scripts to guard the new URL and automation behavior. - Updated
README.md,docs/DAILY_UPDATE_RUNBOOK.md, anddocs/SEO_RUNBOOK.mdwith the fast publish workflow and canonical URL rules.
- Added
data/puzzles/wend/2026-06-25.jsonso 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.mjsandnpm run generate:wendto generatesrc/lib/generated/wend-puzzles.tsfrom everydata/puzzles/wend/YYYY-MM-DD.jsonfile. - Updated
src/lib/puzzles.tssotodayWendcomes from the generated newest-first list instead of a manually hard-coded dated import. - Added
prebuildandpretypecheckhooks so the generated Wend index is refreshed before build/typecheck. - Locked all
package.jsondependencies and devDependencies to exact versions; nolatest,^, or~ranges remain. - Synchronized
package-lock.jsonafter pinning versions. - Paused
/wend-unlimitedas a public SEO page because the current implementation is a single practice puzzle, not a true unlimited mode. - Removed
/wend-unlimitedfromRelatedGames,llms.txt,sitemap.ts, and the main Today / how-to-solve user paths. - Set
/wend-unlimitedtonoindex,followand removed the non-functionalNew PuzzleandSharebuttons. - Updated
tests/latest-date.test.mjs,tests/wend-mvp.test.mjs,tests/seo-metadata.test.mjs, andscripts/smoke-local.mjsto guard the new behavior.
- 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=devreports two moderate issues from Next's internalpostcssdependency range. npm's suggested automatic fix would install an incompatible old Next version, so this was not applied.
- 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 Answerto#answerandStart with a Hintto#hints. - Moved the real interactive
WendAnswerRevealmodule directly under the hero so the first functional section is the daily answer card. - Updated
WendAnswerRevealto use the homepage module structure: title, date / puzzle / difficulty / word-count metadata, left grid, right reveal controls, and row-levelGet Wordbuttons. - 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-xltorounded-lgto stay closer to the approved 8px bordered-card visual style. - Updated
tests/seo-metadata.test.mjsto prevent reintroducing a right-side plan/snapshot panel and to require the centered hero plus real answer reveal module.
- Added shared layout classes in
src/app/globals.css:content-card,section-heading,section-icon, andinner-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-todaysections 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, andWendAnswerRevealto 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.
- Replaced the homepage right-side static Wend grid preview with a
Today’s Wend planaction 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.mjsto prevent reintroducing a fake interactive grid preview on the homepage.
- Added
src/components/WendAnswerReveal.tsx, a Wend-first answer card withReveal Letter,Get Word,Reveal all, andClear all. - Reused the existing
WendGridpath-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-todaywith 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, anddifficultyNote. - Rendered fast solving tip, common mistake, and difficulty note on Today and history detail pages.
- Added
/where-is-linkedin-wendfor 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
Practicefrom primary desktop and mobile navigation so/wend-unlimitedstays a retention CTA instead of competing with Today. - Added
npm run test:wend-mvpandtests/wend-mvp.test.mjsto guard the Wend-first MVP behavior. - Updated
README.md,docs/DAILY_UPDATE_RUNBOOK.md, anddocs/SEO_RUNBOOK.mdwith the new checks, JSON fields, and access page.
- Repositioned the homepage around Wend only instead of a broad LinkedIn Games hub.
- Removed the homepage
All Gamessection and active secondary-game promotion. - Updated homepage title and description to focus on Wend daily hints, solver help, and archives.
- Updated
RelatedGamesintoMore Wend Resources, removing Patches and Zip links. - Updated
site.description, FAQ copy, andpublic/llms.txtto describe the site as a Wend resource. - Updated
tests/seo-metadata.test.mjsto guard against homepage, related-link, andllms.txtpromotion of secondary games during the Wend-first MVP window.
- 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()withkeywordsandabsoluteTitlesupport so the homepage title can render exactly without the root layout title template appending the brand. - Updated
tests/seo-metadata.test.mjsto guard the homepage TDK. - Updated
docs/SEO_RUNBOOK.mdwith the current homepage TDK.
- Added dynamic Open Graph image generation at
/api/ogwith a1200x630ImageResponse. - Updated
pageMetadata()to output Open Graph images, Twittersummary_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,followand removed them fromsitemap.tsuntil their daily data is verified. - Updated
scripts/smoke-local.mjsso noindex pages are checked separately from public indexable pages. - Added
tests/seo-metadata.test.mjsandnpm run test:seo-metadata. - Added
docs/SEO_RUNBOOK.mdfor TDK, OG image, index strategy, and sitemap rules.
- Removed the indexable
/linkedin-games-answers-todaypage that reused the homepage content. - Added a route handler that returns a
301redirect from/linkedin-games-answers-todayto/. - Removed
/linkedin-games-answers-todayfromsrc/app/sitemap.ts. - Updated
scripts/smoke-local.mjsto verify the legacy URL redirects instead of treating it as a normal public page. - Added
tests/seo-routes.test.mjsandnpm run test:seo-routesto prevent this duplicate page from returning.
- Added
data/puzzles/wend/2026-06-24.jsonfor the June 24, 2026 Wend page. - Updated
src/lib/puzzles.tssotodayWendnow imports the June 24, 2026 JSON first. - Added
scripts/latest-date.mjsto find the newestYYYY-MM-DD.jsonfile underdata/puzzles/wend. - Added
npm run latest:wendfor quick latest-date inspection. - Added
tests/latest-date.test.mjsandnpm run test:latest-date. - Updated local smoke coverage to include
/linkedin-wend-answer-16-june-24-2026.
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:localdata/puzzles/wend/2026-06-24.jsonis marked withisVerified: false. Before public launch, replace the placeholder content with verified real puzzle data and setisVerifiedaccording to the actual verification status.
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.