Sources/InfinityTerminal/main.swift—NSApplicationbootstrap.Sources/InfinityTerminal/Models/— grid + session models (TerminalGridModel,TerminalColumn,TerminalSession).Sources/InfinityTerminal/Views/— AppKit views:ContentView,ToolbarView,TerminalColumnView,TerminalPaneView,MinimapView,ShortcutsView.Sources/InfinityTerminal/Resources/— bundled icon and logo.Package.swift— SwiftPM manifest; target depends on SwiftTerm.build-app.sh— packaging, code signing, notarization (Hardened Runtime + Developer ID).
swift build— debug build (.build/debug/InfinityTerminal).swift build -c release— release build (.build/release/InfinityTerminal)../build-app.sh— wrap release build into.build/InfinityTerminal.app(signed, ad-hoc if no Developer ID)../build-app.sh --dmg— sign + notarize + produce a DMG. RequiresAPPLE_ID,APPLE_PASSWORD(app-specific),APPLE_TEAM(env or.env).
- Swift 5.9, target macOS 14.
- 4-space indent, trailing commas where useful, no force-unwraps in production paths.
- Naming:
PascalCasetypes,camelCaseproperties / methods,lowercasefile matches type name. - Keep view logic in
Views/, state inModels/. NSView subclasses own their resize/focus behavior; the model is the source of truth for layout.
- No test suite yet. When adding tests, use SwiftPM's
.testTarget(...)inPackage.swiftand put files underTests/InfinityTerminalTests/. - Run with
swift test.
- Commits: short imperative subject; include the bug or feature name. Conventional Commits welcome (
feat:,fix:,build:). - PRs: short description, screenshots for UI changes, repro steps for bugs.
- Bump
VERSIONandBUILD_NUMBERinbuild-app.shwhen releasing.
- Code signing identity:
Developer ID Application: Pavol Bujna (334EJ7NNV2). - Hardened Runtime entitlements are generated inline by
build-app.sh(no sandbox — full PTY support requires it). - Notarization credentials belong in
.env(gitignored). Never commit.env*,.p12,.p8, or any signing artifact.