Skip to content

feat(FR-3224): add system announcement management to the Maintenance page#8070

Open
agatha197 wants to merge 3 commits into
feat/FR-3223-edit-announcementfrom
feat/FR-3224-announcement-maintenance
Open

feat(FR-3224): add system announcement management to the Maintenance page#8070
agatha197 wants to merge 3 commits into
feat/FR-3223-edit-announcementfrom
feat/FR-3224-announcement-maintenance

Conversation

@agatha197

@agatha197 agatha197 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Resolves #8069 (FR-3224)

Stacked on #8067 (FR-3223)

Summary

  • Superadmins could only edit an existing announcement from the start-page alert (feat(FR-3223): allow editing the system announcement from the WebUI #8067). When no announcement is set, the alert does not render, so there was no WebUI way to create the first one.
  • Add a System announcement row to the admin Maintenance page (superadmin-only) that opens the existing AnnouncementEditModal, prefilled from the current get_announcement query.
  • The modal already handles create / edit / enable / disable, so a superadmin can manage the announcement regardless of whether one already exists.
  • i18n: add maintenance.Announcement / maintenance.SystemAnnouncement / maintenance.DescSystemAnnouncement across all locales.

Test plan

  • As superadmin with NO announcement set: Maintenance → "System announcement" row → click → modal opens empty → type markdown → Save → announcement created and the alert appears on the start page.
  • As superadmin with an existing announcement: the modal prefills the current message/enabled state and edits persist.
  • Toggle "Enabled" off + Save → announcement is disabled.

Verification

bash scripts/verify.sh=== ALL PASS === (Relay, Lint, Format, TypeScript).

Screenshot

image.png

@github-actions github-actions Bot added area:ux UI / UX issue. area:i18n Localization size:L 100~500 LoC labels Jun 29, 2026

Copy link
Copy Markdown
Contributor Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • flow:merge-queue - adds this PR to the back of the merge queue
  • flow:hotfix - for urgent changes, fast-track this PR to the front of the merge queue

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has required the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@agatha197 agatha197 marked this pull request as ready for review June 29, 2026 06:10
Copilot AI review requested due to automatic review settings June 29, 2026 06:10
@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Coverage Report for react-coverage (./react)

Status Category Percentage Covered / Total
🔵 Lines 7.15% 2115 / 29569
🔵 Statements 5.89% 2418 / 40989
🔵 Functions 6.06% 349 / 5758
🔵 Branches 3.9% 1509 / 38611
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
react/src/components/MaintenanceSettingList.tsx 0% 0% 0% 0% 15-160
Generated in workflow #2733 for commit 5ee1d57 by the Vitest Coverage Report Action

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a superadmin-facing entry point on the admin Maintenance page to manage the system announcement (create first announcement, edit existing, enable/disable) by reusing the existing AnnouncementEditModal, and wires in new i18n strings for the Maintenance UI across all locales.

Changes:

  • Fetch current announcement state via get_announcement and open AnnouncementEditModal from a new “System announcement” maintenance row.
  • Add new Maintenance i18n keys (maintenance.Announcement, maintenance.SystemAnnouncement, maintenance.DescSystemAnnouncement) across all supported locales.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
react/src/components/MaintenanceSettingList.tsx Adds a “System announcement” settings group that fetches announcement state and opens AnnouncementEditModal.
resources/i18n/en.json Adds Maintenance strings for announcement management.
resources/i18n/ko.json Adds Maintenance strings for announcement management.
resources/i18n/ja.json Adds Maintenance strings for announcement management.
resources/i18n/zh-CN.json Adds Maintenance strings for announcement management.
resources/i18n/zh-TW.json Adds Maintenance strings for announcement management.
resources/i18n/de.json Adds Maintenance strings for announcement management.
resources/i18n/fr.json Adds Maintenance strings for announcement management.
resources/i18n/es.json Adds Maintenance strings for announcement management.
resources/i18n/it.json Adds Maintenance strings for announcement management.
resources/i18n/pt.json Adds Maintenance strings for announcement management.
resources/i18n/pt-BR.json Adds Maintenance strings for announcement management.
resources/i18n/ru.json Adds Maintenance strings for announcement management.
resources/i18n/pl.json Adds Maintenance strings for announcement management.
resources/i18n/tr.json Adds Maintenance strings for announcement management.
resources/i18n/vi.json Adds Maintenance strings for announcement management.
resources/i18n/th.json Adds Maintenance strings for announcement management.
resources/i18n/id.json Adds Maintenance strings for announcement management.
resources/i18n/ms.json Adds Maintenance strings for announcement management.
resources/i18n/mn.json Adds Maintenance strings for announcement management.
resources/i18n/fi.json Adds Maintenance strings for announcement management.
resources/i18n/el.json Adds Maintenance strings for announcement management.

Comment thread react/src/components/MaintenanceSettingList.tsx
@agatha197 agatha197 force-pushed the feat/FR-3223-edit-announcement branch from 7432b9d to 6c600dd Compare June 29, 2026 06:33
@agatha197 agatha197 force-pushed the feat/FR-3224-announcement-maintenance branch 7 times, most recently from 4e69299 to a863c01 Compare June 29, 2026 09:03
@agatha197 agatha197 force-pushed the feat/FR-3223-edit-announcement branch from 5d71df8 to fff7f6f Compare June 29, 2026 14:17
@agatha197 agatha197 force-pushed the feat/FR-3224-announcement-maintenance branch 2 times, most recently from a1e2a4d to efd4c07 Compare June 30, 2026 09:08
@agatha197 agatha197 force-pushed the feat/FR-3223-edit-announcement branch from fff7f6f to 68b42c8 Compare June 30, 2026 09:08
@agatha197 agatha197 requested a review from yomybaby July 2, 2026 02:27
@agatha197 agatha197 force-pushed the feat/FR-3224-announcement-maintenance branch 2 times, most recently from e7d5978 to 6ca9aac Compare July 6, 2026 00:29
@agatha197 agatha197 changed the base branch from feat/FR-3223-edit-announcement to graphite-base/8070 July 7, 2026 06:14
@agatha197 agatha197 force-pushed the graphite-base/8070 branch from b1ac632 to f623bb2 Compare July 10, 2026 08:58
@agatha197 agatha197 force-pushed the feat/FR-3224-announcement-maintenance branch from 6ca9aac to 3721a49 Compare July 10, 2026 08:58
@agatha197 agatha197 changed the base branch from graphite-base/8070 to feat/FR-3223-edit-announcement July 10, 2026 08:58
agatha197 and others added 3 commits July 10, 2026 09:07
…page

Superadmins can edit an existing announcement from the start-page alert
(FR-3223), but there was no WebUI entry point to create the first
announcement when none exists. Add a "System announcement" row to the
admin Maintenance page (superadmin-only) that opens the existing
AnnouncementEditModal, so a superadmin can create, edit, enable, or
disable the announcement regardless of whether one already exists.

- MaintenanceSettingList: new Announcement settings group (placed last)
  with a button that opens AnnouncementEditModal (wrapped in
  BAIUnmountAfterClose), prefilled from the current get_announcement query.
- i18n: add maintenance.Announcement / SystemAnnouncement /
  DescSystemAnnouncement across all locales.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the inline get_announcement query in MaintenanceSettingList with
the shared useSuspenseGetAnnouncement hook introduced on the parent
branch, removing the duplicated query definition.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ttingList

The edit modal now fetches the announcement itself, so the Maintenance
page no longer needs to query get_announcement just to prefill the modal
(removing an extra suspending request on page load).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@agatha197 agatha197 force-pushed the feat/FR-3224-announcement-maintenance branch from 3721a49 to 5ee1d57 Compare July 10, 2026 09:07
@agatha197 agatha197 force-pushed the feat/FR-3223-edit-announcement branch from f623bb2 to 39f74fd Compare July 10, 2026 09:07

@nowgnuesLee nowgnuesLee left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:i18n Localization area:ux UI / UX issue. size:L 100~500 LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants