IceCubesApp

Dimillian/IceCubesApp

Generated 2026-08-10T10:25 UTC · CLI v0.4 · static + captured-layout pass · 424 Swift files

B0
Fold-Ready score
B · Ready

A passing grade for the 7.8in inner display. One structural gap pulls the score down: navigation runs on stacked tabs, so the inner display won't gain a sidebar. Worth fixing before launch — see the roadmap.

Risklow
Est. port214h
Findings37

Check breakdown

7 checks · weighted

Adaptive

w 0.22
93

34 hardcoded frames · 6 UIScreen.main.bounds reads across 424 files

ParallelView

w 0.08
100

Parallel View not blocked · w 0.10

Sidebar

w 0.25
40

0 NavigationSplitView · 0 sidebar opt-ins · 31 stacks

Scene

w 0.15
100

SwiftUI @main App scene · w 0.10

Adaptive geometry

w 0.12
30

0 fold-state reads · 5 adaptive geometry

State

w 0.08
70

0 @SceneStorage · 0 restoration · 42 view models

SwiftUI

w 0.10
91

265 SwiftUI files · 26 UIKit files

Findings

sample · 12 of 37 rows
Blocking9Minor3Leading checkAdaptive geometry · 30
SeverityCheckFindingLocation
MajorNavigationNavigationStack without NavigationSplitView: the list/detail panes will not gain a sidebar on the inner display.TimelineTab.swift
MajorNavigationNavigationStack without NavigationSplitView: the list/detail panes will not gain a sidebar on the inner display.MessagesTab.swift
MajorNavigationNavigationStack without NavigationSplitView: the list/detail panes will not gain a sidebar on the inner display.ProfileTab.swift
MajorNavigationNavigationStack without NavigationSplitView: the list/detail panes will not gain a sidebar on the inner display.ExploreTab.swift
MajorNavigationNavigationStack without NavigationSplitView: the list/detail panes will not gain a sidebar on the inner display.SettingsTab.swift
MajorNavigationNavigationStack without NavigationSplitView: the list/detail panes will not gain a sidebar on the inner display.MediaUIView.swift
MajorAdaptive layoutUIScreen.main.bounds is a fixed geometry read; use the scene coordinate space.SceneDelegate.swift:11
MajorAdaptive layoutUIScreen.main.bounds is a fixed geometry read; use the scene coordinate space.SceneDelegate.swift:12
MajorAdaptive layoutUIScreen.main.bounds is a fixed geometry read; use the scene coordinate space.SceneDelegate.swift:44
MinorAdaptive layoutHardcoded frame (width and height literals) will not reflow on the 7.8 inch inner display.AboutView.swift:35
MinorAdaptive layoutHardcoded frame (width and height literals) will not reflow on the 7.8 inch inner display.TagChartView.swift:26
MinorStateNo explicit scroll/selection state preservation. A fold transition can rebuild the view hierarchy; state held only in views is lost.app-wide

Remediation roadmap

ordered by effort · total 214h
01

SwiftUI / UIKit boundary

Box the 26 UIKit files behind representable wrappers so the foldable renderer treats them as one surface.

6hcum 6h
02

Parallel View verification

Capture inner-display layouts at 7.8in on a device and confirm the opt-in holds for every tab.

8hcum 14h
03

State preservation

Add @SceneStorage and scenePhase restoration across the 42 view models so the fold keeps every scroll position.

24hcum 38h
04

Adaptive layout pass

Resolve the 34 hardcoded frames and 6 UIScreen.main.bounds reads to the scene coordinate space.

38hcum 76h
05

Adaptive geometry pass

Add size-class reads and respond to didUpdateEffectiveGeometry across the 5 adaptive sites so the layout reflows, not letterboxes, on wide canvases.

42hcum 118h
06

Sidebar & adaptive navigation

Replace the 31 stacked tabs with NavigationSplitView and a sidebar opt-in — the single largest lift, and the one that earns the featured look on the inner display.

96hcum 214h

Port plan

generated by the FoldReady CLI · dry run

Ready-to-review changes that move this app toward the foldable contract: scene lifecycle, Parallel View opt-in, sidebar navigation. Review each diff, download a patch, or apply them locally with the CLI.

REVIEWUIScene lifecycle · 0 filesguidance
REVIEWReplace UIScreen.main.bounds · 0 filesguidance
REVIEWRoot NavigationStack → NavigationSplitView · 28 filesPatch ↓
MANUALState preservation across fold transitions · 0 filesguidance
MANUALDe-hardcode fixed frames · 0 filesguidance
git clone https://github.com/Dimillian/IceCubesApp && foldready port IceCubesApp --apply --tiers r

Clones the repo and runs the safe + review transforms, then re-scores.

Fixed these? Re-run the audit.

The CLI re-scans your source tree and re-scores in minutes — the roadmap above is the exact checklist.