What's new in Ved Studio
Every feature, improvement and fix as it ships — straight from the studio's own release history, newest first.
Newsletter subscribers in the operator console
Changelogb9c0ed5
Categorised timeline with search and filters
Footer rebuilt to the reference; thumbnails retry until the capture lands; changelog and careers pagesf00c161
Second language for a site71ad219
Hindi (or another Indian language) beside English, translated by AI, switched on every page
Google Business reviews import and an Instagram feedebe43bc
Product variants with stock per combination57b2ac8
Booking slotsfb39225
Opening hours, capacity per slot, closed dates — the form offers only open times and the server refuses the rest
Weekly site health email every Mondayafaf60b
Team roles53551b0
Manager (business side) and staff (orders + kitchen only)
Gemini key tier switch (free/paid quotas, 60s 429 cooldown on paid); templates compile once per worker3b923d5
Docs page rebuilt to the reference16df121
Docs top bar, grouped sidebar, guide article, right rail
FAQ page rebuilt to the reference8d63600
Help-centre hero, category tiles, topic rail, grouped accordions
Legal pages (Terms, Privacy, Refund) rebuilt to the reference designc1e7953
Contact messages land in the operator console5b92440
Contact form no longer pre-fills name and emailcb51930
Pricing and Contact pages rebuilt to the reference designs; contact form takes attachments and sends a copyf4b959d
Templates and Compare pages rebuilt to the reference designs; hand/radius tokens7fe65f0
Features and About pages rebuilt to the reference designs91cc77b
Templates85ac6db
Offer any built site as a template, /templates page, Use this template → your own draft
Server-side validation on every visitor form; Resume build fixes first; navbar marks the current page1a29610
Fix itae33fba
One button that repairs whatever stops the site from building
Examples wall redesigned to the referenceeb0052e
Proof row, search, filter chips, badges, CTA band
Next prerender crashes are repaired, not fatal; /demo opens a real siteab5088b
Public pages a business needs before it pays595fac9
Refund, contact, FAQ, examples, compare, about
One navbar on every public page396baa2
Workspace says when the draft is ahead of the live sitedeee422
Code tab7c1ce9a
The database card's steps read as plain sentences (inline code broke the line wrap).
The download runs anywherede57748
A self-hosted backend ships with the code and the data.
Orders6b7fcda
View opens a modal with the complete order — header with status chips, progress steps, items with pictures, timeline, payment breakdown, customer + ship-to + courier, quick actions, Shiprocket, GSTIN/referral/shipment fa
Orders531f538
The View panel opens again (the Ship with Shiprocket button referenced isNew, which only the edit modal defines).
Kitchen screen792684e
Accept / Done / Cancel go through the orders route (timeline, customer mail, WhatsApp, stock), not the row-status route that 404'd.
The data ships with the codeff9ead5
Data/export.sql in every download, and Download SQL on the Code tab.
/featuresa593c23
The public page with everything the studio does.
Documentation tab154ac61
Everything about a site in one place, written from the site itself.
Workspace menuf690ae2
Design.md is a menu item like the others (padding, hover, palette icon), not a bare button.
AI credits42e7c58
A monthly pool per plan, weighted by model, packs priced per credit.
Pricingdb9a6cf
Plans below the current one say Downgrade, and Free can be chosen.
'Continue with Google' works on every sitee8e5ffd
Platform /api links are never prefixed.
GST tax invoices, and delivery-rule saves no longer wipe the shop's other settings70b02e7
Shiprocket on the owner's own account49edeaa
Push notifications for site owners, and the studio is installable6344611
Reviews with photos on the product page, and one wishlist6a1ea9d
Coupons with rules812d43d
Inventory that cannot oversell, and order updates on WhatsAppb723530
Optimizee9d3e7c
The site dashboard ships only its tab's JS, templates compile at boot, build bundles are pruned, the suite runs in parallel.
A NUL byte in the path (scanner probes like /.env%00) is a 400, not a 500f15dff4
Google for the studio login too, random passwords mailed, and a product picker in Add order369f91e
Continue with Google for site customerse425a42
My orders redesigned per the reference51b64e4
Search + period filter, status chips with counts, order card with status pill, Receipt/PDF and a ⋯ menu, a progress line with per-step dates read off the order's timeline, a status banner (received / confirmed / packed /
An order marked Done while the parcel is still Packed is packed, not delivered84bf3d7
Customer dashboard, the full set17efc63
Wishlist, tracking, returns, wallet, support, notifications, security — plus the cart drawer, the Customers page and the image library.
Customer accounts on every site, and the dashboard redesigned5500dba
accountsc7f2cc6
An auth-related ask on a site without a cart provisions the cart runtime + the four account pages; the edit's working copy picks them up
Customer accounts on every shop, for real3758771
Sign up / sign in / forgot + reset / account dashboard as platform pages (accountkit), a per-site session cookie, /api/c/{sid}/me/* routes, welcome mail with the sign-in details, reset mail, nav 'Sign in' → 'Hi, Name', c
Carted1c42c
Three mini-cart looks (drawer / popover / modal) and three cart-page layouts (summary with stepper + Order Summary / table / stack), picked per site and switched from the editor with 'cart layout change'; the floating ca
settingsa0f6456
The Active/Inactive switch handler lived in the Billing view — clicks in Settings flipped the toggle but saved nothing; moved
Plan change no longer fails when Stripe's product was archiveded88e64
The new price goes on a live product of ours (one per plan, remembered per mode)
Owner audit log redesigned (stat tiles, Activity history with tabs/search/range, event chips, target links, details, IP,2bdd699
Platform AI keys get an Active/Inactive switch (Settings → AI engines). Inactive56877fb
The key stays stored but is used nowhere — platform_key reads empty, readiness says no, the router skips the provider, the editor picker shows it as not available.
owneraed399c
.sel keeps the native select appearance
Owner console7180b91
Row checkboxes showed no tick — class .sel collided with the dropdown style (36px, appearance:none). Renamed to .rowck; every checkbox in the console now draws natively in the brand colour
Studio 404 pagefffe6f2
Nav, 'This page took a wrong turn', the path asked for, Back to dashboard / Go back, help links, illustration; HTML 404s anywhere in the studio use it (API/assets keep JSON/text)
billing97116fd
A zero prepaid balance says why (nothing bought; the plan's daily calls already apply)
Billing page in tabs (Overview · Payments · AI credits · Plans · Invoice details) with the mock's plan card, next-bill b6028bb9
Billing page loaded nothing for operator-granted plans86b8ff2
The credits wiring ran without its card (null textContent) — now guarded; the renewal amount comes from the subscription's own plan, not the plan in force; the real error is logged
Forms2ad5e09
Real validation on every generated form + spam scoring + bulk spam/delete in the inbox
Rupee AI-cost figures are the operator's view onlyf8e17b2
Customers see calls (dashboard cards, site Overview usage card, Storage uploads, Match photos dialogs), never a ₹9.95 beside a ₹499 plan
Stop stops the build, not only the record68061d0
The writers refuse to start a section once Stop is pressed and the pool drains, the compile loop and both stack gates ask jobs.check() before every build and every repair prompt, and a compile already running (astro/next
Astro project laid out the way docs.astro.build says and described as one3c11024
Tsconfig extends the strict preset with .astro/types.d.ts in include (typescript guide), src/env.d.ts carries astro/client types (the vite-env.d.ts it replaced), and the Code tab names the Astro layout — React .tsx secti
The person's first message is stored once (kind + details repeated the opening; the fold cut it mid-repeat) and older ro47b9531
A short fade on the last line only, no stray ellipsis, an inline Show more/Show less with a chevron and aria-expanded, animated open/close, the pasted brief folding tighter than an answer
bin/keep_recent_sites.py624cb5d
Operator tool — keep an account's N most recently edited sites, move the rest to the Trash (soft-delete, 30-day restore); dry run by default, --apply to act
The four steps after the research6f26102
(1) a critic pass — one whole-site review after the compile, its findings applied through the edit door, budget-aware, a 'Reviewing it as one site' checklist row and a line in the finish message; (2) parallel restyle was
Pictures are judged before they landa8d6881
Generate → look → judge → retry. A vision call scores each generated image against the context — the business, the slot (hero/dish/team/logo), the brand's palette and mood, the person's words — and hard defects (wrong su
Account pages are frontend-only, by the owner's callad13a89
The member backend (routes, table, session cookie, runtime, owner panel) is removed; Sign in / Sign up / Forgot / Reset / Account sections are written as complete UI — validation, submitting and success states, show/hide
When a model answers badly the ladder moves on and the work resumes46e1322
A blank, cut-off or unusable edit answer is retried on the NEXT rung (ai._raw_text avoid=…; HTTP status moved the ladder, a 200 with garbage did not — the same tired model was asked again and 'the AI's files weren't usab
Every edit on a site with a provisioned cart failed to compile6881b37
Data.ts exported CURRENCY only for shop briefs, and cart.tsx imports it — so 'login signup pages create kro' ended in 'Nothing was saved' on every model. The typed shop view is now always exported (empty when there is no
Visitor accounts, end to endace8bf3
A Sign in page posted to the enquiry inbox ('Thanks — we'll get back to you') because the platform had no member backend. memberkit adds one — site_members table (scrypt), /api/m/{sid}/signup|login|logout|me|forgot|reset
Requested auth pages are not 'dead doors'897264c
The functional lint's no-visitor-accounts rule stands down for auth sections and for sites that have auth pages — it had the model rip the Sign in link out of the very pages just asked for. Page asks (plural, auth, sign
Pages asked for in the chat land as pages236dd64
Every <vh-page> line in an answer is honoured (only the first was — 'auth pages banao' put Sign Up and Forgot Password on the home page), a section a page line seats is never ALSO appended to home, page-kind sections (Au
Packages on request4aee624
An npm package the person names is INSTALLED for their site, not refused — the editor answers <vh-install>name</vh-install>, the platform resolves it on the registry (real, current, under 40 MB, in real use), installs it
Handed code, a library, an embed or a script, the editor decides in the openf6cdf49
Use what fits (markup, CSS, Google Fonts, https media, lists as Data-tab tables, allowed embeds) in the right place; build the nearest supported equivalent for what the platform cannot take (an npm package outside the in
A redesign asked in the chat is a REBUILD, not an edit03a0a7b
'website fully frse banao … light mode … more pages' re-plans pages, home sections, style and palette from the new words (the judge writes the planner's brief, filling what the person left unsaid), drops the old design d
The chat's judge covers the case families the reference assistants handle57b84ae
No/partial/deferred answers to a proposal, 'same as before' and 'thoda aur' resolved from the last change, question+ask in one message, complaints, off-topic and how-do-I questions (answered from a product map: where eve
The judge and the discuss path know what is true right nowf6a0855
The date, that they are the Ved Studio assistant, which engine/model is writing, the site's name/stack/pages/status — so 'aaj date kya hai' and 'which model is being used' get answers instead of deflections; a bare yes a
The chat READS short messages before deciding806cda2
A small-model judge (site outline + last turns in view, cheap tier) classifies chat / question / instruction / unclear and writes the reply in the person's own language — 'ky ho rha h' gets a status answer in Hinglish in
Chat follow-ups33a8b2c
An intent gate before any model call (greetings, acks and bare fragments answered in fixed words — 'hii' no longer edits four files), a <vh-none> no-op answer both edit prompts may give (the blank-answer retry only pushe
One brand across the studiodb48ff3
Every hardcoded green, slate, amber and red literal in the 26 studio pages resolves to a theme token — the workspace's dark theme is indigo-dark (lifted --brand for text, --brand-fill under white), the landing and sign-i
Studio theme6043a2f
The green gives way to indigo — both :root blocks in theme.css resolve onto the new palette (brand #4149ad, slate neutrals, AA text rungs), the logo mark and brand hover follow; selectors untouched
A crop of the site's own page is never an uploaded logo1e6ad6d
Readable text found in the site's source (or wrapping the business name) re-marks the image as a screenshot of the current site — the note leads with that, and the URL is struck if placed as content (StackOver: 'fix with
Owner Image library redesigned2a00cc5
Header with source segments / status / Import / Upload, full-width search, count + sort + grid/list toggle, square cards with AI badge, title from tags, JPG · size · KB · cost meta, Edit tags (inline) · Describe · ⋯ menu
D22df21fdd
Every published site is installable — web-app manifest, generated 512px icon in the brand colour, iOS tags, and an 'Add to home screen' hint on the second phone visit (own domain and studio address)
D21fa74235
At 80% of the day's AI calls the editor shows a one-line nudge (calls left, prepaid after that, Add calls / Bigger plan), dismissable for the day; the email nudge already ran hourly
cartkitb209530
The hold hook compiles under strict TS (cartState import, typed map)
D208bbb73f
Abandoned-cart reminder — an email typed at checkout holds the cart 48 h; an hour later, with no order from that address, one reminder goes out from the shop with a link back to the cart (never a second). Review request
kitchen2964955
Shared theme tokens, phone rules, covered by the template audits
kitchenb2b01e8
Phone rules; covered by the template audits
D1715b1dd7
Kitchen screen — /site/{sid}/kitchen for the counter: open orders as big cards, a ding on a new one, Accept/Done/Cancel in one tap, printable slip; owner or team member
D16f5488a7
The site chatbot answers on WhatsApp — Meta Cloud API bridge (verify + inbound webhook, replies via Graph API, per-number conversations, redelivery-safe), configured under Chatbot → Settings
D1578bac2c
Duplicate site — a complete copy (document, brief, tables with rows, media, shop rules) as a new draft; POST /api/site/{sid}/clone also serves a gallery 'Start from this site' for showcase-marked sites
C14b0eab7a
A shared page always has a picture — the site's own screenshot becomes og:image (large card) when none is set
C136023728
Goals in Analytics — forms sent, bookings, WhatsApp/call/email taps (counted on every live page by a keepalive listener, no identity), orders; conversion rate against visitors
C122184921
A question in the composer is answered, not applied — Discuss switches on by itself for '?' / what-why-how / kya-kaise prompts (never for an instruction or a screenshot)
C1134985d0
Bulk edits in Data — change prices (+10%, -50, =199), set category, set stock for selected rows; styled vhPrompt dialog
C9908ec0c
WhatsApp link on an order opens with the order prefilled; C10: delivery pincodes — a shop lists where it delivers and checkout refuses an address outside it with the reason (delivery fee / free-over / minimum / bulk alre
B7e1db35c
Failed Stripe/Razorpay webhooks ring the operator bell; B8: form posts that are link farms or the usual pitches are filed as spam quietly
A4d9e56fb
Every below-the-fold <img> in generated sections is lazy + async-decoded (hero stays eager); B6: safe CSP in Caddy (object-src none, base-uri self, form-action self+gateways, upgrade-insecure-requests). A5 measured: pers
A3c2699bd
Site_versions/sites InnoDB-compressed (96 MB → 20 MB); keep 10 newest versions per site
A2099b20e
Every section that came back empty gets a second pass on another ready provider
A13d658af
A published site never builds inside the request
Three log-found fixese9fd6eb
Shop Stripe sessions ignored by the pack webhook (was a 500 Stripe kept retrying); db.delete_collection exists (build cleanup of empty planned tables crashed); a same-fingerprint build race no longer moves into an existi
Published sites never go darkdf49396
/app serves a chunk from the site's other bundles (404, never HTML), and the published bundle is pinned against the prune
Platform tables (order/enquiry/subscriber) always carry the platform's columnscecf185
Preview rebase script steps aside for a button inside a card linkba86531
Add to cart works on home and product pages
homecb581cc
Lock icon radius from the scale
Next bill estimate (renewal + AI packs this period + auto top-up pace); packs are their own revenue linee9ec2a8
Nothing matches — try another word.