Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
0410b70
crazy experiment with the Scrolling Logic and Animation, THIS IS SICK…
AryanRogye Aug 5, 2025
05bda50
added back proximity logic
AryanRogye Aug 6, 2025
15f0df3
made the notch shape much better, also added the re_align_notch back
AryanRogye Aug 8, 2025
2ea1cbb
Added back re_align notch, added back the live activities HUD, added …
AryanRogye Aug 9, 2025
80c47c0
feat: restore fallback notch and improve space manager stability
AryanRogye Aug 9, 2025
c122214
fix(ui): pin TopNotchView to top and stabilize event tap; simplify Ho…
AryanRogye Aug 10, 2025
3d4320e
Fixing Mini Issues with the Scroll Manager - - when hovering and oepn…
AryanRogye Aug 10, 2025
973a4e8
Fix display settings handling
AryanRogye Aug 11, 2025
142a8f3
Cleaned up print statements
AryanRogye Aug 11, 2025
da3acd4
Replaced touch settings with context menu
AryanRogye Aug 11, 2025
f674691
Added back a new HoverView, that is much more reliable and m
AryanRogye Aug 24, 2025
d3c3d28
Removed lots of unused code
AryanRogye Aug 24, 2025
fceeca8
syncing changes
AryanRogye Aug 24, 2025
97e13dc
added new Proximity Settings
AryanRogye Aug 24, 2025
789d0d2
fixed page inside the tracker
AryanRogye Aug 24, 2025
72b82f8
Fixing weird bug where the settings page wouldnt be focused when opened
AryanRogye Aug 25, 2025
ebbe428
Moves Files around to make more sense
AryanRogye Aug 26, 2025
6c23857
License Tab wouldnt let us scroll all the way to the bottom, so I fixed
AryanRogye Aug 26, 2025
0272ce0
syncing commits
AryanRogye Aug 26, 2025
57751ab
Fixed bug in WindowCoordinator where if we opened the settings window th
AryanRogye Aug 26, 2025
e2b3215
fixing tests
AryanRogye Aug 26, 2025
05b6e5f
sycing changes
AryanRogye Aug 26, 2025
c26a28c
fixig a major weird clipping bug
AryanRogye Sep 4, 2025
bb848af
moved scrolling logic into a singleton manager, the reason is so that…
AryanRogye Sep 4, 2025
ff97a6d
kinda hacky but found a weird fix for the album cover opeing the notch
AryanRogye Sep 4, 2025
f7c5e05
more controlled animation system
AryanRogye Sep 4, 2025
d10384e
clearing out any bugs, I added some sketchy things kinda ass but its ok
AryanRogye Sep 4, 2025
be7627a
local testing
AryanRogye Sep 23, 2025
0072fb0
Sync over small things
AryanRogye Jan 24, 2026
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
47 changes: 47 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Repository Guidelines

## Project Structure & Modules
- `ComfyNotch/`: Swift app sources (App, Core, Coordinators, Views, Widgets, Extensions, Assets).
- `ComfyNotchTests/` and `ComfyNotchUITests/`: XCTest unit and UI tests (`*Tests.swift`, `*UITests.swift`).
- `ComfyNotch.xcodeproj/`: Xcode project.
- `web/`: Vite + React site (Tailwind, ESLint).
- `cli/`: ComfyX CLI (CMake-based) for local build/packaging workflows.
- `Scripts/`: helper shell scripts (build, archive, DMG, appcast).

## Build, Test, and Development
Swift app (Xcode):
```bash
open ComfyNotch.xcodeproj # develop in Xcode
xcodebuild -project ComfyNotch.xcodeproj \
-scheme ComfyNotch -configuration Debug build
xcodebuild -project ComfyNotch.xcodeproj \
-scheme ComfyNotch -destination 'platform=macOS' test
```
Web (inside `web/`):
```bash
npm install
npm run dev # local server
npm run build # production build
npm run lint # ESLint rules
```
CLI (inside `cli/`): see `cli/README.md` and `compile.sh`.
Release helpers: see `Scripts/build.sh`, `build_archive.sh`, `create_dmg.sh`.

## Coding Style & Naming
- Swift: 4‑space indent, `UpperCamelCase` types, `lowerCamelCase` vars/funcs, one type per file. Prefer structs/enums, value semantics, and clear access control. Keep files under the relevant module folder (e.g., new coordinators → `ComfyNotch/Coordinators`).
- Tests: mirror source paths; name tests after the type (`SettingsModelTests.swift`).
- Web: follow ESLint config in `web/eslint.config.js`; React 19 + Vite; Tailwind utility classes.

## Testing Guidelines
- Framework: XCTest for unit and UI tests.
- Naming: `test<Behavior>_<Condition>()` and group with `// MARK:` sections.
- Run: from Xcode or `xcodebuild ... test` (see above). Add unit tests for models/helpers; add UI tests for critical user flows.

## Commit & Pull Requests
- Commits: present‑tense, concise, scoped messages (e.g., "Fix Settings persistence on fresh launch"). Group related changes; avoid mixed concerns.
- PRs: include summary, rationale, screenshots for UI changes, test notes, and linked issues. Ensure `npm run lint` (web) and all Xcode tests pass.

