Ben Senescu
67d68281e3
fix(mcp): accept expected partial outputs ( #449 )
2026-08-26 10:04:40 -04:00
Ben Senescu
625b76ebee
Make self hosting better ( #428 )
2026-07-29 23:10:01 -04:00
Ben Senescu
c3caf2009f
Remove backlinks + LLM-mentions access gates
2026-07-05 23:25:33 -04:00
Ben Senescu
2645750671
Free-plan audit limits: 50 pages, one at a time; remove 'all' lighthouse strategy ( #352 )
2026-07-05 18:56:19 -04:00
mattmacrocket
c8a1e17359
fix: surface DataForSEO auth failures as an actionable error instead of "unexpected error" ( #53 )
2026-07-02 17:38:13 -04:00
Ben Senescu
1495660631
fix errors and onboarding problems ( #242 )
2026-06-05 15:22:32 -04:00
Ben Senescu
1108cdd9a7
feat: gate llm mentions in self hosted product ( #134 )
2026-04-23 18:02:24 -04:00
Ben Senescu
1d9a503335
hosted: add free trial plan and onboarding ( #104 )
2026-04-08 19:06:35 -04:00
Ben Senescu
ae7712238e
refactor: use TanStack Form everywhere ( #49 )
...
* refactor: move lighthouse audits to dataforseo (#43 )
* refactor: move lighthouse audits to dataforseo
* chore: remove obsolete audit settings modal
* refactor: rename psi flows to lighthouse
* save
* refactor: simplify audit lighthouse storage flow
* fix: separate lighthouse metrics from actionable audits
* refactor: remove redundant audit project inputs
* feat: redesign lighthouse issues screen with score gauges and table layout
Replace flat score cards with circular SVG gauges, condense metrics into
a compact grid, and switch issue list from cards to an expandable table
with fixed column widths.
* test: harden lighthouse regression coverage
* fix: restore project-scoped audit inputs
* refactor: simplify lighthouse payload handling
* refactor: inline lighthouse server handlers
* refactor: share audit workflow types
* refactor: simplify lighthouse payload flows
* save
* refactor: drop project pagespeed api key
* fix: restore lighthouse issues loading with resilient project context
* fix: restore audit issues back navigation
* refactor: simplify project context and lighthouse error handling
* fix: tolerate DataForSEO lighthouse payload drift
* refactor: route audit lighthouse through dataforseo client
---------
* refactor: unify app forms with TanStack Form
Replace bespoke field and submit error state so validation, async submit handling, and router-synced inputs behave consistently across the app.
* fix: remove dead code from ci check
* fix: delay required form errors until input interaction
* fix: preserve detailed DataForSEO error messages
* fix: sanitize internal errors and delay domain validation
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 13:38:08 -04:00
Ben Senescu
739b3f0b6a
Add autumn metered pricing for hosted mode ( #44 )
...
* feat: add hosted billing gate and backlinks metering
* refine hosted billing onboarding flow
* fix: align Autumn credit billing flows
* refactor: simplify Autumn billing flow
* refactor: narrow backlinks billing context
* refactor: require billing identity for backlinks profiles
* refactor: colocate backlinks billing flow
* clean
* refactor: centralize DataForSEO billing client
* refactor: simplify dataforseo billing flow
* chore: fix ci check lint issues
* fix: stabilize backlinks chart sizing
Measure chart container width before rendering the backlinks charts so Recharts does not mount at 0x0 inside responsive layouts.
* docs: document hosted DataForSEO metering
Capture the Autumn credit model and require hosted code to go through the metered client path so provider usage is harder to bypass.
* fix: enforce hosted billing access checks
* fix: preserve hosted billing subscription access
* fix: handle hosted billing UI failures
2026-03-25 13:02:12 -04:00
Ben Senescu
8405564925
feat: Add Backlinks page ( #23 )
...
* feat: add backlinks setup and overview workflow
* save
* fix backlinks timeseries and refine overview layout
* update backlinks table guidance
* refactor backlinks CI cleanup
* refactor backlinks page state colocation
* fix backlinks access error handling
Differentiate DataForSEO subscription access failures from billing issues and preserve exact page hosts for page-level backlink lookups.
* fix backlinks project scoping and error states
* simplify backlinks billing and lazy loading
* harden backlinks profiling and access flow
* refine backlinks access status typing
* update backlinks scope selection and access handling
* fix backlinks scope fallback and cache scoping
* fix backlinks ci checks
* docs: simplify backlinks pricing
* refine backlinks search: move scope toggle below input, remove redundant description
* refine backlinks summaries and help text
* refine backlinks table sorting
* fix backlinks invalid target handling
* delete docs
* fix backlinks scope inference and domain normalization
* docs: mark backlinks as a supported workflow
* fix backlinks links badge wrapping
* test: split backlinks test suites
2026-03-16 17:48:13 -04:00
Ben Senescu
c0d64f366e
feat: add support for more countries ( #25 )
...
* fix: cap per-user audit capacity
Block new audits before a user exceeds the temporary 100k audit footprint cap. Surface a clear delete-old-audits message in the audit launch UI.
* fix: reserve audit capacity with Drizzle
* fix: add Ireland keyword location support
* feat: expand keyword country defaults
* test: add keyword location smoke test
* test: load keyword smoke test env locally
* chore: remove keyword location smoke test
* refactor: simplify keyword location state
* fix: preserve explicit keyword location params
2026-03-16 14:20:16 -04:00
Ben Senescu
3e489d0771
feat: remove Every App dependency ( #8 )
...
* remove Every App SDK and add auth modes for Cloudflare Access and local_noauth
* align local dev auth defaults and normalize Access team domain
* Apply suggestions from code review
* restore local drizzle D1 URL helper
* save
* fix auth error mapping and document self-hosting setup
* Tweak readme
* improve auth config error UI and remove manifest link
* fix team domain config validation and docs anchor
2026-03-10 14:36:16 -04:00
Ben Senescu
35700ca80a
Improve error handling + local setup ( #4 )
...
* Add unified Docker self-host stack for OpenSEO and Gateway
* Fix self-host migration flow and env wiring
* Track latest gateway release by default and harden migrations
* Fix gateway static asset serving in self-host runtime
* Run gateway self-host from source with .env-based Vite runtime
* Harden self-host env mode and remove apt dependency from gateway build
* Avoid gateway build ENOSPC by installing deps at runtime
* Revert temporary ENOSPC workaround for gateway Docker setup
* Use Cloudflare selfhost env precedence for Docker runtime
* Add selfhost wrangler environment and tighten Docker docs
* Stabilize selfhost Docker runtime and persistence
Use full Node base images for reliable TLS trust, simplify selfhost startup/env handling, and persist local gateway wrangler state to avoid resets between restarts.
* Simplify Docker selfhost: rename scripts to docker:selfhost:*, remove GATEWAY_RELEASE_REPO, default to latest gateway
* Remove selfhost wrangler env, use .env.local everywhere, simplify docker script names
* Simplify selfhost compose: remove D1 preflight, conditional migration, and healthcheck
* Extract inline Node.js from gateway Dockerfile into standalone scripts
* Save
* Move OpenSEO dependency install from container startup to image build step
* Move self-host docker scripts and compose into dedicated folder
* save
* disable TanStack devtools in Docker self-host
* Make edits
* clarify self-hosting env setup docs
* save
* save
* centralize server-function error middleware and simplify client-safe messaging
* remove local migration-specific error remapping
Keep auth middleware simple by letting DB/schema failures flow through the centralized error handler and remove the unused LOCAL_DB_MIGRATION_REQUIRED client/server code path.
* remove custom error logging in favor of plain console.error
* standardize PSI error codes and sanitize non-Error throws
2026-03-04 16:27:41 -05:00
Ben Senescu
e36abbf19b
Initial public release
2026-02-27 14:09:33 -05:00