crossmate

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

commit ee49963daf1497dc7596f3578646b85c18ebda7e
parent afa292990671b64dc2598a4d390e8557bfe173d4
Author: Michael Camilleri <[email protected]>
Date:   Wed, 17 Jun 2026 01:09:25 +0900

Soften recent-change cell borders

This commit makes the changed-while-away border less stark by drawing a
wide translucent halo under a lighter inner stroke. The highlighted
cells still read as square borders, but the colour sits back from the
letter grid instead of appearing as a hard outline.

Co-Authored-By: Codex GPT 5.5 <[email protected]>

Diffstat:
MCrossmate/CrossmateApp.swift | 10----------
MCrossmate/Views/Puzzle/GridView.swift | 16++++++++++++----
2 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/Crossmate/CrossmateApp.swift b/Crossmate/CrossmateApp.swift @@ -547,16 +547,6 @@ struct RootView: View { } } await services.start(appDelegate: appDelegate) -#if DEBUG - services.announcements.post(Announcement( - id: "debug-share-link-join-failed", - scope: .global, - severity: .warning, - title: "Puzzle Removed", - body: "This puzzle was removed.", - dismissal: .manual - )) -#endif } .onOpenURL { url in if let id = services.importService.importGame(from: url) { diff --git a/Crossmate/Views/Puzzle/GridView.swift b/Crossmate/Views/Puzzle/GridView.swift @@ -487,10 +487,18 @@ private struct RecentChangeBorders: View { spacing: spacing ) for (pos, color) in shown { - // Inset by half the line width so the stroke sits inside the - // cell (thinner than `LocalCursorTints`' related-cell border). - let rect = geometry.cellRect(row: pos.row, col: pos.col).insetBy(dx: 1, dy: 1) - context.stroke(Path(rect), with: .color(color), lineWidth: 2) + let rect = geometry.cellRect(row: pos.row, col: pos.col) + let path = Path(rect.insetBy(dx: 1.5, dy: 1.5)) + context.stroke( + path, + with: .color(color.opacity(0.10)), + lineWidth: 6 + ) + context.stroke( + path, + with: .color(color.opacity(0.30)), + lineWidth: 2 + ) } } .opacity(visible ? 1 : 0)