A lightweight music tab manager for guitarists and musicians, built with Go and Wails.
- Tab Management - Organize your PDF, Guitar Pro (.gp, .gp5, .gpx), and MusicXML (.xml, .musicxml, .mxl) tabs in one place
- Upload or Link - Upload tabs to internal storage or link existing files from your filesystem
- Advanced Search - Instant Full-Text Search (FTS5) across titles, artists, and albums with fuzzy matching
- Real-time Sync - Automatically watches synced folders for changes; Non-destructive import (renames duplicates)
- Cloud Sync - WebDAV integration with multi-device support via volume fingerprints; on-demand cloud file access and uploads with automatic metadata tracking
- PDF Annotation Layer - Non-destructive transparent canvas annotations (pen/highlighter/eraser) stored as lightweight JSON, without modifying original PDF files; includes a compact toolbar menu with current-tool icon indicator
- Smart Metadata - Auto-parse info from filenames; Bi-directional sync with Guitar Pro internal metadata
- Tag Support - Add version/part tags (e.g., "Lead Guitar", "Bass", "First Version")
- Plugin System - Extend functionality with JavaScript plugins (e.g., AI Metadata Enhancer)
- Customizable Environment - Change storage locations for managed tabs and covers to customize your setup
- Album Artwork - Automatic cover art fetching from iTunes; High-performance concurrent downloads
- Categories - Organize tabs into virtual folders
- Batch Operations - Select and move/delete multiple tabs at once
- Rich Internal Viewer:
- PDF: Built-in viewer with Auto-Scroll and non-destructive Annotation Layer (pen/highlighter/eraser)
- Guitar Pro: alphaTab engine with Looping, Section Playback, Speed Control, and Floating Toolbar
- MIDI Pedal Support - Control page turning, playback (Play/Pause), and Smooth Scrolling (via Expression Pedal) with any standard MIDI foot controller; includes MIDI Learn for easy mapping.
- Internationalization - Full support for English, Chinese (Simplified/Traditional), and Japanese; Auto-detects system language on first launch
- Modern UI - Dark/Light theme, Auto-saving settings, and responsive Grid/List views
Download the latest release from the Releases page.
Since the application is not signed with an Apple Developer account, macOS may show a warning like "cannot be opened because the developer cannot be verified" or "app is damaged".
To fix this:
- Go to System Settings -> Privacy & Security.
- Scroll down to the Security section and click "Open Anyway" for HAYA-TAB.
- Alternatively, run the following command in your terminal to remove the quarantine attribute (assuming you moved the app to
/Applications):xattr -cr /Applications/HAYA-TAB.app
-
Clone this repository
-
Install frontend dependencies:
cd frontend npm install cd ..
-
Run the development server:
wails3 task dev
-
To build for production:
# Build for current platform wails3 task build # Cross-platform builds wails3 task windows:build ARCH=amd64 wails3 task darwin:build ARCH=amd64 # macOS Intel wails3 task darwin:build ARCH=arm64 # macOS Apple Silicon wails3 task linux:build ARCH=amd64
Note: when cross-compiling from a different host OS, run
wails3 task setup:dockeronce first.
End-to-End UI integration tests are configured via Playwright. Note that your environment must support Node.js.
# Run headlessly against the Vite + Wails dev server
npx @go-task/cli test:e2e
# Run with Playwright UI visualizer for debugging
npx @go-task/cli test:e2e-ui- Add Tabs: Right-click on empty space β "Upload TAB" or "Link Local TAB"
- Organize: Create categories and move tabs into them
- Sync Folders: Go to Settings β Add sync paths to auto-import tabs from folders
- Cloud Sync: Configure WebDAV in Settings to access your cloud library. See WebDAV Guide.
- PDF Annotation: In the PDF viewer, open the annotation menu from the toolbar, choose tools (selection/pen/highlighter/eraser), and draw on the non-destructive overlay layer.
- View Tabs: Click a tab to open with system default, or right-click β "Open with Inner Viewer"
- Key Bindings: Customize viewer controls (Loop, Auto-scroll, etc.) in Settings
βββ assets_embed.go # Embedded frontend assets package
βββ cmd/
β βββ haya-tab/ # Application entry package
β βββ main.go # Application entry point
β βββ main_ios.go # iOS entry shim
β βββ main_android.go # Android entry shim
β βββ app_options_ios.go # iOS runtime options
β βββ app_options_default.go # Non-iOS runtime options
βββ go.mod & go.sum # Go module dependencies
βββ Taskfile.yml # Top-level task entrypoint
β
βββ internal/ # Internal packages (not importable)
β βββ app/ # Core application logic
β βββ app.go # App struct, lifecycle management
β βββ app_tabs.go # Tab CRUD operations
β βββ app_categories.go # Category management
β βββ app_files.go # File dialogs & sync triggers
β βββ app_settings.go # Settings persistence
β βββ app_migration.go # Data migration utilities
β βββ app_plugins.go # Plugin management APIs
β βββ app_webdav.go # WebDAV cloud operations & volume system
β βββ app_annotations.go # Annotation WebDAV path mapping & sync helpers
β βββ app_webdav_helpers.go # WebDAV fingerprint helpers (batch operations)
β βββ plugin_manager.go # JS plugin runtime loader/executor
β βββ plugins/ # Built-in/distributed plugin source
β βββ server.go # HTTP file server
β βββ disk_unix.go # Unix disk operations
β βββ disk_windows.go # Windows disk operations
β
βββ frontend/ # Vue 3 + TypeScript + Vite frontend
β βββ src/
β β βββ App.vue # Root component
β β βββ main.ts # Frontend entry point
β β βββ vite-env.d.ts # Vite type definitions
β β βββ assets/ # Styles & icons
β β βββ components/ # Reusable UI components
β β β βββ BatchActionBar.vue # Batch operation controls
β β β βββ SettingsView.vue # Settings panel
β β β βββ common/ # Generic components (ContextMenu, SearchBar, Toast)
β β β βββ grid/ # Grid view components (TabCard, CategoryCard, TabGrid)
β β β βββ layout/ # Layout components (AppSidebar, SidebarTabItem)
β β β βββ modals/ # Modal dialogs (CloudPicker, WebDAV, Category, etc.)
β β β βββ viewers/ # File viewers (PDF, Guitar Pro, MusicXML)
β β βββ composables/ # Vue composables (useAlphaTab, useContextMenu, useToast)
β β βββ stores/ # Pinia state management
β β β βββ tabs.ts # Tab state
β β β βββ settings.ts # Application settings
β β β βββ ui.ts # UI state
β β β βββ viewers.ts # Viewer state
β β β βββ index.ts # Store configuration
β β βββ views/ # Page-level components
β β β βββ HomeView.vue # Landing page
β β β βββ LibraryView.vue # Main library interface
β β βββ types/ # TypeScript type definitions
β β βββ i18n/ # Internationalization setup
β β β βββ locales/ # Translation files (EN, ZH-CN, ZH-TW, JA)
β β βββ bindings/ # Auto-generated Wails v3 bindings
β βββ public/ # Static assets
β β βββ alphatab/ # alphaTab library & soundfonts
β β βββ pdfjs/ # PDF.js library & viewer
β βββ index.html # HTML entry point
β βββ package.json # Frontend dependencies
β βββ tsconfig.json # TypeScript configuration
β βββ vite.config.ts # Vite build configuration
β
βββ pkg/ # Shared packages
β βββ coverpool/ # Concurrent download worker pool
β βββ logger/ # Structured logging
β βββ metadata/ # Tab metadata parsing
β β βββ metadata.go # Core metadata operations
β β βββ parser_gpx.go # Guitar Pro file parser
β β βββ musicbrainz.go # MusicBrainz API client
β β βββ initial.go # Title initial calculation
β β βββ gp_binary.go # Binary format handlers
β βββ store/ # SQLite database layer
β β βββ database.go # DB connection & management
β β βββ database_annotations.go # PDF annotation persistence
β β βββ database_volumes.go # Cloud volume operations
β β βββ database_migration_volumes.go # Volume system migrations
β β βββ models.go # Data models (includes CloudVolume)
β β βββ migration.go # Schema migrations
β β βββ crypto.go # Encryption utilities
β β βββ locale_*.go # Platform-specific locale detection
β βββ sync/ # File synchronization & WebDAV volume system
β β βββ sync.go # Sync engine
β β βββ webdav.go # WebDAV client & operations
β β βββ volume.go # Volume fingerprinting & metadata tracking
β β βββ volume_sync.go # Multi-device volume discovery & migration
β βββ watcher/ # File system watcher
β β βββ watcher.go # Watch folders for changes
β βββ worker/ # Background workers
β βββ mb_worker.go # MusicBrainz async worker
β
βββ build/ # Wails build output & assets
β βββ darwin/ # macOS build resources
β βββ windows/ # Windows build resources
β
βββ docs/ # Documentation
β βββ WEBDAV.md # WebDAV setup guide
β βββ API.md # Backend API reference
β βββ ARCHITECTURE.md # System architecture overview
β βββ CONTRIBUTING.md # Contribution guidelines
β
βββ README.md # This file
βββ CHANGELOG.md # Version history
βββ LICENSE # Apache 2.0 License
βββ NOTICE # Attribution notices
β
βββ .github/ # GitHub configuration (workflows, etc.)
βββ .git/ # Git repository metadata
βββ .gitignore & .gitattributes # Version control settings
βββ frontend/package-lock.json # Frozen frontend dependencies
- Backend: Go + Wails v3
- Frontend: Vue 3 + TypeScript + Vite
- State Management: Pinia
- Internationalization: vue-i18n
- Database: SQLite (via modernc.org/sqlite) + FTS5
- Viewer Engine: PDF.js & alphaTab
HAYA-TAB is open-sourced software licensed under the Apache License 2.0.
This project is free for personal and commercial use, modification, and distribution, provided that:
- License & Copyright: You include a copy of the Apache 2.0 license and the original copyright notice in any substantial portion of the software.
- State Changes: You explicitly state significant changes made to the files.
- No Liability: The software is provided "as is", without warranty of any kind.
See the LICENSE file for the full legal text and NOTICE for attribution requirements.
HAYASAKA7 - cyanluxury267@gmail.com