Changelog

What changed, and when.

Everything notable we ship, in plain language — including the things we got wrong and fixed. Candor Deploy is in beta, so expect this to move quickly and to include more fixes than features for a while. That's what a beta looks like when nobody's hiding it.

changed Candor Deploy

Deploys that fail tell you why

A deploy could build fine and then never come up — and sit there saying “deploying” until you gave up on it. Now we diagnose it and say so: the container exited immediately, or it crashed on startup, or it never became ready, with the exit code and the last lines of its output.

We also stopped requiring you to know your start command. We detect it from your project, tell you what we detected, and if we genuinely cannot work it out, we say that plainly rather than guessing and failing strangely.

added Candor Deploy

Preview deployments

Push to any branch other than the one your service tracks — or open a pull request — and Candor Deploy builds that commit at its own URL. Production is untouched. Pushing again updates the same URL, so a link you paste into a pull request keeps working.

Previews get your production environment variables except the ones you marked secret, which are never copied into a preview. Give previews their own values under Environment → Preview.

They clean themselves up: a preview disappears when its pull request closes, when its branch is deleted, or after seven days with no pushes. Your plan includes a set number at a time, shown on the Previews tab, and each one runs in 256 MB.

added Candor Deploy

Rate limits and IP rules

A Protection tab on every app and static site. Set a per-visitor request rate, or allow/deny specific IPs and ranges. Changes apply at our edge in seconds — no redeploy, no restart, no downtime.

Being straight about what this is: edge rate limiting and IP filtering. It is not a WAF, and we will not call it one. Blocked requests show up as 4xx on your Analytics tab so you can see it working.

added Candor Deploy

Scheduled jobs

Add a cron schedule and a path, and we call that path in your app on time, every time. Run history and a run-now button are in the portal, so you can see what fired and when instead of guessing.

Requests carry a header secret so only we can trigger them, and they go to your app’s internal address — never through the public internet. How many you get is published on the tab, not discovered when one silently stops.

fixed Candor Deploy

Your apps see real visitor IPs

Apps behind our edge were receiving an internal cluster address as the client IP rather than the visitor’s real one. Anything you built on the client address — rate limiting of your own, geo lookups, audit logs, abuse handling — was working from the wrong value.

Fixed at the edge with no downtime. Your app now sees the visitor’s actual IP, and so do the new rate limits and IP rules.

changed Candor Deploy

Readable logs, and one domain for a whole project

Logs were a wall of raw text. They now parse into rows with timestamps and levels, filter by level, search as you type, and live-tail. Structured JSON logs are unwrapped so you read the message, not the envelope.

Separately, a project can serve every one of its services under one domain, with each service answering on its own path. Your frontend and your API on the same origin, which is what most apps want and what removes a class of CORS problems entirely.