## Security & Configuration
- macOS app may require Developer ID signing for archives; see `Scripts/ExportOptions.plist` and release scripts.
- Do not commit secrets or signing artifacts. Private frameworks are used; verify compatibility with target macOS versions.

1,095 changes: 1,005 additions & 90 deletions ComfyNotch.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1620"
LastUpgradeVersion = "1640"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1620"
LastUpgradeVersion = "1640"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1620"
LastUpgradeVersion = "1640"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
Expand Down Expand Up @@ -76,12 +76,12 @@
</BuildableProductRunnable>
<AdditionalOptions>
<AdditionalOption
key = "MallocStackLogging"
key = "PrefersMallocStackLoggingLite"
value = ""
isEnabled = "YES">
</AdditionalOption>
<AdditionalOption
key = "PrefersMallocStackLoggingLite"
key = "MallocStackLogging"
value = ""
isEnabled = "YES">
</AdditionalOption>
Expand Down
38 changes: 38 additions & 0 deletions ComfyNotch/App/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import AppKit

// _ = SettingsModel.shared


/**
* AppDelegate manages the application lifecycle and initialization of core components.
* Responsible for setting up the UI, handlers, and loading widget configurations.
*
* Properties:
* - hoverHandler: Manages hover interactions for the small panel
*/
public class AppDelegate: NSObject, NSApplicationDelegate {

private var appCoordinator : AppCoordinator?

public func applicationDidFinishLaunching(_ notification: Notification) {
NSApp.appearance = NSAppearance(named: .darkAqua)
let _ = {
NSKeyedUnarchiver.setClass(NSAttributedString.self, forClassName: "__NSCFAttributedString")
NSKeyedUnarchiver.setClass(NSAttributedString.self, forClassName: "NSConcreteAttributedString")
NSKeyedUnarchiver.setClass(NSAttributedString.self, forClassName: "NSFrozenAttributedString")
}()

Task { @MainActor in
appCoordinator = AppCoordinator()
appCoordinator?.start()
}
}

public func applicationWillTerminate(_ notification: Notification) {
appCoordinator?.end()
}

public func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return false
}
}
20 changes: 20 additions & 0 deletions ComfyNotch/App/ComfyNotchApp.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
//
// ComfyNotchApp.swift
// ComfyNotch
//
// Created by Aryan Rogye on 4/17/25.
//

import SwiftUI

@main
struct ComfyNotchApp: App {
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

var body: some Scene {
WindowGroup {
EmptyView()
.destroyViewWindow()
}
}
}
33 changes: 5 additions & 28 deletions ComfyNotch/Main/ComfyNotchApp.swift → ComfyNotch/App/Debug.swift
Original file line number Diff line number Diff line change
@@ -1,38 +1,15 @@
//
// ComfyNotchApp.swift
// Debug.swift
// ComfyNotch
//
// Created by Aryan Rogye on 4/17/25.
// Created by Aryan Rogye on 8/24/25.
//

import SwiftUI

@main
struct ComfyNotchApp: App {
@NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

var body: some Scene {
if #available(macOS 15.0, *) {
return Window("SettingsView", id: "SettingsView") {
SettingsView()
}
.windowResizability(.contentSize)
.defaultPosition(.center)
.windowStyle(.hiddenTitleBar)
.defaultLaunchBehavior(.suppressed)
} else {
return Window("SettingsView", id: "SettingsView") {
SettingsView()
}
.windowResizability(.contentSize)
.defaultPosition(.center)
.windowStyle(.hiddenTitleBar)
}
}
}
import Foundation

#if DEBUG
let VIEW_DEBUG_SPACING = false
let VIEW_MUSIC_SPACING = false
#endif


Expand All @@ -49,7 +26,7 @@ enum LogSource: String {
case mKIntercept = "|MediaKeyIntercept|"
case brightness = "|Brightness|"
case volume = "|Volume|"

/// Most Likely These Will Be Always Active
case settings = "|Settings|"
case fileTray = "|FileTray|"
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Binary file removed ComfyNotch/Assets/enableNotchHUD_demo.mp4
Binary file not shown.
Binary file removed ComfyNotch/Assets/nowPlayingScrollSpeed_demo.mp4
Binary file not shown.
1 change: 1 addition & 0 deletions ComfyNotch/Config/ComfyNotch.entitlements
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<key>com.apple.security.personal-information.addressbook</key>
<true/>


<!-- For Sparkle -->
<key>com.apple.security.temporary-exception.mach-lookup.global-name</key>
<array>
Expand Down
5 changes: 3 additions & 2 deletions ComfyNotch/Config/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,11 @@
<key>NSContactsUsageDescription</key>
<string>ComfyNotch needs access to your contacts to show names in Messages.</string>

<!-- Sparkle Stuff <-->

<key>SUEnableInstallerLauncherService</key>
<true/>

<!-- Sparkle Stuff <-->

<key>SUFeedURL</key>
<!-- This is what its looking for updates in github <-->
<string>https://aryanrogye.github.io/ComfyNotch/appcast.xml</string>
Expand Down
Loading