Skip to content

release: ship Syncline rebrand - #46

Merged
Chefski merged 21 commits into
mainfrom
dev
Sep 5, 2026
Merged

release: ship Syncline rebrand#46
Chefski merged 21 commits into
mainfrom
dev

Conversation

@Chefski

@Chefski Chefski commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Release candidate

Promotes the verified dev release candidate to main for the new App Store submission.

Included

  • Syncline product and listing rebrand across iOS, iPadOS, macOS, and public support/privacy pages
  • new Apple Icon Composer .icon source and distinct Syncline artwork
  • latest dev page-opening behavior and its regression coverage

Verification

  • strict SwiftLint: 0 violations across 692 Swift files
  • iOS: 890 tests in 165 suites passed
  • macOS: 22 tests passed
  • unsigned iOS device Release build succeeded
  • unsigned universal macOS Release build succeeded

The existing bundle identifier ski.chef.docmostly is intentionally preserved for the existing App Store Connect record.

@Chefski
Chefski merged commit 691758d into main Sep 5, 2026
16 checks passed
@greptile-apps

greptile-apps Bot commented Sep 5, 2026

Copy link
Copy Markdown

Confidence Score: 4/5

The PR is not yet safe to merge because an editor Backspace or deletion can be consumed without changing the document when the requested destination cannot receive focus, and the repository file-organization requirement must also be satisfied.

The deferred removal path treats focus transfer as a prerequisite for committing a user-requested mutation, although an off-screen lazy input may never begin editing; the operation is therefore reported handled but can be silently lost.

Files Needing Attention: docmostly/Features/Editor/NativeEditorBodyView.swift

Important Files Changed

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]
Loading

Fix all with Greploop Fix All in Codex

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 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.

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.

Fix in Codex

Comment on lines +361 to +372
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
}
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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!

Fix in Codex

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant