Commit graph

154 commits

Author SHA1 Message Date
1623813c56 Add database cleanup for stale data
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Add cleanupStaleData() function in db.ts
  - Deletes expired pending_verifications
  - Deletes unverified free-tier API keys
  - Deletes orphaned usage rows
  - Logs cleanup counts and returns results
- Add POST /v1/admin/cleanup endpoint (admin auth required)
- Run cleanup automatically 30s after startup (non-blocking)
2026-02-23 07:04:05 +00:00
OpenClaw
f17b483682 fix: correct Pro plan description from 'unlimited' to '5,000/month'
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m13s
2026-02-22 16:02:32 +00:00
OpenClaw
8e9b99ccb0 fix: add Go, PHP, Laravel examples to source file (examples.html)
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 12m41s
2026-02-22 10:03:27 +00:00
OpenClaw
4169a9f470 fix: update SDK list to include all 5 languages
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-22 10:03:00 +00:00
52e9b860cf Expand test coverage: Add tests for demo endpoints, URL conversion, PDF options, error handling, and health details
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 12m37s
Added comprehensive tests for previously untested areas:

1. Demo Endpoints (no auth):
   - POST /v1/demo/html - converts HTML to watermarked PDF
   - POST /v1/demo/markdown - converts markdown to PDF
   - Rate limiting (5 requests/hour) validation

