Commit graph

181 commits

Author SHA1 Message Date
b93c8c7b2f refactor(dashboard): migrate member/dashboard to PageShell + ColumnsLayout
- Replace outer .dashboard wrapper with <PageShell>
- Replace <SidebarLayout> with <ColumnsLayout cols=events-sidebar :limit=5>
- Replace bespoke <div class=welcome> with <PageHeader> containing slotted meta
- Drop .dashboard and .welcome scoped CSS (flex chain + bespoke header)
- Update visual snapshots (welcome header now uses canonical PageHeader padding)
2026-04-08 16:59:26 +01:00
eb2544a42d refactor(activity): migrate to PageShell + ColumnsLayout
Replace .activity-page wrapper + SidebarLayout with PageShell +
ColumnsLayout cols="events-sidebar". Delete the now-redundant
flex-chain CSS that PageShell owns. Adds .loading-state to the
visual mask list to handle the connections-mobile race between
the loading and loaded states.
2026-04-08 16:45:12 +01:00
89c9a5e4a2 refactor(members): migrate members/index to PageShell
Wrap members directory page in PageShell. Also expand visual mask
selectors to cover .filter-bar, .skills-bar, and .connections-section
because filter content varies based on dynamic tag/topic state and
async fetch ordering. Rebaselines several existing snapshots that now
mask wider regions but capture the same structural layout.
2026-04-08 16:38:34 +01:00
657bc23404 refactor(connections): migrate to PageShell
Replace outer div.connections-page wrapper and explicit PageHeader with
PageShell component. Update connections-mobile-auth snapshot to match
the stable full-suite render state (filter bar absent when test admin
has no cooperative topics configured).
2026-04-08 16:29:52 +01:00
127d2974c8 feat(layout): add PageShell, ColumnsLayout, PageSection primitives
Introduces three new layout primitives (no consumers yet). Adds
--page-pad-x/y/collapse CSS tokens to :root and .dark. Updates
PageHeader to read padding from tokens. Removes ignored size="large"
props from welcome and series pages. Fixes stray markdown in SidebarLayout.
2026-04-08 15:51:38 +01:00
92e7dae74c feat(admin): add restore dismissed alerts flow
Some checks failed
Test / vitest (push) Successful in 11m48s
Test / playwright (push) Failing after 9m50s
Test / visual (push) Failing after 9m19s
Test / Notify on failure (push) Successful in 2s
Admins can now surface dismissed alert types without waiting for the
underlying data to change. Adds a collapsible "Restore dismissed"
section below the active alerts with per-type checkboxes.

- ALERT_METADATA map in adminAlerts.js as the single source of truth
  for slug → title/severity; detectors refactored to reference it
- GET /api/admin/alerts/dismissed returns this admin's dismissals
  joined with metadata (title, severity, dismissedAt)
- POST /api/admin/alerts/restore deletes dismissals by alertType[],
  returns the deleted count
- AdminAlertsPanel fetches both active + dismissed; stays visible
  when either is non-empty; checkboxes + "Restore selected" button
- adminAlertRestoreSchema validates the POST body against the enum
- Auth guards test covers both new routes
2026-04-08 12:22:35 +01:00
a2af4e31ff fix(admin): drop ClientOnly wrapper around alerts panel
Top-level `await useFetch` inside a ClientOnly boundary prevented the
component from mounting at all — the slot stayed an empty span and no
alerts ever rendered. Nuxt forwards request cookies on same-origin
server calls, so `requireAdmin` is satisfied during SSR and the panel
can render normally.
2026-04-08 12:22:25 +01:00
653bf78973 feat(admin): show alerts panel on dashboard 2026-04-08 11:24:00 +01:00
ba74bfd929 feat(admin): add AdminAlertsPanel component 2026-04-08 11:22:56 +01:00
4271ed0c6f fix: add auth middleware to profile page and update visual snapshots
- Add `middleware: 'auth'` to member/profile.vue (was missing)
- Harden loginAsAdmin helper to wait for networkidle after redirect so
  auth-init plugin and admin middleware finish before tests navigate
- Regenerate visual baselines to reflect updated profile page UI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 15:00:23 +01:00
fb25e72215 Huge bunch of UI/UX improvements and tweaks!
Some checks failed
Test / vitest (push) Successful in 10m36s
Test / playwright (push) Failing after 9m23s
Test / visual (push) Failing after 9m13s
Test / Notify on failure (push) Successful in 2s
2026-04-06 16:17:12 +01:00
501be10bfe feat: pre-registrant management and invitation system
Admin interface to review, filter, and batch-invite the 95 pre-registrants
from Baby Ghosts. Accept-invitation page pre-fills their data and collects
circle, pronouns, motivation, contribution tier, and agreement before
creating their member record.
2026-04-06 14:46:11 +01:00
bab53cec9e merge: worktree-a11y-fixes into main
Some checks failed
Test / vitest (push) Successful in 12m45s
Test / playwright (push) Failing after 10m5s
Test / visual (push) Failing after 9m16s
Accessibility fixes (aria-labels, color contrast, html lang, inline link
underlines), atomic dev login endpoints, and E2E test hardening.
2026-04-05 22:05:00 +01:00
c40f2c7c63 fix: accessibility improvements and test infrastructure hardening
Add aria-labels to form controls (selects, checkboxes, switches), set
html lang attribute and page title, fix color contrast for --candle-dim
and --text-faint tokens, underline inline links, remove opacity hack.
Harden dev login endpoints with atomic findOneAndUpdate and tokenVersion
in JWT. Update Playwright timeouts and E2E test helpers.
2026-04-05 21:59:02 +01:00
689548e389 Merge feature/community-connections into main
Adds Community Connections system: predefined tags with engagement states,
suggested connections page, and member discovery based on shared interests.
2026-04-05 17:05:58 +01:00
6573e30d31 fix: wire showHidden param through suggestions API, remove dead code 2026-04-05 17:00:06 +01:00
ed33cbb9e7 feat: add connections page, composable, nav badge, and peer-support redirect
- useConnections composable wrapping all /api/connections endpoints
- Connections page with suggestions, filters, and connection management
- Pending connection count badge in sidebar navigation
- peer-support.vue now redirects to /connections
2026-04-05 16:56:40 +01:00
d69d21abd6 fix: restore external Wiki URL in exploreItems navigation 2026-04-05 16:43:41 +01:00
896de2e7fd feat: add craft tags and community connections to directory and profiles
Update member directory and public profile APIs to include craftTags
and communityConnections with privacy-aware filtering. Directory now
uses predefined tags from the Tag model for filter bars and supports
craftTag/connectionTag query filters. Frontend shows craft tag pills
and cooperative topics with state labels, falling back to old
offering/lookingFor fields. Add Connections nav item.
2026-04-05 16:40:10 +01:00
bd07172093 fix: add connectionRequests to notification schema, remove dead notifyPeerRequests 2026-04-05 16:31:49 +01:00
2aa29ba64b feat: restructure profile page for community connections
Replace Skills Exchange section with CraftTagSelector in About You.
Replace Peer Support section with Community Connections using
CooperativeTagSelector. Update form data, load/save logic, and
notifications to use new field names with backward-compatible
fallbacks to old peerSupport data.
2026-04-05 16:28:34 +01:00
3551f19772 fix: correct POST body field name and state enum values in tag components 2026-04-05 16:25:10 +01:00
2c8529aed9 Add CraftTagSelector, CooperativeTagSelector, and TagSuggestModal components
Pill-toggle grid for craft tags, 3-state segmented control for cooperative
tags (matching PrivacyToggle visual pattern), and a minimal modal for
submitting tag suggestions via /api/tags/suggest.
2026-04-05 16:23:22 +01:00
06ee77592f feat: add community connections activity log types
Adds COMMUNITY_CONNECTIONS_UPDATED, CONNECTION_REQUESTED, CONNECTION_CONFIRMED,
and TAG_SUGGESTED to ACTIVITY_TYPES, ACTIVITY_TYPE_DEFAULTS, the Mongoose enum,
and activityText formatters. All four default to member visibility.
2026-04-05 16:17:25 +01:00
88c94aaaf4 Accessibility fixes.
Some checks are pending
Test / vitest (push) Waiting to run
Test / playwright (push) Blocked by required conditions
Test / visual (push) Blocked by required conditions
2026-04-05 16:03:10 +01:00
0ae18f495e Tests, UX improvements. 2026-04-05 14:25:29 +01:00
4e6f5d36b8 UX/UI improvements. 2026-04-05 13:26:51 +01:00
418d3cc402 UI/UX tweaks and improvements. 2026-04-05 12:28:41 +01:00
d31b5b4dac fix: use private helcimApiToken for all server-side Helcim API calls 2026-04-04 13:37:34 +01:00
c64933418b feat: add skip-to-content links and aria-labels for accessibility 2026-04-04 12:42:07 +01:00
ee438f5c60 chore: remove working copies and superseded verify.get.js 2026-04-04 12:41:33 +01:00
fcd6f4cdf4 feat: reskin admin pages to zine design system
Migrate the entire admin section from the dark guild-* Tailwind theme
to the zine design system (dashed borders, CSS custom properties,
Brygada 1918 + Commit Mono, cream/dark mode palette).

