| PR | State | Lines | People | Copilot | Reviewers |
|---|
| feat(bulk-mockups): port to extensions/kittl-labs/draft/ sandboxed-extensions · 2026-04-30 | Merged | +18,416 / -0 | 16 | 19 | Jonny, Zak |
| fix(pinterest): board view UX from CU-86c9k382c sandboxed-extensions · 2026-04-30 | Merged | +567 / -1,337 | 0 | 2 | James |
| feat(qr-code): rebuild as React, add vCard/Wi-Fi/Text, color picker, logo presets sandboxed-extensions · 2026-04-30 | Merged | +4,178 / -645 | 16 | 3 | Jonny |
| fix(dropbox): Jonny review + cleanups + tab/preview bug fixes sandboxed-extensions · 2026-05-07 | Merged | +81 / -74 | 1 | 0 | Jonny |
| fix(qr-code): drop outer panel padding + use kit ScrollableArea for dark-mode scrollbar sandboxed-extensions · 2026-05-07 | Merged | +79 / -75 | 0 | 0 | Jonny |
| feat(pod-presets): port to extensions/kittl/draft/ sandboxed-extensions · 2026-05-07 | Merged | +27,867 / -4 | 15 | 7 | James, Jonny, Zak |
| feat(bulk-mockups): simpler product and color flow, plus re-run safety sandboxed-extensions · 2026-06-05 | Merged | +2,268 / -1,562 | 2 | 1 | Jonny |
| feat(gif-maker): frame list, output-size cap, transparency fix, speed control sandboxed-extensions · 2026-06-05 | Merged | +4,613 / -1,199 | 8 | 2 | Jonny |
| fix(search-text): reliable replace, status line, safer replace, lighter icon sandboxed-extensions · 2026-06-05 | Merged | +917 / -521 | 4 | 2 | Jonny |
| feat(qr-code): dots style and use a canvas selection as the logo sandboxed-extensions · 2026-06-05 | Merged | +1,167 / -351 | 2 | 4 | Jonny |
| feat(pinterest): board-view UX: masonry feed, infinite scroll, search, dark mode sandboxed-extensions · 2026-06-06 | Merged | +675 / -393 | 9 | 3 | Jonny |
| feat(tiktok): send Videoboards and images from the canvas to TikTok sandboxed-extensions · 2026-06-07 | Closed | +7,063 / -0 | 0 | 10 | |
| feat(printful): Printful integration: create products, transfer print files, browse products sandboxed-extensions · 2026-06-07 | Closed | +18,569 / -1,567 | 3 | 4 | Jonny |
| feat(pinterest): publish the current design as a pin sandboxed-extensions · 2026-06-07 | Merged | +1,996 / -41 | 13 | 7 | Jonny |
| feat(dropbox): browse and export parity with the Google Drive extension sandboxed-extensions · 2026-06-07 | Closed | +6,843 / -2,493 | 0 | 7 | Jonny |
| feat(google-drive-picker): pick Google Drive images via the Picker and add them to the canvas sandboxed-extensions · 2026-06-08 | Closed | +3,949 / -0 | 0 | 5 | |
| fix(pexels): surface upload-space-limit errors instead of failing silently sandboxed-extensions · 2026-06-10 | Merged | +212 / -110 | 1 | 2 | Jonny |
| Custom Mockups extension sandboxed-extensions · 2026-06-15 | Closed | +11,167 / -0 | 0 | 6 | |
| feat(google-drive): full Drive browse + export extension sandboxed-extensions · 2026-06-15 | Closed | +10,545 / -0 | 0 | 3 | |
| feat(printful): worker: env-driven CORS, narrow API relay, CDN proxy hardening sandboxed-extensions · 2026-06-16 | Merged | +812 / -142 | 0 | 3 | Jonny |
| feat(google-drive-picker): backend worker (worker-first, structured) sandboxed-extensions · 2026-06-17 | Closed | +13,664 / -0 | 0 | 2 | |
| feat(tiktok): backend worker (worker-first, structured) sandboxed-extensions · 2026-06-17 | Closed | +14,069 / -0 | 0 | 4 | |
| fix(pinterest): import the @kittl/ui style loader sandboxed-extensions · 2026-06-17 | Merged | +1 / -0 | 2 | 0 | Jonny |
| feat(google-drive-picker): backend worker: picker host + routes sandboxed-extensions · 2026-06-18 | Closed | +13,666 / -0 | 0 | 0 | |
| feat(google-drive-picker): backend worker: skeleton (scaffolding) sandboxed-extensions · 2026-06-18 | Merged | +13,119 / -0 | 1 | 5 | Jonny |
| feat(tiktok): backend worker: routing + relay logic sandboxed-extensions · 2026-06-18 | Merged | +865 / -33 | 4 | 3 | Jonny |
| feat(tiktok): backend worker: skeleton (scaffolding) sandboxed-extensions · 2026-06-18 | Merged | +13,138 / -0 | 0 | 2 | Jonny |
| chore(bulk-mockups): use unwrapResult from @kittl/sdk sandboxed-extensions · 2026-06-19 | Merged | +18 / -34 | 0 | 2 | Jonny |
| feat(tiktok-relay-media): R2 bucket + public custom domain for TikTok PULL_FROM_URL infrastructure · 2026-06-24 | Closed | +132 / -0 | 0 | 0 | |
| fix(pinterest): show at least two columns in the masonry grid - CU-none sandboxed-extensions · 2026-06-30 | Merged | +9 / -1 | 0 | 1 | |
| debug(picker): live state readout on the popup sandboxed-extensions · 2026-06-30 | Merged | +12 / -0 | 0 | 2 | |
| debug(picker): surface handshake rejection reason on the popup sandboxed-extensions · 2026-06-30 | Merged | +16 / -0 | 0 | 2 | |
| fix(printful): point manifest at the live Printful app id (app-2455903) sandboxed-extensions · 2026-06-30 | Merged | +1 / -1 | 0 | 1 | |
| fix(oauth): key prod proxy OAuth by app id for printful/tiktok/google sandboxed-extensions · 2026-06-30 | Merged | +8 / -5 | 0 | 0 | |
| fix(google-drive-picker): type GOOGLE_PICKER_API_KEY as optional binding sandboxed-extensions · 2026-06-30 | Merged | +8 / -1 | 0 | 1 | |
| fix(google-drive-picker): drop GOOGLE_PICKER_API_KEY required gate (unblocks fleet deploy) sandboxed-extensions · 2026-06-30 | Merged | +3 / -3 | 0 | 1 | |
| fix(google-drive-picker): rename worker host to google-drive-picker-backend.kittl.io sandboxed-extensions · 2026-06-30 | Merged | +5 / -5 | 0 | 0 | |
| feat(google-drive-picker): launch: full backend relay logic, convert oss deps to catalog sandboxed-extensions · 2026-06-30 | Merged | +4,625 / -11 | 0 | 6 | |
| feat(google-drive): launch: convert oss deps to catalog, slug-keyed proxy OAuth sandboxed-extensions · 2026-06-30 | Merged | +10,633 / -0 | 0 | 10 | |
| feat(printful): launch: convert oss deps to catalog, slug-keyed proxy OAuth, fix backend deploy script sandboxed-extensions · 2026-06-30 | Merged | +18,679 / -1,569 | 0 | 0 | |
| feat(tiktok): launch frontend: convert oss deps to catalog, slug-keyed proxy OAuth, prod worker base sandboxed-extensions · 2026-06-30 | Merged | +7,180 / -1 | 0 | 10 | |
| feat(dropbox): browse & export parity: port to main + convert oss deps to catalog sandboxed-extensions · 2026-06-30 | Merged | +6,853 / -2,475 | 0 | 5 | |
| feat(custom-mockups): bring the Custom Mockups extension onto main sandboxed-extensions · 2026-06-30 | Merged | +11,286 / -0 | 0 | 4 | |
| chore(picker): revert debug diagnostics (#359, #360) sandboxed-extensions · 2026-07-01 | Closed | +0 / -28 | 0 | 0 | |
| fix(pinterest): widen masonry tiles to ~150px so it goes 2 to 3 columns - CU-none sandboxed-extensions · 2026-07-01 | Merged | +8 / -3 | 0 | 0 | |
| chore(printful): migrate manifest embed to editorContentPanel sandboxed-extensions · 2026-07-02 | Merged | +1 / -1 | 0 | 0 | |
| Custom Mockups: migrate manifest embed to editorContentPanel sandboxed-extensions · 2026-07-02 | Merged | +1 / -1 | 0 | 0 | |
| chore(printful): rewrite app tagline and install description sandboxed-extensions · 2026-07-02 | Merged | +2 / -2 | 0 | 0 | |
| fix(printful): show full artwork/GIF in preview and pre-connect dialog sandboxed-extensions · 2026-07-02 | Merged | +15 / -6 | 0 | 0 | |
| Custom Mockups: hardening, tests, kit conformance, and rename from Displace sandboxed-extensions · 2026-07-02 | Merged | +2,988 / -1,169 | 0 | 0 | |
| revert(picker): remove debug instrumentation from the popup - CU-none sandboxed-extensions · 2026-07-02 | Merged | +0 / -28 | 0 | 0 | |
| feat(pinterest): sub-boards, install copy, connect + reconnect analytics sandboxed-extensions · 2026-07-07 | Merged | +606 / -69 | 0 | 2 | |
| fix(bulk-mockups): confirm preset save + always show presets at top sandboxed-extensions · 2026-07-08 | Merged | +118 / -56 | 0 | 1 | |
| feat(bulk-mockups): remove product-row chevron + settings health events sandboxed-extensions · 2026-07-08 | Merged | +40 / -11 | 0 | 3 | |
| feat(bulk-mockups): sync favorites & presets via worker + walkthrough/analytics fixes sandboxed-extensions · 2026-07-08 | Merged | +916 / -305 | 0 | 5 | |
| feat(bulk-mockups): backend worker for per-user favorites & presets sandboxed-extensions · 2026-07-08 | Merged | +2,530 / -0 | 0 | 1 | |
| feat(bulk-mockups): welcome screen, guided walkthrough, color presets & favorites sandboxed-extensions · 2026-07-08 | Merged | +2,884 / -193 | 0 | 4 | |
| fix(bulk-mockups): walkthrough fits panel, theme-aware styling, skip for preset owners sandboxed-extensions · 2026-07-23 | Merged | +65 / -16 | 0 | 2 | |
| chore(google-drive-picker): SVG icon, editorContentPanel, dedicated OAuth client sandboxed-extensions · 2026-07-29 | Merged | +20 / -22 | 0 | 1 | |
| chore(tiktok): SVG icon, editorContentPanel migration, manifest $schema sandboxed-extensions · 2026-07-30 | Merged | +7 / -4 | 0 | 1 | |
| chore(google-drive): SVG icon and editorContentPanel migration sandboxed-extensions · 2026-07-30 | Merged | +3 / -2 | 0 | 0 | |
| fix(google-drive-picker): move popup host to internal- prefix to escape zone CSP sandboxed-extensions · 2026-08-24 | Merged | +11 / -6 | 0 | 1 | |
| fix(google-drive-picker): pass the Cloud project number to the Picker so picked files download sandboxed-extensions · 2026-09-15 | Merged | +12 / -0 | 0 | 0 | |
| fix(google-drive-picker): send the popup origin as referrer so the API key validates sandboxed-extensions · 2026-09-15 | Merged | +1 / -1 | 0 | 0 | |
| chore(google-drive-picker): reference the filed kit-gap issue for Card Space activation sandboxed-extensions · 2026-09-16 | Merged | +3 / -2 | 0 | 0 | |
| fix(google-drive-picker): rest the recents strip while picking, no storage fallback in production, thumbnail e sandboxed-extensions · 2026-09-16 | Merged | +237 / -83 | 0 | 1 | |
| feat(google-drive-picker): cascade imports, launcher-first panel, recent imports per account sandboxed-extensions · 2026-09-16 | Merged | +1,650 / -267 | 0 | 3 | |
| fix(printful): place new product artboards next to existing boards sandboxed-extensions · 2026-09-16 | Merged | +510 / -5 | 0 | 2 | |
| fix(printify): cache the catalog per session, slim the blueprint list, keep the token in memory sandboxed-extensions · 2026-09-22 | Merged | +249 / -96 | 0 | 2 | |
| fix(printify): surface Printify's error reason and fix the bulk variant toggle sandboxed-extensions · 2026-09-22 | Merged | +32 / -7 | 0 | 0 | |
| fix(printify): product creation within Printify's variant limit sandboxed-extensions · 2026-09-22 | Merged | +105 / -18 | 0 | 3 | |
| fix(printify): selection updates and add-to-canvas in the real editor sandboxed-extensions · 2026-09-22 | Merged | +63 / -17 | 0 | 0 | |
| feat(printify): Printify extension, worker and frontend sandboxed-extensions · 2026-09-22 | Merged | +26,159 / -0 | 0 | 7 | |
| feat(printify): reuse a product's print file sandboxed-extensions · 2026-09-23 | Merged | +327 / -0 | 0 | 1 | |
| feat(meta-ads): Meta Ads: read ad performance, add winning creatives to the canvas sandboxed-extensions · 2026-09-23 | Closed | +8,660 / -0 | 0 | 28 | |
| fix(printify): recent tiles name the product and open it; empty-shop panel can be dismissed sandboxed-extensions · 2026-09-23 | Merged | +136 / -19 | 0 | 0 | |
| fix(printify): review follow-ups for the canvas import and library sandboxed-extensions · 2026-09-23 | Merged | +200 / -114 | 0 | 1 | |
| fix(printify): home copy says what each entry does sandboxed-extensions · 2026-09-23 | Merged | +3 / -3 | 0 | 0 | |
| fix(printify): canvas import progress and sizing, library selection card, segmented areas sandboxed-extensions · 2026-09-23 | Merged | +605 / -162 | 0 | 6 | |
| fix(printify): image-first mockup tiles and lime home tiles sandboxed-extensions · 2026-09-23 | Merged | +28 / -20 | 0 | 0 | |
| feat(printify): brand accents, catalog categories, home strip, intro, done hero sandboxed-extensions · 2026-09-23 | Merged | +858 / -67 | 0 | 3 | |
| feat(printify): show each provider's colour and size range sandboxed-extensions · 2026-09-23 | Merged | +89 / -4 | 0 | 1 | |
| fix(printify): oversized design box stays movable and its handle reachable sandboxed-extensions · 2026-09-23 | Merged | +27 / -12 | 0 | 0 | |
| feat(printify): drag and resize the design on the print area sandboxed-extensions · 2026-09-23 | Merged | +684 / -104 | 0 | 3 | |
| fix(printify): placement stage keeps its height in the scrolling step sandboxed-extensions · 2026-09-23 | Merged | +2 / -0 | 0 | 0 | |
| fix(printify): placement stage keeps the print-area frame inside its box sandboxed-extensions · 2026-09-23 | Merged | +14 / -6 | 0 | 1 | |
| feat(printify): remove a placed design from a print area sandboxed-extensions · 2026-09-23 | Merged | +11 / -1 | 0 | 0 | |
| fix(printify): print-area tabs wrap instead of scrolling sideways sandboxed-extensions · 2026-09-23 | Merged | +3 / -1 | 0 | 0 | |
| fix(printify): active print-area tab renders its filled state sandboxed-extensions · 2026-09-23 | Merged | +9 / -3 | 0 | 0 | |
| fix(pinterest): keep the pinned-design preview inside its 140px box CU-none sandboxed-extensions · 2026-09-23 | Merged | +8 / -6 | 0 | 0 | |
| feat(printify): shop dropdown, positioner thumbnail, quality thresholds, variants, URL uploads sandboxed-extensions · 2026-09-23 | Merged | +597 / -244 | 0 | 5 | |
| perf(printify): request thumbnail-sized images from Printify's CDN sandboxed-extensions · 2026-09-23 | Merged | +85 / -10 | 0 | 0 | |
| feat(printify): infinite scroll, compact home, mockup placement, library push, pricing removed sandboxed-extensions · 2026-09-23 | Merged | +703 / -518 | 0 | 3 | |
| feat(extensions): R2 buckets for the Instagram worker relay videos - CU-none infrastructure · 2026-09-23 | Merged | +93 / -0 | 0 | 0 | Vishal |
| feat(printify): tabs at the top of the new home variant sandboxed-extensions · 2026-09-24 | Merged | +235 / -46 | 0 | 2 | |
| feat(google-ads): connect screen and hover size in the corner sandboxed-extensions · 2026-09-24 | Merged | +364 / -80 | 0 | 0 | |
| feat(extensions): R2 buckets for the WooCommerce worker temporary uploads - CU-none infrastructure · 2026-09-24 | Closed | +2 / -0 | 0 | 0 | |
| feat(photo-filters): Photo Filters extension (curated filters with strength) sandboxed-extensions · 2026-09-24 | Merged | +16,104 / -0 | 0 | 8 | |
| fix(meta-ads): start the ads deadline after insights, not before it sandboxed-extensions · 2026-09-24 | Merged | +111 / -57 | 0 | 1 | |
| feat(google-ads): compact panel with a pinned header sandboxed-extensions · 2026-09-24 | Merged | +435 / -153 | 0 | 2 | |
| ci(woocommerce): put the credentials encryption key per environment sandboxed-extensions · 2026-09-24 | Closed | +20 / -0 | 0 | 0 | |
| feat(google-ads): compact panel, images first sandboxed-extensions · 2026-09-24 | Closed | +308 / -126 | 0 | 1 | |
| feat(woocommerce): WooCommerce connector (draft) sandboxed-extensions · 2026-09-24 | Merged | +22,548 / -0 | 0 | 21 | |
| fix(meta-ads): stop using the ?ids= multi-get, it is all or nothing sandboxed-extensions · 2026-09-24 | Merged | +159 / -322 | 0 | 3 | |
| feat(google-ads): working grid, usage labels, filters, sensible artboard size sandboxed-extensions · 2026-09-24 | Merged | +1,054 / -100 | 0 | 4 | |
| feat(printify): category chips in My products sandboxed-extensions · 2026-09-24 | Merged | +348 / -74 | 0 | 2 | |
| fix(meta-ads): stop the fallback chain from spinning forever sandboxed-extensions · 2026-09-24 | Merged | +89 / -14 | 0 | 3 | |
| fix(printify): product screen scrolls under its header sandboxed-extensions · 2026-09-24 | Merged | +97 / -74 | 0 | 0 | |
| fix(google-ads): working image grid, real spacing, and a clear error when Google has not approved the app sandboxed-extensions · 2026-09-24 | Closed | +12,283 / -49 | 0 | 2 | |
| fix(printify): product screen as one hero and four rows sandboxed-extensions · 2026-09-24 | Merged | +114 / -262 | 0 | 2 | |
| fix(meta-ads): degrade the creative fields instead of failing the panel sandboxed-extensions · 2026-09-24 | Merged | +416 / -42 | 0 | 3 | |
| ci(google-ads): push the Google Ads OAuth and developer-token secrets sandboxed-extensions · 2026-09-24 | Merged | +23 / -0 | 0 | 1 | |
| feat(google-ads): Google Ads, browse image assets and add them to the canvas sandboxed-extensions · 2026-09-24 | Merged | +6,775 / -0 | 0 | 5 | |
| fix(printify): plain home screen, no intro box, grey tiles sandboxed-extensions · 2026-09-24 | Merged | +12 / -144 | 0 | 0 | |
| fix(meta-ads): the ads batch is too big, and it always was sandboxed-extensions · 2026-09-24 | Merged | +81 / -25 | 0 | 1 | |
| fix(meta-ads): retry Meta's 5xx, not just its 429 sandboxed-extensions · 2026-09-24 | Merged | +39 / -18 | 0 | 0 | |
| fix(printify): home intro lists what the app does, less accent colour sandboxed-extensions · 2026-09-24 | Merged | +33 / -17 | 0 | 0 | |
| test(printify): component, hook and worker tests sandboxed-extensions · 2026-09-24 | Merged | +1,701 / -3 | 0 | 0 | |
| refactor(printify): kit scroll areas, shared paged list, flatter branches sandboxed-extensions · 2026-09-24 | Merged | +440 / -367 | 0 | 0 | |
| fix(printify): library create action, provider loading, dead code sandboxed-extensions · 2026-09-24 | Merged | +50 / -784 | 0 | 1 | |
| fix(meta-ads): the real cause was Meta's rate limit, and the last change made it worse sandboxed-extensions · 2026-09-24 | Merged | +133 / -23 | 0 | 5 | |
| fix(meta-ads): say which Graph step failed, and back off Meta's data limits sandboxed-extensions · 2026-09-24 | Merged | +98 / -23 | 0 | 5 | |
| fix(meta-ads): load only the ads that delivered, and stop the list flickering sandboxed-extensions · 2026-09-24 | Merged | +221 / -51 | 0 | 1 | |
| fix(printify): link the app to its new extension record sandboxed-extensions · 2026-09-24 | Merged | +12 / -12 | 0 | 1 | |
| ci(meta-ads): push the Meta app credentials to the meta-ads worker sandboxed-extensions · 2026-09-24 | Merged | +21 / -0 | 0 | 1 | |
| feat(meta-ads): Meta Ads: read ad performance, add winning creatives to the canvas sandboxed-extensions · 2026-09-24 | Merged | +9,256 / -0 | 0 | 14 | |
| chore(printify): drop the retired draft origin from the worker allowlist sandboxed-extensions · 2026-09-24 | Merged | +4 / -4 | 0 | 0 | |
| fix(printify): move the app to the Kittl organisation record sandboxed-extensions · 2026-09-24 | Merged | +33 / -13 | 0 | 0 | |
| fix(printify): OAuth proxy secret is optional until OAuth is switched on sandboxed-extensions · 2026-09-24 | Merged | +25 / -9 | 0 | 1 | |
| feat(printify): OAuth sign-in next to the personal access token sandboxed-extensions · 2026-09-24 | Merged | +2,132 / -250 | 0 | 5 | |
| fix(printify): open the product's own page in Printify sandboxed-extensions · 2026-09-24 | Merged | +39 / -3 | 0 | 1 | |
| fix(woocommerce): show why Publish failed sandboxed-extensions · 2026-09-25 | Merged | +330 / -53 | 0 | 4 | |
| feat(woocommerce): gallery editor with publish, rebuilt store screens sandboxed-extensions · 2026-09-25 | Merged | +2,466 / -1,224 | 0 | 6 | |
| chore(import-anything): Graphics & Elements category sandboxed-extensions · 2026-09-25 | Merged | +1 / -1 | 0 | 0 | |
| chore(perspective-warp): list under Photo & Image Editing sandboxed-extensions · 2026-09-25 | Merged | +1 / -1 | 0 | 0 | |
| feat(import-anything): import HEIC, TIFF, PSD with layers, PDF, AI and more sandboxed-extensions · 2026-09-25 | Merged | +6,623 / -0 | 0 | 5 | |
| feat(perspective-warp): Perspective Warp extension sandboxed-extensions · 2026-09-25 | Merged | +5,535 / -0 | 0 | 8 | |
| feat(woocommerce): product page as an image grid with an add tile sandboxed-extensions · 2026-09-25 | Merged | +989 / -799 | 0 | 3 | |
| fix(ascii-art): shorter tagline sandboxed-extensions · 2026-09-25 | Merged | +1 / -1 | 0 | 0 | |
| fix(ascii-art): default to a white background sandboxed-extensions · 2026-09-25 | Merged | +8 / -5 | 0 | 0 | |
| test(woocommerce): mock the categories request in App tests sandboxed-extensions · 2026-09-25 | Merged | +12 / -3 | 0 | 0 | |
| chore(barcode-maker): rewrite install page description sandboxed-extensions · 2026-09-25 | Merged | +1 / -1 | 0 | 1 | |
| feat(woocommerce): design-first panel with prices, categories and main-image push sandboxed-extensions · 2026-09-25 | Merged | +1,417 / -192 | 0 | 7 | |
| fix(meta-ads): Resume did nothing visible, and restarted the import sandboxed-extensions · 2026-09-25 | Merged | +17 / -17 | 0 | 0 | |
| feat(ascii-art): rebuild the ASCII Art app sandboxed-extensions · 2026-09-25 | Merged | +20,765 / -0 | 0 | 5 | |
| feat(barcode-maker): add Barcode Maker extension sandboxed-extensions · 2026-09-25 | Merged | +8,514 / -0 | 0 | 5 | |
| feat(meta-ads): import ads a page at a time, and respect Meta's rate limit sandboxed-extensions · 2026-09-25 | Merged | +671 / -184 | 0 | 9 | |
| fix(woocommerce): stay connected across idle time and parallel refreshes sandboxed-extensions · 2026-09-25 | Merged | +870 / -177 | 0 | 5 | |
| fix(woocommerce): delete the stored key when the store refuses it sandboxed-extensions · 2026-09-25 | Merged | +47 / -2 | 0 | 1 | |
| feat(woocommerce): kit-based panel UI, brand-coloured icon, image sizing sandboxed-extensions · 2026-09-25 | Merged | +528 / -117 | 0 | 3 | |
| feat(printify): mockup strip and a proper print-file card on the product screen sandboxed-extensions · 2026-09-25 | Merged | +427 / -18 | 0 | 2 | |
| feat(woocommerce): accept staging preview editors as OAuth callback sandboxed-extensions · 2026-09-25 | Merged | +53 / -2 | 0 | 2 | |
| chore(woocommerce): staging manifest without tags, e2e against a deployed worker sandboxed-extensions · 2026-09-25 | Merged | +87 / -71 | 0 | 0 | |
| fix(woocommerce): deploy before the credentials key is set sandboxed-extensions · 2026-09-25 | Merged | +9 / -9 | 0 | 1 | |
| ci(woocommerce): put the credentials encryption key per environment sandboxed-extensions · 2026-09-25 | Merged | +20 / -0 | 0 | 1 | |
| fix(printify): strips scroll without a visible scrollbar sandboxed-extensions · 2026-09-25 | Merged | +5 / -4 | 0 | 0 | |
| feat(quiver-vector): AI Vectors, generate and edit vectors with QuiverAI sandboxed-extensions · 2026-09-26 | Merged | +18,985 / -0 | 0 | 5 | |
| feat(export-anything): warn about too-large boards before exporting sandboxed-extensions · 2026-09-26 | Merged | +211 / -52 | 0 | 2 | |
| fix(meta-ads): keep loaded ads on resume, survive Meta's transient 5xx, stop serving 64px thumbnails sandboxed-extensions · 2026-09-26 | Merged | +61 / -21 | 0 | 0 | |
| feat(export-anything): layered PSD and print-ready TIFF export sandboxed-extensions · 2026-09-26 | Merged | +6,054 / -0 | 0 | 7 | |
| feat(woocommerce): failure analytics name the step and error code sandboxed-extensions · 2026-09-26 | Merged | +80 / -4 | 0 | 1 | |
| fix(woocommerce): accept real Kittl upload URLs sandboxed-extensions · 2026-09-26 | Merged | +18 / -14 | 0 | 0 | |
| chore(quiver-vector): link the app's own privacy page sandboxed-extensions · 2026-09-27 | Merged | +1 / -1 | 0 | 0 | |
| feat(custom-mockups): record why an export upload failed sandboxed-extensions · 2026-09-27 | Merged | +351 / -14 | 0 | 2 | |
| fix(ascii-art): keep the source after adding art, tag load failures sandboxed-extensions · 2026-09-27 | Merged | +505 / -76 | 0 | 0 | |
| chore(quiver-vector): release prep sandboxed-extensions · 2026-09-27 | Merged | +247 / -179 | 0 | 2 | |
| feat(export-anything): EPS and DXF, an Images tab, and Kittl's DPI rule sandboxed-extensions · 2026-09-27 | Merged | +8,894 / -1,367 | 0 | 5 | |
| feat(printful): import file-library designs and product mockups from the upload modal sandboxed-extensions · 2026-09-27 | Merged | +668 / -13 | 0 | 2 | |
| feat(printify): import designs and product mockups from the upload modal sandboxed-extensions · 2026-09-27 | Merged | +597 / -20 | 0 | 3 | |
| feat(meta-ads): browse your ad images from the upload modal sandboxed-extensions · 2026-09-27 | Merged | +398 / -5 | 0 | 4 | |
| feat(dropbox): browse Dropbox folders and images from the upload modal sandboxed-extensions · 2026-09-27 | Merged | +400 / -14 | 0 | 2 | |
| feat(google-drive): browse Drive folders and images from the upload modal sandboxed-extensions · 2026-09-27 | Merged | +325 / -6 | 0 | 1 | |
| feat(shopify-connector): enable the upload-modal tab in prod and register it before login sandboxed-extensions · 2026-09-27 | Merged | +23 / -24 | 0 | 0 | |
| fix(woocommerce): upload-modal tab shows the connect message instead of an empty grid sandboxed-extensions · 2026-09-27 | Merged | +20 / -11 | 0 | 0 | |
| fix(pinterest): upload-modal tab says where to connect and keeps pin aspect ratio sandboxed-extensions · 2026-09-27 | Merged | +24 / -23 | 0 | 0 | |
| feat(quiver-vector): reliable parallel requests, native-style panel, examples sandboxed-extensions · 2026-09-27 | Merged | +7,729 / -521 | 0 | 8 | |
| feat(quiver-vector): one vector per request, store name and assets sandboxed-extensions · 2026-09-27 | Merged | +36 / -226 | 0 | 1 | |
| fix(export-anything): address review comments on v3 sandboxed-extensions · 2026-09-27 | Merged | +186 / -51 | 0 | 0 | |
| feat(export-anything): multi-format export, compression, split ZIPs sandboxed-extensions · 2026-09-27 | Merged | +1,984 / -335 | 0 | 5 | |
| feat(quiver-vector): native-style composer with models, count, styles, references, vectorize and loading cards sandboxed-extensions · 2026-09-27 | Merged | +3,898 / -875 | 0 | 5 | |
| fix(quiver-vector): gradient fills on groups and gradient strokes show in Kittl sandboxed-extensions · 2026-09-28 | Merged | +133 / -5 | 0 | 1 | |
| feat(quiver-vector): turn lettering and lines into shapes before placing sandboxed-extensions · 2026-09-28 | Merged | +1,112 / -2 | 0 | 7 | |
| fix(pinterest): explain a deleted board in the upload modal - CU-86cadz244 sandboxed-extensions · 2026-09-28 | Merged | +39 / -3 | 0 | 0 | |
| fix(upload-gallery): refresh tab listings changed at the source - CU-86cadz244 mono · 2026-09-28 | Open | +72 / -8 | 0 | 0 | |
| fix(quiver-vector): last-card placement only without a selection sandboxed-extensions · 2026-09-28 | Merged | +23 / -5 | 0 | 1 | |
| fix(quiver-vector): loading cards keep their size instead of shrinking sandboxed-extensions · 2026-09-28 | Merged | +27 / -1 | 0 | 2 | |
| fix(quiver-vector): example switch matches the mode tabs sandboxed-extensions · 2026-09-28 | Merged | +7 / -9 | 0 | 0 | |
| fix(quiver-vector): Telos time estimate from measured runs sandboxed-extensions · 2026-09-28 | Merged | +3 / -2 | 0 | 0 | |
| fix(quiver-vector): start jobs queued while another is running sandboxed-extensions · 2026-09-28 | Merged | +115 / -9 | 0 | 0 | |
| fix(quiver-vector): stream QuiverAI answers so long requests finish sandboxed-extensions · 2026-09-28 | Merged | +500 / -53 | 0 | 2 | |
| fix(quiver-vector): curved text on a bottom arc is upright and in place sandboxed-extensions · 2026-09-29 | Merged | +59 / -1 | 0 | 1 | |