CodeEditApp/CodeEdit
52.5
Adequate · 27 September 2026
49k
lines of production code
Swift
primary language
3
measurements over time
What this system is
CodeEdit is a native macOS source code editor built with SwiftUI that provides a comprehensive environment for software development. It features a modern interface with a tabbed editor, a project navigator, and a utility area that integrates a terminal emulator and task management system. The application supports advanced code intelligence through Language Server Protocol integration, including semantic highlighting and diagnostics, while offering robust version control management for Git repositories.
How it got here
2022–2023 — Core feature implementation and UI modernization
84 changes.
This period focused on building the foundational features of CodeEdit, including a comprehensive settings system, source control integration, and a modernized SwiftUI interface with native macOS styling. The work established core infrastructure for file indexing, shell integration, and extension management while replacing legacy UI components with new, responsive controls for navigation, editing, and terminal usage.
2024 — Source control and task management overhaul
43 changes.
This period focused on rebuilding the Source Control module with a new Git client, account integrations, and dedicated UI dialogs, while introducing a comprehensive Task Manager and Activity Viewer for background operations. Significant work also went into enhancing the LSP service architecture for better performance and expanding fuzzy search capabilities across the application.
2025 — LSP infrastructure and editor enhancements
15 changes.
This period focused on establishing a robust Language Server Protocol ecosystem, introducing a new installation registry, semantic token highlighting, and dedicated output logging for language servers. Concurrently, the editor experience was improved with a new Jump Bar for navigation, scroll offset tracking in preferences, and hex string parsing utilities. The work was supported by comprehensive test coverage for editor state, Git parsing, and recent project management.
Features
Add Bundle extension for accessing app metadata
A new Bundle extension has been added to provide convenient static properties for retrieving key application metadata, including the app name, display name, copyright string, version string, build string, and a custom version postfix (CE\_VERSION\_POSTFIX). This simplifies access to Info.plist values throughout the application.
CodeEdit/Utils/Extensions/Bundle · high confidence
Add Finder Sync extension to open files in CodeEdit
A new Finder Sync extension (OpenWithCodeEdit) is introduced, allowing users to right-click files or folders in Finder and select "Open in CodeEdit" to launch the editor with those items. The extension registers for mounted volumes, updates its directory list on mount events, and passes selected file paths to the main CodeEdit application via shared UserDefaults (app.codeedit.CodeEdit.shared). It includes a toggleable menu item controlled by the enableOpenInCE setting and requires an application group entitlement for shared data access.
OpenWithCodeEdit · high confidence
Add Jekyll-based AppCast generation infrastructure
The AppCast directory now includes a Jekyll site configuration, templates, and a custom plugin to automatically generate Sparkle-compatible RSS feeds from GitHub release data. This setup allows the project to maintain separate appcast feeds for pre-release and stable releases, ensuring that users receive appropriate update notifications based on the release type.
AppCast · high confidence
Add Keychain utility for secure local storage
The application now includes a new Keychain utility (CodeEditKeychain) within the Utils module, enabling secure storage and retrieval of sensitive data such as strings, booleans, and raw data. This implementation wraps the iOS Security framework, supporting configurable access groups for app sharing and various accessibility options (e.g., accessible only when unlocked) to control when stored items can be accessed, thereby enhancing data security for user preferences and credentials.
CodeEdit/Utils/KeyChain · high confidence
Add Language Server and Extension output sources to the Output Utility
The Output Utility now supports viewing logs from Language Servers and installed Extensions, in addition to internal development output. This change introduces new model sources (\LanguageServerLogContainer\, \ExtensionUtilityAreaOutputSource\) and a picker view that allows users to switch between these different log streams. The UI displays these logs with level-based coloring and icons, and includes filtering and clearing capabilities.
CodeEdit/Features/UtilityArea/OutputUtility · high confidence
Add Swift extension for simplified localized string handling
Introduces a new Swift extension in the localization module that adds a \localized()\ method to \String\, allowing developers to easily convert string literals into \LocalizedStringKey\ instances for SwiftUI localization. This helper simplifies the process of marking strings for translation by providing a concise syntax, as demonstrated by the added \helloWorld\ static property.
CodeEdit/Localization · high confidence
Add environment keys for fullscreen state and window reference
New environment keys have been added to the application's environment system, allowing views to access the current workspace fullscreen state (\isFullscreen\) and the active \NSWindow\ instance (\window\). This enables UI components to react to fullscreen changes and interact with the main application window without requiring explicit passing of these values through view hierarchies.
CodeEdit/Utils/Environment · high confidence
Add search-specific glob pattern exclusion settings
Users can now configure specific glob patterns to exclude files and folders from searches and the 'open quickly' feature via a new Search Settings page. This change introduces a dedicated settings model and UI that allows adding, removing, and managing these exclusion patterns, which inherit from the general 'Exclude from Project' setting.
CodeEdit/Features/Settings/Pages/SearchSettings · high confidence
Add workspace-level task configuration and management
Users can now define, edit, and delete custom tasks within workspace settings. This change introduces a new settings model that persists task definitions (including name, command, working directory, and environment variables) to a \settings.json\ file in the workspace directory. The UI provides a dedicated section in Workspace Settings to list existing tasks, add new ones via a form, and manage environment variables, ensuring that task configurations are saved and loaded correctly.
CodeEdit/Features/CEWorkspaceSettings · high confidence
Added hex string parsing for Int and UInt types
Int and UInt types now support initialization from hexadecimal string representations (e.g., "0xFF" or "FF"). This utility allows developers to easily convert hex-formatted strings into integer values within the codebase.
CodeEdit/Utils/Extensions/Int · high confidence
Added internal development inspector for testing notifications and logs
The previous placeholder content view has been replaced with an Internal Development Inspector that provides two sections for testing: a Notification panel allowing users to configure and trigger test notifications with various icons (symbols, images, text, emojis), colors, titles, descriptions, and action buttons, and an Output Utility panel with buttons to push error, warning, info, and debug logs to the internal development output source.
CodeEdit/Features/InspectorArea/InternalDevelopmentInspector · high confidence
Added relative date formatting and log-specific date formatting utilities
Users can now display dates as relative strings (e.g., "2 hours ago" or "Yesterday") using the new \relativeStringToNow\ method, which automatically handles localization and omits time for older dates. Additionally, a \logFormatted\ method is available to format dates specifically for log outputs using a precise \HH:mm:ss.SSSS\ pattern.
CodeEdit/Utils/Extensions/Date · high confidence
Added view offset tracking for scrollable preferences views
A new SwiftUI preference key, ViewOffsetPreferenceKey, has been introduced in the Preferences module to track scroll offsets within scrollable views. This internal component enables the UI to maintain and reduce view offset states, likely supporting better scroll position management or state persistence in the preferences interface.
CodeEditUI · high confidence
Expanded Language Server Protocol (LSP) capability support
The LSP integration now supports a significantly broader range of language server features, enabling richer code intelligence within CodeEdit. This update introduces handlers for call hierarchy (incoming and outgoing calls), color presentation, and document color requests. Navigation capabilities are enhanced with support for go-to-definition, go-to-declaration, type definitions, and implementations. Code assistance features now include completion with caching, hover information, signature help, inlay hints, and document highlights. Additionally, the editor supports document symbols, folding ranges, references, renaming, selection ranges, and formatting (full, range, and on-type). Document synchronization has been improved to handle open/close events and incremental or full text changes, while diagnostics and semantic tokens are now requested to provide real-time feedback and accurate syntax highlighting.
CodeEdit/Features/LSP/LanguageServer/Capabilities · high confidence
Experimental language server installation UI in Extensions settings
The Extensions settings page now includes a dedicated section for managing language servers, allowing users to search, install, enable, disable, and remove LSP packages directly from the interface. This new view displays a warning that the feature is experimental, provides detailed package information (name, description, homepage), and manages installation progress with options to cancel or retry failed operations. It also persists the state of installed servers and their enabled status in the application settings.
CodeEdit/Features/Settings/Pages/Extensions · high confidence
Global notification system and task management toolbar items
CodeEdit now includes a global notification system that displays in-app banners and system notifications (with action buttons) when the app is in the background, managed by the new NotificationManager and visible via the NotificationPanelView and NotificationToolbarItem. Additionally, macOS 26+ workspaces gain StartTaskToolbarItem and StopTaskToolbarItem buttons in the toolbar to execute and stop the currently selected task, automatically opening the debug console utility area if it is collapsed.
CodeEdit · high confidence
Initial Bitbucket and GitHub account integration support
This change introduces the foundational account models, OAuth configurations, and API routers for both Bitbucket and GitHub within the Source Control Accounts feature. For Bitbucket, it adds support for OAuth token management, refreshing tokens, and fetching user profiles and repositories. For GitHub, it provides comprehensive support for OAuth flows, fetching user details, managing gists, issues, pull requests, reviews, and repositories, including specific handling for GitHub API preview headers.
CodeEdit/Features/SourceControl/Accounts · high confidence
Initial English localization strings for settings, welcome screen, and editor
CodeEdit now includes its first set of English localization strings, enabling the display of user-facing text in the Settings panel (General, Appearance, Terminal, and Editor Theme sections), the Welcome Screen (new file, clone project, open file/folder, and SCM options), and core editor interactions (file opening errors, sidebar navigation, and file management actions like Copy Path and Show in Finder).
CodeEdit/Localization/en.lproj · high confidence
Introduce 'Hide Interface' mode to collapse all UI panels
Users can now toggle a 'Hide Interface' mode that collapses the Navigator, Inspector, Utility Area, and Toolbar simultaneously, allowing for a distraction-free coding view. This feature, implemented in the window controller extensions, remembers the previous state of each panel so that toggling the mode off restores the layout exactly as it was before hiding. The implementation includes logic to determine desired collapse states, store and reset interface visibility states, and integrates with the existing split-view and toolbar systems to ensure smooth transitions.
CodeEdit/Features/Documents/Controllers · high confidence
Introduce 'Open Quickly' feature with fuzzy search and file preview
Users can now open files using the 'Open Quickly' panel, which provides fuzzy search capabilities across the project directory. The feature highlights matched characters in search results to improve visibility and includes a preview pane that displays text files for editing and non-text files for viewing, ensuring correct handling of different file types.
CodeEdit/Features/OpenQuickly · high confidence
Introduce CodeFileDocument for file handling and encoding support
This change introduces the \CodeFileDocument\ class, which serves as the core document model for managing code files within the editor. It handles file reading and writing with specific support for UTF-8 and UTF-16 (Big Endian and Little Endian) encodings, ensuring files are saved with the same encoding they were loaded with. The document also integrates with the language server protocol (LSP) via \LanguageServerDocumentObjects\, enabling features like syntax highlighting and semantic token decoding, while managing document state such as edit status and cursor positions.
CodeEdit/Features/Documents/CodeFileDocument · high confidence
Introduce Extensions feature with discovery, management, and UI
This change adds the foundational infrastructure for the Extensions feature in CodeEdit. It introduces a new \ExtensionsManager\ and \ExtensionDiscovery\ service that automatically detects available app extensions, handles activation of disabled or unapproved extensions by modifying the system's Launch Services settings store, and exposes the list of active extensions to the UI. A new \ExtensionManagerWindow\ scene provides a dedicated interface for users to view installed extensions, see their details (name, version, icon, features), and manage them. The implementation includes SwiftUI views (\ExtensionsListView\, \ExtensionDetailView\, \ExtensionActivatorView\) and an \ExtensionSceneView\ to host extension UIs within the app, along with a custom \CommandsForEach\ structure to support command menu generation for extensions.
CodeEdit/Features/Extensions · high confidence
Introduce Find Navigator result list UI components
Added the SwiftUI view and underlying AppKit controllers that render search results in the Find Navigator. This includes a new \FindNavigatorResultList\ view that bridges to a custom \NSOutlineView\-based controller, displaying file matches with icons and truncated labels, and respecting the user's project navigator row height setting.
CodeEdit/Features/NavigatorArea/FindNavigator/FindNavigatorResultList · high confidence
Introduce InspectorAreaViewModel for tab state management
Added a new InspectorAreaViewModel class to manage the selected inspector tab and the list of available tab items. This view model exposes the currently selected tab (defaulting to .file) and provides a method to update the selection, serving as the data source for the inspector area's UI.
CodeEdit/Features/InspectorArea/ViewModels · high confidence
Introduce StatusBarViewModel for status bar data binding
A new StatusBarViewModel has been added to manage the data displayed in the status bar. This view model exposes published properties for the currently opened file's size, image dimensions (for non-text files), and breakpoint status, along with configuration for the status bar's font and text color, enabling the UI to reactively update based on the active file context.
CodeEdit/Features/StatusBar/ViewModels · high confidence
Introduce data models for source control account settings
This change adds the underlying data structures for managing source control accounts in the application's settings. It defines \AccountsSettings\ to hold the list of saved accounts and \SourceControlAccount\ to represent individual credentials, including support for providers like GitHub, GitLab, and Bitbucket, as well as configuration for HTTPS vs SSH protocols and authentication types.
CodeEdit/Features/Settings/Pages/AccountsSettings/Models · high confidence
Introduce internal model structures for the Feedback feature
Added the \FeedbackIssueArea\ and \FeedbackType\ data models to support the new Feedback feature. These structs provide the necessary Identifiable and Hashable conformance for the UI components to display and manage issue areas and feedback types.
CodeEdit/Features/Feedback/Model · high confidence
Introduce keybinding management and command palette infrastructure
This change adds the foundational infrastructure for managing keyboard shortcuts and executing commands within the application. It introduces a \CommandManager\ singleton to register and execute commands via a command palette, a \KeybindingManager\ that loads default shortcuts from a JSON configuration file (\default\_keybindings.json\), and a \ModifierKeysObserver\ using Combine to track modifier key states. Users will benefit from a structured system for defining and invoking actions through keyboard shortcuts, although the current default configuration only includes basic copy/paste mappings.
CodeEdit/Features/Keybindings · high confidence
Introduce new Source Control data models
This change adds a set of new Swift structs and enums to the Source Control module to represent Git entities, including GitBranch, GitBranchesGroup, GitChangedFile, GitCommit, GitRemote, GitStashEntry, and GitStatus. These models provide the underlying data structures for displaying branch information, tracking file changes and statuses, managing commit history with remote URL parsing, and handling stashes, forming the foundation for the source control UI and logic.
CodeEdit/Features/SourceControl/Models · high confidence
Introduces custom SwiftUI SplitView with resizable dividers and collapse support
Adds a new set of SwiftUI views and modifiers in the SplitView feature module to replace or augment the native split view behavior. This includes a custom \SplitView\ container that wraps an \NSSplitViewController\, allowing for configurable divider styles (including thicker editor separators) and explicit collapse/expand states for child panes. The update introduces view modifiers like \.collapsed()\, \.collapsable()\, and \.holdingPriority()\ to control layout behavior, along with a \SplitViewProxy\ to programmatically adjust divider positions and collapse views from within the view hierarchy.
CodeEdit/Features/SplitView/Views · high confidence
Introduces fundamental file indexing and search capabilities
Adds a new \SearchIndexer\ system that wraps the macOS SearchKit framework to index workspace files. This change introduces support for both in-memory and persistent file-based indexes, enabling users to search code content with progressive, chunked results to maintain UI responsiveness. It includes asynchronous file iteration and indexing operations to keep the main thread unblocked, along with utilities for MIME type detection and document state management.
CodeEdit/Features/Documents/Indexer · high confidence
Introduces generic fuzzy search capability for lists
Adds a new fuzzy search module to the application, providing a \FuzzySearchable\ protocol and associated models that allow any collection of items to be searched using a weighted, case-insensitive matching algorithm. This includes a \FuzzySearchUIModel\ class that handles debounced, asynchronous search updates for UI binding, enabling more flexible and performant search experiences across different feature areas.
CodeEdit/Features/Search/FuzzySearch · high confidence
Introduces task execution state management and status tracking
This change adds the core model components for managing running tasks within the Tasks feature. It introduces \CEActiveTask\, a class that tracks the lifecycle of a task execution (including running, finished, failed, stopped, and cancelled states) and handles process control signals like SIGTERM and SIGINT. It also adds \CETaskStatus\, an enum defining these states with associated UI colors, enabling the UI to reflect the real-time status of background tasks.
CodeEdit/Features/Tasks/Models · high confidence
Introduction of Activity Viewer for Task Status
A new Activity Viewer component has been added to the application, providing a dedicated UI area to display the status of executed tasks. This feature includes a task notification model to track task details such as title, message, and progress percentage, and integrates with the workspace settings and file manager to present current task states within the activity bar.
CodeEdit/Features/ActivityViewer · high confidence
Introduction of Keybindings Settings Model
A new model for managing keybindings settings has been added to the application. This component initializes keybindings from the shared manager, handles decoding from persistent storage with default values, and automatically appends any new keybindings defined in the default configuration to ensure users receive updates for new shortcuts in future app versions.
CodeEdit/Features/Settings/Pages/Keybindings · high confidence
Introduction of ShellClient for asynchronous shell command execution
A new ShellClient utility has been added to the CodeEdit codebase, providing a centralized way to run shell commands via /bin/zsh. This component supports three execution modes: synchronous blocking calls, reactive streams using Combine publishers, and modern async/await streams, enabling the application to execute and process command-line output more flexibly.
CodeEdit/Utils/ShellClient · high confidence
Native preview support for non-text files
The editor now supports opening and previewing non-text files (such as images and PDFs) directly within the editor area. Instead of failing or showing raw data, the view layer now routes non-text files to specific preview components: \ImageFileView\ for images, \PDFFileView\ for PDFs, and \AnyFileView\ (using QuickLook) for other supported types. This functionality is integrated into the main \EditorAreaFileView\ and the single-file \WindowCodeFileView\, allowing users to view file contents via native macOS preview mechanisms.
CodeEdit/Features/Editor/Views · high confidence
New About window with detailed contributors and acknowledgements
The About window now includes dedicated sections for Contributors and Acknowledgements. The Contributors section displays a list of project contributors with their avatars, names, and contribution tags (such as code, design, or infrastructure), linking to their GitHub profiles. The Acknowledgements section lists third-party dependencies by parsing the Package.resolved file, showing their names and versions, with links to their repositories. Additionally, clicking the app version string in the header now copies the CodeEdit version, build number, and macOS version to the clipboard for easier bug reporting.
CodeEdit/Features/About · high confidence
New Developer Settings page for LSP and inspector configuration
A new Developer settings page has been added to the application, allowing users to manage Language Server Protocol (LSP) binaries and toggle the internal development inspector. Users can now specify the absolute path to LSP binaries for specific languages via a key-value table and enable or disable the internal development inspector through a dedicated toggle.
CodeEdit/Features/Settings/Pages/DeveloperSettings · high confidence
New Feedback submission interface
A new FeedbackView has been added to the application, providing users with a dedicated UI to submit feedback or report issues. The interface collects basic information such as the feedback title, issue area, and type, along with detailed descriptions, reproduction steps, and expectations via text editors. It integrates with a shared feedback model to handle submission states, displaying success or failure messages, and includes validation logic that highlights required fields if the user attempts to submit without filling them in. The view also handles the case where a GitHub account is required for submission, presenting an alert to add an account if one is not present.
CodeEdit/Features/Feedback · high confidence
New File Inspector view for editing file properties and text settings
A new FileInspectorView has been introduced in the InspectorArea, providing users with a dedicated panel to view and modify file-specific attributes. Users can now rename files directly within the editor, change the detected programming language via a picker, and adjust text editing preferences such as indentation type (tabs vs. spaces), tab width, and line wrapping. The view also displays the file's current location and allows users to move the file to a new path, with automatic handling of tab closures and re-opening to reflect the new location.
CodeEdit/Features/InspectorArea/FileInspector · high confidence
New Git Clone and Branch Checkout UI
The Source Control feature now includes a dedicated Git Clone panel that validates repository URLs, checks for a local Git installation before proceeding, and offers a progress sheet during the cloning process. Upon successful cloning, if the repository contains multiple remote branches, the user is prompted with a new Branch Checkout view to select and switch to a specific branch; otherwise, the project opens directly.
CodeEdit/Features/SourceControl/Clone · high confidence
New Git History Inspector with instant popovers
The History Inspector now displays a list of Git commits for the currently active file, automatically refreshing when you switch files or tabs. Selecting a commit reveals an instant popover showing commit details and actions, such as emailing the author, while providing a placeholder for future features like code review integration.
CodeEdit/Features/InspectorArea/HistoryInspector · high confidence
New Git ignore pattern management and source control settings models
The Source Control Settings area now includes a new \IgnorePatternModel\ that manages Git ignore patterns, including loading, saving, and monitoring changes to the global Git ignore file. Additionally, \SourceControlSettings\ provides a structured model for source control preferences, including general settings (e.g., enabling source control, automatic status refresh, file staging) and Git-specific settings (e.g., rebase on pull, merge commit display).
CodeEdit/Features/Settings/Pages/SourceControlSettings/Models · high confidence
New LSP Registry installation infrastructure and error handling
This change introduces the core backend components for the new Language Server Protocol (LSP) installation system within the Registry feature. It adds specific error types for package manager and registry operations, defines data models for package sources and installation methods (supporting standard, source build, and binary download), and implements the \PackageManagerProtocol\ along with concrete managers for Cargo, GitHub, Go, NPM, and Pip. These files provide the execution logic for installing language servers, including directory initialization, command execution, and progress tracking, laying the groundwork for the improved installation UX.
CodeEdit/Features/LSP/Registry · high confidence
New LSP semantic token highlighting system
CodeEdit now supports syntax highlighting via the Language Server Protocol's semantic tokens feature. This change introduces a new \SemanticTokenHighlightProvider\ and supporting storage classes that manage the lifecycle of token data, including requesting full token sets and efficient delta updates from the language server. The system decodes LSP semantic token legends into editor-specific highlight ranges, enabling more accurate, language-aware syntax highlighting that updates dynamically as the document changes.
CodeEdit/Features/LSP/Features/SemanticTokens · high confidence
New Source Control Changes UI in Navigator
The Source Control Navigator now features a dedicated Changes view that consolidates commit, sync, and file management. Users can write commit messages and detailed descriptions, stage or unstage all files, and perform commits directly from the navigator. The view also displays sync status (ahead/behind counts) with buttons to pull or push, and lists changed files with context menu options to view in Finder or open in a new tab. If no Git remotes are configured, a prompt to add a remote is shown.
CodeEdit/Features/NavigatorArea/SourceControlNavigator/Changes · high confidence
New Source Control Git Client Implementation
CodeEdit introduces a new, modular Git client implementation located in the Source Control Client module. This change replaces the previous Git handling with a comprehensive suite of Swift extensions covering core version control operations: repository initialization, cloning with live progress tracking, branch management (listing, switching, renaming, deleting), commit history retrieval, file status parsing using Git porcelain v2 format, and remote operations including push (with force and tags support), pull, fetch, and stash management. It also adds a dedicated Git configuration client for reading and writing local and global settings.
CodeEdit/Features/SourceControl/Client · high confidence
New Source Control History tab with commit details and avatars
A new History tab has been added to the Source Control Navigator, allowing users to view a list of commits with author avatars (fetched from Gravatar or generated as colored placeholders), commit messages, tags, and branch references. Selecting a commit opens a detail view that displays the full commit message, co-author information, and a list of changed files, providing a richer context for reviewing repository history directly within the navigator.
CodeEdit/Features/NavigatorArea/SourceControlNavigator/History · high confidence
New Source Control Navigator with History and Repository tabs
The Source Control Navigator now features a segmented control allowing users to switch between Changes, History, and Repository views. The History tab displays commit history, while the Repository tab provides repository-specific information. A new bottom toolbar includes a filter button and a menu for discarding or stashing changes, with alerts shown when no changes are present. The navigator also automatically fetches status updates every 10 seconds if enabled in settings.
CodeEdit/Features/NavigatorArea/SourceControlNavigator/Views · high confidence
New Source Control dialogs for push, pull, branch, and remote management
CodeEdit now presents dedicated modal sheets for key Git operations, replacing previous inline or implicit behaviors. Users can now explicitly configure Push operations with options to force-push and include tags, and Pull operations with a rebase toggle. A new RemoteBranchPicker view allows selecting specific remotes and branches for these actions. Additionally, new dialogs handle creating and renaming branches, adding existing remotes, stashing changes (with optional auto-apply after pull or switch), and confirming branch switches. A new fetch progress view provides feedback during background fetches.
CodeEdit/Features/SourceControl/Views · high confidence
New Source Control file list and label views
Added GitChangedFileLabel and GitChangedFileListView SwiftUI components to the Source Control Navigator. These views display changed files with their status, handle file icon styling (color vs. monochrome), and provide a toggle to stage or unstage individual files directly from the list.
CodeEdit/Features/NavigatorArea/SourceControlNavigator/Views/ChangedFile · high confidence
New Source Control settings page with Git configuration and ignored files management
A new Source Control settings page has been added, allowing users to enable or disable source control features and configure Git-specific options. The General tab provides toggles for automatic status refreshing, file selection, and display preferences, including a picker to choose the comparison view layout (local revision on left or right) and the navigator sort order (name or date). The Git tab allows users to set global Git configuration values such as author name, email, default branch name, and pull behavior (prefer rebase), as well as manage global ignored file patterns via the Ignored Files list view. Users can also open their local .gitconfig and .gitignore\_global files directly in the editor from this page.
CodeEdit/Features/Settings/Pages/SourceControlSettings · high confidence
New TaskManager class for executing and controlling tasks
A new TaskManager class has been introduced in the Tasks feature to handle the lifecycle of tasks, including starting, stopping, suspending, resuming, and interrupting them. This component manages active task states and integrates with workspace settings to allow users to run and control background processes directly from the application.
CodeEdit/Features/Tasks · high confidence
New Terminal Settings page with shell, font, and cursor controls
A new Terminal Settings page has been added, allowing users to configure the terminal emulator's behavior and appearance. Users can now select the default shell (System Default, Zsh, or Bash), toggle the Option key as Meta, and choose whether to use the text editor's font settings. When using a custom font, specific font name, size, and weight can be adjusted. Additionally, the terminal cursor style (Block, Underline, or Bar) and blinking behavior are configurable. The page also includes options for shell integration (enabling features like terminal title detection) and whether to use a login shell.
CodeEdit/Features/Settings/Pages/TerminalSettings · high confidence
New UI component library and styling system
This update introduces a comprehensive set of new SwiftUI views and styles to the CodeEdit interface, including capsule and icon button styles, an instant popover modifier for immediate feedback, and specialized controls like a key-value table, pane text field, and search panel. It also adds visual enhancements such as glass and effect views, a feature icon component, and a custom outline group for better tree view control, collectively modernizing the app's look and feel.
CodeEdit/Features/CodeEditUI · high confidence
New URL utility extensions for file system and LSP integration
This change introduces a suite of new extensions to the \URL\ type in \CodeEdit/Utils/Extensions/URL\ to support improved file handling and Language Server Protocol (LSP) interactions. Key additions include \lspURI\ for generating stable file URIs required by LSP, \findWorkspace\ to locate the containing workspace document, and \componentCompare\/\containsSubPath\ for robust file system path comparisons. Additional utilities provide access to file metadata (such as \isFolder\, \isSymbolicLink\, and \contentType\), simplified filename extraction, fuzzy search string generation, and URL parameter parsing for Git integrations.
CodeEdit/Utils/Extensions/URL · high confidence
New account management interface with SSH key support
The Accounts Settings page has been redesigned to provide a dedicated workflow for managing source control accounts. Users can now add accounts for GitHub, GitLab, and self-hosted instances via a new sign-in view that validates credentials and checks for duplicates. The interface includes a picker for selecting SSH keys from the local \~/.ssh directory, with options to create new keys (supporting ED25519, ECDSA, RSA, and DSA types) or choose existing ones. Account details, including description, server URL, and clone protocol (HTTPS/SSH), can be edited, and accounts can be deleted via a confirmation alert.
CodeEdit/Features/Settings/Pages/AccountsSettings · high confidence
New bundled themes with bold keyword support
CodeEdit now includes a new set of bundled themes (Basic, Civic, Classic, Default, Dusk, GitHub, High Contrast, Low Key, Midnight, Presentation, Solarized, and Sunset) in both light and dark variants. These themes are stored as JSON files in the DefaultThemes directory and support bold formatting for code keywords, enhancing syntax distinction in the editor.
DefaultThemes · high confidence
New file system monitoring and workspace file management infrastructure
The CEWorkspace feature introduces a new \CEWorkspaceFileManager\ that uses macOS File System Events to automatically detect and reflect external file changes, renames, and deletions in the project navigator without requiring manual refreshes. This includes a new \DirectoryEventStream\ component for handling file system notifications, a \CEWorkspaceFile\ model for representing files and folders, and logic to rebuild the cached file tree when the underlying file system changes. Users will see the project navigator stay in sync with the file system in real-time, including updates to Git status when source control is enabled.
CodeEdit/Features/CEWorkspace · high confidence
New protocols for settings introspection and searchability
Added the \Loopable\ protocol, which provides a default implementation to introspect struct and class properties and return them as a dictionary, and the \SearchableSettingsPage\ protocol, which defines a \searchKeys\ property to support settings search functionality.
CodeEdit/Utils/Protocols · high confidence
New search result and mode data models
The search feature now uses dedicated model structs to manage search configuration and results. SearchModeModel defines the hierarchy of search types (Find, Replace, Text, References, Definitions, Regular Expression, Call Hierarchy) and their matching modes. SearchResultModel and SearchResultMatchModel handle the data for individual file matches, including scoring, line content, and keyword ranges, with SearchResultMatchModel providing formatted attributed strings for displaying matches in the UI.
CodeEdit/Features/Search/Model · high confidence
New settings UI components and invisible character warning feature
The Settings interface now includes a suite of new SwiftUI views to enhance configuration and usability. Users can now configure and manage invisible or ambiguous characters (such as zero-width spaces) via the new WarningCharactersView and InvisibleCharacterWarningList, which allow adding, editing, and restoring default warning characters. The settings UI also gains improved font selection with MonospacedFontPicker and FontWeightPicker, a dedicated SettingsColorPicker for theme customization, and structural improvements like SettingsForm with scroll-aware sticky headers, ExternalLink for documentation, and navigation helpers like NavigationBarBackButtonVisible. These changes collectively modernize the Settings experience with better grouping, search support, and visual consistency.
CodeEdit/Features/Settings/Views · high confidence
New settings for invisible characters and editor overscroll
The Text Editing settings page now includes controls for visualizing invisible characters, allowing users to toggle the display of spaces, tabs, and various line endings (line feeds, carriage returns, paragraph separators, and line separators) with customizable replacement characters. Additionally, an Editor Overscroll setting has been added, letting users choose between None, Small, Medium, or Large overscroll behavior in the editor.
CodeEdit/Features/Settings/Pages/TextEditingSettings · high confidence
New shell integration scripts for Bash and Zsh
Added shell integration scripts for Bash and Zsh that enable proper terminal title updates (showing the shell name or running command) and support for preexec/precmd hooks. These scripts, sourced from modified versions of Microsoft's VSCode shell integration, are designed to be injected by the terminal emulator to enhance the user experience without modifying the user's existing RC files.
CodeEdit/ShellIntegration · high confidence
New status bar controls for breakpoints, cursor position, and file details
The status bar now includes dedicated UI components for managing breakpoints, viewing cursor position and selection details, and displaying file information. Users can toggle breakpoints directly from the status bar, see line/column numbers and selection lengths (with character offsets when holding Option), and view file size and image dimensions for media files. Additional controls for indentation, encoding, and line endings are also present, along with a button to toggle the utility area.
CodeEdit/Features/StatusBar/Views/StatusBarItems · high confidence
New string utility extensions for file validation, hashing, and text manipulation
Added a suite of new String extensions in CodeEdit/Utils/Extensions/String to support core editor features. These include isValidFilename for validating macOS file names, MD5 and SHA256 hashing for file integrity checks, escapedDirectory and escapedWhiteSpaces for shell command safety, highlightOccurrences for UI search result visualization, and helpers like getFirstLines/getLastLines and appearancesOfSubstring for text analysis.
CodeEdit/Utils/Extensions/String · high confidence
New task notification system with progress tracking
The Activity Viewer now supports a new task notification system that displays real-time progress for background operations. Users will see a circular progress indicator in the notification area, which shows a percentage when available or an animation while loading. If multiple tasks are active, a count badge is displayed. Tapping the notification opens a detail view listing all active tasks with their titles, messages, and individual progress bars.
CodeEdit/Features/ActivityViewer/Notifications · high confidence
New theme management interface with import, export, and detailed editing
The Theme Settings page now provides a complete workflow for managing custom themes. Users can import new themes, export individual or all custom themes, and duplicate bundled themes to create editable copies. A new 'Details' view allows deep customization of token colors, including bold and italic styling for keywords, commands, types, and other syntax elements. The interface also includes a search bar with fuzzy filtering to quickly locate themes, and a color preview component that visualizes how a theme's syntax highlighting will appear.
CodeEdit/Features/Settings/Pages/ThemeSettings · high confidence
New toolbar buttons for starting and stopping tasks
Added StartTaskToolbarButton and StopTaskToolbarButton to the Tasks views. The start button executes the active task, opens the utility drawer if collapsed, and switches the tab to the debug console. The stop button appears only when a task is running, allowing users to terminate it, with visual feedback that dims when the app is inactive.
CodeEdit/Features/Tasks/Views · high confidence
New utility area toolbar controls for terminal management
The utility area toolbar now includes dedicated buttons for managing the terminal view: a clear button to reset the terminal output, a filter text field to search through terminal content, a maximize button to toggle the terminal's size, and a split terminal button (currently a placeholder). These components provide direct user controls for terminal interaction within the utility area.
CodeEdit/Features/UtilityArea/Toolbar · high confidence
New utility extensions for color conversion and table view styling
This update introduces new helper utilities for developers and internal UI components. It adds \Color+HEX\ and \NSColor+HEX\ extensions, enabling the initialization of colors from hexadecimal strings or integers and providing properties to retrieve hex representations. Additionally, it adds an \NSTableView\ extension that automatically clears the background color and disables background drawing when the view is added to a window, ensuring a transparent appearance in SwiftUI list-based interfaces.
CodeEdit/Features/Feedback/HelperView, CodeEdit/Utils/Extensions/Color, CodeEdit/Utils/Extensions/NSTableView · high confidence
New utility to center child windows over parent windows
A new extension method \addCenteredChildWindow\ has been added to \NSWindow\, allowing child windows to be automatically positioned at the center of their parent window. This utility simplifies the creation of modal or auxiliary dialogs that need to remain visually anchored to the main workspace window.
CodeEdit/Utils/Extensions/NSWindow · high confidence
Project Navigator toolbar gains file creation and filtering controls
The Project Navigator now includes a bottom toolbar that allows users to create new files and folders directly within the active directory, toggle sorting preferences (folders on top vs. alphabetical), and filter the view by recent files or source-control status.
CodeEdit/Features/NavigatorArea/ProjectNavigator · high confidence
Project initialization with core documentation and configuration
The repository has been initialized with essential project scaffolding, including a comprehensive README, a Code of Conduct, and a Contributing guide to establish community standards and onboarding workflows. Development tooling is configured via a .gitignore file tailored for macOS and Xcode environments, a .swiftlint.yml file enforcing code style rules (such as spaces over tabs and missing documentation warnings), and a CodeEditTestPlan.xctestplan defining the initial test suite targets.
(repo-wide) · high confidence
Redesigned terminal management UI with sidebar and picker
The terminal utility area now features a dedicated sidebar listing all open terminals, allowing users to select, reorder, and remove tabs via a list interface. A new picker in the toolbar provides an alternative way to switch between terminals, and the sidebar includes context menu options for creating new terminals with specific shells. This change replaces the previous tab-switching mechanism with a more explicit sidebar-based navigation model.
CodeEdit/Features/UtilityArea/TerminalUtility · high confidence
Status bar now displays file size and image dimensions for non-text files
The status bar now provides detailed metadata for non-text files, specifically showing file size and, for images, their pixel dimensions. This is achieved through a new \UpdateStatusBarInfo\ view modifier that computes these values from file resource values and updates the \StatusBarViewModel\ whenever the active editor tab changes or the view appears, ensuring the status bar reflects the current file's properties accurately.
CodeEdit/Features/StatusBar/ViewModifiers · high confidence
Task output display and controls in the Debug utility area
The Debug utility area now includes a dedicated view for running tasks, featuring a sidebar list of active tasks and a main pane that renders task output using a terminal emulator. Users can manage tasks directly from this interface by running, stopping, suspending, or resuming them, as well as clearing output and scrolling to the bottom of the log.
CodeEdit/Features/UtilityArea/DebugUtility · high confidence
Workspace search, indexing, and find-and-replace capabilities
The WorkspaceDocument now includes a built-in search system that indexes the entire project for fast, accurate file-wide searches. Users can search for text across all files in the workspace, with support for case sensitivity and various match modes (containing, starting with, ending with, matching word). The system also provides a find-and-replace feature that allows users to replace occurrences of a term across multiple files in the workspace, with options for regular expressions and case insensitivity. The search functionality is integrated into the workspace document, providing status updates and error handling for indexing and search operations.
CodeEdit/Features/Documents/WorkspaceDocument · high confidence
Architecture
Xcode project migrated to modern build system and expanded framework dependencies
The Xcode project file has been upgraded to object version 73, enabling modern build system features such as file-system synchronization for the main app, tests, and the OpenWithCodeEdit extension. This structural change accompanies a significant expansion of linked frameworks, adding support for CodeEditKit, CodeEditSourceEditor, SwiftTerm, LanguageServerProtocol, LanguageClient, GRDB, Sparkle, ZIPFoundation, and several utility libraries, while also embedding the OpenWithCodeEdit.appex extension.
CodeEdit.xcodeproj · high confidence
Behavioural changes
Add LSP range conversion utilities for syntax highlighting
New extension files in the TextView and LanguageIdentifier utilities enable the mapping between the editor's native text ranges and Language Server Protocol (LSP) positions. Specifically, the TextView now includes methods to convert between AppKit's NSRange and LSP ranges, and to provide semantic token ranges, while the LanguageIdentifier maps internal code language types to their LSP equivalents. These changes provide the necessary infrastructure for the editor to correctly apply language server syntax highlights and semantic tokens to the displayed code.
CodeEdit/Utils/Extensions/TextView · high confidence
Editor state restoration and navigation history
The editor now persists and restores cursor positions, scroll positions, and find/replace text across sessions using a local SQLite database, and introduces a navigation history system that allows users to move backward and forward through recently viewed files within a tab group.
CodeEdit/Features/Editor/Models · high confidence
Expanded text editing configuration options
The text editing settings model now exposes a broader range of configurable options, including controls for editor overscroll, font weight, line height, letter spacing, gutter visibility, minimap display, code folding ribbons, and invisible character handling. It also introduces a system cursor option for macOS 14+ and registers toggle commands for type-over completion, brace autocomplete, and word wrap in the command palette.
CodeEdit/Features/Settings/Pages/TextEditingSettings/Models · high confidence
Highlight search query in 'Open Quickly' results
The 'Open Quickly' command palette now visually highlights the text matching the user's search query within the result labels. This is implemented via a new \QuickSearchResultLabel\ view that uses a bridge to UIKit's \NSTextField\ to apply bold styling and specific coloring to the matched characters, improving the visibility of search matches in the command palette.
CodeEdit/Features/Search/Views · high confidence
Highlight search query in 'Open Quickly' results
The 'Open Quickly' command palette now visually highlights the user's search text within the filtered command list. When a user types a query, the matching portion of each command title is displayed in bold and the label color, making it easier to see which part of the command matched the input. This is implemented by updating the QuickActionsViewModel to generate attributed strings for command titles and passing them to the result label view.
CodeEdit/Features/Commands · high confidence
Improved 'Open Recent' menu and window command utilities
The 'Open Recent' menu now separates files and folders into distinct sections for easier navigation, and displays full paths for items with duplicate names to avoid confusion. Additionally, new utility classes and property wrappers have been added to better manage window controller state and first responder tracking in SwiftUI, ensuring that window-related commands remain responsive and accurate as the active window changes.
CodeEdit/Features/WindowCommands/Utils · high confidence
Improved error messaging and executable permission handling for LSP installation
The LSP installation process now provides clearer user-facing feedback and more precise file permission management. ZipFoundation archive errors (such as unreadable archives, invalid checksums, or missing records) are now translated into human-readable descriptions instead of generic technical codes. Additionally, when installing LSP binaries, the system uses a new utility to set executable permissions specifically for the current user, ensuring the tools run correctly without granting broader execute access to other users.
CodeEdit/Utils/Extensions/FileManager, CodeEdit/Utils/Extensions/ZipFoundation · high confidence
Inspector area now supports extension tabs and configurable internal development view
The Inspector area has been updated to dynamically include tabs for UI extensions (via the \InspectorTab.uiExtension\ case) alongside the existing File and Git History inspectors. Additionally, an Internal Development inspector is now available as a tab, but it is hidden by default and only appears when the \developerSettings.showInternalDevelopmentInspector\ setting is enabled. The view also respects the \general.inspectorTabBarPosition\ setting to control the tab bar layout.
CodeEdit/Features/InspectorArea/Views · high confidence
Introduce SwiftUI-based Command Menu system
The application's menu bar commands have been reorganized into a new SwiftUI \Commands\ structure, consolidating functionality into dedicated modules for File, View, Find, Navigate, Editor, Tasks, Source Control, and Extensions. This change introduces new keyboard shortcuts for editor operations (such as moving lines with ⌘⌥\[ and ⌘⌥\]), task management (⌘R to run, ⌘. to stop), and interface visibility (e.g., ⌘0 to toggle the Navigator, ⌘⇧H to hide the interface). It also adds a dedicated 'Editor' menu for line manipulation and a 'Tasks' menu for running and managing workspace tasks, while replacing the previous command implementation with a more modular, SwiftUI-native approach.
CodeEdit/Features/WindowCommands · high confidence
Introduce new Navigator area with Project, Source Control, and Search tabs
The Navigator area now features a tabbed interface allowing users to switch between Project, Source Control, and Search views. This change introduces the underlying model and view model for this navigation structure, replacing previous implementations with a unified tab system that also supports UI extensions.
CodeEdit/Features/NavigatorArea/Models · high confidence
Introduce the Jump Bar for file navigation
The previous Path Bar has been renamed and replaced with the Jump Bar, providing a horizontal, scrollable navigation trail of the current file's location within the workspace. This new component features dynamic truncation to fit available space, hover effects with chevron indicators, and a context menu that generates submenus for folders on demand, allowing users to quickly jump to any file or folder in the current path.
CodeEdit/Features/Editor/JumpBar · high confidence
Introduction of xcconfig files for build configuration management
The project has migrated to using Xcode configuration files (xcconfig) to manage build settings for different release channels. New files (Alpha.xcconfig, Beta.xcconfig, Debug.xcconfig, Pre.xcconfig, Release.xcconfig) define specific app icon names, version postfixes (e.g., -alpha, -beta, -dev, -pre), and copyright strings for each channel, allowing for distinct branding and versioning in development and pre-release builds while keeping the final release clean.
Configs · high confidence
Natural sorting for file lists and new array utility extensions
File and folder lists in the project navigator are now sorted using natural ordering (e.g., 'file2' comes before 'file10'), with an option to keep folders grouped at the top of the list. Additionally, new array extensions provide convenient access to the second and third elements and a method to calculate the symmetric difference between two arrays.
CodeEdit/Utils/Extensions/Array · high confidence
New General Settings model with expanded configuration options
The application introduces a new \GeneralSettings\ model that consolidates and expands the available configuration options for users. This model defines settings for app appearance (system, dark, light), editor behavior (auto-save, dimming unfocused editors, showing the Jump Bar), and UI customization (file icon styles, file extension visibility, navigator sizes, and sidebar tab bar positions). It also includes settings for window management (reopen behavior, post-close actions) and search indexing keys to improve settings discoverability.
CodeEdit/Features/Settings/Pages/GeneralSettings/Models · high confidence
New General Settings page with macOS Ventura-style UI and expanded configuration options
The General Settings page has been restructured to follow the macOS Ventura Settings interface, introducing a new \GeneralSettingsView\ that organizes preferences into distinct sections. Users can now configure appearance (System/Light/Dark), file icon styles, and the visibility of the Jump Bar (formerly Path Bar). New controls allow toggling the dimming of editors without focus, adjusting navigator and inspector tab bar positions (Top/Side), and managing file extension visibility (hide/show specific extensions). Additional settings cover issue display modes, auto-save, reopen behaviors (Welcome Screen, Open Panel, New Document), and window closure actions. The update also includes a new \actionBar\ view modifier for consistent UI elements within the settings form.
CodeEdit/Features/Settings/Pages/GeneralSettings · high confidence
New LSP Service Architecture for Language Server Management
The LSP service layer has been refactored to use a new \LSPService\ class that manages the lifecycle of language server clients using Swift concurrency. This change introduces dedicated event listening tasks to handle server notifications and requests asynchronously, ensuring that code assistance features like completions and diagnostics are processed efficiently. The service now explicitly handles document open/close events via notifications and provides a structured error type (\LSPServiceError\) for server start, stop, and client lookup failures.
CodeEdit/Features/LSP/Service · high confidence
New Locations and Navigation settings pages, plus macOS 26 sidebar search support
The Settings window now includes dedicated pages for managing file system locations (Application Support, Settings, Themes, Extensions) and configuring navigation behavior (Open in Tabs vs. Open in Place). Additionally, the settings sidebar search has been updated to use the native macOS 26 Tahoe \.searchable\ modifier, aligning the interface with the new System Settings style on supported versions.
CodeEdit/Features/Settings · high confidence
New Navigator Area views and macOS 26 UI adaptations
This change introduces the \NavigatorAreaView\ and \NavigatorFilterView\ components, establishing the visual structure for the navigator sidebar. \NavigatorAreaView\ initializes the tab bar with standard items (Project, Source Control, Search) and dynamically adds sidebar extensions, while \NavigatorFilterView\ provides a filter input field. The filter view includes specific UI adjustments for macOS 26, such as using a native \TextField\ with capsule styling and adjusted border widths, while falling back to a custom \PaneTextField\ on earlier macOS versions to maintain visual consistency.
CodeEdit/Features/NavigatorArea/Views · high confidence
New Source Control Manager implementation
The Source Control feature now uses a new \SourceControlManager\ class and a dedicated \GitClient\ extension to handle Git operations. This change introduces a structured approach to managing repository state, including tracking branches, remotes, stashes, and changed files, while providing methods for common actions like fetching, committing, stashing, and discarding changes.
CodeEdit/Features/SourceControl · high confidence
New Task and Scheme dropdown menus in the Activity Viewer
The Activity Viewer now features dedicated dropdown menus for selecting active tasks and workspace schemes. This change introduces a suite of new SwiftUI views—including \TaskDropDownView\, \SchemeDropDownView\, and supporting components like \ActiveTaskView\ and \OptionMenuItemView\—to replace previous UI patterns. These menus provide hover effects, instant popovers, and distinct visual styles for macOS Tahoe (macOS 26) and Sequoia, allowing users to easily switch between available tasks and manage workspace settings directly from the toolbar area.
CodeEdit/Features/ActivityViewer/Tasks · high confidence
New file system navigator cell views with filtering and Git status support
The project navigator now uses new \FileSystemTableViewCell\, \StandardTableViewCell\, and \TextTableViewCell\ components to render file items. These cells support filtering the navigator view by highlighting matching filenames in bold and changing colors for non-matching items. They also display Git status labels (such as 'A' for added files) and indicate symbolic links with a specific icon. File renaming is handled with validation, showing an error background if the new name is invalid, and the cell appearance adapts to user preferences for file icon styles (color vs. monochrome).
CodeEdit/Features/NavigatorArea/OutlineView · high confidence
New settings model architecture and persistence layer
The settings system has been refactored to use a new model structure located in \CodeEdit/Features/Settings/Models\. This introduces a centralized \Settings\ singleton that persists user preferences to a JSON file (\settings.json\) in the application support directory, replacing previous storage mechanisms. The diff adds core data models including \SettingsData\ (aggregating categories like General, Theme, Terminal, Source Control, etc.), \SettingsPage\ for UI navigation, and \GlobPattern\ for pattern matching. It also implements a SwiftUI \@propertyWrapper\ (\AppSettings\) and an \EnvironmentKey\ to inject settings into the view hierarchy, enabling reactive updates via Combine. Additionally, a runtime swizzle on \NSSplitViewItem\ is included to fix sidebar collapse behavior in the settings window.
CodeEdit/Features/Settings/Models · high confidence
New status bar UI with resizable drawer and utility area tabs
The status bar at the bottom of the window has been redesigned to display file information, cursor position, and a row of toggleable utility area tabs (such as Git or debugger views) via a new \StatusBarView\. Users can now interact with these tabs to switch context and can resize the drawer beneath the status bar by dragging its top edge, allowing for flexible adjustment of the debug or terminal area height.
CodeEdit/Features/StatusBar/Views · high confidence
Project Navigator context menu and outline view behavior changes
The Project Navigator now supports creating new files directly from clipboard content via a context menu option (Command+V) and a dedicated menu item, allowing users to paste code into a new file instantly. The context menu has been reorganized to include 'Copy Path' and 'Copy Relative Path' options, and the 'Delete' action is now split into 'Move to Trash' and 'Delete Immediately' (with Option key) to distinguish between the two operations. Additionally, the outline view now supports multiple file selection, enabling users to select and perform batch operations like moving or copying multiple files and folders at once.
CodeEdit/Features/NavigatorArea/ProjectNavigator/OutlineView · high confidence
Redesigned Find and Replace interface with scoped search and indexing progress
The Find Navigator now features a new UI for search and replace operations, including a mode picker for selecting search types (such as Replace) and toggles for case sensitivity, preserving case, and scoping searches to specific folders or open editors. An index progress bar is displayed at the top to indicate when workspace files are being indexed for search, and the results list now provides clearer status messages for searching, replacing, and error states.
CodeEdit/Features/NavigatorArea/FindNavigator · high confidence
Redesigned Source Control Navigator with branch tracking and context actions
The Source Control Navigator now displays a structured outline of local branches, stashed changes, and remotes. Each branch item shows ahead/behind counts with directional arrows, and the view supports context menu actions to switch, create, rename, apply, or delete branches, stashes, and remotes directly from the navigator.
CodeEdit/Features/NavigatorArea/SourceControlNavigator/Repository · high confidence
Redesigned editor tab bar with native context menu and split-view controls
The editor tab bar UI has been rebuilt using new SwiftUI components, introducing a native right-click context menu for tabs that includes options to close tabs (including 'Close Tabs to the Right'), copy absolute or relative file paths, reveal files in Finder, and split the editor into new panes. The tab bar now features dedicated leading accessories for back/forward navigation history and editor focusing, as well as trailing controls for toggling the minimap and line wrapping, and splitting the view vertically or horizontally.
CodeEdit/Features/Editor/TabBar/Views · high confidence
Redesigned editor tabs with macOS Tahoe styling and unsaved-change indicators
The editor tab bar now uses a new set of SwiftUI components (EditorTabView, EditorTabCloseButton, EditorTabBackground) that apply a macOS Tahoe visual style, including a glass-effect background for active tabs and circular close buttons. Tabs now display an unsaved-changes indicator (a circle badge) on the close button when the file has been modified, and they show a strikethrough on the filename if the underlying file has been deleted externally.
CodeEdit/Features/Editor/TabBar/Tabs/Tab · high confidence
Redesigned tab bar with drag-and-drop reordering and overflow shadows
The editor tab bar now supports dragging tabs to reorder them, with visual feedback and smooth animations. A new overflow shadow view indicates when tabs extend beyond the visible area, improving usability in wide workspaces.
CodeEdit/Features/Editor/TabBar/Tabs/Views · high confidence
Refactored LSP document management and content synchronization
The LSP feature area now uses a dedicated \LSPContentCoordinator\ to handle document changes, batching editor edits into 250ms chunks before sending them to the language server to reduce processing overhead. A new \LanguageServerDocument\ protocol and \LanguageServerDocumentObjects\ struct centralize the registration of document-specific components, including the new content coordinator and the existing semantic token highlight provider. Additionally, \LSPUtil\ provides helper logic to correctly extract and format text edits from completion items, supporting both standard \TextEdit\ and \InsertReplaceEdit\ formats.
CodeEdit/Features/LSP · high confidence
Refactored Language Server lifecycle and added response caching
The Language Server Protocol integration has been restructured to improve reliability and performance. A new caching layer (LSPCache) has been introduced to store and retrieve server responses, reducing redundant network requests. The core LanguageServer class now explicitly manages the server lifecycle, including proper initialization, connection handling, and process tracking via PID. Additionally, a new LanguageServerFileMap tracks open documents and their version numbers, enabling more accurate state management for features like semantic highlighting and document synchronization.
CodeEdit/Features/LSP/LanguageServer · high confidence
Refactored split-view model and introduced thicker editor dividers
The split-view architecture has been refactored to use a new \SplitViewData\ model for managing editor layouts and a \SplitViewItem\ wrapper for \NSSplitViewItem\ state, replacing the previous implementation. Additionally, a new \CodeEditDividerStyle\ enum allows for custom divider styling, specifically introducing a thicker (3.0pt) 'editor divider' with distinct colors for dark and light modes, addressing the visual request for thicker separators.
CodeEdit/Features/SplitView/Model · high confidence
Reworked Utility Area with collapsible sidebars and pane toolbar
The Utility Area now features a new layout structure that supports collapsible leading and trailing sidebars alongside the main content area, controlled via a new \UtilityAreaTabView\ component. This change introduces a dedicated \PaneToolbar\ for managing sidebar visibility and includes a \PaneArea\ environment key to help views identify their position within the pane hierarchy. Users will see updated UI controls for toggling sidebars and a refined toolbar appearance, particularly on macOS 26+.
CodeEdit/Features/UtilityArea/Views · high confidence
Terminal shell integration and view caching improvements
The terminal emulator now uses a new shell integration system that avoids modifying user shell configuration files (like .zshrc) by injecting scripts into a temporary directory for zsh and using an init-file for bash, ensuring user environments remain untouched. Additionally, terminal views are now cached via a shared TerminalCache, allowing terminal sessions to persist and continue receiving output even when not actively displayed in the UI, which helps prevent state loss and output dropping.
CodeEdit/Features/TerminalEmulator/Model · high confidence
Terminal state preservation and task output integration
The terminal emulator now preserves its state (including running processes and output) when the view is removed from the UI hierarchy and re-added, preventing session loss during layout changes. Additionally, a new view type allows background tasks to display their output directly in the terminal, with proper handling of process termination and exit codes.
CodeEdit/Features/TerminalEmulator/Views · high confidence
Theme model refactored with bold/italic support and fuzzy search
The theme model has been updated to support bold and italic text formatting within editor and terminal color attributes, allowing themes to define more granular styling. Additionally, the Theme model now conforms to FuzzySearchable, enabling fuzzy search filtering and sorting of themes directly within the Settings page.
CodeEdit/Features/Settings/Pages/ThemeSettings/Models · high confidence
Updated Xcode scheme configurations for CodeEdit and OpenWithCodeEdit
The Xcode project schemes have been updated to reflect the current build and test configuration. The main CodeEdit scheme now explicitly skips specific UI snapshot tests (such as branch picker, font picker, and help button tests in both dark and light modes) and Welcome module snapshot tests, likely due to instability or environment issues. The OpenWithCodeEdit app extension scheme has also been updated, including configuration for launching the main CodeEdit app alongside the extension.
CodeEdit.xcodeproj/xcshareddata · high confidence
Utility area state is now persisted per workspace
The Utility area's collapsed state, height, and maximization status are now saved and restored individually for each workspace. This ensures that your layout preferences for the utility drawer are remembered when you switch between different projects, rather than applying a global setting across all workspaces.
CodeEdit/Features/UtilityArea/ViewModels · high confidence
Fixes
Added safe string offset calculation to prevent crashes
Introduced a new \String+SafeOffset\ extension that provides safer methods for calculating character offsets within strings. This addition addresses edge cases where standard Swift string indexing could crash, particularly when handling offsets that exceed string bounds or when the starting index equals the limit index. This utility supports more robust text processing in the search and source control features.
CodeEdit/Features/Search/Extensions · high confidence
Fix Task Dropdown Crash in UI Tests
A new \waitForNonExistence\ extension method has been added to \XCUIElement\ to provide a backport of functionality available in Xcode 16, ensuring compatibility with Xcode 15. This change resolves a crash occurring in the Task Dropdown during UI tests by allowing tests to reliably wait for UI elements to disappear.
CodeEditUITests/Extensions · high confidence
Fixes 'Open Quickly' crash with safe collection access
The 'Open Quickly' feature no longer crashes when accessing collection elements out of bounds. A new \subscript\_safe\ extension for \Collection\ has been added to safely return \nil\ for invalid indices instead of throwing a fatal error.
CodeEdit/Utils/Extensions/Collection · high confidence
Test coverage
Added UI automation tests for Project Navigator and Task Menu; Added UI tests for interface hiding and window closing commands; Added UI tests for terminal input and data persistence; Added mock for haptic feedback performer in document tests; Added snapshot tests for UI components; Added test utility extensions and helpers; Added tests for Git status parsing with null characters; Added tests for LSP document lifecycle, semantic token decoding, and language server registry; Added tests for Task Manager and Active Task execution; Added tests for document handling, workspace search, and terminal management; Added tests for editor state restoration and undo manager registration; Added tests for file indexing and search functionality; Added tests for fuzzy search functionality; Added tests for shell integration setup; Added tests for the RecentsStore recent projects list; Added tests for workspace settings URL generation; Added unit tests for Acknowledgements feature; Added unit tests for CEWorkspaceFileManager; Added unit tests for TaskNotificationHandler; Removal of default test scaffolding in CodeEditTests.
Dependencies
Add AppCast Jekyll dependencies and resolve Swift Package Manager pins
This change introduces the necessary Ruby dependencies (Jekyll 3.9, jekyll-github-metadata, kramdown-parser-gfm, and platform-specific gems like wdm and tzinfo) to build the AppCast Jekyll site, alongside a new Package.resolved file that pins Swift Package Manager dependencies such as CodeEditSourceEditor 0.15.1, CodeEditTextView 0.12.1, GRDB.swift 6.29.3, and Sparkle 2.3.0 to specific versions.
(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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 36 → 52 (+16.0)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 90 (-10.5)
- Architecture 69 → 96 (+26.7)
- Maturity 47 → 35 (-12.6)
- Readiness 25 → 62 (+37.4)
- Security 31 → 62 (+31.1)
- Domain Modelling 76 (new)
Resolved (18)
- Dimension evaluation failed
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No artifact signing
- No automated tests
- No exposed public API
- No tests found
- Rotate the exposed credentials — git history can't be un-committed
- Secret: private-key (CodeEdit/Features/Settings/Pages/AccountsSettings/AccountsSettingsDetailsView.swift)
- Test reliability not included
New (282)
- AccountsSettingsDetailsView.body (cognitive 20) (CodeEdit/Features/Settings/Pages/AccountsSettings/AccountsSettingsDetailsView.swift)
- CEWorkspaceFileManager.addFile (cognitive 20) (CodeEdit/Features/CEWorkspace/Models/CEWorkspaceFileManager.swift)
- Change coupling: CodeFileView.swift ↔ TextEditingSettingsView.swift (CodeEdit/Features/Editor/Views/CodeFileView.swift)
- Change coupling: EditorJumpBarMenu.swift ↔ EditorJumpBarView.swift (CodeEdit/Features/Editor/JumpBar/Views/EditorJumpBarMenu.swift)
- Concentrated knowledge decay
- Duplicated block (10 lines × 2) (CodeEdit/Features/Editor/JumpBar/Views/EditorJumpBarComponent.swift)
- Duplicated block (10 lines × 2) (CodeEdit/Features/SourceControl/Clone/GitCheckoutBranchView.swift)
- Duplicated block (10 lines × 2) (CodeEdit/Features/Tasks/ToolbarItems/StartTaskToolbarItem.swift)
- Duplicated block (10–12 lines × 3) (CodeEdit/Features/Extensions/Commands+ForEach.swift)
- Duplicated block (11 lines × 2) (CodeEdit/Features/Editor/TabBar/Views/EditorTabBarContextMenu.swift)
- Duplicated block (11 lines × 4) (CodeEdit/Features/LSP/Registry/PackageSourceParser/PackageSourceParser+Cargo.swift)
- Duplicated block (11 lines × 4) (CodeEdit/Features/NavigatorArea/FindNavigator/FindNavigatorForm.swift)
- Duplicated block (11–14 lines × 2) (CodeEdit/Features/Documents/Controllers/CodeEditDocumentController.swift)
- Duplicated block (12 lines × 2) (CodeEdit/Features/CodeEditUI/Views/WorkspacePanel/WorkspacePanelView.swift)
- Duplicated block (12 lines × 2) (CodeEdit/Features/Feedback/FeedbackView.swift)
- Duplicated block (13 lines × 2) (CodeEdit/Features/CodeEditUI/Styles/CapsuleButtonStyle.swift)
- Duplicated block (13 lines × 2) (CodeEdit/Features/TerminalEmulator/Views/CEActiveTaskTerminalView.swift)
- Duplicated block (14 lines × 2) (CodeEdit/Features/InspectorArea/InternalDevelopmentInspector/InternalDevelopmentNotificationsView.swift)
- Duplicated block (14 lines × 2) (CodeEdit/Features/SourceControl/Accounts/GitHub/Model/GitHubUser.swift)
- Duplicated block (15 lines × 2) (CodeEdit/Features/Feedback/Model/FeedbackModel.swift)
- …and 262 more
Changes since last survey
- 1 commits — 1 feature/other, 0 fixes
By area
- CodeEdit/Assets.xcassets — 1 commit
Notable commits
- change: macOS Tahoe Navigator, Inspector, and Utility Area (#2126)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
CodeEditApp/CodeEdit 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 27 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 fa2aebd86373211c78626074b53ab75010767575 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d00c643c3f66.