Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
3e3edf0
test(core): cover shipped migration upgrades (INF-08)
willytop8 Jul 15, 2026
b0d5d1e
fix(app): balance panel security scopes (SEC25-002)
willytop8 Jul 15, 2026
ae0b220
ci: build app and guard product invariants
willytop8 Jul 15, 2026
125aa87
fix(tooling): protect production description corpus
willytop8 Jul 15, 2026
c438186
chore(data): refresh offline descriptions (INF-09)
willytop8 Jul 15, 2026
580a0d7
fix(core): make manager scans bounded and truthful
willytop8 Jul 15, 2026
1669881
fix(tooling): broaden npm description discovery (INF-09)
willytop8 Jul 15, 2026
f0e2ec5
fix(core): generate exact injection-safe scripts
willytop8 Jul 15, 2026
5d65ed6
fix(core): scope dependency and duplicate identity
willytop8 Jul 15, 2026
72a57ac
fix(core): neutralize spreadsheet export formulas (SEC25-010)
willytop8 Jul 15, 2026
fa43a3c
fix(core): make snapshot history exact and lazy
willytop8 Jul 15, 2026
c6b44ae
fix(core): enforce ancestor-only grant matching (SEC25-007)
willytop8 Jul 15, 2026
f39a351
fix(core): bound and redact provenance evidence
willytop8 Jul 15, 2026
38874b2
fix(core): bound Python metadata parsing
willytop8 Jul 15, 2026
065d8f8
fix(app): harden persisted state and scan lifecycle
willytop8 Jul 15, 2026
cbdc50d
fix(app): make analysis controls truthful and accessible
willytop8 Jul 15, 2026
c81bacb
fix(app): authorize user-selected exports (SEC25-001)
willytop8 Jul 15, 2026
b251912
chore(data): expand npm description coverage (INF-09)
willytop8 Jul 15, 2026
ccba530
feat(app): search every package analysis (APP-F1)
willytop8 Jul 16, 2026
7463879
feat(app): bulk cleanup analysis views (APP-F2)
willytop8 Jul 16, 2026
311de9c
feat(app): export inventory as JSON (APP-F5)
willytop8 Jul 16, 2026
15a54e8
fix(core): bound dist-info metadata reads (PERF25-011)
willytop8 Jul 16, 2026
67abf94
feat(core): scan persistent uv tools (APP-F6)
willytop8 Jul 16, 2026
d2db275
feat(app): add sortable inventory table (APP-F3)
willytop8 Jul 16, 2026
4fea1fe
feat(core): aggregate measured package payload (APP-F4)
willytop8 Jul 16, 2026
11f431e
feat(app): visualize measured package payload (APP-F4)
willytop8 Jul 16, 2026
3d31315
docs: close the 2026-07 audit campaign
willytop8 Jul 16, 2026
b374c29
chore(release): set version 1.4.0 build 10
willytop8 Jul 16, 2026
e74d6af
fix(compliance): bundle release declarations and notices
willytop8 Jul 16, 2026
00b62e4
fix(app): include uv in onboarding coverage
willytop8 Jul 16, 2026
95e8ce8
ci: execute app regression tests
willytop8 Jul 16, 2026
55254b0
fix(app): prevent selected table rows from crashing
willytop8 Jul 16, 2026
2510881
docs(release): record 1.4.0 App Store QA
willytop8 Jul 16, 2026
a35f5ad
docs(descriptions): clarify corpus refresh workflow
willytop8 Jul 16, 2026
2251383
docs: consolidate project documentation
willytop8 Jul 16, 2026
6486974
fix(ci): make invariant checks portable
willytop8 Jul 16, 2026
4b3d8fc
fix(ci): validate generated project ignore rule
willytop8 Jul 16, 2026
cbca32c
test(core): await snapshot database read
willytop8 Jul 16, 2026
c001e0d
chore(ci): update checkout action to v7
willytop8 Jul 16, 2026
7d5be72
fix(ci): serialize Swift Testing suites
willytop8 Jul 16, 2026
e916aa5
fix(ci): pin Xcode 26 toolchain
willytop8 Jul 16, 2026
a2eb9f1
test(core): isolate async size measurements
willytop8 Jul 16, 2026
a3bcc39
test(app): render package table offscreen
willytop8 Jul 16, 2026
eb33fcb
fix(ci): use runner-compatible Xcode
willytop8 Jul 16, 2026
75ee2e8
fix(ci): run core tests on Intel macOS
willytop8 Jul 16, 2026
0aa95a0
fix(core): skip initial size-walk suspension
willytop8 Jul 16, 2026
7bc4285
chore(release): bump build to 11
willytop8 Jul 16, 2026
1d22208
ci: capture core crash diagnostics
willytop8 Jul 16, 2026
e78a425
revert(core): restore archived size-walk scheduling
willytop8 Jul 16, 2026
4855643
fix(ci): run core tests through Xcode
willytop8 Jul 16, 2026
9151739
chore(release): restore submitted build 10
willytop8 Jul 16, 2026
2f5ac81
fix(ci): run package tests on ARM macOS
willytop8 Jul 16, 2026
3febeb2
test(core): run size suite under XCTest
willytop8 Jul 16, 2026
6743973
fix(ci): restore SwiftPM core test runner
willytop8 Jul 16, 2026
1baef0d
ci: capture hosted core crash backtrace
willytop8 Jul 16, 2026
ead3291
fix(ci): isolate core test frameworks
willytop8 Jul 16, 2026
4fdc62e
test(core): trace hosted size crash
willytop8 Jul 16, 2026
f8fce3a
test(core): trace in-memory provider crash
willytop8 Jul 16, 2026
804940d
fix(tests): build fixture ancestors iteratively
willytop8 Jul 16, 2026
764ee7c
test(core): isolate pipx environment
willytop8 Jul 16, 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
68 changes: 64 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@ jobs:
test:
name: InstalloryCore
# Package.swift declares swift-tools-version 6.1, which needs Xcode 16.3+.
# The macos-14 image ships an older toolchain and cannot resolve the manifest.
# The macOS 15 image supplies a compatible Xcode toolchain.
runs-on: macos-15

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- name: Check product invariants
run: ./scripts/check-invariants.sh

