- Name:
NotchTerminal - Creator:
Marco - Maintainer:
Marco - Type: native macOS app (SwiftUI + AppKit + Metal)
- Goal: control terminal windows from a notch-style overlay UI.
- Swift 6 style codebase
- SwiftUI for most UI
- AppKit bridge for window management
- SwiftData for session persistence
- Metal for visual effects
- Xcode project:
NotchTerminal.xcodeproj
- Open
NotchTerminal.xcodeproj - Select scheme
NotchTerminal - Build and run on macOS
Requirements:
- macOS 14+
- Xcode 16+
NotchTerminal/App: app lifecycle and preferences bootstrapping.NotchTerminal/Features/Notch: notch overlay UI, interaction model, and entry points for overlay actions.NotchTerminal/Features/Storage: storage analysis, cleanup actions, and overview UI.NotchTerminal/Features/Windows: floating terminal windows and actions.NotchTerminal/Features/Persistence: SwiftData models and session restore helpers.NotchTerminal/Rendering/Metal: Metal shaders/rendering pipeline (Aurora, Fake Glow, CRT).NotchTerminal/Settings: settings screens and custom NotchTerminal UI components.NotchTerminal/Services: shared services/utilities.vendor/SwiftTerm: vendored terminal emulation library.
- Keep notch interactions fast and non-blocking.
- Preserve multi-display behavior.
- Avoid regressions in terminal session lifecycle (open/minimize/restore/close).
- Keep destructive actions confirmable when settings require it.
- Primary strings:
NotchTerminal/*/*.stringsand*.lproj/Localizable.strings. - Existing languages include
en,es,fr,ja,zh-Hans. - See
docs/localization/LOCALIZATION.mdfor language system details.
- Prefer focused, minimal patches.
- Do not commit secrets, keys, tokens, or private notes.
- Do not commit personal Xcode signing settings such as
DEVELOPMENT_TEAM; useConfig/Signing.local.xcconfigfor local-only signing overrides. - Do not add personal planning docs to version control.
- Keep user-facing copy localized where appropriate.
- For UI/state changes, validate behavior in both notch and non-notch screens.
- Run relevant tests before changing code when there is any chance the base is already failing.
- Run tests immediately after each meaningful code change.
- Do not consider a task complete without running the affected tests, or clearly stating why they could not be run.
- If new logic is added or refactored, add or update tests in the same task unless that is genuinely blocked.
- For changes in preferences, command classification, ports, paths, sessions, or restore logic, run the full
NotchTerminaltest suite. - For UI or AppKit changes, at minimum run
build-for-testingand the affected unit tests. - For UI test infrastructure changes, run
build-for-testingand document separately if runtime UI execution is blocked by the local Xcode environment.
- Product overview:
README.md - Testing guidance:
docs/quality/TESTING.md - Localization details:
docs/localization/LOCALIZATION.md - Third-party attributions:
NotchTerminal/Resources/THIRD_PARTY_NOTICES.md