Commit Graph

  • db45a0dd6d
    Fix MCP saved keyword metrics (#483) Ben Senescu 2026-08-13 20:16:20 -04:00
  • 72eaa09c32
    Hide Analytics section when GA4 OAuth app is pending (#475) Ben Senescu 2026-08-12 19:57:29 -04:00
  • 75aec8424f
    Detect paid plans from Autumn entitlement flags (#482) Ben Senescu 2026-08-12 11:35:07 -04:00
  • a1ed6ece4b
    Add strategy library index and navigation (#479) Ben Senescu 2026-08-11 22:53:02 -04:00
  • bd402844fa
    Add public product roadmap (#480) Ben Senescu 2026-08-11 22:38:47 -04:00
  • 0a11839a1c
    Clarify contribution and pull request guidance (#457) Ben Senescu 2026-08-11 21:51:15 -04:00
  • 84e8d0be99
    Serve legacy MCP JSON requests statelessly to stop per-request server retention (#478) Ben Senescu 2026-08-11 20:15:48 -04:00
  • 16eb599270
    MCP API key support (hosted mode) (#438) Ben Senescu 2026-08-11 19:20:44 -04:00
  • 7a1748af4e
    Exclude PDF assets from prerendering (#476) Ben Senescu 2026-08-10 23:03:20 -04:00
  • edc2c07af2
    Add blog post: Ranking for the Wrong Half of Your Audience (#185) Jeremy Rivera 2026-08-10 12:43:53 -05:00
  • 85095f4ac6
    Library batch 2: plays 05-08, completing the Keyword Research library (#187) Jeremy Rivera 2026-08-10 11:11:40 -05:00
  • d2d8f7e19a
    release: v0.1.4 (#474) Ben Senescu 2026-08-09 15:51:55 -04:00
  • 877782ad19 fix(gdpr): drop reddit_attributions count from erasure script Ben Senescu 2026-08-08 19:21:47 -04:00
  • 9edb18db60
    feat(gdpr): user data erasure workflow (EVE-46) (#468) Ben Senescu 2026-08-08 19:17:41 -04:00
  • 13ada5b441
    fix(sam): out-of-credits CoT leak, streaming scroll lock, rank-tracking language gap (#470) Ben Senescu 2026-08-08 18:47:41 -04:00
  • 17e7515e82
    feat(self-host): share one workspace across Cloudflare Access users (#467) Ben Senescu 2026-08-08 18:23:31 -04:00
  • f14aa4c746
    fix(selfhost): build client bundle with --mode selfhost so AUTH_MODE matches runtime (#471) Ben Senescu 2026-08-08 14:14:03 -04:00
  • 2cedcda5db
    fix(billing): activate paid plans immediately after checkout (EVE-44) (#469) Ben Senescu 2026-08-08 13:06:45 -04:00
  • cfc8456767
    feat(mcp): migrate to MCP SDK v2 stateless handler (#464) Ben Senescu 2026-08-08 12:44:48 -04:00
  • 45403aa06f
    fix(ga4): hide every GA4 connect surface until the OAuth app is approved (#466) Ben Senescu 2026-08-07 22:56:31 -04:00
  • eec998a762
    feat(rank-tracking): raise scheduler throughput 5x with rate-limit-derived sizing (#465) Ben Senescu 2026-08-07 16:44:16 -04:00
  • 16b6d38ea8
    fix(dashboard): hide GA4 connect card until OAuth app is approved (#463) Ben Senescu 2026-08-07 14:21:01 -04:00
  • f048dc3bd1
    fix(rank-tracking): drain due configs deterministically (clean-room alternative to #456) (#462) Ben Senescu 2026-08-07 13:53:30 -04:00
  • e2c84803f2
    feat: add GA4 MCP insights and rank tracking management (#461) Ben Senescu 2026-08-07 13:47:18 -04:00
  • c40a04459c
    fix(billing): retry missing Autumn balance (#450) Ben Senescu 2026-08-06 21:33:25 -04:00
  • 211907ae32
    fix(audit): make Lighthouse billing retry-safe (#460) Ben Senescu 2026-08-06 21:19:39 -04:00
  • 189d5bfa1f
    fix(onboarding): isolate cached routing state per request (#459) Ben Senescu 2026-08-06 12:24:31 -04:00
  • 8a728563d4
    fix(mcp): stop breaking public OAuth clients at token refresh (#420) Ben Senescu 2026-08-05 16:10:28 -04:00
  • 30948a2a1d
    Increase pricing calculator website limit to 500 (#454) Ben Senescu 2026-08-01 17:28:04 -04:00
  • 187d3fd9c1
    fix(db): widen backlink snapshot counts (#448) Ben Senescu 2026-08-01 17:10:43 -04:00
  • f6ddf654df
    fix(ci): make crawl backpressure lintable (#452) Ben Senescu 2026-08-01 14:50:49 -04:00
  • b8253fb083
    Free backlink checker at /backlink-checker (#444) Ben Senescu 2026-08-01 13:50:50 -04:00
  • 145324138e
    Cap site-audit crawl memory: byte-budgeted window, 1 MiB read cap, persist backpressure (#445) Ben Senescu 2026-08-01 13:22:26 -04:00
  • acd28749c8
    Auto-evict the oldest search tab at capacity, raise the limit to 20 (#442) Ben Senescu 2026-08-01 10:34:31 -04:00
  • 32b1b1d38c
    Remove Product Hunt launch banner from marketing site (#440) Ben Senescu 2026-07-31 13:07:44 -04:00
  • 8d6e99385f
    audit: drop the audit_links table (#416) Ben Senescu 2026-07-30 20:51:32 -04:00
  • 1e8a924c4c
    Site Audit - Improve reliability and performance with Durable Objects Ben Senescu 2026-07-30 00:51:50 -04:00
  • 9d19e43990
    release: v0.1.3 (#433) Ben Senescu 2026-07-30 00:23:36 -04:00
  • a710b560d5
    perf(docker): reuse the build across restarts instead of rebuilding on every start (#123) Amine Benboubker 2026-07-30 05:16:18 +01:00
  • 4a82bf0803
    Document reproducible contributor checks (#105) Timur Isachenko 2026-07-30 04:32:56 +01:00
  • 4f45a04961
    fix(docker): forward OPENROUTER_API_KEY into the self-host container (#152) Nordalux 2026-07-30 05:32:37 +02:00
  • ffb5c9d9e8
    feat(deploy): alchemy-based Cloudflare self-hosting (#431) Ben Senescu 2026-07-29 23:22:33 -04:00
  • 625b76ebee
    Make self hosting better (#428) Ben Senescu 2026-07-29 23:10:01 -04:00
  • b0e850db2b
    Backlinks tab: default sort by most recent (firstSeen) instead of rank (#432) Ben Senescu 2026-07-29 22:41:31 -04:00
  • 68fdcd9bf9
    feat(skills): add seo-audit agent skill (#430) Ben Senescu 2026-07-29 20:47:14 -04:00
  • 86cbba3cdb
    Project switcher: fix viewport overflow + searchable combobox (#427) Ben Senescu 2026-07-29 16:19:16 -04:00
  • c81fd7a130
    Rank positions: report organic rank (rank_group), not absolute SERP slot (#429) Ben Senescu 2026-07-29 10:46:15 -04:00
  • 72c1cf0b8e
    Fix modals taller than the viewport being unscrollable (#425) Ben Senescu 2026-07-26 08:30:20 -07:00
  • be6a34e766
    Remove Search Everywhere interview post (#424) Ben Senescu 2026-07-23 15:52:13 -07:00
  • b97d381493
    Include /library pages in the sitemap (derived from route files) (#423) Ben Senescu 2026-07-23 15:20:21 -07:00
  • f56972639f
    content-review skill + revert unfinished redesign + some copy changes (#422) Ben Senescu 2026-07-23 14:39:56 -07:00
  • a4ede67ebb
    Keyword Research Strategy Library + feature-page guides section + Search Everywhere interview (#128) Jeremy Rivera 2026-07-23 13:37:58 -05:00
  • 633876c0ef
    release: v0.1.2 (#421) Ben Senescu 2026-07-23 11:11:53 -04:00
  • a16fbd17a8 fix(ui): proper loading states for rank tracking list, detail, and dashboard cards (#419) Ben Senescu 2026-07-23 09:39:28 -04:00
  • 67ed8d3c77 feat(web): add Product Hunt #1 Product of the Day laurel to the hero (#415) Ben Senescu 2026-07-21 17:06:12 -04:00
  • b0b5528a3a
    feat(mcp): add create_project tool (#114) Amine Benboubker 2026-07-23 15:07:02 +01:00
  • 2c153f9a20
    feat(mcp): accept locationCode/languageCode on Labs research tools (#113) Slim Bouras 2026-07-23 16:05:43 +02:00
  • d3c62aa5a2
    fix(search-tabs): keep tabs without explicit location across reloads (#108) Xiaonan Cui 2026-07-23 22:00:26 +08:00
  • 3edbd0c11e
    fix(gsc): clamp month-based date ranges instead of overflowing short months (#133) Shuvam Kumar 2026-07-23 19:27:25 +05:30
  • d7cfbec796
    fix(backlinks): keep truncateMiddle within maxLength (#134) Shuvam Kumar 2026-07-23 19:26:09 +05:30
  • 8ca2e0b332
    fix(domain): base pagination hasMore on fetched rows, not filtered rows (#135) Shuvam Kumar 2026-07-23 19:21:31 +05:30
  • 0d654c06e6
    test(e2e): update landing redirect assertions for dashboard landing page (#109) Xiaonan Cui 2026-07-23 21:50:09 +08:00
  • 95e95d48cb
    Add blog post: The Dark Query Problem (#110) Jeremy Rivera 2026-07-21 15:40:07 -05:00
  • b41092788a
    release: v0.1.1 (#413) Ben Senescu 2026-07-20 23:23:15 -04:00
  • 3a94f02a55
    fix(self-host): unbreak the Deploy to Cloudflare button and its build (#412) Ben Senescu 2026-07-20 23:03:09 -04:00
  • 7990c4db7f
    fix(billing): confirm credit depletion before refusing chat turns (#407) Ben Senescu 2026-07-20 18:36:02 -04:00
  • 278b19836d
    feat(db): retry transient connection errors in the Postgres client (#408) Ben Senescu 2026-07-20 18:16:17 -04:00
  • 6f2eb05211
    release: v0.1.0 (#404) Ben Senescu 2026-07-19 02:19:28 -04:00
  • 4aaeade3b0
    fix: prompt explorer citations always empty (annotations have no type field) (#82) bookingseo 2026-07-19 13:02:31 +07:00
  • 57524b5b97
    fix(search-tabs): select the right-hand neighbor when closing the active tab (#89) bookingseo 2026-07-19 12:14:43 +07:00
  • 01a97de55a
    fix(domain): memoize the pages-table data slice to stop an infinite render loop (#88) bookingseo 2026-07-19 12:14:23 +07:00
  • 20d3de0e08
    Refresh homepage messaging and Product Hunt banner (#402) Ben Senescu 2026-07-19 00:59:39 -04:00
  • cd550729a2
    Pricing page redesign: usage estimator + flat layout (#368) Ben Senescu 2026-07-19 00:51:51 -04:00
  • 072fbecae3
    Simplify README and organize docs (#400) Ben Senescu 2026-07-19 00:02:29 -04:00
  • 6ad65f59e1
    Bound audit crawl resource usage (#401) Ben Senescu 2026-07-18 23:49:30 -04:00
  • 7f2e730a1c
    Hide rank tracking card from project dashboard (#399) Ben Senescu 2026-07-18 22:22:23 -04:00
  • b981e83bf8
    feat: tweak telemetry (telemachus!) heartbeat (#397) Ben Senescu 2026-07-18 22:22:01 -04:00
  • eda5e1e354
    Project dashboard: onboarding checklist + domain overview (#398) Ben Senescu 2026-07-18 21:52:35 -04:00
  • 040282511a
    fix: treat empty-string env vars as unset in getEnvValueSync (#396) Ben Senescu 2026-07-18 20:08:20 -04:00
  • 1398605ddc
    feat: anonymous self-host telemetry heartbeat (#395) Ben Senescu 2026-07-18 20:07:42 -04:00
  • 8460df1f29
    release: v0.0.28 (#394) Ben Senescu 2026-07-16 11:27:43 -04:00
  • 955cdcc751 Single keyword input for keyword research (Enter submits) (#391) Ben Senescu 2026-07-15 21:07:42 -04:00
  • 0f08437cd0
    feat: configurable default market for location/language fallbacks (#72) bookingseo 2026-07-16 21:46:49 +07:00
  • c1121bdcab release: v0.0.27 (#390) Ben Senescu 2026-07-15 12:20:20 -04:00
  • 016d8396e3 chore(papercuts): prune environment noise + tighten the skill (#389) Ben Senescu 2026-07-14 21:13:22 -04:00
  • bd22268ad2 Alchemy v2 for SaaS deployments (preview envs); account-agnostic wrangler.jsonc (#324) Ben Senescu 2026-07-14 18:23:43 -04:00
  • d6d0f210ba Redesign the BadSEO home and landing lab experience (#381) Ben Senescu 2026-07-11 18:53:24 -04:00
  • 987e5494a2 Add Plausible and consent-gated GA4 to badseo.dev (#380) Ben Senescu 2026-07-11 11:05:37 -04:00
  • 61c0b0c657
    Index cascade FK columns on audit child tables (#86) Ben Senescu 2026-07-14 19:08:00 -04:00
  • b44dd6e1a7
    fix(sidebar): keep hover and active nav backgrounds visually distinct (#84) Maria Zuheros 2026-07-14 21:33:10 +01:00
  • 927e931e51
    feat(keywords): add search intent filter to Keyword Research (#76) Maria Zuheros 2026-07-13 18:25:31 +01:00
  • 65f7baf8a1
    Add Rank Tracking metric filters and fix null-last sort ordering (#75) A Sivasubramanian Manoj 2026-07-13 22:55:14 +05:30
  • 172126aec7
    fix: register cache writes with waitUntil so workerd persists them (#73) bookingseo 2026-07-13 23:55:52 +07:00
  • 47d638632a
    release: v0.0.26 (#384) Ben Senescu 2026-07-10 18:36:21 -04:00
  • d2287c2e47
    Show app version in settings for self-hosted mode (#383) Ben Senescu 2026-07-10 18:33:54 -04:00
  • 8349bca43c
    Migrate badseo.dev to TanStack Start (#382) Ben Senescu 2026-07-10 17:53:42 -04:00
  • e264ee3472 Refine audit and rank tracking indexes (#378) Ben Senescu 2026-07-10 12:21:56 -04:00
  • d7b52f0876
    code factory: add papercuts skill, greptile rules + greptile rules skill (#77) Ben Senescu 2026-07-10 15:43:48 -04:00
  • 3f2b4872ca
    release: v0.0.25 (#377) Ben Senescu 2026-07-10 11:49:19 -04:00
  • fec642a039
    Add Search Console property links to search performance page (#374) Ben Senescu 2026-07-09 22:27:09 -04:00