- Updated @haexhub/sdk dependency from 1.9.7 to 1.9.10
- Imported HAEXTENSION_METHODS and HAEXTENSION_EVENTS from SDK
- Updated all handler files to use new nested method constants
- Updated extensionMessageHandler to route using constants
- Changed application.open routing in web handler
- All method names now use haextension:subject:action schema
- Add SerializedExtensionError TypeScript bindings from Rust
- Add ExtensionErrorCode enum export with ts-rs
- Create useExtensionError composable with type guards and error message extraction
- Fix developer page toast messages to show proper error messages instead of [object Object]
- Add getErrorMessage helper function for robust error handling across different error types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Split extensionMessageHandler into separate handler files
- Created handlers directory with individual files for database, filesystem, http, permissions, context, and storage
- Reduced main handler file from 602 to 342 lines
- Improved code organization and maintainability
- Add viewport utilities for safe area handling
- New viewport.ts utility with helpers for fullscreen dimensions
- Proper safe area inset calculations for mobile devices
- Fixed window positioning on small screens to start at 0,0
- Create UiDrawer wrapper component
- Automatically applies safe area insets
- Uses TypeScript DrawerProps interface for code completion
- Replaced all UDrawer instances with UiDrawer
- Improve window management
- Windows on small screens now use full viewport with safe areas
- Fixed maximize functionality to respect safe areas
- Consolidated safe area logic in reusable utilities
- Add e.preventDefault() in handlePointerDown to prevent text selection
- Add @dragstart.prevent to prevent native browser drag
- Add select-none and @selectstart.prevent to workspace
- Add mouseleave event listener to reset drag state when leaving window
- Refactor grid positioning to use consistent iconPadding constant
- Increase icon spacing from 20px to 30px padding
- Add vertical grid offset (-30px) to start grid higher
- Remove screen-size dependent grid columns/rows (now fully dynamic)
- Fix dropzone visualization to use consistent snapToGrid function
- Clean up unused UI store dependencies
Prevent icons from being dragged beyond viewport boundaries on the x-axis.
Icons are now clamped to valid positions during drag, not just on drop.
- Added viewport bounds checking for both x and y axes during drag
- Icons stay within [0, viewport.width - iconWidth] horizontally
- Icons stay within [0, viewport.height - iconHeight] vertically
- Eliminates snap-back behavior when dragging near edges
Bump version to 0.1.8
This update migrates desktop grid settings from localStorage to the database
and introduces a comprehensive device management system.
Features:
- New haex_devices table for device identification and naming
- Device-specific settings with foreign key relationships
- Preset-based icon sizes (Small, Medium, Large, Extra Large)
- Grid positioning improvements to prevent dragging behind PageHeader
- Dynamic icon sizing based on database settings
Database Changes:
- Created haex_devices table with deviceId (UUID) and name columns
- Modified haex_settings to include device_id FK and updated unique constraint
- Migration 0002_loose_quasimodo.sql for schema changes
Technical Improvements:
- Replaced arbitrary icon size slider (60-200px) with preset system
- Icons use actual measured dimensions for proper grid centering
- Settings sync on vault mount for cross-device consistency
- Proper bounds checking during icon drag operations
Bump version to 0.1.7
- Dev extensions are now automatically opened in a window after successful load
- Simplified extension finding logic by using devExtensions directly
- Fixed table name handling to support both double quotes and backticks in permission manager
- Update window components to use fullscreen layout on small screens
- Adjust UI components styling for better mobile display
- Update desktop store for small screen handling
- Add missing filesystem permissions in capabilities
- fs:allow-applocaldata-read-recursive
- fs:allow-applocaldata-write-recursive
- fs:allow-write-file
- fs:allow-mkdir
- fs:allow-exists
- fs:allow-remove
- Fix Android photo picker URI handling
- Detect file type from binary signature (PNG, JPEG, WebP)
- Use manual path construction to avoid path joining issues
- Works with Android photo picker content:// URIs
- Improve error handling with detailed toast messages
- Show specific error at each step (read, mkdir, write, db)
- Better debugging on Android where console is unavailable
- Fix window activation behavior
- Restore minimized windows when activated
- Remove unused imports in launcher component
- Add workspace background image support with file-based storage
- Store background images in $APPLOCALDATA/files directory
- Save file paths in database (text column in haex_workspaces)
- Use convertFileSrc for secure asset:// URL conversion
- Add context menu to workspaces with "Hintergrund ändern" option
- Implement background management in settings
- File selection dialog for PNG, JPG, JPEG, WebP images
- Copy selected images to app data directory
- Remove background with file cleanup
- Multilingual UI (German/English)
- Fix launcher drawer drag interference
- Add :handle-only="true" to UDrawer to restrict drag to handle
- Simplify drag handlers (removed complex state tracking)
- Items can now be dragged to desktop without drawer interference
- Extend Tauri asset protocol scope to include $APPLOCALDATA/**
for background image loading
- Add UiButtonContext component for context menu support on buttons
- Implement vault trash functionality using trash crate
- Move vaults to system trash on desktop (with fallback to permanent delete on mobile)
- Add context menu to vault list items for better mobile UX
- Keep hover delete button for desktop users
- Fix extension signature verification on Android by canonicalizing paths (symlink compatibility)
- Implement proper safe-area-inset handling for mobile devices
- Add reactive header height measurement to UI store
- Fix maximized window positioning to respect safe-areas and header
- Create reusable HaexDebugOverlay component for mobile debugging
- Fix Swiper navigation by using absolute positioning instead of flex-1
- Remove debug logging after Android compatibility confirmed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>