Feature #3250
open[oms-bug-fixes] web: OMS UI bug fixes: chips, sorting, date field, reset password
0%
Description
Overview¶
Feature for the web side. 28 test case(s) generated.
Requirement¶
"UI Bug fixes"
Attached file (read it directly for the real content): /opt/drcarrot-deploy/cross-repo-orchestration/contracts/.attachments/dev-hub-spec-twhXSJXa7BbAYdn2C-requirement-1.md
Attached file (read it directly for the real content): /opt/drcarrot-deploy/cross-repo-orchestration/contracts/.attachments/dev-hub-spec-SCNiyQbx6bXCxZBaL-OMS_Screens__standalone___2_.html
Explicit Constraints¶
- Do not skip any requirement. scope/implementation
- We do not need the Status column in the Expenses List. Remove the Status column from the Expenses List. screens/UI — Expenses List
- Do not disable the field unless there is a specific business requirement. screens/UI — New Expense Date field
- Do not limit this fix only to Supplier and Project. Please review all list/table screens and identify columns that should support sorting. scope — sorting implementation
- No authenticated layout (Sidebar/Header) should remain visible after logout/session termination. screens/UI — Reset Password / authentication flow
- Do not leave stale authentication/session state in the application. existing behavior — session/auth state
- Fix the common/root cause wherever possible instead of creating screen-specific workarounds. scope/implementation approach
- Do not assume that fixing one screen means the requirement is complete. Check all applicable screens. scope — coverage of fixes
- The task should not be considered complete until every item above has been implemented and individually verified. scope/completion criteria
Acceptance Criteria¶
(none extracted — spec-extract has not run for this session)
Test Cases¶
☐ Every list screen that shows a Status column renders the status as a chip/badge element rather than plain text.
☐ Each status chip renders with the exact background color, text color, border/border-radius, padding, and typography specified in the OMS_Screens design reference for that status value.
☐ Status chip rendering is implemented as one reusable StatusChip component, and every list screen showing status imports and renders that same component rather than a screen-local copy.
☐ The Expenses List screen no longer renders a Status column at all.
☐ Status-related UI logic that is no longer needed (status filter controls, status-derived styling/sorting hooks tied to the removed column) is removed from the Expenses List implementation.
☐ The Date field on the New Expense screen is enabled/editable, not disabled.
☐ Clicking/triggering the New Expense Date field opens a working date picker.
☐ Selecting a different date in the New Expense date picker updates the Date field's value accordingly.
☐ The selected date on the New Expense screen is displayed using the correct, consistent date format.
☐ The date value selected on the New Expense screen is submitted correctly to the API when the expense is saved.
☐ On any list screen where the data set has only one row, the sort control/icon for that list's columns is hidden.
☐ On list screens with multiple rows, the sort control/icon is shown for columns that are sortable.
☐ The Supplier column supports sorting via the UI wherever it appears in a multi-row list.
☐ Sorting by the Supplier column is correctly applied via the backend/API, not only re-ordered client-side.
☐ The Project column supports sorting via the UI wherever it appears in a multi-row list.
☐ Sorting by the Project column is correctly applied via the backend/API, not only re-ordered client-side.
☐ Across all list/table screens, the sort icon appears only on columns that are genuinely sortable and never on non-sortable columns.
☐ Clicking a sortable column's control correctly toggles the list between ascending and descending order.
☐ The sort icon/UI state (direction indicator, active-column highlight) accurately reflects the list's actual applied sort state at all times.
☐ Backend/API sorting is correctly handled for every sortable column across all list/table screens, not just Supplier and Project.
☐ The Expenses Summary list no longer displays the literal text 'View Details' as its view action.
☐ The Expenses Summary view action is rendered as an icon matching the design's icon-based action style (icon choice, size, color, spacing, alignment) used on other list screens.
☐ Clicking the Expenses Summary view icon opens the correct Expense Summary details for that specific row.
☐ Submitting a password reset in the Reset Password flow completes successfully end to end.
☐ After a successful password reset, session/authentication state is handled by the reset flow's own logic rather than unconditionally triggering the generic logout flow.
☐ After a successful password reset, the user is redirected to the Login screen.
☐ After the Reset Password redirect (and after any logout/session termination generally), the Login screen renders standalone with no authenticated Sidebar/Header remaining.
☐ After the Reset Password flow completes, no stale authentication/session state (tokens, cached user, auth headers) remains anywhere in the application.
Implementation Details¶
Merge Request¶
- Repository: oms/oms-web
- Branch: feat/3250-oms-ui-bug-fixes-chips-s
- MR: https://gitlab.techbumbles.co.in/oms/oms-web/-/merge_requests/10
Commits¶
- fbcaca8 Contract (oms-bug-fixes)
- 2fa4249 4. Dead Code (oms-bug-fixes)
- 815264d UI Implementation (oms-bug-fixes)
- 6002e6a Data Layer (oms-bug-fixes)
Verification¶
Quality Gates¶
- 1. Unit Tests: SKIPPED — 0 passed / 0 failed, 0% coverage
- (1. Unit Tests at SKIPPED (human override — see gate_override in approvals_index) could not be attached — see log above)
- 2. TypeScript: PASS — 0 error(s)
-
- TypeScript attached: W11_gate_typescript-oms-bug-fixes.txt
- 3. Lint: PASS — 0 error(s), 0 warning(s)
-
- Lint attached: W12_gate_lint-oms-bug-fixes.txt
- 4. Dead Code: PASS
-
- Dead Code attached: W13_gate_dead-code-oms-bug-fixes.txt
- 5. Code & Style Quality Audit: FAIL
-
- Code & Style Quality Audit attached: W14_gate_quality-audit-oms-bug-fixes.txt
- 6. Design Consistency Audit: FAIL
-
- Design Consistency Audit attached: design-consistency-audit-3250.txt
- 7. Responsive Audit: FAIL
-
- Responsive Audit attached: responsive-audit-3250.txt
- Code Review: NEEDS_CHANGES
- UI Verify: FAIL
- UI Verify attached: ui-verify-3250.txt
UI Verification¶
FAIL
- Match: 56/73 fields (76.7%)
- Screens verified: Orders, Item List, Uom List, Supplier List, Project List, Expense List, Expense Summary, Project-1, Add Expense, Reset Password
Business Logic Verification: FAILED - (Live verification evidence at /tmp/oms-web-w30-live-verify-evidence.txt (+ screenshot /tmp/lv-A-stuck-on-login.png) could not be attached — see log above)
Orchestration slug: oms-bug-fixes (side: web)
Files
BA Updated by Bot AI about 2 months ago
- Status changed from New to In Progress
BA Updated by Bot AI about 2 months ago · Edited
Phase Timeline¶
| # | Process | Start (IST) | End (IST) | Duration | Input | Output | Cache Create | Cache Read | Tokens | Cost | Model |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Requirement scope detection | 01-09-2026 14:44:21 | 01-09-2026 14:44:48 | 26s | 6,725 | 1,952 | -- | -- | 155,294 | $0.2687 | claude-sonnet-5 |
| 2 | Extract explicit constraints | 01-09-2026 14:44:48 | 01-09-2026 14:45:11 | 23s | 3 | 546 | -- | -- | 73,806 | $0.1544 | claude-sonnet-5 |
| 3 | Probe environment | 01-09-2026 14:45:11 | 01-09-2026 14:45:18 | 6s | not available | not available | not available | not available | not available | not available | API Script |
| 4 | Execution environment — discover runners | 01-09-2026 14:45:18 | 01-09-2026 14:45:19 | 0s | not available | not available | not available | not available | not available | not available | Script |
| 5 | Execution environment — confirm | 01-09-2026 14:45:19 | 01-09-2026 14:45:33 | 13s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 6 | Task Granularity | 01-09-2026 14:45:38 | 01-09-2026 14:46:29 | 51s | 6,725 | 3,815 | -- | -- | 158,135 | $0.2707 | claude-sonnet-5 |
| 7 | Task Granularity — human gate | 01-09-2026 14:46:29 | 01-09-2026 14:46:44 | 15s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 8 | Do screen inventory + field checklist? — human gate | 01-09-2026 14:46:50 | 01-09-2026 14:46:58 | 8s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 9 | Start Confirmation | 01-09-2026 14:47:05 | 01-09-2026 14:48:44 | 2m | 6,651 | 7,654 | -- | -- | 176,499 | $0.3549 | claude-opus-5 |
| 10 | Start Confirmation — human gate | 01-09-2026 14:48:44 | 01-09-2026 14:49:02 | 17s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 11 | Determine web connection | 01-09-2026 14:49:07 | 01-09-2026 14:49:08 | 0s | not available | not available | not available | not available | not available | not available | Script |
| 12 | Extract ticket-spec / acceptance criteria | 01-09-2026 14:49:08 | 01-09-2026 14:50:30 | 1m | 6,876 | 6,695 | -- | -- | 779,167 | $0.5285 | claude-sonnet-5 |
| 13 | Generate test-spec scenarios and assertions | 01-09-2026 14:50:30 | 01-09-2026 14:52:33 | 2m | 6,721 | 13,849 | -- | -- | 64,888 | $0.3364 | claude-sonnet-5 |
| 14 | Create/Reuse Web Redmine Ticket | 01-09-2026 14:52:33 | 01-09-2026 14:52:36 | 2s | not available | not available | not available | not available | not available | not available | API Script |
| 15 | Cross-link tickets | 01-09-2026 14:52:36 | 01-09-2026 14:52:36 | 0s | not available | not available | not available | not available | not available | not available | API Script |
| 16 | Initialise timing note | 01-09-2026 14:52:36 | 01-09-2026 14:52:37 | 0s | not available | not available | not available | not available | not available | not available | API Script |
| 17 | Analyze → Implementation Plan | 01-09-2026 14:52:37 | 01-09-2026 15:05:27 | 13m | 3,208 | 33,748 | -- | -- | 2,905,022 | $1.9453 | claude-opus-5 |
| 18 | Design | 01-09-2026 15:05:28 | 01-09-2026 15:08:28 | 3m | 2,730 | 12,661 | -- | -- | 995,268 | $0.7377 | claude-sonnet-5 |
| 19 | Schema Review | 01-09-2026 15:08:29 | 01-09-2026 15:14:21 | 6m | 2,783 | 25,051 | -- | -- | 927,003 | $1.0423 | claude-opus-5 |
| 20 | GAP — unattributed | 01-09-2026 15:14:21 | 01-09-2026 15:41:31 | 27m | n/a | n/a | n/a | n/a | n/a — wait time, not compute | n/a — wait time, not compute | n/a |
| 21 | Create Branch (retried ×14 — transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error; transient_api_error) (re-dispatched ×22; first attempt 01-09-2026 15:14:21) | 01-09-2026 15:41:31 | 01-09-2026 15:41:34 | 3s | not available | not available | not available | not available | not available | not available | API Script |
| 22 | Data Layer | 01-09-2026 15:41:34 | 01-09-2026 15:58:10 | 17m | 3,898 | 50,813 | -- | -- | 10,991,634 | $4.9761 | claude-sonnet-5 |
| 23 | GAP — unattributed | 01-09-2026 15:58:10 | 01-09-2026 16:10:13 | 12m | n/a | n/a | n/a | n/a | n/a — wait time, not compute | n/a — wait time, not compute | n/a |
| 24 | UI Implementation (re-dispatched ×2; first attempt 01-09-2026 15:58:10) | 01-09-2026 16:10:13 | 01-09-2026 16:19:05 | 9m | 3,308 | 6,434 | -- | -- | 1,579,626 | $0.8928 | claude-sonnet-5 |
| 25 | GAP — unattributed | 01-09-2026 16:19:05 | 01-09-2026 16:32:28 | 13m | n/a | n/a | n/a | n/a | n/a — wait time, not compute | n/a — wait time, not compute | n/a |
| 26 | 1. Unit Tests (re-dispatched ×2; first attempt 01-09-2026 16:19:06) FAILED | 01-09-2026 16:32:28 | 01-09-2026 16:36:25 | 4m | not available | not available | not available | not available | not available | not available | not recorded |
| 27 | 2. TypeScript | 01-09-2026 16:37:04 | 01-09-2026 16:37:20 | 16s | not available | not available | not available | not available | not available | not available | Script |
| 28 | 3. Lint | 01-09-2026 16:37:20 | 01-09-2026 16:37:29 | 9s | not available | not available | not available | not available | not available | not available | Script |
| 29 | 4. Dead Code | 01-09-2026 16:37:30 | 01-09-2026 16:41:08 | 4m | 2,916 | 14,997 | -- | -- | 1,012,973 | $0.9289 | claude-opus-5 |
| 30 | 5. Code & Style Quality Audit | 01-09-2026 16:41:09 | 01-09-2026 17:02:39 | 21m | 2,928 | 48,374 | -- | -- | 2,037,530 | $2.1579 | claude-opus-5 |
| 31 | 6. Design Consistency Audit | 01-09-2026 17:02:40 | 01-09-2026 17:24:30 | 22m | 12,520 | 48,746 | -- | -- | 3,193,832 | $2.3884 | claude-opus-5 |
| 32 | 7. Responsive Audit | 01-09-2026 17:24:31 | 01-09-2026 17:35:31 | 11m | 2,934 | 45,979 | -- | -- | 2,518,696 | $2.2348 | claude-opus-5 |
| 33 | Code Review (re-dispatched ×2; first attempt 01-09-2026 17:35:32) | 01-09-2026 17:37:07 | 01-09-2026 17:40:34 | 3m | 2,734 | 14,160 | -- | -- | 1,441,562 | $1.0351 | claude-sonnet-5 |
| 34 | UI Verify | 01-09-2026 17:40:35 | 01-09-2026 17:57:04 | 16m | 3,488 | 43,653 | -- | -- | 3,184,445 | $2.1248 | claude-opus-5 |
| 35 | Web: Live verification | 01-09-2026 17:57:04 | 01-09-2026 18:16:50 | 20m | 3,743 | 48,793 | -- | -- | 6,219,918 | $3.2827 | claude-sonnet-5 |
| 36 | Contract | 01-09-2026 18:16:50 | 01-09-2026 18:19:31 | 3m | 3,008 | 7,839 | -- | -- | 1,544,904 | $0.8626 | claude-sonnet-5 |
| 37 | Git & MR | 01-09-2026 18:19:32 | 01-09-2026 18:19:52 | 19s | not available | not available | not available | not available | not available | not available | API Script |
| 38 | Trigger GitLab Local Verification | 01-09-2026 18:19:53 | 01-09-2026 18:19:53 | 0s | not available | not available | not available | not available | not available | not available | API Script |
| 39 | Poll verification jobs | 01-09-2026 18:19:54 | 01-09-2026 18:19:54 | 0s | not available | not available | not available | not available | not available | not available | API Script |
| 40 | Validate verification evidence | 01-09-2026 18:19:55 | 01-09-2026 18:19:55 | 0s | not available | not available | not available | not available | not available | not available | API Script |
| 41 | Verification approval | 01-09-2026 18:19:56 | 01-09-2026 18:20:28 | 32s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 42 | Completion Summary | 01-09-2026 18:20:35 | 01-09-2026 18:20:35 | 0s | not available | not available | not available | not available | not available | not available | API Script |
| 43 | Write handoff doc | 01-09-2026 18:20:36 | 01-09-2026 18:20:36 | 0s | not available | not available | not available | not available | not available | not available | Script |
| 44 | Resolve tickets + post usage summary | 01-09-2026 18:20:37 | 01-09-2026 18:20:42 | 4s | not available | not available | not available | not available | not available | not available | Script |
| 45 | Human intervention (escape hatch) | -- | 01-09-2026 16:10:07 | -- | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 46 | Gate failure decision | -- | 01-09-2026 16:36:58 | -- | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 47 | Join — all active sides implemented | -- | 01-09-2026 18:19:52 | -- | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| — | ORCHESTRATOR TOTAL (rows 5–47) | — | — | 1m | 0 | 0 | 0 | 0 | 0 | $0.0000 | — |
| — | SHARED TOTAL (rows 1–44) | — | — | 2h 39m | 83,899 | 435,759 | 0 | 0 | 39,960,202 | $26.5230 | — |
| — | GRAND TOTAL (wall clock) | 01-09-2026 14:44:21 | 01-09-2026 18:20:42 | 3h 36m | 83,899 | 435,759 | 0 | 0 | 39,960,202 | $26.5230 | — |
ORCHESTRATOR TOTAL: 1m, 0 tokens, $0.0000 (rows 5–47)
SHARED TOTAL: 2h 39m, 39,960,202 tokens, $26.5230, 17 row(s) with no token data (rows 1–44)
Total Run Time: 3h 36m (wall clock, 01-09-2026 14:44:21 → 01-09-2026 18:20:42 IST — not a sum of the per-side totals above, since sides overlap)
Active time: 2h 44m | Waiting (session limits, approvals, dead sessions): 53m — 3 gap(s) still unattributed; label them with driver.py gap <slug> --from <ISO> --to <ISO> --reason '<why>'
Total Tokens Consumed: 39,960,202 (plus 17 row(s) whose usage was never captured — run execution_tracker.py enrich-audit to backfill. This is a floor, not the total.)
Token breakdown: input 83,899 · output 435,759 · cache-create 0 · cache-read 0 (0% of the total). Cache-read is context a node re-sends to itself across its own tool-use turns, billed at roughly a tenth of fresh input — a large Tokens number that is mostly cache-read is a long tool loop, not a large workload.
Total Cost: $26.5230 (plus 17 row(s) whose usage was never captured — run execution_tracker.py enrich-audit to backfill. This is a floor, not the total.)
BA Updated by Bot AI about 2 months ago
- File W11_gate_typescript-oms-bug-fixes.txt W11_gate_typescript-oms-bug-fixes.txt added
- File W12_gate_lint-oms-bug-fixes.txt W12_gate_lint-oms-bug-fixes.txt added
- File W13_gate_dead-code-oms-bug-fixes.txt W13_gate_dead-code-oms-bug-fixes.txt added
- File W14_gate_quality-audit-oms-bug-fixes.txt W14_gate_quality-audit-oms-bug-fixes.txt added
- File design-consistency-audit-3250.txt design-consistency-audit-3250.txt added
- File responsive-audit-3250.txt responsive-audit-3250.txt added
- File ui-verify-3250.txt ui-verify-3250.txt added
- Description updated (diff)
- Status changed from In Progress to Resolved
Run oms-bug-fixes — web side complete¶
Merge Request¶
- Repository: oms/oms-web
- Branch: feat/3250-oms-ui-bug-fixes-chips-s
- MR: https://gitlab.techbumbles.co.in/oms/oms-web/-/merge_requests/10
Commits¶
- fbcaca8 Contract (oms-bug-fixes)
- 2fa4249 4. Dead Code (oms-bug-fixes)
- 815264d UI Implementation (oms-bug-fixes)
- 6002e6a Data Layer (oms-bug-fixes)
Quality Gates¶
- 1. Unit Tests: SKIPPED — 0 passed / 0 failed, 0% coverage
- (1. Unit Tests at SKIPPED (human override — see gate_override in approvals_index) could not be attached — see log above)
- 2. TypeScript: PASS — 0 error(s)
-
- TypeScript attached: W11_gate_typescript-oms-bug-fixes.txt
- 3. Lint: PASS — 0 error(s), 0 warning(s)
-
- Lint attached: W12_gate_lint-oms-bug-fixes.txt
- 4. Dead Code: PASS
-
- Dead Code attached: W13_gate_dead-code-oms-bug-fixes.txt
- 5. Code & Style Quality Audit: FAIL
-
- Code & Style Quality Audit attached: W14_gate_quality-audit-oms-bug-fixes.txt
- 6. Design Consistency Audit: FAIL
-
- Design Consistency Audit attached: design-consistency-audit-3250.txt
- 7. Responsive Audit: FAIL
-
- Responsive Audit attached: responsive-audit-3250.txt
- Code Review: NEEDS_CHANGES
- UI Verify: FAIL
- UI Verify attached: ui-verify-3250.txt
UI Verification¶
FAIL
- Match: 56/73 fields (76.7%)
- Screens verified: Orders, Item List, Uom List, Supplier List, Project List, Expense List, Expense Summary, Project-1, Add Expense, Reset Password
Business Logic Verification: FAILED - (Live verification evidence at /tmp/oms-web-w30-live-verify-evidence.txt (+ screenshot /tmp/lv-A-stuck-on-login.png) could not be attached — see log above)
BA Updated by Bot AI about 2 months ago
Token usage summary (grouped by model):
Total known tokens: 0
Processes with no token data: 0
processesWithNoTokenData are orchestrator-internal steps with no sub-agent spawn — their token cost is real but not measurable in this environment, not zero. Do not treat totalKnownTokens as full spend.