Skip to content

Add Create request form with Tailwind and safe workspace persistence - #13

Merged
flankero-dev merged 2 commits into
mainfrom
feat/create-request
Oct 16, 2026
Merged

flankero-dev merged 2 commits into
mainfrom
feat/create-request

Conversation

@flankero-dev

@flankero-dev flankero-dev commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Users can now create a request directly from the queue instead of preparing/importing JSON. New request opens a responsive, keyboard-accessible form; successful creation persists to the existing browser workspace and links to the existing request detail view.

Behavior and approach

  • Required title, customer, category and description; existing priority/assignee fields, with Open/Normal/Unassigned defaults.
  • Existing filters, saved views and sort remain intact. The queue selects the new request's actual page when it matches; confirmation explains when filters hide it.
  • A pure typed domain operation checks validation, duplicate IDs and the existing snapshot schema/count/UTF-8 limits.
  • The existing workspace setter gains opt-in persistence-before-commit for creation. Quota errors and stale tabs retain the draft and do not announce success or overwrite the saved copy.
  • Tailwind 4.3 is limited to prefixed utilities for the new flow. Preflight is omitted; existing typography and controls retain their cascade. No artificial network/loading state.
  • Local Node/SQLite creation uses the existing explicit Server snapshot PUT with ETag checks; no server endpoint/schema migration.

Before / after

Previously, requests could only be added by restoring JSON. Now the queue has a complete create/validate/save/confirm/open flow.

Desktop form Mobile form
Desktop Mobile

Before desktop · Invalid · Success · Storage error

Limited UX polish

The confirmation now makes the request title primary (23 px/600), followed by customer/priority and the full labelled ID in 12 px secondary text. IDs, storage, import/export and request links are unchanged. Invalid keyboard focus matches the red error border while retaining the existing 3 px outline and offset; valid focus stays green.

A separate adversarial browser pass checked 200-character/unbroken and Ukrainian titles at 320, 390, 639, 640 and 1440 px, full ID availability, unchanged persisted records after reload, keyboard View request, Escape/reopen and no horizontal overflow. All three browser suites and all 48 unit/integration tests were rerun. This is review by the implementation agent, not an external human review.

Desktop success · Mobile success · Desktop error/focus · Mobile error/focus

Design

No Figma file or handoff was created: no connected Figma editing/workspace capability was available. Exact design specification documents desktop/mobile geometry, states, tokens and CSS decisions.

Validation

Local Node 24 / Chromium 153:

  • 48 unit/integration tests, strict TypeScript, formatting, ESLint and production build passed.
  • Existing production-browser regression suite passed.
  • 8 creation browser scenario groups passed: validation/focus, filters/reset/round-trip, quota/retry, two tabs, event timing, ID collision, record cap and 320–1440px layout.
  • Separate production review checked hostile text, UTF-8 size rejection, corrupt-storage recovery and static-host creation/reload with zero API calls.
  • Seven axe scans found no violations. Incomplete native-control contrast checks were supplemented with actual computed-color checks.
  • Eight pre-existing interface selectors retained the baseline's computed typography/colors/padding/borders.

QA report, regressions, limitations and interview questions

Known limits / release

Safari/Firefox, physical mobile keyboards and human screen-reader sessions remain unverified. localStorage's existing optimistic guard is not an atomic cross-tab compare-and-swap; the local API retains transactional revision checking. This is not an external human review or certified accessibility audit.

Recommendation: READY TO MERGE. All local checks passed. GitHub Actions passed for new head 9657438a527d2426254e3c4346bb7e9a94af92a3: branch run and PR run, including production-browser tests and screenshot artifacts. Do not merge or deploy without the owner's separate approval. Public demo, CV and Merchant Listing Preflight are unchanged.

Separate Next.js assessment — not started

A further example is justified only if it demonstrates server rendering, route-level data loading and metadata beyond the two current client-side tools. A small public incident/status site with server-rendered incident detail pages would differ materially from another dashboard or landing page. It remains a separate proposal requiring a concrete brief and approval; no new repository or project was created.

Release — 16 October 2026

Squash-merged as 82040360a91730f2f82436cc617fdc6e099e7f71 after verifying the approved head 9657438a527d2426254e3c4346bb7e9a94af92a3 and both successful Checks. GitHub Pages deployment succeeded at 17:03 UTC (20:03 Kyiv), and main Checks succeeded. Public URL: https://flankero-dev.github.io/support-desk-workbench/ . The public JS asset SHA-256 matches the tested production build (2d9dcfcc0db022796df307170a7adaddf284830804e9d9f6205b5f5a8ffbb264).

Post-deploy status: PARTIALLY VERIFIED, not a complete public end-to-end pass.

  • VERIFIED on the real public site: New request button and desktop form; four empty-form validation errors and first-field focus; Escape closes without saving; search; combined status/priority/assignee filters; newest ordering (actual row timestamps); JSON export download and success notice; restore dialog opens; no desktop horizontal overflow at 1348 px.
  • No application-origin JavaScript errors observed during this limited pass. Cloud Browser extension metadata errors were present and are not represented as application errors.
  • UNVERIFIED on the public deployment: isolated clean-profile end-to-end create/success/full-ID/View request/reload; mobile; saved-view persistence; JSON reimport round trip; unexpected localhost/API network traffic. Cloud Browser exposes no clean-context or viewport/network control; the separate clean Chromium attempt stopped at ERR_CERT_AUTHORITY_INVALID before loading the site. No TLS protections were bypassed. No saved workspace records or views were changed. Local/CI browser results are not substituted for these missing public checks.

Manual completion: use a new private browser window; test desktop and 390 px viewport; submit empty then valid form; verify title/full ID, View request and persistence after reload; save/reapply a view; export/reimport JSON in that disposable profile; inspect Console and Network for application errors and localhost/127.0.0.1/[::1] requests. CV and other projects remain unchanged.

@flankero-dev
flankero-dev marked this pull request as ready for review October 16, 2026 16:27
@flankero-dev
flankero-dev merged commit 8204036 into main Oct 16, 2026
2 checks passed
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