Skip to content

feat(publishers): track inactive publisher status#208

Merged
mindsers merged 5 commits into
mainfrom
feat/inactif-support
Jun 7, 2026
Merged

feat(publishers): track inactive publisher status#208
mindsers merged 5 commits into
mainfrom
feat/inactif-support

Conversation

@mindsers

@mindsers mindsers commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Persist Member.inactiveAt so publishers who report no preaching for 6 consecutive monthly reports are flagged. The evaluator auto-sets on activity writes and silently clears when an hours report arrives; elders can also toggle manually from the publisher view/edit pages.
  • Hide inactive publishers from the public-facing display board (groups roster + pioneers document) and exclude them from publisher stats, while keeping them fully visible to admins/elders everywhere else (activity list, group admin, attribution pickers, notifications).
  • Round-trip the new field through both the congregation NDJSON backup and the GDPR per-user export so the status survives migrations.

Test plan

  • pnpm test:unit — 1162 tests passing (incl. 9 evaluator units, 3 setMemberInactive, 3 setMemberActive, 1 stats filter guard).
  • pnpm test:integration — 182 tests passing (incl. new display-board filter + activity→evaluator end-to-end + extended data-transfer round-trip asserting inactiveAt survives export+import).
  • pnpm test:lint and pnpm test:typecheck — clean.
  • Manual: file 6 consecutive 0-hour activity reports → confirm the publisher disappears from the live groups document and stats all.count drops by one. File an hours report → confirm they reappear silently.
  • Manual: toggle the inactive button from the publisher edit page → confirm the amber Inactif badge surfaces next to the H1 (desktop) and wraps cleanly on mobile.
  • Manual: export a congregation containing an inactive member → import into a fresh tenant → confirm inactiveAt is preserved.

mindsers added 5 commits June 7, 2026 20:29
Persist Member.inactiveAt for publishers who report no preaching for 6
consecutive monthly reports. Auto-set on activity writes and silently
cleared when an hours report arrives; manual toggle exposed on the
publisher view/edit pages. Inactive publishers are hidden from the
public-facing display board (groups + pioneers) and excluded from
publisher stats, but remain fully visible to admins and elders.
Import ordering and minor formatting picked up by pnpm build:format.
No behavior changes.
Apply post-review refinements: swap Pause/Play for ZapOff/Zap to
disambiguate from the adjacent mark-as-left button, document the
leftAt/inactiveAt precedence in the evaluator, fix mobile badge wrap
and hover state on inactive activity rows, and include inactiveAt in
both the congregation NDJSON export/import and the GDPR per-user
export so the flag survives backup/restore.
…d round-trip

Adds two integration tests (display-board filter + activity→evaluator
end-to-end), unit tests for the manual setMemberInactive/setMemberActive
services, a regression guard on the publisher-stats inactive filter, and
extends the data-transfer round-trip to assert inactiveAt survives
export+import.
Extend the product publishers guide and feature overview with the new
inactive lifecycle state (auto-set after 6 consecutive missed reports,
silent clear on hours report, manual override). Update the architecture
doc's Member description and audit-actions table to cover inactiveAt
and the new PublisherInactivated/PublisherReactivated audit entries.
@mindsers mindsers merged commit cc1c6fc into main Jun 7, 2026
6 checks passed
@mindsers mindsers deleted the feat/inactif-support branch June 7, 2026 19:46
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