Story: Qt and eventing polish
Table of Contents
This page documents a story in Sprint 12. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Round of unrelated Qt + eventing polish: shell widget, name-based role management, save-on-connections fix, configurable icons, test-stdout, unsubscribe-before-logout, and lifecycle events for comms + accounts.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 12 |
| Now | Completed 2026-02-10. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2026-02-10 |
Acceptance
- All seven items closed cleanly.
- Protocol bump 26.2 for name-based roles.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Add shell widget to ores.qt | DONE | 2026-05-19 | 2026-02-07 | REPL widget inside Qt so super-admin can do bulk setup (tenants, accounts) without leaving the application. |
| Add roles to account via codes | DONE | 2026-05-19 | 2026-02-07 | assign_role_by_name_request + revoke_role_by_name_request protocol messages; principal-based (username@hostname) + role-name lookups; shell intelligently detects UUID vs name. Protocol bump 26.2. |
| Fix save on connections causes exit | DONE | 2026-05-19 | 2026-02-10 | Clicking Save asked the user to exit the application; saving repeatedly created duplicate folders. |
| Make icon theme configurable | DONE | 2026-05-19 | 2026-02-10 | Allow switching the icon theme without rebuilding; ideally without restarting. |
| Tests logging to stdout in github | DONE | 2026-05-19 | 2026-02-10 | Excessive stdout output in CDash; investigated and resolved (logging disabled or routed correctly now). |
| Unsubscribe before logout | DONE | 2026-05-19 | 2026-02-10 | Logout currently produces 'Exception in notification writer: co_await: Operation canceled'. Clean shutdown should unsubscribe first. |
| Use events in comms and accounts | DONE | 2026-05-19 | 2026-02-10 | Emit events for connect, disconnect, retry, login, logout via the new event bus. |
Decisions
- Name-based role assignment is the stable path
- UUIDs change across DB refreshes; names don't.
Out of scope
- Full event-driven UI refactor — done piecewise as needed.
See also
None.