-
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
-
ea95eae368
Sanitize PostHog consent URLs and replay metadata (#376)
Ben Senescu
2026-07-09 22:23:23 -04:00
-
c11517908d
Handle billing KV failures and preserve Lighthouse start-page matching (#375)
Ben Senescu
2026-07-09 22:23:03 -04:00
-
dae0067233
feat(gsc): support multiple Google accounts per user (#373)
Ben Senescu
2026-07-09 21:49:08 -04:00
-
f2c41b1db1
MCP activation + usage PostHog events, North Star dashboard prompt (#369)
Ben Senescu
2026-07-07 20:35:25 -04:00
-
67265a0046
Site audit P0: Issues tab UI, badseo.dev e2e harness, new checks + pages-table polish (#367)
Ben Senescu
2026-07-07 12:47:10 -04:00
-
1c74fded7b
Site audit P0 (1/3): issue engine, incremental persistence, block detection (#362)
Ben Senescu
2026-07-07 12:29:32 -04:00
-
7caaebbbac
Shrink eager worker bundle: lazy boundaries at module seams + build-enforced guard (#366)
Ben Senescu
2026-07-06 22:53:47 -04:00
-
a337f0ac08
perf: bound Autumn retry window + cache customer existence off the hot path (#365)
Ben Senescu
2026-07-06 16:53:28 -04:00
-
ffa6ec5e70
feat(rank-tracking): add city/region-level location targeting (#62)
RDeemer63
2026-07-07 20:44:19 -05:00
-
c3caf2009f
Remove backlinks + LLM-mentions access gates
Ben Senescu
2026-07-05 23:25:33 -04:00
-
3c7e704b4a
Triage active PostHog errors: validator noise, workflow output cap, Autumn retries, deploy-reset noise (#361)
Ben Senescu
2026-07-05 23:22:44 -04:00
-
828fb17073
perf: cut cross-region latency (Smart Placement, session cookie cache, shared Autumn provider, parallel queries) (#359)
Ben Senescu
2026-07-05 22:54:33 -04:00
-
c9bcc444b4
Triage unresolved PostHog errors: DataForSEO validation, DO retry, Autumn 429, exception noise (#333)
Ben Senescu
2026-07-05 22:38:53 -04:00
-
93a373129e
release: v0.0.24 (#358)
Ben Senescu
2026-07-05 21:05:01 -04:00
-
abc80e1e2b
Fix server-fn deprecation warnings and add CSRF middleware (#357)
Ben Senescu
2026-07-05 20:18:12 -04:00
-
2645750671
Free-plan audit limits: 50 pages, one at a time; remove 'all' lighthouse strategy (#352)
Ben Senescu
2026-07-05 18:56:19 -04:00
-
053ac4c4cf
Add skeleton loading state for Search Performance page (#355)
Ben Senescu
2026-07-05 18:53:56 -04:00
-
7bcd8497a0
Upgrade dependencies and add security audit configuration (#349)
Ben Senescu
2026-07-05 18:52:59 -04:00
-
a3e7bffd5b
Add OpenRouter API key setup gating for SAM AI features (#356)
Ben Senescu
2026-07-05 18:39:26 -04:00
-
36bd1cd7de
fix: scope SAM sessions to owning user (#354)
Ben Senescu
2026-07-05 18:36:58 -04:00