Skip to content

Convert the legacy Images archive to WebP and integrate it into the Afterglow project #58

Description

@BryanHarrisScripts

Finding

Yes. The legacy Images folder should be used inside PlotPickle’s built-in Afterglow project after conversion to optimized WebP assets and a careful source-to-current mapping review.

This folder is different from the general MoodBoard archive in #57:

  • the MoodBoard archive is a reusable visual-reference library for any writer;
  • the Images archive contains Afterglow-specific presentation and story artwork;
  • these images should therefore appear inside Afterglow’s Project Overview, Pitch & Vision, Visual Bible and corresponding Block/Storyboard positions;
  • they must remain clearly labelled as legacy Afterglow visuals rather than silently presented as newly approved canonical storyboard frames.

The source repository history confirms that the folder was imported from Afterglow-Echoes-of-Sentience. The original Afterglow README directly maps named files from this image set to its story Blocks.

Confirmed legacy assets

The following files are explicitly referenced by the original Afterglow materials.

Project, menu and pitch visuals

  • Afterglow Menu v9.png
  • AfterglowPlot.png
  • ThemeAfterglow.png

These are suitable for:

  • the Afterglow Project Overview;
  • a legacy-project gallery;
  • Pitch & Vision;
  • an optional pitch-package visual page;
  • visual-history or source comparison.

They should not automatically replace current PlotPickle text fields or newer visual assets.

Legacy story/block visuals

Confirmed named block images include:

  • Afterglow v9 Puppets.png
  • BrokenNumbers v9.png
  • Summers Symphony v9.png
  • Dawn Departure v9.png
  • Remnants Past v9.png
  • The Long Road to Silence.png
  • DusktoDrive.png
  • SummersIntervention.png
  • IronyOfConnection.png
  • Echoes of Familiarity.png
  • Reflections and Revelations.png
  • Uncharted Territories.png
  • Joyride into Consciousness.png
  • The Journey Within.png
  • Lost and Found in Venice Beach.png

The original Afterglow README uses these as the completed visual sequence through the first three positions of its third act. Later positions use the generic Banner.png placeholder rather than unique artwork.

Placeholder

  • Banner.png

Do not treat repeated Banner uses as completed Afterglow storyboard frames. Keep it only as historical source evidence or omit it from the user-facing canonical gallery.

Important mapping issue

The old visual sequence and the current PlotPickle 24-Block index are not perfectly one-to-one.

The current PlotPickle Afterglow titles include:

  1. Puppets and Puppeteers — Part 1
  2. Puppets and Puppeteers — Part 2
  3. A Dance with AI and New Beginning
  4. Broken Numbers & Shattered Hearts
  5. Dawn of Departure
  6. Remnants of the Past
  7. The Long Road to Silence
  8. AI Road Trip Rumble
  9. A Dance with Summer
  10. The Irony of Connection
  11. Echoes of Familiarity
  12. Reflections & Revelations
  13. Uncharted Territories
  14. Joyride into Consciousness
  15. The Journey Within
  16. Lost & Found in Venice Beach
  17. Waves of Connections
  18. Wheels of Destiny
  19. Surviving Singularity
  20. Coded Bonds
  21. Guiding Stars
    22–24. Reconciliation still required

The legacy first-act image set predates the current split of Puppets and Puppeteers into Parts 1 and 2, and the source presentation order places BrokenNumbers and Summers Symphony differently from the current title index.

Therefore:

  • do not assign all images purely by original table position;
  • map by image title, screenplay evidence and current Block meaning;
  • allow one legacy image to be linked to a sequence or multiple related Blocks when appropriate;
  • do not duplicate the same image into two Blocks without clearly recording that it is a shared legacy reference;
  • mark uncertain mappings as proposed until Bryan reviews them.

Recommended initial mapping

This is a review starting point, not an automatic canonical decision.

Legacy image Proposed current use
Afterglow v9 Puppets Shared sequence/legacy cover for Blocks 1–2
Summers Symphony v9 Block 3 candidate
BrokenNumbers v9 Block 4 candidate
Dawn Departure v9 Block 5 candidate
Remnants Past v9 Block 6 candidate
The Long Road to Silence Block 7 candidate
DusktoDrive Block 8 candidate
SummersIntervention Block 9 candidate; rename display label around Isobel/Summer source reconciliation
IronyOfConnection Block 10 candidate
Echoes of Familiarity Block 11 candidate
Reflections and Revelations Block 12 candidate
Uncharted Territories Block 13 candidate
Joyride into Consciousness Block 14 candidate
The Journey Within Block 15 candidate
Lost and Found in Venice Beach Block 16 candidate

Blocks 17–24 require newer or separately sourced artwork. The old generic Banner should not disguise those gaps.

