Commit graph

334 commits

Author SHA1 Message Date
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
Hanjin Bae
6de68b869e
Merge pull request #18 from delibae/covector/version-bump
chore: version bump
2026-03-10 21:28:40 +09:00
Hanjin Bae
98e53208b3
Merge pull request #17 from vv137/chore/gitignore-lockfile
chore: add package-lock.json to .gitignore
2026-03-10 21:28:24 +09:00
delibae
e033c36678 chore: version bump 2026-03-10 12:27:44 +00:00
delibae
da6214cc7d fix: enable covector publish with no-op commands for tag/release creation 2026-03-10 21:27:10 +09:00
Minsoo Kim
e181958276 chore: add package-lock.json to .gitignore
Project uses pnpm, so npm's lock file is a stray artifact.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:26:41 +09:00
Hanjin Bae
2cc4e2b3f9
Merge pull request #14 from delibae/covector/version-bump
chore: version bump
2026-03-10 21:24:43 +09:00
Hanjin Bae
cbecd38570
Merge pull request #15 from vv137/feat/pdf-loading-perf
feat: optimize PDF loading and file switch UX
2026-03-10 21:24:33 +09:00
delibae
9a9fffc25a chore: version bump 2026-03-10 12:22:43 +00:00
delibae
1be93229da fix: fix postversion script newline and repair tauri.conf.json 2026-03-10 21:22:13 +09:00
Minsoo Kim
3cea905569 refactor: replace custom ErrorBoundary with react-error-boundary
Remove duplicated error-boundary.tsx in favor of upstream's
react-error-boundary library already in package.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:21:51 +09:00
Minsoo Kim
2e083a3a19 feat: keep-alive PDF viewers and per-file state preservation on switch
Keep PdfViewer instances mounted (visibility:hidden) instead of
unmounting on file switch, so canvas/scroll state is preserved
instantly. Also cache editor cursor+scroll and PDF zoom per file.

- Keep-alive up to 5 PdfViewer instances with LRU eviction
- Save/restore scrollTop via isActive prop on visibility toggle
- Per-file editor cursor + scroll cache (editorStateCache)
- Per-root PDF zoom + fitMode cache (zoomCache)
- Gate IntersectionObserver on isActive to avoid work for hidden viewers
- Extract scrollToPageEl helper to deduplicate scroll-retry logic
- Deduplicate getOrOpenDocument to reuse getCachedDocument
- Clear all caches on project close

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:20:19 +09:00
Minsoo Kim
2a315f5bf7 fix: address review findings and fix structured clone error
- Fix non-reactive getState() in render path → use activeFile?.id
- Replace linear cache scan with cache.get() O(1) lookup
- Remove redundant fingerprint field from CachedDoc
- Parallelize clearDocCache() with Promise.all
- Revert buffer.slice() optimization — always copy to avoid structured
  clone errors from non-transferable Tauri buffers and prevent pdfCache
  corruption from ArrayBuffer detachment
- Add clearScrollPositionCache() on project close to prevent memory leak

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:20:19 +09:00
Minsoo Kim
84b8f2339a feat: optimize PDF loading with LRU doc cache, scroll caching, and eager import
- Add PDF document LRU cache (max 5 open docs) with fingerprint-based identity check
- Skip MuPDF close/reopen cycle when switching to already-cached PDF
- Remove lazy() import for PdfViewer to eliminate Suspense flash
- Cache scroll position per root file and restore on file switch
- Clear doc cache on project close

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:20:19 +09:00
delibae
fe1e5d8685 fix: enable covector createRelease for automatic tag and release creation 2026-03-10 21:20:18 +09:00
Minsoo Kim
5f4c446e8e fix: add error boundaries and stability improvements to prevent white screen crashes
- Add global ErrorBoundary with error details UI (stack trace, copy button)
- Wrap PdfViewer Suspense with ErrorBoundary for graceful PDF crash recovery
- Add 30s timeout to MuPDF worker calls to prevent infinite hangs
- Add unhandled promise rejection handler in main.tsx

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:19:52 +09:00
Hanjin Bae
8ef179473d
Merge pull request #12 from delibae/covector/version-bump
chore: version bump
2026-03-10 21:13:36 +09:00
delibae
fa5f14f557 chore: version bump 2026-03-10 12:11:01 +00:00
delibae
52f3f69281 fix: sync root package version to 0.5.0 for consistency 2026-03-10 21:10:31 +09:00
delibae
27319367a6 feat: add initial release notes and improve package overrides for dependencies 2026-03-10 21:07:19 +09:00
delibae
678b8d3a7a fix: add missing newline at end of tauri.conf.json 2026-03-10 20:53:17 +09:00
Hanjin Bae
79679cd7bc
Merge pull request #11 from delibae/covector/version-bump
chore: version bump
2026-03-10 20:51:45 +09:00
delibae
f0a4d0e2f2 chore: version bump 2026-03-10 11:49:40 +00:00
delibae
e9158be53a feat: add initial release notes for LaTeX editor and Claude AI integration 2026-03-10 20:49:08 +09:00
Hanjin Bae
e626999767
Merge pull request #10 from delibae/covector/version-bump
chore: version bump
2026-03-10 20:47:12 +09:00
delibae
cd794ca954 chore: version bump 2026-03-10 11:43:27 +00:00
delibae
7904ba4084 fix: translate Korean comments to English for consistency in README and workflow files 2026-03-10 20:42:50 +09:00
delibae
e0986f060e feat: add aria-labels for accessibility improvements in various components 2026-03-10 20:31:58 +09:00
delibae
bd18e75f3c fix: improve error handling in various components and ensure root element exists 2026-03-10 20:27:00 +09:00
delibae
cad77ba71b feat: add ErrorBoundary with fallback component for better error handling 2026-03-10 20:17:35 +09:00
delibae
bf631072d3 Update landing submodule pointer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 16:58:07 +09:00
Hanjin Bae
9e89bd8f31
Merge pull request #9 from vv137/fix/multi-tex-compile
feat: multi-tex compilation with per-root PDF caching
2026-03-10 16:29:16 +09:00
Hanjin Bae
938dee9365
Merge pull request #8 from vv137/feat/pdf-fit-zoom
feat: add Fit to Width and Fit to Height PDF zoom options
2026-03-10 16:28:42 +09:00
Minsoo Kim
b7fe28cda8 fix: clear compileErrorCache when error is null to prevent stale errors
setCompileError only updated compileErrorCache when setting an error,
but never cleared the cache entry when error was null. This caused stale
errors to resurface on tab switches via setActiveFile.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:30:50 +09:00
Minsoo Kim
33c87837aa refactor: use shared compile helpers and fix efficiency issues
- Replace 4 inline compile-target-resolution blocks with resolveCompileTarget()
- Replace 4 inline error formatting expressions with formatCompileError()
- Remove direct resolveTexRoot imports from consumer files
- Skip unnecessary Map copies in setPdfData when no rootFileId
- Eliminate double resolveTexRoot call in deleteFile

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:13:59 +09:00
Minsoo Kim
fb7e753c08 refactor: extract resolveCompileTarget and formatCompileError helpers
Consolidate duplicated compile-target resolution and error formatting
logic into shared functions in latex-compiler.ts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:13:46 +09:00
Minsoo Kim
cfdafe1dd3 fix: handle cloud storage online-only files during build sync
Dropbox/iCloud can keep files as online-only placeholders with 0 bytes
on disk. When sync_source_files copies these, the build dir gets empty
files, causing 'Unable to load picture or PDF file' errors.

