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>
- 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>
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>
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>
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>
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>
- 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>
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
- 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.
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>
- 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>
- 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>
- 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.
- 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>
- 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.
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
- Added ProjectWizard component to guide users through project creation.
- Integrated template selection with predefined LaTeX templates.
- Implemented folder selection and file creation logic for new projects.
- Updated ProjectPicker to launch the ProjectWizard instead of direct project creation.
- Enhanced user experience with improved UI elements and tooltips.
- Added keyboard shortcut for creating new windows.
- Updated global styles for macOS titlebar compatibility.
- Refactored existing components for better structure and maintainability.
- Add Popover component for displaying history in a popover.
- Integrate history review functionality in the LatexEditor component.
- Create HistoryDiffView for displaying differences between snapshots.
- Update HistoryPanel to manage linear history and snapshot restoration.
- Refactor sidebar to remove direct history panel integration.
- Enhance PDF preview with history button to access history panel.
- Update history store to manage reviewing snapshots and related actions.
- Added dnd-kit for drag-and-drop interactions in the sidebar.
- Integrated native OS file drop handling using Tauri's onDragDropEvent.
- Enhanced file and folder movement logic to support drag-and-drop.
- Updated sidebar to display active drag items with a drag overlay.
- Introduced Droppable components for root and folder targets.
- Improved file type handling to include PDF files.
- Added unique filename generation for imported files to avoid conflicts.
- Implemented history snapshots before and after Claude edits.
- Created a new history store for managing snapshots and diffs.
- Updated document store to support file and folder movement.
- Deleted WorkspaceLayout component and its dependencies.
- Removed useDocumentContext, useKeyboardShortcuts, useMobile, useProjectInit, useStorageReady hooks.
- Eliminated indexedDB storage implementation and migration logic.
- Cleaned up related files including schema, utils, and global styles.
- Removed package.json and configuration files for a cleaner project structure.
- Added ZoteroPanel and ZoteroHeader components for managing Zotero collections.
- Implemented OAuth and API key authentication for Zotero integration.
- Created a new store (zotero-store) to manage Zotero state and sync collections.
- Introduced functions for fetching collections, importing, and syncing data with Zotero API.
- Refactored Sidebar component to include resizable sections for Files, Outline, and Zotero.
- Enhanced document-store to handle .bib file creation and updates based on Zotero data.
- Added utility functions for API interactions and data parsing.
- Added `useProposedChangesStore` to track changes made by Claude.
- Integrated proposed change registration in `useClaudeEvents` for LaTeX file modifications.
- Updated `handleComplete` to refresh files and auto-recompile if LaTeX files were modified.
- Enhanced `document-store` to support folder creation and file import functionality.
- Improved file type detection in `fs.ts` to include style files and ignore LaTeX build artifacts.
- Created a new `synctexEdit` function in `latex-compiler.ts` for synchronization with LaTeX edits.
- Updated project overview documentation to reflect new features and architecture.
- Removed outdated assistant UI components and dependencies from package.json and pnpm-lock.yaml.
- Introduced new Claude chat components including ChatComposer, ChatMessages, and ClaudeChatDrawer for enhanced user interaction.
- Updated App component to utilize the new Claude chat functionality, replacing the previous assistant UI.
- Added markdown rendering capabilities for chat messages and tool widgets to improve content display.
- Enhanced the overall structure and organization of the chat-related components for better maintainability.
- Upgraded pdfjs-dist from version 4.10.38 to 5.4.296 in package.json and pnpm-lock.yaml.
- Added functionality to create a new LaTeX project with a default template in the ProjectPicker component.
- Introduced new icons and buttons for project management, improving user interaction.
- Updated package.json to modify the development script for the desktop application.
- Added a loading screen in index.html with CSS for better user experience during app initialization.
- Enhanced the App component to trigger a callback when the app is ready, allowing the loading screen to be hidden.
- Integrated sidecar management in the Tauri application to handle development and production environments.
- Introduced new icons and configuration files for the Tauri setup, including capability schemas and permissions.
- Added a check for port availability in the desktop-sidecar to prevent conflicts during startup.