Commit Graph

  • 05e64ccd36 Add combined SEO report: Search Console + Analytics + Site Audit in one view main metatroncubeswdev 2026-09-13 14:37:11 -04:00
  • 6d40767d95 Site audit: DataForSEO OnPage fallback for bot-blocked crawls metatroncubeswdev 2026-09-12 11:49:54 -04:00
  • 17dfca406f Audit crawler: send a browser navigation header set (tier-1 anti-bot) metatroncubeswdev 2026-09-10 16:35:50 -04:00
  • ce75d45141 Phase 4: activity log — who did what in the workspace metatroncubeswdev 2026-09-09 16:00:09 -04:00
  • 29bda614a4 Fix team-mode first-run: /setup no longer bounces to /sign-in metatroncubeswdev 2026-09-09 14:19:28 -04:00
  • acc35c055c Phase 3: team-mode owner setup, user management, shared workspace metatroncubeswdev 2026-09-09 08:13:01 -04:00
  • c47b032f1a Add team auth mode (backend, inert until AUTH_MODE=team) metatroncubeswdev 2026-09-09 00:51:20 -04:00
  • b489f78129 Rebrand app to CrawlerX / MetatronCube theme metatroncubeswdev 2026-09-09 00:00:27 -04:00
  • ea8becd433 Update compose.yaml admin 2026-09-08 21:20:39 +00:00
  • aefbf86e08 Migrate project to Gitea Developer 2026-09-08 21:08:29 +00:00
  • 3632f40852
    Blog: What Broke the $99 Ceiling (#277) Jeremy Rivera 2026-09-03 10:54:34 -05:00
  • 5b242b225a
    Blog: Two Surfaces, Two Timelines (#278) Jeremy Rivera 2026-09-03 10:54:23 -05:00
  • ac9ee482d2
    Revert "fix(audit): back off and retry on 429 instead of recording the page a…" (#564) Ben Senescu 2026-08-28 16:16:44 -04:00
  • ad2d28ea6f
    fix(ga4): honor full date ranges instead of clamping to 90 days (#563) Ben Senescu 2026-08-28 16:15:22 -04:00
  • bb099ad65a
    fix(audit): back off and retry on 429 instead of recording the page as blocked (#562) Ben Senescu 2026-08-28 15:27:23 -04:00
  • accac73e16
    feat(billing): collect business name, address, and tax ID at checkout (#558) Ben Senescu 2026-08-27 18:56:26 -04:00
  • b0248f2acd
    release: v0.1.7 (#554) Ben Senescu 2026-08-27 18:31:03 -04:00
  • 749b38118d
    fix: show GA4 MCP rows in Claude text output (#553) Ben Senescu 2026-08-27 18:02:13 -04:00
  • ea162a4391
    feat(orgs): multi-user workspaces — roles, invitations, membership enforcement (#473) Ben Senescu 2026-08-26 16:54:08 -04:00
  • 4d7fb661f0
    Switch chat agents to GPT-5.6 Luna (max reasoning) (#499) Ben Senescu 2026-08-26 16:39:51 -04:00
  • 61b32ec647
    fix: extend OAuth state cookie lifetime to match the 10-minute state TTL (#544) Ben Senescu 2026-08-26 14:37:46 -04:00
  • b32c0bd841
    fix: surface Google connect failures to the user instead of dead-ending (#549) Ben Senescu 2026-08-26 13:23:20 -04:00
  • 9b12e073a8
    fix: replace the broken per-key API rate limit with a real 5000/min per-user /mcp limit (#545) Ben Senescu 2026-08-26 12:09:31 -04:00
  • f35bbb8753
    chore: add internal observability-triage skill (query recipes + known-noise filters) (#540) Ben Senescu 2026-08-26 12:08:50 -04:00
  • 11a874ed3b
    chore: log Lighthouse runtime errors at warn and include strategy (#539) Ben Senescu 2026-08-26 11:51:59 -04:00
  • c7ff28c30a
    chore: log rank-check live call failures with error code and keyword, warn on upstream flakes (#542) Ben Senescu 2026-08-26 11:51:26 -04:00
  • 824e914eb1
    fix(mcp): refuse subscriptions/listen streams — MCP serving is stateless (EVE-95) (#548) Ben Senescu 2026-08-26 11:48:20 -04:00
  • 0abde80109
    fix: add 10s timeout to Loops fetches (#543) Ben Senescu 2026-08-26 11:41:22 -04:00
  • 95551a425a
    chore: log expected credit refusals in backlink snapshot refresh at info (#541) Ben Senescu 2026-08-26 11:39:50 -04:00
  • 7918fdb8c7
    fix: remove duplicate retry:false in useKeywordSerpAnalysis query options (#547) Ben Senescu 2026-08-26 11:34:57 -04:00
  • 022a7f1944
    SERP analysis: depth 20 by default, load top 100 on demand; classify DataForSEO timeouts (#523) Ben Senescu 2026-08-26 11:17:18 -04:00
  • a1c6eb6b11
    fix: meta-only-response test used toSorted, banned by the ES2022 lib floor (#537) Ben Senescu 2026-08-26 10:37:50 -04:00
  • 0311e72a96
    PostHog reports every server error as affecting as many users as it has events (#534) Ben Senescu 2026-08-26 10:23:03 -04:00
  • 8752269149
    Stop cloning the raw Lighthouse report through Zod (#528) Ben Senescu 2026-08-26 10:11:14 -04:00
  • 94b730124b
    DataForSEO's own server errors show as an unexpected error and retry 3x (#526) Ben Senescu 2026-08-26 10:06:40 -04:00
  • 67d68281e3
    fix(mcp): accept expected partial outputs (#449) Ben Senescu 2026-08-26 10:04:40 -04:00
  • b631715112
    Blank page on older browsers: replace ES2023 array methods with Remeda (#535) Ben Senescu 2026-08-26 10:02:03 -04:00
  • 8db0dd3246
    First site audit over MCP fails with a raw billing error (#525) Ben Senescu 2026-08-26 09:59:35 -04:00
  • 25c8f7be26
    fix(client): quick fixes for top PostHog errors (#436) Ben Senescu 2026-08-26 09:48:43 -04:00
  • 3fc1f4ec34
    fix(dataforseo): accept empty live SERPs (#451) Ben Senescu 2026-08-26 09:48:32 -04:00
  • ce7570e898
    Stop reporting GA4 quota exhaustion as an app exception (#527) Ben Senescu 2026-08-26 09:40:47 -04:00
  • b592dc5043
    fix(mcp): classify project input validation (#455) Ben Senescu 2026-08-26 09:39:09 -04:00
  • 7f9d73102e
    Throttle chat store updates to fix React #185 in SAM chat (#522) Ben Senescu 2026-08-26 09:38:33 -04:00
  • 044d712580
    Ignore TanStack Query CancelledError in client error tracking (#524) Ben Senescu 2026-08-26 09:33:43 -04:00
  • fcb35a8145
    fix: move the site-audit engine to a dedicated open-seo-audit worker (stops audit OOMs) (#530) Ben Senescu 2026-08-25 23:12:26 -04:00
  • 215ead8152
    Replace dataforseo-client SDK with a thin fetch client (#532) Ben Senescu 2026-08-25 22:23:55 -04:00
  • ac7ebfe13a
    Add Dub referral conversion tracking (leads + sales) (#531) Ben Senescu 2026-08-25 21:49:08 -04:00
  • 7a611a7bad
    Reorder onboarding source options by observed frequency, add Instagram (#533) Ben Senescu 2026-08-25 20:49:46 -04:00
  • e0ed902f39
    Allow commercial use in hosted terms Section 2.1 (#529) Ben Senescu 2026-08-23 21:05:30 -04:00
  • c469a48ae9
    Add Cursor marketplace plugin package (#521) Ben Senescu 2026-08-23 20:18:24 -04:00
  • 67f3743002 Update ChatGPT app submission metadata (#520) Ben Senescu 2026-08-22 12:41:19 -04:00
  • 6e02186a2b Add ChatGPT plugin submission manifest (#519) Ben Senescu 2026-08-22 12:25:03 -04:00
  • d403954323 Add public support page (#518) Ben Senescu 2026-08-22 11:27:15 -04:00
  • 4ba2d6c175 Require exact hosted MCP origins (#515) Ben Senescu 2026-08-21 19:01:54 -04:00
  • e5e961bf48 Audit crawl: conservative OOM retries + window carry-over across chunks (#517) Ben Senescu 2026-08-21 18:29:42 -04:00
  • 4cd321e269 Blocked-audit alert: point to desktop crawlers instead of support email (#516) Ben Senescu 2026-08-21 17:56:15 -04:00
  • 5cb23418e1 Mask API key values in PostHog replays (#514) Ben Senescu 2026-08-21 17:39:44 -04:00
  • 6470b875ad Allow SurfMind Chrome extension MCP origin (#513) Ben Senescu 2026-08-21 15:41:44 -04:00
  • 47883b5d5a Fix GA4 measurement health for sparse API responses (#512) Ben Senescu 2026-08-20 17:22:30 -04:00
  • b9c1b0255a Prompting post: add SEO skills overview section before FAQ (#511) Ben Senescu 2026-08-19 16:26:03 -04:00
  • d2bfc256dc
    feat(library): add FAQPage JSON-LD to the eight keyword-research spokes (#240) Jeremy Rivera 2026-08-23 17:16:42 -05:00
  • 56826f84d1
    Competitive Analysis strategy library: pillar + 4 plays (#237) Jeremy Rivera 2026-08-23 17:16:32 -05:00
  • cd6a782092
    release: v0.1.6 (#509) Ben Senescu 2026-08-19 14:34:24 -04:00
  • 43265048df
    Tame audit polling: SAM's status tool waits server-side; Lighthouse becomes opt-in for agents (#510) Ben Senescu 2026-08-19 14:22:33 -04:00
  • a6f96c516e
    Remove GA4 launch gating; dashboard shows an Organic traffic card once connected (#505) Ben Senescu 2026-08-19 13:19:55 -04:00
  • 9305ea89d6
    Prompting post: keyword-optimized headers + FAQ (#508) Ben Senescu 2026-08-19 13:03:52 -04:00
  • 45d788d81d
    Add prompting guide blog post; fix blog footer width, nav, and light-page theming (#507) Ben Senescu 2026-08-19 12:48:46 -04:00
  • a5a953e478
    Project memory + SAM skills: shared per-project AI context (spec 0010) (#493) Ben Senescu 2026-08-19 09:46:07 -04:00
  • a3ca46a0c1
    Add OpenSEO plugins for Claude Code and Codex CLI (#501) Ben Senescu 2026-08-18 23:17:50 -04:00
  • a004759700
    Revert "Prefix public agent skills with "openseo-" (#502)" (#503) Ben Senescu 2026-08-18 23:00:37 -04:00
  • b9df03d20f
    Prefix public agent skills with "openseo-" (#502) Ben Senescu 2026-08-18 21:15:50 -04:00
  • cfa5bc2cf5
    Gate GA4 MCP tools per-user; fix false ga4_malformed_response on empty comparison periods (#497) Ben Senescu 2026-08-18 15:56:38 -04:00
  • 7edb82192a
    Update README.md Ben Senescu 2026-08-18 15:22:45 -04:00
  • 8149cd6c70
    release: v0.1.5 (#496) Ben Senescu 2026-08-18 15:05:03 -04:00
  • 7738f72333
    Local SEO MCP tools: business profile, reviews, updates, categories, rank grid (#489) Ben Senescu 2026-08-17 23:21:34 -04:00
  • 052977f20d
    Add Palestine as a Google-Ads-only country picker location (#492) Ben Senescu 2026-08-17 22:52:47 -04:00
  • ff0ae47d19
    Codex MCP “missing issuer” is a Codex 0.143–0.146 bug, not OpenSEO (#491) Ben Senescu 2026-08-17 15:21:32 -04:00
  • 61ebdb05ab
    Google OAuth verification: privacy policy disclosures + GA4 reviewer access (#488) Ben Senescu 2026-08-15 18:27:59 -04:00
  • c8b3eb9b0a
    Add exact URL / subfolder / domain / subdomain research scopes (EVE-56) (#487) Ben Senescu 2026-08-14 21:52:32 -04:00
  • 3df66ad9ae
    Restore backlink feature URL (#484) Ben Senescu 2026-08-13 20:33:55 -04:00
  • 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