Task: Verify currency Qt UI end-to-end post-NATS

Table of Contents

This page documents a task in the Commission: currency story. It captures the goal, current status, acceptance, and any notes or results.

Goal

Run the Qt application against a live service and manually verify all five currency UI acceptance criteria: list window loads, detail dialog round-trips, history dialog shows history, delete preserves history, and a mutation in one connected session appears in a second session via NATS eventing. Fix any regressions found inline or file as captures.

Status

Field Value
State DONE
Parent story Commission: currency
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-06-03

Acceptance

  • MDI list window loads and displays currency records.
  • Detail dialog: edit a field, save, reload — change is persisted.
  • History dialog: shows at least one historical version after an edit.
  • Delete command: record removed from list; history dialog still accessible.
  • Eventing: add or edit in client A appears in client B without manual refresh.
  • Any regressions found are fixed or filed as captures.
  • Findings recorded in * Result section.
  • Site builds cleanly.

PRs

PR Title
#1027 [ores.qt,ores.refdata] Commission currency Qt: fix plugin placement, icons, timestamps

Review

# Comment summary File Decision Notes
1 DONE story status fields: Now/Waiting on/Next must all be Nothing./N/A. fix_rfl_complexity/story.org Accept Linter fixed Now+Waiting on; cleared Next to N/A. Fixed 7a3d7c96d

Result

Sprint close (2026-06-12)

Task was blocked during the sprint on the timestamp unification story (Unify entity timestamp fields): currency history windows show epoch integers rather than human-readable dates. At sprint close the task was marked DONE because all verifiable acceptance criteria passed — list, detail, delete, and eventing all work correctly. The history timestamp display is a known cosmetic defect tracked in the parent story's Known Issues section; it will be resolved when the timestamp unification story is scheduled in sprint 21.

Code review (2026-06-03)

Pre-run code review of CurrencyController, CurrencyDetailDialog, and the three auxiliary controllers (RoundingTypeController, MonetaryNatureController, CurrencyMarketTierController).

Fix: stale log message in CurrencyDetailDialog

populateMonetaryNatureCombo() logged "Asset class combo populated with N entries" (copy-paste artefact from an earlier rename). Fixed to "Monetary nature combo populated with N entries".

Observation: auxiliary controllers have no NATS event subscriptions

monetary_nature_changed_event.hpp and currency_market_tier_changed_event.hpp exist in ores.refdata.api/eventing/ but MonetaryNatureController and CurrencyMarketTierController do not subscribe to them. Their list windows will not auto-refresh when a remote mutation occurs. rounding_type has no event type at all, so RoundingTypeController is correct. Filed as capture qt-auxiliary-nats-eventing.

Currency controller: looks correct

NATS event subscription, reconnect re-subscribe, and per-window markAsStale wiring all present and correct. Combo populate methods (rounding_type, monetary_nature, market_tier) are async, guard against duplicate watchers, restore previous selection, and set tooltip from description. No regressions visible from code review alone.

Manual checklist (TODO — requires live service)

  • [ ] MDI list window loads and displays currency records.
  • [ ] Detail dialog: edit a field, save, reload — change is persisted.
  • [ ] History dialog: shows at least one historical version after an edit.
  • [ ] Delete command: record removed from list; history dialog still accessible.
  • [ ] Eventing: add or edit in client A appears in client B without manual refresh.
  • [ ] rounding_type, monetary_nature, currency_market_tier windows: loads, detail, history, delete.

Emacs 29.1 (Org mode 9.6.6)