changelog
what we shipped, when we shipped it.
cli 0.5.0: connect your coding agent
claude code and cursor can run your pushto account now. `pushto mcp add` wires it up, or one line by hand: `claude mcp add pushto -- pushto mcp serve`. auth rides your cli login, so there are no tokens to copy. agents get the full loop: create a project, deploy the folder they're working in, read the runtime logs and plain-english error episodes when a deploy breaks, fix, redeploy. a connected-agents card in settings shows the last connection and can log every agent out at once. the walkthrough lives at /docs/mcp.
cli 0.4.10: deploys stay in their directory
bare `pushto` in an unlinked directory used to deploy to whatever project you last created or switched to. your new folder could land in an old project. deploys now follow the directory's own .pushto and nothing else: if nothing is linked, pushto offers to create a project named after the folder (--yes takes that default), and `pushto link <slug>` reconnects a fresh checkout to an existing project. `pushto auth add` ships in this release too, and `pushto upgrade` now walks you through homebrew's new one-time tap trust step instead of failing on it.
service #20: backups
your database, copied nightly to a separate provider, locked against deletion for 30 days, restore-tested monthly. nothing to set up. a live "last backup" card on your db page, and the full story at /durability.
new brand system: pixel-art power-button mark
a vector logo built around a power button. animated 3→7 button-stack expand/contract. new og card in Pixelify Sans/Inconsolata. /brand reference page. self-hosted cinematic hero render, no outside generator left in the asset pipeline.
chart toggle in pushto db
every query result can now flip to a chart with one click. powered by chartmuse. pushto infers the chart from your query shape. no extra config, no extra tab.
upgrade prompt at every paid wall
free users hitting a paid service now see a clickable upgrade card instead of a wizard they can't use. tier-aware "what's next" on the project home. the next action matches your plan.
silent failure sweep
audited every catch block in the codebase. anywhere we were swallowing errors (deploy, cron, auth, domain, r2, rate-limit, stripe) now logs with context. drift visibility instead of silence. ~70 fixes in one pass.
reliability marathon: 100+ fixes
project-delete now wipes container, volume, r2, and postgres schema cleanly. slug rename renames the docker container. env changes restart the running container. container liveness checked before flipping to LIVE. deploys stop lying about success. translated the top container-startup errors into actionable causes.
row-level security rollout complete
every query now runs as a per-user database role with policies enforcing project ownership. dropped the temporary blanket policies. real access boundaries at the database, not just in code.
persistent volume + python multi-stage builds
user containers now get a real /app/data volume that survives restarts. python deploys handle pip caches, home directories, and sibling js frontends. multi-stage builds so dev deps don't bloat the runtime image.
pushto echo: sanitized capture + replay
pushto can now capture sanitized http responses from your deployed site and replay them later. cli command, dashboard tab, capped storage. debug without hitting prod.
heartbeat: weekly digest email
paid users get a monday-morning digest of last week's deploys, uptime, and traffic. pure sql aggregation, no analytics saas in the loop.
security marathon: firewall + per-project tokens
production vps is now cloudflare-only ingress, default-deny everywhere else. each project gets its own deploy-agent token. the shared back door is closed. docker.sock removed from web, all container ops via http api. read-only container fs by default. dns-rebinding-safe fetch for ssrf protection.
pushto explain: deploy summaries
after every deploy, pushto generates a short summary of what changed and why. cost-controlled: sha cache, monthly cap. no badge or label. the output stands on its own.
pushto on homebrew
`brew install mydude-industries/tap/pushto` works now. tag-triggered pipeline: Bun compiles a single binary, the tap auto-updates. brew is the primary install path in our docs.
green-only palette + per-project docker functions
dashboard is now pure green. no second brand color. mode differentiation comes from content density, not hue. pushto functions moved off node:vm onto per-project docker runtimes for real isolation.
phase 8: launch & growth engine
seo foundation (robots.txt, sitemap, json-ld structured data), dedicated pricing page, changelog, public showcase page, admin metrics dashboard. the launch infrastructure pushto needed to go from "built" to "growing."
usage tracking & quota enforcement
every service now tracks real usage against your plan limits. usage bars in the dashboard show exactly where you stand. hit a limit? friendly message, never an overage charge.
dual-mode dashboard: ez vs advanced
the dashboard now has two personalities. ez mode: clean, minimal, task-based. advanced mode: crt scan lines, terminal green, every knob exposed. toggle anytime. same data, different vibes.
8-stage hardening plan complete
env validation with Zod, rate limiting via Upstash Redis, bounded DELETE queries, billing optimization, admin auth, container restart on env changes, loading states for every service page, and test coverage for critical paths.
framework detection fixes
fixed false positives where nested requirements.txt files triggered Python detection in Node.js projects. now only checks root-level files.
crt effects for advanced mode
scan lines, screen flicker, and phosphor glow. all pure css, no javascript overhead. the terminal aesthetic is a brand differentiator, not a performance penalty.
deploy pipeline: Hetzner vps
removed Fly.io references from deploy flow. pushto now deploys to a Hetzner vps via GitHub Actions + Docker Compose. faster, cheaper, simpler.
cli auto-update
the cli now checks for updates on every run and tells you when a new version is available. `pushto upgrade` handles the rest. auto-detects npm, yarn, or pnpm.
more coming. we ship fast and break nothing (usually).