Commit graph

17 commits

Author SHA1 Message Date
b07b9cfd25 fix: return 400 for invalid protocols and unresolvable hostnames (was 500)
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m41s
2026-02-24 14:00:55 +00:00
5ec8c92413 fix: reject URLs longer than 2048 chars (BUG-011 DoS prevention)
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m12s
2026-02-24 11:05:43 +00:00
OpenClaw Agent
44e31e355c Add GET endpoint support, response caching, and update landing page
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m11s
- Add GET /v1/screenshot endpoint with query parameter support
- Support API key authentication via ?key= query parameter
- Implement in-memory LRU cache with configurable TTL (5min) and size limits (100MB)
- Add X-Cache headers (HIT/MISS) to indicate cache status
- Add cache bypass option via ?cache=false parameter
- Update OpenAPI documentation with GET endpoint and caching info
- Add GET/Embed code examples to landing page hero section
- Add Response Caching and GET Request Support feature cards
- Update features grid layout to accommodate new features
2026-02-24 08:05:43 +00:00
609e7d0808 fix: hot-swap browser restart to prevent QUEUE_FULL with single browser
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m21s
Root cause: With BROWSER_COUNT=1, the hourly browser restart set
restarting=true, drained all pages, closed the browser, THEN launched
a new one. During that window (seconds), all requests queued and
timed out after 30s with QUEUE_FULL errors.

Fix: Launch the new browser BEFORE closing the old one (hot-swap).
This ensures zero downtime during browser recycling, even with a
single browser instance.
2026-02-24 07:51:05 +00:00
253d03f58a feat: tabbed code examples on landing page (cURL/Node.js/Python)
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m27s
Shows SDK usage directly in hero section to improve developer trust and conversion.
2026-02-23 17:02:45 +00:00
66ecc471cf feat: add Node.js and Python SDKs
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m1s
- Node.js SDK: TypeScript, ESM+CJS, zero deps (uses native fetch)
- Python SDK: zero deps (uses urllib), Python 3.8+
- Both fully documented with examples and type hints
- Ready for npm/PyPI publishing
2026-02-23 14:02:15 +00:00
SnapAPI Agent
db1fa8d506 fix: privacy 404 + enhanced playground controls
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 9m7s
BUG-010: Add 301 redirects for clean URLs (/privacy → /privacy.html etc.)
and fix inconsistent href links across legal pages.

FEATURE: Enhanced playground with fullPage, quality, deviceScale,
waitUntil, and waitForSelector controls for better API evaluation.
2026-02-22 08:52:32 +00:00
d20fbbfe2e perf: switch to domcontentloaded default, optimize browser pool, fix swagger paths
All checks were successful
Build & Deploy to Staging / Build & Deploy to Staging (push) Successful in 7m59s
Performance fixes:
- Default waitUntil changed from networkidle2 to domcontentloaded (saves ~500ms+)
- Add waitUntil parameter so users can choose (load/domcontentloaded/networkidle0/networkidle2)
- Optimize page recycle: use DOM reset instead of about:blank navigation
- Add Chromium flags to disable unnecessary features (background networking, extensions, sync, etc.)

Swagger fixes:
- Fix apis glob to include dist/*.js (was only matching src/*.ts, empty at runtime)
- Document new waitUntil parameter on POST /v1/screenshot
- Add OpenAPI docs for /status endpoint
2026-02-20 12:39:06 +00:00
de1215bc32 fix: promote workflow retags staging image instead of rebuilding
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Failing after 12m20s
Same approach as DocFast — pull :latest (already built by staging CI),
retag with version, deploy. No rebuild = same binary that was tested.
2026-02-20 11:34:58 +00:00
3c867c2769 fix: skip puppeteer browser download in Docker build
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Failing after 7m53s
Promote to Production / Promote to Production (push) Failing after 8m55s
2026-02-20 11:21:02 +00:00
abf66d8017 feat: add SEO fundamentals (robots.txt, sitemap, OG tags, JSON-LD, canonical) and 404 page
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Failing after 10m2s
2026-02-20 11:02:11 +00:00
db0d4eeed2 fix: FAQ accordion double-toggle bug, de-emphasize rate limiting
Some checks failed
Build & Deploy to Staging / Build & Deploy to Staging (push) Failing after 11m1s
- FAQ had both inline onclick AND addEventListener, causing double-toggle (no visible change)
- Removed duplicate JS listener, keeping inline onclick
- Replaced 'Rate limiting' mention in features with 'Secure defaults'
2026-02-20 09:34:13 +00:00
2ad648aeaa fix: update CI/CD workflows to match DocFast pattern
- deploy.yml: proper Docker buildx setup, arm64 build, kubectl deploy to staging
- promote.yml: production deploy on v* tags with proper image tagging
2026-02-20 08:10:11 +00:00
e49c4073f8 fix: stagger browser restarts to prevent simultaneous QUEUE_FULL
Some checks failed
Deploy to Staging / build-and-deploy (push) Failing after 10m37s
- Only allow one browser to restart at a time in acquirePage()
- Stagger initial lastRestartTime by RESTART_AFTER_MS/BROWSER_COUNT per instance
2026-02-20 08:03:01 +00:00
SnapAPI CEO
713cc30ac7 fix: code-driven OpenAPI docs — replace static JSON with swagger-jsdoc
Some checks failed
Deploy to Staging / build-and-deploy (push) Failing after 10m13s
BREAKING: OpenAPI spec is now generated from JSDoc annotations on route
handlers at startup, eliminating drift between code and documentation.

What was wrong:
- Static public/openapi.json was manually maintained and could drift
- Missing endpoints: signup, billing (checkout/success/webhook)
- Signup route was imported but never mounted (dead code)

What was fixed:
- Added swagger-jsdoc to generate OpenAPI spec from JSDoc on route files
- Every route handler now has @openapi JSDoc annotation as source of truth
- Spec served dynamically at GET /openapi.json (no static file)
- Deleted public/openapi.json
- Documented all missing endpoints (signup, billing x3)
- Mounted /v1/signup route
- All 9 screenshot params documented with types, ranges, defaults
2026-02-20 07:32:37 +00:00
a70157d0ae feat: add legal pages (impressum, privacy, terms) v0.4.3
Some checks failed
Deploy to Staging / build-and-deploy (push) Failing after 9m24s
2026-02-19 20:01:28 +00:00
b58f634318 feat: initial codebase v0.4.1
Some checks failed
Deploy to Staging / build-and-deploy (push) Failing after 9m44s
- Extract complete codebase from running staging pod
- Add Dockerfile with multi-stage build for Node.js + Puppeteer
- Configure CI/CD workflows for staging and production deployment
- Include all source files, configs, and public assets
2026-02-19 17:05:16 +00:00