Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
d57cce5
docs(background-indexing): promote design to Evolution 0002 and align…
Mx-Iris Apr 25, 2026
69df72f
docs(background-indexing): translate evolution proposal and plan to C…
Mx-Iris Apr 25, 2026
f74649d
docs(background-indexing): refine engine API notes and add review docs
Mx-Iris Apr 25, 2026
0c3e668
chore(core): add Semaphore as explicit RuntimeViewerCore dependency
Mx-Iris Apr 25, 2026
13647e2
feat(core): add Sendable value types for background indexing
Mx-Iris Apr 25, 2026
f8acb90
feat(core): add DylibPathResolver for @rpath / @executable_path / @lo…
Mx-Iris Apr 25, 2026
7d8ef37
feat(core): add isImageIndexed with request/remote dispatch + factory…
Mx-Iris Apr 25, 2026
964e981
fix(core): normalize path in isImageIndexed; guard test on Foundation…
Mx-Iris Apr 25, 2026
50a9195
feat(core): mainExecutablePath + loadImageForBackgroundIndexing with …
Mx-Iris Apr 25, 2026
98a1bc3
feat(core): imageDidLoadPublisher for per-path load notifications
Mx-Iris Apr 25, 2026
5904d61
feat(core): protocol and mock engine for background indexing
Mx-Iris Apr 25, 2026
febdcd2
docs(core): expand machOImageName helper rationale and consolidation …
Mx-Iris Apr 25, 2026
2189817
feat(core): manager actor skeleton with AsyncStream plumbing
Mx-Iris Apr 25, 2026
f7d515c
feat(core): implement dependency graph BFS for background indexing
Mx-Iris Apr 25, 2026
5af9cb5
feat(core): concurrent batch execution with AsyncSemaphore
Mx-Iris Apr 25, 2026
8a1a5ae
refactor(core): unabbreviate locals; tighten failed-load test assertion
Mx-Iris Apr 25, 2026
c9b9fcd
feat(core): cancelBatch and cancelAllBatches on indexing manager
Mx-Iris Apr 25, 2026
368b824
feat(core): prioritize pending item to head of queue
Mx-Iris Apr 25, 2026
f7acf91
feat(core): expose backgroundIndexingManager on RuntimeEngine
Mx-Iris Apr 25, 2026
df7324a
feat(settings): add BackgroundIndexing settings struct
Mx-Iris Apr 25, 2026
a74fe4f
feat(settings-ui): Background Indexing settings page
Mx-Iris Apr 25, 2026
3f7fd6e
feat(application): coordinator skeleton for background indexing
Mx-Iris Apr 25, 2026
b7c7556
feat(application): documentDidOpen / documentWillClose hooks for inde…
Mx-Iris Apr 25, 2026
7f4b252
feat(application): subscribe to engine image-loaded events to spawn b…
Mx-Iris Apr 25, 2026
eaeccf4
feat(application): observe Settings.backgroundIndexing via withObserv…
Mx-Iris Apr 25, 2026
8843bfa
feat(ui): popover ViewModel on MainRoute + BackgroundIndexingNode
Mx-Iris Apr 25, 2026
878ab34
feat(ui): popover view controller for background indexing
Mx-Iris Apr 25, 2026
9fa84e6
feat(ui): toolbar item view and item class for background indexing
Mx-Iris Apr 25, 2026
9059e26
feat(ui): toolbar item + MainRoute.backgroundIndexing popover route
Mx-Iris Apr 25, 2026
c0a22df
feat(app): wire background indexing coordinator into Document lifecycle
Mx-Iris Apr 25, 2026
521cd0a
feat(app): prioritize indexing when user selects an image in sidebar
Mx-Iris Apr 25, 2026
d93ecda
feat(application): retain failed batches + single reloadData per batc…
Mx-Iris Apr 25, 2026
3f20779
docs(review): final implementation review for background indexing
Mx-Iris Apr 25, 2026
f468ebc
docs(review): ultrareview findings for background indexing
Mx-Iris Apr 26, 2026
c96f229
fix(core): break engine retain cycle; resolve dyld shared cache deps
Mx-Iris Apr 28, 2026
ea4b33b
fix(application): rebind background indexing coordinator on source sw…
Mx-Iris Apr 28, 2026
895a0e2
docs(background-indexing): record post-review fixes for N1 / I3-N2 / N4
Mx-Iris Apr 28, 2026
16e80e9
docs(evolution): renumber bonjour reliability proposal to 0000
Mx-Iris Apr 28, 2026
01c0cf1
chore(build): force package update against Distribution workspace
Mx-Iris Apr 28, 2026
889c74e
test(core): migrate background indexing tests to Swift Testing
Mx-Iris Apr 28, 2026
05d6586
fix(core): make patchImagePathForDyld idempotent
Mx-Iris Apr 28, 2026
60454e3
docs(review): record Pre-1 partial fix (idempotency)
Mx-Iris Apr 28, 2026
a60155a
fix(core): canonicalize paths in loadImage writers
Mx-Iris Apr 28, 2026
c24934b
refactor(background-indexing): adopt RxAppKit bindings in popover
Mx-Iris Apr 28, 2026
f99226c
fix(background-indexing): manager dedup + correct reason + leak cleanup
Mx-Iris Apr 28, 2026
e3b18ba
fix(background-indexing): wire per-batch cancel button in popover
Mx-Iris Apr 28, 2026
7fda3b9
docs(review): mark N3 / Nit-1 / Nit-2 / Nit-3 fixed
Mx-Iris Apr 28, 2026
42246db
fix(background-indexing): make toolbar item clickable + visually live
Mx-Iris Apr 28, 2026
d9818d9
refactor(background-indexing): simplify toolbar item to plain icon bu…
Mx-Iris Apr 28, 2026
8839139
fix(core): resolve main image via MachOImage.current()
Mx-Iris Apr 28, 2026
e94ecc8
style(core): log RuntimeEngine init after manager is set up
Mx-Iris Apr 28, 2026
4cc8f65
fix(background-indexing): resolve more dylib deps under realistic dyl…
Mx-Iris Apr 28, 2026
2971ad9
refactor(settings): nest indexing options under Settings.Indexing.Bac…
Mx-Iris Apr 28, 2026
1ec4e2f
feat(background-indexing): live-bind popover cells with progress + SF…
Mx-Iris Apr 28, 2026
8ae6add
refactor(core): adopt Runtime prefix for background indexing types
Mx-Iris Apr 29, 2026
ab7ca5a
docs(background-indexing): plan history section + revise spec for it
Mx-Iris Apr 29, 2026
a661f06
feat(background-indexing): add coordinator-level history relay
Mx-Iris Apr 29, 2026
8de230f
feat(background-indexing): add section node case + header cell
Mx-Iris Apr 29, 2026
7dd3984
feat(background-indexing): render Active / History sections in popover
Mx-Iris Apr 29, 2026
c5fd25e
fix(background-indexing): order relay updates to avoid transient dupl…
Mx-Iris Apr 29, 2026
30c00d2
fix(background-indexing): bind history batch/item drivers to the hist…
Mx-Iris Apr 29, 2026
1c769eb
fix(background-indexing): pin BatchCellView rows to stack width
Mx-Iris Apr 29, 2026
d191dea
refactor(background-indexing): adopt TableCellView base + restrict ro…
Mx-Iris Apr 29, 2026
d6cc2b2
fix(core): forward background-indexing commands via engine proxy
Mx-Iris May 1, 2026
f48ed20
chore(precompiled-libs): bump swift-syntax to 603.0.1
Mx-Iris May 5, 2026
7c63dfd
refactor(application): route Settings window through AppCoordinator
Mx-Iris May 5, 2026
bb3726c
refactor(background-indexing): address PR #44 review feedback
Mx-Iris May 5, 2026
c6c7f6d
fix(background-indexing): capture engine across source-switch awaits
Mx-Iris May 6, 2026
8656055
chore(background-indexing): drop dead openSettingsRelay subscription
Mx-Iris May 6, 2026
f3e5df0
docs(background-indexing): tighten doc comments per PR #44 review
Mx-Iris May 6, 2026
979a417
fix(background-indexing): cancel all old-engine batches on source swap
Mx-Iris May 6, 2026
bb8dc96
refactor(background-indexing): split popover isEnabled bootstrap
Mx-Iris May 6, 2026
6762a5b
test(background-indexing): pin publisher silence for background loads
Mx-Iris May 6, 2026
daec90d
chore: bump swift-memberwise-init-macro to upstream 0.6.0
Mx-Iris May 6, 2026
408f99c
refactor(background-indexing): address PR #44 review (close routing +…
Mx-Iris May 7, 2026
a792144
chore(mcp): drop dead openSettingsRelay declaration
Mx-Iris May 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 59 additions & 4 deletions BuildRuntimeViewerServerXCFramework.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ set -e
# ==========================================
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
WORKSPACE_NAME="RuntimeViewer"
WORKSPACE_PATH="${SCRIPT_DIR}/${WORKSPACE_NAME}.xcworkspace"
WORKSPACE_PATH="${SCRIPT_DIR}/${WORKSPACE_NAME}-Distribution.xcworkspace"
SCHEME_MACOS="RuntimeViewerServer"
SCHEME_MOBILE="RuntimeViewerMobileServer"
FRAMEWORK_NAME="RuntimeViewerServer"
Expand All @@ -30,16 +30,19 @@ CONFIGURATION="Distribution"
# Parse arguments
VERBOSE=false
CLEAN_BUILD=true
UPDATE_PACKAGES=true
USER_PLATFORMS=()
CPU_CORES=$(sysctl -n hw.ncpu 2>/dev/null || echo 8)

