USB-Meter / Documentation / Issues / 2026-03-24_17-30-catalyst-tabview-freeze.md
Newer Older
40 lines | 2.115kb
Bogdan Timofte authored 2 weeks ago
1
# Issue: macOS Catalyst Navigation Freeze with TabView in MeterView
2

            
3
## Description
4
- Aplicația USB Meter (SwiftUI + Catalyst) se bloca complet la navigarea `NavigationLink` push și la deschiderea modalului `sheet` în mod macOS Catalyst (macOS 26 + Apple Silicon).
5
- Condiții: în detaliu (right pane) existau layout-uri cu tab-uri și paginare.
6

            
7
## Impact
8
- Nu se puteau deschide ferestre modal și nici naviga spre info/settings.
9
- Doar pe Apple Silicon + macOS 26. Intel + Sonoma nu era afectat.
10

            
11
## Root cause
12
- Commit introdus `324f2f8` a adus:
13
  - `TabView` + `PageTabViewStyle` în `MeterView` landscape
14
  - `GeometryReader` intern și `.navigationBarHidden(landscape)`
15
- `PageTabViewStyle` pe Catalyst, în split NavigationView, pare să interfereze cu `UINavigationController` intern, blocând stările de navigare.
16

            
17
## Investigatie și attempts
18
1. `git bisect` => first bad commit `324f2f8`.
19
2. Diagnostic: `PageTabViewStyle` suspect.
20
3. Inițial workaround: `#if targetEnvironment(macCatalyst)` exclude `PageTabViewStyle`.
21
4. Alte modificări încercate: blocare actualizare nav bar ascuns pe Catalyst, reducere BLE churn, diverse pipeline fixes (wireless caching etc.).
22

            
23
## Soluție finală aplicată
24
- În `USB Meter/Views/Meter/MeterView.swift`:
25
  1. Eliminat `PageTabViewStyle` intern (deși nu era principal, s-a migrat la custom tab).
26
  2. `navigationBarHidden(landscape)` folosit doar iOS, nu Catalyst.
27
  3. Înlocuit `Picker(.segmented)` cu tab bar custom `HStack` + `Button` + icon/text, pentru consistență.
28
  4. Mutați datele `MeterInfoView` în tab `Home` (fără buton `info` separat).
29
  5. adaptare portrait/landscape cu `segment` stabil.
30
  6. titlu nav inline să comprime spațiul pe macOS.
31

            
32
## Commit-uri relevante
33
- `ef857c8` - custom tabs + blocker solution
34
- `08a8ff3` - migrat MeterInfo content în Home și eliminat info button
35

            
36
## Verificare
37
- Reproducere: deschide app pe macOS Catalyst Apple Silicon, selectează un meter, comută taburile, deschide history modal; verifică fără blocaje.
38

            
39
## Document location
40
- `Documentation/Issue-Report-Catalyst-TabView-Blocking.md`