updated weekly · subscribe via GitHub releases

Changelog.

Every meaningful change shipped to ScreenStack. We collapse related commits into one entry so this reads like a release log, not a git log.

month

June 2026

12 changes

  1. feature

    Widget captures · SDKs grab a single component, editor floats it

    Both SDKs learned to capture a single widget instead of a whole screen. Flutter: set widgetKey: in screenstack.yml; the runner finds find.byKey(ValueKey(...)), walks to the nearest RenderRepaintBoundary and rasterizes with toImage(pixelRatio). JS: kind: widget on a target uses Playwright element.screenshot({ omitBackground: true }) so the PNG is transparent outside the element. The editor gains a first-class widgetCapture element kind with drop-shadow presets (Subtle / Pop / Bold / None), corner radius, and 3D tilt — so a captured card pops out of the device frame underneath, marketing-screenshot style.

  2. feature

    SEO surface · /for/* landing pages, /screenshot-sizes, /faq, /alternatives/*

    Shipped keyword-first titles, SoftwareApplication + FAQPage schema, the /screenshot-sizes 2026 reference, an 11-question /faq with grouped categories, and the first two competitor comparisons (/alternatives/fastlane-snapshot, /alternatives/applaunchpad). robots.txt now explicitly allows GPTBot, ClaudeBot, PerplexityBot, and Applebot-Extended.

  3. feature

    Studio Plus tier · ProPlus entitlements wired through webhooks

    New SubscriptionTier.ProPlus that grants 100 AI tokens/month + priority capture queue + custom device profiles on top of Studio. Stripe webhook reads the price ID and routes to the right tier automatically. Marketing CTAs now bounce through /app/upgrade?tier=… for end-to-end checkout.

  4. feature

    Real Stripe prices · screenstack_studio_monthly, screenstack_studio_plus_monthly

    /pricing was a fiction — Free + Studio $19/mo + Studio Plus $49/mo, but Stripe only had the $49 lifetime price. Created both monthly prices in Stripe, deactivated the lifetime, plumbed tier-aware checkout through the API. The page and the checkout now match reality.

  5. feature

    Light theme · real CSS-var theming, user toggle in /app/settings

    Tailwind colors flow through CSS vars now, so adding html.light flips surfaces/text/borders without a codemod. Brand greens + M3 accents stay accent-y. Pre-paint inline script honors ?theme=light → localStorage → prefers-color-scheme to avoid a flash. /app/settings has a System / Dark / Light segmented toggle that persists per-device.

  6. feature

    Admin endpoint · grant org tiers without raw SQL

    New /admin/organizations/{orgId}/tier endpoint (PUT/GET) gated by an env-controlled allowlist (ServiceAuth__AdminUserIds). Mirrors the closed-by-default pattern from CiBearerPolicy. Useful for granting Pro to dogfood orgs or comping accounts without round-tripping through Stripe.

  7. fix

    Export limit · batch-size check + per-export accounting

    PublishCanvasExports counted a 10-export publish as 1 unit against the monthly cap — orgs could sail past their limit forever. Now: batch rejects if it would exceed remaining quota, and RecordUsageAsync increments by results.Count instead of 1.

  8. feature

    In-app marketplace · /app/org/{orgId}/marketplace + tier-aware checkout

    Marketplace was unreachable from inside /app/*. Sidebar gains a Marketplace item; new /app/.../marketplace and /[slug] routes browse + clone templates without leaving the workspace shell. "Use this template" now actually fires the checkout API — free templates clone straight into the editor, paid templates bounce to Stripe.

  9. fix

    Editor safe-area bands · optional via DeviceFrameSvg props

    The dark bands originally added to mask captured nav bars now hide perfectly clean empty space when the SDK + .pt-safe cooperation pushes the captured header below the Island zone. DeviceFrameSvg accepts safeAreaTopPct / BottomPct overrides; HeroShotTile passes 0 for both so phones show full captured content instead of giant dark voids.

  10. feature

    Mobile safe-area + UX/SEO sweep

    viewport-fit=cover, .pt-safe / .pb-safe utilities, Apple PWA meta. SiteHeader, ToastHost, Modal reserve space for the notch / home indicator. Plus error boundaries, loading skeletons, aria-current navigation, 44 px touch targets, and an Image-format pipeline that emits .webp siblings for every marketing PNG.

  11. feature

    UI component library · Stripe Connect seller UX + marketplace gallery

    Shared ui/* primitives (PageShell, Card, Stat, Badge, EmptyState, ErrorPanel, LoadingState, etc) used by every /app/* page. Stripe Connect onboarding flow for sellers. Public /templates gallery with category filters.

  12. fix

    Dogfood pipeline · pricing → /pricing + frame-based safe-area handling

    Marketing PNGs in static/marketing/ were sourced from the wrong page. screenstack.yml now points at the real /pricing URL and the SDK respects the frame's safe-area metadata when padding captures.

Want the next release in your inbox?

Watch VooStack/ScreenStack releases on GitHub. Email digest coming soon.