From 3e40eb61263ccd921f1e8d41449e9b92f3ab9126 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Thu, 23 Apr 2026 09:35:12 +0200 Subject: [PATCH] ship prebuilt ptyc in native/linux-x64/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prebuilt ptyc binary sits alongside libtree-sitter.so in the platform-specific native directory. Resolution order: native/linux-x64/ptyc → ptyc/bin/ptyc → ~/.local/bin/ptyc → PATH. Eliminates the make ptyc-build step on fresh clones. Co-Authored-By: Claude Opus 4.6 (1M context) --- lib/builtin/ipc_status/src/status_item.dart | 2 +- lib/main.dart | 1 + native/linux-x64/ptyc | Bin 0 -> 22728 bytes 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100755 native/linux-x64/ptyc diff --git a/lib/builtin/ipc_status/src/status_item.dart b/lib/builtin/ipc_status/src/status_item.dart index faad9bbd..9be49ec0 100644 --- a/lib/builtin/ipc_status/src/status_item.dart +++ b/lib/builtin/ipc_status/src/status_item.dart @@ -24,7 +24,7 @@ class _ToolStatusItemState extends State { Future _check() async { final cwd = Directory.current.path; - final ptycResult = _exists('$cwd/ptyc/bin/ptyc') || await _which('ptyc'); + final ptycResult = _exists('$cwd/native/linux-x64/ptyc') || _exists('$cwd/ptyc/bin/ptyc') || await _which('ptyc'); final pqlResult = await _which('pql'); if (!mounted) return; setState(() { diff --git a/lib/main.dart b/lib/main.dart index 61d4fe2a..9e247061 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -154,6 +154,7 @@ Future> _loadBundledThemes() async { /// catalogs load lazily on activate in later tiers. String _resolvePtyc(String repoRoot) { final candidates = [ + '$repoRoot/native/linux-x64/ptyc', '$repoRoot/ptyc/bin/ptyc', '${Platform.environment['HOME']}/.local/bin/ptyc', 'ptyc', diff --git a/native/linux-x64/ptyc b/native/linux-x64/ptyc new file mode 100755 index 0000000000000000000000000000000000000000..06b8a8f25caf14103095f2015ec3d2a89eb7fe48 GIT binary patch literal 22728 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