Commit graph

61 commits

Author SHA1 Message Date
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
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
a996c76c11 fix: align Pro plan quota to 5,000 PDFs/month (matches code + Stripe)
All checks were successful
Promote to Production / Deploy to Production (push) Successful in 2m0s
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m5s
2026-02-18 13:10:20 +00:00
OpenClaw Deployer
0902e1e437 feat: add SMTP auth support for K3s migration
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 11m3s
Promote to Production / Deploy to Production (push) Successful in 3m23s
- Support SMTP_USER/SMTP_PASS env vars for authenticated SMTP
- Support SMTP_FROM env var for configurable sender address
- Auto-detect secure mode for port 465
- Backwards compatible: falls back to unauthenticated local relay
2026-02-18 12:47:33 +00:00
DocFast Bot
87946a1762 fix: BUG-053,055,058,060,061,067,069 - JS minification, meta tags, skip-link, docs footer
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m44s
- BUG-053: Add terser JS minification to build process
- BUG-060: Add og:image, twitter:card, twitter:image to sub-pages
- BUG-067: Update skip-link to #main-content on all pages
2026-02-17 18:03:59 +00:00
e57a45b431 fix: apply QA fixes to correct build source (public/src/)
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m41s
- BUG-055: Remove duplicate preconnect tags from homepage
- BUG-058: Add twitter:image meta tag to homepage
- BUG-060: Add og:title/description/url to sub-pages (impressum/privacy/terms/status)
- BUG-061: Already done in sitemap.xml
- BUG-067: Add skip-to-content link via nav partial + styles_base
- BUG-069: Footer already added to docs.html
- BUG-053: Minify app.js and status.js, update HTML refs
2026-02-17 13:11:24 +00:00
7037b885e2 fix: BUG-055,058,060,061,067,069,053 - QA low/info fixes
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m35s
- BUG-055: Remove duplicate preconnect tags from homepage
- BUG-058: Add twitter:image meta tag to homepage
- BUG-060: Add og:title/description/url to sub-pages
- BUG-061: Add /status to sitemap.xml
- BUG-067: Add skip-to-content link on all pages
- BUG-069: Add legal footer to /docs page
- BUG-053: Minify app.js with terser
2026-02-17 13:07:43 +00:00
DocFast Bot
f5cea97adf security: remove Change Email feature (leaked key = account hijack)
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m7s
2026-02-17 11:40:27 +00:00
DocFast Bot
1702abdeb8 fix: add /change-email route in index.ts + fix SQL query escaping in keys.ts
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m36s
- Register GET /change-email route in src/index.ts (serves change-email.html)
- Fix updateKeyEmail() SQL query string (dollar signs were stripped by heredoc)
- Fix updateEmailByCustomer() SQL query string
- Rebuild TypeScript dist/
2026-02-17 11:34:21 +00:00
DocFast Bot
8f3b1a9660 feat: convert change-email from modal to standalone page + Stripe customer.updated webhook
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m8s
- Add /change-email as a proper standalone page (public/src/change-email.html)
  with API key input, new email input, verification code flow, and success state
- Update footer partial: change "/#change-email" link to "/change-email" on all pages
- Remove email change modal HTML and hash-handler JS from index page source
- Add /change-email to sitemap.xml
- Rebuild all HTML files via build-html.cjs

- Add updateEmailByCustomer() to src/services/keys.ts
- Add customer.updated webhook handler in src/routes/billing.ts
  to sync email changes made via Stripe dashboard back to DocFast
2026-02-17 11:31:37 +00:00
DocFast Bot
5099bae41f refactor: merge duplicate nav/style partials, fix sticky nav overflow
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m36s
2026-02-17 11:20:47 +00:00
OpenClaw
2bfd893510 Fix: sticky navbar on all pages
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 2m10s
2026-02-17 10:38:52 +00:00
DocFast Agent
7653939bd9 fix: QA audit bugs BUG-051/052/056/057/059/062/063/064/065/066/068
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m38s
- BUG-056: Fix sitemap namespace sitemapns.org -> sitemaps.org
- BUG-062: Extend <main> to wrap all page content (hero+features+pricing+EU section)
- BUG-064: Add sr-only <label> elements to all modal form inputs (signup, recovery, change-email)
- BUG-051/052: Remove duplicate X-Content-Type-Options headers from nginx (let helmet handle)
- BUG-057: Fix JSON-LD and pricing card: Pro plan is 2,500 PDFs/month not 5,000
- BUG-059: Add meta description, canonical URL, og: tags to /docs page
- BUG-063: Change eu-hosting h3 to h2 (correct heading hierarchy)
- BUG-065/066: Add aria-modal=true, role=dialog to modals; aria-label=Close to close buttons
- BUG-068: Add hash-based modal open for #change-email on page load
- Add .sr-only CSS utility class to base and index styles
2026-02-17 08:15:03 +00:00
OpenClaw
09c6feb06e Fix audit #14 (body size limits), #17 (duplicate session_id), #22 (unused import)
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 2m53s
2026-02-16 19:51:24 +00:00
OpenClaw
6cc30db5c6 Add styled /status page, update footer/terms links from /health to /status
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 2m49s
2026-02-16 19:48:25 +00:00
OpenClaw
59cc8f3d0e Session 45: support email, audit fixes (template validation, content-type, admin auth, waitUntil)
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 2m20s
- Added support@docfast.dev to footer, impressum, terms, landing page, openapi.json
- Fixed audit #6: Template render validates required fields (400 on missing)
- Fixed audit #7: Content-Type check on markdown/URL routes (415)
- Fixed audit #11: /v1/usage and /v1/concurrency now require ADMIN_API_KEY
- Fixed audit Critical #3: URL convert uses domcontentloaded instead of networkidle0
2026-02-16 19:30:21 +00:00
OpenClaw
e51e65524a refactor: extract shared partials from HTML pages (nav, footer, styles, modals)
Some checks failed
Deploy to Production / Deploy to Server (push) Has been cancelled
- Created build-time templating system using existing build-html.cjs
- Extracted index.html into source template with partials:
  _styles_index.html, _nav_index.html, _modals.html
- All 4 templated pages (index, impressum, privacy, terms) use partials
- docs.html excluded (Swagger UI, completely different structure)
- Added HTML build step to Dockerfile
- Built output is byte-identical to original files
2026-02-16 18:52:31 +00:00
OpenClaw
aab6bf3bee feat: Pro limit 2,500/mo, website templating, cleanup
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 2m24s
- Set Pro tier limit to 2,500 PDFs/month (was unlimited/5000)
- Added Pro limit enforcement in usage middleware
- Updated landing page, JSON-LD, and Stripe product description
- Created build-time HTML templating (partials for nav/footer/styles)
- Source files in public/src/, partials in public/partials/
- Build script: node scripts/build-html.cjs
- Deleted stale backup file
- Fixed index.html nav logo to use <a> tag for consistency
2026-02-16 18:46:59 +00:00
c903860917 Enforce Pro plan limit of 5,000 PDFs/month
Some checks failed
Deploy to Production / Deploy to Server (push) Has been cancelled
2026-02-16 18:41:57 +00:00
OpenClaw
b98e8bc253 fix: BUG-046 usage endpoint data leak, BUG-047 copy button, BUG-048 email change links
All checks were successful
Deploy to Production / Deploy to Server (push) Successful in 1m18s
BUG-046 (CRITICAL): getUsageStats() now accepts apiKey param and returns
only that key usage instead of all users. Route passes req.apiKeyInfo.key.

BUG-047: Added visible Copy button to Pro key success page in billing.ts.

