Skip to content

feat: add read-only deployment moderation dashboard#1999

Open
kalvinnchau wants to merge 5 commits into
mainfrom
peon/operator-dashboard
Open

feat: add read-only deployment moderation dashboard#1999
kalvinnchau wants to merge 5 commits into
mainfrom
peon/operator-dashboard

Conversation

@kalvinnchau

@kalvinnchau kalvinnchau commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a deployment-wide, read-only operator dashboard for moderation reports and product feedback, styled to match Buzz
  • provide report and feedback list/detail views with community attribution, Unicode-safe summaries, full wrapping content, category icons, image previews, and compact file attachments
  • add feedback search plus community, received-time, and browser-local Acted on filters
  • validate feedback attachment metadata against the community-scoped media record before persistence
  • build the admin SPA into the relay image and provide just admin, just admin-seed, and just admin-check workflows; local seeding uploads existing screenshots and generates temporary diagnostics files during the run
  • read from the existing moderation, feedback, community, and media data models

Security model

  • the admin UI and read API have no application-level auth; they are enabled only for the exact configured BUZZ_ADMIN_HOST, and browser API requests are same-origin
  • Kubernetes ingress is the trust boundary: expose the admin DNS only to the VPN or approved source IPs, while public relay DNS does not route the admin host
  • use service routing and NetworkPolicy to prevent direct or alternate access paths; place an identity-aware proxy in front when per-user authentication and audit attribution are required

Interface

  • GET /api/admin/v1/reports
  • GET /api/admin/v1/reports/:id
  • GET /api/admin/v1/feedback
  • GET /api/admin/v1/feedback/:id

Report reads support bounded filtering by community, status, report type, target kind, and time range. Feedback is newest-first and searchable/filterable in the browser. Acted on state is stored by feedback ID in browser local storage.

Verification

  • just admin-check
  • cargo test -p buzz-relay handlers::product_feedback
  • bash -n scripts/seed-admin-dashboard.sh
  • local seed, temporary-file cleanup, and live text attachment response
  • pre-commit formatting and lint hooks
  • pre-push branch skew, Rust, desktop, Tauri, and mobile checks

@kalvinnchau
kalvinnchau force-pushed the peon/operator-dashboard branch from 2d473e1 to 58e8440 Compare July 16, 2026 22:42
@kalvinnchau kalvinnchau changed the title feat: add deployment-wide operator moderation plane feat: add deployment-wide admin moderation surface Jul 16, 2026
@kalvinnchau
kalvinnchau force-pushed the peon/operator-dashboard branch 2 times, most recently from 55d3853 to 688897a Compare July 17, 2026 00:35
@kalvinnchau kalvinnchau changed the title feat: add deployment-wide admin moderation surface feat: add read-only deployment moderation dashboard Jul 17, 2026
Co-authored-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@sprout-oss.stage.blox.sqprod.co>
@kalvinnchau
kalvinnchau force-pushed the peon/operator-dashboard branch from 688897a to ebfd4eb Compare July 17, 2026 15:16
npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 and others added 2 commits July 17, 2026 08:43
Co-authored-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@sprout-oss.stage.blox.sqprod.co>
remove browser-managed reviewer headers and scope admin reads to the private ingress. align the dashboard with buzz styling and add full feedback detail reads with community provenance.
@kalvinnchau
kalvinnchau marked this pull request as ready for review July 17, 2026 16:20
@kalvinnchau
kalvinnchau requested a review from a team as a code owner July 17, 2026 16:20
add searchable feedback filters, browser-local acted-on state, and buzz category styling. validate and render real feedback attachments with deterministic local seed coverage.
* origin/main: (31 commits)
  chore(release): release Buzz Desktop version 0.4.14 (#2036)
  Strip media metadata on clients and reject it at the relay (#2006)
  fix(desktop): restore Doctor ACP login discovery (#2017)
  feat(desktop): animate starter team onboarding (#2032)
  fix(ci): use git diff for path filtering (#2029)
  fix(desktop): include exe dir and ~/.local/bin in provider discovery (#2007)
  [codex] Hold Git concurrency permits through streaming (BUZZ-SEC-018) (#1916)
  [codex] Enforce shared relay admission limits (BUZZ-SEC-019) (#1917)
  [codex] Block banned actors from moderation commands (BUZZ-SEC-007) (#1915)
  [codex] Fix relay WebSocket admission limits (#1682)
  fix(desktop): close mention popup after an exact name + trailing space (#2030)
  test(desktop): harden observer archive policy regression coverage (#1994)
  [codex] Bind release publishers to immutable tags (BUZZ-SEC-039) (#1914)
  fix: resolve invite downloads by platform (#2001)
  Bug-bash: mention/code-span, feed titles, autocomplete, edit-mentions, draft routing, and right-click media Download (#2027)
  fix(desktop): keep mesh allowlist on transient roster query failure (#2024)
  Polish Buzz theme and sidebar (#1971)
  Welcome new users with a live agent team kickoff (#1998)
  fix(desktop): case-insensitive relay media origin match, release 0.4.13 (#2023)
  feat(desktop): show owners in agent hover cards (#2015)
  ...
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