Changelog

v1.0.0

All notable changes to XAIO are documented here.

Improvement

Unlimited custom domains on paid plans

Website Builder Pro, Web App Builder and Platform Builder now include unlimited custom domains (Website Builder One keeps one). Connect as many of your own domains as you need — no per-domain limit.

Improvement

Unlimited xaio.app subdomains on every plan

Every plan — including Free — can now publish to unlimited yourname.xaio.app subdomains. Free sites carry a "Built with XAIO" badge, which paid plans can remove.

Feature

Convert a Web App back to a Website

You can now switch a project from a Web App back to a simple Website. The change is blocked while a backend is still active, so you never lose connected data by accident.

Feature

Platform Builder marked as coming soon

The Platform Builder plan is now clearly labeled 'Coming soon' with its planned availability date. You can still explore the card, and choosing it opens a short note instead of starting checkout.

Improvement

Clearer plan cards: unlimited domains and a free-plan badge

Plan cards now spell out unlimited custom and xaio.app domains where they apply, and the free plan clearly shows unlimited xaio.app domains plus the 'Built with XAIO' badge so you know exactly what's included.

Feature

Build web apps on every plan

You can now create web apps on any plan. Projects switch automatically between Website and Web App when you add or remove a backend integration, so you no longer manage the type by hand. Backend hosting and publishing remain part of the higher plans.

Improvement

Upgrade prompts only when you need them

Backend and custom-domain options now stay visible but show a clear upgrade badge if your plan can't use them yet, with one click to the pricing page. The redundant upgrade banner that always sat at the top of the Backend tab is gone, and you'll only see the prompt when you try to publish.

Fix

Suggestion chips return after edits

After the AI edited your files, the follow-up suggestion chips stopped appearing. They now show up again to help you decide what to do next.

Fix

Available task balance shown correctly after a new period

On the free plan your available tasks now correctly reflect the monthly reset, so you no longer see a balance of zero once your period has rolled over.

Fix

Apps no longer lose their styling after a rebuild

Fixed a problem where your custom global styles could vanish when the app was regenerated, leaving the preview unstyled. Your styling now stays applied reliably.

Improvement

Backend features now respect your plan

Adding a backend or database now requires a plan that supports backend hosting. If your plan doesn't, the chat clearly asks you to upgrade instead of failing silently.

Fix

Design Mode reference always shown and clickable

When you select an element in Design Mode, the chat now always shows which element you targeted, and clicking the reference opens the right file instead of getting stuck loading.

Improvement

Sharper AI-generated social preview images

When you generate a social/preview image with AI, it now reflects your app's actual content and brand colors instead of a generic look. The result matches what your app is really about.

Improvement

Preview toolbar shows up reliably

The preview toolbar buttons (design mode, console, reload, open in new tab) now reliably appear once your preview is rendered, instead of occasionally staying hidden for the whole session.

Fix

Plan changes now sync reliably

Fixed an issue where upgrading, downgrading, or cancelling a subscription could silently fail to update your plan and features. Your current plan now always reflects your latest billing change.

Feature

Team collaboration and external version control on Pro and higher

Inviting teammates to a project and connecting your own external Git repository are now available from the Pro plan upward. If you move to a lower plan, collaborators and external repo connections are removed automatically.

Improvement

Backend hosting tied to your plan

Apps with a backend can now be hosted on the Web App Builder and Platform plans. If you leave Platform but keep backend hosting, larger instances are automatically scaled down to the Business size that Web App Builder includes.

Improvement

Pricing page reflects your real plan limits

Plan cards now show accurate, up-to-date AI task allowances, domain limits and team-member counts straight from your plan, and we removed features that weren't actually offered. Hosting tiers are also shown more clearly per plan.

Improvement

Redesigned tab navigation and fuller bilingual support

The top tab bar has a cleaner look with labels appearing on hover and smooth animations. The environment, integrations and database views are now fully translated in English and German, and database tables refresh automatically after the chat makes changes.

Fix

No more duplicate replies on a new project

When you started a new project, the first message sometimes triggered two replies and two questionnaires. New projects now start with a single, clean response.

Improvement

See your actual thinking-token usage

The usage tooltip now shows the reasoning tokens actually used for your request instead of a fixed budget, and correctly labels the model provider.

Fix

Fairer pricing for non-Claude models

Chats using DeepSeek or Gemini were being charged at the higher Claude rate. They are now billed at each model's real price, so you only pay for what you actually use.

Fix

Plan and questionnaire cards show up again

The interactive plan and questionnaire cards sometimes failed to appear in the chat. They now render reliably so you can review plans and answer questions as intended.

Feature

The AI now thinks before it answers

Across all models, the AI reasons through your request before responding, leading to more reliable plans and edits. You can see when it was thinking right in the message details.

Improvement

Clearer messages when a backend fails to start

If your app's backend doesn't come up during a deploy, you now see a concrete reason (out of memory, crash, stuck) instead of a vague timeout, and the deploy stops faster rather than waiting it out.

Fix

Publishing no longer fails late over a cache hiccup

A glitch while refreshing the CDN cache could abort a publish near the end even though your site was already live. Now your publish succeeds and you simply get a heads-up that the cache may take a moment to update.

Improvement

Calmer, clearer loading experience

Starting a workspace now shows a calm progress indicator with a 'Workspace starting' cover and an elapsed / ~15s countdown, with a gentle 'taking longer than usual' note past 15 seconds. Previews fade in smoothly and reopening an already-running workspace no longer flashes a loading screen.

Fix

@help now works everywhere

Asking @help in the chat now reliably returns documentation answers, instead of coming back empty in some cases.

Feature

New model: DeepSeek V4 Pro

You can now choose DeepSeek V4 Pro as a model for your chats, giving you another option for building and editing your app.

Feature

More chat models to choose from

The model picker now includes DeepSeek V4 Pro and Opus 4.8, and shows the exact model variant you've selected (for example Sonnet 4.6 or Gemini 3.5 Flash) rather than just the brand.

Feature

Product announcements and updates

You now receive helpful product announcements, like new features and important notices, as polished emails or directly inside the app.

Fix

Your selected model is now respected

When you picked a specific Claude model, the chat sometimes still ran on a different one. Your choice is now always used and billed correctly.

Improvement

Redesigned emails with a new look

All transactional emails, from sign-up and invites to invoices and notifications, now share a clean, consistent design with a bold hero banner and clear call-to-action buttons.

Fix

Previews no longer break on brief restarts

A short, momentary hiccup while your preview was starting up could leave it stuck on a "server not responding" error. Your preview now rides out these brief blips and stays available.

Feature

Plan and Ask modes in chat

Use plan mode to have the AI map out the work before making any changes, or ask mode to get answers about your project without touching your files. Both keep the AI strictly read-only.

Feature

In-app announcement banners

Important announcements now appear in a banner at the top of your workspace. High-priority messages stand out, longer messages can be scrolled, and you can mark them as read or dismiss them.

Improvement

Cleaner questionnaires

Questions no longer add a redundant "Decide for me" option. Just leave a question blank and we'll decide for you.

Fix

Collaborators see all branches again

The branch list could appear empty for collaborators. It now always loads the current branches from your repository.

Fix

Deleting an environment variable now sticks

Removing a variable in the Environment tab now saves correctly, instead of the deleted entry quietly reappearing a moment later.

Feature

Crash alerts for your published apps

If a published app starts crash-looping and is automatically stopped to protect it, you now receive an email so you know to take a look.

Fix

Queued messages keep their images

Images attached to a message you queue while the assistant is still working are no longer dropped — they're now sent along with the message.

Fix

Clear errors when branches can't be loaded

If your Git branches can't be fetched (for example due to a credential problem), you now see a clear error instead of a silently empty branch list.

Feature

Export all your app's data

You can now download a complete export of your app's database and uploaded files as a single ZIP. Useful for backups and for your GDPR data-portability obligations.

Feature

Cancel a questionnaire mid-answer

When the assistant asks a set of questions, you can now cancel out of it. Cancelling lets the assistant decide for you and continue, so you're never stuck answering.

Improvement

Message actions stay available while generating

The Edit, Copy and other actions on your messages are now always visible, including while a response is being generated. Copy stays usable, while edit is briefly unavailable mid-generation with a clear tooltip.

Feature

Rate AI responses with thumbs up or down

Rate any AI response with a thumbs up or down, and optionally leave a short comment. Your feedback helps us improve answer quality over time.

Improvement

Redesigned team message banner

Direct messages from teammates now appear in a clearer, stacked layout — sender, the related project (one click to open) and a relative timestamp ("just now", "2 hours ago"). Links are clickable and open in a new tab, line breaks are preserved, and long messages scroll inside the banner.

Feature

Email alert when a published app keeps crashing

If one of your published apps repeatedly crashes on startup, XAIO now detects the crash loop, stops restarting it, and emails you so you can step in and fix it.

Feature

Team direct messages and @-mentions

Mention a teammate with @name in a project chat to send them a private direct message. They receive a notification banner and can reply inline. The @-command menu was redesigned for quicker access to mentions and commands.

Feature

Ask mode for read-only questions

A new Ask mode lets you ask questions about your project without triggering any code changes — ideal for understanding your app or planning next steps. The separate Plan mode has been removed; build plans still appear automatically when the AI needs your confirmation.

Feature

Private hosting for published apps

Purchase dedicated private hosting for an individual published app, with a one-time 6-hour free test phase per project so you can try it before buying. Existing Power apps can be migrated to the new hosting on a clear timeline.

Feature

Notification message center

A slim message banner now sits above the workspace and project list, surfacing important notices — hosting reminders, team messages — one at a time. Acknowledge or dismiss them with a click.

Improvement

Language preference saved to your account

Your interface language (German or English) is now saved to your account and applied everywhere, including all emails and server messages.

Feature

Keep database and export data when unpublishing

When unpublishing an app you can now choose to keep its database, and export all of your data in a GDPR-compliant way so nothing is lost.

Feature

Claude Opus 4.8 in the model picker

Claude Opus 4.8, the most capable Claude model, is now selectable in the chat model picker.

Improvement

Automatic commits pushed to your GitHub repo

When you have a GitHub repository connected, the automatic commits made by the AI are now pushed to your repo, keeping your history in sync.

Improvement

Faster reopening of running projects

Reopening a project whose workspace is still warm is now noticeably faster, skipping unnecessary startup steps.

Improvement

Real-time publish progress

Publishing now streams its progress live over a websocket instead of polling, so the publish dialog and button update instantly and reliably.

Improvement

More reliable handling of large PDFs

The chat handles large PDFs more reliably now, with dedicated read modes and protection against truncating big documents.

Improvement

Simpler project questionnaire

The initial project questionnaire now always offers a free-text answer and drops the "decide for me" option for a clearer flow.

Fix

Reliable balance top-ups

Fixed a Stripe webhook crash and a missing balance top-up grant, so balance top-ups are now credited reliably.

Improvement

Richer plan cards with per-task details

Plan cards now show an expandable description for each task and replace "Done when" with actionable "How to validate" guidance.

Feature

Static pre-rendering (SSG) for web apps

Web app projects can now selectively pre-render pages as static HTML (SSG) via a simple router convention, improving load times and search engine indexing.

Improvement

Push button for new branches

The source control panel now shows a Push button for newly created branches that are not yet on the remote.

Fix

Cancelled subscriptions remain active until period end

After cancelling a subscription, your plan now stays fully usable until the end of the paid period.

Feature

Design Mode — visual editor for your live preview

Click the pointer icon next to the chat input or in the preview toolbar to enter Design Mode. Select any element directly in the preview to inspect and edit its properties — colors, typography, spacing, and layout — all without writing code. Changes are applied instantly via Tailwind classes and written back to your source files.

Feature

Quick-action toolbar with direct property changes

When an element is selected in Design Mode, a contextual toolbar appears below the preview with one-click tools: Fill color, Border color, Border width, Font size, Font weight, Text color, Text alignment, plus Undo/Redo and Delete. Each tool opens an inline dropdown for instant changes — no AI prompt needed.

Feature

Professional color picker with HSV spectrum

The new color picker includes a list view with quick swatches, recent colors, and a full Tailwind palette — plus a spectrum view with an interactive HSV canvas, hue slider, HEX/RGB/HSL input modes, and EyeDropper API support. Works in both the Design Mode toolbar and the properties panel.

Feature

Design prompt bar — AI-powered element editing

Below the preview, a prompt input lets you describe changes to the selected element in natural language (e.g., "make this text red" or "add a shadow"). The AI applies changes directly to the correct source file and element — no plan confirmation needed for simple edits.

Feature

Element tree with live selection sync

The Design Mode panel shows a DOM element tree. Clicking an element in the tree highlights it in the preview and loads its properties. Selection syncs both ways — click in the preview or the tree. The element info (tag, classes, file) appears as a compact badge in the prompt bar and chat messages.

Feature

Plan rejection — say "no" to cancel a build plan

When the AI presents a build plan, you can now reject it by clicking "Nein" or typing phrases like "nein", "nicht bauen", "cancel", "skip" in both German and English. The plan is immediately discarded without calling the AI — no accidental builds.

Improvement

Media library — paste external URLs

The "Extern" tab in the media library now lets you paste or type image/video URLs directly. A live preview shows the image before you confirm. Pasted URLs are automatically accepted in picker mode.

Improvement

Image editor — web link input alongside media library

The image property editor now has a link button next to the media library button, allowing you to type or paste any image URL directly as the source.

Improvement

Publish modal — less whitespace during build

The publish dialog now auto-sizes to its content during the build phase instead of using a fixed 700px height.

Improvement

German translations for all design mode labels

All Design Mode section titles, toolbar labels, and property editors are now fully translated to German: Textinhalt, Bild, Filter, Layout, Abstände, Größe, Schrift, Farben, CSS-Klassen.

Improvement

Keyboard hints hide on narrow chat panels

The "Enter to send · Shift+Enter new line" hint in the chat input now hides automatically when the chat panel is too narrow (e.g., when Design Mode is open). Based on actual container width, not viewport.

Feature

Voice input — speak your prompts

A new microphone button in the chat input and project creation screen lets you record voice messages. Your speech is transcribed via Gemini Flash and inserted into the text field for review before sending. Includes a real-time waveform visualizer and a blue shimmer animation during transcription.

Feature

Smart follow-up suggestions

After the AI modifies your project files, up to 3 contextual follow-up suggestions appear below the chat ("Continue with →"). Click to insert the prompt into the input, or Shift+Click to send directly. Suggestions are persisted and restored when you reopen the project.

Feature

New team role: Edit & Publish

A new collaborator role "Edit & Publish" lets team members edit projects and publish to production. The existing "Edit" role no longer includes publish access. Project deletion is now restricted to the project owner only.

Improvement

Project list sorted by last modified

The project list now shows when a project was last modified instead of when it was created, and sorts by most recently edited first.

Improvement

Editable message queue

Queue items can now be edited inline — click the text to open a multiline editor (Shift+Enter for new lines). A tooltip shows the full prompt text and an edit hint on hover.

Feature

Billing address and company name on invoices

Your billing name and address from Stripe are now displayed in the admin dashboard and used for invoicing. Existing customers are automatically backfilled from Stripe on the next service restart.

Fix

Subscription cancellation now shows immediately

When you cancel your subscription (via Settings or the Stripe Customer Portal), the "Expires on" status now appears immediately instead of waiting for a webhook. Cancellations made through the Stripe portal (which uses cancel_at instead of cancel_at_period_end) are now also correctly detected.

Feature

Clear chat history

A new "Clear chat" button lets you wipe the conversation history of any chat and start fresh. A confirmation dialog prevents accidental deletion, and the action syncs across multiple open tabs.

Improvement

Faster chat loading with parallel probes

Token context and active task probes now run in parallel when opening a chat, noticeably reducing the time until the input field is ready. A brief grace period also prevents the loading shimmer from flickering on fast connections.

Fix

Database browser uses server-side credentials

The database browser no longer exposes database credentials to the browser. All queries now run through a secure server-side proxy, improving security for projects with connected databases.

Feature

Published app visible to editors and viewers

Collaborators with editor or viewer roles can now see the "Open site" button for published apps directly in the project overview.

Fix

Stop button preserves partial work correctly

Pressing Stop during code generation now properly saves any text already written, removes unfinished tool cards from the chat, and pauses the message queue so no queued follow-up fires after the stop.

Feature

GitHub import from welcome screen

You can now import an existing GitHub repository directly from the welcome screen and the project list. The imported repo appears as an assistant message in chat, and you can start working with AI right away.

Feature

Monitoring tab for published web apps

Published web apps now have a dedicated Monitoring tab showing runtime logs and health status. Also accessible from the mobile menu.

Feature

Republish detection — know when your site is outdated

The publish button now detects when your project has changed since the last deployment and shows a visual indicator (shimmer/split button). One click to republish with the latest changes.

Feature

AI-powered SEO metadata for published sites

When publishing, XAIO can now generate optimized SEO metadata (title, description, Open Graph tags) using AI. The new split-preview modal lets you review and edit before going live. Published sites are also pre-rendered as static HTML for better search engine indexing.

Feature

Premium Design chip on new projects

New projects can now add a "Premium Design" chip that instructs the AI to apply extra visual polish — refined spacing, typography, animations, and a professional color palette.

Feature

Live questionnaire and plan stream

The initial project questionnaire and the task plan now stream live in the chat with a shimmer animation, so you see progress immediately instead of waiting for the full response.

Feature

Generated images shown mid-stream

When the AI generates images during code creation, they now appear inline in the chat as they are produced — no need to wait until the full response is complete.

Feature

Consent modal for Austrian consumer protection (FAGG)

A three-checkbox consent modal is now shown at checkout, covering the right of withdrawal waiver, terms acceptance, and auto-renewal notice — in compliance with Austrian consumer protection law (FAGG).

Improvement

Smarter plan view in chat

The live task plan in the chat is now only shown after you accept it, and duplicate renderings in different chat modes have been eliminated. The plan card also auto-advances completed tasks.

Fix

Workspace start: cross-replica + per-workspace Redis lock kills triple-start race

Under load multiple dev-server replicas could enter `start_workspace_on_node` for the same project at the same time, producing two or three runner-side bun installs and Vite spawns that fought over the same port. The handler now acquires a Redis lock keyed on the workspace id (per-ws) AND on the project id (cross-replica) before any side effect; the loser of the race waits for the winner's status flip instead of starting its own. Same project opened in two tabs no longer creates two workspaces.

Feature

Structured ws-trace logs across the workspace lifecycle

Every workspace lifecycle transition (create, sync, start, vite-up, restart, stop, delete) now emits a single-line structured log `[ws-trace event=… project=… user=… ws=… node=… elapsed_ms=… result=…]`. Across dev-server and workspace-runner the same event vocabulary is used so a single CloudWatch query can correlate a project end-to-end. Replaces a mix of unstructured `print()`/`logger.info()` lines that made post-mortem grepping hard.

Fix

Reliable backend health check with deploy-version verification

After a backend redeploy the health probe could see the OLD process answering 200 for several seconds before the new process bound the port — leading to false-green status. The probe now reads the deploy version (from `/api/info`) and only returns ready when the version matches the just-deployed build sha. Same logic mirrored in workspace-runner so the dev-server / runner handshake also waits for the right binary.

Fix

Tool-router waits for workspace before workspace-dependent tools

When the agent fired Read/Write/Bash tools immediately after `request_integration` enabled the backend, the workspace was not yet attached and the call failed with a misleading 404. The router now waits up to 10s for the workspace to be ready, re-imports `get_workspace_for_project` post-sync to pick up the freshly persisted state, and curl is routed through the workspace-runner proxy in all environments instead of two different paths for dev vs prod.

Fix

Idempotent `/restart-vite` on the runner — healthy Vite stays untouched

Calling `/api/workspace/{id}/restart-vite` while Vite was already healthy used to kill it and start a fresh one — costing ~5s and a screenshot regen. The handler now probes Vite before killing: HTTP 200 within 500ms => no-op, return 200 with status "already-healthy". Reduces unnecessary HMR resets across rapid edits.

Improvement

Project-detail pre-warms the workspace in parallel with project fetch

Opening a project from the dashboard previously fetched the project metadata first, then started the workspace — sequential, ~3-4s. The detail page now fires both calls in parallel and the post-restart sleep was reduced from 5s to 1s, cutting open-to-preview by ~3s in the warm-runner case.

Feature

"Fix with AI" button when a publish build fails

When a publish run fails (build error, missing dep, type error), the build-error panel now offers a "Fix with AI" button that sends the error message + relevant log excerpt directly into chat as a new message — the agent picks it up and iterates a fix without the user having to copy-paste the trace.

Feature

Preview overlay during branch checkout + frontend status sync after generation

Switching git branches now keeps the preview overlay visible until the new content has actually reloaded, so the user no longer sees the previous branch's UI during the swap. The "elapsed >= 2min"-game-overlay during long restart_frontend stays visible until the preview really comes back (5s grace), and the post-generation workspace poll now writes `frontendStatus` so the chat panel reflects ready/error correctly.

Fix

Source-control modal: PR-merge syncs the base branch + chat-state guard

After merging a PR via the source-control modal, the workspace now checks out the base branch and re-syncs files from the merged commit — previously the working tree could stay on the now-deleted feature branch, which produced confusing "no changes" states on the next chat. Plus: chat-applied state now waits for the merge result before flipping, so a failed merge no longer marks the chat as applied.

Feature

Source-control modal i18n — DE + EN

Every label, tooltip, button, status text and error message in the Versionsverwaltung modal now ships in German and English, controlled by the existing language toggle.

Infrastructure

node_modules.tar cache moved out of the source tree

The cached `node_modules.tar` blob the runner uses to skip bun-install on warm starts used to live inside the project sources directory — making git status noisy, swelling backups, and leaking into ZIP exports. It now lives under a sibling cache directory and is referenced by symlink, identically on dev-server and runner so both pick the same path.

Feature

Beta-Programm application backend (public form → Brevo email)

New public, no-auth endpoint `POST /api/public/beta/apply` accepts the xaio-beta-landing form (name, email, company, role, usecase[], vision, experience, hours, referral, consent), captures IP + user-agent, sends a Brevo confirmation mail to the applicant and an admin notification to BETA_ADMIN_EMAIL (falls back to ADMIN_EMAIL). Stores all submissions for the beta-cohort selection process.

Feature

Per-user project favorites — collaborators favorite without affecting others

The global `projects.is_favorite` column was replaced by a `project_favorites` join table keyed by (user_id, project_id). Each collaborator now has their own favorite list on shared projects — toggling a star no longer flips it for the entire team. Migration V076 moves existing owner favorites over and drops the legacy column. The update_project endpoint accepts owner OR collaborator role for the toggle.

Infrastructure

cloud-local: management Flyway migrations now run on start

The cloud-local startup script previously skipped management-DB migrations, leaving developers on outdated local schemas (the "column resource_size does not exist" delete-error reproduced this). The orchestrator script now runs Flyway against `xaio_management` on every cloud-local start.

Feature

Per-message kebab popover with Bearbeitungszeit, AI Tasks and Geänderte Dateien

Every assistant message now has a 3-dot kebab on its action row. The popover shows two stat-pills (Clock + duration, Sparkles + AI Tasks used with the unit label muted), a "· N FILES" eyebrow, and a per-file diff list when the turn modified files. Each file row shows a TS/JS/PY/CSS language badge in neutral gray, the path, a 5-block proportional add/del bar, and +N -N counters; click the row to expand the unified diff inline. Empty popovers (no duration, no AI tasks, no files) hide the kebab entirely. Portal-rendered so it escapes the chat container overflow. Backend persists turn duration_ms and ai_tasks_used onto the iter row for survive-reload, and a new commit_sha field links each turn to its autocommit so per-file diffs are fetched via the existing /git/commits/{sha}/diff endpoint.

Feature

Telegram-style date separators in chat

Messages from different days now sit beneath a centered locale-aware pill ("May 1" / "1. Mai", year only when it differs from this year). On scroll, a sticky floating pill appears at the top with the date of the message under the viewport edge; it fades 1.2s after scroll stops and hides automatically when a static separator with the same date is already visible.

Feature

Auto-draining message queue with pause + drag-reorder

Sending a new message while a turn is still streaming queues it instead of bouncing the input. The queue header sits above the input as a collapsed pill with [count] [pause] [chevron]; expand reveals the full list with a drag-handle per item, an "as next"/"als nächstes" badge on item #0, and per-item remove. When the active turn ends, the head of the queue is automatically dispatched as the next turn — unless the user paused the queue. Resume after pause also drains. State lives in the chat panel so multiple ActionBar instances on the same message stay in sync.

Feature

Quiet welcome screen — Inter 500 + Instrument Serif accent, no dashed drop-zone

New "Was willst du bauen?" / "What do you want to build?" hero in Inter 500 with the last word ("bauen?" / "build?") rendered in Instrument Serif italic — the brand moment. Responsive sizes 52/40/32px with letter-spacing -1.6/-1.2/0px across breakpoints, line-height 1.05, color #111. Subtitle 15/1.5 muted #6b7280: "Ein Prompt." / "A prompt." (was "1 Prompt"). The dashed drop-zone box was removed; its function moved to a small 32×32 [+] icon button inside a single 52px footer with keyboard hint and ink-pill build button. A drag-onto-card overlay with "Drop files here" in Instrument Serif italic kicks in only during an actual drag. Keyboard hint and model picker only appear once the prompt has enough content to actually build.

Feature

Real Brevo-backed friend invitations with XAIO-styled email

The Invite-Friends modal now sends real transactional invitation emails through Brevo instead of opening a mailto. New POST /api/auth/referral/invite accepts a list of emails plus a language hint (de/en), validates + dedupes, fetches the sender's referral URL and dispatches a hand-styled HTML email per recipient: warm off-white card on a subtle gradient, +25 hero with tabular-nums, "AI Tasks" in Instrument Serif italic blue accent, ink CTA, 3-step block, footer disclaimer. Per-address result (sent / failed / invalid) is surfaced in the modal feedback line. Soft cap of 20 invitations per request. Counter switched from completed_referrals to total_referrals so the user sees real signups (label: "angemeldet" / "signed up", was misleadingly "eingeladen" / "invited").

Feature

Version Control reskin — XAIO branch glyph, timeline rail, light-mode diff

Versionsverwaltung modal now wears the full XAIO vocabulary: custom branch glyph instead of the GitHub icon, "verbunden" pill with green sync dot, "REPO" eyebrow with derived owner/repo slug + sync indicator, section headers per spec (chevron + icon + title + mono count-pill), "aktiv" chip in accent blue for the current branch, 28×24 white icon-buttons (Pull/Refresh/Merge/Push/PR/Checkout/Delete), 1px timeline rail with 10×10 commit nodes (accent-blue for HEAD), commit rows with mono short-hash + 13.5/500 title + author·time and a HEAD pill, file diff cards with +N / −N stats and "· Zeilen N–M" hunk headers, and a 4-col code grid (34/34/16/1fr). DiffViewer is now light-mode aware: same surface in dark, soft warm tones in light.

Feature

Mediathek redesign — 1080×720 modal with search, segmented tabs, neutral pill chrome

Media Library is now a centered 1080×720 dialog (radius 16, soft XAIO shadow). Top bar carries a folder-icon-box, "Medienbibliothek" title in Geist 14/600 plus a mono "· N FILES · 292 KB" sublabel, a 220px search field with ⌘K hint pill, a "Von URL" ghost button, and an ink primary "Hochladen" pill. Tabs are segmented with a mono 2-digit counter; an empty tab dims to muted-soft. Asset grid uses repeat(auto-fill, minmax(180,1fr)) with 14px gap and translateY(-1px) on hover. Pills (public / private / generated) switched from saturated solids to neutral mono-outline. New footer carries an LIMITS eyebrow with the size limits and a STRG+V kbd hint. ⌘K focuses the search field; search filters the active tab live.

Feature

Team modal redesign — owner mono-tag, role select, two-step removal

Team panel rebuilt as a 680px modal per spec. Header carries a Users-icon bubble, "Team" title and a mono · N MEMBERS sublabel. The inline-invite row accepts comma-separated email addresses (split + dedupe + RFC-light validate + parallel POST), reports per-address success / failure inline. Member rows show a 36px avatar (or accent-blue initial) plus name/email/"DU" tag; the Owner gets a non-clickable INHABER mono-tag with crown, everyone else gets a 28px-tall RoleSelect popover (Bearbeiten / Nur ansehen with role descriptions, a divider, and a red "Aus Team entfernen"). Removal goes through a confirm dialog with explicit pre-checks (no projectUuid, missing permission, owner-protect, self-protect) and surfaced HTTP errors — no more silent no-ops. RoleSelect popover is portal-rendered so the modal's overflow doesn't clip it.

Feature

Secrets in assistant messages are now masked with click-to-copy

When the model answers with an API key, password, database URL, bearer token or any other recognised secret pattern, it now renders inline as the same amber Shield-icon pill we use in user input — masked to first6...last3 with the env-var name in parentheses. Click copies the original value to the clipboard with a 1.2s "Kopiert" confirmation. Hooked into every text-bearing markdown tag (p, li, h1-h6, strong, em, blockquote, td/th, inline code, link text) plus the plain-text branch. Block <pre><code> stays untouched so multi-line snippets remain readable.

