14 Commits
Author SHA1 Message Date
ancsemi 9055dfa077 Give the admin settings test harness the upload cap helper 2026-10-17 01:07:48 -04:00
ancsemi 42071757d9 Hide unpublished theme files from members in Plugins & Themes 2026-10-16 10:45:38 -04:00
ancsemi b299054e63 Turn the theme menu into a searchable gallery admins can publish from
Preview cards in sections (Community, the file's own @section, Seasonal, Haven). Members see built-ins and published themes; admins also get an Available to publish section with a publish switch on every theme file's card.
2026-10-16 10:32:33 -04:00
ancsemi 989169596d Send each theme's palette colours with the theme list for preview cards 2026-10-16 10:32:11 -04:00
ancsemi 72528655b5 Theme every select and its dropdown list from the active theme 2026-10-16 09:52:45 -04:00
ancsemi b215da5f0d Show the account's built-in theme over a stale file theme on load 2026-10-15 12:53:41 -04:00
ancsemi 64b2829a93 Save the account theme when a theme is turned on in Settings 2026-10-15 12:52:12 -04:00
ancsemi 70adbee04b Replace em dashes in test comments and names 2026-10-10 16:08:55 -04:00
ancsemi b9cfee5e5e Seasonal themes follow-ups (#5730): grouped by their header only, translated label, fresh cache busters 2026-10-05 17:21:51 -04:00
Amnibro 50a8ea1889 Themes: Glassy Neon and seasonal themes (Christmas, Halloween, Thanksgiving) (#5730)
* Themes: Glassy Neon and seasonal themes (Christmas, Halloween, Thanksgiving)

- Add themes/glassy-neon.theme.css: Tron-inspired cyberpunk glassmorphism with perspective neon floor grid, laser glow borders, and rotating identity disc.
- Add themes/christmas.theme.css: Festive evergreen pine with twinkling string lights, falling snow, candy-cane borders, and glowing Christmas tree (@section Seasonal).
- Add themes/halloween.theme.css: Eerie gothic midnight with drifting ghostly mist, flying witch moon, carved jack-o'-lantern, blinking black cat, and dripping toxic slime borders (@section Seasonal).
- Add themes/thanksgiving.theme.css: Warm autumn harvest with tumbling fall leaves, waddling turkey watermark, harvest garland, and striped borders (@section Seasonal).
- Parse optional @section and @category metadata tags in src/themeMetadata.js.
- Organize theme pickers and admin settings so seasonal themes appear in a dedicated 'Seasonal' group.
- Support prefers-reduced-motion in all four new themes.
- Document bundled additions in GUIDE.md.

* Themes: rebuild Glassy Neon and the seasonal themes as full scenes

Restyle every surface of the four themes (server rail, sidebars, header,
topic bar, message list, composer, buttons, inputs, scrollbars, modals,
theme popup and the login page) and give each a layered, animated scene
drawn with self-contained SVG data URIs.

- Glassy Neon: Haven on the Grid. Opaque holo-glass panels with lit cyan
  and orange edge rails, circuit traces, data streams running down the
  rails, light-cycle trails along the header and composer, a perspective
  light floor that races toward the viewer, horizon ridges, a scan sweep,
  counter-rotating identity disc rings and glitch hover accents.
- Christmas: a cozy cabin looking out on a moonlit pine forest. Plaid
  walls, a fireplace with stockings and flickering flames, a decorated tree
  with twinkling lights and presents, garland and string lights on the
  header, snow caps, frosted window corners and three parallax snow layers.
- Halloween: a cartoony haunted night. Bats crossing a big moon, graveyard
  fog, a floating ghost, flickering jack-o'-lanterns, a black cat with
  glowing eyes and a swishing tail, a bubbling cauldron, cobwebs, a
  dangling spider and green goo that drips from the header and composer.
- Thanksgiving: a harvest evening. Two parallax layers of falling leaves,
  swaying maple trees, a farmstead sunset, a leaf garland, flannel and
  barn-wood panels, hay bales, corn shocks, pumpkins, and two turkeys that
  wobble, gobble and strut.

Decorations use pointer-events: none and sit behind content in negative
z-index layers, the message column keeps a dark veil so message text stays
above WCAG AA, animations only change transform and opacity, and
prefers-reduced-motion stops every animation. Pseudo-element rules raise
their specificity so the effects overlay system does not strip them.

Move the seasonal-theme check into HavenThemeCompat.isSeasonalTheme so the
theme bar, plugin loader and admin list share one implementation, and test
it.
2026-10-05 17:16:44 -04:00
Reverb d38ccc7658 Normalise a bare theme filename to a file theme (#5692)
`default_theme` holds `file:<name>` for a theme that ships as a file. A bare filename is
the same intent — it is what someone writes by hand — but the client branches on that
prefix to tell a file theme from a built-in name, so a bare name is applied as an unknown
built-in: the page sets \`data-theme\` and loads no stylesheet, and nothing reports an
error.

Normalise when the name resolves to a published, compatible theme. A name that could only
be a theme file, and does not resolve to one, now yields \x27\x27 instead of reaching the client.
Built-in names are untouched.
2026-09-23 19:29:00 -04:00
Amnibro e87c36249f Braid and Compact file themes no longer stack on Matrix (#5628)
File themes that set the page background (Braid, Braid Light, Compact) are treated as full palettes: turning one on in Settings selects it in the picker instead of layering its colours on top of Matrix or another built-in theme. The theme popup gains a Layout section with Braid and Compact switches so the chrome can be changed without touching the picker colours. Picking a built-in theme now saves first and then reapplies only the real CSS tweaks, so the Settings toggles and the picker agree.
2026-09-10 22:56:05 -04:00
Bernardo Costa 14116a4540 Add the Compact Layout plugin and shared layout ownership for structural plugins (#5552)
* Add reversible Compact Layout plugin

* Keep structural layouts stable through Mod Mode
2026-09-02 23:30:35 -04:00
Bernardo Costa c68674f789 Add theme compatibility and recovery safeguards (#5545) 2026-09-01 00:59:54 -04:00