Commit graph

334 commits

Author SHA1 Message Date
GerardDevlin
973005e086
Improve Windows setup, Muti-model extension, API auth, sessions, and project recovery (#154)
Some checks failed
Lint / lint (push) Has been cancelled
* Improve Windows setup, API auth, sessions, and project recovery

* Restore recent project on startup

* Extract PDF attachment text with MuPDF

* Add OpenAI-compatible provider mode

* Add tool loop for OpenAI-compatible providers

* Stream OpenAI-compatible provider responses

* Fallback when compatible providers reject tools

* Surface compatible provider reasoning content

* Support legacy function calls for compatible providers

* Add OpenAI-compatible provider presets

* Add planning and listing tools for compatible providers

* Show direct provider model in chat composer

* Expose direct provider status fields

* Add direct provider task compatibility tools

* Persist direct provider task state

* Read PDF sidecars in direct provider

* Create PDF sidecars for project attachments

* Sanitize direct provider reasoning history

* Allow API provider setup without Claude CLI

* Repair auth settings when saving API keys

* Preserve DeepSeek reasoning history for direct provider

* Restore direct provider reasoning from sessions

* Parse compatible provider token usage

* Keep direct provider sessions consistent

* Pair cancelled direct tool calls

* Verify compatible provider keys before saving

* Support ModelGate Claude proxy setup

* Reject mismatched ModelGate proxy URLs

* Allow changing configured AI provider

* Expose AI provider management when ready

* Replace provider dropdowns with setup cards

* Support multiple direct provider credentials

* Fix provider credential string normalization

* Show provider logos in model selectors

* Add Anthropic and Zhipu provider logos

* Simplify OpenAI-compatible provider presets

* Derive provider labels from configured endpoints

* Remove custom Claude proxy preset

* Support chat provider and model switching

* Use Anthropic icon for Claude Code selector

* Add provider setup from chat picker

* Prevent provider dialog overflow

* Expand direct provider tool compatibility

* Bring direct provider runtime closer to Claude Code

* Raise Rust macro recursion limit

* Show direct provider API errors

* Force final answer after direct provider tool loops

* feat: add OpenAI-compatible provider support and polish desktop UX

- Add project-level OpenAI-compatible provider configuration for Qwen, DeepSeek, GLM, Gemini, Moonshot, and OpenAI
- Support provider/model switching inside the chat composer
- Preserve chat continuity when switching between direct providers
- Bridge direct-provider conversation context when switching back to Claude Code
- Improve direct-provider tool compatibility, Python/uv context, skills behavior, and PDF text extraction
- Replace app icons with the new ClaudePrism prism icon
- Improve project naming, rename handling, recent project/session migration, and session deletion UX
- Polish provider icons, chat error spacing, uv dialog layout, and light-mode native title bar

* feat: add OpenAI-compatible provider support and polish desktop UX

- Add project-level OpenAI-compatible provider configuration for Qwen, DeepSeek, GLM, Gemini, Moonshot, and OpenAI
- Support provider/model switching inside the chat composer
- Preserve chat continuity when switching between direct providers
- Bridge direct-provider conversation context when switching back to Claude Code
- Improve direct-provider tool compatibility, Python/uv context, skills behavior, and PDF text extraction
- Replace app icons with the new ClaudePrism prism icon
- Improve project naming, rename handling, recent project/session migration, and session deletion UX
- Polish provider icons, chat error spacing, uv dialog layout, and light-mode native title bar

* fix: resolve Dependabot security vulnerabilities

NPM (via pnpm.overrides):
- ws 8.19.0 → 8.21.0 (uninitialized memory disclosure)
- postcss 8.5.6 → 8.5.15 (XSS via unescaped style tags)
- uuid 10.0.0 → 14.0.0 (missing buffer bounds check)

Cargo (via tectonic 0.15 → 0.16 + cargo update):
- rand 0.8.5 → 0.8.6, 0.9.2 → 0.9.4 (unsound with custom logger)
- gix-validate 0.7.7 → 0.10.1 (submodule name validation bypass)
- gix-fs 0.18.2 remains at 0.18.x (upstream constraint, cannot
  reach 0.21.1 until watchexec/ignore-files updates gix deps)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: bump Linux vcpkg cache key for tectonic 0.16 compat

Force fresh vcpkg rebuild on Linux CI to resolve graphite2
gr_label_destroy linker error after tectonic 0.15 → 0.16 upgrade.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: use static vcpkg triplet for Linux build

The default x64-linux triplet builds dynamic libraries, causing
graphite2's gr_label_destroy symbol to be hidden and unlinkable
after tectonic 0.15 → 0.16 upgrade.

Switch to a custom x64-linux-static triplet (static library linkage)
to match the approach used by macOS and Windows builds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: set VCPKGRS_TRIPLET for Linux static build

tectonic's vcpkg dep_support looks for packages under the default
x64-linux triplet, but we install them under x64-linux-static.
Set VCPKGRS_TRIPLET=x64-linux-static so the Rust vcpkg crate
finds libpng and other dependencies in the correct location.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: revert Linux to x64-linux vcpkg triplet and add system graphite2

Revert the custom static triplet (didn't fix the issue) and instead
install libgraphite2-dev via apt. The vcpkg-built graphite2 marks
gr_label_destroy as a hidden symbol, but tectonic 0.16's bridge
crate references it. The system graphite2 package exports it properly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Expand provider support and refine desktop UX

Add OpenAI-compatible provider workflows, improve Claude/provider switching behavior, refresh desktop window theming and app icons, smooth PDF toolbar and touchpad zoom handling, and add Windows-friendly build scripts.

* fix: revert tectonic to 0.15 to fix Linux build

tectonic 0.16 causes undefined hidden symbol gr_label_destroy on
Linux due to graphite2 visibility issues in vcpkg builds. Revert to
tectonic 0.15 which works correctly with the existing vcpkg setup.

Security fixes retained:
- rand 0.8.5 → 0.8.6, 0.9.2 → 0.9.4

Workflow: revert to x64-linux triplet with libgraphite2-dev, fresh
cache key v3.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: update render scale debounce time and enhance zoom anchor functionality in PDF viewer

* fix: revert tectonic to 0.15, keep tauri 2.11.1

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>

* fix: update tauri plugin crates to match NPM packages

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>

* fix: restore Linux vcpkg cache key to v1

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>

* fix: remove vcpkg graphite2 to use system library on Linux

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>

* fix: symlink system graphite2 into vcpkg path on Linux

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>

* fix: use objcopy to globalize hidden graphite2 symbols on Linux

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>

* fix: extract .a archive before objcopy to fix graphite2 symbols

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>

* fix: avoid process substitution in objcopy graphite2 fix

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>

* fix: prevent grep exit code 1 from aborting objcopy script

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>

* fix: use ld.bfd instead of lld for Linux build

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>

* Address provider security review and desktop UX regressions

* Polish workspace toolbar alignment

* Improve chat session recovery and titles

* Improve direct provider parity and session UX

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.

* feat(provider): run OpenAI-compatible models through Claude Code proxy

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.

* feat(provider): run OpenAI-compatible models through Claude Code proxy

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.

* fix(chat): enforce minimum composer drawer height

* feat(provider): add Ollama local model support

* feat(provider): add Ollama local model support

* chore: update version to 1.2.0 in package.json and Cargo files

* fix(BashWidget): update styles for terminal and result display

* feat(MarkdownRenderer): enhance table and horizontal rule rendering

* feat: stream compatible providers through Claude proxy

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.

* feat: align compatible proxy with Claude Code Router

Keep OpenAI-compatible providers on the native Claude Code pipeline while moving proxy transforms into dedicated modules. Add CCR-style message, provider, stream, and tool handling for thinking signatures, ExitTool fallback, streamed tool argument repair, cache cleanup, stream usage, and provider token compatibility.

* chore: bump version to 1.3.0 across all relevant files

* feat(chat): support queued guidance during active runs

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.

* fix(chat): allow multiple guided follow-ups

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.

* fix(chat): interrupt active runs for guided follow-ups

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.

* feat(messages): enhance handling of tool result images in OpenAI requests

* feat: add provider model capability metadata

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.

* fix: guard unsupported proxy image payloads

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.

* feat: add multi-select file tree actions

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.

* fix: disable global webview zoom shortcuts

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.

* feat: implement cleanup for temporary files in chat composer and event hooks

* feat: enhance message handling to sanitize stored user prompts and improve context display

* refactor: clean up formatting and improve regex matching in chat store

* fix: restore smooth PDF touchpad and wheel zoom

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.

* refactor: remove PDF sidecar extraction and related logic from project attachments

* feat(providers): align compatible models with Claude Code runtime

Route DeepSeek and Qwen through native Anthropic-compatible Claude Code endpoints, including canonical base URL handling and model environment overrides.

Add CCR-style proxy transformer plumbing for remaining OpenAI-compatible providers and harden tool argument repair in the local Anthropic proxy.

Preserve per-session provider behavior, improve stop/guidance flow handling, and update setup/chat store tests for provider routing.

* feat(providers): route Kimi through Claude Code

Use Moonshot/Kimi Anthropic-compatible endpoints for the native Claude Code runtime.

Canonicalize legacy Moonshot OpenAI URLs to /anthropic while keeping model discovery on the provider's /v1/models endpoint.

Add setup-store and Rust route coverage for domestic and international Moonshot endpoints.

* fix(security): harden Claude Code provider routing

Remove the global Claude Code permission bypass so native Anthropic provider runs rely on Claude Code's normal approval model.

Clear inherited ANTHROPIC_* variables before proxy or native provider launches to prevent credential and endpoint leakage across routes.

Require HTTPS for known cloud provider endpoints, tighten DeepSeek proxy matching, and harden manual code-block shell execution with cwd validation, timeouts, and output limits.

* feat(pdf-viewer): enhance zoom functionality and add permission skip option

* feat(stream): improve error handling for provider stream and add SSE error rendering

* fix: align Kimi Claude Code native route

* feat(layout): enhance workspace components with responsive design adjustments

* refactor(tests): normalize recent project paths and improve readability
refactor(proposed-changes-panel): simplify JSX structure for added/removed indicators
refactor(pdf-viewer): format function parameters for better readability
fix(project-name): enhance validation for project names to prevent invalid characters
refactor(build): improve environment flag handling for better clarity
refactor(dev): streamline environment flag appending logic

* refactor(tests): update file paths in project and chat prompt tests for consistency

* feat(install): update install_claude_cli to return success status and handle timeout errors

* feat(skills): add timeout handling for skills installation and improve download logic

* feat(onboarding): add close button to the dialog in scientific skills onboarding

* feat: enhance skills management with import and delete functionality

- Added `import_skill_from_folder` command to import skills from a local directory.
- Implemented `delete_installed_skill` command to remove specific skills.
- Updated the skills installation process to provide detailed download progress.
- Refactored skills loading and management logic for better organization and efficiency.
- Enhanced the UI to support skill importing and deletion with appropriate user feedback.

* feat: enhance skills downloading and proxy configuration

* Add workspace layout controls

* Keep PDF preview for non-TeX selections

* Refine project picker experience

* Polish sidebar collapse animations

* Polish home and workspace interactions

* feat: enhance Claude setup with embedded variant and error handling

- Updated `useClaudeSetupStore` to require Claude Code installation before saving provider credentials.
- Modified `ClaudeSetup` component to support an embedded variant with improved UI for installation and configuration.
- Added detailed status messages for missing Git and installation prompts.
- Refactored project picker to include theme toggle and version display.
- Improved layout and styling for settings and environment status sections.

* feat: enhance anthropic response handling to include "thinking" block type

* Add required environment onboarding

* Polish environment onboarding completion flow

* Fix chat provider and attachment interactions

* Scope chat sessions by project

* feat: add file attachment functionality and improve message actions in chat

* style: update ChatComposer component styles for improved UI consistency

---------

Co-authored-by: Hanjin Bae <iwdhanjin@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Hanjin Bae <82585834+delibae@users.noreply.github.com>
2026-07-04 17:46:14 +09:00
Hanjin Bae
1939030e9a
Merge pull request #200 from delibae/chore/bump-v1.2.0
Some checks failed
Lint / lint (push) Has been cancelled
chore: bump version to 1.2.0
2026-06-10 01:46:49 +09:00
Hanjin Bae
f8d5b2a20a chore: bump version to 1.2.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-10 01:46:43 +09:00
Hanjin Bae
a5e33b6cc1
Merge pull request #199 from delibae/chore/bump-v1.1.8
chore: bump version to 1.1.8
2026-06-10 00:50:46 +09:00
Hanjin Bae
846ef90e16 chore: bump version to 1.1.8
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-10 00:50:40 +09:00
Hanjin Bae
d5337a5007
Merge pull request #198 from delibae/fix/linux-pkgconfig-semistatic
fix: Linux build via pkg-config + semi-static (matches tectonic CI)
2026-06-10 00:29:37 +09:00
Hanjin Bae
a81e0e06a9 fix: use pkg-config + semi-static for Linux (matches tectonic CI)
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>
2026-06-10 00:29:30 +09:00
Hanjin Bae
42f20163f1
Merge pull request #197 from delibae/fix/linux-icu-disable-renaming
fix: add U_DISABLE_RENAMING + ICU diagnostic on Linux
2026-06-10 00:12:05 +09:00
Hanjin Bae
6e34b8660f fix: add U_DISABLE_RENAMING for ICU compat + ICU symbol diagnostic
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>
2026-06-10 00:11:58 +09:00
Hanjin Bae
4f50c1a4b2
Merge pull request #196 from delibae/fix/commit-cargo-lock
fix: commit Cargo.lock with pinned versions
2026-06-09 23:54:57 +09:00
Hanjin Bae
b0126b26bf fix: commit Cargo.lock with pinned dependency versions
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>
2026-06-09 23:54:51 +09:00
Hanjin Bae
715753c8d3
Merge pull request #195 from delibae/fix/linux-build-mold-vcpkg
fix: Linux build with mold linker + graphite2 overlay
2026-06-09 23:43:41 +09:00
Hanjin Bae
c2e8e83081 fix: Linux build with mold linker + graphite2 overlay + vcpkg ICU
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>
2026-06-09 23:43:35 +09:00
Hanjin Bae
9b1a8825d1
Merge pull request #156 from delibae/fix/tauri-api-version-mismatch
fix: update @tauri-apps NPM packages to match tauri 2.11
2026-06-08 23:39:19 +09:00
Hanjin Bae
e09e6ddfd2 fix: update @tauri-apps NPM packages to match tauri 2.11 crate
The Rust tauri crate was bumped to 2.11.1 in PR #146 but the NPM
@tauri-apps/api package stayed at 2.10.1, causing the Tauri build to
fail with a version mismatch error.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-08 23:39:02 +09:00
Hanjin Bae
87a89c4c2c
Merge pull request #155 from delibae/chore/bump-v1.1.7
chore: bump version to 1.1.7
2026-06-08 23:18:21 +09:00
Hanjin Bae
0dbd06e5ed chore: bump version to 1.1.7 and fix tauri type compat in tests
Update all version references to 1.1.7. Fix TypeScript errors in test
mocks caused by tauri 2.11 changing fs API signatures from string to
string | URL.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-08 23:17:58 +09:00
Hanjin Bae
97180c0fed
Merge pull request #148 from delibae/dependabot/npm_and_yarn/npm_and_yarn-6b5db82cdb
Reviewed: vitest major bump, CI passing
2026-06-08 23:14:05 +09:00
Hanjin Bae
1b2b7c3222
Merge pull request #146 from delibae/dependabot/cargo/apps/desktop/src-tauri/cargo-15d2aa67de
Reviewed: tauri patch update, Cargo.lock only
2026-06-08 23:14:02 +09:00
Hanjin Bae
17a9b3caaa
Merge pull request #153 from TimothyMerlin/fix/vim-selection-highlight
Reviewed: clean bugfix, adds drawSelection() for vim visual mode
2026-06-08 23:13:58 +09:00
Timotheus Merlin Scherer
8404e27e07 fix: show selection highlight in vim visual mode
Add drawSelection() so vim visual mode selections render with a visible
background. Without this extension, the .cm-selectionBackground CSS
rule had no elements to style.
2026-06-07 11:28:20 +02:00
dependabot[bot]
25d3247ce5
chore(deps): bump the npm_and_yarn group across 2 directories with 2 updates
Bumps the npm_and_yarn group with 1 update in the / directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).
Bumps the npm_and_yarn group with 1 update in the /apps/desktop directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).


