Skip to content

feat: UI revamp - sticky headers, tabs, failure reasons, notif filters - #325

Merged
jorgecuesta merged 4 commits into
stagingfrom
feature/UI-components-fix-revamping
Jul 29, 2026
Merged

feat: UI revamp - sticky headers, tabs, failure reasons, notif filters#325
jorgecuesta merged 4 commits into
stagingfrom
feature/UI-components-fix-revamping

Conversation

@miguel502

Copy link
Copy Markdown
Contributor

Lock table headers while scrolling in both apps: DataTable opts in by default, and the hand-rolled tables (activity, chain overview, provider breakdown, workflows) get bounded scroll boxes. #317

Consolidate multi-table screens into tabs: middleman Suppliers (Suppliers/Activity/Overview) and provider Keys (Keys/Activity), with the active tab persisted in the URL. #317

Surface the failure reason on failed transactions in both apps’ tables, reading the log/message columns through a shared failureReasonDisplay helper. #317

Add server-side filtering to notification history (event type, read/unread, channel) in both apps; the unread badge count stays unfiltered. #317

Make the left sidebar collapsible to an icon rail with a header toggle, hidden on the landing/auth pages. #317

Add unit tests for the notification filter conditions (both apps) and the shared failure-reason helper. #317

@miguel502 miguel502 self-assigned this Jul 14, 2026
@miguel502
miguel502 requested a review from jorgecuesta July 14, 2026 18:24
@miguel502
miguel502 changed the base branch from main to staging July 14, 2026 18:25
@miguel502 miguel502 closed this Jul 14, 2026
@miguel502 miguel502 reopened this Jul 14, 2026
Lock table headers while scrolling in both apps: DataTable opts in by
default, and the hand-rolled tables (activity, chain overview, provider
breakdown, workflows) get bounded scroll boxes. #317

Consolidate multi-table screens into tabs: middleman Suppliers
(Suppliers/Activity/Overview) and provider Keys (Keys/Activity), with the
active tab persisted in the URL. #317

Surface the failure reason on failed transactions in both apps’ tables,
reading the log/message columns through a shared failureReasonDisplay
helper. #317

Add server-side filtering to notification history (event type,
read/unread, channel) in both apps; the unread badge count stays
unfiltered. #317

Make the left sidebar collapsible to an icon rail with a header toggle,
hidden on the landing/auth pages. #317

Add unit tests for the notification filter conditions (both apps) and the
shared failure-reason helper. #317
@miguel502
miguel502 force-pushed the feature/UI-components-fix-revamping branch from 4a1f9c4 to c4f99bb Compare July 14, 2026 19:51
- provider: restore UUID search on notifications (re-add enableSearch)
- provider/middleman: surface pending activity on the Activity tab by
lifting the pending query above the Radix tab boundary and wiring
TabsBadge — the poll was trapped in the unmounted tab, so pending
stake/unstake was invisible on the default tab
- db: extract shared buildNotificationEventFilterConditions to
@igniter/db/notifications; both DAL copies now delegate (dedup)
- commons: extract isInternalPath to @igniter/commons/utils; Sidebar
and SidebarTriggerGate share it (dedup)
@jorgecuesta

jorgecuesta commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

One thing worth a look before merging, and it's minor:

In KeysTabs.tsx (provider) the refetchInterval: 4000 ended up ungated. Since the query is now always mounted (you lifted it above the tabs), the Keys page fires a server-action call every 4s permanently, whether or not there's pending activity, on any tab. That poll used to live inside ActivitiesSection, which only mounted on the Activity tab, so effectively it's a new always-on poll. In middleman you gated it nicely (pendingOperations > 0 ? 7000 : false) — would be consistent to do the same here:

refetchInterval: (q) => (Object.keys(q.state.data?.byKey ?? {}).length > 0 ? 4000 : false),

And a micro nit, take it or leave it: in SuppliersTabs.tsx the badge counts byOperator while the poll gate looks at pendingOperations — if those ever diverge you could see the badge showing N with the poll already stopped. It's a rare edge and it's the same behavior the old counter had, so not worried, just noting it.

Otherwise 👍 from my side.

Gate the interval on byKey the same way middleman's SuppliersTabs gates
its poll: only poll while there's pending activity, otherwise stop.
byKey is the badge's own source, so the poll and badge can't diverge.
-Show friendly on-chain failure reasons in transaction tables
Failed transactions previously surfaced only the raw ABCI log (or a
generic "Unknown error"), hard to read and duplicated in both the table
cell and the detail drawer. Thread the chain's own error text end to end
and map known Cosmos SDK error codes to short human-readable messages,
shown through a single copyable popover.
@jorgecuesta jorgecuesta added release:minor Trigger minor version bump on merge to main release Trigger staging deploy on merge to staging labels Jul 29, 2026
@jorgecuesta
jorgecuesta merged commit 594c72d into staging Jul 29, 2026
7 checks passed
jorgecuesta pushed a commit that referenced this pull request Jul 29, 2026
- provider: restore UUID search on notifications (re-add enableSearch)
- provider/middleman: surface pending activity on the Activity tab by
lifting the pending query above the Radix tab boundary and wiring
TabsBadge — the poll was trapped in the unmounted tab, so pending
stake/unstake was invisible on the default tab
- db: extract shared buildNotificationEventFilterConditions to
@igniter/db/notifications; both DAL copies now delegate (dedup)
- commons: extract isInternalPath to @igniter/commons/utils; Sidebar
and SidebarTriggerGate share it (dedup)
@jorgecuesta
jorgecuesta deleted the feature/UI-components-fix-revamping branch July 29, 2026 16:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request middleman provider release:minor Trigger minor version bump on merge to main release Trigger staging deploy on merge to staging

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants