# Atelier II verification

Validated in Chromium through Playwright at 360 × 800, 390 × 844 and
1280 × 900. Mutation checks ran in isolated browser contexts.

- All nine sections; dashboard plus 22 section/subsection routes render.
- Payment conditions, seven notification rules, three channels, four
  tutorials and three advertising links render from the shared fixtures.
- Mobile pages and the nested rule editor remain within the viewport.
- Partner wallet decrease: cancellation preserves both balances; confirmation
  debits only wallet 20 by the requested amount through the shared API.
- Cancelling the global selling confirmation restores the switch.
- Plan editing, native dialog Escape handling, nested confirmations and light
  theme were exercised.
- The payment-condition tester returns real evaluated leaves and unlock status.
- A running bulk job updates its visible progress after demo time advances.
- All seven setup screens finish loading. The fresh setup fixture can be
  selected through the UI, and report-group registration can be simulated.
- Non-admin identity renders denial with no admin navigation.
- An unsupported adapter route rejects with 404 and never calls fetch.
- With the Telegram SDK held pending, dashboard render completed in 987ms
  in the recorded run. A failed module showed retry; retry recovered.
  A stalled module showed the fallback after the 12-second deadline.
- All 24 JavaScript files passed syntax checking. Edited entry/helper files
  were checked again after the final changes.
- No unexpected JavaScript page errors in the workflow checks. Deliberately
  blocked resources in startup tests produce expected network errors.

The shared backend was not modified. These are local demo checks, not
production Telegram, payment-gateway or panel-server integration tests.

## Screenshots

- [Dashboard](../output/playwright/admin-v2-dashboard.png)
- [Revenue](../output/playwright/admin-v2-revenue.png)
- [Revenue, light](../output/playwright/admin-v2-revenue-light.png)
- [Bankcards](../output/playwright/admin-v2-payments-cards.png)
- [Plan editor](../output/playwright/admin-v2-plan-editor.png)
- [Payment condition editor](../output/playwright/admin-v2-rule-editor.png)
- [Wallet confirmation](../output/playwright/admin-v2-confirmation.png)
- [Desktop](../output/playwright/admin-v2-desktop.png)
- [Fresh setup](../output/playwright/admin-v2-setup-fresh.png)

The CLI review scripts are in `output/playwright/v2-*.js`.

## UI polish revision

The screenshot-reported defects were reproduced before changes: the full-size
switch knob was 3px below the track's vertical center and extended outside it;
the tab strip retained the original border and 14px of bottom padding.

- Audited all 23 primary/subsection routes at 390 × 844. All 134 rendered
  switches have centered knobs with at least 4px clearance. No page overflow
  or unexpected JavaScript errors. Tab strips measure 45px with no bottom padding.
- Inspected 12 editors at 320 × 740, including bankcard wallets, payment
  conditions, plans, categories, panels and marketing. No horizontal overflow;
  title and footer positions remain fixed when the form body scrolls.
- Exercised staged wallet switches, persistent bankcard enable/disable and
  the synchronized status badge. Keyboard End/Home/Enter keeps the active
  tab visible and focused without scrolling the page.
- Checked cards, category controls, revenue and system at 320, 360, 600 and
  1280px. Reviewed both themes and verified reduced-motion progress completes
  at the correct value. Completed setup now uses the success color.
- Checked long paired form labels: the card editor's two input pairs have
  zero vertical misalignment. Checked two user profiles at 320px: complete
  monetary values fit on one line without clipping.
- Reviewed the bulk-operation wizard, user/subscription details and safe-mode
  settings at 320px. Moved category deletion into the form body; cancelling
  its confirmation preserves the parent editor, and the footer closes it.
- Re-ran wallet decrease/cancellation, global selling cancellation, plan
  editing, payment-condition evaluation and all seven setup screens. All
  passed. All 24 JavaScript files passed syntax checking.

Current visual references:

