Skip to content

feat: add naked field - #67

Draft
leoafarias wants to merge 8 commits into
mainfrom
feat/naked-field
Draft

feat: add naked field#67
leoafarias wants to merge 8 commits into
mainfrom
feat/naked-field

Conversation

@leoafarias

@leoafarias leoafarias commented Jul 13, 2026

Copy link
Copy Markdown
Member

Summary

  • adds a TextField-first NakedField scope whose canonical label, description, required, validation, error, enabled, and read-only metadata land on the native text-field semantics node
  • keeps validation execution, touched/dirty state, and submission policy consumer-owned
  • makes initial errors discoverable but not live; each later changed non-empty error is introduced exactly once after a completed semantics update
  • adds the canonical fixture, docs, integration/accessibility coverage, target screenshots, and an approved pinned-Linux golden
  • keeps generic-control composition deferred and unexported

Active contract: https://github.com/btwld/naked_ui/blob/feat/naked-components-foundation/plan/phases/03-field.md

Review and simplification

Independent review rejected extra production listener machinery after reproducing the real web failure as stale test-input attachment. The production implementation remains small and Flutter-owned; the test now refocuses the editable control before the second transition and records completed semantics updates directly. Cleanup is idempotent and the final RTL fixture scopes only English explanatory copy LTR while Arabic Field metadata remains RTL.

Verification

  • exact head: c1a8073a4312217b1439e4217c6945a0a720b033
  • Flutter 3.41.0, 3.41.2, and 3.44.6 compatibility matrices pass; fatal-info analysis is clean
  • exact hosted primary/minimum jobs: 633 package tests pass with 3 documented external-integration skips; 22 example tests pass, including the committed Field golden
  • focused Field semantics: 11 pass; focused Field integration: 5 pass; screenshot smoke: 7 pass
  • aggregate flutter-tester integration: 98 pass with 1 documented Tooltip skip
  • all seven exact-head hosted checks pass: minimum Flutter, primary tests, flutter-tester, real macOS, pinned web, Android API 34, and PR-title validation

Reviewed visual evidence

Artifact Result SHA-256
naked_field__invalid.png Approved pinned Ubuntu golden; exact-head CI compares unchanged 259aa87e0a010bc00d8cbaa8dfafa71581f6a675bc9420a8ae3dba24f36f7b35
field__required_invalid__macos__reference.png Reviewed at exact head; complete invalid state, no clipping b502e06c2d61cf1734e4294e1a3be3dbc24fab61783d0fe8b061fb2adacaf720
field__rtl__macos__reference.png Reviewed at exact head; English prose LTR, Arabic label/description/error and control RTL 78e1bd9d505e136a0e60e46afaba38f0f88670e8adccd4df9da2efe0659c5e3d
field__disabled_readonly_200__android__reference.png Reviewed at exact head/API 34/200%; both states remain fully visible 247dc12b2725bc102625438b1f8ff644ca4cd29b27e7fd02f8e66f81777c8d50

Remaining blockers before accessibility closure

  • VoiceOver, TalkBack, headed Chrome accessibility-tree, and release-level iOS sessions remain unrun and are not inferred from automated semantics.
  • No merge is requested until the maintainer reviews those explicit manual gates.

D-08/D-09 are implemented as approved. Generic-field control composition remains deferred and unexported.

@github-actions

Copy link
Copy Markdown
Contributor

LCOV of commit 47739f8 during Flutter CI #242

	(use "lcov --ignore-errors deprecated,deprecated ..." to suppress this warning)
Reading tracefile /tmp/__zgosalvez_github-actions-report-lcov/lcov.info.
Summary coverage rate:
  source files: 23
  lines.......: 91.0% (2310 of 2539 lines)
  functions...: no data found
  branches....: no data found
Message summary:
  1 warning message:
    deprecated: 1

Files changed coverage rate:
  	(use "lcov --ignore-errors deprecated,deprecated ..." to suppress this warning)
                                                                   |Lines       |Functions  |Branches    
  Filename                                                         |Rate     Num|Rate    Num|Rate     Num
  packages/naked_ui/lib/src/naked_field.dart                       |91.8%    146|    -     0|    -      0
  packages/naked_ui/lib/src/naked_textfield.dart                   |89.5%    459|    -     0|    -      0

@github-actions

Copy link
Copy Markdown
Contributor

LCOV of commit c1a8073 during Flutter CI #244

	(use "lcov --ignore-errors deprecated,deprecated ..." to suppress this warning)
Reading tracefile /tmp/__zgosalvez_github-actions-report-lcov/lcov.info.
Summary coverage rate:
  source files: 23
  lines.......: 91.0% (2310 of 2539 lines)
  functions...: no data found
  branches....: no data found
Message summary:
  1 warning message:
    deprecated: 1

Files changed coverage rate:
  	(use "lcov --ignore-errors deprecated,deprecated ..." to suppress this warning)
                                                                   |Lines       |Functions  |Branches    
  Filename                                                         |Rate     Num|Rate    Num|Rate     Num
  packages/naked_ui/lib/src/naked_field.dart                       |91.8%    146|    -     0|    -      0
  packages/naked_ui/lib/src/naked_textfield.dart                   |89.5%    459|    -     0|    -      0

@github-actions

Copy link
Copy Markdown
Contributor

LCOV of commit 9bf0747 during Flutter CI #245

	(use "lcov --ignore-errors deprecated,deprecated ..." to suppress this warning)
Reading tracefile /tmp/__zgosalvez_github-actions-report-lcov/lcov.info.
Summary coverage rate:
  source files: 23
  lines.......: 91.0% (2322 of 2551 lines)
  functions...: no data found
  branches....: no data found
Message summary:
  1 warning message:
    deprecated: 1

Files changed coverage rate:
  	(use "lcov --ignore-errors deprecated,deprecated ..." to suppress this warning)
                                                                   |Lines       |Functions  |Branches    
  Filename                                                         |Rate     Num|Rate    Num|Rate     Num
  packages/naked_ui/lib/src/naked_field.dart                       |92.3%    155|    -     0|    -      0
  packages/naked_ui/lib/src/naked_textfield.dart                   |89.6%    462|    -     0|    -      0

@leoafarias
leoafarias marked this pull request as draft July 14, 2026 00:56
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