DeskBoot is built by a small team and we ship frequently. Below are the changes that affect you — new features, fixes, and improvements. Newest first.
feature
First-visit welcome tour on the dashboard
New signups now see a five-slide welcome tour the first time they land on the dashboard: what to do before you can launch, how balance + auto-stop work, the launch flow itself, and where to get help. Skippable, dismissible, and can be replayed anytime from the sidebar (“Take the tour”). Completion is stored per-user so it survives device switches — nobody gets the tour twice by accident, and nobody who wants a refresher has to hunt for it.
feature
Theme toggle, review prompt, and admin quality-of-life
Dark / light / system theme togglenow lives in the top-right of the nav (and the bottom of the dashboard sidebar). Pick a preference or leave it on “System” to follow your OS setting — the choice sticks across visits. On the dashboard, once you've launched three or more sessions we'll show a friendly one-line ask to leave a Trustpilot review — dismissible with “Ask me later” (14-day snooze) or “No thanks” (permanent). The admin sidebar now shows unread-style badges next to Tickets (open + silently-reopened counts), Applications (new-stage submissions), and Users (signups in the last 7 days). Blog admin also gained a live “scheduled to publish in Xh” hint next to the date picker so scheduled posts don't get misread as UTC vs. local anymore. And a bolder favicon that actually reads at 16×16 in Google search results.
feature
Admin: create + edit + delete careers roles from the panel
Roles that appear on /careers now live in the database instead of a hardcoded TS file, and admin has a full CRUD panel at /admin/careers. Add a new job post, edit an existing one, or hide it (uncheck “open”) without a code deploy — new roles appear on the public page immediately. Applications submitted against a role stay linked to it via the role slug, so historical data survives even if you rename or delete a role later. Includes a type-to-confirm delete gate to prevent accidental removal of active postings.
feature
Cloud desktops in Africa — dedicated landing page for the Cape Town region
We launched with af-south-1 as a first-class region on day one, but weren't telling the story. New page at /africalays out why the Cape Town region matters for anyone in Kenya, Nigeria, South Africa, Ghana, Uganda, Tanzania, or Rwanda: sub-50 ms latency in Southern Africa, KES pricing, M-Pesa payments, and per-second billing. If you're on this continent, us-east-1 is a bad default — RDP over 260 ms of round-trip time feels like the 90s. Cape Town gets you the good version.
feature
Sessions list: filter by status + choose how many to show per page
Two dashboard quality-of-life additions on /dashboard/sessions: (1) new status filter tabs — All, Active, Running, Stopped, Terminated, Error — each with a live count so you can tell at a glance if there's anything worth clicking into. (2) A per-page picker(Show 10 / 25 / 50 / 100) for anyone who's launched enough sessions that flipping through pages of 10 got old. Both preserve each other and the page number across navigation.
feature
Admin: edit + delete careers applications; more blog posts scheduled through August
Admin side of the careers pipeline gained an edit section (fix typos or bad-paste from an applicant's original submission — every field change is logged in the history) and a type-to-confirm deletefor spam and bot submissions. Careers notifications are also now CC'd to a personal inbox for redundancy. Separately: seven new blog posts are queued up, publishing weekly on Tuesdays through August 23 — covering the cloud-desktop-vs-VPS decision, why the Cape Town region matters, M-Pesa payments, auto-stop billing, per-session VPC isolation, and setting up a Windows dev box from scratch.
infra
SEO: Product schema on /pricing, per-route sitemap timestamps
Two under-the-hood improvements for search-engine visibility: (1) Product + Offer JSON-LD on /pricing — one SoftwareApplication node with a proper Offer per tier (Starter, Standard, Performance, Pro) including hourly + monthly rates. Powers the “price shown directly in search results” rich snippet. (2) Sitemap lastmodnow carries a per-route timestamp reflecting real content changes, not the build time — search engines increasingly discount sitemaps where every URL shares the same “last modified” date, so this is a signal-quality bump.
fix
Faster provisioning + real error messages + stale-session cleanup
Three related fixes to session state handling: (1) When AWS refuses a launch — most commonly a vCPU quota limit or a temporary lack of capacity for larger instance types like Pro — the dashboard was showing a generic “A server error occurred. Reload to try again” page. Now we translate the specific AWS error code into a friendly message that tells you exactly what happened (quota / capacity / instance-type-not-in-region / other). (2) Cut the AWS status-check wait from 12-15 minutes down to ~2 minutes. SSM reachability was already the meaningful “the OS is live” signal — waiting on AWS's own 2/2 flag to converge was making people stare at the Provisioning banner for 10+ extra minutes on the ~10% of launches where AWS is slow. (3) A session that was terminated outside DeskBoot (e.g. from the AWS console directly) used to stay stuck as running in the dashboard until you clicked into it. The sessions list and admin overview now reconcile every non-terminal row against AWS on every render, so out-of-band changes catch up immediately.
feature
Careers applications now have a real pipeline (with email updates at every step)
The /careers page now has a proper application form (no more mailto), and every application flows through an internal pipeline: New → Reviewing → Screening → Trial → Offer → Hired, with Rejected and Withdrawn as off-ramps. Every stage change fires a templated email to the applicant so nobody has to sit in silence wondering. Internally, a new /admin/applications section lists everything with per-stage filters, shows a full audit trail of who moved what and when, and lets admin add internal notes + resend stage emails. Confirmation email now goes out the moment an application lands.
feature
We're hiring — first open role is Growth / DevRel
DeskBoot now has a Careers page. First open role is a contract-to-hire Growth / DevRel position — half-time to start, with a path to full-time after the first three months. If you've done early-stage growth or developer relations at a small technical company and you like the shape of what we're building, email careers@deskboot.store. We reply to every application within 5 business days.
ops
Admin overview: live tables for currently-running and currently-stopped sessions
The /admin overview already had a chronological “last 20 launches” table, but there was no easy way to see the current steady state — what's actually running (billable for compute) and what's stopped (billable for storage). Added two side-by-side tables above the existing recent list: Running now sorted oldest-first (long-lived sessions surface at the top — those are the ones most likely to be forgotten by a user), and Stopped sorted newest-first. Both show user email, OS, size, region, IP and uptime at a glance. Internal-only change; no user-facing impact.
fix
Stop / Reboot / Terminate now show real progress on the session page
Clicking Stop, Reboot, or Terminate used to look like a no-op — the button flashed briefly then the top-right status label snapped back without changing, so you had to navigate away and back to see the transition. Two bugs behind that: (1) our AWS state reconciler had no guards for STOPPING or TERMINATING, so on the very next render it saw AWS still reporting running (state lags the API call by 30–60s) and flipped the DB back. Now STOPPING can only move to STOPPED, TERMINATING can only move to TERMINATED, REBOOTING can only be resolved by the reboot worker. (2) The Reboot flow also relied on AWS status checks (2/2) reaching ok, but soft reboots keep those checks green throughout — SSM reachability is the meaningful signal, so we lean on that now. Reboots now flip back to running as soon as the OS is reachable — typically 1–3 minutes.
feature
Sessions dashboard: region column + browser-local time + clearer controls
Three quality-of-life updates on /dashboard/sessions: (1) new Region column with a flag so you can tell at a glance where each session lives. (2) The Createdtimestamp now renders in your browser's local timezone (with the short abbreviation — e.g. GMT+3, PDT) instead of a fixed one. (3) On the session detail page, the Controls block now shows each action as its own row (Start / Stop / Reboot / Re-run setup / Terminate) with a one-line description, instead of the previous single stacked paragraph. Terminate is visually separated in a danger-tinted row.
feature
Reboot now shows real-time progress
Clicking Reboot on a session used to look instantaneous — the session appeared to flip right back to running before it had actually finished restarting. Now there's a proper Rebooting your session… banner that stays up while the OS restarts, the SSM agent reconnects, and AWS status checks (2/2) confirm the box is healthy. Your IP and stored credentials stay the same throughout. Typically 1–3 minutes end-to-end.
fix
Sessions only labeled "running" after AWS status checks pass
A session used to flip to running the moment the OS booted and our bootstrap script finished — which is a couple of minutes before AWS's own 2/2 status checks pass on newer instance types. That meant you could try to RDP or SSH into a session that AWS still considered impaired. Now we wait for status checks to be all-green before flipping the label. Applies to first launches, restarts (stop → start), and reboots. If checks fail (a genuinely bad instance), the session moves to ERROR — terminate and relaunch.
fix
Correct username shown on Kali sessions (and everywhere else)
On Kali, Ubuntu, Debian, and Fedora sessions the session page previously said deskboot as the username in the summary before you clicked Reveal, then correctly showed kali / ubuntu / admin / fedora on the credentials screen. Same for the downloadable .rdp file — it hardcoded deskboot. Everything now reads from the same source and shows your session's actual account name. Legacy sessions created before this weekend still show deskbootbecause that's what their box actually has.
fix
Linux launches were failing on the distro-native user rollout
The switch to distro-native usernames (Ubuntu → ubuntu, Debian → admin, Kali → kali, Fedora → fedora) introduced a bug in the bootstrap script that broke every Linux launch: the SSH-key copy step tried to copy the authorized_keys file onto itself when the target user was already the distro default, which cp refuses to do. Fixed. Existing failed sessions were auto-terminated on the AWS side by our error handler — safe to just relaunch.
feature
Sign in without a password — email magic links
Prefer no third-party OAuth? Enter your email at /loginand we'll send you a one-shot sign-in link. Same flow signs you up if you're new — no separate registration, no password to remember. Google sign-in still works the same. Both routes create the same account keyed to your email, so it doesn't matter which one you pick first.
fix
Session launch form: no more Linux-username field on Windows
The optional Linux-username field now hides itself when you select a Windows OS (Windows sessions always log in as Administrator). Small polish; removes a source of confusion for people launching their first Windows box.
feature
Linux logins use the distro-native user (and you can pick your own)
No more remembering deskboot across every distro. Linux sessions now default to the OS's native cloud-image user — ubuntu on Ubuntu, admin on Debian, kali on Kali, fedora on Fedora — and you can set a custom one at launch. Every default account has passwordless sudo, so sudo -i gets root without a separate root login. The session credentials page always shows whichever username your box actually uses.
feature
'Windows 11-style' now runs on Server 2025
Microsoft still doesn't license Win 11 (client) on multi-tenant EC2, but Windows Server 2025 shares Win 11's kernel/UI generation — native rounded corners, refined visuals, dark mode out of the box. It's a closer visual + behavioral match than the Server 2022 base we were using. Existing Server 2022 preset is unchanged if you specifically want it.
feature
Runnable API examples on GitHub
Published github.com/deskboot-app/deskboot-examples — TypeScript, Python, and curl scripts that each launch a session, poll until RUNNING, print the RDP endpoint, then terminate. Zero dependencies (Node 18+ global fetch, Python stdlib urllib, plain bash). MIT-licensed — paste into your own project and edit.
fix
SEO fixes: per-page canonicals + FAQ rich snippets
Every marketing page (pricing, blog, docs, about, security, legal, etc.) now advertises its own URL as canonical instead of pointing to the homepage. Google was treating /pricing and /blog as duplicates of /, which suppressed them from search results entirely. Also added FAQPage schema to /pricing so those Q&As can appear as rich snippets under the search result.
fix
One credit offer at a time — no more $5 + $50 double-advertising
While the $50 launch promo is running (first 50 verified testers), the $5 welcome credit is paused — the promo takes its place, no stacking. Once the 50 slots are filled or the promo closes, the $5 welcome credit resumes for everyone else. Landing-page and pricing FAQ copy updated to match. If the promo ever misses your account due to a race, we backfill the $5 automatically so you're never left with nothing.
feature
Pick a profile avatar
Settings → Profile avatar. Eight brand-styled presets (Sphere, Hex, Diamond, Rings, Pixel, Wave, Terminal, Bolt) — click one to switch. Your Google profile photo remains the default if you don't pick one.
feature
Change your phone number (safely)
Settings → Phone verification → Change phone number. Two-factor: SMS code to the new number AND a confirmation link emailed to your account. Both required, both expire in 15 minutes. You keep the old number active until both proofs land, so a bad email link or wrong SMS can't lock you out.
fix
Adding a card that was used on another account no longer looks like an error
If your card was previously used on a different DeskBoot account, we still save it (top-up + launch works fine), but the $5 welcome credit and $50 launch promo don't apply — that's an anti-abuse thing we can't skip. Previously the flash said “Payment failed” which was misleading. Now it says clearly what happened and what still works.
feature
Payments stay on our page — no more Paystack redirects
Adding a card or topping up now opens Paystack's checkout as an in-page modal (like Stripe Checkout) instead of a full-page redirect. Fewer clicks, no browser popup blockers to fight with, and 3D-Secure OTP happens inside the same tab. Add-card is now card-only (mobile money / bank can't be saved for auto-charge); those methods appear on the top-up screen where they actually work.
feature
Non-technical writers can now edit the blog without touching markdown
Toolbar row above the body textarea in /admin/blog: Bold / Italic / H2 / H3 / Link / Bullets / Numbered / Quote / Inline code / Code block, plus Ctrl+B / Ctrl+I / Ctrl+K keyboard shortcuts. Writers who've used Reddit or GitHub comments can edit our posts without ever seeing an asterisk. Storage stays markdown so nothing else changes.
ops
Interactive glow on the landing hero
Move your cursor over the grid behind the headline on the homepage. Small thing — a soft cyan halo follows the cursor and lights the grid lines up. Doesn't hurt performance, doesn't block anything, just feels alive. Touch devices see the static background as before.
feature
Comment on blog posts + share to socials
Every post on /blog now has X / LinkedIn / WhatsApp / copy-link buttons at the end, plus a comment section. Only signed-in accounts can post — but if you start writing a comment while logged out, we save your draft locally and restore it after you sign up. No re-typing.
ops
Sharper link previews when you share DeskBoot
Sharing a deskboot.storelink on WhatsApp, Slack, X, LinkedIn, or Discord now shows a proper preview card with our logo and tagline — no more plain-text URL. iOS users who “Add to Home Screen” get the branded icon instead of a black square.
feature
Payment failover + card-safety guardrails
Two upgrades to how billing handles cards. First, top-ups (both the manual “top up now” button and background auto-top-up) now try every card on file, default first, until one succeeds — a declined default no longer kills your session. Second, you can't delete your last card. Add another one first; the “Remove” button on your only card is disabled so you don't accidentally strand yourself mid-session.
ops
Follow along
Small addition: social links in the footer + the About page. We're posting build updates on X, showing demos on YouTube, hanging out on LinkedIn, and the CLI + example scripts land on GitHub. Pick whichever you already spend time on.
Internal tool for us, not customer-visible: /admin/newsletter now has a full composer. Markdown body with live preview, send a test to yourself first, then blast to all confirmed subscribers in batches. Zoho SMTP under the hood, per-recipient unsubscribe token in every email.
feature
$50 launch credit for the first 50 verified testers
We're about to open the doors properly. The first 50 people who sign up and verify phone + card get $50 in launch credit dropped on their balance automatically. No coupon code, no email support ticket — verify and it lands. If you were already verified before this, we've backfilled — check your dashboard for a green banner.
feature
Weekly newsletter you can actually subscribe to
A short weekly digest — what we shipped, one customer story, one useful tip. Opt in at /newsletter or in the footer of any page. Double opt-in, one-click unsubscribe in every email, separate list from /status incident alerts.
fix
Region picker greys out incompatible options
Some OSes (Kali, mostly) aren't published in every AWS region. The region dropdown on the launch form now disables regions where your selected OS won't work — no more 500s from AMI-not-found. Also friendlier server-side error message if you get there via the API.
fix
Billing now ticks every minute, not just on dashboard open
We had a real foot-gun: per-second billing only advanced when you opened the dashboard. Launch a session, close the tab, walk away — and the meter quietly froze (your money was safe, but our books were lying). Fixed by moving the tick to a scheduled job that runs every minute regardless of whether anyone's logged in. Side effect: low-balance emails and the $0 auto-stop now fire reliably even for users who launched and went off to do something else.
fix
Kali Linux 2026.2 in the catalog (plus a Kali launch bug fix)
Kali Linux 2026.2 dropped yesterday — we pick it up automatically across all 4 regions where it's published. Brings 9 new tools out of the box: shell-gpt, tailscale, oletools, legba, penelope, arsenal-ng, tookie-osint, uro, plus hydra-gtk coming back. While checking the new release we caught and fixed an AMI-lookup bug — Kali had quietly renamed their image format a few releases ago, so brand-new Kali launches would have failed for anyone who tried. Sorry if you hit this; it works now.
ops
Brand refresh + clearer About page
New logo — a window frame with a power glyph (Desk + Boot, get it?) — replacing the generic shield-and-checkmark we had on day one. Same cyan-to-indigo gradient. The About page is rewritten around what we actually believe — per-second billing as a principle, you own what's on the box, no surprise bills, built where customers actually are, ship the boring stuff carefully. New dedicated Refund Policy linked from the footer too.
fix
Blog has its header and footer back
The blog was missing the site nav and footer on both /blog and individual post pages — they were rendering bare. Routing tidied up so the whole marketing tree (including the blog) inherits the same chrome.
feature
REST API is live + database hardening
Programmatic access to DeskBoot is out of beta. Launch / stop / start / reboot / terminate sessions, manage Elastic IPs, redeem vouchers, fetch your balance and profile — all from your own scripts. Bearer-auth with personal access tokens, full reference + curl-as-CLI examples at /docs/api. On the infra side, our Postgres database is now fully private (no public network attack surface). Pure security work, but worth noting.
feature
Live status page + outage subscriptions
/statusis now live with real component health, an incident timeline, and a one-click email subscription. We'll email you when something breaks and again when it's resolved — no marketing, incidents only, one-click unsubscribe. SSL cert expiry is watched separately with a CloudWatch alarm so we never get caught by a quiet auto-renewal failure.
infra
Marketing site loads ~3x faster on mobile
Landing, pricing, OS catalog, docs, blog, and changelog now render statically — no server work on each request, no analytics script blocking first paint. Mobile Lighthouse score jumped from the mid-70s to 100. If the site felt sluggish on a phone before, give it another look.
fix
Every country in the phone-verify list
The country picker on phone verification now covers all 240+ ITU-T dial codes — Qatar, GCC countries, every Pacific island, +1 territories like Puerto Rico and Cayman, the lot. If your country wasn't there before, it is now.
ops
Vouchers can be emailed straight to a recipient
Got a voucher from us? It now arrives as a clean email with the code in a copy-able box and a one-click link to the redeem screen — no more pasting codes into chats or DMs.
feature
Team management
We can now add other admins and blog editors from the dashboard — no env-var redeploys. Two roles: Admin (full access) and Editor (blog only). New teammates sign in once with Google, then existing admins assign their role at /admin/team.
feature
Blog editor in the admin dashboard
Posts can now be written, scheduled, and edited from /admin/blog— no code deploys. Markdown with live preview, draft / scheduled / published states, slug auto-fill. The three existing posts have been migrated into the DB so they're editable too.
feature
Name your sessions
Optional name field on session launch and on the session detail page — helps tell sessions apart when you have several running. Up to 60 characters. Dashboard list shows the name (with the id as fallback).
fix
Stopping/Rebooting no longer linger on the list view
The sessions list now reconciles transitional states with AWS on load + auto-refreshes every 5 seconds while anything's mid-transition. Click Stop and the list flips to STOPPED within seconds — no manual refresh.
fix
Live status updates on Start/Stop/Reboot
Clicking Start, Stop, or Reboot on a session now immediately reflects in the UI — no need to refresh the page to see the new status.
feature
Changelog page
This page. We'll keep it updated as we ship.
fix
Cleaner admin dashboard
Terminated and errored sessions no longer show stale public IPs in the admin view — they were just historical noise.
fix
Mobile fixes across docs and landing
Hero text now scales properly on phones, the RDP preview card stacks vertically on small screens, regions grid is single-column on mobile, and doc code blocks no longer overflow the viewport.
infra
www → apex redirect + canonical metadata
Cleaned up duplicate-content SEO warnings. www.deskboot.store now 301-redirects to deskboot.store, and every page emits a proper canonical link.
ops
Chatbot guardrails
Added a daily cost ceiling, output sanitization (never leaks secrets even if a jailbreak slips through), and abuse-attempt flagging on the support chat.
feature
REST API + personal access tokens
Launch, list, stop, start, and terminate sessions from your own scripts. Create tokens at Settings → API tokens. In private beta — let us know if you want the docs.
fix
Search engine indexing fixes
Switched the landing-page structured data from Product to SoftwareApplication. Google now recognizes DeskBoot as a SaaS product, not a missing-data merchant listing.
feature
Blog launched with three founder posts
Per-second billing, Kali in the cloud, and the Windows 11 cloud licensing situation. Find it at /blog.
feature
Docs section
Six quickstart and connection guides covering signup → first session → billing → troubleshooting. /docs.
feature
Bug report attachments
Drop screenshots into the bug report form on Report a bug. They go straight to S3, and our admin sees them attached to the ticket.
feature
Five global regions
Launch sessions in US East (N. Virginia, Ohio), EU West (Ireland), Asia Pacific (Mumbai), and Africa (Cape Town). Pick the closest for the lowest RDP latency.
feature
Vouchers + multi-currency
Admin-generated voucher codes for credit top-ups. KES and USD both supported with M-Pesa on the KES path.
infra
Per-second billing
Compute is billed by the actual second your session is running. Stop it and the meter stops. No minimum hours, no hourly rounding.