Commit graph

184 commits

Author SHA1 Message Date
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
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
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
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
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
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
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
Weilin Cai
9fa07c1b8b fix: improve macOS Claude CLI discovery 2026-04-02 00:25:41 +08:00
Weilin Cai
9318ea632e fix: hide Windows TeXLive compiler console windows 2026-04-01 12:01:26 +08: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
GunwoongP
6434f176e1 fix: address Copilot review — refactor git-bash detection and improve error handling
- Refactor: extract shared find_git_bash() function used by both
  create_command and check_claude_status (eliminates code duplication)
- Validate user-specified CLAUDE_CODE_GIT_BASH_PATH exists before using it,
  falling back to auto-detection if the path is invalid
- Check existing error state before setting stderr errors to avoid
  masking more specific earlier errors
- Make zero-output error message platform-aware (git-bash hint only on Windows)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 23:03:02 +09:00
GunwoongP
ef5cd94f4d fix: preserve CLAUDE_CODE_GIT_BASH_PATH and auto-detect git-bash on Windows
The env var cleanup logic was stripping CLAUDE_CODE_GIT_BASH_PATH along
with other CLAUDE_CODE_* vars, causing Claude Code to fail even when the
user had explicitly set it. This also adds auto-detection of git-bash
from common install paths and git.exe on PATH.

Additionally, surface git-bash related stderr errors to the UI and show
a clear error message when the process fails with zero output.

Closes #109

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 22:45:56 +09:00
delibae
863b62b826 chore: bump version to 1.1.3
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 20:12:42 +09:00
GunwoongP
083eed94f1 style: fix biome lint CSS class sort and formatting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:09:59 +09:00
GunwoongP
ce32bb071b fix: replace debug window with in-app panel to fix IPC issue
The separate debug webview failed in dev mode due to CORS preflight
blocking Tauri IPC calls, resulting in a blank window (#109 reporter
also experienced this).

Replace it with a bottom panel overlay in the main window:
- Same webview = no IPC issues, direct access to log buffer
- Toggle with Ctrl+Shift+D (same shortcut)
- Lazy-loaded DebugPage component
- Click backdrop or press shortcut again to close
- Revert log-store.ts cross-window emitTo back to emit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 18:05:11 +09:00
GunwoongP
dd6ca0cb54 fix: expand registry PATH vars and fix debug window sync
- Expand %USERPROFILE% etc. via ExpandEnvironmentStringsW when reading
  registry PATH entries
- Use is_file() instead of exists() for binary detection
- Fix debug window showing blank: use emitTo() for cross-window events
  instead of emit() which only targets the current window
- Update step numbering and doc comments
- Improve error message to avoid double-wrapping

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 17:43:38 +09:00
GunwoongP
e37cf55367 fix: find Claude CLI via Windows registry PATH for GUI apps
GUI apps inherit a stale PATH from login time, so if Claude was
installed afterwards it won't be found by which::which(). Read the
real User + System PATH from the Windows registry (HKCU/HKLM) and
search for claude.exe / claude.cmd there.

Also adds fallback paths for Volta, Scoop, pnpm global, and standard
Node.js installs, and replaces the bare "claude" fallback with a
proper error.

Addresses #109

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 16:34:15 +09:00
Hanjin Bae
7e5e395e30
Merge pull request #107 from delibae/fix/multi-file-pdf-preview
fix: resolve PDF preview to correct root file in multi-file LaTeX projects
2026-03-30 12:09:23 +09:00
delibae
f69de4ef12 chore: bump version to 1.1.2
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:09:01 +09:00
delibae
cc4ad9d668 fix: resolve PDF preview to correct root file in multi-file LaTeX projects
resolveTexRoot now detects \documentclass to find the actual root file
instead of treating the active sub-file as the compilation target.
This fixes incorrect PDF preview when editing non-main .tex files.

Closes #106

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:08:46 +09:00
L-N1988
593a7e2301 feat: enable zooom in/out via ctrl +/-. 2026-03-27 19:29:17 +08:00
delibae
baea3e32a9 chore: bump version to 1.1.1
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 15:53:17 +09:00
delibae
37957aacb8 fix: resolve Windows project creation failure and Linux segfault
Windows (#101): Add explicit FS scopes to each permission in
default.json so Tauri's scope validator accepts Windows paths.
Remove silent .catch(() => {}) on mkdir/writeTextFile so errors
surface via toast instead of failing silently. Replace all
.split("/").pop() with .split(/[/\\]/).pop() (14 occurrences)
for correct path parsing on Windows.

Linux (#100): Add ELF linker version script (symbols.map) that
hides statically linked ICU/HarfBuzz/FreeType/Fontconfig/Graphite2
symbols from the dynamic symbol table. This prevents symbol
collisions with WebKit2GTK's own dynamic copies of these libraries,
which caused a segfault at startup. The static linking introduced
in v1.0.10 to fix #91 is preserved—ICU remains embedded in the
binary so it works across distros.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 15:50:11 +09:00
Hanjin Bae
a790fa8f30
Merge pull request #99 from cityuaaronzhu/contrib-latex-errors
Improve LaTeX error context and sync speed
2026-03-27 12:02:32 +09:00
aaronzhu
5d61977df6 Improve LaTeX error context and sync speed 2026-03-27 09:51:29 +08:00
Peter-Bot
51b6d6abec feat: add local TeXLive as alternative LaTeX compilation backend
Tectonic's limited package support makes it unusable for academic work
with custom .sty/.cls files. This adds opt-in support for shelling out
to a locally installed TeXLive distribution.

Backend (latex.rs):
- compile_with_texlive(): multi-pass compilation (2-3 engine passes +
  optional bibtex/biber), with xdvipdfmx fallback for .xdv → .pdf
- find_texlive_binary(): resolves binaries via PATH, standard install
  locations, and macOS login-shell fallback for GUI apps
- detect_bib_tool(): scans .tex for biblatex/bibliography to choose
  biber vs bibtex
- texlive_env_path(): injects TeXLive bin dir into subprocess PATH so
  xelatex can find xdvipdfmx internally
- detect_texlive Tauri command: reports available engines and version
- compile_latex gains use_texlive parameter; error messages show which
  backend ran (e.g. "Compilation failed (TeXLive/xelatex)")
- All paths passed to TeX are relative to avoid tilde expansion in
  iCloud paths (com~apple~CloudDocs)

Frontend:
- New settings-store.ts with persisted compilerBackend preference
- Backend selector dropdown in PDF preview toolbar
- All compile call sites pass the setting through to the backend
- detectTexlive() and TexliveStatus for engine availability checks

Tectonic remains the default. TeXLive is opt-in via the toolbar
dropdown. All existing tests pass (152/152).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 00:02:38 +01:00
delibae
a6ace1a8d2 chore: bump version to 1.1.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 20:00:50 +09:00
delibae
bdc57978ba fix: resolve macOS 12 window not showing due to WebKit top-level-await bug
On macOS 12 (Monterey), the app launches but no main window appears.
The root cause is WebKit bug #242740: Safari 15's WKWebView has a race
condition with top-level await in ES modules, causing silent JS failure
that prevents `getCurrentWindow().show()` from ever being called.

Three complementary fixes:

1. Change Vite build target from `esnext` to `safari14` (Tauri recommended)
   and add `vite-plugin-top-level-await` to transform TLA into compatible
   Promise chains, avoiding the WebKit bug entirely.

2. Replace top-level `await import("./App")` in main.tsx with a `.then()`
   chain, removing TLA dependency at the source level.

3. Add a Rust-side 8-second timeout safety net in `setup()` that
   force-shows the main window if the frontend JS fails to do so,
   preventing permanently hidden windows regardless of the failure cause.

Closes #95

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 19:57:52 +09:00
delibae
2e623c217f chore: bump version to 1.0.10
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 22:14:05 +09:00
delibae
12a79b0981 fix: static-link ICU on Linux and augment PATH for GUI-launched child processes
Three related environment issues are addressed:

1. Linux ICU version mismatch (#91):
   The Linux build used pkg-config to dynamically link against the host's
   ICU (libicuuc.so.70 on Ubuntu 22.04). Users on newer distros (e.g.
   Ubuntu 25.10 with ICU 76) get "cannot open shared object" errors.
   Switch to vcpkg static linking, mirroring the macOS fix (commit 9566956).

2. MCP servers fail on macOS GUI app (#87):
   macOS GUI apps inherit a minimal PATH (/usr/bin:/bin) that lacks
   /opt/homebrew/bin, so MCP server commands like `uv` silently fail.
   Prepend common tool directories (~/.local/bin, ~/.cargo/bin,
   /opt/homebrew/bin, NVM paths, etc.) to the child process PATH in
   create_command().

3. Existing NVM-installed Claude Code ignored (#90):
   find_claude_binary() relied on `which` which fails in GUI apps without
   NVM in PATH. Add NVM_BIN env var check and login shell fallback
   (`$SHELL -l -c "which claude"`) to discover claude through the user's
   actual shell configuration.

Closes #87, closes #90, closes #91

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 22:10:19 +09:00
GunwoongP
71a4035a31 fix: pass Windows environment variables during CLI install and login
- Extract shared is_essential_env_var() with case-insensitive matching
- Replace duplicated inline env var lists in install_claude_cli, login_claude, and install_uv
- Add 16 Windows-essential env vars (USERPROFILE, APPDATA, SYSTEMROOT, etc.)
- Use eq_ignore_ascii_case for PATH checks

Without these variables, PowerShell/npm cannot function correctly,
causing the "Installing CLI" step to fail on Windows.

Closes #88

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:10:55 +09:00
delibae
a772b5833c chore: bump version to 1.0.9
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 17:41:48 +09:00