Feature

Sidebar shows the current user in the team avatar stack

The team avatar stack in the sidebar used to filter out the current user. It now includes you — moved to the front of the list so your avatar renders rightmost in the cascading stack (closest to the Team button, top of the painting pile). Fallback initials use solid accent-blue background with a white initial instead of the previous near-transparent treatment. Bottom divider in the footer also matches the top divider's mx-2.5 inset.

Feature

Edit/Copy/Revert action row on user messages

User messages now carry a hover-revealed thin-icon row (Edit, Copy, Revert). Hover-only by default so the chat stays calm; full keyboard navigation supported. Combined with the kebab popover on assistant messages this gives every turn a consistent, lightweight action vocabulary on both sides.

Feature

Recently opened projects in the sidebar

Sidebar now lists the last 5 opened projects under the Resources section (when expanded), with rectangular thumbnails (no border / padding) and a FolderOpen fallback. The list is sourced from a client-side localStorage map (xaio:lastOpened, max 50 entries, recency-sorted) and refreshes when you switch projects. The currently open project is filtered out so the list always shows alternatives.

Feature

Generated images now appear inline in chat messages

When the AI generates images via the generate_image tool, they now render in a small horizontal wrap-list directly inside the chat message — both in project view and dev view. Dev view places them at the bottom of the message above the timestamp, alongside the action bar.

Feature

Tab badges no longer get covered by sibling tab backgrounds

The error / info badges on the workspace tabs (Backend, Preview, Inbox, Runs) used to overflow into the next tab's area and disappear behind its solid background. They now sit at z-20 with a 2px halo ring (white in light, ink in dark) so they're always readable, regardless of which tab is active. pointer-events: none so they don't intercept clicks meant for the tab itself.

Feature

Locale-aware AI Tasks number formatting

AI Task counts now respect the document language: 1.48 in English, 1,48 in German. Token counts and detailed cost breakdowns are now hidden in prod and stage environments — they're only useful for development debugging.

Fix

Referral pending count fixed (Python `not` was dropping the WHERE filter)

`not UserReferral.referrer_bonus_granted` was being evaluated by Python at query-build time, coercing the column object to a literal True/False and silently dropping the WHERE clause. Switched to `.is_(False)` so SQLAlchemy emits the correct `WHERE referrer_bonus_granted = false`. Affects pending_referrals (used to come back as 0 or full total depending on coercion, never the actual pending set) and grant_referrer_reward (the lookup that decides whether a referrer is owed +25 AI Tasks could miss the real pending row).

Feature

Workspace runner — Vite config + index.html re-patched on every wake

When dev-server file-sync overwrites the runner's vite.config.ts (which carries the per-workspace base path), Vite serves wrong asset URLs and CloudFront returns HTML for missing /src/main.tsx. The runner's start() now re-patches vite.config and index.html every time, even when "already running". Extracted helpers _ensure_vite_config and _ensure_index_html_patched. Also: workspaces with dead nodes are now marked STOPPED instead of deleted to prevent data loss when runners are recycled.

Feature

Full DE/EN translation across the marketing site

All public marketing pages — /platform, /pricing, /about, /features, /product, /product/pipelines, /docs, /press — plus every landing component (header, footer, FAQ, how-it-works, pipelines preview, pricing preview, enterprise, social proof) now drive every visible string through the language dictionary. Switch via the existing EN/DE toggle in the header.

Feature

New /platform overview written for non-developers

Top-level entry point under Platform → Übersicht. Hero with workflow strip (Describe → Clarify → Adjust → Publish), nine plain-language capability cards (project management, chat agent, live preview, database, backend & APIs, one-click publishing, versioning, design-from-screenshot, local connector), audience bands (founders / operations / marketing), cross-references to Building Blocks, Use Cases and Features, and a dark CTA.

Feature

Pricing rewritten with the actual five plans

Pricing now reflects the real plans from plan_limits.py: Free (€0 · 50 tasks), Website Builder One (€10 · 100), Website Builder Pro (€25 · 150, highlighted), Web App Builder (€50 · 200), Platform Builder (€100 · 250). Toggle now defaults to monthly, "pro Nutzer / per user" line is shown explicitly, annual shows the strikethrough monthly price. Comparison table below has 12 rows with real values.

Feature

Honest feature audit — only what actually exists

/features dropped 10 entries with no code evidence (Magic Links, Schema Discovery, Edge Functions, Integrated DevTools, Undo/Redo, Preview Deployments, Instant Rollback, Status Page, Analytics, Secret Detection in chat-app context). Added real features: Website renewal (upload existing site, agent rebuilds modern version) and Migration from Lovable/Base44/Bolt. Renamed Monaco Editor to Source-Code Viewer to match what XAIO actually ships.

Feature

Founders section on /about with real photos

New section "Drei Operatoren, eine These." with portrait cards for Thomas Grausgruber (CEO, formerly XOOO & Emasos), Julian Breitenecker (CMO, formerly Growth Lead · Schoolfox) and Stephan Amling (COO, formerly COO · Forterro). Mission quote attribution fixed to Thomas. Timeline shortened to four real entries: 2025 Founding, 2026 Private Beta, Q3 2026 Public Launch, Vision.

Breaking

Force light mode site-wide

A FORCE_LIGHT_MODE flag in lib/stores/theme-context.tsx now hard-locks the marketing site to light mode regardless of system preference or stored localStorage value. The dark CSS infrastructure (variables, .dark class, dark: utilities) stays intact for a future re-enable — flip the single constant and restore the FOUC script in app/layout.tsx.

Breaking

Feature flags default to enabled only in development

features.goLive and features.agentFlow now default to true only when NODE_ENV === "development" (next dev). Any production build defaults them to false. CI/CD pipelines need no extra wiring; an environment that does want them on can override per-build via NEXT_PUBLIC_FEATURES_GO_LIVE=true / NEXT_PUBLIC_FEATURES_AGENT_FLOW=true.

Feature

Header restructure: Plattform · Docs · Preise · Blog · Unternehmen

Renamed top-level "Produkt" dropdown to "Plattform", with new first item "Übersicht" → /platform. Removed Roadmap from the dropdown (gated by goLive elsewhere). Integrationen menu entry now also gated by goLive. Blog menu entry gated by goLive. Hardcoded counts ("36 Plattform-Features", "7 Pipelines", "Sechs Pläne", "Von 1.200+ Teams genutzt") removed everywhere they were stale or unverified.

Feature

Application topic on the contact form

New "Bewerbung" pill on /contact between Support and Presse. Both "Initiativbewerbung" CTAs on /careers now route to /contact?topic=bewerbung, which auto-selects the pill. The /api/contact subject becomes "Bewerbung-Anfrage" and the topic field routes the admin notification accordingly.

Feature

Terminology: Pipelines → Bausteine, Use Cases stays separate

Output types (Website, Web App, Microservice, Agent Flow, Skills) are now consistently called Bausteine across the marketing site, with a separate Use Cases section under /product/pipelines for outcome-focused examples (landings, websites, web apps, agent flows, docs sites, shops, portals). The "Pipeline" term is reserved for CI/CD only.

Breaking

Removed Mobile (Flutter) and Go Microservice from marketing