PlotPickled adaptation principle

  • Preserve the original PNG files separately.
  • Convert retained derivatives to WebP.
  • Give files semantic, stable names.
  • Preserve the original filename, repository, prompt/source information and mapping decision in a manifest.
  • Distinguish legacy visual, reference image, approved storyboard frame and generated replacement.
  • Never claim a legacy image is canonical merely because it exists.
  • Never overwrite newer approved Afterglow storyboard images without comparison and writer approval.
  • Keep the assets available offline in the downloaded PlotPickle edition.
  • Do not require AI or an online GitHub connection to view them.
  • Use the same writer-review boundary as the rest of PlotPickle.

WebP conversion plan

Use the local conversion infrastructure planned for #57, but maintain a separate Afterglow manifest and destination.

Suggested paths:

public/afterglow/legacy-visuals/full/
public/afterglow/legacy-visuals/cards/
public/afterglow/legacy-visuals/thumbs/
data/afterglow-visual-manifest.ts

Suggested filenames:

afterglow-menu-v9.webp
afterglow-plot.webp
afterglow-theme.webp
puppets-and-puppeteers.webp
broken-numbers.webp
summers-symphony.webp
dawn-of-departure.webp
remnants-of-the-past.webp
the-long-road-to-silence.webp
dusk-to-drive.webp
summers-intervention.webp
irony-of-connection.webp
echoes-of-familiarity.webp
reflections-and-revelations.webp
uncharted-territories.webp
joyride-into-consciousness.webp
the-journey-within.webp
lost-and-found-venice-beach.webp

Conversion settings

Because many of these assets may contain embedded titles or other text, preserve legibility rather than pursuing maximum compression.

Recommended derivatives:

  • full: original dimensions, WebP quality approximately 90 or visually reviewed lossless mode where text degrades;
  • card: longest edge around 1400 pixels, quality around 88;
  • thumbnail: longest edge around 640 pixels, quality around 82–86;
  • preserve alpha when present;
  • preserve aspect ratio;
  • no upscaling;
  • strip unnecessary metadata while preserving provenance in the manifest;
  • visually compare every converted image with its PNG source.

The conversion report should include:

  • exact source count;
  • retained, omitted and placeholder counts;
  • source and output dimensions;
  • source and output byte sizes;
  • conversion ratio;
  • duplicate hashes;
  • missing derivatives;
  • unreadable text or visible compression failures;
  • mapping status.

Run this locally without GitHub Actions because the current Actions allocation is exhausted.

Afterglow visual manifest

Suggested structure:

type AfterglowLegacyVisual = {
  id: string;
  title: string;
  kind: "overview" | "plot" | "theme" | "block-cover" | "placeholder";
  summary: string;
  images: {
    thumb: string;
    card: string;
    full: string;
    width: number;
    height: number;
  };
  proposedBlockNumbers: number[];
  proposedSequenceNumber?: number;
  mappingStatus: "confirmed" | "proposed" | "unmapped" | "placeholder" | "retired";
  mappingNote: string;
  characterIds: string[];
  locationIds: string[];
  tags: string[];
  source: {
    repository: string;
    path: string;
    originalFilename: string;
    originalSha: string;
    prompt: string;
    creator: string;
    generated: boolean | "unknown";
    rightsNote: string;
  };
};

The manifest should be hand-reviewed and static so it works offline.

Integration into Afterglow

1. Project Overview

Add a Legacy Afterglow Visuals card or gallery showing:

  • menu/title board;
  • plot board;
  • theme board;
  • count of mapped story visuals;
  • count of proposed or unresolved mappings;
  • link to the full legacy gallery.

Explain that these images document an earlier visual-development stage.

2. Pitch & Vision

Allow the writer to view the plot and theme boards beside:

  • premise;
  • logline;
  • audience promise;
  • emotional experience;
  • visual vision.

Offer deliberate actions such as:

  • Pin to pitch references;
  • Use in local pitch package;
  • Compare with current visual direction;
  • Open in Visual Bible.

Do not insert them into exported pitch packages automatically.

3. Visual Bible & Mood Boards

Show three sources separately:

This avoids confusing project history with generic inspiration.

4. Block and Storyboard views

For mapped Blocks, add a labelled section such as:

Legacy visual reference

Show:

  • image;
  • original title;
  • proposed current Block;
  • mapping confidence/status;
  • source note;
  • current approved storyboard images beside it;
  • Use as Block cover, Pin as reference, Compare, and Retire actions.

Do not automatically spread one legacy image across all four mini-block storyboard slots.

A legacy block image is best treated as:

  • a Block cover;
  • a sequence-level reference;
  • a starting composition or palette reference;
  • historical visual evidence.

It is not automatically four mini-block keyframes.

5. Script Viewer and Read & Learn

Optional contextual display may show a small legacy visual when the reader enters a mapped Block. Keep the screenplay readable and make images collapsible.

