Commit graph

425 commits

Author SHA1 Message Date
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
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
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
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
18b8106405 fix: use Map for abbreviations to handle mixed-case DevOps label 2026-04-05 16:13:23 +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
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
4aacb26c4b Add .worktrees/ to .gitignore 2026-04-05 15:57:36 +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
4daec9b624 fix: move CI workflow from GitHub Actions to Forgejo Actions 2026-04-04 17:03:54 +01:00
61c16d8bac fix: multi-stage Dockerfile and guard husky for Docker builds
Some checks are pending
Test / vitest (push) Waiting to run
Test / playwright (push) Blocked by required conditions
Test / visual (push) Blocked by required conditions
Multi-stage build produces a smaller production image with only .output.
Husky prepare script now tolerates missing .git (Docker, CI).
2026-04-04 16:44:55 +01:00
1e30ba23cd feat: add testing infrastructure — Vitest, Playwright, CI, git hooks
Some checks are pending
Test / vitest (push) Waiting to run
Test / playwright (push) Blocked by required conditions
Test / visual (push) Blocked by required conditions
Add comprehensive testing covering 420 unit/handler tests across 24 Vitest
files, 9 Playwright E2E specs, accessibility scans, and visual regression.
Includes GitHub Actions CI, Husky pre-push hook, and TESTING.md docs.
2026-04-04 16:07:21 +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
fdc925331d fix: consolidate Helcim token to HELCIM_API_TOKEN for both server and widget 2026-04-04 14:00:17 +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
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
e81000b5a6 feat: add .dockerignore and document BASE_URL in .env.example 2026-04-04 12:41:00 +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