- [Payments](../output/playwright/polish-after-payments-cards.png)
- [Methods and wallet settings](../output/playwright/polish-after-payments-methods.png)
- [Wallet switches inside the editor](../output/playwright/polish-dialog-wallet-switches.png)
- [Category controls](../output/playwright/polish-after-catalog-categories.png)
- [User financial summary](../output/playwright/polish-detail-users-8823456789.png)
- [Light theme](../output/playwright/polish-light-cards.png)
- [Desktop](../output/playwright/polish-1280-catalog-categories.png)

Reproduction scripts: `v2-ui-audit.js`, `v2-polish-interactions.js`,
`v2-polish-final-details.js`, and `v2-profile-polish.js` in `output/playwright`.

## Activity, provider settings and rule editor refinement

- Activity bulk/notification tabs show the correct independent job counts.
  After scrolling 1300px, the tab target remains at y=86px at 360px width.
  Switching lists returns to the top; refreshing the notifications URL retains
  that list. Poll generations prevent an older refresh restoring the wrong tab.
- Three existing payment rules round-trip through the new form with no changes
  to their complete API records. This includes leaf roots, nested ALL/ANY,
  inactive rules, notes, priorities and unlocked method IDs.
- All six comparison operators and all four check types were exercised through
  the user evaluator, including a fractional monetary threshold. Results match
  direct evaluation through the shared API. Summary text updates while typing.
- A new nested ALL/ANY rule was constructed and saved through the form; the
  stored tree retains every group, condition, method and value. Cancelling
  edits leaves the stored rule unchanged.
- All 29 NOWPayments fields are present once, across six expandable groups.
  A numeric rate update and an immediate boolean update persist. A simulated
  API rejection restores the switch. Blank secret fields preserve all stored
  secrets. Updating the TRON wallet preserves its existing API key.
- The legacy crypto URL opens the new Methods entry point.
- 35 additional geometry/screenshot checks cover 320, 600 and 1280px widths,
  every provider settings group, nested rules and the light theme. No horizontal
  overflow or unexpected JavaScript page errors. All 26 JS modules parse.

Scripts: `v2-workflow-visual.js`, `v2-workflow-checks.js`,
`v2-workflow-responsive.js` and `v2-activity-live-review.js` in `output/playwright`.

- [Notification history](../output/playwright/refine-320-notifications.png)
- [Methods and provider entry points](../output/playwright/refine-payments-methods.png)
- [Provider settings overview](../output/playwright/refine-320-providers.png)
- [Guided payment rule](../output/playwright/refine-rule-editor.png)
- [Live explanation](../output/playwright/refine-rule-explanation.png)
- [Nested conditions](../output/playwright/refine-320-nested.png)
- [Light theme](../output/playwright/refine-light-rules.png)

## Receipt queues and mobile search

- Full shared mock suite: 96 passing tests. Receipt-specific tests pass after
  the exact `/GetPayment_<id>` search update, including a 100-record history,
  Unicode cursors, five-item deck refill, guarded actions and stale writes.
- Public-preview browser checks: 21 receipt/search flow assertions and 16
  viewer/responsive assertions passed. Search keeps the same focused input
  with no blur after results and an exact-command status change. Actual phone
  keyboard behavior is inferred from that fix; testing used a desktop browser.
- Fullscreen enters/exits the native browser mode. A separate check disables
  the native method and verifies the mobile viewer fills the viewport.
  The percentage control resets both zoom and rotation.
- Layout widths 320, 360, 390 and 1280px have no horizontal overflow. Review
  buttons clear bottom navigation at 360 and 390px. Reduced motion preserves
  decision progression. Receipt fixtures are reset after browser testing.
- Scripts: `receipt-queues-qa.js`, `receipt-viewer-qa.js` and
  `receipt-light-qa.js` in `output/playwright`.
- [Receipt queue](../output/playwright/receipt-queues-mobile.png),
  [fullscreen viewer](../output/playwright/receipt-queues-mobile-viewer.png),
  [light theme](../output/playwright/receipt-queues-light.png).
