Commit graph

73 commits

Author SHA1 Message Date
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
delibae
eead431198 fix: use bundled HarfBuzz on Windows, update README
Use platform-specific tectonic features so Windows CI builds with
bundled HarfBuzz/Graphite2 instead of requiring pkg-config.
Rewrite README with updated feature list and install instructions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:45:45 +09:00
delibae
0fce16f89c fix: center align the ClaudePrism screenshot in README 2026-03-02 14:29:18 +09:00
delibae
8d09eac810 ci: drop macOS x64 build, arm64 only
GitHub Actions no longer supports macos-13 Intel runners.
macOS Intel users can run the arm64 build via Rosetta 2.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:28:29 +09:00
delibae
7dd6b8325e ci: use macos-13 (Intel) runner for x86_64 macOS build
macos-14 is Apple Silicon and cannot cross-compile x86_64 with
pkg-config. Use macos-13 which is an Intel runner.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:26:36 +09:00
delibae
1b14c490f7 ci: use continue-on-error for Apple signing step
Signing step now uses continue-on-error so invalid or missing
certificates produce a warning instead of failing the build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:21:16 +09:00
delibae
69fda868cc ci: skip signing when certificate not configured, improve release notes
- Skip Apple code signing with warning when secrets are not set
- Categorize changelog by feat/fix/chore
- Add download table with per-OS install instructions
- Add contributor avatars to release notes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:20:22 +09:00
delibae
480976c15a feat: add Homebrew Cask support and update SHA256 for macOS builds
fix: enhance slash command picker with loading state and tab filtering
fix: improve PDF preview button styling and functionality
fix: update PDF viewer layout for better responsiveness
fix: handle user cancellation in Claude event processing
chore: add cancelledByUser state to Claude chat store
docs: update README with installation instructions for macOS
2026-03-02 14:11:28 +09:00
delibae
6f82e67350 feat: integrate Tectonic for LaTeX compilation and update project structure
- Added Tectonic as a dependency for LaTeX compilation in Cargo.toml.
- Created Entitlements.plist for macOS app sandboxing and security permissions.
- Refactored latex.rs to utilize Tectonic for PDF generation, removing legacy compilation logic.
- Updated compile_latex function to handle Tectonic's processing and error handling.
- Enhanced synctex editing functionality to read and parse synctex data correctly.
- Modified project-wizard and template-preview components to improve project creation prompts.
- Adjusted tauri.conf.json to include entitlements for macOS and set minimum system version.
- Cleaned up unused code and improved overall code readability and maintainability.
2026-03-02 12:47:10 +09:00
delibae
2ecb218f29 fix: remove unused dependencies from Cargo.lock and improve selection toolbar behavior in LatexEditor 2026-03-02 12:03:41 +09:00
delibae
3ed156af22 docs: improve macOS installation instructions in release notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 16:14:52 +09:00
delibae
1cf79dc00e fix: add ad-hoc code signing for macOS builds
Enables "Open Anyway" in System Settings instead of "damaged" error.
Uses APPLE_SIGNING_IDENTITY="-" for ad-hoc signing (no Apple Developer account needed).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 15:45:40 +09:00
delibae
802d7f8ded docs: add macOS xattr workaround to release notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 15:42:17 +09:00
delibae
0216700e16 fix: enable bundle creation and use tauri-action@v0
- Add bundle.active=true (defaults to false, causing no artifacts)
- Revert tauri-action to @v0 as recommended by official Tauri docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 15:16:45 +09:00
delibae
16c0b9446d fix: use tauri-action@v0.6 (v1 does not exist)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 15:06:05 +09:00
delibae
b0a42c109a fix: resolve CI build failures for cross-platform builds
- Remove OpenSSL dependency by disabling git2 default features (only local ops needed)
- Remove non-existent hidden_title() call from WebviewWindowBuilder
- Upgrade tauri-action v0 → v1 for artifact detection fixes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 15:05:10 +09:00
delibae
71aedaffb4 fix: use macos-14 runner for Intel builds (macos-13 deprecated) 2026-02-27 14:47:53 +09:00
Hanjin Bae
ebc19be429
Merge pull request #3 from delibae/demo
Demo
2026-02-27 14:43:53 +09:00
delibae
20f0968803 feat: implement desktop build workflow and enhance editor detection 2026-02-27 14:43:06 +09:00
delibae
e0eac1c19b refactor: simplify TemplateGallery and TemplatePreview components
- Removed onSelectTemplate prop from TemplateGallery, simplifying its interface.
- Updated TemplatePreview to handle template selection and project creation internally.
- Enhanced TemplatePreview with a new details step for project creation, including purpose input and file attachments.
- Implemented drag-and-drop functionality for adding reference files.
- Added project folder selection and dynamic project name generation.
- Improved modal layout and responsiveness based on the current step.
2026-02-26 23:06:29 +09:00
delibae
dc1827a2e5 feat: add slash commands, model/effort picker, and LaTeX compiler improvements
- Implement slash command system with Rust backend (YAML frontmatter parsing)
  and React picker UI for project/user-scoped commands
