From be8e5cbecc4cdc78ed171c399a8b98b39716f60a Mon Sep 17 00:00:00 2001 From: Mohammed Safvan Date: Wed, 31 Dec 2025 14:20:47 +0530 Subject: [PATCH 1/2] hotfix: migration fix for pro v0.1.9 compatibility (#295) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Model selection bug fix: commands updated * Model selection bug fix: Model selection commands added * Fix UTF-8 string slicing panic in API response logging Fixed panic that occurred when logging API responses containing multi-byte UTF-8 characters (e.g., Punjabi/Gurmukhi script). The issue was caused by direct byte-index slicing which could split multi-byte characters. **Root Cause:** - Line 298: `&response_text[..std::cmp::min(200, response_text.len())]` could slice in the middle of multi-byte UTF-8 characters - Line 211: Similar issue with auth token truncation **Solution:** - Replaced byte-index slicing with character-aware truncation using `.chars().take(N).collect::()` - This safely respects UTF-8 character boundaries **Error Before Fix:** ``` thread panicked at src/api/api.rs:298:50: byte index 200 is not a char boundary; it is inside 'เจฎ' (bytes 198..201) ``` * resolved conflicts and some fixes related to conflict resolving * onboarding added for graceful database migration * warning cleaning * ui edits settings button changes and small tweaks * dev and build scripts update * Fixed the loading issue after the recording is done. monitor idle state along with error state * Initial system audio recording check disabled * Core audio disabled * Dynamic routing and permission checks added * ffmpeg related cmd popup in the middle fix * Permission buttons * DB and Model directory commands and logic added * Updated settings navigation * Added toaster * Fixed warning during build for mac specific command * Added the pipeline change to wait for 1.5 seconds of silence for better speech processing - more chunks during normal speech * Added the pipeline change to wait for 1.5 seconds of silence for better speech processing - more chunks during normal speech * Fixed the transcript lose due to skip chunk issue * Added sidebar behaviour; Added bluetooth device fix * Add commands for device events * Document bluetooth playback issues * Handle BT devices; resampling * Handle BT devices; resampling; show warning * Handle BT devices; resampling; show warning * Notification settings update * ollama endpoint addition and some ux fixes * settings tab creation for summary models * Added FFMPEG bug fix - find ffmpeg path ratherthan using hardcoded path * fix initial ollama model fetch even for non ollama providers * Not fetching issue fixed * mplemented comprehensive analytics tracking across the Meetily application to monitor user behavior, feature adoption, and application health metrics. All analytics are logged to PostgreSQL via the existing PostHog infrastructure with minimal local state management in analytics.json. * Bugfix : Analytics tauri store version update * Enhanced analytics with ability to capture major details such as device selection, language selection, preference changes, recording settings * Package missmatch error was shown during build; fixed it * config data sync fix * Build error fixes are applied * ffmpeg popup issue fix * Added windows/linux build fix * Implement Homebrew database auto-detection feature Added a new component, HomebrewDatabaseDetector, to check for the existence of a Homebrew database and retrieve its size. Integrated this component into the LegacyDatabaseImport dialog. Updated Tauri commands to support database detection functionality. * Enhance Homebrew database detection to support multiple paths Updated the HomebrewDatabaseDetector component to check for the existence of the Homebrew database in both Apple Silicon and Intel Mac paths. The detected path is now displayed dynamically, improving user experience and compatibility. * Refactor AnalyticsConsentSwitch and AnalyticsProvider to remove default analyticsOptedIn setting Updated both components to eliminate the default value for analyticsOptedIn in the load function, streamlining the analytics preference handling process. * Fix model selection logic to respect saved configuration, enable selection in settings page, and optimize modal loading * Fix model download progress bug * Fix model loading bug * Removed unwanted logs * Updated with home page and settings page bug fix for model selection * Update version to 0.0.6 and set default analyticsOptedIn in multiple components Bumped the application version to 0.0.6 in package.json, About component, Sidebar, and Cargo.toml. Updated AnalyticsConsentSwitch and AnalyticsProvider to include a default value for analyticsOptedIn in the load function, enhancing analytics preference management. * Refactor HomebrewDatabaseDetector to enhance import functionality and user interaction Updated the HomebrewDatabaseDetector component to replace the onDatabaseFound callback with onImportSuccess and onDecline. Added user prompts for importing existing databases with success and error handling, improving the overall user experience. Integrated the updated component into LegacyDatabaseImport. Bumped version to 0.0.6 in tauri.conf.json. * Downgraded whisper-rs and changed beam size for windows for achieving more speed * Initial parkeet test * Big bad refactoring - Optimizing the transcription * summary section removed in home(recording page) * transcript metadata location change and transcript max-w set * streaming effect added in the transcriptview * Added the UX fixes to new model nanagement and transcription flow * auto-scrolling base * auto scroll done * simplified model selection with simple names and accordion * Fixed issue with transcription history management issue that occured after merge * UX improvements - Model management, UI button position fixes * Default model selection - changed to parkeet * Removed the onSave * Transcript filter update * Updated audio processing with better control * UX improvements * UX improvements * Removed repeated letters and words being shown - bad UX. cleanup transcript * Remove vulkan as default for linux * Recording pause timer update * Better transcription accuracy after changing the redumption time. * Removed normalizer * readme updated * Porting to core audio from screen capure kit * Fixed windows powershell pop up issue * Advanced mic noise removal * Recording audio fixes; Recording status indicator ux fix * Windows specific redumption time * Windows specific redumption time * Audio quality issue fix * Removed the debug log * Added EBU R128 Normalization to system audio * Removed EBU R128 Normalization to system audio * Removed BT device warning * Better audio mixing and device detection logic for better processing * Before FFMPEG mixer addition * Removed the echo in recorded system audio * Bluetooth device fix: Added advanced resampling * Removed the unwanted notification library * Justify transcript text * UI changes; version update * Name update * Fix macOS system audio echo caused by duplicate capture paths * Fix : Analytics focused fixed * Enhancement : Analytics * Model management fix - parakeet * Model management fix - whisper * UX enhancements - added toasters * UI enhancements : Recording notifications; Navigation on sidebar * Fix: Download model issue - duplication * Sync recording status with sidebar * Transcript processing logic bug fix * Fix: Recording metadata, transcript saving, and meeting details integration * Added basic templates * Added template files * Added template based selection for processing * Added more templates * Details page cleanup * Details page cleanup: added hooks * Details page cleanup: moved to components * Changed the UI behaviour : blovknotes summary * Added the ollama download/fetch/update options * Added the ollama download/fetch/update options * Added new components from shadcn * Added tauri config update for template fetching * Auto generate meeting notes * Updated model management * Updated model management; enhanced UX * Updated model management: Added the download status chcking for ollama models * UI enhancement - button positioning, UI woking enhancement * Build error fixes; Ollama custom download * Build error fixes; Ollama custom download * Dynamic context length selection for ollama models * Added the meeting recordings button and functionality * Added button group styling * Fixes for Smooth UX * Fixes for Smooth UX * Fixed auto scroll missmatch * Fixed auto scroll missmatch * UI fixes * Fix: Default model issue fixed * installation content in readme updated * acknowledgement added * Added new images and gif * Meetily ux edits (#209) * parakeet defaulted, recording page buttons changed, sidebar icon, etc * sidebar search input updated * backend defaulting of parakeet model * only backend activetime duration syncing * transcription models selection scrolling issue * PArakeet model selection fix * Open the model downloader if no model exist * Ollama frontend download stuff fixed --------- Co-authored-by: Mohammed Safvan Co-authored-by: sujithatzackriya * removed unused code(function, states, variable) * SettingsModal extracted, added place holders in page * TranscriptPanel extracted * all component refactored from page * Contexts Extracted and implemented in recording page(app/page.tsx) * configs,recording,storage and transcription service extracted and applied to page and 3 Contexts * Hooks extracted and refactored components and page again for using the new context and hooks * mistake fix * auto summary toggle and stop generation in provider level to the UI * summary loss on generation fail or cancellation fixed * emoji remove * Bugfix/sidebar start and modal fix (#242) * sidebar start fixed along with tray stopping issue fix * language modal fixed * settings navigation from tray fix * auto save toggling persistance fix * language button visibility fix according to provider * redundant recording button removed * incremental saver removed for auto saved turned off recording * removed permission check for linux, as it is not relevent * added timestamp to the summary generation prompt * Updated workflow * Added permission checker and dialogue box * Revert "Added permission checker and dialogue box" This reverts commit 8c4881aea9a89d5ef81bc36b93978251cbdabb70. * Revert "Updated workflow" This reverts commit fe1aac934d3335f1d06d3c0c64f42f292b6a5185. * base version done * dev and build script update and ts error fix * forcing vulkan build for windows platform * appImage bundling issue with llama helper executable not found - Fixed * seperated logic of llam-helper bundling from tauri auto * linux build ensured * windows build script updated for sidecar building and sidecar spawning with cmd fixed * model unloading on provider added * some minor optimization fro performance * timeout and stop builtin fixed, priority reduced for llama-helper, dev script update * initial onboarding * simplified steps, and added mac specific permission check, UI enhancement and twaks * Added initial fix with the changes made to improve model download performance and add detailed progress tracking (MB/speed) to the UI for both * Fixed permission check bug * modele size updated * removed mistral 7b * data injection script added * claude models list updated * model list while downloading fixed, cancel download fixed * added stats to llama helper, increased timeout for long script handling * onboarding completion order fix, token estimation fix, orphaned process on app exit fix * download remove call twice fix, parakeet onboarding state update fix, cleanup of partial download error, removing duplicate completed progress event on builtin model * custom-openai endpoint added * Built fix * onboarding simplified with 4 steps with background download support of models, gemini backend setup * download error handling in UI while downloading and not available scenario * custom endpoint model settings data loading fix, test endpoint fix * migrations changed and removed gemini for compatibility * build fix and model recommendation update on onboarding * toast and model download related error handling * ota update added * updated gitignore for env.example * onboarding and toast styliing and tweaks * simple edit * transcript recovery added * fix: ffmpeg audio bug in release build * Add GitHub Actions workflows with manual triggers * Workflow file updates with version management and the release build edits * Fix signing command issues * Signing logic fix * Signing logic fix for windows * Fix vulkan issues * Avoid the llama-helper error with addition of vulkan command * fix: in onboarding already downloaded parakeet model causing error * restricting windows system audio device change * use audio devices according to user preference, removed the restriction of system audio device change of windows devices * fix: release microphone when recording stops - Add stream.pause() before dropping CPAL stream to stop callbacks immediately - Clear microphone_device and system_device Arc references in stop_recording() - Call state.cleanup() explicitly in stop_streams_and_force_flush() - Store transcript listener ID and unlisten on stop - Add brief sleep after aborting Core Audio task to allow cleanup The microphone was staying active because: 1. CPAL stream callbacks held Arc references 2. AudioCapture held Arc which held Arc 3. Device references were never cleared in stop_recording() * fix: Windows shutdown hang and mic array audio issues - Stop device monitor FIRST in stop_streams_and_force_flush() to prevent continuous WASAPI polling during shutdown (fixes 90+ second hang) - Fix audio_to_mono() for Windows microphone arrays (>2 channels): Only use first 2 channels to avoid destructive interference from beam-forming/noise cancellation auxiliary channels - Reduce WASAPI device enumeration log verbosity (info -> debug) * added user id display in settings * recording stop from tray fixed, recovery dialog for on going meeting fixed, added timeouts for reliability * pausing from tray synchronization with recording controls via context * fix; meerging stop operation from tray and UI, elimination of desyn an duplicate recovery dialogs * cleanup of sessionstorage usage * model downloading error handling and progress toast updation * cleanup up db connection and checkpoints and graceful closing of db pool * removing right click context menu for production build * feat: add transcript pagination and virtualization for performance - Add backend pagination with SQL LIMIT/OFFSET (100 transcripts per page) - Implement virtual scrolling with @tanstack/react-virtual (10+ segment threshold) - Create usePaginatedTranscripts, useAutoScroll, and useTranscriptStreaming hooks - Add VirtualizedTranscriptView with conditional rendering and infinite scroll - Integrate pagination into meeting details page (replaces api_get_meeting) - Fix streaming text effect, status bar overlap, and auto-scroll bugs Performance: 80-90% faster initial load, 60-80% RAM reduction for large meetings * perf: optimize settings general tab with lazy loading Move preference settings to ConfigContext with ref-based caching to prevent redundant IPC calls on every tab visit. * ui-enh: shadcn tabs implemented in settings * fix: copy all transcripts and disable auto-scroll on details page - Copy operation now fetches all transcripts from DB instead of using paginated state - Auto-scroll disabled on meeting details to allow manual navigation - Removed auto scrolling if the user scrolled up the transcript * migrations added * chore: version bump to v0.2.0 * chore: README update * change: added requested changes * Updated the workflows to remove missmatches * readme pro link updates * Updated README and added pro screenshot * Updated README and added pro screenshot * hotfix: migration fix for pro v0.1.9 compatibility --------- Co-authored-by: sujithatzackriya Co-authored-by: Mohammed Safvan Co-authored-by: athulchandroth --- .../20251105120000_add_pro_license_custom_openai.sql | 3 ++- .../20251110000000_add_grace_period_to_licensing.sql | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src-tauri/migrations/20251105120000_add_pro_license_custom_openai.sql b/frontend/src-tauri/migrations/20251105120000_add_pro_license_custom_openai.sql index 4c607584..fe665967 100644 --- a/frontend/src-tauri/migrations/20251105120000_add_pro_license_custom_openai.sql +++ b/frontend/src-tauri/migrations/20251105120000_add_pro_license_custom_openai.sql @@ -1,7 +1,8 @@ +-- Migration: Add PRO License and Custom OpenAI Configuration (RSA-based) + -- This column stores: {endpoint, apiKey, model, maxTokens, temperature, topP} ALTER TABLE settings ADD COLUMN customOpenAIConfig TEXT; --- Migration: Add PRO License [Not needed for the app to work, But only for compatibility with PRO] -- Drop and recreate licensing table with RSA structure DROP TABLE IF EXISTS licensing; diff --git a/frontend/src-tauri/migrations/20251110000000_add_grace_period_to_licensing.sql b/frontend/src-tauri/migrations/20251110000000_add_grace_period_to_licensing.sql index 0460662c..82fe7d5b 100644 --- a/frontend/src-tauri/migrations/20251110000000_add_grace_period_to_licensing.sql +++ b/frontend/src-tauri/migrations/20251110000000_add_grace_period_to_licensing.sql @@ -1,4 +1,4 @@ --- Migration: Add grace_period column to licensing table [Not needed for the app to work, But only for compatibility with PRO] +-- Migration: Add grace_period column to licensing table -- This allows per-license grace period configuration instead of using a global constant -- Add grace_period column (stores seconds of grace period after expiry) From 7c4b0d8eaecaedcc07ea9e58e8c9e0de51fab385 Mon Sep 17 00:00:00 2001 From: Pierrick Date: Fri, 23 Jan 2026 10:40:47 +0100 Subject: [PATCH 2/2] docs: improve Linux build documentation and add troubleshooting guide - Add complete dependency list for all major distros (Arch, Ubuntu, Fedora) - Clarify that build scripts are in frontend/ directory, not project root - Fix incorrect build output path (target/release/bundle/ not src-tauri/target/) - Add distribution-specific installation instructions - Add quick fixes section for common build errors - Create new TROUBLESHOOTING_LINUX.md with: - Build issues (cargo, libclang, pnpm, tauri CLI) - Runtime issues (white screen WebKit bug, audio, permissions) - GPU-specific troubleshooting (CUDA, ROCm, Vulkan) - Distribution-specific issues and package mappings - Diagnostic commands for bug reports Tested on Arch Linux with NVIDIA GPU. --- docs/TROUBLESHOOTING_LINUX.md | 362 ++++++++++++++++++++++++++++++++++ docs/building_in_linux.md | 208 +++++++++++++++---- 2 files changed, 536 insertions(+), 34 deletions(-) create mode 100644 docs/TROUBLESHOOTING_LINUX.md diff --git a/docs/TROUBLESHOOTING_LINUX.md b/docs/TROUBLESHOOTING_LINUX.md new file mode 100644 index 00000000..562e08ec --- /dev/null +++ b/docs/TROUBLESHOOTING_LINUX.md @@ -0,0 +1,362 @@ +# ๐Ÿง Linux Troubleshooting Guide + +This guide covers common issues when building or running Meetily on Linux. + +--- + +## ๐Ÿ“ฆ Build Issues + +### "cargo: command not found" + +**Cause:** Rust is not installed. + +**Fix:** +```bash +# Ubuntu/Debian +sudo apt install rustc cargo + +# Arch Linux +sudo pacman -S rust + +# Fedora +sudo dnf install rust cargo + +# Or via rustup (recommended for all distros) +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +source ~/.cargo/env +``` + +--- + +### "Unable to find libclang" / "couldn't find any valid shared libraries matching libclang.so" + +**Cause:** The `clang` development libraries are missing. The Rust `bindgen` crate requires libclang to generate FFI bindings. + +**Fix:** +```bash +# Ubuntu/Debian +sudo apt install clang libclang-dev + +# Arch Linux +sudo pacman -S clang + +# Fedora +sudo dnf install clang clang-devel +``` + +If the error persists, set the path manually: +```bash +# Find libclang +find /usr -name "libclang.so*" 2>/dev/null + +# Set the path (adjust based on find result) +export LIBCLANG_PATH=/usr/lib/llvm-14/lib # Ubuntu example +export LIBCLANG_PATH=/usr/lib # Arch example +``` + +--- + +### "pnpm: command not found" + +**Cause:** pnpm package manager is not installed. + +**Fix:** +```bash +# Via npm (all distros) +sudo npm install -g pnpm + +# Arch Linux (native package) +sudo pacman -S pnpm + +# Via corepack (Node.js 16.13+) +corepack enable +corepack prepare pnpm@latest --activate +``` + +--- + +### "tauri: command not found" / "beforeBuildCommand failed" + +**Cause:** Tauri CLI is not installed or npm dependencies are missing. + +**Fix:** +```bash +cd frontend +pnpm install # Installs @tauri-apps/cli locally + +# Or install globally +pnpm install -g @tauri-apps/cli +``` + +--- + +### "CUDA toolkit not found" (but NVIDIA GPU detected) + +**Cause:** The CUDA development toolkit is not installed. Having only the NVIDIA driver is not enough. + +**Fix:** +```bash +# Ubuntu/Debian +sudo apt install nvidia-cuda-toolkit + +# Arch Linux +sudo pacman -S cuda + +# Fedora (requires RPM Fusion) +sudo dnf install cuda + +# Verify installation +nvcc --version +``` + +If `nvcc` works but the build still fails, set the CUDA path: +```bash +export CUDA_PATH=/usr/local/cuda # Ubuntu/Debian +export CUDA_PATH=/opt/cuda # Arch Linux +``` + +--- + +### "Failed to set DNS configuration" (during VPN setup, not Meetily) + +**Cause:** If you're using WireGuard VPN, `systemd-resolved` may not be active. + +**Fix:** +```bash +# Option 1: Enable systemd-resolved +sudo systemctl enable --now systemd-resolved + +# Option 2: Install openresolv (if not conflicting) +sudo pacman -S openresolv # Arch +sudo apt install openresolv # Debian/Ubuntu +``` + +--- + +## ๐Ÿ–ฅ๏ธ Runtime Issues + +### White/blank screen after launch + +**Cause:** WebKit2GTK has issues with GPU compositing on certain hardware configurations, particularly with NVIDIA GPUs. + +**Symptoms:** +- App window opens but shows only white/blank content +- Error in terminal: `Failed to create GBM buffer of size XXXxYYY: Invalid argument` + +**Quick Fix (temporary):** +```bash +WEBKIT_DISABLE_COMPOSITING_MODE=1 ./meetily.AppImage +``` + +**Permanent Fix (desktop entry):** + +Edit your `.desktop` file to include the environment variable: +```ini +[Desktop Entry] +Name=Meetily +Exec=env WEBKIT_DISABLE_COMPOSITING_MODE=1 /path/to/meetily.AppImage +... +``` + +**Alternative fixes to try:** +```bash +# Disable DMA-BUF renderer +WEBKIT_DISABLE_DMABUF_RENDERER=1 ./meetily.AppImage + +# Force software rendering (slower but most compatible) +LIBGL_ALWAYS_SOFTWARE=1 ./meetily.AppImage +``` + +--- + +### App crashes immediately after launch + +**Cause:** Missing runtime dependencies. + +**Fix:** Install WebKit and GTK runtime libraries: +```bash +# Ubuntu/Debian +sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0 + +# Arch Linux +sudo pacman -S webkit2gtk-4.1 gtk3 + +# Fedora +sudo dnf install webkit2gtk4.1 gtk3 +``` + +--- + +### No audio devices detected + +**Cause:** PulseAudio/PipeWire permissions or missing ALSA libraries. + +**Fix:** +```bash +# Check audio server is running +pactl info # PulseAudio +pw-cli info # PipeWire + +# Install ALSA development libraries +sudo apt install libasound2-dev # Debian/Ubuntu +sudo pacman -S alsa-lib # Arch +sudo dnf install alsa-lib-devel # Fedora +``` + +--- + +### "Permission denied" when accessing microphone + +**Cause:** AppImage sandbox or Flatpak permissions. + +**Fix:** +```bash +# For AppImage, extract and run directly +./meetily.AppImage --appimage-extract +./squashfs-root/AppRun + +# Or run with --no-sandbox (less secure) +./meetily.AppImage --no-sandbox +``` + +--- + +## ๐ŸŽฎ GPU-Specific Issues + +### NVIDIA: "CUDA not detected" despite having GPU + +**Checklist:** +1. NVIDIA driver installed: `nvidia-smi` should work +2. CUDA toolkit installed: `nvcc --version` should work +3. Environment variables set: + ```bash + export CUDA_PATH=/usr/local/cuda + export PATH=$CUDA_PATH/bin:$PATH + export LD_LIBRARY_PATH=$CUDA_PATH/lib64:$LD_LIBRARY_PATH + ``` + +--- + +### AMD: "ROCm not detected" + +**Checklist:** +1. ROCm installed: `rocm-smi` should work +2. HIP compiler available: `hipcc --version` should work +3. Environment set: + ```bash + export ROCM_PATH=/opt/rocm + export PATH=$ROCM_PATH/bin:$PATH + ``` + +--- + +### Vulkan: "Vulkan detected but missing dependencies" + +**Cause:** Environment variables not set. + +**Fix:** +```bash +# Add to ~/.bashrc or ~/.zshrc +export VULKAN_SDK=/usr +export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu # Debian/Ubuntu +export BLAS_INCLUDE_DIRS=/usr/include # Arch + +source ~/.bashrc +``` + +--- + +## ๐Ÿ”ง Distribution-Specific Issues + +### Arch Linux + +**Issue:** Package names differ from Ubuntu/Debian documentation. + +**Package mapping:** +| Ubuntu/Debian | Arch Linux | +|---------------|------------| +| `nvidia-cuda-toolkit` | `cuda` | +| `libwebkit2gtk-4.1-dev` | `webkit2gtk-4.1` | +| `libgtk-3-dev` | `gtk3` | +| `build-essential` | `base-devel` | +| `libclang-dev` | `clang` | + +--- + +### Fedora/RHEL + +**Issue:** Some packages require RPM Fusion repository. + +**Fix:** +```bash +# Enable RPM Fusion +sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm +sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm + +# Then install NVIDIA drivers +sudo dnf install nvidia-driver cuda +``` + +--- + +### NixOS + +**Issue:** Standard installation doesn't work due to NixOS's unique package management. + +**Fix:** Use a Nix flake or shell: +```nix +{ pkgs ? import {} }: +pkgs.mkShell { + buildInputs = with pkgs; [ + rustc cargo cmake clang + webkitgtk_4_1 gtk3 + pkg-config openssl + ]; +} +``` + +--- + +## ๐Ÿ“‹ Diagnostic Commands + +Run these to gather information for bug reports: + +```bash +# System info +uname -a +cat /etc/os-release + +# GPU info +lspci | grep -i vga +nvidia-smi 2>/dev/null || echo "No NVIDIA driver" +rocm-smi 2>/dev/null || echo "No ROCm" +vulkaninfo --summary 2>/dev/null || echo "No Vulkan" + +# Rust/Node versions +rustc --version +cargo --version +node --version +pnpm --version + +# WebKit version +pkg-config --modversion webkit2gtk-4.1 + +# Check for libclang +find /usr -name "libclang.so*" 2>/dev/null +``` + +--- + +## ๐Ÿ†˜ Getting Help + +If none of these solutions work: + +1. **Gather diagnostics:** Run the commands above +2. **Check build output:** Save the full output of `./build-gpu.sh` +3. **Open an issue:** https://github.com/Zackriya-Solutions/meeting-minutes/issues + +Include: +- Your distribution and version +- GPU type and driver version +- Full error message +- Output of diagnostic commands diff --git a/docs/building_in_linux.md b/docs/building_in_linux.md index 0dee4a3c..4a9e3ffe 100644 --- a/docs/building_in_linux.md +++ b/docs/building_in_linux.md @@ -8,23 +8,42 @@ This guide helps you build Meetily on Linux with **automatic GPU acceleration**. If you're new to building on Linux, start here. These simple commands work for most users: -### 1. Install Basic Dependencies +### 1. Install All Dependencies + +The build requires several tools. Install them all at once: ```bash # Ubuntu/Debian sudo apt update -sudo apt install build-essential cmake git +sudo apt install build-essential cmake git curl nodejs npm rustc cargo clang libclang-dev \ + libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev pnpm # Fedora/RHEL -sudo dnf install gcc-c++ cmake git +sudo dnf install gcc-c++ cmake git nodejs npm rust cargo clang clang-devel \ + webkit2gtk4.1-devel gtk3-devel libappindicator-gtk3-devel librsvg2-devel +sudo npm install -g pnpm # Arch Linux -sudo pacman -S base-devel cmake git +sudo pacman -S base-devel cmake git nodejs npm rust clang pnpm \ + webkit2gtk-4.1 gtk3 libayatana-appindicator librsvg +``` + +> **Note:** On some distributions, you may need to install `pnpm` via npm: `sudo npm install -g pnpm` + +### 2. Clone and Setup + +```bash +git clone https://github.com/Zackriya-Solutions/meeting-minutes.git +cd meeting-minutes/frontend +pnpm install ``` -### 2. Build and Run +### 3. Build and Run ```bash +# Navigate to frontend directory (where the build scripts are located) +cd frontend + # Development mode (with hot reload) ./dev-gpu.sh @@ -32,8 +51,18 @@ sudo pacman -S base-devel cmake git ./build-gpu.sh ``` +> **Important:** The build scripts (`dev-gpu.sh` and `build-gpu.sh`) are located in the `frontend/` directory, not the project root. + **That's it!** The scripts automatically detect your GPU and configure acceleration. +### Build Output Location + +After a successful build, you'll find the AppImage at: + +``` +/target/release/bundle/appimage/meetily__amd64.AppImage +``` + ### What Happens Automatically? - โœ… **NVIDIA GPU** โ†’ CUDA acceleration (if toolkit installed) @@ -44,6 +73,68 @@ sudo pacman -S base-devel cmake git --- +## ๐Ÿ“ฆ Distribution-Specific Instructions + +### Arch Linux + +```bash +# Install all dependencies +sudo pacman -S base-devel cmake git nodejs npm rust clang pnpm \ + webkit2gtk-4.1 gtk3 libayatana-appindicator librsvg + +# For NVIDIA GPU acceleration +sudo pacman -S cuda nvidia-utils + +# Clone and build +git clone https://github.com/Zackriya-Solutions/meeting-minutes.git +cd meeting-minutes/frontend +pnpm install +./build-gpu.sh +``` + +### Ubuntu/Debian + +```bash +# Install all dependencies +sudo apt update +sudo apt install build-essential cmake git curl rustc cargo clang libclang-dev \ + libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev + +# Install Node.js (LTS version recommended) +curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - +sudo apt install nodejs +sudo npm install -g pnpm + +# For NVIDIA GPU acceleration +sudo apt install nvidia-driver-550 nvidia-cuda-toolkit + +# Clone and build +git clone https://github.com/Zackriya-Solutions/meeting-minutes.git +cd meeting-minutes/frontend +pnpm install +./build-gpu.sh +``` + +### Fedora/RHEL + +```bash +# Install all dependencies +sudo dnf install gcc-c++ cmake git nodejs npm rust cargo clang clang-devel \ + webkit2gtk4.1-devel gtk3-devel libappindicator-gtk3-devel librsvg2-devel +sudo npm install -g pnpm + +# For NVIDIA GPU acceleration (RPM Fusion required) +sudo dnf install cuda nvidia-driver + +# Clone and build +git clone https://github.com/Zackriya-Solutions/meeting-minutes.git +cd meeting-minutes/frontend +pnpm install +./build-gpu.sh +``` + +--- + ## ๐Ÿง  Understanding Auto-Detection The build scripts (`dev-gpu.sh` and `build-gpu.sh`) orchestrate the entire build process. They first call `scripts/auto-detect-gpu.js` to identify your hardware, then build the `llama-helper` sidecar with the appropriate features, and finally launch the Tauri application. @@ -87,6 +178,12 @@ Want better performance? Follow these guides to enable GPU acceleration. # Ubuntu/Debian (CUDA 12.x) sudo apt install nvidia-driver-550 nvidia-cuda-toolkit +# Arch Linux +sudo pacman -S cuda nvidia-utils + +# Fedora (RPM Fusion required) +sudo dnf install cuda nvidia-driver + # Verify installation nvidia-smi # Shows GPU info nvcc --version # Shows CUDA version @@ -99,6 +196,7 @@ nvcc --version # Shows CUDA version # Example: RTX 3080 = 8.6 โ†’ use "86" # Example: GTX 1080 = 6.1 โ†’ use "61" +cd frontend CMAKE_CUDA_ARCHITECTURES=75 \ CMAKE_CUDA_STANDARD=17 \ CMAKE_POSITION_INDEPENDENT_CODE=ON \ @@ -143,7 +241,8 @@ sudo pacman -S vulkan-devel openblas ```bash # Add to ~/.bashrc or ~/.zshrc export VULKAN_SDK=/usr -export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu +export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu # Ubuntu/Debian +# or for Arch: export BLAS_INCLUDE_DIRS=/usr/include # Apply changes source ~/.bashrc @@ -152,6 +251,7 @@ source ~/.bashrc #### Step 3: Build ```bash +cd frontend ./build-gpu.sh ``` @@ -168,6 +268,9 @@ The script will automatically detect Vulkan and build with `--features vulkan`. # Add ROCm repository (see https://rocm.docs.amd.com for latest) sudo apt install rocm-smi hipcc +# Arch Linux +sudo pacman -S rocm-hip-sdk + # Set environment export ROCM_PATH=/opt/rocm @@ -176,6 +279,7 @@ rocm-smi # Shows GPU info hipcc --version # Shows ROCm version # Build +cd frontend ./build-gpu.sh ``` @@ -188,6 +292,8 @@ hipcc --version # Shows ROCm version Want to force a specific acceleration method? Use the `TAURI_GPU_FEATURE` environment variable with the shell scripts: ```bash +cd frontend + # Force CUDA (ignore auto-detection) TAURI_GPU_FEATURE=cuda ./dev-gpu.sh TAURI_GPU_FEATURE=cuda ./build-gpu.sh @@ -209,42 +315,67 @@ TAURI_GPU_FEATURE=openblas ./dev-gpu.sh TAURI_GPU_FEATURE=openblas ./build-gpu.sh ``` -### Build Output Location +--- -After successful build: +## ๐Ÿงญ Troubleshooting -``` -src-tauri/target/release/bundle/appimage/Meetily__amd64.AppImage +For detailed troubleshooting information, see [TROUBLESHOOTING_LINUX.md](TROUBLESHOOTING_LINUX.md). + +### Quick Fixes + +#### "cargo: command not found" + +Install Rust: +```bash +# Ubuntu/Debian +sudo apt install rustc cargo + +# Arch Linux +sudo pacman -S rust + +# Or via rustup (all distros) +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` ---- +#### "Unable to find libclang" -## ๐Ÿงญ Troubleshooting +Install clang development files: +```bash +# Ubuntu/Debian +sudo apt install clang libclang-dev -### "CUDA toolkit not found" +# Arch Linux +sudo pacman -S clang -- **Fix:** Install `nvidia-cuda-toolkit` or set `CUDA_PATH` environment variable -- **Check:** `nvcc --version` should work +# Fedora +sudo dnf install clang clang-devel +``` -### "Vulkan detected but missing dependencies" +#### "pnpm: command not found" -- **Fix:** Set both `VULKAN_SDK` and `BLAS_INCLUDE_DIRS` environment variables -- **Example:** - ```bash - export VULKAN_SDK=/usr - export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu - ``` +```bash +# Via npm (all distros) +sudo npm install -g pnpm -### "AppImage build stripping symbols" +# Or via pacman (Arch Linux) +sudo pacman -S pnpm +``` -- **Fix:** Already handled! `build-gpu.sh` sets `NO_STRIP=true` automatically -- **Why:** Prevents runtime errors from missing symbols +#### "tauri: command not found" -### Build works but no GPU acceleration +```bash +cd frontend +pnpm install # This installs @tauri-apps/cli locally +``` + +#### White/blank screen after launch + +This is usually a WebKit rendering issue. Launch with: +```bash +WEBKIT_DISABLE_COMPOSITING_MODE=1 ./path/to/meetily.AppImage +``` -- **Check detection:** Look at the build output for GPU detection messages -- **Verify:** `nvidia-smi` (NVIDIA) or `rocm-smi` (AMD) should work -- **Missing SDK:** Install the development toolkit, not just drivers +See [TROUBLESHOOTING_LINUX.md](TROUBLESHOOTING_LINUX.md) for permanent fixes. --- @@ -291,14 +422,20 @@ Both `dev-gpu.sh` and `build-gpu.sh` work the same way: ### NVIDIA GPU (CUDA) ```bash -# Install -sudo apt install nvidia-driver-550 nvidia-cuda-toolkit +# Install dependencies (Ubuntu/Debian) +sudo apt install build-essential cmake git rustc cargo clang libclang-dev \ + libwebkit2gtk-4.1-dev libgtk-3-dev pnpm nvidia-driver-550 nvidia-cuda-toolkit -# Verify +# Clone and build +git clone https://github.com/Zackriya-Solutions/meeting-minutes.git +cd meeting-minutes/frontend +pnpm install + +# Verify GPU nvidia-smi --query-gpu=compute_cap --format=csv # Build (adjust architecture for your GPU) -CMAKE_CUDA_ARCHITECTURES=86 \ # (86 may change in your case) +CMAKE_CUDA_ARCHITECTURES=86 \ CMAKE_CUDA_STANDARD=17 \ CMAKE_POSITION_INDEPENDENT_CODE=ON \ ./build-gpu.sh @@ -312,6 +449,7 @@ sudo apt install rocm-smi hipcc export ROCM_PATH=/opt/rocm # Build +cd meeting-minutes/frontend ./build-gpu.sh ``` @@ -326,6 +464,7 @@ export VULKAN_SDK=/usr export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu # Build +cd meeting-minutes/frontend ./build-gpu.sh ``` @@ -333,9 +472,10 @@ export BLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu ```bash # Just build - works out of the box +cd meeting-minutes/frontend ./build-gpu.sh ``` --- -**Need help?** Open an issue on GitHub with your GPU type, distro, and the output from `./build-gpu.sh`. +**Need help?** Check [TROUBLESHOOTING_LINUX.md](TROUBLESHOOTING_LINUX.md) or open an issue on GitHub with your GPU type, distro, and the output from `./build-gpu.sh`.