Skip to content

feat: make the run reachable, and stop the control room repeating itself - #25

Merged
iamsiddhesh-dev merged 6 commits into
mainfrom
product-polish
Sep 4, 2026
Merged

iamsiddhesh-dev merged 6 commits into
mainfrom
product-polish

Conversation

@iamsiddhesh-dev

Copy link
Copy Markdown
Owner

Six fixes from a design pass over all seven screens. One of them is a functional
hole rather than a cosmetic one.

87% of the failures could not be opened

The queue rendered build_queue(..., limit=200) and stopped. On this run that is
200 of 1,605 — no pagination, no "load more", no search box anywhere in the app.
The other 1,405 payments existed in the ledger and were unreachable through the
UI.

Worse than a missing feature: the cut is by amount descending, so the unreachable
ones are the small payments, which is precisely where "we deliberately did
nothing because it was not worth the cost" lives. That is a headline claim with
its evidence behind an invisible cap.

Now: a search box (payment id, cause, method, reported reason), 100 per page, and
a pager that carries the filters. A test walks every page and asserts the union
equals the total.

The control room said everything twice

Measured before the change: the top scoreboard read
₹3,94,791 · ₹5,41,724 · ₹1,48,627 · 926 · 903, and the replay row beneath it read
₹5,41,724 · 1,605 · 2 · 926 · 903. Three of five identical, same tile style,
same weight — because the scrubber defaults to "Now", so it showed the finished run
already stated above it. Two accent "headline" tiles competed on one screen.

The replay is now a lighter, borderless readout of quantities that only mean
something at a moment: recovered so far and what share of the final total that
is
, failures that have arrived yet, how many are still in flight, and spend to
date. Nothing on it duplicates the scoreboard, and there is one headline tile per
screen again.

The studio promised a comparison it did not show

Its own empty state read "The table will compare the result against the committed
run"
— while showing an empty box. There was nothing to compare to until after
you had already run something.

The committed run is now the panel's default content, marked as the "before".
Content fill went from ~55% of the viewport to 82%.

Also

A tab icon. There was no <link rel=icon> at all — seven screens, seven blank
tab icons. It is an inline SVG data URI of a rising line, so it costs no request and
adds no binary to the repo. Plus a meta description and OG tags, so the link unfurls
as something when shared.

Case stepping. Reading a second case meant going back to the queue and finding
your place. There are now Larger/Smaller controls walking the queue's own
amount-descending order.

Run identity at every width. The seed sat in the rail footer, which is
display: none below 900px — while base.html's own comment says "the seed is on
screen at all times because every number shown is a function of it."
It now lives
in the top bar alongside when the run was computed, which was recorded in
run.json and displayed nowhere.

A leak caught while wiring

The first version of the case route called open_ledger twice per request and
closed one of them. Both reads now share one open.

Verification

pytest — 513 passed, 11 new. ruff check . clean.

Driven in the browser: search for "insufficient" returns 1–100 of 326 with a
working pager that preserves the query; case navigation resolves to the correct
neighbours; the studio renders all four committed arms; the favicon loads; no
console errors; no horizontal scroll.

%-d in the date filter was POSIX-only and raised on Windows — caught before
commit, now built from parts.

@iamsiddhesh-dev
iamsiddhesh-dev merged commit 20340aa into main Sep 4, 2026
1 check passed
@iamsiddhesh-dev
iamsiddhesh-dev deleted the product-polish branch September 4, 2026 10:23
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