- Replace admin top-nav layout with sidebar matching default layout
- Reskin dashboard, members, events, series management pages
- Reskin events/create and series/create form pages
- Add dev-only test login endpoint (GET /api/dev/test-login)
- Redirect duplicate admin/dashboard.vue to /admin
- Update CLAUDE.md design system docs
2026-04-03 10:56:01 +01:00
f16f9ada64 fix: resolve sidebar nav hydration mismatch and admin events 500 error
Wrap auth-dependent sidebar navigation and meta in ClientOnly with
SSR fallback slots to prevent hydration mismatch that caused all
authenticated nav links to point to wrong pages. Fix admin events
page crash by replacing empty string USelect values with 'all'.
2026-04-03 09:24:29 +01:00
27d8f678ad feat: cleanup deprecated components and background texture 2026-04-02 21:38:50 +01:00
2c5986a32e feat: reskin modals to zine direction 2026-04-02 21:37:31 +01:00
1ac21d6a98 feat: reskin member pages to zine direction 2026-04-02 21:35:32 +01:00
88caca94c7 feat: reskin public pages to zine direction 2026-04-02 21:29:52 +01:00
8b3daadadd feat: add zine-direction shared components 2026-04-02 21:16:00 +01:00
dbb3fbbc1b feat: replace layout with fixed left sidebar and top strip 2026-04-02 21:11:47 +01:00
238d68d063 feat: replace design system tokens with zine direction palette and typography 2026-04-02 21:04:25 +01:00
df2e7e3356 Fix Go to Wiki and Sign out appearing side by side
Make both elements block w-full so they always stack vertically.
2026-03-19 18:13:33 +00:00
7cf6ce1833 Polish coming-soon and login modal styling
Move sign out below wiki button, tweak hover color, remove email
field label, rename 'Join Ghost Guild' to 'Pre-Register', and
remove 'Don't have an account?' text from login modal.
2026-03-19 18:07:20 +00:00
28795146de Slight fix 2026-03-19 16:39:30 +00:00
640e633380 Style tweaks 2026-03-19 16:36:31 +00:00
eda8ac6449 Refine coming-soon page for logged-in members
Hide 'Coming Soon' text when authenticated, change greeting to
'Welcome, Name' with inline underlined sign-out link, and force
Inter (font-sans) on all text.
2026-03-19 16:24:42 +00:00
78c592c13a Fix duplicate /api/auth/member call and add request deduplication
Remove redundant checkMemberStatus() from coming-soon page since the
auth-init plugin already handles it. Add in-flight request deduplication
to prevent concurrent calls from any source. Strip debug console.logs.
2026-03-19 15:04:04 +00:00
52bb17e25d Comment out Quietism font-face declarations to fix slow page loads
The .woff2 files are missing from public/fonts/, causing failed requests
that 302 redirect and stall page load (16+ seconds). Swap display font
to Georgia as a fallback until Quietism files are available.
2026-03-19 13:43:18 +00:00
5b4ca1b41d Replace native checkboxes with UCheckbox on admin members page
Native <input type="checkbox"> elements were invisible in production
because @tailwindcss/forms is not installed. UCheckbox renders properly
with the Nuxt UI theme.
2026-03-19 11:10:31 +00:00
1024a80731 Add login form to coming-soon page and allow admin routes through
Coming-soon page now shows a magic link login form for unauthenticated
visitors and a wiki link + sign out for logged-in members. The
coming-soon middleware allows /admin routes through (still protected by
admin middleware). A /login redirect page ensures invite email links work.
2026-03-19 11:01:03 +00:00
ea6c4d8329 Lock down coming-soon mode to block all users including authenticated
Remove auth bypass from coming-soon middleware so no one can access
the in-development site in production. Remove unused login button
from coming-soon page since wiki has its own OIDC login flow.
2026-03-19 10:27:19 +00:00