Updates `vitest` from 3.2.4 to 4.1.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/vitest)

Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

Updates `vitest` from 3.2.4 to 4.1.0
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 4.1.0
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: vitest
  dependency-version: 4.1.0
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-01 21:04:03 +00:00
dependabot[bot]
c47a92f462
chore(deps): bump tauri
Bumps the cargo group with 1 update in the /apps/desktop/src-tauri directory: [tauri](https://github.com/tauri-apps/tauri).


Updates `tauri` from 2.10.3 to 2.11.1
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-v2.10.3...tauri-v2.11.1)

---
updated-dependencies:
- dependency-name: tauri
  dependency-version: 2.11.1
  dependency-type: direct:production
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-30 14:19:42 +00:00
dependabot[bot]
dc5e9a5d24
chore(deps): bump the cargo group across 1 directory with 4 updates (#145)
Some checks failed
Lint / lint (push) Has been cancelled
Bumps the cargo group with 4 updates in the /apps/desktop/src-tauri directory: [tauri](https://github.com/tauri-apps/tauri), [openssl](https://github.com/rust-openssl/rust-openssl), [quinn-proto](https://github.com/quinn-rs/quinn) and [rustls-webpki](https://github.com/rustls/webpki).


Updates `tauri` from 2.10.2 to 2.10.3
- [Release notes](https://github.com/tauri-apps/tauri/releases)
- [Commits](https://github.com/tauri-apps/tauri/compare/tauri-v2.10.2...tauri-v2.10.3)

Updates `openssl` from 0.10.75 to 0.10.80
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.75...openssl-v0.10.80)

Updates `quinn-proto` from 0.11.13 to 0.11.14
- [Release notes](https://github.com/quinn-rs/quinn/releases)
- [Commits](https://github.com/quinn-rs/quinn/compare/quinn-proto-0.11.13...quinn-proto-0.11.14)

Updates `rustls-webpki` from 0.103.9 to 0.103.13
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.103.9...v/0.103.13)

---
updated-dependencies:
- dependency-name: tauri
  dependency-version: 2.10.3
  dependency-type: direct:production
  dependency-group: cargo
- dependency-name: openssl
  dependency-version: 0.10.80
  dependency-type: indirect
  dependency-group: cargo
- dependency-name: quinn-proto
  dependency-version: 0.11.14
  dependency-type: indirect
  dependency-group: cargo
- dependency-name: rustls-webpki
  dependency-version: 0.103.13
  dependency-type: indirect
  dependency-group: cargo
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-30 23:17:03 +09:00
dependabot[bot]
e63e913849
chore(deps-dev): bump turbo in the npm_and_yarn group across 1 directory (#144)
Some checks are pending
Lint / lint (push) Waiting to run
Bumps the npm_and_yarn group with 1 update in the / directory: [turbo](https://github.com/vercel/turborepo).


Updates `turbo` from 2.7.6 to 2.9.14
- [Release notes](https://github.com/vercel/turborepo/releases)
- [Changelog](https://github.com/vercel/turborepo/blob/main/RELEASE.md)
- [Commits](https://github.com/vercel/turborepo/compare/v2.7.6...v2.9.14)

---
updated-dependencies:
- dependency-name: turbo
  dependency-version: 2.9.14
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-29 22:15:28 +09:00
opalsaints
6a1fdf650d
feat(workspace): add toggle for PDF preview pane (#141)
Adds the ability to hide/show the right-side PDF preview pane:
- Cmd+\ / Ctrl+\ keyboard shortcut
- Floating button at the editor's bottom-right corner (icon switches
  between PanelRightCloseIcon and PanelRightOpenIcon based on state)
- Editor expands to fill freed space when preview is hidden
- Preview defaults to visible (no behaviour change for existing users)

State is held in a small Zustand store (preview-store.ts).

Co-authored-by: opalsaints <242018735+opalsaints@users.noreply.github.com>
2026-05-29 22:14:43 +09:00
Merlin
1f4055a730
feat: add vim mode toggle to LaTeX editor (#140)
* feat: add vim mode toggle to LaTeX editor

* fix: re-apply vim mode when switching files in editor
2026-05-29 22:14:25 +09:00
Weilin Cai
eb1e300c81
fix: skip Python cache files during project scan (#129)
Some checks failed
Lint / lint (push) Has been cancelled
2026-04-10 13:42:28 +09:00
Hanjin Bae
c0c0ce4255
chore: bump version to 1.1.6 (#127)
Some checks failed
Lint / lint (push) Has been cancelled
2026-04-08 21:31:39 +09:00
Hanjin Bae
640f38e706
Merge pull request #123 from delibae/dependabot/npm_and_yarn/npm_and_yarn-672fb18816
Some checks are pending
Lint / lint (push) Waiting to run
chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates
2026-04-07 20:35:15 +09:00
Hanjin Bae
7ea1bd89f6
Merge pull request #126 from WhiskyChoy/codex/dev-mupdf-wasm-fix
fix: resolve MuPDF wasm correctly in desktop dev
2026-04-07 20:35:01 +09:00
Hanjin Bae
313f47d969
Merge pull request #125 from WhiskyChoy/codex/windows-stdin-prompt
fix: send long Windows Claude prompts via stdin
2026-04-07 20:34:52 +09:00
Hanjin Bae
d9cf9d461e
Merge pull request #124 from WhiskyChoy/codex/windows-recent-project-scope
fix: re-authorize recent project directories before opening
2026-04-07 20:34:38 +09:00
Weilin Cai
7ab99b5b5e style: format MuPDF dev loading files 2026-04-07 16:19:01 +08:00
Weilin Cai
d4a79375ca style: format Claude prompt transport test 2026-04-07 16:18:30 +08:00
Weilin Cai
c8e9926c20 fix: surface Claude stdin transport failures 2026-04-07 16:13:46 +08:00
Weilin Cai
29f6fd936d test: strengthen recent project authorization coverage 2026-04-07 16:13:24 +08:00
Weilin Cai
1c4eaf3e6d fix: resolve MuPDF wasm correctly in desktop dev 2026-04-07 16:03:06 +08:00
Weilin Cai
cf672e44d5 fix: send long Windows Claude prompts via stdin 2026-04-07 16:02:39 +08:00
Weilin Cai
037e033f35 fix: re-authorize recent project directories before opening 2026-04-07 16:02:23 +08:00
dependabot[bot]
995acd18c9
chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates
Bumps the npm_and_yarn group with 1 update in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 6.4.1 to 6.4.2
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.4.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.4.2/packages/vite)

Updates `picomatch` from 2.3.1 to 4.0.3
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...4.0.3)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.4.2
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: picomatch
  dependency-version: 4.0.3
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-07 05:23:54 +00:00
Hanjin Bae
0f2635ab7a
Merge pull request #120 from delibae/chore/bump-v1.1.5
chore: bump version to v1.1.5
2026-04-02 14:23:46 +09:00
delibae
fcbcbc4c2d chore: bump version to v1.1.5
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 14:22:39 +09:00
Hanjin Bae
e57162f7b1
Merge pull request #119 from WhiskyChoy/codex/macos-cli-discovery
fix: improve macOS Claude CLI discovery
2026-04-02 14:03:40 +09:00
Weilin Cai
9fa07c1b8b fix: improve macOS Claude CLI discovery 2026-04-02 00:25:41 +08:00
Hanjin Bae
9b6a662e16
Merge pull request #117 from WhiskyChoy/fix/windows-texlive-console-window
fix: hide Windows TeXLive compiler console windows
2026-04-01 13:18:37 +09:00
Weilin Cai
9318ea632e fix: hide Windows TeXLive compiler console windows 2026-04-01 12:01:26 +08:00
Hanjin Bae
4effb83cf6
Merge pull request #113 from delibae/chore/bump-v1.1.4
chore: bump version to 1.1.4
2026-03-30 23:24:50 +09:00
delibae
52cfd79e43 chore: bump version to 1.1.4
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 23:24:20 +09:00
Hanjin Bae
d152fa1d6a
Merge pull request #112 from GunwoongP/fix/windows-git-bash-detection
fix: preserve CLAUDE_CODE_GIT_BASH_PATH and auto-detect git-bash on W…
2026-03-30 23:23:49 +09:00