Commit graph

112 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
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
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
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
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
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
c8e9926c20 fix: surface Claude stdin transport failures 2026-04-07 16:13:46 +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
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
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
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
delibae
37ca06db35 fix: remove .cargo/config.toml from git and add to .gitignore
This file hardcodes /opt/homebrew paths (Apple Silicon only) for local
development. It should not be tracked — each developer sets up their
own local paths. Added to .gitignore to prevent re-committing.

Relates to #77 (crash on start due to dynamically linked ICU).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 17:31:20 +09:00
delibae
b5ced3a7fa feat: add Intel Mac build workflow, bump version to 1.0.8
Add build-macos-intel job using macos-15-intel runner with
x86_64-apple-darwin target. Includes code signing, notarization,
and updater support (darwin-x86_64 platform key in latest.json).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 03:19:05 +09:00
delibae
da2f76c51a chore: fix lint warnings, bump version to 1.0.7
- Remove unused imports (hasPdfData, contentGeneration, lastCompiledGenerations)
- Bump version 1.0.6 → 1.0.7

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 02:39:49 +09:00
delibae
63483a2d2c feat: subprocess tectonic, editor shortcuts, and UX improvements
- Isolate tectonic compilation in subprocess to prevent font cache
  assertion crash on retry (fixes #67)
- Fix unreachable pattern warning in lib.rs by merging duplicate
  WindowEvent::Focused match arms
- Add editor shortcuts: Cmd+B (bold), Cmd+I (italic), Cmd+/ (comment)
- Add Tab/Shift-Tab indent support in CodeMirror editor
- Fix WebKit rendering artifacts with translateZ(0) on .cm-scroller
- Force recompile on button click and Cmd+Enter (skip generation check)
- Add minimum 500ms compile spinner for visual feedback

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 02:38:56 +09:00
delibae
90d351bca9 chore: bump version to 1.0.6
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 01:13:07 +09:00
delibae
a10afacd6c fix: improve Linux AppImage compatibility and login reliability
- Add sanitize_appimage_env() to restore original LD_LIBRARY_PATH/PATH
  when spawning child processes from AppImage (fixes xdg-open, curl)
- Pass DISPLAY, WAYLAND_DISPLAY, XDG_*, DBUS_SESSION_BUS_ADDRESS to
  child processes for Linux desktop integration
- Add stdin(Stdio::null()) to install_claude_cli to prevent interactive
  prompt hangs
- Add 120s timeout to login_claude to prevent indefinite hang when
  browser fails to open
- Show "Setup Guide" link to code.claude.com/docs/quickstart on login
  failure
- Keep releases as draft in CI workflow for manual publish

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 01:11:02 +09:00
delibae
95c4072ec1 chore: fix all lint and formatting issues (biome check)
- Fix unused imports and variables
- Apply biome formatting (template literals, semicolons, line width)
- Fix a11y issues (label associations, anchor content)
- Fix Node.js import protocol (node:fs, node:path)
- Use self.onmessage in web worker

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:04:36 +09:00
Minsoo Kim
ea04d34bb4
Merge pull request #63 from delibae/feat/debug-and-black-screen-fix
fix: black screen on app switch + debug infrastructure
2026-03-16 16:47:20 +09:00
delibae
2480715f22 fix: macOS WKWebView black screen on focus restore & bump v1.0.5
- Add dual workaround for WKWebView failing to repaint after returning
  from background (1px resize nudge + DOM reflow)
- Use version-free download links in landing page
- Resolve app version dynamically from Tauri in sidebar
- Bump version to 1.0.5

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:40:10 +09:00
Minsoo Kim
363b8c3482 refactor: separate debug window, cross-window log sync, simplify
- Debug panel is now a separate Tauri window (survives main window
  black screen) opened via Cmd+Shift+D or open_debug_window command
- Cross-window log bridging via Tauri events: main window emits
  entries, debug window receives them + bulk sync on open
- Log store uses mutable ring buffer + version counter instead of
  array spread per log; caches localStorage debug flag
- Debounce app-visibility-restored (200ms) to coalesce duplicate
  visibilitychange + Tauri Focused events
- Single getImageData(2x2) call in isCanvasBlank instead of 3x 1x1
- Extract shared getGpuRenderer (cached), SystemInfo type,
  getVisibilityLogs into log-store.ts
- Event name constants (APP_VISIBILITY_RESTORED)
- Remove debug UI from error-fallback.tsx and App.tsx
- Fix misplaced import in document-store.ts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:31:54 +09:00
Minsoo Kim
db97ea59ad fix: resolve black screen on app switch (macOS M1)
Add visibility/focus recovery to prevent black screen when returning
from another app. When macOS reclaims GPU/WebView resources during app
switching, canvas contexts are silently invalidated. This adds:

- visibilitychange + Tauri Focused event listeners in main.tsx
- Canvas blank detection and auto-re-render in mupdf-page.tsx
- IntersectionObserver reconnection via focusGen in pdf-viewer.tsx
- MuPDF worker error recovery and resetMupdfClient() in mupdf-client.ts
- Cmd+Shift+D debug panel keyboard shortcut
2026-03-16 16:31:53 +09:00
delibae
3d329af3a6 chore: bump version to v1.0.4
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:13:10 +09:00
delibae
b6b7085db3 fix: resolve all platform-specific Rust warnings
- lib.rs: #[allow(unused_mut)] on builder (mut only needed on macOS)
- claude.rs: move CommandExt import to module level with #[cfg(windows)]
- claude.rs: #[allow(unused_variables)] on home (used only on Unix)
- claude.rs: add #[cfg(not(windows))] to Unix-only dir helper functions
- uv.rs: move CommandExt import to module level with #[cfg(windows)]
- skills.rs: fix unreachable Ok(()) after #[cfg] return branches

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 16:11:55 +09:00
delibae
51e038495f feat: version-free release filenames, inline updater UI (v1.0.3)
- Rename build artifacts to fixed names (ClaudePrism-macOS.dmg, etc.)
- Update latest.json URLs to use fixed filenames
- Update README download links to /releases/latest
- Inline update UI on home screen with version badge
- Gitignore Tauri gen/schemas
- Bump to v1.0.3

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:40:18 +09:00
delibae
2f3276a80e feat: inline update UI on home screen, gitignore gen/schemas (v1.0.2)
- Replace toast-based updater with inline version badge on home screen
- Show version + check/update/progress states directly in ProjectPicker
- Move Toaster to App level for workspace toast support
- Remove auto-generated Tauri schemas from git tracking
- Bump to v1.0.2

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:26:21 +09:00
delibae
15b0a24103 fix: move Toaster to App level, add version display, set v1.0.1
Toaster was only in WorkspaceWithClaude so update toasts didn't show
on the home screen. Moved to App level. Also shows version on home.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:03:54 +09:00
delibae
4dfe6b1946 feat: show app version on home screen, bump to v1.0.2
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 14:47:11 +09:00