Skip to content

Apply Mac OS 9 font system - #3

Open
eliel9012 wants to merge 12 commits into
mainfrom
maos9
Open

Apply Mac OS 9 font system#3
eliel9012 wants to merge 12 commits into
mainfrom
maos9

Conversation

@eliel9012

Copy link
Copy Markdown
Owner

Font review

This PR fixes the Mac OS 9 typography pass. The previous global .mac9Theme() font was not enough because many SwiftUI views explicitly set .system, .headline, .title, .caption, rounded, or monospaced fonts. Those explicit calls override the root environment font.

What changed

  • Forces UIKit appearance early in MeuLabApp.init() so navigation/tab bars pick up the theme before rendering.
  • Uses Charcoal as the standard Mac OS 9 UI font for navigation bars, tab bar labels, app text, chips, cards, and main screen labels.
  • Replaces modern SwiftUI font styles in the visible problem screens: Mais, Bíblia, Clima, and ADS-B.
  • Keeps Apple Garamond available for editorial use, but removes it from default UI titles where it made the app look unlike Mac OS 9 system UI.

Review notes

  • The font files are already registered through UIAppFonts and included in the Xcode resources.
  • Charcoal.ttf resolves to PostScript name Charcoal; Geneva.ttf resolves to GenevaPlain; Apple Garamond names also resolve correctly.
  • Remaining SF Symbols still use system glyph rendering by design; text labels around them now use Mac OS 9 typography tokens.

Verification

  • xcodebuild -project MeuLabApp.xcodeproj -scheme MeuLabApp -destination 'generic/platform=iOS' build\n- Build succeeded.\n\n### Secret safety\n- No .env, tokens, Secrets.plist, Secrets.xcconfig, or Swift secrets were staged.

@eliel9012 eliel9012 left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Font review:

  • Good direction: the fix addresses the actual root cause. SwiftUI root .font(...) does not override explicit child calls like .font(.system(...)), .font(.headline), .font(.title3), etc. Replacing those in the visible screens is necessary.
  • The Mac OS 9 default UI font should be Charcoal for the app chrome and controls. Apple Garamond should stay limited to editorial/display moments, not global UI titles. This PR now follows that.
  • UIKit appearance is now applied in MeuLabApp.init(), which is important for navigation/tab bars because appearance proxies need to be configured before the relevant UIKit views are created.
  • Font registration looks correct: UIAppFonts includes Charcoal/Geneva/Apple Garamond and the PostScript names used by MacOS9Typography match the bundled files.
  • Residual risk: SF Symbols still render with Apple system glyphs. That is expected unless custom bitmap/classic icons are introduced later. Text around those icons now uses the Mac OS 9 typography tokens.

Build verified with generic iOS destination.

@eliel9012

Copy link
Copy Markdown
Owner Author

Update after layout review:

  • Reworked Mais to remove the excessive top gap by replacing the nested NavigationStack with a compact Mac OS 9 header and tighter list rows.
  • Compacted the Bible screen: smaller header, tighter segmented control spacing, reduced book-card height, smaller book typography, and denser testament sections.
  • Reworked visible System UI to match the rest of the Mac OS 9 pass: Charcoal typography tokens, square segmented selector, square info chips/cards, reduced gauge-card bulk, no rounded modern segmented capsule in the top selector.
  • Removed remaining modern SwiftUI font styles from SystemView, BibleView, BibleNavigateView, and the menu view.

Verification: xcodebuild -project MeuLabApp.xcodeproj -scheme MeuLabApp -destination 'generic/platform=iOS' build passed.\n\nSecret scan: staged diff had no .env, token, bearer, API key, password, or secret hits.

@eliel9012

Copy link
Copy Markdown
Owner Author

Atualizei este PR com foco no problema de abertura lenta e fonte da Rádio/SDR.

  • Launch: removi refresh forçado imediato no bootstrap.
  • Rede: push/feed agora começam depois de 20s, não junto com a primeira tela.
  • API: timeout caiu para 4s request / 8s resource para não travar tanto quando backend/cert falha.
  • ADS-B extras: history/alerts/tuya/metrics só rodam depois de haver dados ADS-B básicos.
  • Rádio/SDR: troquei fontes hardcoded .system/.headline/.caption para MacOS9Typography.

Validação: xcodebuild -project MeuLabApp.xcodeproj -scheme MeuLabApp -destination 'generic/platform=iOS' build passou.
Commit: b79e7cc

Eliel Felipe Junior and others added 2 commits August 13, 2026 17:27
Ports the feature changes from codex/ia-dashboard-weather onto the Mac OS 9
redesign:

- Delete the RemoteRadio (SDR) and Alertas features entirely (views, view
  model, models, API/WebRTC clients) from both the main app and Watch
  targets, plus all menu/tab/switch references in ContentView,
  EnhancedContentView, iPadSplitView, and the Watch content views.
- Redirect OpenAlertInMeuLabIntent and IntelligenceView's "Abrir Alertas"
  affordances to the ADS-B tab instead of the removed Alerts tab.
- Add a Mac-OS-9-styled EmptyStateCard to StatCard.swift so
  RemoteControlView's empty state keeps working after AlertsView.swift
  (which used to host it) is gone.
- Remove the Mac Mini node picker and content from SystemView, leaving only
  the Pi5 telemetry (AppState's macMini* plumbing is left in place since
  nothing else depends on removing it).
- Add TesouroReservaView and ViagemView as new "Mais" menu screens,
  restyled with the MacOS9 design system (MacOS9Panel/Screen/TitleBar/
  Typography/Colors) while keeping all calculation logic (TREngine, BCB
  Selic loaders, tax brackets) and all trip itinerary content verbatim.
- Register both new screens in project.pbxproj and the tab enum.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ghosted/doubled text on Tesouro Reserva, Viagem, and the Mac OS 9
stat-card/button components: several call sites applied .shadow()
to a whole content-bearing container (text included) instead of to
the background shape alone. With radius:0 and an opaque dropShadow
color, SwiftUI renders a hard-edged duplicate silhouette of every
glyph underneath the real one — i.e. exactly the doubled-text look.
Fixed by scoping each shadow to its background layer, matching the
pattern the design system's own mac9Panel()/mac9Window() modifiers
already used correctly. Also removed the one MacOS9Typography.bodyBold
synthetic-bold (.weight(.bold) on a custom font with no real bold
face), which was contributing to the same ghosting.

Aircraft photos ("Sem foto disponível" everywhere): same root cause
already fixed on codex/ia-dashboard-weather — PlaneSpotters.net now
rejects requests without a descriptive User-Agent. Applied the same
fix to this branch's copy of AircraftPhotoView (embedded in
ADSBView.swift — the standalone Components/AircraftPhotoView.swift
and PlaneSpottersView.swift were dead files, never registered in the
Xcode project) and removed those two orphaned duplicates.

Finished the notification-backlog fix that was left uncommitted when
the previous session hit its usage limit mid-task.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant