Skip to content

Sync with textmatelives #9

@tectiv3

Description

@tectiv3

textmatelives/textmate — adoption checklist

Track beneficial changes from textmatelives/textmate that make sense for this fork. The forks are not linearly comparable; this is a curated port list, not a merge target.

Critical: macOS 26 compatibility

  • Migrate HTML output from deprecated WebView to WKWebView

    • Upstream work: HTML output window uses WKWebView, WKURLSchemeHandler, and a replacement JS bridge.
    • Why: legacy WebView is removed/broken for our HTML output path on macOS 26.
    • Local status: not started. About window already uses WKWebView, but Frameworks/HTMLOutput still uses WebView.
  • Remove synchronous FSEventStreamFlushSync calls

    • Completed in 1ab9e013 (Remove synchronous FSEvents flushes).
    • Why: avoids macOS 26 launch/main-thread hangs from synchronous FSEvents flushing.
  • Port NSUserDefaults/FSEvents deadlock fix

    • Completed in 797968be (Fix defaults observer deadlock risk).
    • Local implementation: OakObserveUserDefaults no longer registers NSUserDefaultsDidChangeNotification on NSOperationQueue.mainQueue; notification delivery uses queue:nil and dispatches observer callbacks asynchronously to the main queue.
    • Why: avoids making the notification posting thread wait on the main operation queue.

High: SCM and gutter performance

  • Port SCM status performance fixes

    • Completed in d3c6134e (Improve SCM status performance).
    • Covered work:
      • per-repo serial SCM queues instead of one global queue
      • git status --porcelain=v1 -z --untracked-files=all parser to reduce subprocess count
      • FileBrowser SCMRepository consumes the C++ SCM pipeline instead of running a duplicate driver path
      • transient .git/ path filtering for lock/fsmonitor noise
      • parser tests in Frameworks/scm/tests/t_git_parse.cc
  • Add in-process xdiff gutter diff

    • Completed in 2fc1329f (Add in-process SCM gutter diff).
    • Covered work:
      • vendored git's xdiff under vendor/xdiff
      • added scm::gutter_diff with unit and integration tests
      • wired OakTextView gutter marks to the in-process diff path
      • added diff gutter template assets
      • added SCM cache invalidation hooks for HEAD/index/ref changes
    • Why: removes Ruby bundle + git diff shell-outs from gutter updates.

Low: small correctness / modernization

  • Fix OakBackgroundFillView color fill bounds

    • Completed in 7630a097 (Replace preference pane icons with SF Symbols).
    • Changed NSRectFill(aRect) to NSRectFill(self.bounds) in Frameworks/OakAppKit/src/OakUIConstructionFunctions.mm.
    • Why: small macOS 15+ layer-backed drawing correctness fix.
  • Use SF Symbols for Preferences toolbar icons

    • Completed in 7630a097 (Replace preference pane icons with SF Symbols).
    • Added PreferencesToolbarImage() helper with SF Symbol + fallback pattern for all 7 panes.
    • Why: cosmetic modernization; consistent icon style across all preference panes.

Not worth porting directly

  • Bundle catalogue redesign / git-URL bundle manager overhaul.
  • About window fork branding and org-migration commits.
  • textmatelives CI/release pipeline as-is. We can borrow concepts later, but it is not cherry-pickable into this fork.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions