From af069c2bca4386da7545a0f768c21f023c66fa44 Mon Sep 17 00:00:00 2001 From: jamey Date: Sat, 28 Feb 2026 17:55:35 +0000 Subject: [PATCH] update progress: mark #85 and #96 as done Co-Authored-By: Claude Opus 4.6 --- PROGRESS.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PROGRESS.md b/PROGRESS.md index 992db8f..40df874 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -136,12 +136,12 @@ Plans: [admin-redesign.md](docs/plans/admin-redesign.md) | [admin-font-loading.m | | **Legal page generator** ([plan](docs/plans/legal-page-generator.md)) | | | | | ~~83~~ | ~~`LegalPages` module — generate accurate privacy, delivery, and terms content from settings + provider + shipping data~~ | — | 2.5h | done | | ~~84~~ | ~~Wire `LegalPages` into `Content` LiveView — replace `PreviewData` calls, add tests~~ | 83 | 45m | done | -| 85 | Page editor integration — "Regenerate" button, auto-regenerate on settings change, customised vs auto label | 83, 19 | 1.5h | planned | +| ~~85~~ | ~~Page editor integration — "Regenerate" button, auto-regenerate on settings change, customised vs auto label~~ | 83, 19 | 1.5h | done | | | **Media library** ([plan](docs/plans/media-library.md)) | | | | | ~~93~~ | ~~Schema + context — alt/caption/tags on images, media type, find_usages, orphan detection~~ | — | 1.5h | done | | ~~94~~ | ~~Admin media library UI — grid, filters, upload, detail panel, orphan management~~ | 93 | 2.5h | done | | ~~95~~ | ~~Image picker for page builder — `:image` field type, image_id resolution in renderer~~ | 94 | 2h | done | -| 96 | Polish — theme editor alt text, full modal picker, orphan cleanup on ref removal | 95 | 1h | planned | +| ~~96~~ | ~~Polish — theme editor alt text, full modal picker, orphan cleanup on ref removal~~ | 95 | 1h | done | | | **Custom CMS pages** ([plan](docs/plans/custom-pages.md)) | | | | | ~~97~~ | ~~Stage 1: data model + context — schema fields, split changeset, CRUD functions, cache~~ | — | 1.5h | done | | ~~98~~ | ~~Stage 2: routing + LiveView — `Shop.CustomPage`, catch-all route, 404 handling~~ | 97 | 1h | done | @@ -470,7 +470,7 @@ See: [plan](docs/plans/shipping-sync.md) for implementation details See: [docs/plans/analytics-v2.md](docs/plans/analytics-v2.md) for v2 plan ### Media Library -**Status:** Complete — Stages 1-3 done, stage 4 (polish) planned +**Status:** Complete Admin media library at `/admin/media` with image grid, type/search/orphan filters, upload with alt text, detail panel (metadata editing, usage tracking, delete with protection). Image schema extended with `alt`, `caption`, `tags` fields and `"media"` type. `find_usages/1` scans product_images, theme settings, favicon variants, and page blocks. `delete_with_cleanup/1` refuses deletion of in-use images and cleans up disk variants. `:image` field type in block editor with image preview and ID input. Page renderer resolves `image_id` to responsive variant URLs, falling back to legacy `image_url`/`image_src` strings. Alt text backfill mix task. 1398 tests. @@ -487,7 +487,7 @@ Admin media library at `/admin/media` with image grid, type/search/orphan filter See: [docs/plans/media-library.md](docs/plans/media-library.md) for full plan ### Page Editor -**Status:** Complete — all 9 stages + custom pages done, 1485 tests +**Status:** Complete — all stages done, 1516 tests Database-driven page builder. Every page is a flat list of blocks stored as JSON — add, remove, reorder, and edit blocks on any page. One generic renderer for all pages (no page-specific render functions). Portable blocks (hero, featured_products, image_text, etc.) work on any page. Page-specific blocks (product_hero, cart_items, etc.) are restricted to their native page. Block data loaders dynamically load data based on which blocks are on the page. ETS-cached page definitions. Mobile-first admin editor with live preview, undo/redo, accessible reordering (no drag-and-drop), inline settings forms, and "reset to defaults". CSS-driven page layout (not renderer-driven). Custom CMS pages with 4 utility block types (spacer, divider, button/CTA, video embed), page templates (blank/content/landing) for new page creation, duplicate page action, and mobile sidebar fix for the block picker.