Commit graph

97 commits

Author SHA1 Message Date
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
Hanjin Bae
2fc0b1b169
Merge pull request #6 from delibae/docs/windows-setup-guide
fix: Windows build fixes and session resume crash
2026-03-06 19:21:57 +09:00
GunwoongP
47d8723ce7 fix: Windows build fixes and session resume crash
- README: add CXXFLAGS=/std:c++17 env var for MSVC (ICU 78+ requires
  C++17, but MSVC uses /std:c++17 instead of -std=c++17)
- README: fix vcpkg triplet to x64-windows-static-md (tectonic expects
  static-md linkage, not dynamic x64-windows)
- .cargo/config.toml: clarify that macOS defaults are overridden by
  user env vars on Windows/Linux (force=false)
- tool-widgets: fix TodoWrite widget crash when input.todos is not an
  array (e.g. malformed session history), use Array.isArray guard
- chat-messages: add nullish coalescing fallback for messages store
  selector to prevent crashes during session transitions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 19:16:21 +09:00
GunwoongP
06ae487da6 docs: add detailed Windows setup guide for PowerShell
The existing Windows instructions were a single line (`vcpkg install ...`)
which omitted Visual Studio Build Tools, vcpkg bootstrapping, environment
variable configuration, and the TECTONIC_DEP_BACKEND setting. This adds
step-by-step PowerShell instructions to both README.md and CONTRIBUTING.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 19:16:14 +09:00
github-actions[bot]
860e93389a chore: update Homebrew Cask to v0.5.0 2026-03-05 12:08:03 +00:00
delibae
9a0ac95496 feat: update build workflow to include Zotero OAuth secrets and add new .env.example file 2026-03-05 20:45:02 +09:00
github-actions[bot]
d16d71bac4 chore: update Homebrew Cask to v0.4.0 2026-03-05 11:37:54 +00:00
delibae
f103a5199b feat: add --skip-stapling option to macOS build scripts and workflow 2026-03-05 20:28:20 +09:00
delibae
bbec59aa4b feat: add build script for macOS and update project wizard to use home directory 2026-03-05 19:50:55 +09:00
delibae
e1a04e6615 chore: add root package to covector config and sync version to 0.4.0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 19:10:49 +09:00
delibae
10ac562d38 feat: implement clipboard file path reading and Cmd+V paste functionality in sidebar 2026-03-05 17:33:48 +09:00
Hanjin Bae
6b705ee447
Merge pull request #5 from delibae/covector/version-bump
chore: version bump
2026-03-05 17:18:12 +09:00
delibae
055d3f30b3 chore: version bump 2026-03-05 08:14:27 +00:00
delibae
14f6d97fbd feat: add image cropping functionality and improve PDF rendering
- Implemented image cropping feature in ImagePreview component with interactive selection and resizing handles.
- Added crop mode toggle in EditorToolbar for image files.
- Enhanced PDF rendering by fetching all page sizes in one call instead of individually.
- Optimized image rendering using createImageBitmap to improve performance.
- Introduced content generation tracking in document store to prevent unnecessary recompiles.
- Updated various components to support new cropping functionality and improved user experience.
2026-03-05 17:13:59 +09:00
delibae
740ea8cbe4 fix: resolve vcpkg cache path via shell env before cache steps
${{ env.VCPKG_INSTALLATION_ROOT }} may not resolve in 'with' context.
Set path explicitly via GITHUB_ENV in a shell step first.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:40:01 +09:00
delibae
7ce175cd63 fix: use cache/restore + cache/save for vcpkg caching
Replace deprecated save-always with split restore/save steps.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 18:32:08 +09:00
delibae
32e4c62271 test: lightweight cache test with dummy data
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 18:28:45 +09:00
delibae
740a86d7dc test: temporary vcpkg cache-only workflow for testing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 17:47:20 +09:00
delibae
27a8eff68d fix: save vcpkg cache even on job failure and skip install on cache hit
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 17:38:17 +09:00
delibae
5f1b6fb06b chore: setup covector and bump version to v0.4.0
- Add covector config and CI workflow for automated versioning
- Bump all package versions to 0.4.0
- Add .changes/ directory with README for change management

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 17:36:21 +09:00
delibae
30b275e643 feat: add Python environment setup dialog and integrate uv installation process
- Implemented UvSetupDialog component for managing Python virtual environments.
- Added state management for uv installation status using zustand.
- Integrated event listeners for installation completion and status checking.
- Enhanced ImagePreview component with pinch-to-zoom and keyboard shortcuts for scaling.
- Updated LatexEditor to reset image scale when switching files.
- Created EnvironmentSection in Sidebar for displaying Python and skills status.
- Added scientific report template to template registry.
- Refactored PDF loading to improve performance and user experience.
2026-03-03 17:13:55 +09:00
delibae
98a7b4f9f5 feat: implement tabbed chat interface with draft saving and restoration
- Added ChatTabBar component for managing multiple chat tabs.
- Integrated tab switching functionality with keyboard shortcuts (Ctrl+Tab, Ctrl+T, Ctrl+W).
- Enhanced ChatComposer to save and restore drafts based on active tab.
- Updated ClaudeChatDrawer to include ChatTabBar and manage streaming state across tabs.
- Refactored useClaudeEvents to handle events per tab, allowing concurrent streaming.
- Modified ClaudeChatStore to support tab-specific state management, including creating, closing, and switching tabs.
2026-03-03 10:52:09 +09:00
delibae
534bd2b9bd feat: add expand/collapse functionality to ClaudeChatDrawer with corresponding UI updates 2026-03-02 23:38:12 +09:00
delibae
f6395c2d68 docs: update LICENSE and README to reflect new copyright and project acknowledgments 2026-03-02 23:04:47 +09:00
delibae
91f307ee4e docs: rename Claude CLI to Claude Code and clean up ClaudePrism README
Fix broken documentation link and remove Tech Stack / Project Structure sections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:01:18 +09:00
delibae
fd892ce6fd ci: use stable vcpkg cache key instead of workflow file hash
The previous key was based on hashFiles('build-desktop.yml'), which
invalidated the cache on every workflow change. Use a static key with
package names and a version suffix (bump v1→v2 when deps change).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 22:53:37 +09:00
delibae
f03424dacc feat: enhance error handling in LaTeX compilation and improve file saving logic; add regression tests for Tauri IPC errors 2026-03-02 22:52:04 +09:00
github-actions[bot]
84e0ee2fd9 chore: update Homebrew Cask to v0.2.0 2026-03-02 08:36:06 +00:00
delibae
5dc5e71c36 fix: Windows CI C++17 flag for ICU 78+ and add CSP validation tests
- Set CXXFLAGS=/std:c++17 on Windows CI (ICU 78+ requires C++17 features
  like nested-namespace-definition and auto in non-type template params)
- Add Vitest tests validating tauri.conf.json CSP configuration to prevent
  regressions (dangerousDisableAssetCspModification, style-src, connect-src,
  font-src directives)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:39:42 +09:00
delibae
bc36383328 docs: update CONTRIBUTING.md with prerequisites and testing instructions; enhance tauri configuration for security; modify LatexEditor styles for better theming 2026-03-02 16:25:03 +09:00
delibae
b6a31ebcc7 test: add additional Rust integration tests for history and slash_commands
history.rs (+5): deleted file snapshot/diff, non-adjacent diff, duplicate label error, restore commit verification
slash_commands.rs (+8): remove_empty_dirs (3), create_default_commands (1), slash_command_save project scope (5: basic, frontmatter, namespace, empty name error, invalid scope error)

Total Rust tests: 114

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:57:05 +09:00
delibae
17dcb3f273 test: add Rust integration tests for history, latex, claude, and slash_commands
Add 35 integration tests using tempfile for filesystem/git-dependent functions:
- history.rs (15): init, snapshot, list, diff, file_at, restore, labels, tag_map, ensure_excludes
- latex.rs (6): copy_dir_recursive, sync_source_files
- claude.rs (6): extract_first_user_message with JSONL parsing
- slash_commands.rs (6): load_command_from_file, find_markdown_files

Total Rust tests: 100 (65 existing + 35 new)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:49:36 +09:00
delibae
7b9474414d ci: use external-harfbuzz on all platforms, fix Windows build
- Use external-harfbuzz globally (vendored harfbuzz build.rs has a
  header copy bug on Windows)
- Install harfbuzz[graphite2] via vcpkg on Windows instead of
  standalone graphite2
- Clear CXXFLAGS/CFLAGS on Windows to prevent macOS-specific
  .cargo/config.toml values from leaking

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:47:41 +09:00
delibae
cc3469290c test: add tests for zotero, document, setup stores and Rust edge cases
Add 45 new frontend tests: zotero-store (storeKey, sanitizeFileName,
parseBibEntries), document-store (insertAtCursor, replaceSelection,
findAndReplace, updateFileContent, addFile, setActiveFile),
claude-setup-store (advanceSteps state transitions).
Add 17 new Rust tests: create_command, clean_user_message_title edge
cases (multibyte truncation, nested brackets), get_sessions_dir
(Windows paths, dots), extract_error_lines (mixed formats, short logs),
parse_synctex_node (negative coords, factor scaling, zero values),
parse_synctex_data (multiple inputs, multiple pages).
Total: 154 tests (89 frontend + 65 Rust), all passing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:25:36 +09:00
delibae
c2234ba7e8 test: add test infrastructure with Vitest (frontend) and Rust unit tests
Set up Vitest with jsdom environment and Tauri mocks for frontend testing.
Add 44 frontend tests covering Zustand stores (claude-chat, project, proposed-changes,
template) and lib utilities (template-registry, file type classification).
Add 48 Rust unit tests across zotero (OAuth helpers), slash_commands (markdown parsing),
latex (error extraction, SyncTeX parsing), and claude (session dir encoding, message
title cleaning). Update README with test commands.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:08:22 +09:00
delibae
029fe0bae4 ci: fix Windows vcpkg deps and macOS codesign skip
- Add vcpkg setup for Windows to provide graphite2, freetype, ICU,
  fontconfig (tectonic_bridge_graphite2 has no vendoring support)
- Use --no-sign flag on macOS when Apple certificate is not available
  (Tauri's var_os treats empty string as Some, triggering codesign)
- Cache vcpkg packages for faster subsequent builds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 15:05:30 +09:00
delibae
d7238dae9e docs: enhance README to clarify data privacy and offline capabilities of ClaudePrism 2026-03-02 15:00:28 +09:00
delibae
9765b39775 docs: update README to clarify ClaudePrism's offline-first approach and features 2026-03-02 14:46:48 +09:00