Skip to content

Wayfinder map: plone.gallery next-gen (2.x) #23

Description

@MrTango

Destination

plone.gallery 2.x architecture locked and specced, ready to implement: the responsive-image approach (resize the <picture>, browser upgrades the scale) validated by prototype; the gallery block and listing gallery variation designed for both Aurora (React block) and Blicca (server-side rendering); the lightbox plugin decision made (adapt spotlight.js / adopt another / build custom); packaging and migration path settled. Planning only — implementation happens outside this map.

Notes

  • Domain glossary: CONTEXT.md at repo root (Aurora, Blicca, Somersault editor, picture variant, responsive lightbox, gallery block, listing gallery variation, flexbin mosaic). Use its vocabulary in all tickets.
  • Skills to consult per session: /grilling + /domain-modeling for grilling tickets, /prototype for prototype tickets, /research for research tickets.
  • Working assumptions (offered twice, uncontested — flag here if wrong):
    • Map produces decisions + spec; no execution inside the map beyond decision-serving prototypes.
    • Package stays plone.gallery, version 2.0.0a1 on the nextgen branch, modernized to pyproject.toml + uv; monorepo with the npm package for the Aurora add-on in the same repo (confirmed: "same repo").
  • Settled by grilling (2026-08-19/20), recorded here because they predate the map:
    • Plone floor for 2.x: 6.2.
    • Both frontends stay supported: Blicca keeps classical TinyMCE pages and gets block pages (via the not-yet-public Aurora-editor-compatible Blicca block integration). plone.gallery 2.x ships the Blicca server-side rendering of its blocks.
    • No Volto support planned.
    • flexbin.css stays as the mosaic layout.
    • Lightbox must use responsive images: zoom = resize the same <picture> element, browser loads a bigger scale from srcset; no link to a separate large file. Other lightbox features (slideshow, keyboard, touch, captions, fullscreen…) are nice-to-have.
    • Gallery surfaces: an own gallery block (editor picks individual images) plus a listing gallery variation (listing block searches images, renders them as a gallery).

Decisions so far

  • Research: rendering picture tags for catalog brains — image_scales catalog metadata (+ plone.picture_variants registry) suffices to build full <picture>/srcset markup without waking objects; no brain-level picture() exists in core (stock 6.2 listings even fall back to getObject() per item); decision: implement a brain-level picture() locally in plone.gallery first, output-identical to ImageScaling.picture(), then upstream to plone.namedfile as NavigationRootScaling.picture(). Findings: docs/research/brain-picture.md on local branch research/brain-picture.

  • Research: Aurora listing block variations and block add-on anatomy — Aurora has no working listing-block variations yet (unstable, being rewritten): ship our own gallery block; add-on = npm package with install(config) blocksConfig entry (+ optional config/server.ts data loader); images render as <img srcset> from image_scales with sizes as the block author's job; multi-image picking via object_browser widget, mode multiple. Findings: docs/research/aurora-listing-variation.md on local branch research/aurora-listing-variation.

  • Prototype: responsive lightbox zoom on a static page — concept validated in-browser: zoom = promote the same <picture> into an overlay and rewrite sizes; the browser then fetches a bigger scale from srcset (no separate large-image URL). Constraints: sizes must be rewritten on zoom/resize/fullscreen (element size alone never re-selects); sizes="auto" + loading="lazy" does it JS-free in Chromium (progressive enhancement); browsers never downgrade; blur-up transition comes free. Prototype: prototypes/responsive-lightbox/ on local branch prototype/responsive-lightbox.

Not yet specified

  • Lightbox implementation plan — sharpens after the plugin decision (responsive-zoom prototype validated the mechanism): exact feature set (slideshow/autoplay, keyboard, touch, captions, fullscreen, deep-linking?), and whether one implementation serves both Blicca (Patternslib/Svelte pattern) and Aurora (React) or two thin wrappers share a core.
  • Aurora block view/edit component design — depends on block schema decisions and on Aurora alpha churn; includes how the block consumes Aurora's own responsive-image rendering once final.
  • 1.x → 2.x migration — what happens to existing photo_gallery view users, the TinyMCE shortcode/outputfilter, and the tinymce grid templates; upgrade steps. Sharpens once the content-model decisions close.
  • Testing strategy — how to test two frontends + server-side block rendering (robot tests? Playwright against both frontends?).
  • CI/release pipeline — releasing a Python package + npm package from one repo.

Out of scope

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions