hi96a1bh4n3k9me7n2e617drg2f5tq9a · 14 rows
| id | content_hash | title | description | design | acceptance_criteria | notes | status | priority | issue_type | assignee | estimated_minutes | created_at | created_by | owner | updated_at | closed_at | closed_by_session | external_ref | spec_id | compaction_level | compacted_at | compacted_at_commit | original_size | sender | ephemeral | wisp_type | pinned | is_template | mol_type | work_type | source_system | metadata | source_repo | close_reason | event_kind | actor | target | payload | await_type | await_id | timeout_ns | waiters | hook_bead | role_bead | agent_state | last_activity | role_type | rig | due_at | defer_until | no_history | started_at | is_blocked |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| memestudio-0pn | 2d3546992fa62b4fb012904f36311d7b53068eec339edc5bb7116e67b67e5b55 | Template search / Cmd-K filtering | The sidebar 'Search templates' box and Cmd-K are static markup. Wire real filtering of the template tiles (and gallery) by name. | closed | 2 | feature | NULL | NULL | 2026-07-18T15:21:26Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T18:51:30Z | 2026-07-18T18:51:30Z | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 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. | 0 | NULL | NULL | NULL | 0 | NULL | 0 | |||||||||||||||||||||||
| memestudio-1ar | 2518a690d46b48ebda1885f57efeaced5de3054d756567e8a0eb99b10b31032d | Named saves — 'my memes' gallery | Backend 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. | closed | 1 | feature | Eugene Blikh | NULL | 2026-07-18T15:21:24Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T18:25:32Z | 2026-07-18T18:25:32Z | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 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. | 0 | NULL | NULL | NULL | 0 | 2026-07-18T18:16:40Z | 0 | |||||||||||||||||||||||
| memestudio-1hv | 3ba5e17af917b3b11ed1a8e9252904435506dd6f67ff50ac65d8ee1f1b700dd3 | Canvas zoom | The -/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. | open | 2 | feature | NULL | NULL | 2026-07-18T15:21:25Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:25Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-2og | 340ec60a8e26a4753d58bd8e45081523a26923f7bd9d8e6b30de3fe8d9371c28 | Dedicated eraser / Draw-Erase mode | The 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. | closed | 1 | feature | Eugene Blikh | NULL | 2026-07-18T15:21:23Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T18:05:46Z | 2026-07-18T18:05:46Z | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 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. | 0 | NULL | NULL | NULL | 0 | 2026-07-18T18:01:21Z | 0 | |||||||||||||||||||||||
| memestudio-7ho | 64a474bb242581d985c6bf88de3d906ab0322e804eacdea7ce575653ded4442e | Real gallery sticker thumbnails | The 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. | open | 2 | feature | NULL | NULL | 2026-07-18T15:21:25Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:25Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-801 | 85c866ea39779ef7b6b4ac31c44d6fa77818d2a892de5b9e7fba78d836237d90 | Drop preset-baked 'Ship it' caption | Now 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. | open | 2 | chore | NULL | NULL | 2026-07-18T15:21:24Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:24Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-a3d | 3a306a5786d9fcb59334913b41e11ecf57e83d90198c4828ce6fd967d6342bb2 | Image corner-radius inspector row | The image inspector spec has a Radius slider; placed images use a fixed 3px radius. Add radius to placed state + render + compositor (roundRect). | open | 3 | task | NULL | NULL | 2026-07-18T15:21:27Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:27Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-bvs | 5b738fb26ed5b906e488d30af360a443d9ab3440d74626a53b8d1ad9a18c9f55 | Package the Go server for deploy | Containerize 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). | open | 1 | task | NULL | NULL | 2026-07-18T15:21:49Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:49Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-c0z | aad56e0412a304347fd94e59b5816a7e41091f3f1fadcffa1cab65bd1b407f79 | Deploy Meme Studio to phoebe-lab | Stand 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. | open | 1 | epic | NULL | NULL | 2026-07-18T15:21:48Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:48Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-cv9 | c7513e9eb2351dd76b0e09ab18b020c7be5ff5170feca97dc4a4fe08336a0806 | Dynamic breadcrumb | The 'Templates / Drake Hotline Bling' breadcrumb is static. Reflect the selected template/base name. | open | 3 | chore | NULL | NULL | 2026-07-18T15:21:27Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:27Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-djc | 3bee86e47cc17d380694d04901226b02ef09215bd5a35acd55954f3d6379c6d1 | Reconcile manifest vs saved doc | 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). | open | 3 | task | NULL | NULL | 2026-07-18T15:21:28Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:28Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-jf0 | 92f42636d3dd18980eca726c8ce3b2f483f8aed0aa6381655d44a62d8053e3f0 | Rotate/scale text layers | Text 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. | open | 3 | feature | NULL | NULL | 2026-07-18T15:21:27Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:27Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-l6t | 1980dcc25dac467f5b5ad1ecf8647acc3830a2ada6f359f8e6dc50e376dec4f9 | Font choice beyond Impact | The 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. | open | 3 | feature | NULL | NULL | 2026-07-18T15:21:26Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:26Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 | ||||||||||||||||||||||||
| memestudio-uc3 | 16589fc733d9bff3048338a4420f02c9b4c4758f38a9068ab7664ab72516e5cb | Persist undo history across reload | 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). | open | 3 | task | NULL | NULL | 2026-07-18T15:21:28Z | Eugene Blikh | bigbes@gmail.com | 2026-07-18T15:21:28Z | NULL | NULL | 0 | NULL | NULL | NULL | 0 | 0 | 0 | �{} | 0 | NULL | NULL | NULL | 0 | NULL | 0 |