Mobile (Flutter) and Go Microservice are no longer advertised on /product, /product/pipelines, /docs, /platform, the FAQ, or the platform tech badges. Only output types XAIO actually ships (Website, Responsive Web App, Python Microservice, Agent Flow, Skills) are listed, and counts are computed from the visible array rather than hardcoded.

Fix

Compliance claims trimmed to what is actually true

ISO 27001 and SOC 2 mentions removed from the Enterprise tile, footer system status, FAQ and /about timeline. Only GDPR (EU hosting, GDPR-compliant out-of-the-box) is claimed.

v1.0.48
Feature

New marketing site design

Complete rebuild of xaio.dev on a warm off-white canvas with Geist, Geist Mono, and Instrument Serif Italic typography. New hero with rotating use-cases, app-preview mock, audiences grid, seven-pipeline overview, how-it-works terminal, live prompt demo, enterprise block, pricing teaser, and FAQ accordion. All CTAs now route to /signup or /sales instead of opening modals.

Feature

Login and signup as dedicated pages

The Login and Signup modals have been replaced by full /login and /signup routes in a 50/50 split layout with an editorial dark panel. Includes Google and GitHub social sign-in, email + password, live 3-bar password-strength meter, 2FA, password reset, verification-pending screen with 60-second resend cooldown. The existing backend auth endpoints and Supabase-backed session handling are unchanged.

Feature

Product, Company, Features, Pricing, and Blog routes

New routes under /produkt (overview plus pipelines, agent-flow, integrationen, roadmap), the company section (/ueber-uns, /kunden, /karriere, /presse, /kontakt), the 36-feature grid at /features, the six-plan pricing page with monthly/yearly toggle and full comparison table at /preise, and a refreshed /blog feed. The top nav now offers Produkt and Unternehmen dropdowns with icon + title + description per entry.

Feature

Sales page with live calendar

New /sales page with a Solutions-Engineer trust row, three-step process, dark enterprise block (self-hosting, SSO/SAML, dedicated Slack, audit logs, SLA, DPA), full contact form with use-case chip toggle and interests multi-select, a 7-day calendar slot picker, sales-specific FAQ, and a final CTA. All "Mit Sales sprechen" and "Sales kontaktieren" buttons across the site now link here.

Feature

Contact form wired to Brevo with topic routing

Forms on /kontakt and /sales now submit to the management /api/contact endpoint. The endpoint has a new optional topic field that routes admin notifications to the Sales, Support, Press, or Security mailbox (configurable via SALES_EMAIL, SUPPORT_EMAIL, PRESS_EMAIL, SECURITY_EMAIL — falling back to ADMIN_EMAIL). Confirmation and admin mail are now sent asynchronously via Brevo so the request no longer blocks on the roundtrip.

Migration required:

Flyway migration V072__add_topic_to_contacts.sql adds a topic VARCHAR(64) column plus index to the contacts table. Applied automatically on the next management deploy.

Improvement

docs.xaio.dev aligned with the new design system

The docs frontend now uses XAIO Blue (#3366EA), the off-white canvas, Geist + Geist Mono + Instrument Serif typography, and the shared xaio-chip, xaio-btn, and card primitives. The home page has a marketing-style hero with search pill, a 5-step journey grid, a why-XAIO feature row, and a quick-start CTA. The top nav keeps the docs-internal links (Docs · Anleitungen · Änderungen) plus search, language, theme toggle, Login, and Start Building.

Infrastructure

Company name updated to XAIO FlexCo

Footer and legal mentions across all public surfaces switched from "XAIO Labs GmbH" to "XAIO FlexCo".

v1.0.47
Feature

Custom Domains

Connect your own domain (e.g. www.my-site.com) directly to your published project. You can either attach a custom domain to an existing subdomain or publish straight to the custom domain without a subdomain. XAIO creates a dedicated CloudFront distribution per domain, issues the SSL certificate automatically, and guides you through DNS setup. A new pending_dns status shows you exactly when your domain is ready.

Feature

AI-Generated Design Styles

Design chips now call Gemini to generate unique colors, fonts, and design tokens tailored to your specific project — no more identical-looking results. The AI also automatically suggests a matching design style based on your prompt. Four new design chips added: Glassmorphism, Luxury, Neon, and Playful. Project title preview inherits the design color and font in real time.

Feature

Inline Project Creation

Create new projects directly from the sidebar without leaving your current workspace. The sidebar layout is now stable and no longer shifts when switching between views.

Feature

Faster Publishing for Frontend-Only Projects

Projects without a backend now skip the backend build and deploy step when publishing. Publishing is noticeably faster and no longer fails on missing backend configuration.

Feature

Smart Project Type Conversion

If you start a Website project and ask for Web App features (or vice versa), XAIO now asks before implementation if it should convert the project type — instead of silently generating the wrong stack. Conversion happens before the plan confirmation, so you stay in control.

Feature

Cache Savings in Cost Overview

The project cost detail view now shows how much you saved through prompt caching. Transparency on where your AI tokens actually go.

Feature

Clickable Support Ticket Attachments

Attachments in support tickets are now clickable and downloadable via secure pre-signed URLs.

Improvement

Smarter Agent Loop

The AI agent now stops automatically when the same error keeps recurring instead of endlessly retrying. Context is deduplicated to prevent bloat, and concurrent git clones for the same project are serialized to avoid 500 errors under load.

Improvement

Backend Pre-Flight Validation

Before starting your backend, XAIO now validates the Python code. Syntax errors are caught immediately — no more cryptic runtime crashes during startup.

Improvement

CORS Errors Visible in Preview

The preview console now detects and clearly reports CORS errors, so you know right away when an API call is blocked by browser security. Routine 4xx responses (e.g. validation errors) are now shown as warnings instead of errors to reduce noise.

Improvement

Per-Project Connection Allowlist (CSP)

Published sites now have a per-project Content Security Policy allowlist for external API calls. Your app can talk to the services it actually needs — without opening the door to everything.

Improvement

Per-User Publish Rate Limiting

Publishing is now rate-limited per user instead of globally. Your publishes are not blocked anymore because someone else is deploying at the same time.

Improvement

Backend-Mediated Authentication

Login now goes through the XAIO backend instead of directly to the auth provider. More secure, more consistent across browsers, and easier to recover from session issues.

Fix

Unpublish Confirm Button

Fixed: clicking "Unpublish" in the confirmation dialog sometimes did nothing due to a stale event listener.

Fix

Design Chip Regressions

Fixed: clicking a design chip no longer re-triggers title generation. No more flash back to default when switching chips. Text after a design block is preserved when switching designs.

Fix

Trialing Plan Add-on Purchases

Users on a trialing subscription can now purchase AI Task add-ons (previously blocked incorrectly).

Fix

Security Updates

Upgraded axios to resolve an SSRF vulnerability, and addressed a high-severity advisory in basic-ftp.

v1.0.46
Feature

Website Migration from URL

Paste any website URL in your prompt (e.g. "Create a modern website based on example.com") and XAIO automatically scrapes the content, downloads all images to the media library, detects the language, and builds a completely new website with the original content. Works with JavaScript-rendered sites (Wix, Squarespace, Webflow) via Jina Reader API. Sub-pages are automatically discovered and included.

Feature

Post-Generation Migration Validator

After generating a migrated website, an automatic validator checks: broken image paths, missing logo in navbar, insufficient image usage (requires 50% of available), object-fit issues, and content completeness via Gemini Flash. Issues are reported in the restart_frontend result and the AI fixes them immediately.

Feature

Automatic Project Type Detection

When creating a new project (Web App Builder plan), the system automatically detects whether the prompt describes a Website or a Web App and pre-selects the correct type. Uses Gemini Flash in the same request as title generation.

Feature

Parallel Image Download

Website migration images are now downloaded in parallel batches of 10 instead of sequentially. Reduces download time from 3-4 minutes to ~15 seconds for 60+ images. 90-second total timeout ensures the AI starts even if some images fail.

Feature

Smarter Model Selection for Migrations

Website and ZIP migrations now automatically use Claude Sonnet (instead of Haiku) for stronger instruction-following. Image mapping, content completeness, and language rules are followed more reliably.

Improvement

User-Uploaded Files Always Used

Files uploaded during project creation (logos, images) are now listed in the system prompt with usage instructions. Logos are automatically placed in the navbar. Previously, uploaded files were ignored during generation.

Improvement

Mobile UX Improvements

Portrait-only mode on mobile devices. Compact welcome screen with flexible textarea. Project type filters based on user plan. "Open Published" link in project menu. File upload error messages shown inline.

Improvement

Design Quality Prompt

New design quality rules for generated websites: bold color contrasts, asymmetric layouts, oversized typography, proper image sizing (object-top for portraits, aspect-ratio instead of fixed heights). Premium agency feel for migration projects.

Fix

Code Generation Prompt Improvements

Fixed: UUID primary keys use PostgreSQL native UUID type (not String(36)). Fixed: database.py template included in copy_backend_template. Fixed: Enum types require CREATE TYPE in migrations. Fixed: no alert(), no native select/date elements. Fixed: React Router BrowserRouter wrapping.

Fix

Publish Button Loading State

The Publish button now shows a spinner while the API call is in progress, preventing double-clicks. Build button in welcome screen resets after errors so users can retry.

Fix

Workspace Stability

Workspaces with dead nodes are now marked as STOPPED instead of deleted. Prevents data loss when runners are recycled. Fix Errors button only shown after generation completes (not during).

Fix

Stripe Plan Reconciliation with AI Tasks

The plan reconciliation tool now also adjusts AI Task balances when fixing plan mismatches. Shows adjustment details (+/- tasks) in the accounting dashboard.

Fix

Lambda Handler SSL Fix

Fixed published Web Apps failing with "connect() got an unexpected keyword argument sslmode/search_path". The Lambda handler now strips unsupported asyncpg connection parameters.

v1.0.45
Feature

Project Migration from ZIP

Upload a ZIP file of any existing project (Lovable, Manus, Base44, Bolt, Replit, or custom) and say "Migrate this". XAIO auto-detects the tech stack, downloads images to the media library, extracts design tokens (colors, fonts, icons), and rebuilds everything in the XAIO stack. Works with React, Vue, Svelte, Next.js, and more.

Feature

ZIP File Upload Support

ZIP files (up to 20 MB) can now be uploaded in the chat and media library. Contents are automatically extracted and analyzed. Source code files are provided to the AI for context.

Feature

Migration Pre-Analysis (XAIO.md)

When a source project ZIP is uploaded, XAIO auto-generates a migration reference with exact colors, fonts, icon imports, pricing data, and image paths. This ensures the AI copies content verbatim instead of inventing its own version.

Improvement

Generation Game Behavior

The Tic-Tac-Toe game now only appears during first-time project generation. It disappears as soon as the build starts. No more flash when reopening existing projects or "Ready to build" screen after generation.

Fix

Stripe Webhook Recovery

Fixed HTTP 500 errors on the Stripe webhook endpoint caused by a stripe v15 API change. Added a plan reconciliation tool to fix subscription mismatches from the outage period.

v1.0.44
Feature

Browser Locale Formatting

Generated apps now automatically use the browser's locale (navigator.language) for formatting dates, numbers, and currencies. A shared format.ts utility is created at project setup.

Feature

Documentation Site

XAIO documentation is now available at docs.xaio.dev. Accessible from the Resources section in the sidebar (all environments). Uses IBM Plex Sans/Mono fonts.

Feature

Deployed Commit Tracking

All services now expose the Git commit SHA via their /api/info or /health endpoint. Easily verify which code version is running in any environment.

Improvement

Generation Animation Reliability

The Tic-Tac-Toe game now only shows during first-time project creation and disappears when the frontend starts. No more flickering during subsequent chat changes. Variable AI difficulty makes the game more fun.

Improvement

Better Active Filter Visibility

Active project type filters and view mode buttons now use XAIO blue with a subtle border — clearly visible in both light and dark mode.

Fix

Workspace Duplicate Prevention

Fixed a race condition where duplicate workspaces were created due to different Redis key formats. All lookup paths now search across all key variants.

Fix

Preview Loading Guard

Preview iframe no longer loads when workspace is in READY/CREATED state (Vite not running yet). Prevents brief "503 not running" flash.

Fix

AI Tasks Depleted Handling

When AI tasks run out, the thinking spinner now stops correctly and shows a clear message with "type Continue after upgrade" hint.

v1.0.43
Feature

AI-Generated Project Titles

Project names are now automatically generated by AI (Gemini Flash) based on your description. Type at least 3 words and the title appears after 350ms. Lock it with the lock icon or edit manually anytime.

Feature

File Storage Quota

File storage usage is now visible in the integration settings. Shows current usage vs. plan limit with a progress bar. Enforced per plan (Free: 50MB, Starter: 500MB, Pro: 5GB, Enterprise: unlimited).

Feature

Runner Pool Status

The workspace status bar now shows the runner pool status for developers and admins.

Improvement

Better AI Error Messages

When the AI service is temporarily unavailable, a friendly localized message explains the situation and tells you to continue by typing "Continue". Your work is always safe.

Improvement

Chat Message Recovery

After an AI error, chat messages are now automatically restored from the server. No more missing messages — just refresh if needed.

Improvement

Code Generation Standards

Generated code now follows stricter standards: UTC timestamps everywhere, mandatory database transactions, no native browser dialogs (alert/confirm), no native select/date inputs — custom Tailwind components instead.

Fix

Chat Avatar

Uploaded profile pictures now correctly appear in chat messages instead of showing a letter avatar.

Fix

File Storage in Published Apps

Fixed S3 upload handling in published apps: correct Lambda permissions, proper botocore packaging, and CSP headers for presigned URLs.

Feature

Clone Project

Duplicate any project with one click. The clone copies all source code, screenshot, and settings — but starts with a fresh chat and no git history. Enter a new name in the dialog (pre-filled with "Project Name (Clone)").

Feature

Escape to Close New Project

Press Escape while in the new project form to close it and return to the project list.

Improvement

Faster Workspace Startup

File checks and workspace lookups now run in parallel, saving 1-2 seconds when opening a project.

Improvement

Smarter Code Editing

The AI now avoids redundant edits — one Edit call per file instead of repeating the same change multiple times. Also checks for existing code before copying templates on cloned projects.

Fix

Workspace Runner Stability

Corrupt node_modules archives are now handled gracefully instead of crashing the workspace startup.

Feature

Startup Progress Indicator

When opening a project, a task-based progress overlay shows which steps are running: Workspace, Backend, and Frontend startup — each with elapsed time, estimated duration, and a progress bar. Completed steps show a green checkmark.

Feature

Tic-Tac-Toe Typewriter Intro

"Shall we play a game?" now appears letter by letter in a typewriter effect before the Tic-Tac-Toe board reveals. The animation starts only when the preview panel becomes visible.

Feature

Smooth Preview Panel Transition

When code generation starts, the chat smoothly shrinks and slides left before the preview panel fades in. The Tic-Tac-Toe game appears immediately after the animation.

Feature

File Upload to Workspace

Upload files directly to the workspace runner for use in your project.

Feature

Storage Usage Tracking

Project storage usage is now tracked and visible. Helps you manage resource consumption across your projects.

Feature

Student & Pupil Verification

Students can verify their status using a university email (SWOT database) or by uploading a student ID for manual verification.

Feature

New AI Models

Added support for Claude Haiku 4.5, Claude Sonnet 4.6, Claude Opus 4.6, Gemini, and GPT-4o in cost tracking and billing.

Improvement

Faster Preview Loading

Reduced the grey overlay delay from 600ms to 150ms. Preview appears almost instantly after the iframe loads.

Improvement

Mandatory Integration Check

After plan confirmation, the AI now always checks available integrations before generating code. Database and API integrations are requested upfront instead of being skipped.

Improvement

Smarter File Storage Handling

Improved AI prompt for file_storage integration to prevent credential mishandling.

Fix

Concurrent Database Migrations

Fixed race conditions in database migrations using advisory locks. Schema names starting with digits (UUID-based projects) now work correctly.

Fix

Published App API Docs

Fixed OpenAPI docs routing for published apps on *.xaio.app — API docs now load correctly through the API Gateway.

Fix

Stripe v15 Compatibility

Updated management and accounting services for Stripe SDK v15 compatibility. Pinned all dependencies for reproducible builds.

Fix

Workspace Runner Stability

Prevented silent Vite startup failures with bun install retry and startup guards. Added boto3 for S3 file operations.

Feature

XAIO.md — Project Knowledge File

Every project now has an XAIO.md file that stores the design system, conventions, and important decisions. Created automatically after the first code generation. Persists across all chats — every new conversation respects the same design decisions. View it in the Files tab or Project Settings.

Feature

Image Analysis in Chat

The AI agent can now read and visually analyze project images (JPG, PNG, GIF, WebP). Ask it to describe any image in your project.

Feature

Project Type Conversion

Convert Website to Web App (and back) directly in Project Settings. Backend code is automatically initialized or archived.

Feature

Simplified Chat Management

Redesigned chat selector for non-technical users. Create new feature chats with a simple name input. Git branch details hidden under "Advanced". Each chat shows user avatar and message count instead of branch names.

Feature

Apply to Project (Merge)

New "Apply to project" button in the chat selector merges feature chat changes into the main project with one click. Applied chats are shown separately with a green checkmark. Status persists across page reloads.

Improvement

Git Branch Actions Simplified

Branch actions (Pull, Push, Sync, PR, Checkout, Delete) are now always-visible icon buttons with instant tooltips instead of a hidden 3-dot menu. PR button moved from toolbar to each branch row.

Improvement

Performance Rules for Generated Code

The AI no longer generates GPU-heavy infinite animations combined with blur effects. One-shot animations and gradients are used instead for cinematic designs.

Improvement

Documentation Overhaul

All documentation pages updated. New journey-based navigation (Describe > Build > Integrate > Ship > Manage). SEO/GEO optimization with pre-rendering, sitemap, and FAQ schema.

Feature

AI Image Generation

The AI agent can now generate custom images for your project on request. Just ask in the chat, e.g. "generate a hero image for my landing page". Unsplash remains the default for stock photos.

Feature

Project Type Conversion

Convert your Website project to a Web App (and back) directly in Project Settings. Backend code is automatically initialized or archived.

Feature

Image Analysis in Chat

The AI agent can now read and visually analyze project images. Ask it to describe or analyze any image in your project.

Feature

Team Permissions & Ownership Transfer

Manage team member roles, invite collaborators via email, remove members, and transfer project ownership.

Feature

Media Library Download

Download any asset from the Media Library with the new download button. AI-generated images now show a "Generated" badge.

Improvement

Smarter AI Cost Optimization

Simple requests like text or color changes are automatically handled by a faster, cheaper model. Complex multi-file features still use the most capable model. This saves significant AI Tasks.

Improvement

Redesigned Project Creation

Project creation is now prompt-first: just type your idea and go. No more modal steps needed.

Improvement

Project Settings Redesign

Project Settings now show a screenshot preview, color-coded project type badge, owner with avatar, and ownership transfer option.

Improvement

Modern Email Templates

All transactional emails have been redesigned with a clean, modern look including the XAIO logo.

Fix

Published Sites

Fixed blank pages on published sites (*.xaio.app). PostgreSQL schema is now pre-provisioned for faster publishing.

v1.4.1
Feature

Resizable Chat Panel

Drag the chat panel edge to resize it. The toolbar header adjusts automatically.

Feature

Hosting Options: XAIO Cloud & Private

Choose between XAIO Cloud hosting (managed) and XAIO Private (self-hosted) when publishing your project.

Improvement

Smarter Toolbar

Toolbar buttons are now disabled during AI generation instead of hidden. No more flickering or layout shifts.

Improvement

Upgrade Badges

Features that require a higher plan now show upgrade badges consistently across all environments.

Fix

Published Web App Database

Fixed multiple issues with database schema creation and connection handling for published Web Apps on *.xaio.app.

Fix

Promo Code Validation

Fixed issues with promo code validation and discount application at checkout.

Fix

Document Attachments in Chat

Document attachments (PDFs, images) are now resolved correctly in all chat messages, not just the latest.

v1.4.0
Feature

Notification System

Get notified when your code generation completes, team members join, or AI Tasks run low. Supports Slack, Discord, and Telegram channels.

Feature

Database Browser (Dev & Prod)

Browse your project's PostgreSQL database directly in the workspace. Switch between Dev and Prod environments.

Feature

Avatar Upload

Upload a profile picture in Settings. Avatars are shown in the team panel and project settings.

Improvement

Dark Mode Polish

Improved dark mode across notification settings, PostgreSQL integration modal, and database manager.

Fix

Workspace Stability

Workspace now stays alive while the AI agent is working, even when switching browser tabs.

v1.3.0
Feature

Promo Codes & Discounts

Enter promo codes at checkout for discounts on plans and AI Task add-ons.

Feature

Password Strength Indicator

Signup and password change forms now show a visual password strength indicator. Strong passwords are enforced.

Feature

Community Page

New community page on the marketing website with resources and links.

Feature

Redesigned Landing Page

The marketing website has been completely redesigned with a dark premium theme and featured projects showcase.

Improvement

Secret Detection

Improved detection of passwords and secrets in chat messages to prevent accidental exposure.

Fix

Referral Flow

Signup modal now opens automatically when visiting with a referral link. Language preference is sent during signup.

v1.2.0
Feature

Chat Message Queue

Store messages for later sending with the new queue feature below the chat input.

Feature

Animated Sidebar

Smooth expand/collapse animations using framer-motion.

Improvement

Long Message Truncation

Messages over 10 lines or 500 characters are now automatically truncated with Show more/less.

v1.1.0
Feature

Escape Key for Modals

Press Escape to close any modal or dialog across the application.

Improvement

Chat Input Brand Colors

Chat input now uses the XAIO brand color #2663eb when focused.

v1.0.5
Fix

Design Mode Source Mapping

Fixed issues with element selection not correctly mapping to source files.

Infrastructure

Preview Performance

Improved preview loading times by 40% with better caching.