Verfahrensablauf perspective: replace 'Beide' with 'Undefined' (legally impossible to be on both sides) #120
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
m's report (2026-05-26 09:24)
Scope
The Verfahrensablauf side selector currently offers
Klägerseite / Beklagtenseite / Beide. "Beide" is legally impossible (no party is on both sides). The right semantic is "perspective not yet chosen" — replace with "Undefined" / "Nicht festgelegt".Fix:
Beide→Nicht festgelegt(DE) /Undefined(EN). Keep the underlying state value (probably'both'ornull) for backward compat OR migrate tonull/'undefined'if cleaner.our_sideand user hasn't picked =Undefined. This is also the value icarus #111 falls back to when no project autofill is available.Files most likely touched
frontend/src/client/verfahrensablauf.ts— chip label + state valuefrontend/src/client/views/verfahrensablauf-core.ts— projection behavior when side=undefinedfrontend/src/client/views/verfahrensablauf-core.test.tsfrontend/src/client/i18n.ts— replaceside.bothwithside.undefined; keep DE/EN translationsfrontend/src/i18n-keys.tsHard rules
?side=both, treat asundefined(same column behavior).go build ./... && go test ./internal/... && cd frontend && bun run buildclean.mai/<worker>/perspective-beide-to-undefined.Out of scope
Reporting
mai report completedwith branch + SHAs + UX path: open Verfahrensablauf with no project context → chip cluster shows Klägerseite / Beklagtenseite / Nicht festgelegt → pick Nicht festgelegt → both columns render all rules (same behavior as old 'Beide') → hint chip prompts to pick a side.Shipped on
mai/hermes/gitster-verfahrensablauf@0e1f62e.Changes
Beide→ Nicht festgelegt (DE) / Undefined (EN). The underlying radio value stays""so the side state remains the existingnull(no migration needed).currentSide === null; auto-hides as soon as the user picks Klägerseite or Beklagtenseite.bucketDeadlinesIntoColumnsalready routesside: nullas the claimant-on-the-left fallback withparty='both'rules rendered in both columns — that's exactly the oldBeidebehaviour.?side=bothwas already silently treated asnullbyreadSideFromURL()(it only acceptsclaimant|defendant). No legacy URLs break; the column layout stays identical for them.projects.field.our_side.bothis a different concept (a project participating on both sides as a multi-party stakeholder) and stays untouched.Files
frontend/src/verfahrensablauf.tsx— chip label flip + new<span id="side-hint">inside#side-radio-cluster.frontend/src/client/verfahrensablauf.ts— newsyncSideHintVisibility(); wired intoinitPerspectiveControls, thename=sidechange handler, andshowSideRadioCluster(chip → radio override path).frontend/src/client/i18n.ts—deadlines.side.both→deadlines.side.undefinedin DE+EN; newdeadlines.side.hintin DE+EN.frontend/src/i18n-keys.ts— renamed in the union, kept alphabetical.frontend/src/styles/global.css—.side-radio-clusterbecomesinline-flexso the hint sits next to the toggle;.side-hintmuted+italic.UX path verified by code review
/tools/verfahrensablaufwith no project context.party='both'mirrored into both columns) — the existingbucketDeadlinesIntoColumnstest case"default (no opts) mirrors 'both' rules into ours AND opponent"still passes and covers this projection.Verification
bun test src/client/views/verfahrensablauf-core.test.ts— 17 pass / 0 fail (41 expect calls).bun run build— clean (i18n codegen: 2901 keys,i18n scan: data-i18n attributes clean).go build ./...— clean.go test ./internal/...— clean.Commit: https://mgit.msbls.de/m/paliad/commit/0e1f62e