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

agama-project / agama / 24571401158

17 Apr 2026 02:51PM UTC coverage: 71.924%. First build
24571401158

push

github

web-flow
refactor(web): migrate SoftwarePatternsSelection to TanStack Form (#3389)

## Summary

This PR transforms `SoftwarePatternsSelection` from a **page of
checkboxes** into a **real, declarative form driven by TanStack Form**,
making it consistent with how other areas of the app manage settings.
Users can now interact with multiple patterns and submit changes
explicitly with **Accept** or discard them with **Cancel**, rather than
triggering backend updates on every toggle.

This is the first step in a broader **Software area revamp**, laying the
foundation for future improvements in UX consistency and visibility of
selected patterns.

Key benefits:
- **Consistent UX**: Behaves like other forms, avoiding surprises and
making interaction predictable.
- **Reliable submission**: Only patterns that users actually touched are
included in the backend update.
- **Maintainable code**: TanStack Form simplifies state management,
validation, and submission logic.


## Why
Before this change, the software patterns selection was a list of
checkboxes acting like switches: **every toggle immediately called the
backend**, triggering a software progress overlay and **blocking user
interaction until the request completed**. This made user interaction
slow and frustrating.

With this migration:
- Users can make multiple selections and submit once.
- The form tracks which patterns were touched, so only intentional
changes are applied.
- The UI now behaves consistently with other forms in the app,
supporting proper validation, submission, and completion logic.

Under the hood, each pattern is a separate form field, enabling precise
tracking and ensuring correct behavior on save.

## Under the Hood
This PR also brings improvements for developers and the broader Software
area:
- **Reusable `usePristineSafeForm` hook**: Detects untouched forms and
skips unnecessary business logic, available for other forms across the
app.
- **Extracted utilities (`utils/software.ts`)**: Grouping,... (continued)

3716 of 6024 branches covered (61.69%)

Branch coverage included in aggregate %.

71 of 72 new or added lines in 3 files covered. (98.61%)

13740 of 18246 relevant lines covered (75.3%)

81.1 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.67
/web/src/components/software/SoftwarePatternsSelection.tsx


Source Not Available

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