Stream OpenAI-compatible provider responses through the local Anthropic proxy instead of buffering full responses. Map reasoning and tool-call deltas into Claude Code-compatible SSE events, and cache generated session titles so opening history does not regenerate them.
Switch Linux build from vcpkg to pkg-config, matching tectonic's
own CI approach. vcpkg on Linux had unsolvable issues:
- graphite2 hidden symbol visibility
- ICU .so files missing symbols
- Incompatible with rust-lld, ld.bfd, and mold
pkg-config + system packages is the tectonic-recommended approach.
Semi-static linking maximizes portability. AppImage bundles .so files
automatically for distribution across distros.
Removes vcpkg overlay ports (no longer needed).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
vcpkg ICU may be built with --disable-renaming, exporting plain
symbols (ucnv_fromUChars) while tectonic C++ code references
versioned symbols (ucnv_fromUChars_78). Pass -DU_DISABLE_RENAMING=1
to match. Also add nm diagnostic to verify.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove Cargo.lock from .gitignore and commit lockfile with:
- tectonic sub-crates pinned to v1.1.6 build versions
- tauri 2.11.1 + plugins matching NPM packages
Without Cargo.lock, CI resolves latest sub-crate versions which
have breaking API changes, and tauri plugins may not match NPM.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Three issues prevented Linux builds with Rust 1.95+ and vcpkg:
1. graphite2 hidden symbols: vcpkg builds with -fvisibility=hidden,
rust-lld errors on STV_HIDDEN refs. Fix: overlay port that adds
GRAPHITE2_EXPORTING and removes -fvisibility=hidden.
2. Rust version scripts: ld.bfd can't mix anonymous + named version
tags. Fix: use mold linker which handles both correctly.
3. ICU version mismatch: system ICU (v70/74) found before vcpkg ICU
(v78), causing _78 suffix undefined symbols. Fix: move system ICU
.so out of linker path during build.
vcpkg dynamic libs remain for portable distribution (issue #91).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the hand-written direct-provider runtime with a local Anthropic-to-OpenAI-compatible proxy so Qwen, DeepSeek, GLM, Gemini, and other compatible providers use the Claude Code CLI tool/session experience.
Normalize strict OpenAI tool_call/tool_result pairing to avoid provider 400 errors, keep session titles stable and synced, allow switching sessions while another chat is streaming, show running indicators, add provider deletion with confirmation, and auto-refresh the file sidebar with refresh feedback.
Replace the hand-written direct-provider runtime with a local Anthropic-to-OpenAI-compatible proxy so Qwen, DeepSeek, GLM, Gemini, and other compatible providers use the Claude Code CLI tool/session experience.
Normalize strict OpenAI tool_call/tool_result pairing to avoid provider 400 errors, keep session titles stable and synced, allow switching sessions while another chat is streaming, show running indicators, add provider deletion with confirmation, and auto-refresh the file sidebar with refresh feedback.
Add Claude Code-style context compaction for OpenAI-compatible direct providers, including no-tools summaries and retry handling.
Generate cached model-backed session titles and auto-resume the latest project chat without delaying on title generation.
Polish editor search theming and keyboard navigation.
rust-lld treats hidden symbol references as hard errors, but ld.bfd
resolves them. vcpkg's graphite2 has STV_HIDDEN on gr_* symbols which
lld refuses to link. Switch to ld.bfd via RUSTFLAGS.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
grep returns exit 1 when no match found, which aborts the script
under set -e. Wrap with { ... || true; } to prevent this.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use a temp file for symbol list instead of <() process substitution,
which fails in GitHub Actions shell. Also add explicit shell: bash.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
objcopy cannot modify symbols inside .a archives directly. Extract
individual .o files with ar, globalize gr_* symbols in each, then
repack the archive.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
vcpkg builds graphite2 with -fvisibility=hidden, making gr_* API
symbols invisible to the linker. Use objcopy --globalize-symbol to
make them visible again before the Tauri build.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
tectonic's dep_support requires graphite2 at the vcpkg path.
Replace vcpkg's hidden-visibility graphite2 with symlinks to
the system libgraphite2 (from libgraphite2-dev) which exports
all symbols properly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
vcpkg builds graphite2 with hidden symbol visibility, causing
undefined symbol errors at link time. Remove vcpkg's graphite2
before building so the linker falls back to the system
libgraphite2-dev which exports all symbols properly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The graphite2 hidden symbol issue is caused by fresh vcpkg builds,
not by tectonic version. The old v1 cache had a working graphite2
build. Restore the cache key to reuse it.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
tauri-plugin-dialog 2.6.0 → 2.7.1, tauri-plugin-fs 2.4.5 → 2.5.1
to match their NPM counterparts and fix version mismatch build error.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previous commit reverted Cargo.lock too far, bringing tauri back to
2.10.3 which mismatches NPM @tauri-apps/api 2.11.0. This commit
keeps tauri at 2.11.1 while reverting tectonic to 0.15.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>