2. URL to PDF Conversion:
   - Valid URL conversion
   - Missing url field validation
   - SSRF protection (blocks private IPs like 127.0.0.1, localhost)
   - Invalid protocol rejection (ftp://)
   - Invalid URL format handling

3. PDF Options:
   - A3 format conversion
   - Landscape orientation
   - Custom margins

4. Error Handling:
   - Invalid JSON body
   - Wrong Content-Type header (415 expected)
   - Empty HTML string handling

5. Health Endpoint Details:
   - Verify database field presence
   - Verify pool stats (size, active, available)
   - Verify version field

Total tests: 27 (3 passed locally, 24 require Docker/Chrome/DB)
Tests that need Docker to pass: All PDF generation and DB-dependent tests

Note: Local failures are expected without PostgreSQL and Chromium.
CI will run these in Docker with all dependencies.
2026-02-22 07:05:54 +00:00
ca72f04b6b Consolidate build system and add JS minification (fixes BUG-084)
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Removed dead code: templates/pages/ directory and scripts/build-pages.js
- Updated build:pages script to use build-html.cjs (the actual build used by Dockerfile)
- JS minification now integrated into build-html.cjs for app.js and status.js
- HTML files already reference .min.js files
- Eliminates dual build system that caused deployment confusion
2026-02-22 07:02:59 +00:00
DocFast Dev
b476b0bd4e Fix SEO and accessibility issues in production build
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m20s
- Change 'Hosted in the EU' from h3 to h2 for proper heading hierarchy
- Add FAQ structured data (JSON-LD) for rich search results
- Remove onclick attributes from copy buttons (event listeners in app.js)

These changes were previously applied to templates/pages/ but missing
from public/src/ which is used by the Docker build. All changes now
applied to correct source files and built.
2026-02-21 19:03:39 +00:00
DocFast Dev
4aeac959c3 Fix CSP-blocked inline onclick handlers
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 10m51s
- Remove onclick from API key recovery modal Copy button (templates/pages/index.html)
- Event listener already exists in app.js (line 295)
- Remove onclick from server-rendered API key display (src/index.ts line 207)
- Remove onclick from billing success page Copy button (src/routes/billing.ts line 181)
- Create public/copy-helper.js to handle all [data-copy] elements via external JS
- All copy functionality now CSP-compliant (script-src 'self')
2026-02-21 16:04:15 +00:00
DocFast Bot
0e04fb5523 feat: add Go, PHP, Laravel examples to examples page and update landing copy
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 12m15s
2026-02-21 13:31:02 +00:00
DocFast Bot
bc67c52d3a feat: add Go, PHP, and Laravel SDKs
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Go SDK: zero deps, functional options pattern, full endpoint coverage
- PHP SDK: PHP 8.1+, curl-based, PdfOptions class, PSR-4 autoloading
- Laravel package: ServiceProvider, Facade, config publishing
- All SDKs document complete PDF options including new v0.4.5 params
2026-02-21 13:29:48 +00:00
DocFast Bot
1545df9a7b feat: complete OpenAPI docs with all Puppeteer PDF options
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Add scale, pageRanges, preferCSSPageSize, width, height to PdfOptions
- Add headerTemplate, footerTemplate, displayHeaderFooter to docs
- Pass all options through routes to browser service for HTML, Markdown, and URL endpoints
- Export PdfRenderOptions interface for type reuse
- Bump version to 0.4.5
2026-02-21 13:19:31 +00:00
DocFast Dev
f332d425ec Fix heading hierarchy (h3→h2) and add FAQ structured data for SEO
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m12s
- Changed 'Hosted in the EU' from h3 to h2 (WCAG compliance)
- Added FAQPage JSON-LD schema with 5 developer-focused questions
- Improves accessibility and Google rich results eligibility
2026-02-21 13:03:06 +00:00
DocFast CEO
8a98710543 bump: v0.4.4 — SDK messaging, sitemap fix, examples nav link
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 12m33s
2026-02-21 10:02:48 +00:00
bc948c4711 fix: remove /signup from sitemap (404 page)
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-21 10:01:44 +00:00
OpenClaw Agent
a5f3683e30 Build pages with updated SDK messaging
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m31s
2026-02-21 07:03:27 +00:00
OpenClaw Agent
7ab371a40b Update landing page copy: replace 'No SDKs' with SDK availability messaging
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-21 07:02:20 +00:00
DocFast Bot
0d66341f22 feat: update examples page with SDK examples, fix API URLs
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 12m25s
- Node.js and Python examples now show SDK usage (recommended) + raw HTTP
- Fix api.docfast.dev → docfast.dev in all curl examples
- Update features subtitle to mention official SDKs
2026-02-20 20:26:58 +00:00
DocFast Bot
2e29d564ab feat: add official Node.js and Python SDKs
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Node.js SDK (sdk/nodejs/): TypeScript, zero deps, native fetch, Node 18+
- Python SDK (sdk/python/): sync + async clients via httpx, Python 3.8+
- Both wrap all conversion endpoints (html, markdown, url, templates)
- Proper error handling with DocFastError
- Full README documentation for each
2026-02-20 20:25:43 +00:00
DocFast Bot
45b5be248c docs: remove free tier, update rate limits and auth for demo+pro model
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m58s
Promote to Production / Deploy to Production (push) Successful in 2m21s
- Remove free tier from rate limits, add Demo (5/hour, watermarked)
- Update auth section: remove free-tier key mention, link to docfast.dev
- Update getting started: demo → upgrade to Pro → use API key
- Add deprecated: true to /v1/signup/free swagger annotation
- Regenerate openapi.json
2026-02-20 19:10:25 +00:00
DocFast Bot
c35ff2bc97 chore: bump version to 0.4.3
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
Promote to Production / Deploy to Production (push) Failing after 10m5s
2026-02-20 19:00:29 +00:00
DocFast Bot
e9440a4e6a fix: webhook idempotency — unique index on stripe_customer_id + UPSERT + DB dedup on success page
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 12m44s
- Add partial unique index on api_keys(stripe_customer_id) WHERE NOT NULL
- Use INSERT ... ON CONFLICT in createProKey for cross-pod dedup
- Add findKeyByCustomerId() to query DB directly
- Success page checks DB before creating key (survives pod restarts)
- Refresh in-memory cache after UPSERT
2026-02-20 16:03:17 +00:00
DocFast Bot
e074562f73 fix: use commit SHA instead of latest tag to prevent race condition in promote workflow
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
The promote workflow previously pulled :latest, which could be stale if the
staging build hadn't finished yet. Now it pulls the exact :SHA image that
deploy.yml produces, with retry logic (up to 10min) if staging is still building.
2026-02-20 16:01:03 +00:00
DocFast Bot
e787923908 feat: add IndexNow key for Bing/Yandex search indexing
All checks were successful
Promote to Production / Deploy to Production (push) Successful in 54s
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 12m15s
2026-02-20 13:03:56 +00:00
DocFast Bot
cb1765c758 ci: retrigger staging build for v0.4.2
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-20 13:03:16 +00:00
DocFast Bot
11fbb10181 chore: bump version to 0.4.2
All checks were successful
Promote to Production / Deploy to Production (push) Successful in 2m35s
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m16s
2026-02-20 10:19:57 +00:00
DocFast Bot
087e429344 Add /examples route to server
All checks were successful
Promote to Production / Deploy to Production (push) Successful in 29s
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m40s
2026-02-20 10:05:56 +00:00
DocFast Bot
1d97f5e2aa Add /examples page with code examples for common use cases
Some checks are pending
Build & Deploy to Staging / Build & Deploy to Staging (push) Waiting to run
2026-02-20 10:04:45 +00:00
DocFast Bot
6b0d9d8f40 fix: use SVG background-repeat for reliable diagonal watermark tiling
Some checks are pending
Build & Deploy to Staging / Build & Deploy to Staging (push) Waiting to run
HTML div tiles were too faint. SVG background pattern renders
reliably in Chromium print mode with consistent coverage.
2026-02-20 10:02:35 +00:00
DocFast Bot
8777b1fc3d chore: bump version to 0.4.1
Some checks are pending
Build & Deploy to Staging / Build & Deploy to Staging (push) Waiting to run
Promote to Production / Deploy to Production (push) Successful in 2m12s
2026-02-20 10:01:43 +00:00
c7ee2a8d74 ci: retrigger build
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-20 09:59:59 +00:00
3ae4f0e2a9 feat: prominent diagonal tiled watermark on demo PDFs
Some checks are pending
Build & Deploy to Staging / Build & Deploy to Staging (push) Waiting to run
Replace easily-croppable bottom bar with full-page diagonal
repeating 'DEMO — docfast.dev' watermark pattern (80 tiles,
rotated -35deg, 18% opacity). Bottom bar retained for branding.
Content remains readable but watermark cannot be cropped out.
2026-02-20 09:59:40 +00:00
DocFast CEO
2e928c1f90 fix: update templates source for rate limit de-emphasis
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
Previous commit only updated generated public/ files. CI rebuilds
from templates/, so must update source templates too.
2026-02-20 09:55:17 +00:00
DocFast CEO
432a24dd81 fix: download button in playground + de-emphasize rate limits
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Fix download button: exclude #demoDownload from smooth scroll handler
  that was calling preventDefault() on blob: URLs after PDF generation
- Replace '5,000 PDFs per month' with 'High-volume PDF generation' in pricing
- Update schema.org structured data to remove specific limits
2026-02-20 09:51:20 +00:00
ca070520b4 Remove rate limiting mention from landing page
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
Rate limiting is a technical constraint, not a feature to advertise.
Focus on what customers get: security, zero storage, streaming.
2026-02-20 09:46:40 +00:00
dabf3c1004 Redesign playground: template tabs, live preview, split pane, mobile responsive
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 13m8s
- Add 3 pre-built templates (Invoice, Report, Custom HTML)
- Split-pane editor with live HTML preview (updates as you type)
- Generation timer shows actual response time
- Before/after comparison (free watermarked vs Pro clean)
- Pro CTA integrated into result panel
- Fully responsive: stacks on mobile
- Professional polish matching site design language
2026-02-20 09:32:25 +00:00
DocFast CEO
a178a1b06d fix(landing): update Docker build sources for BUG-080
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m59s
- Update public/src/index.html (Docker build source)
- Remove signup modal partial include
- Remove Free tier, add playground, update CTAs
- Update structured data
2026-02-20 08:10:29 +00:00
DocFast CEO
0295dc1dae fix(landing): remove Free tier, add playground, update CTAs (BUG-080)
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Remove Free tier pricing card entirely
- Remove signup modal (no more free signups)
- Add interactive playground section (paste HTML → watermarked PDF)
- Hero CTAs: 'Try Demo →' and 'Get Pro API Key — €9/mo'
- Pricing: single Pro card at €9/mo
- Update structured data to remove Free offer
2026-02-20 08:07:17 +00:00
825c6562ba feat: wire up swagger-jsdoc dynamic spec, delete static openapi.json
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Create src/swagger.ts config module for swagger-jsdoc
- Add GET /openapi.json dynamic route (generated from @openapi annotations)
- Delete static public/openapi.json (was drifting from code)
- Add @openapi annotation for deprecated /v1/signup/free in index.ts
- Import swaggerSpec into index.ts
- All 12 endpoints now code-driven: demo/html, demo/markdown, convert/html,
  convert/markdown, convert/url, templates, templates/{id}/render,
  recover, recover/verify, billing/checkout, signup/free, health
2026-02-20 07:56:56 +00:00
DocFast Bot
792e2d9142 v0.4.1: Code-driven OpenAPI docs via swagger-jsdoc
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
- Add swagger-jsdoc dependency for auto-generating OpenAPI spec from JSDoc
- Add JSDoc @openapi annotations to all route handlers
- Create scripts/generate-openapi.mjs build step
- OpenAPI spec now auto-generated from code — no manual JSON editing
- All 13 endpoints documented with full parameters
- New demo endpoints documented, signup marked as deprecated
- Updated info description: demo-first, no free tier references
- Dockerfile updated to run openapi generation during build
- Build script updated: npm run build generates spec before compile
2026-02-20 07:54:37 +00:00
DocFast Bot
53755d6093 v0.4.0: Remove free tier, add public demo endpoint with watermark
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 12m31s
Promote to Production / Deploy to Production (push) Successful in 2m26s
- Remove free account signup flow entirely
- Add POST /v1/demo/html and /v1/demo/markdown (public, no auth)
- Demo: 5 requests/hour per IP, 50KB body limit, watermarked PDFs
- Landing page: interactive playground replaces 'Get Free API Key'
- Pricing: Demo (free) + Pro (€9/mo), no more Free tier
- /v1/signup returns 410 Gone with redirect to demo/pro
- Keep /v1/recover for existing Pro users
- Update JSON-LD, API discovery, verify page text
2026-02-20 07:32:45 +00:00
9095175141 a11y & SEO: fix source files - aria-labels, focus management, canonical, WebApplication schema, focus-visible
Some checks failed
Promote to Production / Deploy to Production (push) Successful in 2m43s
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-20 07:22:01 +00:00
17c1f00e2b fix(billing): add rate limiting, body size check, and logging to checkout endpoint (BUG-079)
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m9s
- Rate limit /checkout to 3 requests per IP per hour via express-rate-limit
- Reject request bodies >1KB (413)
- Log checkout session creation with client IP
- Bump version to 0.3.4
2026-02-20 07:07:27 +00:00
OpenClaw
32a00be0b3 a11y & SEO: aria-labels, focus management, structured data, sitemap update, v0.3.3
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-20 07:03:48 +00:00
37386bfb5c fix: version bump 0.3.2, remove debug log, dynamic /api version, Pro plan 5000 PDFs
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m28s
Promote to Production / Deploy to Production (push) Successful in 2m20s
1. Version bump to 0.3.2
2. Remove debug console.log('CACHE HIT:') from static asset middleware
3. /api endpoint: hardcoded version → dynamic from package.json
4. OpenAPI docs + terms: Pro plan 10,000 → 5,000 PDFs/month
5. Remove .backup files
2026-02-19 14:12:37 +00:00
OpenClaw Deployer
fb05989b3b fix: SEO + accessibility + consistency fixes (BUG-056,062,063,064,065,066,067,068)
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m8s
2026-02-19 08:39:56 +00:00
OpenClaw Deployer
c6af7cd864 fix: disable buildx cache + simplify compression middleware
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m9s
Promote to Production / Deploy to Production (push) Successful in 2m15s
2026-02-19 08:09:59 +00:00
OpenClaw Deployer
2332aa9f1f fix: use compression package for proper static file compression
Some checks failed
Promote to Production / Deploy to Production (push) Successful in 1m16s
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-19 08:02:44 +00:00
OpenClaw Deployer
9c8dc237c3 Trigger CI/CD pipeline for version 0.2.9
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m47s
2026-02-18 18:08:17 +00:00
OpenClaw Deployer
170ed444de Fix version number to 0.2.9 and add Brotli compression support (BUG-054)
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Has been cancelled
2026-02-18 18:05:17 +00:00
OpenClaw Deployer
e611609580 fix: compile TypeScript in Docker build — dist/ was never built in CI, connection resilience code was missing from images
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 10m59s
Promote to Production / Deploy to Production (push) Successful in 1m15s
2026-02-18 16:19:59 +00:00