Summary
Turn this repo from an ad-hoc media dump into a structured, manifest-described, CDN-served asset store that FastLED builds and the FastLED website can both consume.
Current state
main contains 15 objects — a 9-byte README.md and a flat docs/ folder of demo videos and images (~235 MB, largest single file docs/fastled_3_10_animartrix.mp4 at 96 MB). There is:
- no manifest or index — nothing enumerates what exists
- no directory convention — everything is
docs/
- no integrity metadata — no checksums anywhere
- no CDN story — consumers hit
raw.githubusercontent.com directly
- no distinction between documentation media and build-time example assets
Proposed
1. Directory convention
docs/ # existing README/demo media (unchanged)
examples/<SketchName>/ # build-time assets consumed by fbuild
manifest.json # index, per zackees/manifest.json
2. Adopt zackees/manifest.json
Use zackees/manifest.json rather than a bespoke format. Its Index → Catalog → Release tiers and OCI-style {url, sha256, size_bytes} descriptors give integrity-chained federation across repos and CDNs — exactly what a CDN-fronted asset store needs. Every asset entry carries a sha256, so consumers verify content rather than trusting transport.
Note the platform tuple is a poor fit for media assets (a .rgb video has no os/arch). Either use a wildcard/any platform, or raise a spec question upstream about a media/data asset class. This is the main open design question and should be settled before bulk-populating the manifest.
3. CDN
raw.githubusercontent.com is not a CDN and is rate-limited. Front the repo with jsDelivr (https://cdn.jsdelivr.net/gh/FastLED/assets@<ref>/<path>), which needs no infrastructure and supports tag/commit pinning. Manifest urls is an array, so the raw GitHub URL can stay as a documented fallback.
4. Website surfacing
With a manifest in place, the FastLED site can enumerate and render available assets from one JSON fetch instead of hardcoding paths.
Immediate work
Host the FxLedmapper32x32 assets currently committed in the FastLED source tree:
video1.rgb — 6,051,840 bytes, 1,970 frames at 32x32 RGB888 (3,072 B/frame)
screenmap.json — 13,790 bytes, sha256 a6851e2a5eaf728b0018f1a32918969b2e90673ed2c18c1a3a5d7327cf5993d7, sourced from the ledmapper 32x32_quad_serpentine preset
Note: a third file, ledmapper-32x32-video1-asset.zip (4.1 MB), is a bundle of the two above plus a readme. It is pure duplication and should not be hosted — the manifest makes a hand-rolled bundle unnecessary.
Considerations
- Repo size. Already 235 MB. Binary assets never delete from git history. Consider Git LFS, or a release-artifact model, before this grows further. Worth deciding now rather than at 1 GB.
- Immutability. Assets referenced by digest must never be rewritten in place; publish new versions under new paths so pinned builds stay reproducible.
Related
Summary
Turn this repo from an ad-hoc media dump into a structured, manifest-described, CDN-served asset store that FastLED builds and the FastLED website can both consume.
Current state
maincontains 15 objects — a 9-byteREADME.mdand a flatdocs/folder of demo videos and images (~235 MB, largest single filedocs/fastled_3_10_animartrix.mp4at 96 MB). There is:docs/raw.githubusercontent.comdirectlyProposed
1. Directory convention
2. Adopt zackees/manifest.json
Use zackees/manifest.json rather than a bespoke format. Its
Index → Catalog → Releasetiers and OCI-style{url, sha256, size_bytes}descriptors give integrity-chained federation across repos and CDNs — exactly what a CDN-fronted asset store needs. Every asset entry carries a sha256, so consumers verify content rather than trusting transport.Note the platform tuple is a poor fit for media assets (a
.rgbvideo has no os/arch). Either use a wildcard/anyplatform, or raise a spec question upstream about a media/data asset class. This is the main open design question and should be settled before bulk-populating the manifest.3. CDN
raw.githubusercontent.comis not a CDN and is rate-limited. Front the repo with jsDelivr (https://cdn.jsdelivr.net/gh/FastLED/assets@<ref>/<path>), which needs no infrastructure and supports tag/commit pinning. Manifesturlsis an array, so the raw GitHub URL can stay as a documented fallback.4. Website surfacing
With a manifest in place, the FastLED site can enumerate and render available assets from one JSON fetch instead of hardcoding paths.
Immediate work
Host the FxLedmapper32x32 assets currently committed in the FastLED source tree:
video1.rgb— 6,051,840 bytes, 1,970 frames at 32x32 RGB888 (3,072 B/frame)screenmap.json— 13,790 bytes, sha256a6851e2a5eaf728b0018f1a32918969b2e90673ed2c18c1a3a5d7327cf5993d7, sourced from the ledmapper32x32_quad_serpentinepresetNote: a third file,
ledmapper-32x32-video1-asset.zip(4.1 MB), is a bundle of the two above plus a readme. It is pure duplication and should not be hosted — the manifest makes a hand-rolled bundle unnecessary.Considerations
Related