bitgapp/eqMac
38.9
Weak · 30 September 2026
15.3k
lines of production code
Swift
with TypeScript
2
measurements over time
What this system is
This system is a macOS audio equalizer application that has been rewritten from a legacy Objective-C and web-based architecture into a modern native Swift backend with an Angular frontend. It manages system audio routing through a custom Swift-based kernel extension driver, providing users with granular control over volume, balance, and multi-band equalization effects. The application features a hybrid UI that can operate as a native Cocoa window or a popover, synchronized with the backend via a structured data bus and state management system.
How it got here
2017–2020 — Native macOS rewrite and UI overhaul
53 changes.
The project underwent a comprehensive rewrite, replacing legacy Objective-C and web-based components with a native Swift macOS application and an Angular frontend. This period established a new architecture featuring a custom audio engine, a sandbox-safe audio driver, and a modernized user interface with advanced equalizer and volume control features.
2021 — Swift migration and UI modernization
4 changes.
This period focused on modernizing the codebase by rewriting the native audio driver and networking layer in Swift, replacing legacy Objective-C and Reachability implementations. Concurrently, a new Angular component library and animation system were introduced to enhance the user interface, supported by a shared Swift package for foundational utilities.
Features
Added Sandbox playground for local experimentation
A new Xcode playground named Sandbox has been introduced in the native/app directory, providing a dedicated environment for local code experimentation and prototyping. This change includes the necessary playground configuration files and workspace data, effectively separating experimental work from the main application project structure.
native/app/Sandbox.playground · high confidence
Added UI recording controls and reusable formatting pipes
The UI now includes a new Recorder component that provides a toggle button to start and stop recording, displaying a live timestamp while active and an option to export the file. Additionally, a new PipesModule has been introduced to provide reusable Angular pipes for formatting data in templates, including capitalizing the first letter of strings, clipping numeric values to a specific range, mapping values between ranges, and formatting floating-point numbers with optional zero suppression.
ui/src/app/modules/pipes, ui/src/app/sections/recorder · high confidence
Added audio device management and utility extensions
This update introduces a new set of Swift extensions in the app's source code to support core audio functionality and general utilities. Specifically, it adds methods to \AVAudioEngine\ for setting input and output audio devices, and extends \AudioDevice\ with capabilities to check device properties (such as default status, volume/balance support, and muting), retrieve device information (like source names and buffer frame sizes), and look up devices by UID or plugin bundle ID. Additionally, several utility extensions are added for \Data\ (URL-safe Base64 decoding), \Date\ (ISO string parsing and subtraction), \NSImage\ (resizing and Base64 conversion), \NSOpenPanel\/\NSSavePanel\ (simplified file selection dialogs), and standard types like \Bool\, \Number\, and \NSObject\.
native/app/Source/Extensions · high confidence
Added audio output selection and reset controls
The application now includes a dedicated UI section for managing audio outputs. Users can view a list of available devices (such as AirPlay, Bluetooth, built-in speakers, and displays) and select their preferred output via a dropdown menu. A reset playback button is also provided to restore default playback settings. The component automatically syncs with the system's available devices and handles selection changes in real-time.
ui/src/app/sections/outputs · high confidence
Added confirm dialog component
A new confirm dialog component has been introduced to the application, providing a reusable UI for user confirmation prompts. The component supports customizable text for the message, confirm button, and cancel button, and allows for optional custom logic to be executed upon confirmation via an onConfirm callback. It integrates with Angular Material's MatDialog for display and handles both standard closure (returning true/false) and custom confirmation actions.
ui/src/app/components/confirm-dialog · high confidence
Added helper utilities for alerts, system info, and legacy preset migration
The app now includes a suite of helper classes in the native source to improve stability and usability. Users will see a new Alert helper that ensures all system dialogs are presented on the main thread, preventing potential UI crashes. A new Script helper enables privileged shell execution and AppleScript support for system-level tasks. System information is now accessible via a Sysctl wrapper for device details, and legacy eqMac2 equalizer presets are automatically imported and sorted by name during the first launch.
native/app/Source/Helpers · high confidence
Added native transition animation logic and driver workspace configuration
This change introduces a new native Swift module for handling UI transition animations. The \Transition.swift\ file implements a frame-based animation engine that interpolates values over a configurable duration using \DispatchQueue\ for timing, while \TransitionDataBus.swift\ exposes the current transition configuration (FPS, frame count, duration) via a data bus route. Additionally, the \Driver.xcodeproj\ workspace is initialized with standard Xcode workspace files, and a placeholder asset directory is created in the UI layer to support future asset management.
native/app/Source/Transition, native/driver/Driver.xcodeproj/project.xcworkspace, ui/src/assets · high confidence
Added script to restart CoreAudio service
A new shell script, restart\_coreaudio.sh, has been added to the Scripts directory. This script allows users to restart the CoreAudio daemon (com.apple.audio.coreaudiod) using launchctl, which can help resolve audio-related issues on macOS.
native/app/Source/Scripts · high confidence
Establishes project governance and developer onboarding standards
The repository now includes formal governance and setup documentation to support the ongoing rewrite. A new Apache 2.0 license is applied to the codebase, accompanied by a Code of Conduct and a Security policy detailing vulnerability reporting via Discord or email. For developers, the project provides updated contribution guidelines and specific instructions for setting up the local environment, including prerequisites for the Angular-based Web UI (Node.js, Yarn Workspaces) and the native macOS app (Xcode, CocoaPods).
(repo-wide) · high confidence
Initial UI source structure and configuration
The UI application source code is now present in the repository, establishing the foundational structure for the frontend. This includes the Angular application entry points (main.ts, index.html), environment configurations for development and production, and global styling via styles.scss which imports Angular Material themes. The setup also includes a service worker manifest (manifest.json) for PWA capabilities, browser support definitions (browserslist), and TypeScript configuration (tsconfig.app.json) with Ivy enabled, providing the necessary scaffolding for the UI to build and run.
ui/src · high confidence
Initial macOS UI implementation with native window and status bar integration
This change introduces the native macOS user interface for eqMac, replacing previous web-based or placeholder views with a full Cocoa implementation. The UI now features a resizable main window (via \Window.swift\ and \Main.storyboard\) that supports drag-to-move, custom title bar hiding, and persistent state for position, size, and scale. It also includes a macOS status bar item (\StatusItem.swift\) that displays volume levels and supports click interactions to toggle the UI. The interface communicates with the application logic via a \Bridge\ class using \WebViewJavascriptBridge\ and a \UIDataBus\ for state synchronization, allowing users to control UI mode (window/popover), always-on-top behavior, and icon styles directly from the native layer.
native/app/Source/UI · high confidence
Initial native macOS application launch with integrated update and audio engine
The native macOS application is now available, replacing the previous web-based interface. This release introduces a native Swift codebase that manages the audio engine, handles system events (such as sleep/wake cycles and hardware volume keys), and integrates Sparkle for automatic software updates. It also implements a centralized state management system using ReSwift to persist user settings and volume levels, and adds a data bus to communicate with the UI layer.
native/app/Source · high confidence
Introduction of DataBus with middleware support
The DataBus component now supports middleware handlers that can intercept and process data before it reaches the main event handler. This allows for cross-cutting concerns like logging, validation, or error handling to be applied to specific routes or methods within the data bus architecture.
native/app/Source/DataBus · high confidence
Introduction of core UI service layer and analytics infrastructure
The application now includes a comprehensive set of Angular services in the UI layer to manage communication with the native backend, user interface state, and telemetry. This introduces an analytics service that dynamically loads Google Analytics and tracks screen views, alongside a bridge service that facilitates JavaScript-to-Swift communication via WebViewJavascriptBridge. Users benefit from a robust settings system that persists UI preferences (such as feature toggles and knob styles) and handles scaling, as well as improved error handling through toast notifications and a centralized data service for API requests.
ui/src/app/services · high confidence
Introduction of core audio effects state and data bus infrastructure
This change introduces the foundational Swift components for the audio effects module, specifically adding the \Effect\ base class to manage audio node states, the \EffectsDataBus\ to route data for equalizers, and the \EffectsState\ with its reducer to manage the application's state for equalizer settings.
native/app/Source/Audio/Effects · high confidence
Introduction of new audio engine and device event infrastructure
The audio subsystem now includes a new \Engine\ class that manages the \AVAudioEngine\ graph, routing input through active equalizers to a mixer node and utilizing a circular buffer for sample data. A new \AudioDeviceEvents\ class has been added to centralize and emit events for hardware changes (such as device list changes, volume, and sample rate) using \EmitterKit\. Additionally, an \EngineDataBus\ class provides a structured route for volume, effects, and output data communication.
native/app/Source/Audio · high confidence
Introduction of the Advanced Equalizer with preset management and legacy import
The Advanced Equalizer feature is now available, providing a 10-band parametric equalizer with a set of built-in presets (such as Acoustic, Bass Booster, and Jazz) and the ability to create, update, and delete custom user presets. This change introduces a new data bus that exposes endpoints for managing these presets, including exporting and importing them as JSON files. Additionally, users can now import presets from the legacy eqMac2 application, and the equalizer supports a setting to toggle the visibility of default presets in the user interface.
native/app/Source/Audio/Effects/Equalizers/Advanced · high confidence
New Help section displaying app and driver versions
A new Help section has been added to the UI, presenting a summary of the application's current state. Users can now view the App Version, Driver Version, and UI Version (indicating whether the UI is running locally or remotely) directly in the interface. The section also includes interactive buttons to access the FAQ and report bugs, linking to the respective external URLs defined in the application constants.
ui/src/app/sections/help · high confidence
New UI component library and animation system
This change introduces a new Angular component library in the \modules/components\ module, providing a suite of reusable UI elements including buttons, sliders, checkboxes, dropdowns, tooltips, and a carousel. It also adds a dedicated animation system with fade-in/out and slide-from-top triggers, alongside a centralized icon set and color services to support the application's visual design.
modules/components/src · high confidence
New audio source and equalizer controls
The Effects section now includes a file-based audio source, allowing users to open, play, pause, and scrub through local audio files via a new file player component. Additionally, the equalizer interface has been expanded to support both Basic (Bass/Mid/Treble with Peak Limiter) and Advanced (10-band) modes, with the ability to switch between them, import/export presets, and manage custom preset configurations.
ui/src/app/sections/effects · high confidence
New booster control component with toggleable gain and UI settings
The volume section now includes a dedicated booster control that allows users to adjust gain (0-200%) and toggle boost enablement via a checkbox, with the boost feature restricted to app versions 1.0.0 and later. The component supports both knob and slider input modes, determined by UI settings, and provides haptic feedback when the gain returns to the middle position. It communicates with the backend via a new BoosterService for gain and boost state management.
ui/src/app/sections/volume/booster-balance/booster · high confidence
New options and prompt dialog components added to the UI
The UI now includes two new dialog components: an options dialog that displays a list of selectable options with an optional title, and a prompt dialog that extends the existing confirm dialog to allow users to enter text input before confirming. These components leverage Angular Material's dialog infrastructure and internal custom elements like eqm-label, eqm-options, and eqm-input-field to provide structured user interaction for selection and data entry scenarios.
ui/src/app/components/options-dialog, ui/src/app/components/prompt-dialog · high confidence
New settings interface for app configuration and preferences
The application now includes a dedicated settings section that allows users to manage core preferences. Users can control whether the app launches on login, choose between knobs or sliders for control input, and select the knob control style (directional or rotational). Visibility of the app icon is configurable via the 'Show Icon' setting, offering options for Dock, Status Bar, Both, or Neither, with logic to automatically switch the UI mode if necessary. The interface also provides controls for system integration, including an 'Always on top' toggle and options to enable automatic update checks, Over-the-Air (OTA) updates, and enrollment in the beta program. Additionally, users can manage privacy preferences by opting in or out of anonymous telemetry analytics and crash report collection, and can manually check for updates or uninstall the application directly from this panel.
ui/src/app/sections/settings · high confidence
New unified Options component for declarative UI settings
The \ui/src/app/components/options\ area now introduces a new \OptionsComponent\ that renders a configurable grid of UI controls based on a declarative data structure. Users can now define settings interfaces using a variety of option types including checkboxes, buttons, dropdowns, breadcrumbs, input fields, flat and skeuomorph sliders, value screens, dividers, labels, and raw HTML. The component supports features such as conditional enabling/disabling (grayscale styling), tooltips, URL opening for labels, and specific slider behaviors like logarithmic scaling and middle-notch animation, providing a flexible foundation for building complex settings panels.
ui/src/app/components/options · high confidence
Shared Swift package setup with audio and utility utilities
The native/shared area has been established as a Swift Package Manager package, migrating the Xcode scheme from the legacy Pods structure to a new 'Shared' target. This package introduces a suite of foundational utilities for the application, including a CircularBuffer for handling CoreAudio audio streams, a Mutex for thread safety, and an Async helper for delayed execution. It also provides specific audio processing capabilities such as VolumeConverter for decibel and scalar conversions, EQMClient for managing audio client information, and extensions for Array, String, and NumericTypes to support data manipulation and type conversions required by the audio driver.
native/shared · high confidence
eqMac UI v0.1.0: New interface with privacy consent and feature toggles
The eqMac application now ships with a new UI (v0.1.0) built on Angular 11. On first launch, users are presented with a privacy consent dialog to opt-in to anonymous telemetry and crash reports. The interface supports dynamic feature toggles, allowing users to show or hide the Volume Booster/Balance, Equalizers, and Outputs sections. The UI also includes a new loading state indicator, improved scaling for tooltips and dialogs, and styling fixes for macOS 10.12 compatibility.
ui/src/app · high confidence
Removals
Removal of AFNetworking pod dependency
The AFNetworking library has been removed from the project's dependencies. This change deletes the core networking components, including the HTTP session manager, network reachability monitoring, SSL security policies, and request/response serialization utilities, which will no longer be available for use in the application.
Pods · high confidence
Removal of Apple CAPlayThrough AudioDevice wrapper
The \AudioDevice\ C++ wrapper class and its header, originally sourced from Apple's CAPlayThrough sample code (version 1.2.2), have been removed from the \Source/Libs/AudioDevice\ directory. This change eliminates the legacy implementation that handled Core Audio device initialization, buffer size configuration, sample rate setting, and channel enumeration, indicating a shift away from this specific abstraction layer for audio device management.
Source/Libs/AudioDevice · high confidence
Removal of CoreAudio Utility Classes
The CoreAudio Utility Classes (version 1.2.2) have been removed from the codebase. This deletion includes the \CARingBuffer\ implementation for audio ring buffering, as well as several helper headers in \Source/Libs/Misc\ such as \CAAtomic.h\, \CAAutoDisposer.h\, \CABitOperations.h\, \CADebugMacros.h\, \CADebugPrintf.h\, \CAMath.h\, and \CAStreamBasicDescription\.
Source/Libs, Source/Libs/CARingBuffer, Source/Libs/Misc · high confidence
Removal of legacy UI components
The legacy user interface components for the equalizer, settings, status bar, and volume controls have been removed. This includes the \SliderGraphView\ used for the EQ band visualization, the \eqViewController\ and its associated XIB for managing presets, the \SettingsViewController\ for system settings, the \eqMacStatusItemView\ for the menu bar icon, and the \VolumeWindowController\ along with the \FlatLevelIndicator\ used for volume display. These files are completely deleted from the \Source/Views\ directory.
Source/Views · high confidence
Removal of legacy application entry point and status bar infrastructure
The legacy \AppDelegate\, \NSAppEventCatcher\, and \main.m\ files have been removed from the source code. This eliminates the previous implementation of the macOS status bar item, the custom keyboard volume control event handling, and the old application lifecycle management, indicating a structural shift in how the application initializes and interacts with the system UI.
Source · high confidence
Removal of legacy audio engine and driver infrastructure
The legacy audio processing engine (EQEngine), the virtual audio driver (eqMac2Driver.kext), and the associated device management, preset, and API modules have been removed from the common source. This eliminates the previous architecture that relied on a kernel extension and a custom aggregate device to route audio through the equalizer, meaning the application no longer includes the core components required to process or output audio in this version.
Source/Common · high confidence
Architecture
Xcode workspace structure reorganized and configured
The Xcode workspace has been restructured: the workspace file was moved from the root-level eqMac2.xcworkspace to native/app/eqMac.xcodeproj/project.xcworkspace, and its reference was updated to point to the local project. New default workspace settings and IDE check files were added, and a user-specific settings file was introduced to configure build locations and issue filtering for the development environment.
native/app/eqMac.xcodeproj/project.xcworkspace · high confidence
Behavioural changes
5 commits (1 fix) modifying eqMac2.xcworkspace
A change to existing behaviour in eqMac2.xcworkspace — 5 commits (1 fix), 1 file.
Source/Assets, eqMac2.xcworkspace · medium confidence · unverified
Added Xcode workspace configuration files
The project now includes IDE workspace settings that disable the 32-bit warning and turn off preview rendering, ensuring a consistent development environment for the native eqMac workspace.
native/eqMac.xcworkspace/xcshareddata · high confidence
Added debug entitlements for audio input and library validation
The app now includes specific entitlements to enable audio input access and disable library validation during debug builds. This allows the application to function correctly in debug environments without code-signing restrictions, while production builds retain only the necessary audio input permission.
native/app · high confidence
Added macOS app configuration and assets
The application now includes its core macOS configuration files, specifically the Info.plist which defines the app as a background utility (LSUIElement) with permissions for AppleEvents and microphone access, alongside the entitlements file. Supporting asset catalogs have been added and reorganized, including the status bar icon set and the main application icon, ensuring the app has the necessary metadata and visual assets to run on macOS.
native/app/Supporting Files · high confidence
Balance control now supports switchable knob and slider interfaces
The Balance section now allows users to toggle between traditional rotary knobs and flat sliders for adjusting audio balance. This behavior is driven by a UI setting (replaceKnobsWithSliders) that the component reads on load and listens for changes to, dynamically swapping the control widget while maintaining haptic feedback and value synchronization with the backend balance service.
ui/src/app/sections/volume/booster-balance/balance · high confidence
Basic Equalizer gains peak limiter support and preset management
The Basic Equalizer now includes a peak limiter option within its presets, allowing users to automatically reduce global gain when positive gain is applied to prevent clipping. Additionally, the equalizer's preset system has been enhanced to support creating, updating, and deleting user-defined presets, with the ability to select and apply them via the API.
native/app/Source/Audio/Effects/Equalizers/Basic · high confidence
Driver restructured as a sandbox-safe Audio Unit plugin
The driver has been rewritten to function as a Bundle (BNDL) rather than a standalone application, removing the main nib, app event catcher, and update feed configuration. It now registers as a CFPlugIn with specific factory and type identifiers, enabling it to operate as an audio unit. The change also updates the copyright year to 2021, switches version strings to use build system variables, and explicitly marks the driver as sandbox-safe for modern macOS compatibility.
native/driver/Supporting Files · high confidence
Driver rewritten in Swift with shared package integration
The audio driver project has been rebuilt using Swift, replacing the previous implementation. This change introduces a mixed Objective-C and Swift build configuration via a bridging header, allowing the driver to link against a new shared Swift package (Shared) and the Swift Atomics library. The driver now exposes specific client interfaces (EQMClients, EQMStream, EQMControl) and device management capabilities (EQMDevice, EQMObject) to the host application, facilitating more robust communication and control over audio routing.
native/driver/Driver.xcodeproj · high confidence
Equalizer settings now persist previous type selection
The equalizer module now tracks the previously selected equalizer type (Basic or Advanced) in its state. When a user switches between these modes, the system stores the prior selection, enabling potential restoration or undo capabilities for the equalizer configuration.
native/app/Source/Audio/Effects/Equalizers · high confidence
Introduction of system audio source management and microphone permission flow
The application now includes a dedicated \Sources\ module to manage audio input sources, specifically initializing a \SystemAudioSource\ for system audio routing. This change introduces a mandatory microphone permission check on launch; if access is denied, the app guides the user through a multi-step alert process to grant permission via System Preferences and requires a restart to proceed, ensuring the system audio processing capability is available.
native/app/Source/Audio/Sources · high confidence
Native settings persistence and update controls
The native app now persists user preferences for icon display mode (dock, status bar, both, or neither), automatic update checking, OTA updates, and beta program participation. Changing the icon mode dynamically adjusts the app's visibility in the Dock and Status Bar, and switches the UI between popover and window modes if necessary. These settings are exposed via a data bus for external configuration and stored persistently using SwiftyUserDefaults.
native/app/Source/Settings · high confidence
Networking module replaces Reachability with Connectivity framework
The networking layer in the app has been refactored to use the Connectivity framework instead of the previous Reachability implementation. This change introduces a new Networking module that manages connection status via the Connectivity singleton, exposing status changes through an event emitter and providing methods to check connectivity asynchronously. The module also retains utility functions for TCP port availability checks and finding available ports, ensuring that network state monitoring is handled by the updated library while maintaining existing port-scanning capabilities.
native/app/Source/Networking · high confidence
New audio output engine with varispeed and device management
The audio output subsystem has been rewritten to use a new \Output\ class that manages an \AVAudioEngine\ graph, including a varispeed unit for sample-rate synchronization and a PID controller to adjust playback rate and prevent buffer underruns. Output device selection and enumeration are now handled by the \Outputs\ helper class, which filters devices by supported transport types (such as USB, Bluetooth, and aggregate devices) and exposes them via the \OutputsDataBus\ API endpoints for device listing and selection.
native/app/Source/Audio/Outputs · high confidence
New driver installation and visibility management logic
The audio system now includes a new Driver class that handles checking for the eqMac audio driver's installation and compatibility, presenting user alerts with options to restart or reinstall if issues are detected. It also manages the driver's visibility state, implementing a mechanism to show the driver device initially and then automatically hide it after a short delay or when the app quits, while also handling cases where the driver fails to activate.
native/app/Source/Audio/Sources/System · high confidence
Removed Carbon framework dependency and developer-specific Xcode project files
The eqMac2 project has removed the Carbon framework, which is deprecated in modern macOS development, and deleted user-specific Xcode configuration files (breakpoints and schemes) to clean up the repository state. These changes streamline the build configuration and remove legacy dependencies without altering the core application logic visible in this project file.
eqMac2.xcodeproj · high confidence
Updated Xcode schemes for the eqMac driver build and launch
The Xcode project schemes for the driver have been updated to target the eqMac driver product instead of the previous STPrivilegedTask framework. The Debug scheme now includes a post-action script that automatically installs the built driver to /Library/Audio/Plug-Ins/HAL/ and restarts CoreAudio upon launch, streamlining the development workflow. The Release scheme has been migrated to build the eqMac driver and copies the output to a local build directory, with scheme version upgraded to 1.7.
native/driver/Driver.xcodeproj/xcshareddata · high confidence
Updated application icon
The application icon has been replaced with a new design. The new icon is an SVG file featuring a green and teal gradient, and the original Adobe Illustrator source file has been moved to an 'old' subdirectory.
assets/icon · high confidence
Volume and balance controls now support a slider-only layout mode
The Volume and Balance section now adapts its layout based on the user's settings. When the 'replaceKnobsWithSliders' setting is enabled, the controls switch from a horizontal row of knobs to a vertical column of sliders, and the component height adjusts accordingly. The visibility of the volume booster and balance controls is also governed by their respective feature flags in the UI settings, allowing users to hide individual sections if desired.
ui/src/app/sections/volume/booster-balance · high confidence
Volume control logic moved to background thread to improve UI responsiveness
The Volume module now processes gain, balance, and mute state changes on a dedicated background thread ("change-volume") rather than the main thread. This architectural change prevents UI freezes or lag when adjusting volume levels, ensuring the interface remains responsive during audio operations.
native/app/Source/Audio/Volume · high confidence
Workspace restructured to include shared package and driver project
The eqMac workspace configuration has been updated to explicitly reference the shared package group, the main eqMac application project, and the Driver project, ensuring these components are correctly grouped within the development environment.
native/eqMac.xcworkspace · high confidence
eqMac audio driver rewritten in Swift
The native audio driver in native/driver has been completely rewritten from Objective-C to Swift. This change introduces a new Swift-based implementation for the Core Audio AudioServerPlugIn, including new source files for the driver bridge, device management, stream handling, and control logic. The rewrite aims to improve stability and maintainability of the driver component.
native/driver · high confidence
eqMac header bar with window/popover mode switching and bypass toggle
The application now displays a custom header bar (replacing the native OS title bar) that includes controls to close, hide, or quit the app, as well as buttons to open Settings and Help. Users can toggle between 'window' and 'popover' display modes using the triangle icon, which automatically adjusts the icon mode if switching to popover while in dock-only mode. Additionally, a toggle switch allows users to enable or disable the 'eqMac Bypass' feature directly from the header.
ui/src/app/sections/header · high confidence
eqMac project configuration and build scheme migration
The eqMac native application project has been restructured and migrated to Xcode project format version 52 (LastUpgradeVersion 1240). The build scheme has been moved from a local user-specific path to the shared xcshareddata directory, and the target has been updated from the AFNetworking pod to the eqMac.app application itself. The project now explicitly references a comprehensive set of Swift source files, system frameworks (Security, CoreFoundation, AudioToolbox, AudioUnit, Foundation), and third-party dependencies (Connectivity, BetterCodable, LaunchAtLogin, Shared, Pods\_eqMac), establishing the complete build graph for the application.
native/app/eqMac.xcodeproj · high confidence
Dependencies
Native dependencies and build configuration updated
The native macOS application's dependency graph has been significantly restructured. The old Podfile using AFNetworking and Sparkle 1.17 has been replaced with a new configuration targeting macOS 10.12, introducing Sentry 7.1.3, ReSwift 6.1, and specific git-committed versions of AMCoreAudio, STPrivilegedTask, and Zip. Additionally, Swift Package Manager dependencies (LaunchAtLogin, Connectivity, BetterCodable, Version, swift-atomics) are now explicitly resolved, and the root package.json establishes an Angular 12 monorepo structure.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 37 → 39 (+1.4)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 93 → 93 (-0.1)
- Architecture 87 → 87 (-0.1)
- Maturity 48 → 48 (+0.0)
- Readiness 16 → 19 (+3.1)
- Security 100 → 92 (-8.0)
- Accessibility 41 → 41 (+0.0)
- Performance 83 (new)
Resolved (3)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
New (5)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no committed lockfile, so no resolved version to grade)
- End-of-life runtime: Node.js 14
- Low cohesion: String (LCOM4 4) (native/shared/Source/StringExtensions.swift)
- Projects may be oversized for their cohesion
- Volume.gain (cognitive 17) (native/app/Source/Audio/Volume/Volume.swift)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
bitgapp/eqMac was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 04e5a3a9bd3a65f2b5105cf54a76d2c72a1d00d7 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.