Skip to content

✨🧑‍💻 - Allow a decimal keyboard in the shared text field #16

Description

@efraespada

Is there an existing issue or feature request for this?

  • I have searched the existing issues and feature requests.

What area does this improvement affect?

User Interface

What actions does this improvement affect?

No response

Description of the idea or improvement

Add an optional decimal input mode to the controlled text field. Apply the
hint to the native shadow input while retaining the existing text, validation
and native form contracts across all supported consumers.

Current limitations or challenges

The field always uses the regular text keyboard. Domus needs a decimal
keyboard for exact localized task base points in vypdev/domus#111.

Expected impact

Mobile users can enter a decimal amount using their device keyboard.
Applications can continue to parse comma and period separators according
to their own policy, using the same shared field.

Alternatives considered

No response

Version of copilot

No response

Additional context or comments

Owning SDD is specs/shared-ui-foundation.md. The reviewed develop base is
202fe15. CI and Branch Sync passed at
that commit. Preserve the baseline cases and use the four new
decimal-field-C01 through decimal-field-C04 identities from the seed.

Decimal keyboard for controlled text fields

  • Status: Draft
  • Owners: ha-ui maintainers
  • Scope: Opt-in decimal input mode on the shared single-line text field
  • Open decisions blocking readiness: none

1. Executive summary

Consumers can ask the shared text field to suggest the device's decimal keyboard.
The field continues to carry the exact controlled string.

2. Problem, current behavior, and evidence

The shared renderer uses a native text input with no decimal keyboard hint.
Domus task base points need exact localized decimals on mobile in
Domus #111.

3. Actors, surfaces, and terminology

Consumers use direct browser elements or one of the four existing framework
adapters. The decimal mode is a native keyboard hint. The consumer owns
numeric parsing, locale, precision and allowed range.

4. Goals, non-goals, and fixed invariants

Requirement Behavior
decimal-field-R01 Accept an optional decimal input mode in the validated field state and apply it to the internal native text input. Omitted state preserves the existing text input behavior.
decimal-field-R02 Keep exact strings, form values, validation, focus and controlled events. Changing the hint updates the input without resetting its value.
decimal-field-R03 Verify direct and packed framework consumers and release one compatible prerelease cohort for the Domus journey.

5. Current versus proposed product journey

The app opts in through its existing shared field state. A touch user can
enter a local decimal separator. Desktop keyboard input, paste and editing
continue to send the same controlled strings.

6. Functional behavior and state model

Allow the optional typed inputMode: 'decimal' state key. Reflect the
selected hint on the internal input with native inputmode; omit the attribute
when no mode is set. Reject unsupported state values using the existing
field validation. Preserve type="text".

7. User-facing configuration

Each application chooses the field mode and keeps its existing labels,
description, validation and error content.

8. Clean Architecture design

Keep state validation in the framework-neutral field contract. The core
renderer applies the native attribute. Framework adapters forward existing
state and use the same renderer.

9. UI/UX and content contract

The hint targets mobile text entry. Retain the visible label, keyboard focus,
error association, disabled state and native form behavior. A device chooses
the actual keyboard layout.

10. Failure, recovery, and cleanup

Invalid configuration follows existing field errors. Input state changes
retain the controlled value and leave the app's recovery flow in charge.

11. Security, permissions, and privacy

The renderer uses a validated literal attribute. Application authority and
numeric validation remain with the consumer.

12. Observability and operational UX

Confirm the effective mode on the internal input in actual Chromium. Record
the exact packed cohort and application version in adoption evidence.

13. Compatibility, migration, rollout, and rollback

The field key is optional. Existing source and rendered input continue to
work with the field state absent. Publish the reviewed prerelease cohort
through the repository's npm workflow. Applications pin an exact version.

14. Testing strategy and numeric budget

Minimum four distinct cases. Preserve every existing case and alias in the
owning SDD. The following four fully qualified IDs are new.

{{SDD_CASE_BUDGET}}

Case ID Area Requirements Scenario
decimal-field-C01 State contract decimal-field-R01 Omitted state remains valid, decimal is accepted and unsupported values fail through the existing validator.
decimal-field-C02 Browser and form decimal-field-R01, decimal-field-R02 Switch the decimal hint on and off in the real input. The text type, focus, separator and controlled form value survive.
decimal-field-C03 Packed consumers decimal-field-R02, decimal-field-R03 The compiled browser, React, Vue, Angular and Svelte consumers all receive the same native hint and retain controlled edit behavior.
decimal-field-C04 Delivery decimal-field-R03 Validate the exact published package cohort and the consuming Domus task form.

