Feat/backlog priority fixes - #6
Merged
Merged
Conversation
Unified subsystem for daemon, supervisor, health, app, and deeplink; spool files stay the child-output source of truth.
Bare localhost collapses every project onto one browser origin; prefer <slug>.localhost. Warn only, never fail.
One-bullet render helper so hook install can print a discoverable ensure hint without editing agent docs.
Shared DeepLink + DeepLinkRunner + notification action map so CLI and app dispatch the same verbs.
recoverAtStartup resolves specs via merged config+registry and prunes orphans; daemon install capture-and-re-ensures like restart.
Richer Core Spotlight labels with brand subtitle; ranking stays best-effort within the app's own results.
Register CFBundleURLTypes, handle GetURL for LSUIElement, Open/Why notification actions, hook-install discovery tip, and Launch Services smoke.
Document recoverAtStartup merge view, Interactive ProcessType verification, Spotlight ranking ceiling, and prefer project-named servers with *.localhost hosts.
Wrap changelog-github so Thanks @quantizor is omitted while other contributors still get credited.
quantizor
force-pushed
the
feat/backlog-priority-fixes
branch
from
July 24, 2026 17:50
29a11bc to
39b40ed
Compare
There was a problem hiding this comment.
Pull request overview
This PR bundles several “backlog priority” improvements across the daemon, CLI, and menu bar app, centered on deep-link dispatch (devctl://), better Spotlight discovery, more unified logging, and safer startup/install recovery behaviors.
Changes:
- Add a shared DevCtlKit deep-link surface (
DeepLink,DeepLinkRunner) with CLI support (devctl link, hiddendevctl x-url) and app dispatch (URL opens + notification actions). - Expand Spotlight indexing quality (better titles/keywords, pin-aware ranking, last-used updates, Siri donation) and introduce shared Spotlight label/token generation in DevCtlKit.
- Improve operational ergonomics: unified logging facade (
DevCtlLog), bare-loopback host warnings in config validation, and more robust recover-at-startup + launchd install/restart re-ensure behavior.
Reviewed changes
Copilot reviewed 43 out of 43 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| Tests/DevCtlKitTests/SpotlightLabelTests.swift | Adds unit tests for Spotlight label title/subtitle/keywords behavior. |
| Tests/DevCtlKitTests/ProjectConfigTests.swift | Adds validation tests for bare loopback host warnings. |
| Tests/DevCtlKitTests/DiscoveryStanzaTests.swift | Adds tests for the hook “discovery tip” stanza rendering. |
| Tests/DevCtlKitTests/DevCtlLogTests.swift | Adds tests for the new unified logging facade and recording backend. |
| Tests/DevCtlKitTests/DeepLinkTests.swift | Adds deep-link parsing/round-trip/project-resolution tests. |
| Tests/DevCtlKitTests/DeepLinkRunnerTests.swift | Adds tests for deep-link dispatch logic and side effects. |
| Tests/DevCtlKitTests/DeepLinkNotificationActionTests.swift | Adds tests for notification action → deep-link mapping. |
| Tests/DevCtlDaemonCoreTests/RecoverAtStartupTests.swift | Adds coverage for boot/crash recovery behaviors and orphan state pruning. |
| Sources/DevCtlKit/Spotlight/SpotlightLabel.swift | Introduces shared Spotlight label/title/keyword generation. |
| Sources/DevCtlKit/Log/DevCtlLog.swift | Introduces unified logging facade with OSLog + recording backend. |
| Sources/DevCtlKit/DeepLink/DeepLinkRunner.swift | Implements deep-link dispatch via daemon calls + side effects. |
| Sources/DevCtlKit/DeepLink/DeepLinkNotificationAction.swift | Maps notification action identifiers into DeepLink values. |
| Sources/DevCtlKit/DeepLink/DeepLink.swift | Adds deep-link parse/serialize and project-slug resolution logic. |
| Sources/DevCtlKit/Config/ProjectConfig.swift | Adds config warnings for bare loopback hosts/URLs and helper detection. |
| Sources/DevCtlKit/Agent/DiscoveryStanza.swift | Adds a unit-testable “discovery tip” string generator for hooks. |
| Sources/DevCtlDaemonCore/Supervisor/ServerSupervisor.swift | Adds supervisor log marker when a server becomes healthy. |
| Sources/DevCtlDaemonCore/Registry/Registry.swift | Adds state-row removal API to prune orphaned persisted state. |
| Sources/DevCtlDaemonCore/Control/ControlServer.swift | Adds more daemon logging, improves recoverAtStartup spec resolution + orphan pruning. |
| Sources/DevCtlApp/SpotlightIndexer.swift | Overhauls Spotlight indexing payload, ranking hints, persistence, and donation/update hooks. |
| Sources/DevCtlApp/DevCtlApp.swift | Expands activation handling (Spotlight, devctl:// opens, notification actions) and improves a11y labels/help. |
| Sources/DevCtlApp/DashboardView.swift | Hooks Spotlight “note opened” updates into dashboard open actions; adds a11y label. |
| Sources/DevCtlApp/DaemonModel.swift | Adds actionable notification metadata + category + sound and logs notification emission. |
| Sources/DevCtlApp/AppDeepLink.swift | Adds app-side deep-link execution and notification category registration. |
| Sources/devctl/LaunchdAdmin.swift | Makes install/upgrade capture and re-ensure running servers (same contract as restart). |
| Sources/devctl/CLI.swift | Adds link and hidden x-url, improves hook install output (statusline example + discovery tip), updates “web” examples to “myproj”. |
| scripts/verify-interactive-qos.sh | Adds a verification script for launchd spawn type and child session leadership. |
| scripts/smoke.sh | Extends smoke to validate link + x-url and app bundle URL scheme declaration. |
| scripts/smoke-launchd.sh | Extends launchd smoke to cover install-upgrade bounce + re-ensure contract. |
| scripts/smoke-deeplink.sh | Adds Launch Services E2E smoke for devctl:// warm/cold open flows. |
| scripts/make-app-bundle.sh | Adds CFBundleURLTypes so the app declares the devctl:// URL scheme. |
| README.md | Updates quick-start naming/examples and documents project-named servers + <project>.localhost host guidance. |
| docs/design.md | Updates design spec for deep links, Spotlight, config warnings, and verified launchd interactive claim. |
| docs/cli-contract.md | Documents devctl link and devctl x-url, updates config/launchd and Spotlight contract text. |
| CLAUDE.md | Updates repo guide with deep links/logging/smoke scripts and updated codebase map. |
| BACKLOG.md | Replaces resolved backlog items and adds follow-on items (App Intents, Spotlight constraints, etc.). |
| .changeset/README.md | Documents custom changelog wrapper behavior. |
| .changeset/deeplink-oslog.md | Adds release note entry for deep links + unified logging (but package key needs correction). |
| .changeset/config.json | Switches Changesets changelog generator to local wrapper. |
| .changeset/changelog.cjs | Adds a wrapper to omit “self thanks” while preserving thanks for other contributors. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Use JSONCoding for Spotlight entry persistence, put a status command in the missing-head hint, and drop the ripgrep dependency from verify-interactive-qos.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.