- name: Show toolchain
run: swift --version
Expand All @@ -26,6 +29,63 @@ jobs:
working-directory: Installory
run: swift build

- name: Test
- name: Test XCTest
working-directory: Installory
run: swift test --no-parallel --disable-swift-testing

- name: Test Swift Testing
working-directory: Installory
run: swift test
run: swift test --no-parallel --disable-xctest

app:
name: InstalloryApp
runs-on: macos-15
env:
XCODEGEN_VERSION: "2.45.4"
XCODEGEN_SHA256: "090ec29491aad50aec10631bf6e62253fed733c50f3aab0f5ffc86bc170bdbef"

steps:
- uses: actions/checkout@v7

- name: Show Xcode toolchain
run: xcodebuild -version

- name: Install pinned XcodeGen
run: |
archive="$RUNNER_TEMP/xcodegen.zip"
curl --fail --location --silent --show-error \
"https://github.com/yonaskolb/XcodeGen/releases/download/${XCODEGEN_VERSION}/xcodegen.zip" \
--output "$archive"
echo "${XCODEGEN_SHA256} ${archive}" | shasum -a 256 --check
unzip -q "$archive" -d "$RUNNER_TEMP"
echo "$RUNNER_TEMP/xcodegen/bin" >> "$GITHUB_PATH"
"$RUNNER_TEMP/xcodegen/bin/xcodegen" --version

- name: Regenerate Xcode project
run: ./scripts/regenerate-xcode.sh

- name: Verify generated product invariants
run: ./scripts/check-invariants.sh

- name: Test app (Debug)
run: >-
xcodebuild
-project Installory.xcodeproj
-scheme Installory
-configuration Debug
-destination 'platform=macOS'
-parallel-testing-enabled NO
CODE_SIGNING_ALLOWED=NO
CODE_SIGNING_REQUIRED=NO
test

- name: Build app (Release)
run: >-
xcodebuild
-project Installory.xcodeproj
-scheme Installory
-configuration Release
-destination 'platform=macOS'
CODE_SIGNING_ALLOWED=NO
CODE_SIGNING_REQUIRED=NO
build
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ Installory.xcodeproj/
*.log
*.tmp

# Python build-tool caches
__pycache__/
*.pyc

# Personal/project-tool artifacts
.claude/settings.local.json

Expand Down
6 changes: 4 additions & 2 deletions App/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.3.1</string>
<string>1.4.0</string>
<key>CFBundleVersion</key>
<string>9</string>
<string>10</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
</dict>
Expand Down
2 changes: 1 addition & 1 deletion App/Installory.entitlements
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<true/>
<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
</dict>
</plist>
66 changes: 66 additions & 0 deletions App/Resources/ThirdPartyNotices.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
Installory Third-Party Notices
===============================

GRDB.swift
----------

https://github.com/groue/GRDB.swift

Copyright (C) 2015-2025 Gwendal Roué

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


Bootstrap Icons — Search glyph
--------------------------------

The search glyph used in the Installory app icon is from Bootstrap Icons.
https://icons.getbootstrap.com/icons/search/

The MIT License (MIT)

Copyright (c) 2019-2024 The Bootstrap Authors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


SVG Repo — Open Box glyph
--------------------------

The open-box glyph used in the Installory app icon was sourced from SVG Repo.
https://www.svgrepo.com/svg/441686/open-box

SVG Repo identifies this glyph as licensed under CC0 1.0 Universal.
https://creativecommons.org/publicdomain/zero/1.0/
2 changes: 1 addition & 1 deletion App/Resources/descriptions.json

Large diffs are not rendered by default.

Loading