ios: 1.0.15, mixer rows stretch to fill spare height

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Opus 5.5 committed 2026-10-20 14:22:27 -07:00
1 parent e7e4fcc9d6
commit c17d6f174b
2 files changed
+13 -7

No files matched your search

+11 -5
View File
@@ -583,6 +583,9 @@ private struct MixerPanel: View {
let pm = g.playback
let names = pm.stemNames
let stems = pm.source == .Stems
GeometryReader { geo in
// Spread spare height across the rows (stems + master) instead of leaving it all at the bottom.
let rowH = min(62, max(46, (geo.size.height - 80) / CGFloat(names.count + 1)))
ScrollView {
VStack(alignment: .leading, spacing: 0) {
if pm.source == .Original {
@@ -622,19 +625,20 @@ private struct MixerPanel: View {
let levels = stems ? meters.step(pm.engine, names.count) : []
VStack(spacing: 0) {
ForEach(Array(names.enumerated()), id: \.element) { i, name in
StemFader(name: name, setting: pm.mix[name] ?? StemSetting(), level: i < levels.count ? levels[i] : 0, enabled: stems)
StemFader(name: name, setting: pm.mix[name] ?? StemSetting(), level: i < levels.count ? levels[i] : 0, enabled: stems, height: rowH)
}
}
}
p.separator.frame(height: 0.5).padding(.vertical, 6)
FaderRow(dot: nil, label: "Master", percent: Int(pm.master * 100), dim: false) {
FaderRow(dot: nil, label: "Master", percent: Int(pm.master * 100), dim: false, height: rowH) {
FaderSlider(value: pm.master, fill: p.label, onChange: pm.setMaster)
} trailing: { EmptyView() }
Spacer(minLength: 12)
Spacer(minLength: 16)
}
.padding(.horizontal, 24)
}
.scrollIndicators(.hidden)
}
}
}
@@ -665,12 +669,13 @@ private struct StemFader: View {
let setting: StemSetting
let level: Float
let enabled: Bool
var height: CGFloat = 46
@Environment(\.palette) private var p
private var pm: PlaybackManager { AppGraph.shared.playback }
var body: some View {
let color = Color(hex: Stems.color(name))
FaderRow(dot: setting.muted ? p.label3 : color, label: Stems.label(name), percent: Int(stemTaper(setting.level) * 100), dim: setting.muted) {
FaderRow(dot: setting.muted ? p.label3 : color, label: Stems.label(name), percent: Int(stemTaper(setting.level) * 100), dim: setting.muted, height: height) {
VStack(spacing: 0) {
FaderSlider(value: setting.level, fill: setting.muted ? p.label3 : color, detent: StemSetting.unity, enabled: enabled) {
pm.setStemLevel(name, $0)
@@ -702,6 +707,7 @@ private struct FaderRow<Fader: View, Trailing: View>: View {
let label: String
let percent: Int
let dim: Bool
var height: CGFloat = 46
@ViewBuilder let fader: Fader
@ViewBuilder let trailing: Trailing
@Environment(\.palette) private var p
@@ -718,7 +724,7 @@ private struct FaderRow<Fader: View, Trailing: View>: View {
.frame(width: 36, alignment: .trailing)
trailing
}
.frame(height: 46)
.frame(height: height)
}
}
+2 -2
View File
@@ -6,8 +6,8 @@ options:
settings:
base:
SWIFT_VERSION: "5.0"
MARKETING_VERSION: "1.0.14"
CURRENT_PROJECT_VERSION: "15"
MARKETING_VERSION: "1.0.15"
CURRENT_PROJECT_VERSION: "16"
targets:
Stemify:
type: application