Compare commits

..

3 commits

Author SHA1 Message Date
c3695de5ca fix(ci): set BASE_URL so pre-registrant invite route doesn't 500
Some checks failed
Test / vitest (push) Successful in 11m20s
Test / playwright (push) Successful in 17m22s
Test / visual (push) Failing after 11m15s
Test / Notify on failure (push) Has been skipped
invite.post.js requires process.env.BASE_URL to build the invite link,
returning 500 when unset. The CI workflow stubbed Resend / Mongo / JWT
but missed BASE_URL, so the admin-pre-registrants invite spec timed
out waiting for the success toast. Set BASE_URL to the test server's
URL on both jobs.
2026-05-01 12:08:41 +01:00
b45f92a574 fix(board-channels): dev stub slackChannelId must match update schema
The ALLOW_DEV_TEST_ENDPOINTS short-circuit on create wrote
'dev-stub-<ms>' as the channel ID. boardChannelUpdateSchema requires
^[A-Z0-9]+$, so the very next edit on the same channel hit a 400 from
Zod and the table never updated. Use base36-uppercased timestamp with
a 'CDEV' prefix so the stub survives a round-trip through the patch
route. Live path is unchanged.
2026-05-01 12:08:35 +01:00
b7d9d91b1a fix(events): replace 50% opacity on cancelled rows with strikethrough
The .is-cancelled row used opacity:0.5, which dragged --text-faint
(#665c4b) on the cream background to a 2.1:1 ratio against #f4efe4 —
serious axe violation flagged in CI. Strikethrough on the title and
tagline conveys the cancelled state without crushing contrast; the
existing .cancelled-tag in --ember still flags the row.
2026-05-01 12:08:29 +01:00
3 changed files with 11 additions and 3 deletions

View file

@ -30,6 +30,7 @@ jobs:
NUXT_PUBLIC_COMING_SOON: 'false' NUXT_PUBLIC_COMING_SOON: 'false'
NODE_ENV: development NODE_ENV: development
ALLOW_DEV_TEST_ENDPOINTS: 'true' ALLOW_DEV_TEST_ENDPOINTS: 'true'
BASE_URL: http://localhost:3000
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
@ -100,6 +101,7 @@ jobs:
NUXT_PUBLIC_COMING_SOON: 'false' NUXT_PUBLIC_COMING_SOON: 'false'
NODE_ENV: development NODE_ENV: development
ALLOW_DEV_TEST_ENDPOINTS: 'true' ALLOW_DEV_TEST_ENDPOINTS: 'true'
BASE_URL: http://localhost:3000
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4

View file

@ -232,8 +232,12 @@ const isAlmostFull = (event) => {
.event-row:hover { .event-row:hover {
padding-left: 4px; padding-left: 4px;
} }
.event-row.is-cancelled { .event-row.is-cancelled .event-title a {
opacity: 0.5; text-decoration: line-through;
text-decoration-thickness: 1px;
}
.event-row.is-cancelled .event-tagline {
text-decoration: line-through;
} }
.event-date-col { .event-date-col {

View file

@ -25,7 +25,9 @@ export default defineEventHandler(async (event) => {
if (!slackChannelId) { if (!slackChannelId) {
if (process.env.ALLOW_DEV_TEST_ENDPOINTS === 'true') { if (process.env.ALLOW_DEV_TEST_ENDPOINTS === 'true') {
slackChannelId = `dev-stub-${Date.now()}` // Match the Slack channel ID format (^[A-Z0-9]+$) so the value
// round-trips through boardChannelUpdateSchema on subsequent edits.
slackChannelId = `CDEV${Date.now().toString(36).toUpperCase()}`
console.log('[slack] DEV MODE — skipping createChannel', { name: body.name, slackChannelId }) console.log('[slack] DEV MODE — skipping createChannel', { name: body.name, slackChannelId })
} else { } else {
const slack = getSlackAdminService() const slack = getSlackAdminService()