~bigbes/memestudio · issues

3mcv84d4evabm13bj8n1napfiq2f4crh · 14 rows

idcontent_hashtitledescriptiondesignacceptance_criterianotesstatuspriorityissue_typeassigneeestimated_minutescreated_atcreated_byownerupdated_atclosed_atclosed_by_sessionexternal_refspec_idcompaction_levelcompacted_atcompacted_at_commitoriginal_sizesenderephemeralwisp_typepinnedis_templatemol_typework_typesource_systemmetadatasource_repoclose_reasonevent_kindactortargetpayloadawait_typeawait_idtimeout_nswaitershook_beadrole_beadagent_statelast_activityrole_typerigdue_atdefer_untilno_historystarted_atis_blocked
memestudio-0pn2d3546992fa62b4fb012904f36311d7b53068eec339edc5bb7116e67b67e5b55Template search / Cmd-K filteringThe sidebar 'Search templates' box and Cmd-K are static markup. Wire real filtering of the template tiles (and gallery) by name.closed2featureNULLNULL2026-07-18T15:21:26ZEugene Blikhbigbes@gmail.com2026-07-18T18:51:30Z2026-07-18T18:51:30ZNULL0NULLNULLNULL000�{}Wired real template search: sidebar #tplSearch input filters the template grid by name (case-insensitive), ⌘K focuses it (inline field, not a modal — respects invariant 1), Escape clears+blurs. data-tpl keeps original index so filtered tiles click through; #tplCount shows matches/total. Also fixed a latent bug where the hidden attr on .side-group/.memes was overridden by display:flex (My memes group leaked into the no-backend view). Verified headlessly.0NULLNULLNULL0NULL0
memestudio-1ar2518a690d46b48ebda1885f57efeaced5de3054d756567e8a0eb99b10b31032dNamed saves — 'my memes' galleryBackend autosaves ONE document. Add a memes table (id, name, doc json, thumb, updated_at) + API (list/create/open/delete) and a sidebar 'My memes' list so you can save, name, and reopen multiple memes. Autosave the current draft on top.closed1featureEugene BlikhNULL2026-07-18T15:21:24ZEugene Blikhbigbes@gmail.com2026-07-18T18:25:32Z2026-07-18T18:25:32ZNULL0NULLNULLNULL000�{}Named saves shipped: memes table + list/create/get/put/delete API; 'My memes' sidebar with save (create-or-update-in-place), open, inline rename, delete, and compose() thumbnails. ⌘S + New. Live /api/doc autosave stays the draft. Verified full-stack in headless Chrome incl. reload persistence and no-backend fallback.0NULLNULLNULL02026-07-18T18:16:40Z0
memestudio-1hv3ba5e17af917b3b11ed1a8e9252904435506dd6f67ff50ac65d8ee1f1b700dd3Canvas zoomThe -/100%/+ zoom control is static markup; the canvas never scales. Add real zoom that scales the stage visually without changing output size, and make drag/draw/pointer math divide by the scale so hit-testing stays correct.open2featureNULLNULL2026-07-18T15:21:25ZEugene Blikhbigbes@gmail.com2026-07-18T15:21:25ZNULLNULL0NULLNULLNULL000�{}0NULLNULLNULL0NULL0
memestudio-2og340ec60a8e26a4753d58bd8e45081523a26923f7bd9d8e6b30de3fe8d9371c28Dedicated eraser / Draw-Erase modeThe Brush inspector spec shows a Draw/Erase mode toggle that isn't wired. Add an eraser: either a real erase mode that removes ink under the cursor, or at minimum a 'Clear drawing' action. Today removal is select-a-stroke + Delete, or undo.closed1featureEugene BlikhNULL2026-07-18T15:21:23ZEugene Blikhbigbes@gmail.com2026-07-18T18:05:46Z2026-07-18T18:05:46ZNULL0NULLNULLNULL000�{}Implemented Draw/Erase mode toggle + Clear-drawing action. Erase drags remove whole strokes under the cursor (vector model), one undo step per gesture; Clear wipes the ink layer in one step. Verified in headless Chrome via __ms.0NULLNULLNULL02026-07-18T18:01:21Z0
memestudio-7ho64a474bb242581d985c6bf88de3d906ab0322e804eacdea7ce575653ded4442eReal gallery sticker thumbnailsThe 12 built-in 'Insert image' gallery items are hue-gradient placeholders (GALLERY array). Only user-imported images are real bitmaps. Seed real sticker images (e.g. a small bundled set or reuse the imgflip fetcher) so the built-in gallery is real.open2featureNULLNULL2026-07-18T15:21:25ZEugene Blikhbigbes@gmail.com2026-07-18T15:21:25ZNULLNULL0NULLNULLNULL000�{}0NULLNULLNULL0NULL0
memestudio-80185c866ea39779ef7b6b4ac31c44d6fa77818d2a892de5b9e7fba78d836237d90Drop preset-baked 'Ship it' captionNow that real text layers exist, the hardcoded 'Ship it' caption baked into the classic preset (and similar baked captions) is redundant and overlaps user text. Make presets pure layouts; the classic base should be image-only.closed2choreNULLNULL2026-07-18T15:21:24ZEugene Blikhbigbes@gmail.com2026-07-18T18:56:08Z2026-07-18T18:56:08ZNULL0NULLNULLNULL000�{}Classic preset is now image-only: dropped the baked 'Ship it' caption from the DOM core(), the compositor (CORE_PAINT.classic, incl. its backing scrim), and the layer-list indicator row. Removed the now-dead .bar CSS. Multi-panel presets keep their illustrative captions (preset furniture on still-mock layouts) — the concrete overlap-with-user-text harm was classic-specific. Verified: classic has no .meme-text/.bar/Ship-it row, export works, other presets unchanged.0NULLNULLNULL0NULL0
memestudio-a3d3a306a5786d9fcb59334913b41e11ecf57e83d90198c4828ce6fd967d6342bb2Image corner-radius inspector rowThe image inspector spec has a Radius slider; placed images use a fixed 3px radius. Add radius to placed state + render + compositor (roundRect).open3taskNULLNULL2026-07-18T15:21:27ZEugene Blikhbigbes@gmail.com2026-07-18T15:21:27ZNULLNULL0NULLNULLNULL000�{}0NULLNULLNULL0NULL0
memestudio-bvs5b738fb26ed5b906e488d30af360a443d9ab3440d74626a53b8d1ad9a18c9f55Package the Go server for deployContainerize server/: CGO_ENABLED=0 static build (pure-Go SQLite), a Dockerfile (or single static binary + systemd unit), embed or ship the built editor static files + templates/. Config via flags/env (-addr, -db, -static).closed1taskEugene BlikhNULL2026-07-18T15:21:49ZEugene Blikhbigbes@gmail.com2026-07-19T21:03:54Z2026-07-19T21:03:54ZNULL0NULLNULLNULL000�{}Added and validated a scratch-based Docker package with a static Go binary, bundled editor/templates, persistent SQLite volume, env/flag configuration, and runtime smoke coverage.0NULLNULLNULL02026-07-19T20:52:08Z0
memestudio-c0zaad56e0412a304347fd94e59b5816a7e41091f3f1fadcffa1cab65bd1b407f79Deploy Meme Studio to phoebe-labStand up the memestudio stack in phoebe-lab: the Go server behind Traefik + Authelia forwardAuth at memes.bigb.es, with a small volume for the SQLite file (doc + image blobs). Stateful (was planned stateless). Wire the reverse-proxy auth, TLS, and a persistent volume.in_progress1epicEugene BlikhNULL2026-07-18T15:21:48ZEugene Blikhbigbes@gmail.com2026-07-19T21:04:26ZNULLNULL0NULLNULLNULL000�{}0NULLNULLNULL02026-07-19T21:04:26Z0
memestudio-cv9c7513e9eb2351dd76b0e09ab18b020c7be5ff5170feca97dc4a4fe08336a0806Dynamic breadcrumbThe 'Templates / Drake Hotline Bling' breadcrumb is static. Reflect the selected template/base name.open3choreNULLNULL2026-07-18T15:21:27ZEugene Blikhbigbes@gmail.com2026-07-18T15:21:27ZNULLNULL0NULLNULLNULL000�{}0NULLNULLNULL0NULL0
memestudio-djc3bee86e47cc17d380694d04901226b02ef09215bd5a35acd55954f3d6379c6d1Reconcile manifest vs saved docOn 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).open3taskNULLNULL2026-07-18T15:21:28ZEugene Blikhbigbes@gmail.com2026-07-18T15:21:28ZNULLNULL0NULLNULLNULL000�{}0NULLNULLNULL0NULL0
memestudio-jf092f42636d3dd18980eca726c8ce3b2f483f8aed0aa6381655d44a62d8053e3f0Rotate/scale text layersText layers only move + change font-size (matches the spec). Give them the same rotate/scale handles as placed images if desired — reuse beginTransform-style math.in_progress3featureEugene BlikhNULL2026-07-18T15:21:27ZEugene Blikhbigbes@gmail.com2026-07-18T19:27:06ZNULLNULL0NULLNULLNULL000�{}0NULLNULLNULL02026-07-18T19:27:06Z0
memestudio-l6t1980dcc25dac467f5b5ad1ecf8647acc3830a2ada6f359f8e6dc50e376dec4f9Font choice beyond ImpactThe Text inspector Font row is a static 'Impact' field. Make it a real picker (Impact + a couple of system faces), stored per text layer, honoured in textsHTML + drawText.closed3featureEugene BlikhNULL2026-07-18T15:21:26ZEugene Blikhbigbes@gmail.com2026-07-18T19:03:50Z2026-07-18T19:03:50ZNULL0NULLNULLNULL000�{}Font row is now a real per-layer picker: FONTS map (Impact + system Sans/Serif, invariant 6), stored as texts[].font, honoured in textsHTML (inline font-family) and drawText (ctx.font via fontCSS) so preview==export. Wired via data-text-font seg with per-button font previews; one undo step; backward-compatible (missing font → impact). Fixed a real bug: double-quoted family stacks truncated the style="…" attribute — switched to single quotes. Verified headlessly + screenshot.0NULLNULLNULL02026-07-18T18:56:43Z0
memestudio-uc316589fc733d9bff3048338a4420f02c9b4c4758f38a9068ab7664ab72516e5cbPersist undo history across reloadUndo/redo history is in-memory; a reload restores the document but not the undo stack. Optionally persist a bounded history (or accept as-is).open3taskNULLNULL2026-07-18T15:21:28ZEugene Blikhbigbes@gmail.com2026-07-18T15:21:28ZNULLNULL0NULLNULLNULL000�{}0NULLNULLNULL0NULL0