- Add model selector (Sonnet/Opus/Haiku/OpusPlan) and effort level control
  (Low/Medium/High) to chat composer
- Extract common Claude CLI args and add configurable effort level support
- Add per-project compilation locks to prevent concurrent LaTeX builds
- Fix empty document compilation with \AtEndDocument{\null} injection
- Improve chat UX with smooth auto-scroll and updated placeholder

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:45:12 +09:00
delibae
08ce221e22 feat: implement external editor detection and opening functionality 2026-02-25 10:27:27 +09:00
delibae
1e35ba2ae3 Refactor Claude integration and enhance chat messaging features
- Simplified environment variable handling in `create_command` to prevent nested session detection.
- Improved logging in `spawn_claude_process` for better debugging of stdout and stderr streams.
- Updated `execute_claude_code`, `continue_claude_code`, and `resume_claude_code` to accept optional model parameters.
- Introduced a new `ThinkingWidget` to display thinking status in chat messages.
- Enhanced `ChatMessages` component to manage auto-scrolling behavior and display streaming indicators.
- Updated `useClaudeEvents` to maintain session-specific state and improve message handling.
- Added keyboard shortcut for toggling capture mode (Cmd+X / Ctrl+X).
- Modified `ContentBlock` interface to include new "thinking" message type.
- Improved error handling and logging throughout the Claude chat store.
2026-02-25 00:39:19 +09:00
delibae
610917d677 Refactor code structure for improved readability and maintainability 2026-02-24 23:02:57 +09:00
delibae
c5c3085626 feat: extract template gallery into dedicated components with expanded template library
Refactor the project wizard's inline template grid into a full-featured
template gallery system with search, category filtering, and rich previews.

Template data architecture (template-registry.ts):
- Define TemplateDefinition schema with categories, subcategories, tags,
  packages, accent colors, and bibliography flag
- Expand from 8 to 12 templates: add IEEE, ACM, Technical Report, Newsletter
- Provide registry API: getAllTemplates, getTemplateById, searchTemplates,
  getTemplatesByCategory

Template gallery UI (components/template-gallery/):
- template-gallery.tsx: main layout with search bar (Cmd+K), category
  sidebar, responsive grid, grouped-by-category default view, empty state
- template-card.tsx: cards with 9 CSS-based document thumbnail layouts
  (paper, slides, poster, CV, letter, book, report, newsletter, blank)
  and hover preview button
- category-sidebar.tsx: category navigation with per-category template counts
- template-preview.tsx: dialog showing LaTeX source, package list, tags,
  document class metadata, and "Use Template" CTA

State management (template-store.ts):
- Zustand store for gallery state: search query, category filter, template
  selection, and preview modal state with computed filtered results

Project wizard refactor (project-wizard.tsx):
- Replace inline TemplateGrid and hardcoded template array with the new
  TemplateGallery component
- Use template.hasBibliography flag instead of hardcoded ID check for
  references.bib generation
- Fix overflow handling for step 2 scrollable content
2026-02-22 06:15:12 +09:00