Skip to content

Meeting list: banner for a meeting open longer than its period (#204) - #225

Merged
aleksejs1 merged 1 commit into
mainfrom
feat/long-open-banner-204
Oct 4, 2026
Merged

aleksejs1 merged 1 commit into
mainfrom
feat/long-open-banner-204

Conversation

@aleksejs1

Copy link
Copy Markdown
Owner

Closes #204. Part of #213. Frontend only: no backend, schema or crypto change.

What changes

  • List banner. AnketaList.svelte shows one line above the list for each meeting open longer than its period: "{name}: the 1:1 on {date} isn't closed yet." with a "Close and schedule the next one" link. The link goes to the meeting page's archive form through the follow-up email's existing #close fragment, so there is no new landing code.
  • Suggested next date. For such a meeting the archive form defaults to the nearest date on the pair's cadence that isn't in the past (the meeting date plus a whole number of periods).
  • Rule and date. Two pure functions in frontend/src/anketa/longOpen.ts: isOpenPastPeriod() and nextCadenceDate().
  • Locales. One new string, anketaList.longOpenText, in all 6. The link text reuses anketa.closeAndScheduleNext.
  • Docs. docs/user-flow.md, docs/history.md, CLAUDE.md.

Where this differs from the issue text

  • The cadence date is the archive form's default for a long-open meeting however the page was opened, not only from the banner. Every other meeting keeps today plus one period.
  • The banner text names the counterpart, since several meetings can be listed at once.
  • A meeting whose counterpart was deleted gets no banner, nor does a one-off or a legacy meeting without a period.
  • "Longer than its period" is strict: no banner exactly one period after the meeting date, one from the next day.

Known gap, not fixed

The banner can show for a meeting the viewer can't open because it is sealed under their previous keypair (after a password reset). The link then lands on the stale-key error page, the same as the ordinary row link. The list response has no field for this, so hiding the banner would need a backend change.

Verification

  • Unit tests for both functions (longOpen.test.ts); the full suite passes (851 tests).
  • A new e2e test in dual-actor-anketa.spec.ts, run against the e2e stack: banner, link, focus on the archive form, next date prefilled. The rest of the e2e suite was not re-run locally.
  • Typecheck, eslint, prettier, knip, duplication and doc-link checks are clean.
  • One independent code-review pass: no blocking findings, the gap above was its only note.

🤖 Generated with Claude Code

The list shows one line per such meeting, with a link to the meeting
page's archive form (the follow-up email's #close fragment). For such a
meeting the archive form suggests the nearest date on the pair's cadence
that isn't in the past, instead of today plus one period.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@aleksejs1
aleksejs1 merged commit 1b523d7 into main Oct 4, 2026
6 checks passed
@aleksejs1
aleksejs1 deleted the feat/long-open-banner-204 branch October 4, 2026 02:20
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.

Meeting list: banner for a meeting left open longer than its period

1 participant