Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .github/assets/readme/demo-imessage.png
Binary file not shown.
Binary file removed .github/assets/readme/demo-notes.png
Binary file not shown.
Binary file removed .github/assets/readme/demo-slack.png
Binary file not shown.
Binary file modified Cotabby/Assets.xcassets/AppIcon.appiconset/1024.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Cotabby/Assets.xcassets/AppIcon.appiconset/128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Cotabby/Assets.xcassets/AppIcon.appiconset/16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Cotabby/Assets.xcassets/AppIcon.appiconset/256.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Cotabby/Assets.xcassets/AppIcon.appiconset/32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Cotabby/Assets.xcassets/AppIcon.appiconset/512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Cotabby/Assets.xcassets/AppIcon.appiconset/64.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
{
"images" : [
{
"filename" : "welcome-app-icon.png",
"filename" : "CotabbyLogo.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "welcome-app-icon@2x.png",
"filename" : "CotabbyLogo@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "CotabbyLogo@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions Cotabby/Assets.xcassets/MenuBarCatIcon.imageset/Contents.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"images" : [
{
"filename" : "MenuBarCatIcon.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "MenuBarCatIcon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "MenuBarCatIcon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
21 changes: 7 additions & 14 deletions Cotabby/Services/UI/ActivationIndicatorController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -139,23 +139,16 @@ private final class ActivationIndicatorPanel: NSPanel {
}

private struct FieldEdgeIconIndicatorView: View {
@Environment(\.colorScheme) private var colorScheme

private var bgColor: Color {
colorScheme == .dark ? Color(white: 0.15) : Color(white: 0.92)
}

private var pawColor: Color {
colorScheme == .dark ? .white : Color(white: 0.25)
}

var body: some View {
ZStack {
RoundedRectangle(cornerRadius: 5, style: .continuous)
.fill(bgColor)
Image(systemName: "pawprint.fill")
.font(.system(size: 11, weight: .medium))
.foregroundStyle(pawColor)
.fill(Color(red: 0.18, green: 0.19, blue: 0.21))
Image("MenuBarCatIcon")
.renderingMode(.template)
.resizable()
.scaledToFit()
.frame(height: 13)
.foregroundStyle(.white)
}
.frame(width: 20, height: 20)
.shadow(color: .black.opacity(0.12), radius: 2, y: 1)
Expand Down
8 changes: 5 additions & 3 deletions Cotabby/UI/MenuBarStatusLabelView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ struct MenuBarStatusLabelView: View {

var body: some View {
HStack(spacing: 2) {
Image(systemName: "pawprint.fill")
.symbolRenderingMode(.monochrome)
.font(.system(size: 13, weight: .semibold))
Image("MenuBarCatIcon")
.renderingMode(.template)
.resizable()
.scaledToFit()
.frame(height: 16)
Comment on lines +15 to +19
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Accessibility regression from custom asset image. Image(systemName: "pawprint.fill") automatically exposed a VoiceOver label derived from the symbol name. A custom Image("MenuBarCatIcon") has no implicit accessibility description, so VoiceOver will announce it as a generic "image" (or skip it). Since the icon is decorative next to the text label, marking it hidden from accessibility is the cleaner fix.

Suggested change
Image("MenuBarCatIcon")
.renderingMode(.template)
.resizable()
.scaledToFit()
.frame(height: 16)
Image("MenuBarCatIcon")
.renderingMode(.template)
.resizable()
.scaledToFit()
.frame(height: 16)
.accessibilityHidden(true)

Fix in Codex Fix in Claude Code


if let label = WordCountFormatter.compactLabel(
for: suggestionCoordinator.totalTabAcceptedWordCount
Expand Down
14 changes: 5 additions & 9 deletions Cotabby/UI/SettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,11 @@ struct SettingsView: View {
private var settingsHeader: some View {
Section {
HStack(spacing: 10) {
ZStack {
RoundedRectangle(cornerRadius: 10, style: .continuous)
.fill(Color.primary.opacity(0.06))

Image(systemName: "pawprint.fill")
.font(.system(size: 16, weight: .semibold))
.foregroundStyle(.primary)
}
.frame(width: 32, height: 32)
Image("CotabbyLogo")
.resizable()
.scaledToFit()
.frame(width: 32, height: 32)
.clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous))

VStack(alignment: .leading, spacing: 1) {
Text("Cotabby")
Expand Down
4 changes: 2 additions & 2 deletions Cotabby/UI/WelcomeView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,11 @@ private enum WelcomeStep: Int, Comparable {
extension WelcomeView {
fileprivate var welcomeStep: some View {
VStack(spacing: 24) {
Image(systemName: "pawprint.fill")
Image("CotabbyLogo")
.resizable()
.scaledToFit()
.frame(width: 72, height: 72)
.foregroundStyle(.white)
.clipShape(RoundedRectangle(cornerRadius: 16, style: .continuous))

VStack(spacing: 8) {
Text("Welcome to Cotabby")
Expand Down
Loading