Repository navigation
Releases: demyanovvvv/opencode-patchline
Release list
Patchline 1.4.0
Patchline 1.4.0
English
This release unifies project/global installation and removal and adds verified
original-host recovery and project-scoped LSP management.
Changes
- Shell and PowerShell wrappers use the adjacent built release/checkout package,
preserve arguments/cwd/exit codes, and do not fetch a CLI from npm. - New
--project,--cwd,--package,--help,--no-host,--no-lsp,
--keep-depsand--restore-hostflags; installation now supports--dry-run.
Values accept--flag=value; malformed/conflicting flags fail before changes. --local --globalremains compatible: local selects the source, global the scope.- Immutable original OpenCode backup, SHA-256 checks, shared-host owner tracking,
per-binary locking and guarded restoration of unchanged owned update preferences. - State changes during confirmation are preserved; Bun installed during host
preparation is recorded and cleaned up on failure. - Project language/server discovery, explicit
lsp check/lsp setup, managed
pinned server recipes and connection-aware status. Disabled/custom LSP remains. - Conversation renderer for
patchline_lsp_status; canonical fixture paths for
Windows short-path and macOS temporary-directory aliases.
Installation and upgrade
Download opencode-patchline-1.4.0.tgz and SHA256SUMS.txt, verify the SHA-256,
extract to a permanent directory, then run npm install --omit=dev inside
package/. From the target project run the adjacent install.sh --project --lang en, or use --cwd <project>. For all projects use --global --yes.
Windows uses install.ps1 with the same flags. Restart OpenCode afterwards.
Upgrading from 1.3.x uses the new package's installer in each affected scope and
preserves the installed upstream OpenCode version. Keep old package directories
while another scope still references them. Plain CLI install --local remains
available. Full host provisioning requires Git/Bun; use --no-host to skip it.
Removal and recovery
Run the matching uninstall.sh/uninstall.ps1 with the same scope; start with
--dry-run. --keep-deps preserves package dependencies. Regular removal leaves
the shared integrated host. --restore-host restores the saved original version
only if its hashes/ownership are valid and no other recorded installation remains.
User-changed update settings are preserved. Legacy installations without a
verified original cannot use rotating backups as evidence and require manual
OpenCode repair. Managed LSP caches and shared OpenCode caches are retained.
Verification
Release gates cover typecheck, unit tests/coverage, lint, build, doctor, benchmark,
package/plugin/installer/LSP/TUI/Hashline smokes and dependency audit. New smoke
gates exercise project/global wrappers and real-native binary restoration in
isolated directories. Local Windows x64: 467 tests passed, one platform test
skipped; coverage 83.67% statements, 89.04% lines; typecheck, lint, build, doctor,
benchmark, package/plugin/installer/LSP/TUI/Hashline smokes and audits passed.
Doctor reports the expected running-host 1.3.0 / package 1.4.0 mismatch.
The GitHub Actions run attached to this tag records the
Linux release-gate result; the CI matrix reports Windows/Linux/macOS separately.
Local verification does not rebuild the full integrated UI host or include an
interactive UI update click-through.
See the English guide, upgrade policy
and removal instructions.
Русский
Релиз объединяет установку и удаление в проектной/глобальной области и добавляет
проверенное восстановление исходного хоста и проектное управление LSP.
Изменения
- Shell/PowerShell-скрипты используют соседний готовый пакет релиза или checkout,
сохраняют аргументы, рабочий каталог и код завершения, не загружают CLI из npm. - Добавлены
--project,--cwd,--package,--help,--no-host,--no-lsp,
--keep-deps,--restore-host;--dry-runработает и для установки.
Поддерживается--флаг=значение; конфликтующие параметры отклоняются до изменений. --local --globalсовместим: local выбирает источник, global область.- Неизменяемая исходная копия OpenCode, SHA-256, учёт владельцев общего хоста,
блокировка и защищённый возврат неизменённых настроек обновления. - Сохраняются изменения state во время подтверждения; Bun, добавленный при
подготовке хоста, учитывается и удаляется при сбое. - Обнаружение проектных языков/серверов,
lsp check/lsp setup, закреплённые
управляемые серверы и отдельная проверка соединения. Custom/disabled LSP сохранены. - Карточка
patchline_lsp_status; канонические тестовые пути для Windows/macOS.
Установка и обновление
Скачайте opencode-patchline-1.4.0.tgz и SHA256SUMS.txt, проверьте SHA-256,
распакуйте в постоянную папку и выполните npm install --omit=dev внутри
package/. Для проекта используйте install.sh --project --cwd <проект> --lang ru,
для всех проектов --global --yes. На Windows запускайте install.ps1 с теми же
флагами. Полностью перезапустите OpenCode.
Обновление с 1.3.x выполняется новым установщиком в каждой нужной области,
сохраняя upstream-версию OpenCode. Старый каталог сохраняйте, пока на него
ссылается другая область. Для полного хоста нужны Git/Bun; --no-host пропускает
его подготовку. Старый интегрированный хост не получает исходную копию задним числом.
Удаление и восстановление
Запускайте uninstall.sh/uninstall.ps1 в той же области; сначала --dry-run.
--keep-deps сохраняет зависимости. Обычное удаление оставляет общий хост.
--restore-host возвращает сохранённую исходную версию при проверенных хешах,
владении и отсутствии других записанных установок. Изменённые пользователем
настройки обновлений сохраняются. Legacy без доказанной исходной копии требует
ручного восстановления OpenCode; .patchline-previous не доказывает stock-версию.
Кэши управляемых LSP и OpenCode сохраняются.
Проверка
Релизные gates включают typecheck, тесты/coverage, lint, build, doctor, benchmark,
package/plugin/installer/LSP/TUI/Hashline smoke и аудит зависимостей. Новые smoke
проверяют обе области и восстановление native-файла в изолированных папках.
Локально Windows x64: 467 тестов пройдены, один платформенный тест пропущен;
coverage 83,67% statements и 89,04% lines; typecheck, lint, build, doctor,
benchmark, package/plugin/installer/LSP/TUI/Hashline smoke и аудиты пройдены.
Doctor показывает ожидаемое расхождение работающего хоста 1.3.0 и пакета 1.4.0.
GitHub Actions у тега фиксирует Linux-проверки релиза; CI отдельно показывает
результаты Windows/Linux/macOS. Локально не выполняется полная пересборка
интегрированного UI-хоста и интерактивное нажатие UI-обновления.
Подробнее: русское руководство,
обновление, удаление.
Patchline 1.3.0
Patchline 1.3.0
English
OpenCode and Patchline now have separate version lifecycles. Installing Patchline preserves the installed upstream OpenCode version. Coordinated OpenCode upgrades invoke a host-only operation, keeping the plugin package version and its registration intact.
- OpenCode plugin SDK updated to 1.19.0.
- OpenCode 1.19.0 source adapters pass preflight.
- New
host-upgrade --opencode-version <version>command. - Host artifact selection for Windows, Linux and macOS x64/arm64.
- Regression tests for version preservation and script-launcher protection.
- CLI/TUI upstream comparisons, exact binary targeting, update locking and safe retention of locked Windows backups.
Verification
Local Windows x64: 398 tests passed, 3 platform-specific tests skipped; typecheck,
lint, coverage, build, doctor, benchmark, package/plugin/installer/TUI/Hashline
smokes and dependency audit passed. The upstream OpenCode 1.19.0 native
apply_patch suite passed (28 tests). An isolated real host rebuild and
opencode upgrade cycle 1.19.0 → 1.18.35 → 1.19.0 preserved Patchline 1.3.0 and
byte-identical server/TUI configuration. UI update source adapters are verified;
an interactive UI click-through is not part of local verification. Cross-platform
SDK/adapter/native tests are configured in CI; platform-specific outcomes are
reported by that workflow rather than inferred from the Windows run.
Download the package archive and verify its SHA-256 using SHA256SUMS.txt. Extract to a permanent location, install runtime dependencies, and run node dist/cli.js install --local --global --yes. Restart OpenCode afterwards.
External package-manager upgrades can replace the integrated host. They cannot be intercepted by an inactive plugin. Reinstall the integration on the current upstream version after such an upgrade. Platform artifact selection is not a claim that every package-manager installation has been verified.
Русский
Версии OpenCode и Patchline обновляются независимо. Установка Patchline сохраняет установленную upstream-версию OpenCode. Согласованное обновление OpenCode запускает отдельную операцию обновления хоста, сохраняя версию пакета и регистрацию плагина.
- SDK обновлён до 1.19.0.
- Адаптеры исходников OpenCode 1.19.0 проходят предварительную проверку.
- Добавлена команда
host-upgrade --opencode-version <версия>. - Выбор артефакта сборки для Windows, Linux и macOS x64/arm64.
- Регрессионные проверки сохранения версий и защиты script-launcher.
- Сравнение upstream-версий CLI/TUI, точный выбор бинарника, блокировка обновлений и сохранение занятых резервных копий Windows.
Проверки
Локально на Windows x64: 398 тестов пройдены, 3 платформенных теста пропущены;
typecheck, lint, coverage, build, doctor, benchmark, package/plugin/installer/TUI/Hashline
smoke и аудит зависимостей пройдены. Upstream-набор native apply_patch OpenCode
1.19.0: 28 тестов пройдены. Реальная изолированная пересборка и цикл opencode upgrade
1.19.0 → 1.18.35 → 1.19.0 сохранили Patchline 1.3.0 и конфигурации server/TUI побайтно.
Адаптеры UI-обновления проверены по исходникам; интерактивное нажатие обновления
не входит в локальную проверку. Межплатформенные проверки выполняет CI.
Скачайте архив и проверьте SHA-256 по SHA256SUMS.txt. Распакуйте в постоянный каталог, установите runtime-зависимости и выполните node dist/cli.js install --local --global --yes. После установки перезапустите OpenCode.
Внешнее обновление менеджером пакетов может заменить интегрированный хост. Неактивный плагин не может перехватить такую операцию. После неё повторно установите интеграцию на текущей upstream-версии. Выбор платформенного артефакта не означает проверку всех вариантов установки.
Patchline 1.2.1
Patchline 1.2.1
English guide · Русское руководство · Changelog
English
Versions
- Patchline: 1.2.1
- OpenCode release baseline: 1.18.35
- Integrated host for this pair: 1.18.35+patchline.1.2.1
Changes
- Preserved native OpenCode
apply_patch; Hashline editing uses
patchline_apply_patch, with snapshot invalidation around native patches. - Hardened exact deletions, bounded read ranges, permission-aware external paths,
mixed line-ending preservation and shell-write detection. - Added compensating installer rollback and versioned ownership metadata.
- Added adaptive/Hashline conversation slots and bounded diffs.
- Restructured English and Russian README navigation and added practical usage
guides. Release history now lives in the changelog and release notes. - Distributed an installable GitHub package archive and SHA-256 checksum without
requiring an npm registry publication.
Install or update
Download opencode-patchline-1.2.1.tgz and SHA256SUMS.txt from this release.
Extract into a permanent directory, then run:
cd patchline-1.2.1/package
npm install --omit=dev
node dist/cli.js doctorFor the integrated Windows x64 host (OpenCode, Git and Bun required):
node dist/cli.js install --local --global --yes --lang en --opencode-version 1.18.35For other platforms, use the manual file-URL registration in the English guide.
Fully restart OpenCode. Existing Hashline apply_patch calls must be renamed to
patchline_apply_patch; native standard patches keep the apply_patch name.
Verification and limitations
Local verification passed: typecheck, 379 tests (2 skipped), coverage, lint,
build, doctor, benchmark, plugin/package/Hashline/TUI/install/lifecycle/LSP smoke
checks. Dependency audit: zero vulnerabilities. GitHub Actions jobs could not
start because of the account billing/spending limit; cross-platform CI results
are unavailable. The archive was built and published from the verified checkout.
Integrated-host provisioning currently supports Windows x64 and builds from
source using Git/Bun. The package archive is not a prebuilt OpenCode executable.
Cross-component recovery and ownership-aware legacy cleanup remain pending.
Uninstall does not restore the official executable or update preference.
Русский
Версии
- Patchline: 1.2.1
- Базовая версия OpenCode: 1.18.35
- Интегрированный хост для этой пары: 1.18.35+patchline.1.2.1
Изменения
- Сохранён обычный
apply_patchOpenCode; Hashline выполняется через
patchline_apply_patch, а обычные patch инвалидируют затронутые snapshot. - Усилены точные удаления, ограниченные диапазоны чтения, проверка разрешений
внешних путей, сохранение смешанных окончаний строк и обнаружение shell-записи. - Добавлены компенсирующий rollback установщика и версионированные данные владения.
- Добавлены adaptive/Hashline-карточки и ограниченные diff.
- Перестроены README на английском и русском, добавлены навигация сверху и
практические инструкции. История изменений перенесена в changelog и релизы. - Подготовлены устанавливаемый GitHub-архив и SHA-256 checksum без обязательной
публикации в npm.
Установка или обновление
Скачайте opencode-patchline-1.2.1.tgz и SHA256SUMS.txt из этого релиза.
Распакуйте в постоянную папку и выполните:
cd patchline-1.2.1/package
npm install --omit=dev
node dist/cli.js doctorДля интегрированного хоста Windows x64 (нужны OpenCode, Git и Bun):
node dist/cli.js install --local --global --yes --lang ru --opencode-version 1.18.35На остальных платформах используйте ручное подключение через file URL из
русского руководства. Полностью перезапустите OpenCode. Старые Hashline-вызовы
apply_patch переименуйте в patchline_apply_patch; обычные patch сохраняют имя.
Проверки и ограничения
Локально прошли: проверки типов, 379 тестов (2 пропущены), покрытие, lint, сборка,
doctor, benchmark, smoke-проверки плагина, пакета, Hashline, TUI, установки,
жизненного цикла и LSP. Аудит: 0 уязвимостей. GitHub Actions не смогли стартовать
из-за лимита расходов/оплаты аккаунта; результатов кроссплатформенного CI нет.
Архив собран и опубликован из проверенной рабочей копии.
Подготовка интегрированного хоста пока поддерживает Windows x64 и сборку из
исходников через Git/Bun. Архив пакета не содержит готовый executable OpenCode.
Межкомпонентное восстановление и безопасная очистка старых компонентов остаются
в работе. Удаление не восстанавливает официальный executable и настройку обновлений.
Patchline 1.2.0
Highlights
- Themed conversation cards for all eleven Patchline tools, animated status borders, English footer disclosure, progressive output, and independently expandable native diffs.
- Windows x64 UI-host provisioning through the existing opencode command, with integrated versions such as 1.18.34+patchline.1.2.0.
- Upstream version selection, coordinated host upgrade adapter, NVM path resolution, registration deduplication, local install wrappers, and one rotating previous-host backup.
- Hardened Hashline behavior, rollback metadata, and expanded installer/UI regression coverage.
Verification
Typecheck, lint, 229 tests passed (2 skipped), build, doctor, benchmark smoke, plugin/package/TUI/install smoke, Hashline smoke and 12-case upstream differential corpus passed.
Dependency audit: 3 low-severity advisories in the pinned UI dependency chain; no moderate/high/critical advisories.
Current limitations
Host provisioning currently requires Windows x64, Git, and Bun. Prebuilt host artifacts, cross-component transaction recovery, ownership-aware legacy cleanup, and restoration of the official executable on uninstall remain pending. This GitHub release does not itself publish the package to npm.
Full details: CHANGELOG.md, README.md, and README.ru.md.
v1.1.0
Changelog
1.1.0 - 2026-09-27
- Added
opencode-patchline doctor --lspandopencode-patchline lsp check
with human-readable and JSON setup instructions. - Added TypeScript LSP capability detection, including project-local
npx --no-installdetection on Windows and other platforms. - Added a ready-to-copy OpenCode TypeScript LSP configuration and explicit
ast_search/patchline_grepfallback guidance. - Changed
patchline_lspto reportCAPABILITY_UNAVAILABLEwhen OpenCode LSP
is disabled or unconfigured instead of returning a misleading empty result. - Added bounded LSP startup error details and preserved shell-free Windows
process invocation, cancellation, and timeout behavior. - Restricted snapshot-dependent
patchline_edit_batchtoprecisionmode;
compatibility mode now leaves all editing behavior to OpenCode built-ins. - Made the OpenCode plugin smoke test explicitly use precision mode and added
a real OpenCode black-box runner for isolated tool-call verification. - Expanded the test suite to 107 tests and updated English/Russian guidance.
1.0.0 - 2026-09-22
- First stable release of the Patchline OpenCode plugin.
- Snapshot-aware
readand stale-safeeditfor existing files. - Existing-file
writeprotection and guarded multi-file transactions. - Literal text search, AST search, LSP bridge, diagnostics, and validation hooks.
- Precision, compatibility, and disabled runtime modes.
- Windows, Node.js 20+, OpenCode 1.18.x, package, doctor, benchmark, and plugin
smoke verification. - Added structured OpenCode tool metadata with bounded recovery actions and
bytes/validation details, plus CLI JSON diagnostics, configuration validation,
and stable error explanations. - Added tag/version/changelog release checks, npm trusted-publishing workflow,
and a private vulnerability reporting policy. - Added enforced V8 coverage thresholds, release metadata regression tests, and
Node.js 20/22 CI coverage across Windows, Linux, and macOS. - Bound directory reads to 4,096 entries before pagination to prevent unbounded
directory enumeration memory use. - Reject directory pages whose rendered output exceeds 20,000 characters.
- Reject file pages whose rendered output exceeds 20,000 characters before
recording a snapshot. - Bound literal-search directory enumeration to 4,096 entries per directory.
- Bound formatted grep and AST tool responses to 20,000 characters.
- Reject create batches above 500 files before path resolution or mutation.
- Reject edit batches above 500 edits before preflight and cap successful
mutation-batch reports at 20,000 characters with a truncation marker. - Reject
apply_patchinput above 8 MiB before parsing or permission requests. - Upgrade Vitest to 5.0.1 and add Node.js 20/22 CI coverage for Windows, Linux
and macOS. - Install the pinned OpenCode CLI in the cross-platform CI job so the LSP bridge
smoke test has the same required executable on every runner. - Bound AST result traversal so searches stop after one match beyond the
requested result limit instead of materializing every match. - Make search include matching independent of canonical temporary-directory aliases
on hosted Windows and macOS runners. - Keep the OpenCode plugin smoke startup wait bounded while allowing slower hosted
runners up to 60 seconds to load the plugin registry. - Resolve the Windows OpenCode smoke executable directly so plugin loading does not
depend on shell wrappers or command-file dispatch. - Include the last registry HTTP failure and OpenCode startup logs when plugin smoke
reaches its bounded timeout. - Make plugin smoke create a temporary Git worktree so OpenCode exercises the
same project bootstrap path as a real OpenCode worktree. - Use direct plugin registration smoke on Windows CI because the hosted Windows
OpenCode1.18.30server hangs during instance bootstrap; HTTP plugin smoke
remains active on Linux and macOS. - Bound diagnostic output during execution and enforce the 20,000-character cap on the complete result.
- Terminate timed-out diagnostic process trees and settle even when descendants inherit output pipes.
- Add a reproducible isolated tarball installation and public-export smoke test.
- Propagate OpenCode cancellation to diagnostic commands and terminate their process trees before rejecting.
- Bound and time-limit the shell-free OpenCode LSP bridge, and propagate tool cancellation to its subprocess.
- Reject classic apply_patch sections outside a single complete patch envelope before creating files.
- Skip text-search files over 8 MiB and cap each returned matching-line preview at 2,000 characters.
- Reject AST input over 8 MiB and cap each returned node preview at 2,000 characters.
- Reject ignored content before the first Hashline section before requesting edit permission.
- Bound file reads before loading input: reject files over 8 MiB and selected lines over 20,000 characters before snapshot creation.
- Bound mutation payloads: writes and edit results are limited to 8 MiB, including an 8 MiB aggregate create-batch budget before the first mutation.
- Run the OpenCode LSP bridge without shell interpretation, including native
opencode.exeresolution on Windows, so query text cannot execute commands. - Record successful edit identity from the atomically renamed temporary file,
preventing same-byte replacements from inheriting a trusted next snapshot. - Read newly created bytes from offset zero on the exclusive file handle so
create-batch rollback removes unchanged partial files correctly. - Sort literal-search directory entries by name before traversal so match order
is deterministic and independent of filesystem readdir order. - Isolate the release metadata test from the CI
GITHUB_REF_NAMEenvironment so
mismatched-tag rejection is exercised on hosted runners.
0.1.0
- Initial P0 precision editing engine.
- Snapshot-aware OpenCode
readandedittools. - Stale edit rejection and existing-file write protection.
- Cross-platform path and text preservation primitives.
- P1 search, diagnostics, validation, doctor, and benchmark foundations.
- Diagnostic and configured validation commands now require OpenCode
bash
permission before execution. - Added regression coverage for denied diagnostic and post-edit validation
permissions; the suite now contains 60 tests. - Read service bounds now reject invalid direct
offsetandlimitvalues;
the suite now contains 61 tests. - Create-batch bookkeeping now captures the exclusive-created file identity
before path-based rollback checks; the suite now contains 62 tests. - OpenCode plugin smoke now bounds each tool-registry HTTP probe to avoid an
unresponsive server hanging verification indefinitely.