Home
Blog
Product Updates
Blog
One Quasar Assistant Across Your Aveiro Workspace
How to Run Sponsored Banners on Your Aveiro Site
What Aveiro’s Product Hunt Launch Day Actually Looked Like
Seedance 2.0 Comes to Aveiro — With Video Uploads and Bunny.net Under the Hood
Connect Aveiro to Any AI Agent in 10 Seconds — One MCP URL
How to Migrate from Squarespace to Aveiro
Integrating ByteDance Models Directly: What We Learned Building Aveiro
Auto-update Docs and Blog with Cursor Cloud Agents and the Aveiro API
What Is Connected Publishing?
Website CTA Analytics: Beyond Page Views
How to Connect a Custom Domain on Aveiro
Edit Your Website with AI Without Breaking Layout
Build a Portfolio Website on Aveiro
The Hidden Cost of a Fragmented Publishing Stack
How to Start a Newsletter From Your Website
Build a Documentation Site with Collections and MDX
Embed a Signup Form on Any Site
Your First Week on Aveiro
Updates
Grid Videos With Player Controls, Cover Images, and 9:16
Private media delivery — draft images stay gated until you publish
Product screenshots from live pages
Site Wizard Live Preview and Style Presets
Frametic Studio — Full Mockup Editor in the Dashboard
Quasar Max Video — Alibaba Wan 3.0 Clips in Aveiro
Translation Unpublish, Tab Polish, and Shop Accordion Copy
Per-Language Publish Switches in the Main Menu
Platform hub, mega menu, and developer pages
Broken Blocks Warning Names Pages
Visitor Chrome Translations on Live Sites
Translation Metadata Stale-Flag Fix
Social Move to Review and Product Image Picker
Translation and Monetization Hardening
Native Digital Products and a Storefront on Your Site
Landing Polish, Sponsorship Checkout, and Style Overrides
Aveiro Homepage Narrative Redesign
Video Poster Frames, Repost, and AI Disclosure
Social Connect Feedback and Editor Re-Approval
Org-Wide Newsletters Can Pick a Host Site
Dashboard Home, Onboarding Personalization, and Campaign Tweaks
Newsletter Web Archive — Publish Sent Campaigns as Site Pages
MCP Stdio Social Parity and a Taller Website-Mockup Wizard
Collection Blocks on Translated Pages Show the Right Language
MCP Tool Safety Hints — Hosted and Stdio Servers Now Match
Engagement Metrics on Published Posts — See What Sent Posts Did
Website Mockup Videos — Film a Live URL Into the Social Library
Translation Progress Fix — Stale Retranslate Totals and Readiness Refresh
Orbit Rename and Social Review Polish — Hover Cards and Add Menu Connect
Dashboard Polish — Published Post Summary, Ad Auto-Save, and Asset Previews
Translation Language Limits by Plan — Pricing Page Shows Language Allowances
Localized Sidebar and Header Navigation Titles
Translation Jobs Now Translate Page Metadata Text
Retranslate Jobs: Progress, Completion, and Republication Fixes
Instagram Story Publishing — Feed and Stories From One Draft
Agent Authoring Guide, Site Media API, and Advisory Lint
Social Engagement Metrics for Agents — Learn What Performs Before You Draft
Editor Polish — Media Breakout, Toolbar Fixes, and Ad Banner Cards
Locale-Prefixed Nav Links and Translation Publish Guards
Ad Placements on Layout Templates — Per-Template Overrides
Ads in the Layout Tab — Chrome Overrides, Live Preview, One Disclosure Label
Premium Ad Banners Beta — Organization Inventory on Every Site
Newsletter click tracking by element
Searchable Orbit Space Picker — Find Spaces in Large Hubs
Org Assets AI Composer — Image and Video With Reference Attachments
Plan Storage Limits — Metered Bytes at Rest for Media, Video, and Agent Uploads
Org-Wide Asset Management — Browse, Bulk Move, and Delete in One Place
Direct Media Uploads for Agents — Push Local Images and Videos Without a Public URL
Social Update — Publishing Credits Pool
Social Fix — First-Comment Outcome on the Post Row
Social Update — First Comments Publish With the Post
MCP Fix — Per-Platform First Comments on the Stdio Proxy
MCP Marketplace Template Clone — Bootstrap Sites from the Gallery
Homepage Rework — Template to Publish, Free Trial, and MCP for Agents
Usage Counters Now Reset on Your Billing Cycle
Social Dashboard: Post Sections, Scheduling Picker, and Platform Comments
Social Dashboard: Upload Aspect Ratios and New Post Dialog
MCP Fix — aveiro_update_page Retries on Revision Conflicts
LinkedIn Joins Social Publishing — Personal Profiles and Company Pages
Quasar Max Chat Upgrades to Claude Sonnet 5
Recoverable Failed Social Posts
Social Caption Guards and Safer Publish Dates
Media Library Folders and Unified Picker — One Org Library Across Sites
Newsletter Agent API and MCP Tools — Draft Campaigns from Cursor and Claude
Plain-Voice Quasar Chat Errors
Clearer AI Credit Messages and Fewer Continue Prompts
MDX Placeholder Tags Render as Text
AI and MCP Page Reordering — Move, Sort, and Reorder Site Structure
Translation Jobs: Live Progress, Cost Estimates, and Cleaner Pickers
Translations UI Polish and Connect Claude
Character References for Social AI Media + First Comment Field
AI Video Generation — Short Clips from the Site Editor
Social Org Media Browsing and Register-by-URL — Reuse Dashboard Uploads in Agent Drafts
MCP Fix — tools/call Accepts null and Stringified Arguments
MCP Fix — Parameterless Tools Work Without an Arguments Field
Multi-Aspect AI Media for Social Posts — Platform Crops in One Call
Social Agent API and MCP Tools — Draft Posts from Cursor and Claude
Social Publishing Beta — Draft, Approve, and Schedule Instagram and Threads
Once UI Effects on Published Sites
MDX Code Blocks and Smarter Validation
Subscribe Users from Your Product with the Audience API
Agency Template Blocks Are Now Reusable Page Builder Components
Sell Merch on Your Aveiro Site with Fourthwall
Visitor Login and Support Chat on Your Site
Safer AI Edits and Publish Guards
Newsletter Deliverability Dashboard
TrademarkTrademark
Ctrl k
Search…
Sign up
Sponsored
Aveiro
aveiro.app
TrademarkTrademark© Aveiro. All rights reserved.
Built with Aveiro

