mirror of
https://github.com/awizemann/scarf.git
synced 2026-05-08 02:14:37 +00:00
f6f31cabe4
The initial M0a commit was incomplete: .gitignore's `Packages/` rule
(meant for the legacy pre-Xcode-14 SwiftPM checkout dir) silently
swallowed three new files that SHOULD have been committed:
- scarf/Packages/ScarfCore/Package.swift
- scarf/Packages/ScarfCore/Sources/ScarfCore/Models/HermesConstants.swift
- scarf/Packages/ScarfCore/Tests/ScarfCoreTests/ScarfCoreSmokeTests.swift
The 12 moved models slipped through because `git mv` preserves tracking
across gitignored destinations, but new files in that tree did not.
Fix: add `!scarf/Packages/` override so our local SPM package is always
tracked; keep the top-level `Packages/` ignore for the historical case.
Also verified M0a builds + tests green on Linux via
`docker run --rm -v $PWD/scarf/Packages/ScarfCore:/work -w /work swift:6.0 swift test`.
To make that work, two small, Apple-platform-preserving guards:
- `sqliteTransient` in HermesConstants.swift wrapped in
`#if canImport(SQLite3)` — SQLite3 is not a system module on Linux
swift-corelibs-foundation. Apple builds compile unchanged.
- `ToolKind.displayName` and `MCPTransport.displayName` wrapped in
`#if canImport(Darwin)` — `LocalizedStringResource` is Apple-only.
Apple builds compile unchanged.
Additionally:
- Package.swift pinned to Swift 5 language mode, matching the Mac app's
`SWIFT_VERSION = 5.0`. Two types (`ACPEvent.availableCommands` and
`ACPToolCallEvent.rawInput`) claim `Sendable` while carrying
`[String: Any]` — strict Swift 6 rejects that. Comment in Package.swift
flags this for a future typed-payloads cleanup + bump to `.v6`.
- ScarfCoreSmokeTests now contains 16 tests exercising every M0a
`public init` so parameter drift fails CI instead of a reviewer.
- IOS_PORT_PLAN.md updated with what actually shipped, the Linux-CI
guards + patterns future phases should reuse, and the Sendable
follow-up flagged under "Rules next phases can rely on".
Test results (Linux, Swift 6.0.3):
Suite M0aPublicInitTests: 15 tests passed
Suite ScarfCoreSmokeTests: 1 test passed
Total: 16 / 16 passed
https://claude.ai/code/session_019yMRP6mwZWfzVrPTqevx2y
64 lines
1.2 KiB
Plaintext
64 lines
1.2 KiB
Plaintext
# Xcode
|
|
build/
|
|
.gh-pages-worktree/
|
|
.wiki-worktree/
|
|
DerivedData/
|
|
*.pbxuser
|
|
!default.pbxuser
|
|
*.mode1v3
|
|
!default.mode1v3
|
|
*.mode2v3
|
|
!default.mode2v3
|
|
*.perspectivev3
|
|
!default.perspectivev3
|
|
xcuserdata/
|
|
*.xccheckout
|
|
*.moved-aside
|
|
*.hmap
|
|
*.ipa
|
|
*.dSYM.zip
|
|
*.dSYM
|
|
|
|
# Swift Package Manager
|
|
.build/
|
|
# `Packages/` is the historical SwiftPM checkout dir for downloaded deps
|
|
# (pre-Xcode-14). We keep it ignored — but NOT our local-package checkout
|
|
# at scarf/Packages/, which is part of the source tree (ScarfCore, etc.)
|
|
# and must ship in the repo.
|
|
Packages/
|
|
!scarf/Packages/
|
|
Package.pins
|
|
Package.resolved
|
|
*.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/
|
|
.swiftpm/
|
|
|
|
# macOS
|
|
.DS_Store
|
|
.AppleDouble
|
|
.LSOverride
|
|
._*
|
|
.Spotlight-V100
|
|
.Trashes
|
|
|
|
# IDE
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
.idea/
|
|
.vscode/
|
|
|
|
# Claude Code
|
|
.claude/
|
|
scarf/standards/backups/
|
|
|
|
# Scarf project dashboards (user-specific)
|
|
.scarf/
|
|
|
|
# Release artifacts — GitHub Releases hosts the binaries; no need to bloat git
|
|
# history. RELEASE_NOTES.md stays tracked (committed with the version bump).
|
|
releases/v*/*.zip
|
|
releases/v*/appcast-entry.xml
|
|
|
|
# Wiki helper: personal patterns (hostnames, IPs) blocked from the wiki push.
|
|
scripts/wiki-blocklist.txt
|