Skip to content

Feature requests: admin triage and status news - #104

Merged
leonardoaraujosantos merged 5 commits into
mainfrom
feat/suggestion-triage
Sep 27, 2026
Merged

leonardoaraujosantos merged 5 commits into
mainfrom
feat/suggestion-triage

Conversation

@leonardoaraujosantos

Copy link
Copy Markdown
Contributor

Operators can list suggestions in the console (display name, same-text count, status filter); admins triage them (status, team note, duplicate of), each change audited with the note recorded as set/empty only. Authors who opted in are told of a status change by the bot through a sweep.

No migration. Merged with main's usage screen (routes, services and admin role map keep both).

Tests: unit + integration + e2e green locally; console lint/test/build green; mypy, ruff, openspec strict clean.

…nges

GET /api/feature-requests (operator) lists suggestions with the author's
display name and same-text count, filterable by status. PATCH
/api/feature-requests/{id} (admin) sets status, note and duplicate link;
each changed field is written to config_audit, the note only as set/empty.

A StatusNewsRunner in the bot process claims status changes for authors who
opted in (advancing notified_status before sending) and sends one localised
DM per change. Opted-out, notifications-off and undeliverable people are
skipped; an unsent claim is put back, and a closed DM records
undeliverable_at like the notification drain.
FeatureRequestsVM pages and filters the list and sends only the fields an
admin changed. Operators see the list without the Triage control.
…aft on refusal

An exception from deliver() or from putting a claim back left the sweep with
the rest of the batch claimed and unsent, and those authors were never told.
Each item is now handled on its own: a raised delivery is a transient failure
and is put back, and a failed put-back no longer abandons the batch.

Pin the claim's opt-in, opt-out, platform and release guards with integration
tests, and close the console edit form only once the server accepts the
change, so a refused PATCH keeps what the admin typed.
…gestion-triage

# Conflicts:
#	console/src/domain/types.ts
#	console/src/services/adminApi.ts
#	console/src/test/stubApi.ts
#	console/src/viewmodels/console.svelte.ts
#	console/src/views/routes.test.ts
#	console/src/views/routes.ts
#	docs/admin-console.md
#	src/chatmemory/admin/handlers/services.py
#	src/chatmemory/admin/server.py
#	src/chatmemory/entrypoints/admin.py
#	tests/unit/test_admin_api.py
#	tests/unit/test_admin_roles.py
@leonardoaraujosantos
leonardoaraujosantos merged commit 9be8c95 into main Sep 27, 2026
2 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.

1 participant