Skip to main content

Link's-Awakening-flavoured theme for the bragi CMS, used by zelda.eelcowesemann.nl

Project description

bragi-theme-zelda

A Link's-Awakening-flavoured theme for the bragi CMS, deployed at zelda.eelcowesemann.nl.

This is a site-specific theme. The visual choices are opinionated for one Zelda fan site (primarily Link's Awakening walkthroughs with secondary Ocarina of Time coverage) and are not intended as a general-purpose Zelda theme.

Theme highlights

  • Game Boy LCD palette: 4-shade GB green light mode, 4-shade GB Pocket greyscale dark mode. Two real handheld LCDs under one roof; prefers-color-scheme determines which.
  • Pixel headings over readable body: Press Start 2P for short strings (headings, labels, UI chrome), Inter for body text, JetBrains Mono for code.
  • MAP-styled sidebar tree: Current section's siblings and children visible at a glance, styled as a pause-menu MAP panel. Walkthrough hierarchy (game, dungeon, room) navigable without hunting through a top-level nav.
  • OoT section chrome flip: Royal-blue + gold accent shift in the Ocarina of Time section via data-section="oot". Body stays GB-green for cohesion; chrome (top bar, image frames, links) signals the switch.
  • GB Pocket greyscale dark mode: A real GB Pocket palette (light grey on near-black), not a colour inversion. Different hardware era, coherent aesthetic family.
  • Seven cosplay motifs: text-box callouts (Owl / Marin / Tarin / Ulrira portraits), rupee counter, PUSH START splash, item-acquired flourish between sections, pause-menu inventory homepage, ZZZZZ 404, heart-container <hr>, inventory-row pinned posts.
  • prefers-reduced-motion respected: Any animation that moves (ZZZZZ float, item- acquired scroll, PUSH START blink) switches to a static render.

Status: v0.1.6

v0.1.6 is a PATCH bundle of pause-menu visual polish: drop the inner .pause-menu__sprite border (it duplicated the tile-frame border and read as a nested double-wall), bump .pause-menu__label font-size to 10px exact for crisp Press Start 2P rendering, and swap the - PAUSE - title decoration to JRPG-style chevrons (<< PAUSE >>). Placeholder sprites (LA PEA / KOKIRI / OWL ST) are unchanged; sprite finalisation remains the bigger deferred surface.

v0.1.5 is a PATCH bundle: bragi base bumped from v1.27.3 to v1.27.6 (carries bragi's __GHOST_URL__ placeholder substitution fix for Ghost-imported content, and the PyPI propagation gating fix in the release pipeline), and a bragi-released repository_dispatch receiver workflow that opens the bragi base-bump PR within seconds of a bragi release. Dependabot stays in place as the 24h backstop.

v0.1.4 is a PATCH bundle: pause-menu hookwrapper (deterministic win at /), darkened --accent-link for WCAG AA body-link contrast, breadcrumb simplification (drop site-title prefix, suppress single-item trails), and Dependabot watching Dockerfile FROM lines. No bragi base bump.

v0.1.3 adds pre-built container images ghcr.io/sgaduuw/bragi-admin-zelda and ghcr.io/sgaduuw/bragi-delivery-zelda. Each image is the corresponding bragi base (pinned to v1.27.3) with the theme wheel preinstalled. Operators can now pull a single image instead of writing a downstream Dockerfile to layer the theme on top of the bragi base.

v0.1.2 switched the dev dep from bragi @ git+https://...@v1.26.0 to bragi-cms ^1.27 from PyPI. No runtime behaviour change for sites running with theme='zelda'.

v0.1.1 is the first PyPI-published release. Character portraits, item tiles, the heart-container, and the 404 scene art are still placeholder PNGs (Pillow-generated text-on-coloured-square). The CSS / JS / templates reference the correct sprite filenames, so a future release swaps in real art via per-file PNG replacement with no code changes.

Asset provenance

Fonts and sprites are documented row-by-row in ASSETS.md. No ROM-ripped Nintendo assets; see ASSETS.md for the full sourcing and licence detail.

Installing

Recommended: pre-built variant images (v0.1.3+)

From v0.1.3, pre-built images are published on every GitHub Release. Pull the variant directly instead of writing a downstream Dockerfile:

# Delivery container — bragi-delivery + bragi-theme-zelda preinstalled.
FROM ghcr.io/sgaduuw/bragi-delivery-zelda:v0.1.6
# That's it. No further pip install step needed.
# Admin container — bragi-admin + bragi-theme-zelda preinstalled.
FROM ghcr.io/sgaduuw/bragi-admin-zelda:v0.1.6
# That's it. No further pip install step needed.

Both containers need the package so template lookups work from the admin preview path and from the public delivery path. Restart both after installation to pick up the plugin.

Fallback: downstream Dockerfile from PyPI

Use this form when you need a different bragi base version than the one pinned in the variant image (see CONTEXT.md "Container deploy" for the BRAGI_VERSION bump policy), or for development against an unreleased commit.

Delivery container

FROM ghcr.io/sgaduuw/bragi-delivery:v1.27.6

# Install from PyPI (pin to a specific version).
RUN pip install --no-cache-dir bragi-theme-zelda==0.1.6

# For development against an unreleased commit, use the git+https form instead:
# RUN pip install --no-cache-dir \
#     "git+https://github.com/sgaduuw/bragi-theme-zelda.git@<sha-or-branch>"

Admin container

FROM ghcr.io/sgaduuw/bragi-admin:v1.27.6

# Install from PyPI (pin to a specific version).
RUN pip install --no-cache-dir bragi-theme-zelda==0.1.6

# For development against an unreleased commit, use the git+https form instead:
# RUN pip install --no-cache-dir \
#     "git+https://github.com/sgaduuw/bragi-theme-zelda.git@<sha-or-branch>"

Replace the version pin with the version to deploy. v0.1.1 is the first PyPI-published release; v0.1.0 is git-tag-only. v0.1.6 is the current release.

Development

Prerequisites

Install

poetry install

Run against a bragi dev checkout (editable install)

# From this project's directory, install into bragi's venv as an editable package:
cd ../bragi && poetry run pip install -e ../bragi-theme-zelda

# Then in bragi's working tree, point the Zelda site's theme to "zelda"
# via the admin UI or CLI, and reload the delivery process to pick up template changes.

Commands

# Run the test suite
poetry run pytest

# Lint
poetry run ruff check src/ tests/

# Format-check
poetry run ruff format --check src/ tests/

# Type-check
poetry run mypy src/

License

MIT. See LICENSE. Theme code and original assets are MIT-licensed. Third-party fonts are under their respective open-source licences; see ASSETS.md.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bragi_theme_zelda-0.1.6.tar.gz (144.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bragi_theme_zelda-0.1.6-py3-none-any.whl (147.6 kB view details)

Uploaded Python 3

File details

Details for the file bragi_theme_zelda-0.1.6.tar.gz.

File metadata

  • Download URL: bragi_theme_zelda-0.1.6.tar.gz
  • Upload date:
  • Size: 144.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bragi_theme_zelda-0.1.6.tar.gz
Algorithm Hash digest
SHA256 f2b7afc771b1e1ad1bd6f534160b29cabcdbc87e7d459e94041efa76a0acd3cf
MD5 e93d03294fabc4c3c371af72632a5739
BLAKE2b-256 e542ed00c0c7e57f1c0518d6ef0ac12233b248ab8b6af952a65ada9965cd3648

See more details on using hashes here.

Provenance

The following attestation bundles were made for bragi_theme_zelda-0.1.6.tar.gz:

Publisher: release.yml on sgaduuw/bragi-theme-zelda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bragi_theme_zelda-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for bragi_theme_zelda-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 4dbf2d080be94fe23cb9d0fb786c0d1be02b3b339d0fd5b421f8dd5deb88e320
MD5 90a763ff7878d4ec0efcf6cedd50619e
BLAKE2b-256 c8abe81aa96ad902fb1bd12e46707335ed4a2570b09454d1cd31655d3cda6ee5

See more details on using hashes here.

Provenance

The following attestation bundles were made for bragi_theme_zelda-0.1.6-py3-none-any.whl:

Publisher: release.yml on sgaduuw/bragi-theme-zelda

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page