4 Commits

Author SHA1 Message Date
a8e765e026 web: cell colors and fonts tweak 2026-05-15 01:14:56 -07:00
29c6dce0e5 ios: show provider/model in subtitle 2026-05-09 21:19:34 -07:00
5855b7edb8 ios: keyboard dismissal behavior 2026-05-09 20:49:27 -07:00
ac6d55f617 ios: 1.9 2026-05-06 22:35:00 -07:00
4 changed files with 44 additions and 17 deletions

View File

@@ -24,8 +24,8 @@ targets:
GENERATE_INFOPLIST_FILE: YES
INFOPLIST_FILE: Apps/Sybil/Info.plist
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
MARKETING_VERSION: 1.7
CURRENT_PROJECT_VERSION: 8
MARKETING_VERSION: 1.8
CURRENT_PROJECT_VERSION: 9
INFOPLIST_KEY_CFBundleDisplayName: Sybil
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption: NO
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents: YES

View File

@@ -219,6 +219,11 @@ struct SybilQuickQuestionView: View {
}
private func submitQuestion() {
guard viewModel.canSendQuickQuestion else {
return
}
promptFocused = false
_ = viewModel.sendQuickQuestion()
}
}

View File

@@ -232,13 +232,7 @@ struct SybilWorkspaceView: View {
HStack(spacing: 14) {
workspaceNavigationLeadingControl
Text(viewModel.selectedTitle)
.font(.sybil(size: 16, weight: .semibold))
.foregroundStyle(SybilTheme.text)
.lineLimit(1)
.minimumScaleFactor(0.78)
.frame(maxWidth: .infinity, alignment: .leading)
.multilineTextAlignment(.leading)
customWorkspaceNavigationTitle
workspaceNavigationTrailingControl
}
@@ -251,6 +245,32 @@ struct SybilWorkspaceView: View {
}
}
private var selectedProviderModelSubtitle: String {
let selectedModel = viewModel.model.trimmingCharacters(in: .whitespacesAndNewlines)
guard !selectedModel.isEmpty else {
return viewModel.provider.displayName
}
return "\(viewModel.provider.displayName)\(selectedModel)"
}
private var customWorkspaceNavigationTitle: some View {
VStack(alignment: .leading, spacing: 2) {
Text(viewModel.selectedTitle)
.font(.sybil(size: 16, weight: .semibold))
.foregroundStyle(SybilTheme.text)
.lineLimit(1)
.minimumScaleFactor(0.78)
Text(selectedProviderModelSubtitle)
.font(.sybil(size: 10, weight: .medium))
.foregroundStyle(SybilTheme.textMuted)
.lineLimit(1)
.minimumScaleFactor(0.82)
}
.frame(maxWidth: .infinity, alignment: .leading)
.multilineTextAlignment(.leading)
}
@ViewBuilder
private var workspaceNavigationLeadingControl: some View {
switch navigationLeadingControl {
@@ -703,9 +723,7 @@ struct SybilWorkspaceView: View {
}
#if !targetEnvironment(macCatalyst)
if !viewModel.isSearchMode {
composerFocused = false
}
#endif
Task {

View File

@@ -2510,7 +2510,7 @@ export default function App() {
onContextMenu={(event) => openContextMenu(event, { kind: item.kind, id: item.id })}
type="button"
>
<div className="flex items-center gap-2">
<div className="grid grid-cols-[auto_minmax(0,1fr)] gap-x-2 gap-y-1">
<span
className={cn(
"flex h-5 w-5 shrink-0 items-center justify-center rounded-md border",
@@ -2528,11 +2528,15 @@ export default function App() {
/>
) : null}
</span>
<span className={cn("ml-auto shrink-0 text-xs", active ? "text-violet-100/86" : "text-violet-200/50")}>{formatDate(item.updatedAt)}</span>
</div>
<span className="col-start-2 flex min-w-0 items-center gap-2">
<span className="shrink-0 text-xs text-secondary-foreground/70">{formatDate(item.updatedAt)}</span>
{initiatedLabel ? (
<p className={cn("mt-1 truncate text-right text-xs", active ? "text-violet-100/62" : "text-violet-200/42")}>{initiatedLabel}</p>
<span className="ml-auto min-w-0 truncate text-right text-xs text-secondary-foreground/70">
{initiatedLabel}
</span>
) : null}
</span>
</div>
</button>
);
})}