Skip to content

feat: rebrand app as Syncline - #45

Merged
Chefski merged 20 commits into
devfrom
codex/syncline-release
Sep 5, 2026
Merged

feat: rebrand app as Syncline#45
Chefski merged 20 commits into
devfrom
codex/syncline-release

Conversation

@Chefski

@Chefski Chefski commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Summary

  • rename the iOS, iPadOS, and macOS app to Syncline
  • replace the prior brand icon with a new Apple Icon Composer source and Syncline artwork
  • update schemes, products, user-facing copy, documentation, privacy, and support pages
  • integrate the latest dev page-opening changes and resolve the merged accessibility modifier regression

Verification

  • strict SwiftLint: 0 violations
  • iOS: 890 tests in 165 suites passed
  • macOS: 22 tests passed
  • unsigned iOS device Release build succeeded
  • unsigned universal macOS Release build succeeded
  • built bundle metadata and compiled icon assets identify the app as Syncline

Bundle identifier remains ski.chef.docmostly so this updates the existing App Store record.

@Chefski
Chefski merged commit ef3b325 into dev Sep 5, 2026
@Chefski
Chefski deleted the codex/syncline-release branch September 5, 2026 13:46
@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 unsuccessful destination-focus request can consume a backward merge or deletion action without modifying the document.

The renamed products and revised search behavior are consistent, but the editor now acknowledges block removal before its deferred mutation is guaranteed to run; focus failure therefore produces a concrete no-op editing action. Pending handoff state also needs lifecycle cleanup to avoid stale editing UI.

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

Important Files Changed

Filename Overview
docmostly/Features/Editor/NativeEditorBodyView.swift Introduces focus-before-removal behavior, but makes deletion and merging depend on a best-effort responder callback.
docmostly/Features/Editor/NativeRichEditorViewModel.swift Adds pending handoff state to isEditing, with incomplete cleanup when handoff fails.
docmostly/Features/Search/SearchViewModel.swift Reworks search invalidation, request identity, cancellation, and pagination with strong stale-response protections and tests.
docmostly.xcodeproj/project.pbxproj Consistently updates products, executables, test hosts, display names, and icon configuration for Syncline.
docmostly/Syncline.icon/icon.json Defines the layered Syncline application icon and references the newly added SVG assets.
script/build_and_run.sh Updates the expected macOS bundle and executable name to match the renamed product.

Fix all with Greploop Fix All in Codex

Prompt To Fix All With AI
### Issue 1
docmostly/Features/Editor/NativeEditorBodyView.swift:293-294
**Focus Failure Drops Mutation**

The merge reports success immediately after requesting focus, but it changes the document only after the destination text input becomes focused. If the destination is not attached to a window, focus is skipped and the callback that performs the merge never runs. Because returning `true` already consumes the backspace, the user sees no document change. The deferred deletion path can likewise leave the block undeleted when destination focus fails. Perform the mutation independently of the focus callback or provide a fallback when focus cannot be acquired.

### Issue 2
docmostly/Features/Editor/NativeRichEditorViewModel.swift:38
**Handoff State Can Persist**

The pending focus marker now makes `isEditing` true, but focus-reset paths do not consistently clear it. If a requested handoff never acquires focus, this marker can remain set after focus is cleared. The view model then stays in an editing state without a focused text input, which can keep editing UI visible. Clear the marker whenever authoring or focus state is reset, not only when another input begins editing or the active block changes.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "Merge remote-tracking branch 'origin/dev..." | Re-trigger Greptile

Comment on lines +293 to +294
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 Focus Failure Drops Mutation

The merge reports success immediately after requesting focus, but it changes the document only after the destination text input becomes focused. If the destination is not attached to a window, focus is skipped and the callback that performs the merge never runs. Because returning true already consumes the backspace, the user sees no document change. The deferred deletion path can likewise leave the block undeleted when destination focus fails. Perform the mutation independently of the focus callback or provide a fallback when focus cannot be acquired.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docmostly/Features/Editor/NativeEditorBodyView.swift
Line: 293-294

Comment:
**Focus Failure Drops Mutation**

The merge reports success immediately after requesting focus, but it changes the document only after the destination text input becomes focused. If the destination is not attached to a window, focus is skipped and the callback that performs the merge never runs. Because returning `true` already consumes the backspace, the user sees no document change. The deferred deletion path can likewise leave the block undeleted when destination focus fails. Perform the mutation independently of the focus callback or provide a fallback when focus cannot be acquired.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Fix in Codex

}
}
}
var focusedTextInputBlockID: UUID?

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 Handoff State Can Persist

The pending focus marker now makes isEditing true, but focus-reset paths do not consistently clear it. If a requested handoff never acquires focus, this marker can remain set after focus is cleared. The view model then stays in an editing state without a focused text input, which can keep editing UI visible. Clear the marker whenever authoring or focus state is reset, not only when another input begins editing or the active block changes.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docmostly/Features/Editor/NativeRichEditorViewModel.swift
Line: 38

Comment:
**Handoff State Can Persist**

The pending focus marker now makes `isEditing` true, but focus-reset paths do not consistently clear it. If a requested handoff never acquires focus, this marker can remain set after focus is cleared. The view model then stays in an editing state without a focused text input, which can keep editing UI visible. Clear the marker whenever authoring or focus state is reset, not only when another input begins editing or the active block changes.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

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