mirror of
https://github.com/Crosstalk-Solutions/project-nomad.git
synced 2026-10-22 06:40:39 +08:00
* 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>
30 lines
1.2 KiB
Bash
30 lines
1.2 KiB
Bash
PORT=8080
|
|
HOST=localhost
|
|
LOG_LEVEL=info
|
|
# Optional: override the URL used to test internet connectivity.
|
|
# Defaults to https://1.1.1.1/cdn-cgi/trace with fallbacks to hosts the app
|
|
# already contacts. Leave unset to use the defaults.
|
|
# INTERNET_STATUS_TEST_URL=https://1.1.1.1/cdn-cgi/trace
|
|
APP_KEY=some_random_key
|
|
NODE_ENV=development
|
|
SESSION_DRIVER=cookie
|
|
DB_HOST=localhost
|
|
DB_PORT=3306
|
|
DB_USER=root
|
|
DB_DATABASE=nomad
|
|
DB_PASSWORD=password
|
|
DB_SSL=false
|
|
REDIS_HOST=localhost
|
|
REDIS_PORT=6379
|
|
# Optional: Redis logical database index (0-15). Defaults to 0 if unset.
|
|
# Set this when sharing a Redis instance across services to avoid key collisions.
|
|
# REDIS_DB=0
|
|
# Storage path for NOMAD content (ZIM files, maps, etc.)
|
|
# On Windows dev, use an absolute path like: C:/nomad-storage
|
|
# On Linux production, use: /opt/project-nomad/storage
|
|
NOMAD_STORAGE_PATH=/opt/project-nomad/storage
|
|
# Creator Packs (gated content downloads). Official release builds inject
|
|
# CREATOR_PACKS_APP_KEY at build time; leave unset for a build that can't install
|
|
# packs. CREATOR_PACKS_WORKER_BASE overrides the entitlement Worker origin.
|
|
# CREATOR_PACKS_APP_KEY=
|
|
# CREATOR_PACKS_WORKER_BASE=https://nomad-packs-worker.chris-556.workers.dev |