← All projects
Public launch Jul 2

Apps (extensions)

Kittl's apps program, from research to launch: a workflow survey and about 30 user interviews, the extensions strategy (approved by Tobi), a rollout to power users in May and to all users on Jul 2. I built or rebuilt every app below.

27apps, 19 live, 8 waiting on platform approval
12,258users of the apps since May 8
94%of 1,190 users who voted said Useful
174PRs merged for the apps

Every app

Pinterest
PinterestLive 4,140 users · 1,649 did the core action 97% useful (521 of 538) · 11 PRs
Bulk Mockups
Bulk MockupsLive 4,621 users · 2,721 did the core action 91% useful (334 of 366) · 9 PRs
QR Code Generator
QR Code GeneratorLive 692 users · 407 did the core action 98% useful (59 of 60) · 3 PRs
Custom Mockups
Custom MockupsLive 784 users · 303 did the core action 78% useful (47 of 60) · 5 PRs
Printful
PrintfulLive 773 users · 164 did the core action 88% useful (49 of 56) · 9 PRs
Pexels
PexelsLive 479 users · 130 did the core action 95% useful (39 of 41) · 1 PRs
POD Presets
POD PresetsLive 361 users · 214 did the core action 100% useful (40 of 40) · 1 PRs
Canvas To GIF
Canvas To GIFLive 92 users · 23 did the core action 77% useful (10 of 13) · 1 PRs
Search Text
Search TextLive 144 users · 9 did the core action 89% useful (8 of 9) · 1 PRs
Dropbox
DropboxLive 80 users · 21 did the core action 100% useful (4 of 4) · 4 PRs
Photo Filters
Photo FiltersLive 8 users · 2 did the core action 100% useful (1 of 1) · 1 PRs
ASCII Art
ASCII ArtLive 6 users · 2 did the core action 100% useful (1 of 1) · 4 PRs
AI Vectors
AI VectorsLive 15 users · 9 did the core action No votes yet · 15 PRs
Barcode Maker
Barcode MakerLive 3 users · 2 did the core action No votes yet · 2 PRs
Perspective Warp
Perspective WarpLive 6 users No votes yet · 2 PRs
Import Anything
Import AnythingLive 8 users · 5 did the core action No votes yet · 2 PRs
Export Anything
Export AnythingLive 4 users · 2 did the core action No votes yet · 5 PRs
Bulk PersonalizeLive 2 users · 1 did the core action No votes yet · 0 PRs
WooCommerce
WooCommerceLive 2 users · 1 did the core action No votes yet · 17 PRs
Google Drive Picker
Google Drive PickerBehind flag, Google verified 17 users · 6 did the core action 100% useful (1 of 1) · 19 PRs
Google DriveBehind flag, waiting on Google verification No users yet No votes yet · 4 PRs
TikTok
TikTokBehind flag, waiting on TikTok approval No users yet No votes yet · 6 PRs
Printify
PrintifyBehind flag, waiting on Printify approval 2 users · 1 did the core action No votes yet · 41 PRs
Meta Ads
Meta AdsBehind flag, waiting on Meta app review 3 users · 3 did the core action No votes yet · 16 PRs
Pixabay
PixabayBehind flag, waiting on Pixabay API approval 7 users · 5 did the core action No votes yet · 0 PRs
Shopify
ShopifyBehind flag, waiting on Shopify App Store approval No users yet No votes yet · 1 PRs
Google Ads
Google AdsDraft, waiting on Google Ads API approval No users yet No votes yet · 7 PRs

Impact

Weekly users across all apps, ISO weeks 22 to 40 (week 27 = public launch; week 40 is partial).

232425262728293031323334353637383940
AppStatusUsersDid core actionUseful votesPRs
PinterestLive4,1401,64997% (521 of 538)
11
Bulk MockupsLive4,6212,72191% (334 of 366)
9
QR Code GeneratorLive69240798% (59 of 60)
3
Custom MockupsLive78430378% (47 of 60)
5
PrintfulLive77316488% (49 of 56)
9
PexelsLive47913095% (39 of 41)
1
POD PresetsLive361214100% (40 of 40)
1
Canvas To GIFLive922377% (10 of 13)
1
Search TextLive144989% (8 of 9)
1
DropboxLive8021100% (4 of 4)
4
Photo FiltersLive82100% (1 of 1)
1
ASCII ArtLive62100% (1 of 1)
4
AI VectorsLive159No votes yet15
Barcode MakerLive32No votes yet2
Perspective WarpLive60No votes yet2
Import AnythingLive85No votes yet2
Export AnythingLive42No votes yet5
Bulk PersonalizeLive21No votes yet0
WooCommerceLive21No votes yet17
Google Drive PickerBehind flag, Google verified176100% (1 of 1)
19
Google DriveBehind flag, waiting on Google verification00No votes yet4
TikTokBehind flag, waiting on TikTok approval00No votes yet6
PrintifyBehind flag, waiting on Printify approval21No votes yet41
Meta AdsBehind flag, waiting on Meta app review33No votes yet16
PixabayBehind flag, waiting on Pixabay API approval75No votes yet0
ShopifyBehind flag, waiting on Shopify App Store approval00No votes yet1
Google AdsDraft, waiting on Google Ads API approval00No votes yet7

Users = distinct browsers with any app event in PostHog since May 8, published apps only (internal testers excluded). Core action = the app's main outcome event, for example pin imported, mockup exported, QR added. Useful votes = in-app feedback, one vote per user, Kittl staff excluded. Apps behind a flag only show reviewer and tester traffic.

What users wrote

"This is exactly what I needed (and talked to Julius about). It allows me to use my own photo as a mockup ... I can do it all in Kittl now, thank you." Custom Mockups user
"I am STOKED Kittl has a QR code generator now. This will save me so much time switching between apps." QR Code Generator user
"Makes things SOOOO much easier. I usually have to create mockups in Photoshop." Bulk Mockups user
"Loving all the new kittl feature, you are my favorite app/tool for my design business!" Pinterest user

Links

Effort

App code only. Tooling, analytics, promotion and the App Directory have their own pages.

174PRs merged, 1 open
+481,349lines added, 28,341 removed
740commits
97review comments from people
475Copilot review comments
308review replies I wrote

Reviewers (PRs reviewed): Jonny (20), Zak (2), James (2), Vishal (1). Typical time to merge: same day. First PR 2026-04-30, last change 2026-09-29.

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