Skip to content

feat(meeting-types): let owners write the note bookers already see - #172

Merged
asm0dey merged 22 commits into
mainfrom
feat/meeting-type-description-field
Sep 5, 2026
Merged

feat(meeting-types): let owners write the note bookers already see#172
asm0dey merged 22 commits into
mainfrom
feat/meeting-type-description-field

Conversation

@asm0dey

@asm0dey asm0dey commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Closes #128.

What was actually wrong

MeetingType.description has been in the schema since V1__core_schema.sql:15 and renders in two public places already — the booking page's left rail (book.html:40) and the public landing card (landing.html:21). But no form ever wrote it. The column was permanently NULL for every user, and both renders were unreachable branches.

So #128 isn't "add a note field" — it's "expose the note field that already exists".

flowchart LR
    CF["create form<br/><code>meetingTypes.html</code>"]:::new
    DF["detail Basics form<br/><code>meetingTypeDetail.html</code>"]:::new
    AEF["<code>AdminResource.applyEditableFields</code>"]:::new
    COL[("<b>meeting_type.description</b><br/>TEXT — since V1")]
    BP["booking page left rail<br/><code>book.html:40</code>"]
    LC["landing card<br/><code>landing.html:21</code>"]
    ED["<code>Booking.effectiveDescription</code>"]
    GC["Google Calendar event body"]
    ICS[".ics DESCRIPTION"]

    CF -->|"new"| AEF
    DF -->|"new"| AEF
    AEF -->|"new"| COL
    COL --> BP
    COL --> LC
    COL --> ED
    ED --> GC
    ED --> ICS

    classDef new stroke-width:3px,stroke-dasharray:0
Loading

Everything to the right of the column already shipped. Nothing on the left existed — no form wrote
the column, so it was NULL for every user and all four read paths were dead. This PR adds only
the left half.

Change

  • AdminResource.applyEditableFields takes a description and writes it (blank → null); create and edit already share that method, so both paths get it from one line.
  • @RestForm String description on createMeetingType and editMeetingType.
  • Textarea on the create form (meetingTypes.html) and the detail page's Basics section (meetingTypeDetail.html), maxlength="2000".
  • New i18n key adm_meetingTypes_label_description with de + he values.
  • No migration. The column is already there.

Placement: the note stays in the left rail where it already rendered, not in the booking-form column the reporter's screenshot pointed at. It sits under the type name and duration, above the fold, and stacks first on mobile. Easy to move if the reporter disagrees once they can actually see it.

Worth knowing

Booking.effectiveDescription(type) falls back to the type's description (BookingService.java:608), so this note also becomes the Google Calendar event body and the .ics DESCRIPTION for every booking of that type. That's arguably the right behaviour for "please don't worry if you're late", but it isn't note-on-the-page-only.

Tests

MeetingTypeDescriptionTest — 8 cases covering the round trip: admin form → column → public booking page and landing card, plus blank-clears-to-null and the edit path.

Full suite: 1044 tests, 0 failures, 0 errors, BUILD SUCCESS.

Folded-in dependency updates

This branch also carries the nine open Renovate PRs, merged in and validated together rather than
one at a time:

PR Update
#169 quarkus.platform.version → 3.39.2
#170 surefire-plugin.version → 3.6.0
#167 com.google.api-client:google-api-client → 2.9.1
#166 git-commit-id-maven-plugin → 10.0.1
#165 spotless-maven-plugin → 3.10.2
#171 oven/bun:1 digest
#164 bellsoft/hardened-liberica-runtime-container:jre-distroless-musl digest
#163 bellsoft/liberica-runtime-container:jdk-26-musl digest
#162 bellsoft/alpaquita-linux-base:stream-musl digest

#169 and #170 both edited adjacent lines in pom.xml's property block, so that one merge conflicted;
resolved by keeping both bumps. Full suite re-run on the merged result: 1044 tests, 0 failures,
spotless:check clean.

Also in here: a Sonar java:S9358 fix on both meeting-type slug sites — the ternary chose between
two Slugs.slugify(...) calls instead of between the two inputs.

🤖 Generated with Claude Code

renovate Bot and others added 10 commits August 27, 2026 06:49
MeetingType.description has existed since V1 and renders in two public
places -- the booking page's left rail and the public landing card -- but
no form ever wrote it, so the column was permanently null and the renders
were dead code. GH #128 asked for exactly that note.

Expose the existing field instead of adding a second one: a textarea on
the meeting-type create form and on the detail page's Basics section,
carried through applyEditableFields so create and edit share one code
path. Blank clears it back to null. No migration -- the column is there.

Note that Booking.effectiveDescription falls back to the type's
description, so the note also becomes the Google Calendar event body and
the .ics DESCRIPTION for bookings of that type.

Closes #128

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
asm0dey added a commit that referenced this pull request Sep 5, 2026
The Note textarea (PR #172) sits under Slug in the Basics section, so both
the create-form and detail-form shots were stale. Reshot from a live dev
instance seeded to match the originals (Intro call / intro-call, 30 min,
Google Meet, min notice 0, write calendar alex@example.com).

Also adds a booking-page shot to the Note section, which had no image.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
asm0dey and others added 11 commits September 5, 2026 12:16
Sonar java:S9358 on both meeting-type slug sites: the ternary picked
between two slugify calls rather than between the two inputs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…x-base-stream-musl' into feat/meeting-type-description-field
…me-container-jdk-26-musl' into feat/meeting-type-description-field
…ica-runtime-container-jre-distroless-musl' into feat/meeting-type-description-field
…potless-maven-plugin-3.x' into feat/meeting-type-description-field
…-git-commit-id-maven-plugin-10.x' into feat/meeting-type-description-field
…oogle-api-client-2.x' into feat/meeting-type-description-field
…' into feat/meeting-type-description-field

# Conflicts:
#	pom.xml
@sonarqubecloud

sonarqubecloud Bot commented Sep 5, 2026

Copy link
Copy Markdown

@asm0dey
asm0dey merged commit 3f1bb94 into main Sep 5, 2026
11 checks passed
@asm0dey
asm0dey deleted the feat/meeting-type-description-field branch September 5, 2026 10:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add notes to meeting types

1 participant