Commit graph

137 commits

Author SHA1 Message Date
824364d526 feat(admin): add member onboarding alert detectors 2026-04-08 11:08:09 +01:00
d3a961f765 feat(admin): add adminAlerts module shell with thresholds and signature helper 2026-04-08 11:06:02 +01:00
7544424484 feat(admin): add adminAlertDismissSchema 2026-04-08 11:04:27 +01:00
0c3bfc3030 feat(admin): add AdminAlertDismissal model 2026-04-08 11:00:31 +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
dae983734a Accessibility fixes. 2026-04-05 19:27:25 +01:00
6573e30d31 fix: wire showHidden param through suggestions API, remove dead code 2026-04-05 17:00:06 +01:00
dcb80e6006 feat: add connection API endpoints
Suggestions, create/confirm/hide/withdraw actions, my connections list,
and pending count for nav badge.
2026-04-05 16:48:10 +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
3faa1f8e85 feat: add community-connections API endpoint and update profile handler
New PATCH /api/members/me/community-connections endpoint following peer-support.patch.js pattern (requireAuth, validateBody, dot-notation $set, Slack user lookup when offerPeerSupport+slackHandle set, logActivity).

Profile endpoint updated with craftTags handling, craftTagsPrivacy and communityConnectionsPrivacy in privacy fields, and craftTags in response.
2026-04-05 16:19:49 +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
79d038c724 feat: add Tags API endpoints and validation schemas
- GET /api/tags — public, filterable by ?pool=craft|cooperative, active only, sorted by label
- POST /api/tags/suggest — auth-required, creates TagSuggestion doc
- Add tagSuggestionSchema and communityConnectionsUpdateSchema to schemas.js
- Extend memberProfileUpdateSchema with craftTags, craftTagsPrivacy, communityConnectionsPrivacy
2026-04-05 16:15:29 +01:00
1cb029a881 feat: add seed-tags and migrate-community-connections scripts
Idempotent seed for 16 craft + 20 cooperative tags by slug. Migration
maps existing offering/lookingFor tags to communityConnections.topics
and copies peerSupport fields without deleting originals.
2026-04-05 16:11:52 +01:00
4b6ff19d5f fix: add state enums to Connection matchingTags, index to TagSuggestion 2026-04-05 16:09:20 +01:00
8112e5ea47 feat: add Tag, TagSuggestion, Connection models and extend Member schema
Adds three new Mongoose models for the community connections feature. Extends
Member with craftTags, communityConnections block, privacy fields for both,
and a connectionRequests notification preference.
2026-04-05 16:06:03 +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
036af95e00 fix: replace member.save() in invite.post.js and remove stale NUXT_PUBLIC_HELCIM_TOKEN env check 2026-04-04 14:02:06 +01:00
d31b5b4dac fix: use private helcimApiToken for all server-side Helcim API calls 2026-04-04 13:37:34 +01:00
ccd1d0783a fix: use canonical member email for series registration when authenticated 2026-04-04 13:27:47 +01:00
44f3ee8c8c fix: check JWT auth before email lookup in series purchase 2026-04-04 13:26:01 +01:00
bc887ca1d4 fix: replace member.save() with findByIdAndUpdate in Slack invite helper 2026-04-04 13:24:22 +01:00
e592b962ec fix: replace member.save() with findByIdAndUpdate in login.post.js 2026-04-04 13:22:36 +01:00
a7b04bfd3c fix: remove explicit requireAuth import (Nitro auto-imports it) 2026-04-04 12:44:01 +01:00
ee438f5c60 chore: remove working copies and superseded verify.get.js 2026-04-04 12:41:33 +01:00
a32e4de2ac feat: wire welcome email for new member creation 2026-04-04 12:40:15 +01:00
8b7f124f15 refactor: use requireAuth in updates routes (optional-auth) 2026-04-04 12:39:09 +01:00
cbb519449a refactor: use requireAuth in updates routes (required-auth) 2026-04-04 12:36:25 +01:00
15fdf77be8 feat: add /api/health endpoint for uptime monitoring 2026-04-04 12:35:26 +01:00
1875f16d48 feat: validate all required env vars at startup 2026-04-04 12:34:49 +01:00
255518a6a8 fix: throw on missing OIDC_COOKIE_SECRET in production 2026-04-04 12:34:06 +01:00
3b7b75ab70 fix: validate ticket type matches entitlement in series purchase 2026-04-04 12:31:58 +01:00
3620dad03a fix: use requireAuth for member pricing to include revocation + status checks 2026-04-04 12:30:54 +01:00
cee67dc005 fix: use auth cookie for member pricing in series available endpoint 2026-04-04 12:28:55 +01:00
db04b270f4 fix: remove redundant connectDB in cancel-subscription 2026-04-04 12:27:34 +01:00
bbe94f0efb fix: replace member.save() with atomic update in cancel-subscription 2026-04-04 12:26:56 +01:00
d4d9629d83 fix: remove redundant connectDB in verify (requireAuth handles it) 2026-04-04 12:25:25 +01:00
79c712a9e9 fix: replace member.save() with atomic update in verify 2026-04-04 12:24:52 +01:00
707ff7b13a fix: remove redundant connectDB in logout (requireAuth handles it) 2026-04-04 12:24:24 +01:00
ab2532dee8 fix: replace member.save() with atomic update in logout 2026-04-04 12:23:01 +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
c785a23910 Redirect regular members to coming-soon page after magic link login
Instead of sending members directly to the wiki (where they hit
Outline's login page and have to click again), land them on the
coming-soon page which shows a welcome message and wiki link.
2026-03-19 13:02:12 +00:00
2705d171bd Add missing schemas, member model fields, and import endpoint
Adds memberInviteSchema and bulkMemberImportSchema needed by the invite
and CSV import endpoints. Adds inviteEmailSent/inviteEmailSentAt fields
to member model. Adds the bulk import API route.
2026-03-19 11:44:49 +00:00
772f57c2b2 Route login redirect by role: admins to /admin, everyone else to wiki 2026-03-19 10:48:35 +00:00
c0dcfac173 Redirect invite logins to wiki, regular logins to /members
Invite tokens now include a redirect claim so the verify endpoint
can distinguish them from regular login tokens. Only invite links
redirect to wiki.ghostguild.org; normal logins go to /members.
2026-03-19 10:48:00 +00:00