~bigbes/memestudio · events

oqriissmhrcm2eq8kfti1puh7blnsf9g · 67 rows

idissue_idevent_typeactorold_valuenew_valuecommentcreated_at
019f7c4a-ed78-7e5f-a8ba-1177909cc9d2memestudio-7hoclosedEugene BlikhReplaced all twelve gallery placeholders with bundled original 640px transparent PNG stickers, added alpha-aware preview/edge/compositor rendering, persisted sticker metadata, and verified browser and container packaging behavior.NULL2026-07-20T00:31:53Z
019f7c4b-1aa5-71d8-89e9-9baa7abeb988memestudio-djcclaimedEugene Blikh{"id":"memestudio-djc","title":"Reconcile manifest vs saved doc","description":"On load, a saved doc fully replaces templates and the manifest bootstrap is skipped, so rebuilding the template library won't surface new templates in an existing doc. Decide/implement a merge (keep the doc's on-selection + uploads, refresh the library list).","status":"open","priority":3,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-18T15:21:28Z","created_by":"Eugene Blikh","updated_at":"2026-07-18T15:21:28Z","labels":["backend"]}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-20T00:32:04Z
019f7c50-c4f7-7e0d-921a-4f5efa63213amemestudio-djcclosedEugene BlikhMerged saved template state with the current manifest by ID, preserving the active template and user uploads; added browser and backend-startup regression coverage.NULL2026-07-20T00:38:15Z
019f7c50-ecfa-73dc-b9d8-fbb9593d9c15memestudio-uc3claimedEugene Blikh{"id":"memestudio-uc3","title":"Persist undo history across reload","description":"Undo/redo history is in-memory; a reload restores the document but not the undo stack. Optionally persist a bounded history (or accept as-is).","status":"open","priority":3,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-18T15:21:28Z","created_by":"Eugene Blikh","updated_at":"2026-07-18T15:21:28Z","labels":["backend","editor"]}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-20T00:38:26Z
019f7c57-8e0e-7c96-8765-83176a70f57fmemestudio-uc3closedEugene BlikhPersisted a validated undo/redo window in the live draft, capped at 24 entries and 1 MiB; restored it across reload and reloads images referenced by restored states.NULL2026-07-20T00:45:40Z
019f7c57-c476-78f1-a032-9b3f1d390299memestudio-a3dclaimedEugene Blikh{"id":"memestudio-a3d","title":"Image corner-radius inspector row","description":"The image inspector spec has a Radius slider; placed images use a fixed 3px radius. Add radius to placed state + render + compositor (roundRect).","status":"open","priority":3,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-18T15:21:27Z","created_by":"Eugene Blikh","updated_at":"2026-07-18T15:21:27Z","labels":["editor"]}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-20T00:45:54Z
019f7c5b-e46d-7d56-9d44-9cf16709fd43memestudio-a3dclosedEugene BlikhAdded a 0–40px image-radius slider with a 3px compatibility default, live DOM updates, rounded compositor clipping for images and stickers, and persistence coverage.NULL2026-07-20T00:50:24Z
019f7c5c-0652-7e8e-a762-3fbd53825ddcmemestudio-cv9claimedEugene Blikh{"id":"memestudio-cv9","title":"Dynamic breadcrumb","description":"The 'Templates / Drake Hotline Bling' breadcrumb is static. Reflect the selected template/base name.","status":"open","priority":3,"issue_type":"chore","owner":"bigbes@gmail.com","created_at":"2026-07-18T15:21:27Z","created_by":"Eugene Blikh","updated_at":"2026-07-18T15:21:27Z","labels":["editor"]}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-20T00:50:33Z
019f7c5e-0c4b-7cae-bb24-4bd6edfeeba1memestudio-cv9closedEugene BlikhMade the breadcrumb derive from the active template or uploaded base, with safe truncation and full-name title; verified selection, reload, and restored-history transitions.NULL2026-07-20T00:52:46Z
019f7c84-6a6c-7ae1-b162-4434fde2b04dmemestudio-d65createdEugene BlikhNULL2026-07-20T01:34:40Z
019f7c84-7a01-738e-a8e6-6fb6374156c3memestudio-d65claimedEugene Blikh{"id":"memestudio-d65","title":"Fetch Imgflip templates once on first server start","description":"Move Imgflip template acquisition out of the image/build path. On the first server start, launch a non-blocking Go job that fetches the Imgflip catalog and image bytes into SQLite; subsequent starts reuse the stored templates without contacting Imgflip. Update the template-serving path, packaging, documentation, and tests to match.","acceptance_criteria":"The server starts without waiting for Imgflip; an empty database triggers one background import; imported template metadata and image bytes persist in SQLite; a populated database does not refetch on restart; the UI can load templates through the server; builds no longer fetch or bundle generated templates; relevant Go and frontend tests/build checks pass.","status":"open","priority":1,"issue_type":"feature","owner":"bigbes@gmail.com","created_at":"2026-07-19T22:34:41Z","created_by":"Eugene Blikh","updated_at":"2026-07-19T22:34:41Z"}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-20T01:34:44Z
019f7c86-a85e-714c-8d19-6b79458a8816memestudio-d65updatedEugene Blikh{"id":"memestudio-d65","title":"Fetch Imgflip templates once on first server start","description":"Move Imgflip template acquisition out of the image/build path. On the first server start, launch a non-blocking Go job that fetches the Imgflip catalog and image bytes into SQLite; subsequent starts reuse the stored templates without contacting Imgflip. Update the template-serving path, packaging, documentation, and tests to match.","acceptance_criteria":"The server starts without waiting for Imgflip; an empty database triggers one background import; imported template metadata and image bytes persist in SQLite; a populated database does not refetch on restart; the UI can load templates through the server; builds no longer fetch or bundle generated templates; relevant Go and frontend tests/build checks pass.","status":"in_progress","priority":1,"issue_type":"feature","assignee":"Eugene Blikh","owner":"bigbes@gmail.com","created_at":"2026-07-19T22:34:41Z","created_by":"Eugene Blikh","updated_at":"2026-07-19T22:34:45Z","started_at":"2026-07-19T22:34:45Z"}{"design":"Add SQLite templates plus a singleton import-completion row. Startup launches an Imgflip importer goroutine; it downloads the catalog and bounded image bodies concurrently, then commits usable templates and the completion marker in one transaction. GET /api/templates returns 202 + Retry-After until that marker exists and a manifest-shaped response afterward; GET /api/templates/{id} serves the stored blob. The browser renders immediately and polls the API in the background, while static-only hosting keeps its built-in placeholders. Remove the Docker network-fetch stage and the obsolete generator."}NULL2026-07-20T01:37:07Z
019f7c8f-0068-7232-85eb-172abbb41071memestudio-d65closedEugene BlikhImplemented asynchronous first-start Imgflip import into SQLite, local template APIs, browser readiness polling, build-stage removal, documentation, and restart/failure tests.NULL2026-07-20T01:46:14Z
019f7ca6-efd6-7d2f-b528-e2f254ad6b61memestudio-am3createdEugene BlikhNULL2026-07-20T02:12:22Z
019f7ca7-0355-7595-83c8-6453718b9779memestudio-am3claimedEugene Blikh{"id":"memestudio-am3","title":"Compact template rail and restore scrollable canvas","description":"The first-start library exposes 100 templates directly in the sidebar. That makes the sidebar's min-content height expand the app grid, vertically centers the canvas against the oversized page, and leaves most of the canvas inaccessible. Keep six popular/selected templates in the rail, move the full searchable library into an overlay picker, preserve Imgflip popularity order, and constrain sidebar/stage/inspector scrolling to the viewport.","acceptance_criteria":"The sidebar renders at most six template tiles plus an All templates action; the full 100-template library is searchable and selectable in a keyboard-accessible overlay; Imgflip catalog order drives popularity and the active template remains visible in the quick rail; the app stays exactly viewport-high; sidebar, stage, and inspector scroll independently; an oversized or zoomed canvas can be reached by scrolling/panning; relevant server, JavaScript, CSS, and Docker checks pass.","status":"open","priority":1,"issue_type":"bug","owner":"bigbes@gmail.com","created_at":"2026-07-19T23:12:23Z","created_by":"Eugene Blikh","updated_at":"2026-07-19T23:12:23Z"}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-20T02:12:27Z
019f7ca8-d58b-72ce-9150-b98ea0525b8bmemestudio-am3updatedEugene Blikh{"id":"memestudio-am3","title":"Compact template rail and restore scrollable canvas","description":"The first-start library exposes 100 templates directly in the sidebar. That makes the sidebar's min-content height expand the app grid, vertically centers the canvas against the oversized page, and leaves most of the canvas inaccessible. Keep six popular/selected templates in the rail, move the full searchable library into an overlay picker, preserve Imgflip popularity order, and constrain sidebar/stage/inspector scrolling to the viewport.","acceptance_criteria":"The sidebar renders at most six template tiles plus an All templates action; the full 100-template library is searchable and selectable in a keyboard-accessible overlay; Imgflip catalog order drives popularity and the active template remains visible in the quick rail; the app stays exactly viewport-high; sidebar, stage, and inspector scroll independently; an oversized or zoomed canvas can be reached by scrolling/panning; relevant server, JavaScript, CSS, and Docker checks pass.","status":"in_progress","priority":1,"issue_type":"bug","assignee":"Eugene Blikh","owner":"bigbes@gmail.com","created_at":"2026-07-19T23:12:23Z","created_by":"Eugene Blikh","updated_at":"2026-07-19T23:12:28Z","started_at":"2026-07-19T23:12:28Z"}{"design":"Keep six quick templates in the sidebar: the first six by Imgflip catalog rank, replacing the sixth with the active template when needed. Put all templates plus upload in a native dialog with its own search; sidebar search and Browse all open it, and Escape/native focus handling close it. Persist catalog rank in SQLite and run a one-time metadata-only rank migration for databases created before the rank column, without redownloading image blobs. Constrain the grid/flex min-heights to 100dvh, make the stage independently scrollable, size the zoom wrapper to transformed dimensions, and support wheel/scrollbar plus space- or middle-drag panning."}NULL2026-07-20T02:14:27Z
019f7cb3-5bf9-71b5-b023-6f5ac4c76ebfmemestudio-am3closedEugene BlikhImplemented six-template quick rail, searchable native full-library picker, persisted Imgflip popularity rank with metadata-only legacy migration, viewport-constrained independent scrolling, zoom-aware stage sizing, and space/middle-button panning. Go tests including race, vet/build, JS syntax, Docker build, and a 100-template headless browser interaction check pass.NULL2026-07-20T02:25:57Z