15. Documentation and discoverability

{{SDD_FILE_NAVIGATION}}

Path Change
specs/shared-ui-foundation.md update
docs/field-contract.md update
packages/core/src/field-contracts.ts update
packages/core/src/components/field.ts update

16. Acceptance scenarios

An app opts in and enters 2,25 on an accessible shared field. The input
advertises decimal mode and the controlled app receives the original
string. An existing text field continues to behave as before.

17. Requirements traceability

{{SDD_REQUIREMENT_CASES}}

18. Implementation sequence

Add the validated optional state, map it to the native input, verify packed
consumers, publish the cohort and exercise it in Domus.

19. Definition of Done

Pass the repository's exact-head checks and verify the published cohort in
the scoped Domus workflow.

20. References and decisions

The shared field owns presentation and controlled text. Decimal points
semantics stay in Domus. The existing adapters remain state bridges.

Activity

  1. added
    enhancementNew feature or request
    featureLabel to manage feature branches
    priority: lowLabel to indicate a priority low
    on Nov 11, 2026
  2. added
    state:ai-processingA Copilot agent is analyzing or working on the issue or change.
    on Nov 11, 2026
  3. moved this to Todo in vypdevon Nov 11, 2026
  4. changed the title [-]Allow a decimal keyboard in the shared text field[/-] [+]✨ - Allow a decimal keyboard in the shared text field[/+] on Nov 11, 2026
  5. removed
    state:ai-processingA Copilot agent is analyzing or working on the issue or change.
    on Nov 11, 2026
  6. vypbot commented on Nov 11, 2026

    @vypbot
    Contributor

    Hi! I’m @vypbot, the Copilot assistant for this repository.

    I can answer questions, explain the codebase, propose implementation and test plans, review issues and pull requests for potential bugs or security problems, and help authorized maintainers apply changes.

    Try /copilot help to see the available commands, or mention @vypbot with your question.

  7. efraespada commented on Nov 11, 2026

    @efraespada
    MemberAuthor

    SDD Q1: review seed c8a51fd003e83fda6e34e2fbca596cb97aec91d91bd362eb91807afabcdef0f7

  8. added
    state:ai-processingA Copilot agent is analyzing or working on the issue or change.
    SDDAn SDD update is required before branch work.
    on Nov 11, 2026
  9. 30 remaining items

  10. vypbot commented on Nov 11, 2026

    @vypbot
    Contributor

    Issue closed: synchronization recommendation retired

    No branch synchronization is required for this closed issue.

    The previous recommendation is historical. Issue closure does not certify that the branches are synchronized.

  11. efraespada commented on Nov 11, 2026

    @efraespada
    MemberAuthor

    /copilot sync-branch

  12. added
    state:ai-processingA Copilot agent is analyzing or working on the issue or change.
    and removed
    state:ai-processingA Copilot agent is analyzing or working on the issue or change.
    on Nov 11, 2026
  13. vypbot commented on Nov 11, 2026

    @vypbot
    Contributor

    Branch synchronized

    develop was merged into feature/16-allow-a-decimal-keyboard-in-the-shared-text-field and pushed as f1b00bd2e7f4e99b121a51e545fd8e5cc3a60fef.

    0 verification checks passed.

  14. added
    state:ai-processingA Copilot agent is analyzing or working on the issue or change.
    and removed
    state:ai-processingA Copilot agent is analyzing or working on the issue or change.
    on Nov 11, 2026
  15. added a commit that references this issue on Nov 11, 2026
  16. vypbot commented on Nov 11, 2026

    @vypbot
    Contributor

    Branch synchronization needs attention. Open the current status.

  17. moved this from In Progress to Done in vypdevon Nov 11, 2026
  18. added
    100%Progress: 100%
    and removed
    state:workingWork can proceed on the verified branch or without a branch.
    80%Progress: 80%
    on Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

100%Progress: 100%SDDAn SDD update is required before branch work.branchedThe linked branch and required SDD commit are verified.enhancementNew feature or requestfeatureLabel to manage feature branchespriority: lowLabel to indicate a priority lowsize: XXLLabel to indicate a task of size XXL

Projects

  • Status
    Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions