Enable WebView2 pinch gestures by allowing zoom hotkeys at the native layer, while keeping app-level zoom shortcuts guarded in the frontend.
Rework PDF preview zoom handling to distinguish touchpad pinch from Ctrl/Cmd mouse-wheel zoom, preserve the cursor anchor, and make mouse wheel zoom respond on the first notch.
Disable Tauri zoom hotkeys for normal and debug windows.
Reset stale persisted app zoom on startup and consume Ctrl/Cmd zoom shortcuts without changing the whole webview scale.
Preserve app context menus while suppressing the browser menu elsewhere.
Support Ctrl/Cmd multi-select, batch drag moves, Delete/Backspace deletion, and a themed confirmation dialog for file tree items.
Send Anthropic image blocks as OpenAI image_url parts with high detail.
Detect endpoints known to reject OpenAI-style image parts and fail early with a clear provider error.
Return OpenAI-compatible model metadata from the backend and preserve provider model ordering.
Add chat/vision capability badges, metadata-driven model filtering, Qwen vision fallbacks, and tests.
Keep pasted chat images as temporary context and block image sends for text-only provider models.
Terminate the current Claude process on Windows when a guided follow-up is selected so queued guidance can take effect immediately instead of waiting for the active run to finish naturally.
Handle forced queued guidance before snapshot and file refresh work in the completion event, then resume the same tab with the preserved provider context.
Keep guided follow-ups additive when users select multiple queued items during an active run instead of replacing the previously displayed guidance.
Prefer already-displayed guidance when continuing the next turn, preserve the first forced guidance item, and keep the forced queue state consistent when entries are removed or interrupted.
Add store coverage for displaying multiple guidance entries and consuming displayed guidance before ordinary queued items.
Extract Claude CLI process lifecycle management into a dedicated claude_process module and expose an interrupt command for guided continuations.
Add per-tab queued guidance state so users can type follow-up direction while a response is streaming, force a selected guidance item into the next turn, and preserve the tab's provider when resuming.
Render pending guidance inline in the conversation, keep the composer send/stop behavior ergonomic during streaming, allow individual guidance removal, and polish the compact guidance row spacing and hover states.
Cover the queue, display, consume, and forced-guidance flows with store tests.
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>