Commit Graph
3 Commits
Author SHA1 Message Date
james.maes bf5478490b feat(app): proper app icon set + sync helper LSMinimumSystemVersion to 14.0
App icon was missing — AppIcon.appiconset/Contents.json declared 10 size slots
but no PNG files filled in, so Jarvis showed the generic blank-app placeholder
in Dock/Finder/cmd-tab. This commit fills all 10 slots with a generated icon
derived from the existing menu-bar arc-reactor PDF, plus consolidates the
helper Info.plists onto the same MACOSX_DEPLOYMENT_TARGET pattern the main
target already uses.

Icon generation
---------------
- Render Icon-MenuBar-Template.pdf at 1024×1024 via qlmanage
- Composite via scripts/build-app-icon.swift (Core Graphics):
  - Squircle clip (radius = size × 0.2237 per Apple HIG)
  - Radial gradient backplate: #4FC3F7 cyan core → #0D47A1 navy → #061229
    near-black (Iron Man arc-reactor palette)
  - Inner glow ring at 35% radius for energized feel
  - Silhouette as luminosity mask, filled near-white with cyan tint
  - 2.5px cyan rim for definition against any wallpaper
- Resize to 7 unique pixel sizes (16/32/64/128/256/512/1024) via sips
- Map into the 10 AppIcon.appiconset slots (each idiom×scale combination
  gets its own filename for clarity, even though sizes overlap)
- AppIcon.icns is now produced by Xcode's actool at 52KB

Helper deployment-target sync
-----------------------------
The macOS 14 deployment-target bump in 722e25b (Phase 6 close-out, Voice
package's ORT 1.24.2 floor) updated the main Jarvis target via project.yml
but missed the three MCP helper Info.plists, which still hardcoded
LSMinimumSystemVersion=13.0. xcodebuild auto-corrected at build time but
emitted a warning per helper. Update each to use $(MACOSX_DEPLOYMENT_TARGET)
so future deployment-target changes propagate automatically (matches the
pattern the main App/Info.plist already uses).

Files
-----
- App/Assets.xcassets/AppIcon.appiconset/Contents.json — slot filenames
- App/Assets.xcassets/AppIcon.appiconset/icon_*.png — 10 icon PNGs
- scripts/build-app-icon.swift — reproducible icon-generation script
- mcp-servers/mcp-{clipboard,applescript,time}/Support/Info.plist — sync to $(MACOSX_DEPLOYMENT_TARGET)

Verification
------------
- xcodebuild Debug build: BUILD SUCCEEDED, zero LSMinimumSystem warnings
- AppIcon.icns present in Jarvis.app/Contents/Resources/ (52KB)
2026-04-27 17:07:00 -05:00
james.maes c19d6b2cad feat(01-03): add HudState, BrandColors, CAAnimationFactory, menu-bar template PDF
- HudState enum (5 cases) with verbatim UI-SPEC Surface 3 VoiceOver labels
- BrandColor.arcReactorGlow: #1E88E5@85% light / #64B5F6@90% dark with Increase Contrast fallback to controlAccentColor
- CAAnimationFactory with makeBreath/makeRotate/makeShimmer/makeGlow/makeStateCrossfade, each Reduce Motion-guarded
- 22×22pt arc-reactor silhouette placeholder PDF (outer 18pt ring + mid 12pt ring + filled 4pt core + six 60° spokes) via Core Graphics
- Icon-MenuBar-Template.imageset Contents.json pointed at the PDF with template-rendering-intent=template and preserves-vector-representation=true
2026-04-22 12:50:42 -05:00
james.maes 98c58f014b feat(01-01): scaffold Xcode project with day-one entitlement pair
- Create Jarvis.xcodeproj with App target, Hardened Runtime, Swift 6 strict
  concurrency, Manual codesign, ad-hoc identity for Debug
- Pin com.apple.security.cs.allow-jit, com.apple.developer.speech-recognition-assets,
  and com.apple.security.device.audio-input in App/Jarvis.entitlements (SEC-02/SEC-03);
  forbidden keys allow-unsigned-executable-memory and automation.apple-events are
  explicitly excluded
- Set LSUIElement=YES, JarvisEntitlementsVerified=NO, and all four TCC usage-description
  keys in App/Info.plist for future phases to consume
- Register four local SPM package refs (Keychain, Config, Logging, Shell) against
  packages/ and link their library products to the Jarvis target
- Add PBXCopyFilesBuildPhase (Wrapper subpath Contents/Helpers, dstSubfolderSpec=1)
  plus a post-build script that materializes the empty directory — MCP-05 codesign
  infrastructure in place before Plan 05
- Add CODE_SIGNING_ALLOWED=NO for Debug only because the managed
  speech-recognition-assets entitlement requires a provisioning profile;
  Release signing is wired properly in Plan 05
- Stub JarvisApp.swift and AppDelegate.swift per D-02 (lifecycle-only; wiring
  lands in Plan 03); asset catalog carries placeholder AppIcon set and
  Icon-MenuBar-Template imageset metadata
- Track ATS public-key pinning finding in deferred-items.md — out of P1 scope
  (no networking code yet; pinning is a P4/P8 Rule-4 architectural decision)
2026-04-22 12:20:14 -05:00