Commit graph

56 commits

Author SHA1 Message Date
Hanjin Bae
c2e8e83081 fix: Linux build with mold linker + graphite2 overlay + vcpkg ICU
Three issues prevented Linux builds with Rust 1.95+ and vcpkg:

1. graphite2 hidden symbols: vcpkg builds with -fvisibility=hidden,
   rust-lld errors on STV_HIDDEN refs. Fix: overlay port that adds
   GRAPHITE2_EXPORTING and removes -fvisibility=hidden.

2. Rust version scripts: ld.bfd can't mix anonymous + named version
   tags. Fix: use mold linker which handles both correctly.

3. ICU version mismatch: system ICU (v70/74) found before vcpkg ICU
   (v78), causing _78 suffix undefined symbols. Fix: move system ICU
   .so out of linker path during build.

vcpkg dynamic libs remain for portable distribution (issue #91).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-06-09 23:43:35 +09:00
delibae
12a79b0981 fix: static-link ICU on Linux and augment PATH for GUI-launched child processes
Three related environment issues are addressed:

1. Linux ICU version mismatch (#91):
   The Linux build used pkg-config to dynamically link against the host's
   ICU (libicuuc.so.70 on Ubuntu 22.04). Users on newer distros (e.g.
   Ubuntu 25.10 with ICU 76) get "cannot open shared object" errors.
   Switch to vcpkg static linking, mirroring the macOS fix (commit 9566956).

2. MCP servers fail on macOS GUI app (#87):
   macOS GUI apps inherit a minimal PATH (/usr/bin:/bin) that lacks
   /opt/homebrew/bin, so MCP server commands like `uv` silently fail.
   Prepend common tool directories (~/.local/bin, ~/.cargo/bin,
   /opt/homebrew/bin, NVM paths, etc.) to the child process PATH in
   create_command().

3. Existing NVM-installed Claude Code ignored (#90):
   find_claude_binary() relied on `which` which fails in GUI apps without
   NVM in PATH. Add NVM_BIN env var check and login shell fallback
   (`$SHELL -l -c "which claude"`) to discover claude through the user's
   actual shell configuration.

Closes #87, closes #90, closes #91

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 22:10:19 +09:00
delibae
03fcd08d34 fix: install autotools build deps before vcpkg on macOS
vcpkg ports (gperf, fontconfig) need autoconf/automake/libtool to
build from source. These are compile-time tools only — they don't
create runtime dylib dependencies.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 17:46:50 +09:00
delibae
956695665f fix: switch macOS builds from Homebrew (dynamic) to vcpkg (static)
Replace `brew install icu4c harfbuzz ...` + pkg-config with vcpkg
for both Apple Silicon (arm64-osx) and Intel (x64-osx) macOS builds.

vcpkg's macOS triplets default to static linking, so the resulting
binary no longer depends on /opt/homebrew dylibs. This fixes the
crash reported in #77 where users without Homebrew get:
  Library not loaded: /opt/homebrew/*/libicuuc.78.dylib

The Windows build already used vcpkg — this makes all platforms
consistent.

Refs:
- https://tectonic-typesetting.github.io/book/latest/howto/build-tectonic/
- https://learn.microsoft.com/en-us/vcpkg/users/triplets
- https://github.com/orgs/Homebrew/discussions/4672

Closes #77

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 17:39:11 +09:00
delibae
b5ced3a7fa feat: add Intel Mac build workflow, bump version to 1.0.8
Add build-macos-intel job using macos-15-intel runner with
x86_64-apple-darwin target. Includes code signing, notarization,
and updater support (darwin-x86_64 platform key in latest.json).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 03:19:05 +09:00
delibae
a10afacd6c fix: improve Linux AppImage compatibility and login reliability
- Add sanitize_appimage_env() to restore original LD_LIBRARY_PATH/PATH
  when spawning child processes from AppImage (fixes xdg-open, curl)
- Pass DISPLAY, WAYLAND_DISPLAY, XDG_*, DBUS_SESSION_BUS_ADDRESS to
  child processes for Linux desktop integration
- Add stdin(Stdio::null()) to install_claude_cli to prevent interactive
  prompt hangs
- Add 120s timeout to login_claude to prevent indefinite hang when
  browser fails to open
- Show "Setup Guide" link to code.claude.com/docs/quickstart on login
  failure
- Keep releases as draft in CI workflow for manual publish

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 01:11:02 +09:00
delibae
16b4c469b5 chore: add husky pre-commit hook and CI lint workflow
- Add husky with biome check --staged --write pre-commit hook
- Add GitHub Actions lint workflow (biome ci on PR/push to main)
- Update CONTRIBUTING.md with pre-commit and CI documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:15:58 +09:00
delibae
51e038495f feat: version-free release filenames, inline updater UI (v1.0.3)
- Rename build artifacts to fixed names (ClaudePrism-macOS.dmg, etc.)
- Update latest.json URLs to use fixed filenames
- Update README download links to /releases/latest
- Inline update UI on home screen with version badge
- Gitignore Tauri gen/schemas
- Bump to v1.0.3

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 15:40:18 +09:00
delibae
b393a9e14b fix: export BASE_URL so node can read it in latest.json generation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 14:36:25 +09:00
delibae
6e8521cd6f fix: collect Windows updater artifacts from .exe.sig not .nsis.zip.sig
Tauri v2 signs the NSIS .exe directly, not a .nsis.zip bundle.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 14:25:39 +09:00
delibae
ac47bf87fe fix: regenerate signing key with password, reference PASSWORD secret
Previous key generated with --ci had unusable password. Regenerated
with explicit password and updated pubkey + workflow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 14:08:26 +09:00
delibae
31a4eda97c fix: remove TAURI_SIGNING_PRIVATE_KEY_PASSWORD env (key has no password)
Empty string is interpreted as a password. Omit entirely instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 13:50:02 +09:00
delibae
00e53db25b fix: merge brew include paths into CXXFLAGS/CFLAGS for macOS CI
cc-rs uses CXXFLAGS/CFLAGS, not CPPFLAGS. Move include paths there.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 13:40:37 +09:00
delibae
c5105c9bc8 fix: add CPPFLAGS/LDFLAGS for macOS CI harfbuzz include paths
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 13:39:11 +09:00
delibae
1058c40733 fix: set PKG_CONFIG_PATH for macOS CI brew dependencies
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 13:33:32 +09:00
delibae
634af53ac2 fix: macOS use pkg-config for tectonic deps, set empty signing key password
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 13:27:38 +09:00
delibae
08e54f263d feat: add auto-updater and fix macOS black screen on focus loss (v1.0.1)
- Add tauri-plugin-updater with signed update artifacts
- Add backgroundThrottling: disabled to prevent WKWebView black screen
- Add update check UI with toast notifications (sonner)
- Update build scripts to generate latest.json for GitHub Releases
- Add multi-platform CI workflow (macOS/Linux/Windows) with draft releases
- Bump version to 1.0.1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 13:16:39 +09:00
Hanjin Bae
ebcb190d7a
fix: detect missing Git for Windows and guide users to install it (#37)
Windows users without Git for Windows see "Install Claude Code" loop
because Claude Code requires git-bash but the app never checks for it.
Now check_claude_status reports missing_git on Windows, and the setup UI
shows a dedicated "Git for Windows Required" screen with a download link
and re-check button.

Also adds Windows-essential env vars to uv installer and improves the
CI workflow to support manual release_tag input.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 00:27:15 +09:00
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
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
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
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
fe1e5d8685 fix: enable covector createRelease for automatic tag and release creation 2026-03-10 21:20:18 +09: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
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
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
delibae
f103a5199b feat: add --skip-stapling option to macOS build scripts and workflow 2026-03-05 20:28:20 +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
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
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
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
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
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
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
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