Commit Graph
75 Commits
Author SHA1 Message Date
archvillainetteandClaude Fable 5 3a814fdf13 Blurfill banner styles; keep news heroes full-width under 8:5 card crop
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 23:26:47 +02:00
archvillainetteandClaude Fable 5 8f4b6530a8 Article thumb header layout, 8:5 banner crops, wider card gutters
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 23:16:20 +02:00
archvillainetteandClaude Fable 5 0cd9d19c9e Styles for hearts, composer footer, card author/likes, news scroll
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 22:37:16 +02:00
archvillainette 1e2b386137 Fix wiki prose drifting right on pages without a ToC (#41)
## Problem

On wiki article pages **without a ToC drawer** (most feats, short articles), the body text renders pushed ~187px to the right with an empty left gutter — it reads as a broken indent, and the same drift shows in the compose editor. Reported as "Justify broke the editor and text indent".

## Root cause

`_wiki-prose.scss` caps every prose block at `--wiki-prose-measure: 54rem` and centers it with `margin-inline: auto`. That centering only looks right when the content column is ~58rem, which the theme only sets up while a ToC drawer is open (`grid-template-columns: minmax(0,58rem) minmax(0,1fr)`). ToC-less pages run the card full page width, so the 54rem paragraph centers inside it with big symmetric gutters, while the full-width callout and fact table make it look inset.

`text-align: justify` is the sibling rule in the same block (the visible "Justify" change) but is **not** the cause — justified paragraphs render with no indent once the width is capped.

The compose editor breaks the same way: its root is `class="westgate-wiki westgate-wiki-compose"`, so the identical `.westgate-wiki .wiki-article-prose` centering leaks into the editing surface.

## Fix

Two scoped rules in the existing `@media (min-width: 1200px)` block:
- cap the reading column on non-section article pages (`.wiki-with-fab:not(.wiki-with-fab--section) .wiki-content-layout`)
- cap the compose editing surface (`.westgate-wiki-compose .wiki-compose-editor.wiki-article-prose`)

Both `max-width: 58rem; margin-inline: auto`, so the card/editor hugs the text and everything shares one left edge — matching the design's "card hugs the text block" intent and the ToC-page geometry. Section / namespace-index listings opt out and keep running full-width, left.

## Verification

Reproduced and verified with Playwright against the real compiled CSS and the real editor bundle:
- read view: description `left:268` (`margin-left:187px`) in a 1272px card → aligned with the callout in a centered 896px card
- editor: description `left:268` (callout at 19) → tidy centered 58rem column

SCSS compiles clean (`dart-sass exit=0`). Editor fix verified via local repro with the real bundle (couldn't reach the authed live editor) — worth an eyeball after deploy.

🤖 Generated with [Claude Code](https://claude.com/claude-code)Reviewed-on: #41

Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-23 19:23:59 +00:00
archvillainette b392b07456 News page: newspaper layout styles (#40)
SCSS for the /news newspaper front page (companion to sow-nodebb-plugin-pages#8):

- Replaces the old news list+sidebar block with double-rule, featured-story grid, and thin-ruled row styles; keeps .sow-list-date (still used by home).
- Removes dead .sow-news-layout / .sow-list-item selectors and adds responsive rules (featured stacks headline → dateline → image → excerpt at ≤900px; rows stack image-first at ≤580px).

Verified in the sow-nodebb dev stack at desktop/900px/580px.

🤖 Generated with [Claude Code](https://claude.com/claude-code)Reviewed-on: #40
Reviewed-by: xtul <mpiasecki720@protonmail.com>
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-23 09:01:39 +00:00
archvillainette 1b93eca371 fix(wiki): stop justifying text in tables, quotes, and code (#39)
Justified alignment in `.wiki-article-prose` stretched bulleted `li`s inside table cells into ugly whitespace rivers (visible on spell/list tables). Now justify only applies to real reading prose (`p`, `li`), and alignment resets to `start` (hyphens off) inside `table`, `blockquote`, and `pre`.

Single-file SCSS change: `scss/westgate/_wiki-prose.scss`. NodeBB recompiles the theme SCSS on build/reload.Reviewed-on: #39

Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-22 18:18:30 +00:00
archvillainette 811622c481 fix(topbar): make topbar fully opaque (#38)
The `.wg-topbar` background used `rgba(24, 20, 29, 0.98)`, letting page content faintly bleed through the header. Set it to a solid `rgb(24, 20, 29)` so the bar is fully opaque.

Left `$wg-topbar-panel-bg` (dropdown/drawer panels, still `0.98`) untouched — those are popovers, not the bar itself.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #38
Reviewed-by: xtul <mpiasecki720@protonmail.com>
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-22 09:56:18 +00:00
archvillainette 5d37548da0 fix: keep gold btn-primary plate on topic Reply button (#35)
The `.topic-sidebar-tools .btn` flattening override also hit the Reply button (`btn-primary` in harmony's reply-button partial), turning it grey. Exclude `btn-primary` so Reply keeps the theme's gold plate.

Fixes #34

Reviewed-on: #35
Reviewed-by: gitea-bot <gitea-bot@noreply.git.westgate.pw>
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-19 08:55:17 +00:00
archvillainette 80e811e3b0 Theme fixes: wiki index shift (#30), Inter/Poppins fonts (sow-nodebb#13), unread badge (#33) (#32)
Closes #30. Addresses ShadowsOverWestgate/sow-nodebb#13 (theme-side). Partially addresses #33 (badge).

Three theme fixes, bundled into one branch since we squash-merge.

### #30 — index/section pages bump all text to the right
The namespace-index / section listing card carries the `wiki-article-prose` class, so the article-body **reading measure** leaked onto it: the wiki plugin caps prose children at `--wiki-prose-measure` (54rem) and the theme `margin-inline:auto`s them, pinning the *Articles* heading, lead, and page list into a narrow centered column with a big left gutter. Fix: opt `.wiki-namespace-index` descendants out of that measure/centering (full-width, left-aligned). **Verified** with a before/after render of the real section markup against the compiled CSS.

### Inter 404 (sow-nodebb#13), theme side
Harmony generates Inter/Poppins `@font-face` at our asset path and points its font variables at them, but we ship **Jost + Cinzel** and declare no `@fontsource/inter|poppins` dep, so those URLs 404 in production (they only resolve in dev via npm hoisting). Current theme source already renders everything in Jost (verified in compiled CSS), so the reported production 404 is a **stale build** — it clears once the nodebb image is rebuilt from current theme main. This PR makes it robust: pins the Harmony rules that read those vars (`.ff-sans`, `.ff-secondary`, breadcrumb divider) to our fonts, and removes the two dead staticDirs.

### #33 (part 1) — topbar unread badge didn't match its neighbours
The unread count was a static inline pill floating low/right of the inbox icon, unlike the corner-anchored badges on the notification and chat icons. Mirrored Harmony's notification markup (inner `position-relative` span + `top-0/start-100/translate-middle`) so the unread bubble tucks into the icon corner at the same size, shape, and height. **Verified**: unread and notification badges now sit identically (measured top/bottom match to the pixel).

The other half of #33 — the "dropdown doesn't work" report — is **not** included: I couldn't reproduce it on a current build (the custom unread drawer opens and lists topics on both `/categories` and `/wiki`), so it looks like the same stale-deploy story. Left open in #33 pending a repro on a fresh build before deciding whether to swap it for NodeBB's Notifications "Unread" view.

### Notes
- SCSS + templates + `plugin.json` only; no JS behavior change. `./nodebb build` compiles clean.
- Pre-existing impeccable design-drift findings in touched files are unrelated to this diff and left as-is.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #32
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-18 12:33:57 +00:00
archvillainette d794f4fb87 Justified reading measure with fitted article card (#29)
Wiki article text was capping at the plugin's default 70ch measure, leaving a wide dead strip inside the article card after the ToC-dock change.

- Set `--wiki-prose-measure: 54rem` (~90ch of body text; rem so the cap also applies to large headings — ch scales with font size and never caps them)
- Justify paragraphs, list items, and blockquotes with `hyphens: auto`
- Fit the article card to the measure (58rem) and widen the docked ToC column to absorb the leftover width
- Center the prose block with 1.5rem vertical padding

Verified on the theme-dev stack against /wiki/Lore/Gond (with long filler paragraphs) at 1561px, and the wiki hub for regressions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #29
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-17 17:37:58 +00:00
archvillainette 004be9b038 Topbar unread drawer (#28)
Adds an Unread dropdown to the topbar utilities (before notifications), per docs/superpowers/plans/2026-07-17-topbar-unread-drawer.md.

- New partial `templates/partials/header/unread-drawer.tpl`: toggle with live `component="unread/count"` badge (core socket updates), server-rendered empty/footer rows.
- `public/client.js`: on dropdown open, fetches `GET /api/unread` and injects up to 10 topic rows (titles/categories via textContent only); fetch failure falls back to the empty state.
- Mobile burger drawer gets an Unread row with the same badge.
- SCSS: unread dropdown joins the shared dropdown width rule; flex row styles for topic items.

Deviations from the plan's example code, found by live verification against the dev forum:
- Plan's `api.get('/unread')` hits the v3 write API and 404s → replaced with a fetch of the `/api/unread` read route.
- NodeBB 4 has no global `window.require`, so runtime translation of the static `[[unread:...]]` strings never ran → those strings are now server-rendered in the template (also removes the plan's translate-over-innerHTML step, which would have re-parsed untrusted titles as HTML).

Verified: full plain-node test suite passes; Playwright against the dev container passed all checks (badge count, item ordering before notifications, dropdown topic links + navigation, /unread footer link, mobile drawer badge at 390px).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #28
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-17 16:43:12 +00:00
archvillainette 60bcd589c0 Set wiki overlay scrim tokens to theme charcoal (#26)
Companion to sow-nodebb-plugin-wiki#22: the plugin now exposes `--wiki-scrim`/`--wiki-scrim-strong` for drawer and dialog backdrops. Override them from `--wg-bg-deep` so overlays match the plum/gold palette instead of the plugin's slate-blue defaults. Verified in the dev forum bundle.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #26
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-16 18:13:49 +00:00
archvillainette c3851107ab Theme post code blocks + a11y fixes (impeccable audit) (#25)
Code blocks in posts rendered with the markdown plugin's default light highlight.js theme — white blocks on the dark ledger. This adds dark velvet pre/code styling and a Westgate-toned syntax palette (gold keywords, ledger-ink titles, muted green strings) for post content and the composer preview.

Also picks up the quick wins from an impeccable audit:

- Visible focus ring on the mobile drawer search (input had `outline: 0` with no replacement)
- Input placeholder contrast raised to pass WCAG 4.5:1; tagsinput placeholder reuses the token instead of `$gray-500`
- `prefers-reduced-motion` block zeroing transitions/animations (there were none before)
- Fixed a stray `</li>` closing a `<div>` in `quick-search-results.tpl`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #25
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-16 14:44:39 +00:00
archvillainette 9ec0170e37 Style full-width article reader pages (#24)
## Summary

- add banner and article-reader styling for news and blog pages
- let article pages use the shared content rail without a private width cap
- give the article body a post-like ledger surface without ruling seams
- present Older/Newer navigation as large directional links at opposite page edges

## Verification

- all six `node tests/*.test.js` contract scripts
- NodeBB `make dev-build` asset compilation

Generated with Claude Code

Reviewed-on: #24
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-15 12:04:42 +00:00
archvillainette 499fbd0484 Flat purple panels, themed 404, global gold links (#23)
- Replaces the diagonal plum/velvet panel gradients with flat subtle purples (anchored to the group-card tone `rgb(24,20,29)`); the topbar uses the same flat tone so it meshes with the panels.
- Adds a Westgate-themed 404 page ("You've wandered off the map." / Night Masks warning) with a mask icon, vertically centered in the content area. Strings live in `languages/en-GB/westgate.json`.
- Sets Bootstrap link CSS variables globally so utility-classed links (`alert-link`, `link-*`) get the wiki gold like plain anchors already did. Topic-title parchment override is untouched.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #23
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-14 20:59:20 +00:00
archvillainette 5bbe22320e Home page styles in _pages.scss; retire widget home.html (#22)
Companion to sow-nodebb-plugin-pages PR #2. Adds the home blocks to _pages.scss (art hero, two-server status strip with unknown/online/offline dot states, pitch prose, four-up steps grid) and deletes the superseded paste-into-widget home.html + preview. Docs/comments updated to point at the plugin template. Merge together with the plugin PR.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #22
Reviewed-by: xtul <mpiasecki720@protonmail.com>
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-14 19:01:37 +00:00
archvillainette ec5a9ce903 Add sow-* page styles for /news /blog /gallery (#21)
The file-based pages plugin ships templates using sow-* classes that had no CSS anywhere (live never had them either — the classes render unstyled today). Adds scss/westgate/_pages.scss following DESIGN.md: velvet panels, gilt-edge borders, Cinzel etched headings, dark-gold-plate primary buttons, responsive grids.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #21
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-14 15:57:10 +00:00
archvillainette 882c086a6d impeccable (#18)
first pass with impeccable

Reviewed-on: #18
Reviewed-by: xtul <mpiasecki720@protonmail.com>
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-11 14:18:22 +00:00
archvillainette 355095d4ec Fix navbar button misalignments (#16)
The notifications, chat, and drafts buttons had their icons pinned to the left of the hover box while search was centered.

Root cause: Harmony's notifications/chats/drafts links (pulled in at runtime from core partials, not this repo) carry Bootstrap's justify-content-between utility class, which is !important and beat the theme's justify-content: center on .wg-topbar__utility-list .nav-link. The search link doesn't have that class, so it centered correctly.

Reviewed-on: #16
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-08 11:33:43 +00:00
archvillainette 96f83868b1 Wiki badge and /wiki links in global search results (#14)
Theme half of the cross-repo wiki global search work (plugin half: sow-nodebb-plugin-wiki#12).

Search results tagged by the wiki plugin (`isWikiArticle` + `wikiPath`) now render with a gold "Wiki" badge and link to `/wiki/...` instead of `/post/...`:

- `templates/partials/quick-search-results.tpl` — navbar quick-search dropdown
- `templates/partials/search-results.tpl` — `/search` page, topics view
- `templates/partials/posts_list_item.tpl` — `/search` page, posts view (default). Shared with account/group post lists, where the wiki flags are never set and the conditional no-ops.
- `scss/westgate/_search.scss` — badge styling from existing `--wg-gold` / ledger-border tokens; imported from `theme.scss`
- `languages/en-GB/westgate.json` — `[[westgate:wiki-badge]]` label
- Spec updated with the resolved approach (template override, not client-side decoration)

Untagged forum results render byte-identical to Harmony stock.

Verification: all three overrides compiled and rendered against benchpressjs with mixed wiki/forum fixture rows (wiki row gets `/wiki/...` href + exactly one badge; forum rows keep stock `/post/...` links, `RE:` prefix and main-post icon preserved). New contract test in `tests/wiki-search-badge-contract.test.js`; suite passes except the pre-existing `global-footer-contract.test.js` failure (stale `join-the-team` link assertion from #10, also failing on main — not touched here).

End-to-end visual check (badge in the live dropdown + /search) still needs the dev stack with plugin PR #12 merged.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: #14
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-07-03 07:10:47 +00:00
archvillainette a26386895f fix top bar bubbles (#9)
Reviewed-on: #9
2026-06-26 16:59:08 +00:00
archvillainette e2b10e6e13 Add Westgate global footer (#8)
## Summary
- add the global Westgate footer partial under `templates/partials/footer/`
- import scoped footer styles from `theme.scss`
- include the footer design spec and powered-by HTML/CSS references
- add a contract test for the footer integration and required links

## Verification
- `node tests/global-footer-contract.test.js`
- `node tests/global-topbar-contract.test.js`
- `for test in tests/*.test.js; do node "$test"; done`
- `npm test --if-present`
- `git diff --check`

Reviewed-on: #8
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-06-26 13:56:40 +00:00
archvillainette 1d1b2eba13 Refine global topbar integration (#7)
## Summary
- capture the post-review topbar refinements and implementation plan
- simplify the topbar brand to one SHADOWS OVER WESTGATE lockup
- remove the redundant desktop Forums dropdown and its custom panel handling
- give topbar dropdown and drawer surfaces an opaque local panel base

## Tests
- node --test tests/*.test.js

Reviewed-on: #7
Reviewed-by: xtul <mpiasecki720@protonmail.com>
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-06-26 09:43:50 +00:00
archvillainette 2d37f8a1f6 global topbar (#6)
adds a global topbar to the theme

Reviewed-on: #6
Reviewed-by: xtul <mpiasecki720@protonmail.com>
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-06-26 08:27:49 +00:00
archvillainette 4fcdc7351e fix: restore custom vote icons (#1)
fixes the broken upvote-downvote icons on nodebb

Reviewed-on: #1
Reviewed-by: xtul <mpiasecki720@protonmail.com>
Co-authored-by: vickydotbat <vickydotbat@tutamail.com>
Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
2026-06-19 07:35:26 +00:00
archvillainette 993afd3d6c Dropdown item fixes v2 2026-06-09 12:58:19 +02:00
archvillainette 5db89fffc8 Dropdown item fix 2026-06-09 12:40:36 +02:00
archvillainette 23adc6c244 Move non-static elements to website editor 2026-06-09 11:39:55 +02:00
archvillainette a19999b159 Remove references 2026-06-09 11:38:41 +02:00
archvillainette b2a2e33434 New icons 2026-06-07 09:53:02 +02:00
archvillainette cd8845cc6a Ticket icon 2026-06-07 09:34:06 +02:00
xtul 4ceadefabe fix headings fucking up the infobox 2026-05-21 23:44:38 +02:00
xtul 21502b1882 fixes to tables and infoboxes 2026-05-21 22:03:50 +02:00
xtul 30f1768406 fix breadcrumbs on edit page 2026-05-21 20:42:27 +02:00
xtul 9cd212876c mobile table rendering 2026-05-21 17:43:56 +02:00
xtul b78aee0a71 callout+infobox fixes 2026-05-19 16:14:04 +02:00
xtul 119e470767 breadcrumb improvements 2026-05-17 13:20:08 +02:00
xtul aa2a5ea10b table fixes 2026-05-15 14:29:48 +02:00
xtul ae15873837 exclude figure, img from heading margins 2026-05-14 22:33:48 +02:00
xtul e73e39bf67 headings react to elements above with a extra margin 2026-05-14 22:15:37 +02:00
xtul 0125fc4ad5 fix centered headings 2026-05-12 22:53:32 +02:00
xtul 89e8866bf2 header shading 2026-05-10 18:08:14 +02:00
xtul ac59a804b1 remove underline from h2 2026-05-10 15:56:07 +02:00
xtul 9c9a5316e3 a bit fatter headings 2026-05-10 12:07:43 +02:00
xtul 7111d25198 font fixes 2026-05-10 12:04:13 +02:00
xtul 3001b264c6 fix drawer z-index fighting 2026-05-09 13:45:16 +02:00
xtul f5eb0f5428 fix drawer layering 2026-05-09 13:38:48 +02:00
xtul 5615e4963f index styles 2026-05-09 12:47:01 +02:00
xtul c255124e72 invert heading colors 2026-05-09 11:04:04 +02:00
xtul dd7f0bf137 nicer headings for wiki 2026-05-09 02:39:43 +02:00