* feat(creator-packs): backend rail for gated creator content packs
Phase 1 of Creator Packs: the app-side download rail for per-creator
video ZIMs served from the private R2 bucket behind the entitlement
Worker. No UI yet (Phase 2).
- Thread optional requestHeaders through the download util + job so the
ZIM fetch can carry `Authorization: Bearer <APP_KEY>` on both the HEAD
probe and the GET stream (Worker streams the ZIM directly, gated).
- Add resourceMetadata.skip_embedding and gate the RAG/EmbedFileJob
branch on it so video ZIMs are never sent to the knowledge base.
- New creator_packs ManifestType + creatorPacksSpecSchema (display
metadata only, no url) + CollectionManifestService wiring and
getCreatorPacksWithStatus() status join.
- collections/creator-packs.json catalog with the two seed packs.
- CreatorPackService.installPack: ensure Kiwix (auto-install if absent),
resolve the stable Worker URL, dispatch the gated download with
skip_embedding. Typed result codes.
- CreatorPacksController + GET/POST /api/creator-packs routes.
- CREATOR_PACKS_APP_KEY / CREATOR_PACKS_WORKER_BASE env (release-injected
key; app degrades to a clear not_configured error when unset).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(creator-packs): Phase 2 UI — Content Explorer, settings page, wizard step
Adds the three user-facing surfaces for Creator Packs on top of the Phase 1
backend rail. All surfaces HIDE entirely on builds without the release-injected
key (configured=false) so a fork never shows a broken install button.
- Backend: CreatorPackService.isConfigured() + `configured` flag on the
GET /api/creator-packs response; /settings/creator-packs route + controller
action.
- api client + useCreatorPacks hook (shared cached source of configured/packs/
downloads for every surface) + CreatorPackCard (status badges, art fallback,
update pill) + CreatorPacksSection (install-on-click grid + confirm modal with
the license note), reused by the Content Explorer block and settings page.
- Content Explorer: Creator Packs section before Additional Content.
- Settings: new /settings/creator-packs manage page + conditional nav item.
- Easy Setup wizard: new Creator Packs step after Content. Replaces the fragile
hardcoded AI-skip math with a computed activeSteps list so the two optional
steps (Creator Packs + AI) navigate correctly in every on/off combination;
selection state, storage projection, review summary, and finish-install wired.
Browser-tested on NOMAD3 across all surfaces (configured + fork paths), incl.
live install→download→cancel and AI-on/off wizard renumbering.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(creator-packs): use branded pack banners on the cards
Replace the generic colored-block cards with the branded 1060x175 banners we
build into each pack ZIM, shown on both the settings page and the Easy Setup
wizard step (and the Content Explorer block, via the shared card).
- Bundle the seed-pack banners as local webp under admin/public/creator-packs/
so they render offline (no external image dependency, matching the existing
/rogue-support-banner.webp convention).
- CreatorPackCard is now banner-forward: the banner is the hero, with a compact
status/metadata footer (videos · size, Installed/Downloading/Selected/Install,
update pill). Falls back to a simple header if an image is ever missing.
- Prefer an optional catalog `banner_url` (future remote creators) over the
bundled-by-id path; add banner_url to the CreatorPack type + validator.
- Widen the card grids to 1–2 columns since banners are wide.
Browser-tested on NOMAD3: banners render on the settings page and wizard step;
selection/installed/downloading states and storage projection still correct.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(creator-packs): Phase 3 — uninstall, license, release key-injection
Completes the Creator Packs feature.
- Uninstall: CreatorPackService.uninstallPack reuses ZimService.delete (removes
the ZIM, drops it from the Kiwix library, clears the InstalledResource) behind
DELETE /api/creator-packs/:id. A trash control on installed cards appears only
on the settings "manage" surface (allowUninstall) — never on the Content
Explorer block or the wizard — with a danger confirm modal.
- License: draft "Project NOMAD Creator Pack License v1.0" at
collections/creator-pack-license.md (marked DRAFT — pending legal review;
personal-use, no-redistribution, official-channel-only, creators retain
copyright). The install modal links to it ("View license").
- Release key-injection: Dockerfile ARG/ENV CREATOR_PACKS_APP_KEY in the runtime
stage (empty default → source/CI builds ship unconfigured and hide the UI) +
build-primary-image.yml passes it from the CREATOR_PACKS_APP_KEY CI secret.
NOTE FOR JAKE: add that repo secret = the entitlement Worker's key.
- Update flow was already functional (installed-with-update cards → "Update
pack"); verified.
Browser-tested on NOMAD3: uninstall round-trip (file + DB row + kiwix library
cleaned, then reinstalled), settings-only uninstall control, install-modal
license link, and the "Update available" pill via a temporary catalog bump.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(downloads): clean up header merge logic
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: jakeaturner <jturner@cosmistack.com>
3.8 KiB
Project NOMAD Creator Pack License
Version 1.0 · License ID: nomad-creator-pack-1.0
DRAFT — pending legal review. This document is a starting point drafted for convenience, not legal advice, and has not been reviewed by an attorney. The terms below describe the intended arrangement; have counsel review and finalize before relying on it. Nothing here is a binding offer until finalized.
1. What this covers
This license governs Creator Pack content — the curated video collections (and their titles, descriptions, thumbnails, and packaging) distributed through Project NOMAD as "Creator Packs." It does not cover the Project NOMAD software itself, which is licensed separately under Apache License 2.0. Where the two ever appear to conflict, the Apache 2.0 license governs the software and this license governs the pack content.
2. Ownership
Each Creator retains all copyright and other rights in their own videos and associated materials. Distribution through Project NOMAD does not transfer ownership. "Creator" means the individual or organization whose content a pack contains (for example, Crosstalk Solutions or Project NOMAD).
3. Grant to Project NOMAD
Each Creator grants Project NOMAD (Crosstalk Solutions, LLC) a non-exclusive, revocable right to reproduce, package, host, and distribute their Creator Pack through the official Project NOMAD distribution channel only. This grant does not permit Project NOMAD to sublicense the content for redistribution outside that official channel.
4. License to end users
Subject to these terms, an end user who installs a Creator Pack on their own Project NOMAD server is granted a personal, non-commercial, non-transferable, non-exclusive license to store and view that pack's content offline on their own device(s) for their own use and that of their household or immediate organization.
5. Restrictions
Except as expressly permitted above, you may not:
- Redistribute or re-host any Creator Pack or its contents — including copying pack files to another server, mirror, CDN, bucket, torrent, or file share, or making them available for download by others.
- Bundle or ship Creator Pack content with any fork, derivative, or third-party distribution of Project NOMAD or any other product.
- Serve Creator Pack content from any distribution channel other than the official Project NOMAD channel, or circumvent the entitlement controls that gate access to it.
- Sell, rent, sublicense, or commercially exploit the content, or use it to train machine-learning models.
- Remove or alter creator branding, attribution, or license notices.
For clarity: the Apache 2.0 license on the Project NOMAD software permits forking the software, but it grants no rights to the Creator Pack content, which remains governed exclusively by this license. A fork may not distribute or serve Creator Packs.
6. Termination
This license terminates automatically if you breach it, and Project NOMAD or a Creator may revoke it at any time. On termination you must stop using and delete the affected Creator Pack content. Sections 2, 5, 7, and 8 survive termination.
7. No warranty
Creator Pack content is provided "as is," without warranty of any kind, express or implied, including merchantability, fitness for a particular purpose, and non-infringement.
8. Limitation of liability
To the maximum extent permitted by law, neither Project NOMAD, Crosstalk Solutions, LLC, nor any Creator is liable for any indirect, incidental, special, consequential, or punitive damages arising from the Creator Pack content or this license.
Questions about this license or Creator Pack participation: contact Project NOMAD via https://www.projectnomad.us. Governing law and venue to be specified on legal review.