A learning note can explain how an early concept card differs from a finished storyboard, shot plan or production keyframe.

6. Pitch package

Add an optional Legacy Visual Development section with writer-controlled image selection and captions.

The default pitch package should continue to use only approved selections.

7. Provenance and source history

Record legacy images as sourced project assets, not as new AI-generation events in the active PlotPickle session.

If an image was AI-generated historically, preserve that fact in source metadata. Do not fabricate a provider, model or prompt where it is unknown.

New replacements generated through PlotPickle should receive separate current provenance records.

Rights and release review

Before public distribution:

  • confirm Bryan has authority to redistribute each image;
  • inspect whether any asset contains third-party logos, copyrighted characters, unlicensed likenesses or source imagery;
  • preserve the source repository and original file SHA;
  • record historical generation details when available;
  • do not assume the screenplay’s licence automatically covers every image file;
  • omit or replace any asset with uncertain release rights;
  • keep a clear distinction between software licence, educational material, screenplay licence and visual-asset permissions.

This is a rights and provenance audit, not a claim that the images cannot be used. The same project owner and source history make them strong reuse candidates, but the release record should be explicit.

Current-name reconciliation

The source images contain legacy terminology and may refer to Summer, while PlotPickle currently treats Summer and Isobel as one character pending reconciliation.

  • Preserve the original title in source metadata.
  • Use a current display label where appropriate.
  • Do not edit text embedded inside an image merely to conceal the historical version.
  • Add a caption explaining the legacy naming when required.
  • If a cleaned replacement is made, keep the original and replacement as separate assets with their relationship recorded.

The project title must also be reconciled with the final approved Afterglow title before generating new captions, filenames or pitch exports.

Relationship to newer Afterglow imagery

PlotPickle already includes newer replacement concept keyframes for later story positions. These legacy images must not overwrite newer work automatically.

For every Block with both sources:

  • display legacy and current images side by side;
  • identify their dates and source;
  • let the writer choose legacy reference, approved current frame, alternate or retired;
  • preserve both in project history when useful;
  • keep only approved selections in final pitch and production exports.

Completion phases

Phase 1 — Inventory and conversion

  • enumerate every file in the linked Images folder;
  • verify binary type, dimensions, size and SHA;
  • classify overview, pitch, story visual, placeholder, duplicate or unrelated;
  • convert retained images to WebP;
  • create verification report and manifest.

Phase 2 — Read-only integration

  • bundle assets offline;
  • add the Legacy Afterglow Visuals gallery;
  • show mapped images in Project Overview, Pitch & Vision, Visual Bible and Blocks;
  • make all mappings visibly proposed or confirmed;
  • no schema change required.

Phase 3 — Selection and approval

  • pin references;
  • approve Block covers;
  • select pitch-package images;
  • compare legacy/current visuals;
  • preserve decisions in revision history.

Phase 4 — Complete missing visual coverage

  • identify Blocks 17–24 without unique legacy art;
  • compare against current replacement keyframes and storyboard-block sources;
  • commission, generate or manually create only the truly missing visuals;
  • maintain continuity locks and provenance.

Acceptance criteria

  • Every file in the linked Images folder is inventoried.
  • Exact retained, omitted, placeholder, duplicate and unresolved counts are reported.
  • All retained PNGs have verified WebP full, card and thumbnail derivatives.
  • Original PNGs remain preserved separately.
  • Semantic filenames replace unstable titles and spacing in application paths.
  • A static Afterglow visual manifest preserves original path, filename, SHA, source, rights note and mapping status.
  • The menu, plot and theme images appear in appropriate Afterglow overview/pitch contexts.
  • Confirmed story visuals are available beside their proposed current Blocks.
  • Legacy first-act ordering differences are reviewed rather than automatically imported.
  • Puppets can serve as a shared sequence reference for Blocks 1–2 without pretending two independent frames exist.
  • Banner.png is not presented as completed artwork for Blocks 17–24.
  • Summer/Isobel naming is explained and source titles remain preserved.
  • Legacy images are visually distinct from current approved storyboard frames and generic mood-board references.
  • Nothing becomes an approved Block cover or pitch asset without writer action.
  • The library works offline without AI or an account.
  • Conversion runs locally and does not depend on GitHub Actions.
  • Rights/provenance review is completed before public release.
  • Tests cover manifest completeness, WebP derivatives, mappings, placeholder exclusion, offline loading, selective approval and legacy/current comparison.

Relationship to existing issues

Rationale

These assets are part of Afterglow’s visual-development history and should not remain hidden in an old repository folder. Used carefully, they can immediately enrich the built-in example project, help users understand how a screenplay evolves visually and provide real colour, composition and atmosphere references for the corresponding Blocks. The important distinction is that they are source visuals to review and map—not automatic replacements for the current screenplay, storyboard or newer approved artwork.

Activity

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

Metadata

Metadata

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions