chore: snapshot uncommitted local work before rebasing onto cloud-agent

Safety commit so the 94 uncommitted files in the working tree (in-flight
Account/Mac/Tip work plus the feature-preview recording tooling) survive the
move onto cursor/cloud-agent-1787824905651-vxuwc.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-01 11:28:07 -07:00
co-authored by Claude Opus 5
parent 39002336c0
commit 5d51c5bf77
101 changed files with 3629 additions and 1354 deletions
+37 -14
View File
@@ -172,7 +172,8 @@ struct BottomDictationBar: View {
recordControl
}
.padding(.horizontal, Spacing.md)
.padding(.vertical, Spacing.xs)
.padding(.top, Spacing.xs)
.padding(.bottom, Spacing.sm)
// No surface fill — the mic bar sits on the page background so Home
// stays flat and the canvas above can stay shorter without a second
// floating card competing for height.
@@ -219,12 +220,9 @@ struct BottomDictationBar: View {
.foregroundStyle(palette.textTertiary)
}
.font(MacSettingsType.control)
.padding(.horizontal, Spacing.sm)
.padding(.horizontal, Spacing.md)
.frame(minHeight: MacMetrics.settingsControlHeight)
.background(
palette.surfaceElevated,
in: RoundedRectangle(cornerRadius: Radius.medium, style: .continuous)
)
.background(palette.surfaceElevated, in: Capsule())
}
.menuStyle(.borderlessButton)
.fixedSize()
@@ -247,16 +245,24 @@ struct BottomDictationBar: View {
.animation(Motion.quick, value: viewModel.isRecording)
}
/// 胶囊按钮内、麦克风右侧的快捷键指引:「⌥ 按住 Option」。
private var optionHoldHint: some View {
HStack(spacing: Spacing.xxs) {
Image(systemName: "option")
.font(.system(size: 12, weight: .semibold))
Text(MacL10n.string("mac.hint.holdOption.compact", language: lang))
.font(TypeStyle.caption)
.lineLimit(1)
}
.foregroundStyle(palette.textOnAccent.opacity(0.9))
.fixedSize()
.accessibilityElement(children: .combine)
}
private var recordButton: some View {
Button(action: viewModel.toggleRecording) {
ZStack {
Circle()
.fill(viewModel.isRecording ? palette.recordRed : palette.accent)
.frame(width: 52, height: 52)
.shadow(
color: (viewModel.isRecording ? palette.recordRed : palette.accent).opacity(0.35),
radius: pulse ? 10 : 5
)
// 胶囊按钮:左侧麦克风(录音时为波形),右侧「按住 Option」提示。
HStack(spacing: Spacing.sm) {
Group {
if viewModel.isRecording {
MiniWaveform(level: viewModel.audioLevel, barCount: 4, tint: palette.textOnAccent)
@@ -266,8 +272,25 @@ struct BottomDictationBar: View {
.foregroundStyle(palette.textOnAccent)
}
}
.frame(width: 24)
.transition(.opacity.combined(with: .scale(scale: 0.7)))
if !viewModel.isRecording {
optionHoldHint
.transition(.opacity.combined(with: .move(edge: .trailing)))
}
}
.padding(.horizontal, Spacing.md)
.frame(height: 52)
.background(
(viewModel.isRecording ? palette.recordRed : palette.accent),
in: Capsule()
)
.shadow(
color: (viewModel.isRecording ? palette.recordRed : palette.accent).opacity(0.35),
radius: pulse ? 10 : 5
)
.contentShape(Capsule())
}
.buttonStyle(.plain)
.disabled(viewModel.isProcessing)