Skip to content

Align calculation interfaces and add independent altitude policies - #31

Merged
Stanback merged 13 commits into
mainfrom
feat/altitude-ui-parity
Oct 20, 2026
Merged

Stanback merged 13 commits into
mainfrom
feat/altitude-ui-parity

Conversation

@Stanback

@Stanback Stanback commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

What changed

Turnmark now uses the same input-first conversion flow and calculation explanations across web, iOS, Android, the widget, and MCP Apps. NCAA remains the default course method; a quiet NCAA/Colorado comparison describes their gap as a method difference. Standards and points assess the original swim. The web gives standards their own row, collapses recent conversions, and separates saved comparisons and reference material.

One Calculation options disclosure groups Course conversion and optional Altitude policy on every interface. The controls remain independent: choose feet/meters and USA Swimming (default) or the pinned NCAA 2026–27 Division I policy. Rust deducts altitude from the original event before course conversion and returns both provenance records. Settings show a compact adjustment preview; details compare the two policies. Native logging retains the actual entered swim. Enabled saved altitude settings restore expanded on both native apps, keeping the adjustment visible. The MCP card requests the calculation through the host and retains its empty network CSP.

The form heading is Your swim, arrival uses direct blank time entry, and the sample button is removed. Altitude fields have consistent grouping and spacing; About has breathing room after history and the reference disclosures no longer stack redundant separators. Shared colors and vector glyphs remain token-driven. Current screenshots replace outdated captures; 45 unreferenced older images are removed.

The documented Colorado SCM/SCY distance-freestyle rule now has an explicit caveat. The regression 4:11.36 SCM 400 free retains its documented Colorado result 3:46.45, with correct 500 yd context; NCAA gives 4:47.30. Coefficients were not silently changed.

This combines and supersedes #29 and #30, including their native automation fixes. The research/model follow-up #24 stays separate and private datasets remain ignored. No npm release is included; SDK 0.2.0 / MCP 0.3.0 remain unreleased source versions.

Validation

  • Rust formatting, clippy with warnings denied, and workspace tests pass.
  • 7,394 source-backed cases pass in Wasm (Node/Chromium), Swift, and Kotlin; the packed SDK passes 106 fixtures in isolated Node/browser consumers.
  • Svelte/TypeScript: zero errors or warnings. All 164 unit/design checks and 62 affected-check selection tests pass.
  • Browser: 47 pass, one desktop-inapplicable skip. Built production runtime: all 21 pass.
  • iOS: all 24 cases pass (7 unit/storage, 17 UI); the complete UI run took 500 seconds, including the 21-second rotation/focus case. The largest-text benchmark also passed three consecutive focused runs. Android: all 27 instrumentation cases pass. Final settings captures pass separately.
  • Packed MCP stdio/HTTP: 79 SDK-equal outcomes and eight malformed requests in each of eight protocol/capability combinations; official AppBridge checks, offline/CSP, cancellation, unit switching, large text, and light/dark checks pass.
  • Fresh simulator/emulator and browser captures inspected; screenshot references resolve. Physical-device and VoiceOver/TalkBack checks remain release work.

The hosted sheet-dismissal scroll-helper failure is corrected by using the stable app viewport instead of stale navigation/tab accessibility frames. Focused Reset, accessibility benchmark, and rotation cases pass locally (17s / 65s / 21s); all target visibility and workflow assertions remain. Converter text replacement now uses its actual Clear time action and verifies the entered string before rotation, avoiding assumptions about caret position.

UI automation disables animation only in DEBUG with its explicit harness environment; production behavior is unchanged. Per-test time bounds prevent runaway simulator idle waits.

Evidence

@Stanback
Stanback disabled auto-merge October 20, 2026 00:56
@Stanback
Stanback enabled auto-merge (squash) October 20, 2026 01:19
@Stanback
Stanback disabled auto-merge October 20, 2026 01:26
@Stanback
Stanback enabled auto-merge (squash) October 20, 2026 01:27
@Stanback
Stanback merged commit 944fa5c into main Oct 20, 2026
16 of 18 checks passed
@Stanback
Stanback deleted the feat/altitude-ui-parity branch October 20, 2026 02:14
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