mirror of
https://github.com/PR0M3TH3AN/Artstr-Studio.git
synced 2026-10-27 08:40:39 +00:00
TODO: refresh for Linked Designs kick-off
The list had drifted from reality across the last ~30 commits.
Cleaning up so "what's next?" decisions stand on accurate ground.
Moved out of "Drafted-but-unbuilt" / polish sections and into
"Shipped (recent)":
- Native chart import phases 1–4 (bar + pie + line + polish layer).
The old "Native chart support" follow-up text under PPTX polish
was outdated — chart import is now its own arc with its own
CHART_IMPORT_FEATURE.md spec.
- PPTX Phase 7 per-run rich text spans — listed as a follow-up;
actually shipped in commit b6cf4f3.
- Premium deck publishing + multi-slide preview pager.
- Self-author auto-unlock.
- Pixel-art layer animation when embedded.
- One-click PNG / GIF download on pixel-art preview pages.
- Auto-pick category metadata via defaultCategoryForMode.
- Locked-premium UI gating (Print / Save PDF, Start Presentation,
Import-into-Disc-1/2).
- Vault durability fixes (receipt re-derive, synchronous upsert,
multi-relay union).
Fixed the stale "Branch still needs a merge into `main` once we're
done testing" line under PPTX import polish — the merge happened
ages ago.
Added a new "Chart import polish" section listing the open chart
follow-ups (stacked variants, combo charts, 3D approximations).
Added Linked Designs to "Drafted-but-unbuilt features" so the new
spec at docs/LINKED_DESIGNS_FEATURE.md surfaces for future
"what should we do next" decisions.
This commit is contained in:
1 parent
3d9b012cc2
commit
59ae0e32ec
1 file changed
+95
-23
@@ -66,6 +66,14 @@ toggle that fits the early-web aesthetic. Add new editor-UX items below.
|
||||
|
||||
Each has a full spec in `docs/`.
|
||||
|
||||
- **Linked Designs** — `docs/LINKED_DESIGNS_FEATURE.md`. A new
|
||||
`kind: 'linked'` flavor of the existing design layer that stores
|
||||
only a NIP-01 addressable-event coordinate (no payload) and
|
||||
resolves to the latest source on render. Auto-update across
|
||||
collaborators, smaller host events, and first-class attribution
|
||||
via `'p'` tags. Phased: public-only → premium + private → polish
|
||||
(disk cache, attribution-tag emission, Credits panel, "Publish
|
||||
+ link" workflow).
|
||||
- **Artstr Stacks** — `docs/STACKS_FEATURE.md`. Interactive fullscreen
|
||||
page/card stacks (HyperCard for Nostr) — the Slide Deck extended with
|
||||
layer actions and an interactive viewer.
|
||||
@@ -94,30 +102,18 @@ follow-ups worth their own work:
|
||||
|
||||
## PPTX import polish
|
||||
|
||||
Phases 0–6 of `docs/PPTX_IMPORT_FEATURE.md` shipped on the
|
||||
`pptx-import` branch (deck shell, slide backgrounds, text + speaker
|
||||
notes, image / chart / table / SmartArt placeholders, basic preset
|
||||
shapes with fills + strokes, group flattening, theme color
|
||||
resolution + master/layout bg inheritance + line flip handling).
|
||||
Branch still needs a merge into `main` once we're done testing.
|
||||
Open follow-ups:
|
||||
Phases 0–7 of `docs/PPTX_IMPORT_FEATURE.md` are shipped on `main`
|
||||
(deck shell, slide backgrounds, text + speaker notes with per-run
|
||||
rich-text spans, image / table / SmartArt placeholders, basic preset
|
||||
shapes with fills + strokes + line flips + bent / curved connector
|
||||
approximations, group flattening, theme color resolution +
|
||||
master / layout bg inheritance). Native chart import (the former
|
||||
"placeholders" item) is also shipped as its own arc — see
|
||||
`docs/CHART_IMPORT_FEATURE.md`. Open follow-ups:
|
||||
|
||||
- **Phase 7 polish — per-run rich text spans.** Today a text box
|
||||
takes the first run's style as its dominant style; mid-paragraph
|
||||
bold / color / size changes get lost. Real fix is to emit Artstr
|
||||
rich-text HTML with inline `<b>` / `<i>` / `<span style="...">`
|
||||
per run instead of a flat dominant style.
|
||||
- **Phase 7 polish — richer report modal.** Per-slide warning
|
||||
summary, group counts, theme-resolution stats. The data already
|
||||
lands in `report.warnings` and `report.imported`; just needs UI.
|
||||
- **Native chart support.** Charts currently land as placeholder
|
||||
images. Real support means rendering OOXML chart XML
|
||||
(`ppt/charts/chartN.xml`) into native Artstr layers — text labels
|
||||
for axes / titles / legends, shape layers for bars / columns / pie
|
||||
slices / line segments. Likely its own multi-phase arc: start
|
||||
with bar / column / pie, defer scatter / area / 3D / combo charts.
|
||||
Alternative scoping: extract the underlying data table and let
|
||||
the user rebuild the chart manually.
|
||||
- **Richer report modal.** Per-slide warning summary, group counts,
|
||||
theme-resolution stats. The data already lands in
|
||||
`report.warnings` and `report.imported`; just needs UI.
|
||||
- **Phase 6+ inheritance gaps.** Gradient slide backgrounds
|
||||
(`a:gradFill`), picture / blipFill backgrounds, font scheme
|
||||
resolution (`+mj-lt` / `+mn-lt` → the theme's actual font),
|
||||
@@ -132,6 +128,25 @@ Open follow-ups:
|
||||
under `test/pptx/` so future-phase regressions are caught
|
||||
automatically.
|
||||
|
||||
## Chart import polish
|
||||
|
||||
Phases 1–4 of `docs/CHART_IMPORT_FEATURE.md` shipped (bar / column,
|
||||
pie / doughnut with arc-d slices, line charts with markers, plus
|
||||
the title / legend / data labels / nice-number axis ticks /
|
||||
gridlines polish layer). Open follow-ups:
|
||||
|
||||
- **Stacked + percent-stacked bar / column / line.** PowerPoint's
|
||||
`c:grouping val="stacked"` and `"percentStacked"` variants
|
||||
currently return null and fall back to placeholder. Phase 5 of the
|
||||
chart spec covers the running-sum math + per-series rect deltas.
|
||||
- **Combo charts.** Multiple chart types in one `c:plotArea` (e.g.
|
||||
bar + line). Today only the first child type renders; the others
|
||||
are silently dropped. Phase 6.
|
||||
- **3D variants.** `c:bar3DChart`, `c:line3DChart`, `c:pie3DChart` —
|
||||
these still placeholder. Faithful 3D rendering isn't realistic in
|
||||
a single-canvas editor; an approximation as flat charts with a
|
||||
warning would be honest.
|
||||
|
||||
## Phase-3+ work on shipped features
|
||||
|
||||
- **Private (encrypted) publishing — Phases 3 & 4.**
|
||||
@@ -143,6 +158,63 @@ Open follow-ups:
|
||||
|
||||
## Shipped (recent)
|
||||
|
||||
- **PPTX import** — `docs/PPTX_IMPORT_FEATURE.md`. Phases 0–7
|
||||
shipped on main: deck shell parser, slide backgrounds, text +
|
||||
speaker notes (with Phase-7 per-run rich-text spans for
|
||||
mid-paragraph styling), image / table / SmartArt placeholders,
|
||||
preset shapes (rect / ellipse / triangle / star / hexagon /
|
||||
pentagon / line / connectors with bent + curved approximations)
|
||||
with fills + strokes + line flips, group flattening with
|
||||
composed transforms, and theme-color + master / layout
|
||||
background inheritance. fflate-vendored zip lib + lazy-loaded
|
||||
`src/pptx-importer.js` module keep the main bundle lean.
|
||||
- **Native chart import** — `docs/CHART_IMPORT_FEATURE.md`. Phases
|
||||
1–4 shipped: bar / column (clustered), pie + doughnut (path-arc
|
||||
wedges), line with optional markers, plus the Phase-4 polish
|
||||
layer — title text, series legend with color swatches, data
|
||||
labels (showVal / showCatName / showPercent / showSerName),
|
||||
nice-number value-axis ticks (1/2/5 × 10ⁿ), and optional
|
||||
gridlines when c:majorGridlines is present. Stacked variants
|
||||
and combo / 3D charts still placeholder via the existing
|
||||
CHART_TYPE_UNSUPPORTED fallback.
|
||||
- **Premium decks — publishing + multi-slide preview viewer.**
|
||||
`_renderModeToExportCanvas` now handles `deck` mode (renders the
|
||||
first slide or currently-edited slide). Up to 6 watermarked
|
||||
per-slide previews land in the envelope (~40 KB each, ~240 KB
|
||||
total) so buyers can flip through with a Prev / Next pager
|
||||
before purchase. The same paginated viewer also renders on
|
||||
unlocked decks so the flip-through UX stays continuous.
|
||||
- **Self-author auto-unlock.** Premium events authored by the
|
||||
current user decrypt locally on feed load and surface as
|
||||
unlocked — no zap-yourself required. Runs alongside the
|
||||
existing receipt fast-path; the soft-gate KDF is deterministic
|
||||
so no receipt is needed for the author.
|
||||
- **Pixel-art layer animation when embedded.** Multi-frame
|
||||
pixel-art designs imported as layers into another canvas now
|
||||
animate at their stored fps + loop settings. RAF self-stops when
|
||||
the layer's display canvas leaves the DOM.
|
||||
- **One-click PNG / GIF download on pixel-art preview pages.**
|
||||
Community-browser preview pane for pixel-art designs exposes a
|
||||
Download button that auto-picks PNG (single-frame) or animated
|
||||
GIF (multi-frame) at 4× scale. Reuses the editor's full export
|
||||
pipeline.
|
||||
- **Auto-pick category metadata.** `defaultCategoryForMode` maps
|
||||
canvas modes (slide / deck / customart / pixelart) to their
|
||||
canonical mediaCategories values; runs at the top of `syncInputs`
|
||||
so both create-new and import paths land with a sensible
|
||||
category. Idempotent — leaves a user-picked value alone.
|
||||
- **Locked-premium UI gating.** Print / Save PDF, Start
|
||||
Presentation (deck), and Import-into-Disc-1/2 (disc-design)
|
||||
hidden when the preview row is locked premium. The buttons all
|
||||
depend on the design payload, which the envelope only exposes
|
||||
after unlock.
|
||||
- **Vault durability fixes.** Receipt fast-path now re-derives +
|
||||
decrypts the payload (was setting unlocked:true without payload,
|
||||
breaking Use/Fork after cache wipe). Vault upsert is now
|
||||
synchronous-to-success with visible failure toasts. Vault reads
|
||||
+ writes use a wider relay union (current + DEFAULT_NOSTR_RELAYS)
|
||||
so purchases stay visible across browsers / domains even when
|
||||
the user narrows their relay list.
|
||||
- **Premium encrypted designs — static soft-gate + NWC split-zap +
|
||||
purchase vault.** Spec lives in `docs/PREMIUM_DESIGNS_FEATURE.md`.
|
||||
Creators tick "Premium encrypted" + a soft-gate ack in the publish
|
||||
|
||||
Reference in new issue
Block a user