Private media delivery — draft images stay gated until you publish

Uploads now return canonical /api/media paths instead of world-readable Supabase URLs. Aveiro signs at read time for live visitors, gated draft previews, and social platform fetch — unpublishing or deleting an asset revokes access.
Updated 3h ago
Grid Videos With Player Controls, Cover Images, and 9:16
Product screenshots from live pages
In short
Site and org media no longer rely on world-readable Supabase URLs. Content stores canonical /api/media paths; Aveiro signs them at read time so draft images stay private, unpublishing revokes visitor access, and social platforms fetch through revocable share grants.

What changed

Previously, every upload returned a Supabase public URL and that absolute link was persisted into MDX, settings, ads, and social drafts. Anyone holding the URL could fetch the bytes — including images on sites that were never published. Media now flows through /api/media/<key> with authorization carried in the URL:
  • Published pages sign media for visitors while the site is live; unpublish revokes standing access.
  • Draft previews sign only for org members who already have site access — otherwise references stay bare and resolve to 404.
  • Social publishing mints a per-asset share grant so Instagram, LinkedIn, and similar platforms can fetch server-side without a session; deleting the file revokes the grant.
Stored values stay unsigned so one reference works for visitors on a custom domain and for members in the editor. Legacy Supabase URLs in older content are still recognised — no migration required.

For agents and API callers

Upload responses (POST …/media/upload, social direct upload) now return a canonical publicUrl like /api/media/site-media/{siteId}/…. Persist that path in <Media src> or page metadata — not the signed displayUrl from list responses. Details: Site media API, Social media API. Dashboard behaviour: Media library.

Also in this release

  • Email campaigns rewrite media to absolute share-grant URLs at send time. Stored HTML keeps canonical /api/media paths; inbox fetches never rely on a browser session.
  • Campaign previews use session cookies on bare paths instead — the iframe is on our origin and cannot sign HTML composed on the client.
  • Site settings and collection listings now sign logo, favicon, default OG cover, and folder thumbnails on read.
  • Dashboard editor and settings sign page MDX, metadata, site settings, and site-list covers on read so images no longer break in the editor; saves canonicalize grants back to bare paths before storing.
  • Newsletter editor and social thumbnails use the same read-sign / write-canonicalize round-trip — member-facing surfaces that still stored bare /api/media paths.
  • API and form validators accept canonical /api/media paths alongside https:// URLs, so attaching a library image to a social post no longer fails with "Invalid url".
  • Member preview URLs quantize expiry windows so media-library thumbnails cache correctly in next/image.
  • Template gallery sites — visitor media access is gated by whether your site is still published, not by who uploaded the file. Cloning copies MDX and settings verbatim, including /api/media/… paths that may still point at the template source; those images load on your live site and stop when you unpublish.
  • Dashboard home and showcase gallery — Recent Sites cover thumbnails and public showcase cards sign on read with member or visitor grants; showcase covers stay root-relative on the platform origin.
  • Shop product images — attach from the media library (canonical /api/media paths, not only https:// URLs) and sign on every read: product editor hydration, live product pages, the Products block, and Product Showcase blocks grounded on the site being viewed (visitor grant on a published site; member grant in draft preview).
  • Frametic failed renders can be dismissed per browser; the assets grid reserves placeholder slots so finished renders do not jump the layout on load.