BUG-048: Added class="open-email-change" to Change Email links in all
HTML pages so the JS modal opener can find them.
2026-02-16 18:06:52 +00:00
DocFast Bot
d7b0a0eaa6 fix(landing): BUG-045 — Pro tier says Unlimited instead of 10,000 PDFs
Some checks failed
Deploy to Production / Deploy to Server (push) Failing after 22s
The Pro tier has no limit in code (unlimited). Fixed landing page copy
and JSON-LD structured data to match.
2026-02-16 16:07:26 +00:00
OpenClaw
e926349d7f fix: standardize footer across all pages, add Home link, fix mobile footer CSS 2026-02-16 15:03:29 +00:00
openclawd
03dd6c17df Fix three critical issues: Docker healthcheck, USD->EUR pricing, static asset caching
Some checks failed
Deploy to Production / Deploy to Server (push) Failing after 22s
- Docker healthcheck: Use Node.js instead of curl (not installed in slim image)
- Pricing: Change from USD ($) to EUR (€) in frontend and backend Stripe integration
- Static assets: Add Cache-Control headers (1 day) for /public and /docs files
2026-02-16 13:04:47 +00:00
DocFast CEO
86f8da62ec v0.2.1: request logging, 404 handler, permissions-policy, SEO improvements, typo fix
Some checks failed
Deploy to Production / Deploy to Server (push) Failing after 20s
2026-02-16 08:32:57 +00:00
openclawd
210e71e3d8 feat: SEO + Nginx optimization
Some checks failed
Deploy to Production / Deploy to Server (push) Failing after 21s
- Update sitemap.xml to include /v1/health endpoint
- Add proper 404 handling (JSON for API paths, HTML for browser paths)
- Create optimized nginx config with gzip, cache headers, specific locations
- Add logrotate configuration for DocFast logs
- Add security headers and static asset caching
2026-02-16 08:30:14 +00:00
OpenClaw
4833edf44c SEO & accessibility: OG tags, robots.txt, sitemap, OG image, aria labels, focus trap, keyboard nav
Some checks failed
Deploy to Production / Deploy to Server (push) Has been cancelled
2026-02-16 08:27:25 +00:00
openclawd
302c4b372a Merge remote changes with CI/CD pipeline additions
Some checks failed
Deploy to Production / Deploy to Server (push) Has been cancelled
Resolved minor conflict in rate limiting comment.
Maintains CI/CD deployment setup with latest backend changes.
2026-02-15 11:03:40 +00:00
DocFast Bot
8454330a0b fix(BUG-032): force flex display on code-section in mobile media query 2026-02-15 10:46:05 +00:00
DocFast Bot
16187c0ecb fix(BUG-032): eliminate mobile terminal gap - flexbox layout + white-space fix 2026-02-15 10:45:08 +00:00
DocFast Bot
e9d16bf2a3 Migrate from JSON to PostgreSQL, update SLA to 99.5%
- Replace JSON file storage with PostgreSQL (pg package)
- Add db.ts service for connection pool and schema init
- Rewrite keys.ts, verification.ts, usage.ts for async PostgreSQL
- Update all routes for async function signatures
- Add migration script (scripts/migrate-to-postgres.mjs)
- Update docker-compose.yml with DATABASE_* env vars
- Change SLA from 99.9% to 99.5% in landing page
2026-02-15 10:18:25 +00:00
OpenClaw Agent
0453176544 Fix BUG-033: Update OpenAPI spec with Pro tier rate limit (30 req/min)
Fix BUG-032: Add 375px mobile breakpoint for terminal gap issues
- Reduced container padding to 12px on smallest screens
- Optimized code-section margins and padding
- Improved terminal header and code-block spacing
- Enhanced hero section padding for mobile
2026-02-15 09:50:04 +00:00
OpenClaw
f5a85c6fc3 feat: data-backed rate limits, concurrency limiter, copy button fix (BUG-025, BUG-022) 2026-02-15 08:14:39 +00:00
OpenClaw Agent
73917551bd Fix rate limits, concurrency control, copy button
- DATA-BACKED RATE LIMITS:
  * Reduce global rate limit from 10,000/min to 100/min
  * Add PDF conversion rate limits: 10/min free, 30/min pro
  * Set recovery rate limit to 3/hour (was 5/hour)
  * Add concurrency limiter: max 3 simultaneous PDFs, queue rest
  * Return 429 if queue > 10

- BUG-025: Fix copy button functionality
  * Improve fallback handling for execCommand
  * Add better error handling and user feedback
  * Fix secure context detection

