feat: Implement startup retry mechanism for custom stations and equalizer persistence

- Added state management for startup retry and custom station handling in `EstadoRadio`.
- Created tasks for implementing strict TDD with RED tests for HTTP failure retries and EQ persistence.
- Developed verification report to ensure compliance with TDD practices.
- Introduced fake services for testing, including `FakeServicioAudio`, `FakeServicioFavoritos`, and `FakeServicioRadio`.
- Implemented widget tests for `PantallaInicio` and `PantallaFavoritos` to validate UI behavior with custom stations.
- Enhanced `ServicioRadio` to support host rotation and retry logic for API calls.
- Established a new configuration file to enforce project constraints and testing rules.
This commit is contained in:
Javier Bautista Fernández
2026-04-27 17:34:04 +02:00
parent 922b3b4859
commit d579a0e107
21 changed files with 1902 additions and 156 deletions

64
openspec/config.yaml Normal file
View File

@@ -0,0 +1,64 @@
schema: spec-driven
context: |
Tech stack: Flutter/Dart app for Android+iOS.
Architecture: Provider/ChangeNotifier with Spanish domain folders: estado, modelos, pantallas, servicios, widgets.
Testing: flutter_test via `flutter test`; Strict TDD enabled.
Style: flutter_lints via analysis_options.yaml; use flutter analyze and dart format.
Constraint: never run flutter build after changes.
strict_tdd: true
testing:
strict_tdd: true
detected: 2026-04-27
test_runner:
framework: flutter_test
command: flutter test
layers:
unit:
available: true
tool: flutter_test
integration:
available: false
tool: null
e2e:
available: false
tool: null
coverage:
available: true
command: flutter test --coverage
quality_tools:
linter:
available: true
command: flutter analyze
type_checker:
available: true
command: flutter analyze
formatter:
available: true
command: dart format .
rules:
proposal:
- Include rollback plan for risky changes
- Identify affected modules/packages
specs:
- Use Given/When/Then format for scenarios
- Use RFC 2119 keywords
design:
- Include architecture decisions with rationale
tasks:
- Group tasks by phase
- Use hierarchical numbering
- Keep tasks small enough to complete in one session
apply:
- Follow existing code patterns and conventions
- Strict TDD Mode is active
- Never run flutter build
verify:
- Run tests if possible
- Compare implementation against every spec scenario
- Never run flutter build
archive:
- Persist final state to Engram and openspec