crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

commit 62edf0bf7915fc3931aac6027488aee0634d912b
parent 4ca111dd76b777ecb578085c9766f1d7affa6809
Author: Michael Camilleri <[email protected]>
Date:   Fri,  5 Jun 2026 12:27:07 +0900

Update AGENTS.md

Diffstat:
M.gitignore | 1+
MAGENTS.md | 25++++++++++++++-----------
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