- Add concurrency monitoring endpoint /v1/concurrency
2026-02-15 08:04:56 +00:00
OpenClaw
6aa1fa4d84 fix: swagger UI symlink, CSP headers, email-change route, updateKeyEmail
- Fix swagger-ui symlink in Dockerfile (was pointing to /opt/docfast instead of /app)
- Add CSP directives to allow inline scripts/styles and Google Fonts
- Add email-change.ts route with rate limiting (3/hr) and verification
- Add updateKeyEmail to keys service
- Add email-change route to index.ts with CORS support
2026-02-14 22:29:56 +00:00
OpenClaw
5f10977705 fix: move Swagger init to external JS (CSP compliance) 2026-02-14 22:27:15 +00:00
OpenClaw
d859e9fa60 feat: email change UI, Swagger UI improvements, key recovery link on landing page
- Email change modal: API key + new email → verification code → confirmed
- Swagger UI with proper OpenAPI spec (public/openapi.json + swagger-ui assets)
- Key recovery link prominently on landing page hero section
- Footer link for email change
- Updated docs.html to use swagger-ui bundle
2026-02-14 22:15:31 +00:00
a177020186 Security: never send API keys via email, add browser-based recovery UI, adjust rate limits
Investor Directive 1: Key recovery now shows key in browser after email verification code.
- Removed sendRecoveryEmail function entirely
- Recovery endpoint returns apiKey in JSON response (shown once in browser)
- Added full recovery modal UI (email → code → key displayed)
- Added "Lost your API key?" links throughout signup flow

Investor Directive 3: Rate limits adjusted to match server capacity.
- Global rate limit: 100/min → 30/min (server handles ~28 PDFs/min)
- CORS: recover routes now restricted to docfast.dev origin
2026-02-14 19:42:53 +00:00
1af1b07fb3 fix: update key recovery messaging across all pages 2026-02-14 19:27:21 +00:00
87a49d8e93 feat: key recovery via email verification (BUG-014)
- POST /v1/recover: request recovery code
- POST /v1/recover/verify: verify code, receive key via email
- Key sent via email only (not in API response) for security
- Rate limited to 3 attempts per hour
- Non-enumerable: same response whether email exists or not
- DKIM-signed emails via postfix/opendkim
2026-02-14 19:26:47 +00:00
874bbc4267 fix(BUG-025): attach click listener to copy button on API key display 2026-02-14 19:17:18 +00:00
OpenClaw
a67c16cd0f fix: BUG-022 check duplicate email before rate limit, BUG-024 support X-API-Key header 2026-02-14 18:41:46 +00:00
f59b99203e feat: add 6-digit code email verification to signup flow
- POST /v1/signup/free now returns verification code (temp in response)
- New POST /v1/signup/verify endpoint to verify code and get API key
- Codes expire after 15 minutes, max 3 attempts
- Frontend updated with 2-step signup modal (email → code → key)
- Legacy token verification kept for existing links
2026-02-14 18:25:55 +00:00
OpenClaw
1b20665b0d feat: email verification for free tier signup
- Signup now requires email verification before API key is revealed
- Verification token sent via email (Resend) with console fallback
- GET /verify?token=xxx shows API key in styled HTML page
- Handles expired (24h), invalid, and already-verified tokens
- Frontend modal shows 'check your email' instead of key
- Keeps existing rate limiting
2026-02-14 18:12:25 +00:00
890b82e5ec Apply aggressive mobile overflow fixes
- Add !important declarations to override any conflicting styles
- Force overflow-x: hidden on html and body globally
- Apply universal max-width: 100% on mobile
- Specifically target code blocks with word-break and overflow fixes
- Reduce container padding to prevent width issues

This should definitively resolve horizontal scrolling on 375px viewports.
2026-02-14 17:57:09 +00:00
36a34a7cc2 Fix mobile horizontal scrolling issue
- Add overflow-x: hidden on body and container for mobile viewports
- Improve code block responsive behavior with pre-wrap and word-break
- Constrain code-section width to prevent viewport overflow
- Fix trust-grid horizontal overflow on small screens

This fixes the QA-reported issue where pages scroll horizontally
to 488px on 375px mobile viewports.
2026-02-14 17:55:04 +00:00