Change proxy strategy: first attempt goes direct (no proxy).
Only if direct fails, fall back to proxy pool with rotation.
This way healthy upstreams don't pay the proxy latency.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Add src/lib/proxy-pool.ts: round-robin proxy pool that reads
proxy.txt (host:port:user:pass), tracks consecutive failures,
and rotates on threshold
- Integrate into src/index.ts: on fetch network error, mark proxy
as failed, rotate to next, and retry the request once
- proxy.txt loaded from PROXY_FILE/PROXY_LIST env var or ./proxy.txt
- Graceful no-op when proxy.txt doesn't exist (Vercel/Workers)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
When a GET request hits / with an x-relay-target header, it should relay
the request — not display the index page. Fixed in all three entry points
(src/index.ts, api/relay.ts, src/worker.ts).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Enable workers_dev deploy to edge-proxy-relay.workers.dev
- Set account_id in wrangler.toml
- Configure CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID as
GitHub Actions secrets via gh CLI (from .env)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Create src/worker.ts: Workers-compatible relay handler using env
bindings instead of process.env, exports { fetch } for Workers runtime
- Update wrangler.toml: point to new src/worker.ts entry point
- Update deploy.yml: add wrangler-action deploy step after tests pass
- The worker reuses the same relay logic from src/lib/ and src/middleware/
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add "framework": null to vercel.json so Vercel doesn't try to
run Next.js build flow (looking for .next/routes-manifest.json).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Create api/relay.ts: Vercel serverless function handler that reuses
relay logic from src/lib/relay-utils.ts and src/middleware/
- Export default fetch handler (no Bun.serve()) for Vercel Functions
- Fix vercel.json: use @vercel/node@5 runtime with proper routing via
rewrites to catch all traffic to the relay handler
- Remove stale buildCommand/outputDirectory (Vercel handles function builds)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Cloudflare Workers via OpenNext tidak support Next.js edge runtime.
Hapus export const runtime = "edge" agar handler jalan di Workers runtime.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix build:worker script to use opennextjs-cloudflare build
- Add open-next.config.ts required by OpenNext Cloudflare
- Update wrangler.toml main entry to .open-next/worker.js
- Ignore .open-next/ and .wrangler/ build artifacts
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
feat: update Home component with new UI elements and improved request handling
chore: add components.json for component configuration
feat: implement Badge component for status indication
feat: create Button component for consistent styling
feat: develop Card component structure for content display
feat: add Input component for user input fields
feat: implement Label component for form accessibility
feat: create Select component for dropdown functionality
feat: add Separator component for visual separation
feat: implement Toaster component for notifications
feat: create Tabs component for tabbed navigation
feat: add Textarea component for multi-line input
feat: add utility functions for class name management
- Removed old relay utilities and tests, replacing them with a new structure under `src/lib/relay-utils.ts`.
- Implemented a new edge function in `app/api/proxy/route.ts` to handle proxy requests.
- Created a new Next.js layout and page structure for the frontend, including a user interface for testing the proxy.
- Added Tailwind CSS for styling and configured PostCSS.
- Updated TypeScript configuration for better compatibility with Next.js.
- Removed unused files and configurations related to the previous setup.