commit 62edf0bf7915fc3931aac6027488aee0634d912b
parent 4ca111dd76b777ecb578085c9766f1d7affa6809
Author: Michael Camilleri <[email protected]>
Date: Fri, 5 Jun 2026 12:27:07 +0900
Update AGENTS.md
Diffstat:
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,6 +1,7 @@
.asc/
.cache/
.claude/
+.agents/local.md
.DS_Store
buildServer.json
.wrangler
diff --git a/AGENTS.md b/AGENTS.md
@@ -9,20 +9,23 @@
## Code Structure
-- `Crossmate/` is the iOS/iPadOS app — the only thing the build/test scripts compile. It is layered:
- - `Models/` — domain types: puzzle/grid representation, players, catalog, and the `.xd` format parser (`XD.swift`).
- - `Persistence/` — local store only: Core Data (`CrossmateModel.xcdatamodeld`), plus `GameStore`/`GameMutator`.
- - `Sync/` — the CloudKit layer, driven by **raw `CKSyncEngine`** (not NSPersistentCloudKitContainer or SwiftData): per-game zones and `CKShare` collaboration. `Moves`/`MovesUpdater`/`GridStateMerger` carry collaborative grid state; `Friend*`/`Share*` carry sharing; `RecordSerializer` maps records.
- - `Services/` — app-level singletons and I/O: import, NYT fetch/auth, keychain, monitors, and the `*ToXDConverter` format converters. (Note: `CloudService` lives here but is *not* the sync engine — that is `Sync/SyncEngine.swift`.)
- - `Views/` — SwiftUI.
-- `Shared/` — types shared with extensions.
-- Puzzles are plain-text `.xd` files; `.puz` and NYT puzzles are converted to XD on import. `Puzzles/Bundled/` ships as app resources; `Puzzles/Debug/` is dev-only fixtures.
-- `Crossmake/` is a **separate offline SPM package**, not part of the app and not built by the app scripts. It holds the CLI tools that author the bundled puzzles (`Crossmake` fills grids, `Wordmake` curates word lists).
+Use this file for orientation only; inspect the current filesystem and code before assuming detailed structure or ownership.
+
+- `Crossmate/` is the iOS/iPadOS app.
+- `NotificationService/` is the notification service extension.
+- `Shared/` contains code shared by the app and extension.
+- `Tests/` contains the unit test suite.
+- `Scripts/` contains common build/test/development scripts.
+- `Puzzles/` contains bundled and debug puzzle resources.
+- `Crossmake/` is the separate offline crossword generation utility. It is an SPM package used to author bundled puzzles, not part of the app build.
+
+CloudKit sync uses raw `CKSyncEngine` with per-game zones and `CKShare` collaboration. It does not use NSPersistentCloudKitContainer or SwiftData.
+
+Puzzles are plain-text `.xd` files. Other supported puzzle formats are converted to XD on import.
## Working Notes
-- The user will handle making commits.
-- When asked to generate git commit messages, use the last few multiline commit messages in the repository as the style guide.
+- If `.agents/local.md` exists, read it for private machine-local instructions. Do not commit it.
## Building