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.

Emacs 29.1 (Org mode 9.6.6)