Skip to content

Confirm before closing a meeting (#229) - #231

Merged
aleksejs1 merged 2 commits into
mainfrom
feat/confirm-archive-229
Oct 7, 2026
Merged

aleksejs1 merged 2 commits into
mainfrom
feat/confirm-archive-229

Conversation

@aleksejs1

Copy link
Copy Markdown
Owner

Closes #229.

Problem

An employee with a filled-in draft scrolled to the bottom of the page for Publish and pressed Archive instead. It closed the meeting for both sides at once, with no question and no way back, and the draft could no longer be published.

What changes

Frontend only: no endpoint, schema or encryption change.

  • Closing is two presses. The archive form's button and the "not closed" card's "Didn't happen" open an inline confirmation (anketa/ArchiveConfirm.svelte) and send nothing. Focus lands on Cancel; a double click or a held Enter only opens it.
  • Never over my own unpublished answers. With answers in an unpublished draft, the only way to close is "Publish and close": closeMeeting() publishes first and archives only if that worked.
  • Everything else is allowed, with a warning naming whose answers the closed meeting will lack — so a meeting the counterpart never published on can still be closed. The rule is archiveConfirmation() in anketa/archiveConfirmation.ts.
  • The archive button is secondary and reads "Close and schedule the next one" / "Close this 1:1". Publish is the only primary button on an unpublished side.
  • A cleared next-meeting date stops the close before anything is published.
  • A publish refused with 409 (already published elsewhere, or archived) says to copy the text and reload, instead of the bare "Already published.".

Ten new strings in all 6 locales (written by Claude, not native-speaker-reviewed); anketa.archive removed.

Not covered: the published side closing while the counterpart is still writing. That needs an undo — #230.

See docs/decisions/2026-10-07-confirm-before-archiving.md.

Verification

  • Unit tests for archiveConfirmation() (every combination) and hasAnswer(); 943 unit tests pass.
  • Typecheck, lint, knip, format, duplication and doc-link checks clean.
  • Full Playwright suite (68) against the e2e stack, with three new dual-actor tests: a draft is published before closing and the counterpart reads it; a tab that missed its own publish is told to reload and closes afterwards; the published side closes a meeting the counterpart never published on.
  • Four code-review rounds, the last one clean.
  • The two generation scripts (generate-demo-fixture.mjs, generate-doc-screenshots.mjs) were updated for the two-step close but not run.

🤖 Generated with Claude Code

aleksejs1 and others added 2 commits October 7, 2026 06:09
Closing (archiving) a meeting was one click on a primary button at the
bottom of the page, right where people look for Publish. Pressed by
mistake, it closed the meeting for both sides and left an unpublished
draft unpublishable.

The archive form's button and the "not closed" card's "Didn't happen"
now open an inline confirmation first. A side with unpublished answers
can only "Publish and close"; every other case, the counterpart never
having published included, is allowed with a warning. The archive
button is secondary and says what it does.

Frontend only. See docs/decisions/2026-10-07-confirm-before-archiving.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new high-severity advisory against source-map-js 1.0.0-1.2.1, a
transitive dev dependency, started failing CI's npm audit step.
Lockfile only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@aleksejs1
aleksejs1 merged commit 7af8ce6 into main Oct 7, 2026
6 checks passed
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.

Closing a meeting by accident: confirm before archiving, and never over my own unpublished answers

1 participant