usage() {
echo "Usage: $0 [options] [Platforms...]"
echo ""
echo "Options:"
echo " -v, --verbose Show detailed build output"
echo " --no-clean Skip cleaning before build"
echo " -h, --help Show this help message"
echo " -v, --verbose Show detailed build output"
echo " --no-clean Skip cleaning before build"
echo " --no-update-packages Skip forcing a Swift package update"
echo " (just resolve from existing Package.resolved)"
echo " -h, --help Show this help message"
echo ""
echo "Platforms (if none specified, builds all):"
echo " macOS, macCatalyst, iOS, tvOS, watchOS, visionOS"
Expand All @@ -65,6 +68,10 @@ while [[ $# -gt 0 ]]; do
CLEAN_BUILD=false
shift
;;
--no-update-packages)
UPDATE_PACKAGES=false
shift
;;
-h|--help)
usage
;;
Expand Down Expand Up @@ -145,6 +152,54 @@ fi
mkdir -p "$ARCHIVE_PATH"
mkdir -p "$OUTPUT_DIR/DerivedData"

# ==========================================
# Update / Resolve Workspace Package Dependencies
# ==========================================
# Note: Do NOT run `swift package update` on individual packages —
# the workspace unifies swift-syntax via a local checkout
# (RuntimeViewerPrecompiledLibraries/swift-syntax). Resolving each
# package standalone would pick incompatible upstream constraints
# (e.g. SwiftMCP wants 602.x while RxSwiftPlus wants 601.x).
#
# To force a real update (latest versions matching workspace
# constraints) we:
# 1. delete the workspace's Package.resolved
# 2. point -resolvePackageDependencies at our clean
# $OUTPUT_DIR/DerivedData so SPM cannot reuse a stale
# SourcePackages/checkouts directory from the default
# ~/Library/Developer/Xcode/DerivedData location.
# Without (2), SPM happily keeps an older transitive version
# (e.g. swift-dyld-private 1.1.0) even though a newer matching
# version (1.2.0) is available in the repository cache.
# Both Package.resolved and DerivedData are gitignored / disposable.
WORKSPACE_RESOLVED="$WORKSPACE_PATH/xcshareddata/swiftpm/Package.resolved"
RESOLVE_DERIVED_DATA="$OUTPUT_DIR/DerivedData"

if [ "$UPDATE_PACKAGES" = true ] && [ -f "$WORKSPACE_RESOLVED" ]; then
echo "🔄 Removing workspace Package.resolved to force update..."
rm -f "$WORKSPACE_RESOLVED"
fi

echo "📦 Resolving workspace package dependencies..."
if [ "$VERBOSE" = true ]; then
if ! xcodebuild -resolvePackageDependencies \
-workspace "$WORKSPACE_PATH" \
-scheme "$SCHEME_MACOS" \
-derivedDataPath "$RESOLVE_DERIVED_DATA"; then
echo "❌ Failed to resolve workspace package dependencies"
exit 1
fi
else
if ! xcodebuild -resolvePackageDependencies \
-workspace "$WORKSPACE_PATH" \
-scheme "$SCHEME_MACOS" \
-derivedDataPath "$RESOLVE_DERIVED_DATA" > /dev/null 2>&1; then
echo "❌ Failed to resolve workspace package dependencies (re-run with -v to see details)"
exit 1
fi
fi
echo ""

# ==========================================
# Function: Build Archive
# ==========================================
Expand Down
858 changes: 858 additions & 0 deletions Documentations/Evolution/0002-background-indexing.md

Large diffs are not rendered by default.

Loading