Skip to content

Latest commit

 

History

History
112 lines (95 loc) · 6.7 KB

issue-109-parameter-rows.md

File metadata and controls

112 lines (95 loc) · 6.7 KB

Issue #109 — Compact parameter rows and required feedback

Validated on 2026-10-20 on Linux, Python 3.14.8 and Chromium. Accepted main: ed2a113 (0.1.0.38); proposed application version: 0.1.0.39.

Scope and decisions

ArgumentEditor.tsx and style.css align each name/enable block with its value, move type metadata beside the name, use an accessible required-only asterisk, bound numeric/select widths to 16rem and string widths to 24rem, and give help 12px top spacing plus bottom padding. Below 600px, values stack beneath their names. Checkbox and name metadata wrap as a unit; editable strings remain whole. Flags have no value field or value heading.

parameterRows.ts projects unambiguous required omissions through the existing validator. LaunchSimulation.tsx lets validation/save/start attempts reveal these rows, clear a hiding search and focus the first omitted input/flag. The existing validation guards still return before requests or launch. Correcting omissions clears their borders and concise, associated error text. Successful validation does not reset search. No defaults are inserted, values coerced or flags invented. Other validation errors retain their existing diagnostics. Explicit empty strings remain supplied string values; invalid numeric strings retain typed diagnostics.

parameterPresentation.ts also searches the displayed integer/string type names. The existing required-first groups, manual rows, exact argv and explicit saved manual-mode bypass are retained. #104 is merged; #107 wording and #108 collapsible collections remain separate work, not prerequisites or implemented subissues. There are no backend, SWSS, storage/schema, solver or historical-record changes.

Checks

  • 28 frontend cases passed: argument parsing, exact argv, presentation/search, required values and flags, absent versus explicit empty strings, aliases, repeats, delimiters, ambiguous/manual tokens, optional unknown defaults and disabled drafts. Two focused cases cover omission projection and displayed types.
  • 16 focused Python parameter/application-version tests passed, with the existing Starlette/httpx deprecation warning. Source tests used PYTHONPATH=src.
  • TypeScript, bundled frontend build, version-policy and whitespace checks passed. Third-party notices are unchanged.
  • Wheel and sdist built externally; a wheel rebuilt from the extracted sdist has identical member names/bytes. Installed assets match the checkout. Python, CLI, API, OpenAPI and browser label report 0.1.0.39. Installed API/assets work with outbound socket connections denied and Git/Node absent from PATH.

Commands used (Node was /usr/lib/chatgpt/resources/cua_node/bin/node):

node_modules/.bin/esbuild frontend/parameters.test.mjs frontend/parameterPresentation.test.mjs frontend/arguments.test.mjs --bundle --platform=node --format=esm --out-extension:.js=.mjs --outdir=/tmp/simshelf-109/tests
node --test /tmp/simshelf-109/tests/*.mjs
PYTHONPATH=src python -m pytest -q -p no:cacheprovider tests/test_application_version.py tests/test_parameters.py
node node_modules/typescript/bin/tsc --noEmit
node frontend/build.mjs
python scripts/application_version.py --base-ref origin/main

Installed browser and execution

Used only a new external workspace generated by tests/fixtures/parameter_list.py. The disposable mixed companion was extended with required --confirm and an integer --queue-zmin; its initial argv was emptied. No scientific sources or owner workspace were used. Local artifacts/screenshots: /tmp/simshelf-109/.

  • Attempting Start with the required integer, float and flag absent revealed all three containers, cleared a search hiding them, focused the first input and left argv empty. Correction removed errors; Space included the flag.
  • Search and saved settings retained 00032 and 1e-3. Successful validation retained the active search. The harmless fixture completed with exit 0 and complete copied-log capture; its record and stdout contained exactly ['--queue-zmin=00032', '--diag-dt=1e-3', '--confirm'].
  • All 77 optional declarations returned after clearing search, with zero required markers or overflowing rows. A 2e-3 edit survived filtering away/back; long comma-separated string text remained editable. Manual rows remained visible.
  • Explicit manual bypass saved successfully with the required flag omitted; reopening retained manual mode and no typed error borders. No bypass launch was performed.
  • Light, Dark, Onyx, Slate and Linen: checked at 1280×1000 and 390×844. Each mixed layout showed exactly three markers and one error when only the required flag was omitted, with no row overflow. Required feedback and keyboard focus remained distinguishable. Long names wrapped beside their checkbox on narrow screens. Labels, aria-invalid, descriptions and focus were inspected; no actual screen reader was used.

Failures and limitations

Sandboxed Node reported file-level results rather than individual cases, and the sandboxed Python TestClient stalled; it was interrupted and focused checks passed outside the sandbox. Initial packaging lacked setuptools; declared build tools were installed only in a disposable environment. The first local-server command used unsupported --no-browser; corrected to --no-open. A search-type test initially matched int in shared help text ("Integration"); isolated fixture help corrected the assertion. Browser checks caught and corrected an unwanted search reset on successful validation and isolated-checkbox wrapping for long names. Pip reported an unavailable cache in the sandbox.

No real scientific solver, GPU workload, Windows/macOS, other browser engine, actual screen reader or exhaustive backend suite was tested. Native one-line text controls scroll long values horizontally; they do not truncate stored text. Build checks reuse installed runtime dependencies through a disposable .pth; this is not clean dependency-resolution certification. No release/publication.

Owner checks

  1. Open New run for a trusted many-parameter simulation. Inspect compact controls, long names, choices and help in your preferred theme at desktop/narrow widths.
  2. With a disposable mixed-required fixture, omit a required value and flag, search them out of view, and attempt validation or Start. Confirm precise borders, focus, no launch and no default insertion; correct each omission.
  3. Search by name, alias, help and type; edit/filter/back and compare Exact argv. Check explicit empty strings, numeric spelling and manual tokens on save/reopen.
  4. Confirm intentional manual mode remains clearly labeled and persists. Review the existing grouping separately from future #107/#108 work. Merge only after owner review; this PR does not authorize publication.