Pixel-art decoration for the seasons and the celebrations of the year. The banner is placed inregion.main.before, inside the normal flow of the main column, so it cannot cover a topic, a form or a button. A small
sprite chip joins the footer, and an optional full-page layer adds drifting pixel sprites and twinkling dots behind the
page (never above it).
What it shows
| Scene | Window |
|---|---|
| Tết Nguyên Đán | 7 days before to 5 days after lunar New Year |
| Valentine's Day | 7–15 February |
| International Women's Day | 1–9 March |
| Reunification & Labour Day | 28 April – 2 May |
| Children's Day | 28 May – 2 June |
| Mid-Autumn Festival | 7 days before to 1 day after the 15th of the 8th lunar month |
| Vietnamese Women's Day | 15–21 October |
| Halloween | 24 October – 1 November |
| Vietnamese Teachers' Day | 15–21 November |
| Christmas | 20–27 December |
| New Year | 28 December – 3 January |
| Spring / Summer / Autumn / Winter | February–April / May–July / August–October / November–January |
The first active celebration wins, so Tết stays on screen when its window overlaps Valentine's Day. When no
celebration is active, the banner falls back to the season. Each scene has its own accent colour, greeting and five
pixel sprites; the banner shows the actual window dates, the time left (optional) and a status pill.
The lunar dates for Tết and Mid-Autumn live in tabre_seasons_lunar_dates() and cover 2025–2040. After that the plugin
falls back to the seasons; add more years to the table to extend the lunar scenes.
Dates are evaluated at local noon in Vietnam time (Asia/Ho_Chi_Minh); if the site sets site_tz to another
non-UTC zone, that zone is used instead. (UTC itself falls back to Vietnam time, otherwise the scene would change at
07:00 for Vietnamese readers.)
Settings
| Setting | Meaning |
|---|---|
| Enabled | Master switch, on by default. |
| Banner | Show the banner above the main column. |
| Footer chip | Show the small sprite + scene name in the footer. |
| Ambient effect | Off, a full-page layer of drifting sprites and twinkling dots behind the content (default), or two side rails that keep the visible sprites in the page gutters. It follows the same scenes and quiet paths as the banner, but ignores Pages so it runs across the public site. |
| Pages | Every content page (default), the home page and listing pages, or the home page only. Admin, account, settings, editor, review, notification and machine endpoints are always excluded. |
| Mode | Automatic by date, or a scene chosen by hand. A manual scene outside its window is shown with a Preview pill and its next dates. |
| Scene | The scene for manual mode (Automatic also works there). |
| Days left | Show “In 6 days” / “2 days left” beside the dates. |
| Custom message | Replaces the scene's greeting; leave empty for the default. |
Notes
- No JavaScript and no database. The CSS is bundled with the other plugins; the art is 30 small PNGs served from
plugins/tabre_seasons/assets/art/withimage-rendering: pixelated. - The ambient layer is a single fixed element appended before
</body>atz-index: -1withpointer-events: none
andaria-hidden="true". It paints behind the glass panels, so text and controls always sit above it. It carries
three kinds of element: soft colour glows (260–480px, always, on every screen size), small crisp sprites and
twinkling dots. Edge mode adds rails sized from the gap between the 1280px container and the viewport, so those
sprites stay in the page padding; the rails are hidden below 1360px, where there is no room for one, and the
glows keep the page decorated there. - Motion: the five sprites rise once on page load, then the ambient layer drifts (15–36s per pass) with twinkling
dots. Underprefers-reduced-motion: reducethe sprites and dots are dropped and the glows rest in place, so the
scene is still coloured without moving; in print the layer is removed. On phones the background layer drops to
six sprites, no dots and four glows. - The footer chip and the ambient layer are decorative and hidden from assistive technology; the banner announces the
scene and its status.
Art credit
Pixel sprites come from the purchased Free Icon Pack v3.1 (Basic) by gvesster,
used under its license (commercial use allowed; the icons are not claimed, resold or repackaged as an icon pack).
The pack itself is never served by the forum; only the 30 sprites referenced by this plugin are copied intoassets/art/.
Uninstall
Disable removes the banner, the footer chip and the ambient layer. Nothing is stored in the database.