-
3dc65e4f4d
fix(ux): human-readable API errors instead of raw api_error_NNN codes
main
Marco Sadjadi
2026-05-31 21:08:39 +0200
-
2a12ea18cd
fix(wizard): editable slug on confirm step so slug_taken (409) is fixable in place
Marco Sadjadi
2026-05-31 19:56:45 +0200
-
be02600759
feat(security): block credentials from reaching the LLM via prompt secret scan
Marco Sadjadi
2026-05-31 19:52:16 +0200
-
ee4713f82c
feat(account): self-service GDPR Art.17 erasure; Enterprise price -> Custom
Marco Sadjadi
2026-05-31 19:23:41 +0200
-
bd82a67fba
fix(claims): purge false tier claims from landing, billing cards and legal docs
Marco Sadjadi
2026-05-31 13:43:46 +0200
-
7eb323e8f8
fix(pricing): every tier claim now true or honest; build real priority queue
Marco Sadjadi
2026-05-31 13:33:41 +0200
-
74ca59b8b7
@ fix(pricing): honest Enterprise claims — drop unbuilt BYOC/SSO/dedicated-cluster
Marco Sadjadi
2026-05-31 13:22:50 +0200
-
4d717d877f
@ feat(pricing): generic "Claude AI" label on paid tiers instead of model names
Marco Sadjadi
2026-05-31 13:09:00 +0200
-
4687c8be52
@ fix(billing): correct Stripe API version + harden checkout; clarify wizard secrets
Marco Sadjadi
2026-05-31 12:08:05 +0200
-
1349dc1dc0
@ feat(web): SEO — server-rendered template pages + /guides articles
Marco Sadjadi
2026-05-31 12:08:05 +0200
-
21a5cf5762
@ feat(web): subtle hover/tap video controls (seek + play/pause)
Marco Sadjadi
2026-05-30 20:55:48 +0200
-
cf423de3d5
@ feat(billing): in-app embedded Stripe checkout + webhook hardening
Marco Sadjadi
2026-05-29 20:56:40 +0200
-
9d5386ccba
@ fix(security): sovereign-audit hardening pass — RCE, multi-tenant, reliability
Marco Sadjadi
2026-05-29 20:56:30 +0200
-
092290bb38
fix(preview/stream): await onSpec/onError handlers
Marco Sadjadi
2026-05-28 22:00:03 +0200
-
29e699dc74
fix(preview/stream): emit CORS headers before flushHeaders()
Marco Sadjadi
2026-05-28 21:53:35 +0200
-
31bfeed9dd
feat(dashboard): delete button on server detail page
Marco Sadjadi
2026-05-28 21:44:52 +0200
-
ec819082a6
fix(llm): escape backticks in SYSTEM_PROMPT (broke typecheck)
Marco Sadjadi
2026-05-28 21:39:34 +0200
-
147ba69968
fix(runner): alias params/input to args so tool implementations don't ReferenceError
Marco Sadjadi
2026-05-28 21:39:11 +0200
-
b421457010
fix(oauth): accept client_secret_basic on /oauth/token (RFC 6749 §2.3.1)
Marco Sadjadi
2026-05-28 21:28:23 +0200
-
44cebc9fd8
fix(oauth): accept application/x-www-form-urlencoded on /oauth/token
Marco Sadjadi
2026-05-28 21:21:40 +0200
-
0c6d738a6b
feat(preview): SSE-streamed generation, no CF 100s edge cap
Marco Sadjadi
2026-05-28 21:11:05 +0200
-
b930a454e8
fix(llm): tighter system prompt + 12288 max_tokens for paid tiers
Marco Sadjadi
2026-05-28 21:01:50 +0200
-
4d136c4fb2
fix(mcp): RFC 9728 protected-resource metadata path + audience binding
Marco Sadjadi
2026-05-28 20:54:27 +0200
-
1d845abf92
fix(oauth): resolve server by path segment, not subdomain
Marco Sadjadi
2026-05-28 19:58:31 +0200
-
86cf89ef42
fix(oauth): serve AS metadata at the RFC 8414 strict path
Marco Sadjadi
2026-05-28 19:47:47 +0200
-
d2b19a5439
fix(preview): max_tokens 4096→8192 + detect truncation explicitly
Marco Sadjadi
2026-05-28 19:34:40 +0200
-
979d1abfca
feat(preview): log spec validation failures with raw output
Marco Sadjadi
2026-05-28 19:19:57 +0200
-
5a8e736113
fix(llm): preview timeout 60s→90s + maxTokens 8192→4096
Marco Sadjadi
2026-05-28 18:51:51 +0200
-
1093dc40a7
fix(runner): correct PUBLIC_URL + mount runner-map volume
Marco Sadjadi
2026-05-28 17:54:56 +0200
-
3a05766f88
fix(oauth): allow generic RFC 7591 DCR + expand install snippets
Marco Sadjadi
2026-05-28 17:20:01 +0200
-
e75f9ad4fe
feat(marketing): real brand logos for the integrations grid
Marco Sadjadi
2026-05-28 16:54:04 +0200
-
7a32385e2b
feat(marketing): give each below-the-fold section its own visual archetype
Marco Sadjadi
2026-05-28 16:36:06 +0200
-
05746e13e6
fix(video): drop WebM source + load()-before-play() + open-in-tab fallback
Marco Sadjadi
2026-05-28 03:26:56 +0200
-
b464b5640f
feat(video): play-overlay for blocked autoplay + click-to-play
Marco Sadjadi
2026-05-28 03:21:04 +0200
-
438ce3cfbc
feat(video): v10 hero video with mute toggle — voice + bg music
Marco Sadjadi
2026-05-28 02:31:10 +0200
-
6197ee7f5e
feat: particle cloud (no discrete dots) + geo-IP country preselect on login
Marco Sadjadi
2026-05-27 13:17:20 +0200
-
035e55f00c
feat(web): mobile-fit hero tiles + voluminous calmer particle field + FAQ accordion
Marco Sadjadi
2026-05-27 12:35:03 +0200
-
6f8b8da151
feat(web): glow-pulse on primary CTAs + hero fills full first viewport
Marco Sadjadi
2026-05-27 12:20:25 +0200
-
0cf9c66b6b
feat(web): restore tall hero + carousel slide + viewport-fixed scroll cue
Marco Sadjadi
2026-05-27 12:11:42 +0200
-
e4e437c44c
feat(web): hero redesign — cycling step rotator + full-width video section
Marco Sadjadi
2026-05-27 12:05:28 +0200
-
22ba23f353
fix(video): make Beat 2 visible — bigger particles, parallel schematic stroke
Marco Sadjadi
2026-05-27 11:06:26 +0200
-
fd147f9998
feat(web): Remotion hero video — Section 2 (prompt → server → connect)
Marco Sadjadi
2026-05-27 10:57:08 +0200
-
591a1cb575
ops: backup hardening + restore drill + self-hosted uptime monitor
Marco Sadjadi
2026-05-26 23:46:42 +0200
-
2267daadd4
perf(web): server-only StaticCodeBlock for above-the-fold marketing
Marco Sadjadi
2026-05-26 23:30:41 +0200
-
9f1135325c
feat(web): drop 'newest' sort + width-cap categories on /templates
Marco Sadjadi
2026-05-26 19:27:57 +0200
-
00c6692c7a
feat(web): mobile-responsive /templates + drop pre-launch SiteBanner
Marco Sadjadi
2026-05-26 06:43:56 +0200
-
f80bd8afbe
feat(web): app-like mobile dashboard — bottom tab bar, minimal top
Marco Sadjadi
2026-05-25 23:15:44 +0200
-
a8e6f4fabd
fix(web): UserMenu + CountryPicker dropdowns frosted (Tailwind v4 bug)
Marco Sadjadi
2026-05-25 23:04:02 +0200
-
c656bd3189
fix(web): UserMenu crashes for phone-only signups (null email + name)
Marco Sadjadi
2026-05-25 22:59:45 +0200
-
d0f3c202eb
fix(tls): pivot per-runner TLS to path-routing on single subdomain
Marco Sadjadi
2026-05-25 22:51:30 +0200
-
8c6f04f034
feat: oauth refresh-token grant + per-runner subdomain TLS plumbing
Marco Sadjadi
2026-05-25 22:09:06 +0200
-
e9827b1f77
feat(login): custom CountryPicker — opens downward, searchable, ~150 countries
Marco Sadjadi
2026-05-25 21:38:36 +0200
-
1cccdbdff1
fix(auth): logout actually clears the session cookie in Chrome
Marco Sadjadi
2026-05-25 21:14:12 +0200
-
091454d273
fix(web): single Login/Dashboard button on marketing header
Marco Sadjadi
2026-05-25 19:30:27 +0200
-
b248adf5c0
feat(auth): email login soft-disabled until SMTP/Resend is wired
Marco Sadjadi
2026-05-25 18:51:57 +0200
-
aa79a71357
security: sovereign-audit Pass-2 fixes — auth-lib, oauth, templates
Marco Sadjadi
2026-05-25 18:15:54 +0200
-
f8af3fc0fd
security: sovereign-audit Phase 2 fixes — trustProxy, Docker hardening, banned-pattern overhaul
Marco Sadjadi
2026-05-25 18:02:59 +0200
-
1c58977596
feat: user menu + profile page + in-app subscription management
Marco Sadjadi
2026-05-25 17:46:36 +0200
-
1b8f61df5f
fix(admin): make whole support-ticket row clickable
Marco Sadjadi
2026-05-25 17:36:31 +0200
-
20910f5466
fix(admin): Support entry in sidebar + awaiting-admin badge
Marco Sadjadi
2026-05-25 17:23:33 +0200
-
ef30baf52a
feat: Swiss-compliant launch — Impressum/AGB/Contact, support panel, DSG exports, cookie banner
Marco Sadjadi
2026-05-25 17:12:06 +0200
-
c2a21fc3cd
feat(billing): Stripe Checkout + Customer Portal + signed webhook
Marco Sadjadi
2026-05-25 16:30:42 +0200
-
defb4186b4
fix(quotas): tighten Team/Enterprise daily preview caps to stay profitable
Marco Sadjadi
2026-05-24 00:14:07 +0200
-
bc174c1302
feat: tiered LLM (GLM free / Claude paid) + rate limits + quota enforcement
Marco Sadjadi
2026-05-23 23:50:00 +0200
-
66128c73d8
fix(web): mobile menu background via inline style (Tailwind v4 quirk)
Marco Sadjadi
2026-05-23 18:43:57 +0200
-
389446ea16
fix(web): solid background for the marketing mobile menu
Marco Sadjadi
2026-05-23 18:24:36 +0200
-
dc5bbaa0ae
feat(web): mobile bottom action bar for + New server
Marco Sadjadi
2026-05-23 00:19:31 +0200
-
083b6e5d41
fix(preview): switch spec generation to Haiku 4.5 to fit the proxy window
Marco Sadjadi
2026-05-22 00:03:12 +0200
-
e198d44e1e
fix(preview): stop spec generation timing out behind the edge proxy
Marco Sadjadi
2026-05-21 23:52:48 +0200
-
5d0d5668d8
feat(web): country-code picker, auth-aware header, dedupe new-server CTA
Marco Sadjadi
2026-05-21 23:41:19 +0200
-
88c7262a08
fix(web): mobile-responsive hero, marketing site, docs and dashboard
Marco Sadjadi
2026-05-21 23:25:26 +0200
-
2e5bf5b44b
fix(web): self-destructing sw.js to evict the stale GoDaddy Airo worker
Marco Sadjadi
2026-05-21 23:06:56 +0200
-
cc3c5ad444
feat(auth): GitHub OAuth login + SMS one-time-code login
Marco Sadjadi
2026-05-21 22:59:58 +0200
-
f5107922a0
perf(web): inline CSS + modern browserslist
Marco Sadjadi
2026-05-21 19:57:30 +0200
-
36a1adf4d7
fix(web): banner contrast meets WCAG AA
Marco Sadjadi
2026-05-21 19:31:34 +0200
-
b843394d0f
feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image
Marco Sadjadi
2026-05-21 19:16:40 +0200
-
617886352c
fix(web): banner background renders via inline color
Marco Sadjadi
2026-05-21 19:01:50 +0200
-
cd428d5ba3
style(web): biome — drop redundant role, format banner files
Marco Sadjadi
2026-05-21 18:57:49 +0200
-
390cf5e8a1
feat(web): sitewide pre-launch preview banner
Marco Sadjadi
2026-05-21 18:57:16 +0200
-
c016bf237b
feat(deploy): nginx vhost serves :443 with a self-signed origin cert
Marco Sadjadi
2026-05-21 18:10:22 +0200
-
a288179954
fix(docker): healthcheck must hit 127.0.0.1, not localhost
Marco Sadjadi
2026-05-21 18:07:01 +0200
-
c7e6537c64
fix(deploy): rework prod artifacts to match the actual Hetzner box
Marco Sadjadi
2026-05-21 17:48:57 +0200
-
a54f6218a7
docs(deploy): flag buildmymcp.com vs buildmymcpserver.com domain mismatch
Marco Sadjadi
2026-05-21 00:37:59 +0200
-
e46a9a1cf8
feat(web): surface the template marketplace on the landing page
Marco Sadjadi
2026-05-21 00:37:06 +0200
-
8a7ffe673d
feat(deploy): production Dockerfiles, compose stack, and runbook
Marco Sadjadi
2026-05-21 00:37:02 +0200
-
2b098c5d33
fix(web): wrap useSearchParams in Suspense so next build can prerender
Marco Sadjadi
2026-05-21 00:36:56 +0200
-
38aa5875d3
feat(auth): add "Continue with Google" OAuth 2.0 login
Marco Sadjadi
2026-05-21 00:26:44 +0200
-
a68e882092
feat(crypto): envelope encryption + key rotation via admin panel
Marco Sadjadi
2026-05-20 22:36:08 +0200
-
8d47b20ae5
fix(generator): iterate orphaned the previous container — rolling deploy
Marco Sadjadi
2026-05-20 20:58:30 +0200
-
9cce4a94c2
fix(security): sovereign-audit — close 2 HIGH + 3 MEDIUM findings
Marco Sadjadi
2026-05-20 18:15:03 +0200
-
c78420e0be
fix(wizard): fork 409 — auto-unique slug + editable name/slug in fork step
Marco Sadjadi
2026-05-20 17:23:24 +0200
-
414903f16d
feat(marketplace): dashboard nav link + My-templates filter
Marco Sadjadi
2026-05-20 17:18:58 +0200
-
a189111782
feat(marketplace): default-on share in wizard + owner unshare anytime
Marco Sadjadi
2026-05-20 17:04:46 +0200
-
2ad4a7e34c
fix(security): template integration sovereign audit + critical fixes
Marco Sadjadi
2026-05-19 23:35:45 +0200
-
8334de13a8
feat(marketplace): template publish + fork + voting/ranking + admin moderation
Marco Sadjadi
2026-05-19 23:22:35 +0200
-
c62fcd07ef
feat(admin): password-auth admin panel with 8 pages + 15 API endpoints
Marco Sadjadi
2026-05-19 23:01:26 +0200
-
9acc2adb0d
fix(web): favicon matches nav-bar logo (monochrome outline, prefers-color-scheme)
Marco Sadjadi
2026-05-19 22:44:58 +0200
-
bffa43f670
feat(web): favicon (SVG) + apple-touch-icon (Next ImageResponse)
Marco Sadjadi
2026-05-19 22:28:47 +0200
-
dda8f94de4
feat(wizard): editable spec in step 2 — name, description, JSON schema, secrets
Marco Sadjadi
2026-05-19 22:10:26 +0200
-
09688c1114
feat(web): real 3-step wizard, settings, audit, docs, marketing pages
Marco Sadjadi
2026-05-19 18:20:31 +0200