Commit graph

176 commits

Author SHA1 Message Date
Hanjin Bae
3322f3c600
ci: preserve existing release assets when uploading Windows build (#36)
Replace tauri-action's built-in release management with gh CLI to
avoid overwriting macOS/Linux assets. The workflow now creates a
release only if one doesn't exist, and uploads Windows binaries
with --clobber to update only the Windows assets.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 22:15:28 +09:00
Hanjin Bae
458b966c36
Merge pull request #34 from delibae/fix/windows-process-spawn
fix: resolve Windows process spawn and CLI detection issues
2026-03-15 21:56:30 +09:00
Hanjin Bae
0404f3adc7
Merge pull request #33 from delibae/docs/improve-japanese-readme
docs: improve Japanese README translation quality
2026-03-15 21:55:52 +09:00
delibae
4f07dcfcec fix: resolve Windows process spawn and CLI detection issues
- Add CREATE_NO_WINDOW flag to all child process spawns on Windows to
  prevent blank console windows from flashing (claude.rs: 4 sites,
  uv.rs: 5 sites)
- Fix claude.exe detection: native installer path check now uses .exe
  extension on Windows (~/.local/bin/claude.exe)
- Fix PATH separator in install_claude_cli: use ";" on Windows instead
  of hardcoded ":"
- Add strip_ansi() to filter terminal escape sequences ([?2026h] etc.)
  from install/login output streamed to the frontend UI
- Fix slash_commands.rs path splitting to handle Windows backslashes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 21:55:37 +09:00
Minsoo Kim
8156417370 docs: improve Japanese README translation quality and consistency
Refine wording throughout README.ja.md for more natural, idiomatic Japanese.
Standardize formatting conventions (fullwidth → halfwidth ampersands,
consistent punctuation, terminology alignment with English README).
2026-03-15 17:00:03 +09:00
Hanjin Bae
677923d4cd
Merge pull request #32 from delibae/docs/add-japanese-readme
docs: add Japanese README and update language link order
2026-03-15 16:15:11 +09:00
delibae
d625e74ee6 docs: add Japanese README and update language links order
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 16:13:49 +09:00
Hanjin Bae
492a124993
Merge pull request #31 from delibae/fix/readme-download-links
docs: improve README with download badges, screenshots, and Korean translation
2026-03-15 15:56:56 +09:00
delibae
8e50b9dcd4 docs: add Korean README and link all language versions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 15:49:37 +09:00
Hanjin Bae
2638ead954
Merge pull request #30 from delibae/fix/readme-download-links
docs: improve README with download badges and feature screenshots
2026-03-15 15:00:48 +09:00
delibae
95b168804d docs: add feature screenshots from landing demo to README
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 14:57:08 +09:00
Hanjin Bae
c87dd53040
Merge pull request #29 from delibae/fix/readme-download-links
fix: improve README download links with badge buttons
2026-03-15 14:36:39 +09:00
delibae
baab8525fa style: replace plain-text download links with shields.io badge buttons
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 14:36:08 +09:00
Hanjin Bae
d39a12c7a1
Merge pull request #28 from delibae/fix/readme-download-links
fix: correct download URLs in README
2026-03-15 00:53:37 +09:00
delibae
b5b7fa8d05 fix: correct download URLs in README to match actual release assets
- Add version prefix (1.0.0) to asset filenames
- Change Windows installer from .msi to .exe for general users

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 00:52:28 +09:00
Hanjin Bae
8cb23ec6b2
Merge pull request #27 from delibae/fix/dependabot-security-alerts
fix: resolve Dependabot security alerts
2026-03-15 00:09:15 +09:00
delibae
03bec2ac2b fix: resolve Dependabot security alerts for undici, flatted, and hono
Add pnpm overrides to bump transitive dependencies to patched versions:
- undici >=7.24.0 (fixes CVEs for WebSocket, CRLF injection, request smuggling)
- flatted >=3.4.0 (fixes unbounded recursion DoS)
- hono >=4.12.7 (fixes prototype pollution via __proto__)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 00:07:07 +09:00
delibae
9778df2c3f feat: add Chinese localization for README and enhance content structure 2026-03-14 22:25:29 +09:00
delibae
533499ab8b docs: update README, add demo screenshot, remove outdated overview
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 21:40:58 +09:00
delibae
6cafe39baf fix: standardize default file name to main.tex across the application 2026-03-14 21:12:23 +09:00
delibae
1068869a45 feat: enhance editor CLI resolution on macOS and improve file creation logic 2026-03-14 18:36:13 +09:00
delibae
653c4994f9 fix: use pkg-config instead of vcpkg for tectonic dependencies on Linux
vcpkg root was not available, causing build failures for freetype2,
graphite2, and ICU. System pkg-config resolves these reliably.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:43:06 +09:00
delibae
7daeb97486 Remove TypeScript build info file and add Linux build script for ClaudePrism 2026-03-14 17:33:33 +09:00
delibae
f594addbe1 ci: Windows-only GitHub Actions, macOS/Linux built locally
- Simplify build-desktop.yml to Windows only (with vcpkg cache)
- Add scripts/build-macos.sh for local macOS builds with signing/notarization
- Remove Travis CI (macOS unsupported, Windows too slow)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:50:08 +09:00
delibae
c634fb38b1 fix: use GitHub API for auto-generated release notes
gh release edit doesn't support --generate-notes flag,
use repos/{owner}/{repo}/releases/generate-notes API instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 02:41:04 +09:00
delibae
95ae9b49a7 fix: update pnpm-lock.yaml after covector removal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 02:07:27 +09:00
delibae
c8f7741d80 chore: remove covector, simplify release to manual tag-based flow
- Remove covector and .changes/ directory
- Remove covector workflow, keep only build-desktop.yml
- Replace custom changelog with GitHub auto-generated release notes
- Move Homebrew cask management to delibae/homebrew-claude-prism tap repo
- Remove in-repo homebrew/ directory
- Bump version to 1.0.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 02:00:38 +09:00
Hanjin Bae
0542bc1b53
Merge pull request #25 from delibae/fix/large-file-guard-copilot-review
fix: address Copilot review on PR #24 — update comments and add binary extension tests
2026-03-12 15:10:58 +09:00
delibae
792b6dc58f fix: address Copilot review — update comments and add binary extension tests
- Update IGNORED_EXTENSIONS comment from "LaTeX build artifacts" to reflect
  that it now includes general non-editable/binary files
- Update getFileType comment to match the broader scope of ignored extensions
- Add test coverage for representative binary extensions (.docx, .xlsx, .hwp,
  .accdb, .zip, .exe, .mp3, .mp4, .psd, .sqlite, .dll, .pptx)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:08:42 +09:00
GunwoongP
13f32a2437 fix: exclude binary file types from project file tree
Add 40+ binary extensions (.hwp, .docx, .xlsx, .accdb, .zip, .exe,
media files, etc.) to IGNORED_EXTENSIONS so they are filtered out
during directory scanning. These files cannot be meaningfully edited
in the text editor and would only cause unnecessary I/O and memory
usage when present in a project folder.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:45:46 +09:00
Hanjin Bae
ce30fcbede
Merge pull request #23 from vv137/fix/pdf-white-screen-and-compile-queue 2026-03-12 11:31:17 +09:00
Minsoo Kim
dc306eaebe fix: resolve merge conflicts, prevent recompile recursion, and improve test isolation
- Resolve git merge conflict markers in latex-editor.tsx compileRef
- Use setTimeout for pending recompile to prevent unbounded call stack recursion
- Add clearPdfBytesCache() in test beforeEach for proper test isolation
- Use existing `state` variable instead of redundant getState() calls
- Log when strip_nul actually strips nul bytes for diagnostics

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:14:06 +09:00
Minsoo Kim
2459067e77 fix: resolve PDF white-screen crash, nul-byte spawn error, and dropped recompiles
Three interconnected issues caused degraded UX:

1. **White-screen crash**: Large PDF `Uint8Array` buffers (often 5-20MB) stored
   directly in Zustand state caused React to diff them on every render. This
   triggered excessive memory pressure and eventual WebView white-screen crashes,
   especially with multi-root projects keeping a `pdfCache` Map in state.

2. **"nul byte found in provided data" spawn error**: Clipboard artifacts or
   encoding issues could introduce interior nul bytes into Claude CLI arguments,
   causing `Command::spawn()` to fail on macOS/Linux (which use C strings
   internally).

3. **Silently dropped recompiles**: When a compile was requested while another
   was already running (`isCompiling === true`), the request was silently
   discarded. This meant edits made during compilation never triggered a
   follow-up compile.

- Replaced `pdfData: Uint8Array | null` and `pdfCache: Map<string, Uint8Array>`
  in Zustand with an external module-level `_pdfBytesCache` Map.
- Added a `pdfRevision` counter in state that increments whenever PDF bytes
  change, triggering React re-renders without diffing the actual buffer.
- Exposed `getPdfBytes()`, `getCurrentPdfBytes()`, `hasPdfData()`, and
  `clearPdfBytesCache()` as direct accessors for components.
- Added `migratePdfBytesKey()` helper to deduplicate cache re-keying logic
  used by `renameFile` and `moveFile`.
- Conditional `pdfRevision` bumping in `setActiveFile` — only bumps when the
  PDF root actually changes, avoiding unnecessary re-renders on tab switches
  within the same root.
- `setPdfData(null)` no longer copies `compileErrorCache`/`lastCompiledGenerations`
  Maps since it doesn't need to modify them.

- Added `strip_nul()` using `Cow<str>` for zero-allocation fast path when no
  nul bytes are present (the common case).
- Applied to program, args, cwd, and inherited PATH in `create_command()`.
- Added structured error logging on spawn failure with tab ID for debugging.

- Added `pendingRecompile` boolean to document store.
- When `isCompiling` is true and a compile is requested, sets
  `pendingRecompile = true` instead of silently returning.
- After compilation finishes (in `finally` block), checks `pendingRecompile`
  and triggers a follow-up compile if queued.
- Applied consistently in latex-editor, pdf-preview, and use-claude-events.

- Added `js_log` IPC command for frontend → stderr logging that survives
  white-screen crashes.
- Added PDF size logging in `compile_latex` for monitoring.

- Updated test state shape (`pdfRevision` instead of `pdfData`, added
  `pendingRecompile`).
- Fixed `setActiveFile` test: cursor position is preserved (editor manages
  per-file cursor cache), not reset to 0.
- Updated `setPdfData` test to use `getCurrentPdfBytes()` accessor.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 02:53:24 +09:00
Hanjin Bae
8776dff4b9
Merge pull request #22 from delibae/fix/missing-tex-file-error-handling
Fix/missing tex file error handling
2026-03-11 01:42:10 +09:00
delibae
4b07d7443b fix: address Copilot review — optimize stat calls and support large image preview
Only call stat() for image/other file types during project scan to avoid
unnecessary I/O overhead on tex/bib/style/pdf files. Use convertFileSrc
(asset URL) as fallback in ImagePreview when dataUrl is not available,
so large images are viewable without loading them entirely into memory.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 01:31:46 +09:00
Hanjin Bae
4a95160984
Update apps/desktop/src/components/workspace/editor/latex-editor.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-11 01:20:41 +09:00
Hanjin Bae
e37afc5a2a
Update apps/desktop/src/lib/latex-compiler.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-11 01:20:10 +09:00
GunwoongP
c0c7b23ebc fix: resolve Windows Claude CLI .cmd wrapper to node for reliable spawning
On Windows, claude.cmd is an npm wrapper that breaks when arguments
contain special characters (quotes, &, |, etc.) because cmd.exe
interprets them. Instead, resolve the .cmd to the underlying
node_modules/@anthropic-ai/claude-code/cli.js and invoke node directly.
This fixes "batch file arguments are invalid" errors on Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 00:54:54 +09:00
GunwoongP
8340d9e29d feat: lazy-load large files to prevent editor slowdown
Skip auto-loading files > 1 MB during project open. Large non-essential
files (e.g., .jsonl training data) show a VS Code-style "Open Anyway"
prompt instead of being read into memory immediately.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 00:54:54 +09:00
Gunwoong Park
7f16944725
Merge branch 'delibae:main' into fix/missing-tex-file-error-handling 2026-03-10 23:47:44 +09:00
GunwoongP
dcb20b779e fix: handle missing .tex file gracefully instead of hardcoded fallback
resolveCompileTarget now returns null when no .tex file exists in the
project, instead of falling back to a hardcoded "document.tex" path.
All 4 call sites (editor, pdf-preview, claude-events) check for null
and show a descriptive error. Rust backend also validates file existence
before attempting Tectonic compilation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 23:12:22 +09:00
delibae
56c0cec531 chore: bump version to 0.5.4 and enhance error handling across multiple modules 2026-03-10 23:11:19 +09:00
Hanjin Bae
a5e102040e
Merge pull request #20 from vv137/feat/pdf-page-nav-and-sidebar-improvements
feat: PDF page navigation, folder deletion, and dirty file indicator
2026-03-10 22:24:05 +09:00
Minsoo Kim
0d59255edb feat: add PDF page navigation, folder deletion, and dirty file indicator
- Add Page Up/Down buttons and editable page indicator to PDF preview toolbar
- Track current visible page via scroll with rAF throttling
- Implement proper recursive folder deletion in sidebar and document store
- Replace text asterisk with blue dot indicator for modified files in sidebar
- Extract shared scrollToPage helper to deduplicate scroll math in pdf-viewer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 22:08:58 +09:00
delibae
4803561aa2 feat: embed Zotero credentials at compile time and bump to v0.5.4
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 22:05:46 +09:00
Hanjin Bae
6782ec5fa1
Merge pull request #19 from delibae/covector/version-bump
chore: version bump
2026-03-10 22:00:06 +09:00
delibae
5111dff588 feat: enhance Zotero credential handling with dotenvy support 2026-03-10 21:59:51 +09:00
delibae
bb80c99271 fix: trigger build workflow via workflow_dispatch after covector publish
GITHUB_TOKEN tag pushes don't trigger other workflows (GitHub limitation).
Use gh workflow run to explicitly trigger Build Desktop after creating the
unified v* tag.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:36:56 +09:00
delibae
fb3914585e feat: create unified v* tag after covector publish to trigger build workflow
Covector creates per-package tags (e.g. claude-prism-desktop-v0.5.3) which
don't match the build workflow's v* trigger pattern. This adds a step to
create a unified vX.Y.Z tag after publish, bridging covector and the build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:34:31 +09:00
delibae
24636e8eab chore: version bump 2026-03-10 12:28:58 +00:00