mirror of
https://github.com/delibae/claude-prism.git
synced 2026-10-10 03:27:52 +00:00
feat: add build script for macOS and update project wizard to use home directory
This commit is contained in:
parent
e1a04e6615
commit
bbec59aa4b
3 changed files with 63 additions and 3 deletions
57
apps/desktop/scripts/build-macos.sh
Executable file
57
apps/desktop/scripts/build-macos.sh
Executable file
|
|
@ -0,0 +1,57 @@
|
|||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
ENV_FILE="$PROJECT_DIR/src-tauri/.env"
|
||||
|
||||
# Load .env
|
||||
if [ ! -f "$ENV_FILE" ]; then
|
||||
echo "Error: $ENV_FILE not found"
|
||||
exit 1
|
||||
fi
|
||||
set -a
|
||||
source "$ENV_FILE"
|
||||
set +a
|
||||
|
||||
# Validate required vars
|
||||
for var in APPLE_SIGNING_IDENTITY APPLE_ID APPLE_PASSWORD APPLE_TEAM_ID APPLE_CERTIFICATE APPLE_CERTIFICATE_PASSWORD; do
|
||||
if [ -z "${!var:-}" ]; then
|
||||
echo "Error: $var is not set in .env"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Import certificate into temporary keychain
|
||||
RUNNER_TEMP_DIR="${TMPDIR:-/tmp}"
|
||||
KEYCHAIN_PATH="$RUNNER_TEMP_DIR/build-signing.keychain-db"
|
||||
CERT_PATH="$RUNNER_TEMP_DIR/certificate.p12"
|
||||
KEYCHAIN_PASSWORD="build-local-$$"
|
||||
|
||||
cleanup() {
|
||||
echo "Cleaning up keychain..."
|
||||
security delete-keychain "$KEYCHAIN_PATH" 2>/dev/null || true
|
||||
rm -f "$CERT_PATH"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
echo "==> Importing certificate into temporary keychain..."
|
||||
echo -n "$APPLE_CERTIFICATE" | base64 --decode -o "$CERT_PATH"
|
||||
|
||||
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
|
||||
security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
|
||||
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
|
||||
security import "$CERT_PATH" \
|
||||
-P "$APPLE_CERTIFICATE_PASSWORD" \
|
||||
-A -t cert -f pkcs12 \
|
||||
-k "$KEYCHAIN_PATH"
|
||||
security set-key-partition-list -S apple-tool:,apple: \
|
||||
-k "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
|
||||
# Prepend our keychain so codesign finds the cert
|
||||
security list-keychain -d user -s "$KEYCHAIN_PATH" $(security list-keychain -d user | tr -d '"')
|
||||
|
||||
echo "==> Certificate imported. Building..."
|
||||
cd "$PROJECT_DIR"
|
||||
pnpm tauri build --target aarch64-apple-darwin
|
||||
|
||||
echo "==> Build complete!"
|
||||
|
|
@ -2,7 +2,7 @@ import { useState, useCallback, useEffect, useRef } from "react";
|
|||
import { open } from "@tauri-apps/plugin-dialog";
|
||||
import { mkdir, writeTextFile } from "@tauri-apps/plugin-fs";
|
||||
import { getCurrentWebview } from "@tauri-apps/api/webview";
|
||||
import { documentDir } from "@tauri-apps/api/path";
|
||||
import { homeDir } from "@tauri-apps/api/path";
|
||||
import {
|
||||
ArrowLeftIcon,
|
||||
FolderOpenIcon,
|
||||
|
|
@ -100,7 +100,10 @@ function ScratchForm({ onBack }: { onBack: () => void }) {
|
|||
if (lastProjectFolder) {
|
||||
setProjectFolder(lastProjectFolder);
|
||||
} else {
|
||||
documentDir().then((dir) => setProjectFolder(dir)).catch(() => {});
|
||||
homeDir().then((home) => join(home, "Documents", "ClaudePrism")).then((dir) => {
|
||||
mkdir(dir, { recursive: true }).catch(() => {});
|
||||
setProjectFolder(dir);
|
||||
}).catch(() => {});
|
||||
}
|
||||
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/__tests__/tauri-conf-csp.test.ts","./src/__tests__/lib/tauri-error-handling.test.ts","./src/__tests__/lib/tauri-fs.test.ts","./src/__tests__/lib/template-registry.test.ts","./src/__tests__/mocks/tauri.ts","./src/__tests__/stores/claude-chat-store.test.ts","./src/__tests__/stores/claude-setup-store.test.ts","./src/__tests__/stores/document-store.test.ts","./src/__tests__/stores/multi-tab-merge.test.ts","./src/__tests__/stores/project-store.test.ts","./src/__tests__/stores/proposed-changes-store.test.ts","./src/__tests__/stores/template-store.test.ts","./src/__tests__/stores/zotero-store.test.ts","./src/components/claude-setup.tsx","./src/components/project-picker.tsx","./src/components/project-wizard.tsx","./src/components/uv-setup.tsx","./src/components/assistant-ui/tooltip-icon-button.tsx","./src/components/claude-chat/chat-composer.tsx","./src/components/claude-chat/chat-messages.tsx","./src/components/claude-chat/chat-tab-bar.tsx","./src/components/claude-chat/claude-chat-drawer.tsx","./src/components/claude-chat/markdown-renderer.tsx","./src/components/claude-chat/proposed-changes-panel.tsx","./src/components/claude-chat/session-selector.tsx","./src/components/claude-chat/slash-command-picker.tsx","./src/components/claude-chat/tool-widgets.tsx","./src/components/scientific-skills/install-progress.tsx","./src/components/scientific-skills/scientific-skills-onboarding.tsx","./src/components/scientific-skills/skill-category-card.tsx","./src/components/template-gallery/category-sidebar.tsx","./src/components/template-gallery/index.ts","./src/components/template-gallery/template-card.tsx","./src/components/template-gallery/template-gallery.tsx","./src/components/template-gallery/template-preview.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/context-menu.tsx","./src/components/ui/dialog.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/hover-card.tsx","./src/components/ui/input.tsx","./src/components/ui/label.tsx","./src/components/ui/popover.tsx","./src/components/ui/progress.tsx","./src/components/ui/scroll-area.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/sheet.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/sonner.tsx","./src/components/ui/tabs.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toggle.tsx","./src/components/ui/tooltip.tsx","./src/components/workspace/history-panel.tsx","./src/components/workspace/sidebar.tsx","./src/components/workspace/workspace-layout.tsx","./src/components/workspace/zotero-panel.tsx","./src/components/workspace/editor/editor-toolbar.tsx","./src/components/workspace/editor/image-preview.tsx","./src/components/workspace/editor/lang-bibtex.ts","./src/components/workspace/editor/latex-editor.tsx","./src/components/workspace/editor/problems-panel.tsx","./src/components/workspace/editor/search-panel.tsx","./src/components/workspace/editor/selection-toolbar.tsx","./src/components/workspace/preview/mupdf-page.tsx","./src/components/workspace/preview/pdf-preview.tsx","./src/components/workspace/preview/pdf-viewer.tsx","./src/hooks/use-claude-events.ts","./src/hooks/use-keyboard-shortcuts.ts","./src/hooks/use-mobile.ts","./src/lib/latex-compiler.ts","./src/lib/template-preview-cache.ts","./src/lib/template-registry.ts","./src/lib/utils.ts","./src/lib/zotero-api.ts","./src/lib/mupdf/mupdf-client.ts","./src/lib/mupdf/mupdf-worker.ts","./src/lib/mupdf/types.ts","./src/lib/tauri/fs.ts","./src/stores/claude-chat-store.ts","./src/stores/claude-setup-store.ts","./src/stores/document-store.ts","./src/stores/history-store.ts","./src/stores/project-store.ts","./src/stores/proposed-changes-store.ts","./src/stores/template-store.ts","./src/stores/uv-setup-store.ts","./src/stores/zotero-store.ts"],"errors":true,"version":"5.9.3"}
|
||||
{"root":["./src/app.tsx","./src/main.tsx","./src/vite-env.d.ts","./src/__tests__/tauri-conf-csp.test.ts","./src/__tests__/lib/tauri-error-handling.test.ts","./src/__tests__/lib/tauri-fs.test.ts","./src/__tests__/lib/template-registry.test.ts","./src/__tests__/mocks/tauri.ts","./src/__tests__/stores/claude-chat-store.test.ts","./src/__tests__/stores/claude-setup-store.test.ts","./src/__tests__/stores/document-store.test.ts","./src/__tests__/stores/multi-tab-merge.test.ts","./src/__tests__/stores/project-store.test.ts","./src/__tests__/stores/proposed-changes-store.test.ts","./src/__tests__/stores/template-store.test.ts","./src/__tests__/stores/zotero-store.test.ts","./src/components/claude-setup.tsx","./src/components/project-picker.tsx","./src/components/project-wizard.tsx","./src/components/uv-setup.tsx","./src/components/assistant-ui/tooltip-icon-button.tsx","./src/components/claude-chat/chat-composer.tsx","./src/components/claude-chat/chat-messages.tsx","./src/components/claude-chat/chat-tab-bar.tsx","./src/components/claude-chat/claude-chat-drawer.tsx","./src/components/claude-chat/markdown-renderer.tsx","./src/components/claude-chat/proposed-changes-panel.tsx","./src/components/claude-chat/session-selector.tsx","./src/components/claude-chat/slash-command-picker.tsx","./src/components/claude-chat/tool-widgets.tsx","./src/components/scientific-skills/install-progress.tsx","./src/components/scientific-skills/scientific-skills-onboarding.tsx","./src/components/scientific-skills/skill-category-card.tsx","./src/components/template-gallery/category-sidebar.tsx","./src/components/template-gallery/index.ts","./src/components/template-gallery/template-card.tsx","./src/components/template-gallery/template-gallery.tsx","./src/components/template-gallery/template-preview.tsx","./src/components/ui/badge.tsx","./src/components/ui/button.tsx","./src/components/ui/context-menu.tsx","./src/components/ui/dialog.tsx","./src/components/ui/dropdown-menu.tsx","./src/components/ui/hover-card.tsx","./src/components/ui/input.tsx","./src/components/ui/label.tsx","./src/components/ui/popover.tsx","./src/components/ui/progress.tsx","./src/components/ui/scroll-area.tsx","./src/components/ui/select.tsx","./src/components/ui/separator.tsx","./src/components/ui/sheet.tsx","./src/components/ui/skeleton.tsx","./src/components/ui/sonner.tsx","./src/components/ui/tabs.tsx","./src/components/ui/textarea.tsx","./src/components/ui/toggle.tsx","./src/components/ui/tooltip.tsx","./src/components/workspace/history-panel.tsx","./src/components/workspace/sidebar.tsx","./src/components/workspace/workspace-layout.tsx","./src/components/workspace/zotero-panel.tsx","./src/components/workspace/editor/editor-toolbar.tsx","./src/components/workspace/editor/image-preview.tsx","./src/components/workspace/editor/lang-bibtex.ts","./src/components/workspace/editor/latex-editor.tsx","./src/components/workspace/editor/problems-panel.tsx","./src/components/workspace/editor/search-panel.tsx","./src/components/workspace/editor/selection-toolbar.tsx","./src/components/workspace/preview/mupdf-page.tsx","./src/components/workspace/preview/pdf-preview.tsx","./src/components/workspace/preview/pdf-viewer.tsx","./src/hooks/use-claude-events.ts","./src/hooks/use-keyboard-shortcuts.ts","./src/hooks/use-mobile.ts","./src/lib/default-claude-md.ts","./src/lib/latex-compiler.ts","./src/lib/template-preview-cache.ts","./src/lib/template-registry.ts","./src/lib/utils.ts","./src/lib/zotero-api.ts","./src/lib/mupdf/mupdf-client.ts","./src/lib/mupdf/mupdf-worker.ts","./src/lib/mupdf/types.ts","./src/lib/tauri/fs.ts","./src/stores/claude-chat-store.ts","./src/stores/claude-setup-store.ts","./src/stores/document-store.ts","./src/stores/history-store.ts","./src/stores/project-store.ts","./src/stores/proposed-changes-store.ts","./src/stores/template-store.ts","./src/stores/uv-setup-store.ts","./src/stores/zotero-store.ts"],"version":"5.9.3"}
|
||||
Loading…
Add table
Reference in a new issue