Force-read 0-byte files to trigger cloud download before copying.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:04:33 +09:00
Minsoo Kim
37f687f082 feat: use root resolution and per-root compile guards
Update all compilation sites to resolve the root file before compiling
and check per-root generation instead of a single project-wide guard.

- latex-editor: read isCompiling from store to avoid stale closures
- pdf-preview: read all guard values from store, add Compile button
  to empty placeholder view
- use-claude-events: resolve root for auto-compile after Claude edits
- All sites pass rootFileId to setPdfData/setCompileError for caching

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:04:24 +09:00
Minsoo Kim
0df2d1e524 feat: add per-root PDF cache and % !TEX root support
Replace single pdfData/lastCompiledGeneration with per-root-file Maps
so multiple .tex documents can each have their own cached PDF.

- Add pdfCache, compileErrorCache, lastCompiledGenerations Maps
- Add resolveTexRoot() to parse % !TEX root magic comments
- setActiveFile swaps displayed PDF from cache on file switch
- setPdfData/setCompileError update both cache and display
- Add migrateCacheKey helper for rename/move operations
- Cache cleanup on deleteFile, migration on renameFile/moveFile
- Reset all caches on openProject/closeProject

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 15:04:15 +09:00
Minsoo Kim
60c3f20c82 feat: add Fit to Width and Fit to Height PDF zoom options
Add dynamic fit modes at the top of the zoom dropdown that auto-recalculate
scale on window/container resize and persist during scroll. Manual zoom
actions (buttons, wheel, keyboard, percentage select) clear fit mode.
Also fix bouncy scroll arrow by switching dropdown to popper positioning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 14:08:47 +09:00
delibae
303235419f Refactor code structure for improved readability and maintainability 2026-03-07 22:39:18 +09:00
delibae
f0706ea4c1 feat: enhance slash command picker with fuzzy search and skill previews
- Added fuzzy search functionality to improve command matching and scoring.
- Introduced a new tab for skills in the slash command picker.
- Implemented a preview panel for skills, displaying detailed content.
- Updated command icons to include new skill-related icons.
- Refactored command filtering and sorting logic to accommodate new features.
- Created comprehensive tests for fuzzy search scoring and command ranking.
2026-03-07 15:43:33 +09:00
delibae
bfb02d4f5c feat: Enhance Claude installation process and permissions handling
- Updated Tectonic build configuration for local macOS development.
- Modified git2 dependency to use vendored-libgit2 feature.
- Improved the `find_claude_binary` function to check for native installation paths first.
- Added functions to ensure required directories for Claude are created and writable, with elevation handling on macOS.
- Updated `install_claude_cli` to ensure necessary directories exist before installation.
- Refactored scientific skills installation to include directory permission checks and logging.
- Enhanced error handling and logging during installation processes.
- Improved UI components for displaying installation progress and logs.
- Added tests for new directory handling functions and installation logic.
- Updated LaTeX template for poster presentation with improved formatting and content.
2026-03-06 19:23:41 +09:00