• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

agama-project / agama / 27410302362
80%
master: 83%

Build:
Build:
LAST BUILD BRANCH: busy_state_calc
DEFAULT BRANCH: master
Ran 12 Jun 2026 10:36AM UTC
Jobs 1
Files 683
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 Jun 2026 10:33AM UTC coverage: 79.671% (-0.4%) from 80.079%
27410302362

push

github

web-flow
refactor(web): migrate formattable device form to TanStack Form (#3610)

## Motivation

The storage [partition
form](https://github.com/agama-project/agama/pull/3603) and [logical
volume form](https://github.com/agama-project/agama/pull/3609) were
previously migrated to TanStack Form. This PR completes the series by
migrating `FormattableDevicePage`, the last of the three storage forms,
onto the same shared infrastructure.

## Summary

- Migrates `FormattableDevicePage` to a TanStack Form-based form under
`storage/formattable-device-form/`. The old page held its state in four
separate `useState` hooks and kept the filesystem selector in sync with
the mount point through a manual effect (`useAutoRefreshFilesystem`)
that the form switched on and off. The new form derives the filesystem
options from the committed mount point and only auto-resets the
selection when it becomes incompatible, like the other two forms.
- This is the simplest of the three storage forms: there is no
partition/logical volume selector (the whole device is always used) and
no size fields, so the "current filesystem" comes from the device
itself.
- Reuses the shared building blocks from `storage/shared/`
(`MountPointField`, `FilesystemSelector`, `FilesystemAdditionalFields`),
the shared validation helpers, and the shared transformation helpers. No
changes to the shared components were needed.
- Deletes the old `FormattableDevicePage.tsx` and points the
format-device route at the new form.

<img width="2048" height="1536" alt="localhost_8080_ - 2026-06-11T010642
852"
src="https://github.com/user-attachments/assets/9146a38a-b41c-4508-90f3-311916aa01cf"
/>

## Implementation notes

- **Same patterns as the sibling forms:** `withFrozenQuery` for refetch
protection, `useFormSubmit` for the submit lifecycle, submit-only
validation using the `shake()` pattern, and the committed mount point
pattern via the shared `MountPointField`.
- **The form directory follows the module layout from
`for... (continued)

4703 of 6574 branches covered (71.54%)

Branch coverage included in aggregate %.

129 of 130 new or added lines in 9 files covered. (99.23%)

108 existing lines in 2 files now uncovered.

16166 of 19620 relevant lines covered (82.4%)

109.92 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
92.59
web/src/components/storage/formattable-device-form/Form.tsx

Coverage Regressions

Lines Coverage ∆ File
54
0.0
-38.41% web/src/components/core/SelectTypeaheadCreatable.tsx
54
0.0
-45.31% web/web/src/components/core/SelectTypeaheadCreatable.tsx
Subprojects
ID Flag name Job ID Ran Files Coverage
1 web 27410302362.1 12 Jun 2026 10:36AM UTC 683
79.67
GitHub Action Run
Source Files on build 27410302362
  • Tree
  • List 683
  • Changed 10
  • Source Changed 3
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #27410302362
  • e6d1f115 on github
  • Prev Build on feature-storage-forms (#27406801126)
  • Next Build on feature-storage-forms (#27418977014)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc