Skip to content

fix(scheduler): stop an all-day event with End = Start saving into the void - #351

Merged
maksimzinchuk merged 1 commit into
mainfrom
fix/VCST-5803-allday-end
Sep 2, 2026
Merged

fix(scheduler): stop an all-day event with End = Start saving into the void#351
maksimzinchuk merged 1 commit into
mainfrom
fix/VCST-5803-allday-end

Conversation

@maksimzinchuk

Copy link
Copy Markdown
Collaborator

Problem

Creating an all-day event with End equal to Start saved without complaint, but the event rendered nowhere and could not be reached by mouse or keyboard. No validation, no toast, no field message — the only sign that anything happened was the empty state disappearing.

All-day spans store an exclusive end (midnight of the day after the last day), and the editor bound that raw value straight to its End field. So "the same day as Start" is a zero-length range, which lays out to nothing.

Fix

Took the second of the two options in the ticket, the one QA preferred: the editor's End field is now the last day the event covers, matching what the chip and the quick-info popover already announce since VCST-5678, and it converts back to the exclusive form on save. End = Start is a one-day event.

That also lets the all-day exemption come out of the validity check:

-local.title.trim().length > 0 && (local.allDay || local.end > local.start)
+local.title.trim().length > 0 && local.end > local.start

With the field inclusive there is no empty range left to exempt — and an End before Start is now refused rather than accepted. The emitted payload is unchanged: end is still the exclusive boundary the layout works in.

The End field was the last surface still showing the raw exclusive value, which the VCST-5678 ticket had flagged.

Tests

Four cases: the field shows the covered day rather than the exclusive end; End = Start saves as a one-day event with the converted boundary; an End before Start does not save; and a timed event's end passes through untouched, since that convention never applied to it.

Reverting the fix fails the first three and leaves the timed one green.

Verification

vue-tsc clean · vitest run 4112 passed, exit 0 · lint:check, prettier, madge and docs:lint clean.

Committed with --no-verify: the pre-commit hook lints only the staged files, and that narrow invocation reports a false import/no-unresolved the full lint:check does not.

Closes VCST-5803

…e void

The editor bound the raw stored end to its End field. All-day spans store an
exclusive end — midnight of the day after the last day — so picking the same
day as Start produced a zero-length range. It saved without complaint, laid
out to nothing, and left an event that was invisible and unreachable, with no
validation message and no toast. The only sign was the empty state vanishing.

The field is now the last day the event covers, matching what the chip and
the quick-info popover already announce (VCST-5678), and converts back to the
exclusive form on save. End = Start is a one-day event, which is what it
looks like it should be.

That also removes the all-day exemption from the validity check: with the
field inclusive there is no empty range left to exempt, and an End before
Start is refused instead of accepted.
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

📦 Preview published for commit 8e074ad

Install the preview with dist-tag:

npm install @vc-shell/framework@pr-351

Or pin to the exact commit:

npm install @vc-shell/framework@2.5.0-pr351.8e074ad

Published packages (dist-tag pr-351, version 2.5.0-pr351.8e074ad):

  • @vc-shell/framework
  • @vc-shell/api-client-generator
  • @vc-shell/create-vc-app
  • @vc-shell/config-generator
  • @vc-shell/migrate
  • @vc-shell/ts-config
  • @vc-shell/mf-config
  • @vc-shell/mf-host
  • @vc-shell/mf-module
  • @vc-shell/vc-app-skill

@maksimzinchuk
maksimzinchuk merged commit 9cf874d into main Sep 2, 2026
16 of 18 checks passed
@maksimzinchuk
maksimzinchuk deleted the fix/VCST-5803-allday-end branch September 2, 2026 10:12
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.

1 participant