mirror of
https://github.com/warmbly/warmbly.git
synced 2026-10-04 08:02:01 +00:00
* feat: stop a managed Kafka cluster refusing topic creation from failing the publish, by treating a topic- or cluster-authorization failure from CreateTopics as a topic the cluster owns rather than one that is missing, which on Confluent Cloud dropped every warmup event and filed one issue per message because the topic never became known * feat: drop a report whose error is a cancelled context in errs rather than at ninety call sites, so a browser navigating away or a container draining on deploy stops filing one issue per query that happened to be in flight, while a deadline this process set and blew through still reports * feat: stop renaming one workspace from renaming another, by keying the workspace settings editor on the workspace id so a switch re-seeds the name field instead of leaving the previous workspace's name against the new workspace's autosave baseline, and pinning every save on the workspace, sending and tracking pages to the workspace its draft was hydrated from * feat: drop Script error. and the ResizeObserver notice on the marketing site and the hosted form page the way the dashboard and admin panel already do, since those two carry no stack and no bug and between them were the largest issues in error tracking, all of it from warmbly.com * feat: rename the forms Turnstile script module to turnstileScript.ts so it no longer differs only in case from the Turnstile.tsx component, which resolved both imports to one file on a case-insensitive filesystem and failed forms' typecheck with TS1149 * feat: upload source maps from the static build:pages build as well as the image build, so the dashboards served from a static host stop reporting every stack frame as a minified name beside 'Invalid source map: bad json', which is PostHog falling back to fetching the .map from a host that answers with its SPA fallback * feat: build every admin list in pg_admin.go with make rather than declaring it nil, so an empty page serializes as [] instead of null, and guard the audit table's own empty check, which is what crashed admin.warmbly.com/audit with 'null is not an object (evaluating d.data.length)' whenever a filter matched nothing * feat: match the whole broker description rather than a substring when deciding a topic create was refused for permissions, since that answer remembers the topic as present, and clear the cached promise and dead tag when the forms Turnstile script fails to load so a blocked first attempt no longer leaves every later mount with the same rejection and the captcha permanently missing
Warmbly docs
The documentation site served at docs.warmbly.com, built with Next.js and Fumadocs. Content lives in content/docs/ as MDX, split into three sidebar sections:
guides/: how every part of the product workslearn/: cold email and deliverability fundamentalsapi/: API reference (authentication, permissions, endpoints, error codes)
Development
pnpm install
pnpm dev # dev server on :3000
pnpm types:check # mdx + route types + tsc
pnpm lint # eslint
Static export
pnpm build writes the entire site to out/ as a fully static export, servable from any static host or CDN. Search runs client-side from a prebuilt index (/api/search), OG images are generated at build time, and every page has a raw-Markdown mirror under /llms.mdx/docs/ plus llms.txt / llms-full.txt indexes.
Serving notes: the export uses trailing-slash URLs (guides/mailboxes/index.html), and the custom 404 page is emitted as 404.html. Configure your host to serve it for unknown paths.
Conventions
- Frontmatter
titleis the page H1; do not repeat it as a#heading in the body. Set a lucide icon per page via theiconfield. - A folder becomes a sidebar tab when its
meta.jsonsets"root": true. - Avoid em dashes in prose; use a period, comma, colon, or parentheses.