Conversation
# Conflicts: # DocmostlyMac/MacSettingsView.swift # docs/index.html # docs/privacy/index.html # docs/support/index.html
feat: rebrand app as Syncline
|
| Filename | Overview |
|---|---|
| docmostly/Features/Editor/NativeEditorBodyView.swift | Introduces deferred block removal during focus handoff, with a blocking path where an accepted deletion or merge never commits. |
| docmostly/Features/Editor/NativeRichEditorViewModel+Focus.swift | Tracks transient focus handoffs so editing state survives stale blur callbacks. |
| docmostly/Features/Search/SearchViewModel.swift | Adds request identities, immediate invalidation, resolved-scope task keys, and safe pagination gating. |
| docmostly/Features/PageTree/PageTreeNodeArray.swift | Makes recursive updates return whether the uniquely identified page node was found. |
| docmostly.xcodeproj/project.pbxproj | Renames products and display metadata, preserves module and bundle identities, and configures the Syncline icon. |
| docs/privacy/index.html | Updates the public privacy policy to use the Syncline product name without changing its substantive claims. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Backspace at start of block] --> B[Resolve previous editable block]
B --> C[Store pending backward merge]
C --> D[Request destination focus]
D --> E{Destination begins editing?}
E -->|Yes| F[Merge source into destination]
F --> G[Request destination focus again]
E -->|No| H[Pending merge remains uncommitted]
H --> I[Backspace was already reported handled]
Prompt To Fix All With AI
### Issue 1
docmostly/Features/Editor/NativeEditorBodyView.swift:294
**Backspace Can Lose Merge**
The handler reports Backspace as handled before changing the document. The merge happens only after the destination input receives focus. If that block is outside the rendered part of the lazy stack, it may not receive focus, so the keystroke is consumed without merging the blocks. Commit the merge independently of focus transfer or add a fallback when focus cannot complete.
### Issue 2
docmostly/Features/Editor/NativeEditorBodyView.swift:361-372
**Enum Violates File Organization**
This change adds `PendingBlockRemoval` alongside other types in `NativeEditorBodyView.swift`. The repository requires different structs, classes, and enums to be placed in separate Swift files, so this enum must be moved to its own file before merging.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "Merge pull request #45 from Chefski/code..." | Re-trigger Greptile
| destinationBlockID: destinationBlockID | ||
| ) | ||
| requestBlockFocus(destinationBlockID) | ||
| return true |
There was a problem hiding this comment.
The handler reports Backspace as handled before changing the document. The merge happens only after the destination input receives focus. If that block is outside the rendered part of the lazy stack, it may not receive focus, so the keystroke is consumed without merging the blocks. Commit the merge independently of focus transfer or add a fallback when focus cannot complete.
Prompt To Fix With AI
This is a comment left during a code review.
Path: docmostly/Features/Editor/NativeEditorBodyView.swift
Line: 294
Comment:
**Backspace Can Lose Merge**
The handler reports Backspace as handled before changing the document. The merge happens only after the destination input receives focus. If that block is outside the rendered part of the lazy stack, it may not receive focus, so the keystroke is consumed without merging the blocks. Commit the merge independently of focus transfer or add a fallback when focus cannot complete.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.| private extension NativeEditorBodyView { | ||
| enum PendingBlockRemoval: Equatable { | ||
| case deletion(sourceBlockID: UUID, destinationBlockID: UUID) | ||
| case backwardMerge(sourceBlockID: UUID, destinationBlockID: UUID) | ||
|
|
||
| var destinationBlockID: UUID { | ||
| switch self { | ||
| case .deletion(_, let destinationBlockID), .backwardMerge(_, let destinationBlockID): | ||
| destinationBlockID | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
Enum Violates File Organization
This change adds PendingBlockRemoval alongside other types in NativeEditorBodyView.swift. The repository requires different structs, classes, and enums to be placed in separate Swift files, so this enum must be moved to its own file before merging.
Context Used: CLAUDE.md (source)
Prompt To Fix With AI
This is a comment left during a code review.
Path: docmostly/Features/Editor/NativeEditorBodyView.swift
Line: 361-372
Comment:
**Enum Violates File Organization**
This change adds `PendingBlockRemoval` alongside other types in `NativeEditorBodyView.swift`. The repository requires different structs, classes, and enums to be placed in separate Swift files, so this enum must be moved to its own file before merging.
**Context Used:** CLAUDE.md ([source](https://github.com/chefski/docmostly/blob/main/CLAUDE.md))
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Release candidate
Promotes the verified dev release candidate to main for the new App Store submission.
Included
Verification
The existing bundle identifier ski.chef.docmostly is intentionally preserved for the existing App Store Connect record.