Skip to content

Nightwatch Dossier: seasonal and holiday skins for the share card #9

Description

@StaticHumStudio

The ask

Seasonal and holiday skins for the Nightwatch Dossier.

Why this is worth more than it looks

The Dossier share card is the only mechanism in the entire marketing plan where
users do the distribution (gates.md H1). It is why the 30-day window and the
card were ungated on 2026-08-16: an acquisition asset locked behind the purchase
it exists to drive is a closed loop.

A card someone shares once is a card they share once. A card that looks
different in October and different again at year end is a card they share
several times. That is the entire argument.

Scope, and the thing to NOT do

Skin the SHARE CARD, not the app.

ThemeMode (domain/model/ThemeMode.kt) is a four-entry enum, NOIR and BRIGHT
free, AMOLED and CANDLELIGHT unlock. Do not extend that enum for seasons. It
would drag every seasonal variant into the entitlement clamp
(FreeTier.effectiveTheme), into the settings normalization pass, and into the
store listing's theme claims, for a feature that only ever needed to change one
rendered bitmap.

The surface is DossierShareSection, ui/dossier/NightwatchDossierScreen.kt:825,
which already renders to a Bitmap and hands it to the existing FileProvider
share path. A skin is a palette plus optional ornament applied at that render,
and nothing above it needs to know.

Feeds directly into #7

Issue #7 is about an unbounded history window so a year-end look-back works in
early January. A winter or year-end skin plus a real year retrospective IS the
Wrapped play, and the two land better together than either does alone. Worth
sequencing them as one push rather than two.

Traps

Do not hard-code a date cutoff. This project already deleted PAID_ERA_CUTOFF
on 2026-08-08 for exactly this failure: a guessed date compiled into a shipped
AAB that could not be corrected without a patch release. A seasonal skin that
auto-switches has the same shape. Either derive the season from the device clock
at render time with no baked constants, or let the user pick the skin and treat
season as a default suggestion. The second option is also more respectful of
people who do not celebrate what the calendar assumes they do.

Keep the Archive Beneath identity. Gold filament on void is the brand. A
holiday skin that goes full red-and-green stops being this app. Read
~/.claude/BRAND.md before drawing anything.

Free or unlock?

Recommend at least one seasonal skin FREE, with the rest as unlock. Gating every
skin recreates the closed loop the 08-16 decision already rejected, since a card
nobody can make is a card nobody shares. One free seasonal variant keeps the
distribution engine running and still leaves something to sell.

Post-2.1.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions