Archived
Fix major Nearlight deviations from design review
- Expose End conversation + readable draft during connecting/waiting - Stop masking assistant speaking/thinking state in Type/muted modes - Restrict failure diagnosis to real causes (no invented network text) - Replace old blue tint with Rosewood everywhere - Fix transcript short-content bottom-anchor (top-align short histories) - Settings: visible Server URL label, focus on rejected save, edit clears saved confirmation, trim-aware unchanged detection - Task detail: live store lookup with missing-task state - Task rows: status text label restored
This commit is contained in:
1 parent
fa21c81787
commit
f043d6b078
5 files changed
+72
-30
No files matched your search
@@ -14,6 +14,7 @@ struct SettingsView: View {
|
||||
@State private var showVoicePicker = false
|
||||
@State private var urlJustSaved = false
|
||||
@State private var showModelPicker = false
|
||||
@FocusState private var urlFocused: Bool
|
||||
|
||||
init(settings: SettingsStore, session: VoiceSession) {
|
||||
self.settings = settings
|
||||
@@ -60,12 +61,21 @@ struct SettingsView: View {
|
||||
}
|
||||
} header: { Text("Intelligence") }
|
||||
Section {
|
||||
Text("Server URL")
|
||||
.font(.footnote.weight(.semibold))
|
||||
.foregroundStyle(Nearlight.quiet)
|
||||
TextField(SettingsStore.defaultServerURL, text: $urlText)
|
||||
.keyboardType(.URL)
|
||||
.autocorrectionDisabled()
|
||||
.textInputAutocapitalization(.never)
|
||||
.accessibilityLabel("Server URL")
|
||||
.focused($urlFocused)
|
||||
.onAppear { urlText = settings.serverURL }
|
||||
.onChange(of: urlText) { _, _ in
|
||||
// Any edit clears the saved confirmation and error.
|
||||
urlJustSaved = false
|
||||
urlError = nil
|
||||
}
|
||||
.overlay(alignment: .trailing) {
|
||||
if urlJustSaved {
|
||||
Image(systemName: "checkmark.circle")
|
||||
@@ -135,8 +145,10 @@ struct SettingsView: View {
|
||||
urlText = trimmed
|
||||
urlError = nil
|
||||
urlJustSaved = true
|
||||
urlFocused = false
|
||||
case .failure(let error):
|
||||
urlError = error.localizedDescription
|
||||
urlFocused = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -160,7 +172,7 @@ struct VoicePickerView: View {
|
||||
if settings.voiceID == voice.id {
|
||||
Spacer()
|
||||
Image(systemName: "checkmark")
|
||||
.foregroundStyle(HopeStyle.tint)
|
||||
.foregroundStyle(Nearlight.rosewood)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -205,7 +217,7 @@ struct ModelPickerView: View {
|
||||
if activeModelID == model.id {
|
||||
Spacer()
|
||||
Image(systemName: "checkmark")
|
||||
.foregroundStyle(HopeStyle.tint)
|
||||
.foregroundStyle(Nearlight.rosewood)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user