Repository navigation
Releases
Releases · decryptedchaos/arcanas
v1.0.6
Added
- Dashboard I/O Gauges - Real-time Disk I/O and Network I/O visualization on dashboard
- Circular gauge components showing read/write rates for physical disks
- Network gauges displaying download/upload speeds in Mbps
- Replaces SystemStatus component with more actionable performance metrics
- Storage Builder - New unified workflow system for storage configuration with flexible entry points
- Workflow Selector (
/storage-builder) - Central hub with 5 workflow options- Complete Storage Setup - Full guided wizard (Disks → RAID → LVM → Pool → Shares)
- RAID Array - Standalone RAID creation from physical disks
- LVM Volumes - Redirects to existing
/lvmpage for VG/LV management - Storage Pool - Create pools from devices, RAID arrays, or LVM logical volumes
- Network Shares - Create NFS or Samba shares from existing storage
- Individual Workflows - Each component can be configured independently without forced multi-step process
- Storage Pool Types - Pool creation now supports 3 types:
- Bind Mount - Single device directly mounted
- MergerFS - Pool multiple devices together
- LVM Logical Volume - Mount existing unmounted LVs as storage pools
- StorageBuilderCard - Prominent card on Dashboard and Storage pages for easy workflow access
- FirstRunBanner - Non-intrusive banner for first-time users to launch Storage Builder
- Workflow Selector (
- LVM Volumes Page - New dedicated page (
/lvm) for managing LVM volume groups and logical volumes- Create/delete volume groups from available physical devices (RAID arrays, disks)
- Create/delete logical volumes from volume groups
- View VG size, free space, and usage statistics
- Expandable VG cards showing associated logical volumes
- Mount LVs as storage pools directly from the LVM page
- LVM Frontend API - New
lvmAPIwith methods for VG and LV managementgetVolumeGroups(),createVolumeGroup(),deleteVolumeGroup()getLogicalVolumes(),createLogicalVolume(),deleteLogicalVolume()getAvailableDevices()for discovering devices suitable for VG creation
- Frontend Component Architecture - Refactored storage page into reusable components
DisksTab.svelte- Disk listing with SMART health indicatorsRAIDTab.svelte- RAID array management with delete functionalityPoolsTab.svelte- Storage pool management with action callbacks- Cleaner separation of concerns, easier testing and maintenance
- Svelte Expression Conventions - Added
.claude/svelte-conventions.mddocumenting:- Variable reference patterns (full object paths, store prefixes)
- Event handler patterns (arrow functions for parameters)
- Immutable array/object operations
- Common pitfalls and how to avoid them
- Component best practices (props, callbacks, accessibility)
Changed
- Dashboard Layout - Removed SystemStatus component in favor of inline I/O gauges
- SystemStatus and DashboardStats were redundant (both showing CPU/memory)
- I/O gauges provide unique value not shown elsewhere on dashboard
- Storage Page Buttons - "Create RAID Array" and "Create Storage Pool" now link to dedicated workflow pages instead of opening modals
- NFS/Samba Share Creation - Simplified to only show Storage Pools in path selection
- Removed LVM Logical Volumes dropdown section to eliminate confusion
- Storage Pools are now the single source of truth for shareable storage
- LVM volumes must be mounted as pools first before they can be shared
- Pool Type Validation - Pool creation uses
lvmtype (instead oflvm_lv) for LVM logical volume pools to match backend expectations - Navigation - Added "LVM Volumes" link to sidebar between "Storage" and "Sharing"
- Removed Deprecated Usage Mode - Storage pools no longer have export mode selector (file/iSCSI/available options removed from pools UI)
- Documentation - Updated CLAUDE.md and README.md with Storage Builder, LVM routes, and component architecture
Fixed
- Pool Creation API Error - Fixed 400 Bad Request when creating LVM-backed pools
- Changed pool type from
lvm_lvtolvmto match backend validation - Backend handler accepts
lvmas valid pool type for LVM logical volumes
- Changed pool type from
- LVM Signature Wipe Prompt - Fixed LV creation failing on existing signatures with "Wipe it? [y/n]" prompt
- Added both
-W y(wipesignatures) and-y(auto-confirm) flags tolvcreatecommand - The
-yflag is required to auto-answer the signature wipe prompt - Allows reusing LV names from previously deleted volumes without manual intervention
- Added both
- LVM Free Space Detection - Fixed "not enough free space in VG (have 0 GB)" error when creating LVs
getVGInfo()was not trimming the "B" suffix fromvgs --units boutput (e.g., "123456789B")ParseInt()was failing to parse strings with suffix, returning 0- Now properly strips "B" suffix before parsing, same as
GetVolumeGroups()function
- LVM Pool Name Expression Error - Fixed "pool is not defined" error in LVM page
- Changed
{pool-name || newLV.name}to{newLV.poolName || newLV.name} - The hyphenated name was being interpreted as subtraction (pool minus name) instead of a variable reference
- Changed
- LVM Input Pattern Regex Error - Fixed "character class escape cannot be used in class range" validation error
- Changed
pattern="[a-z0-9-]+"topattern="[a-z0-9\-]+"to properly escape hyphen in regex character class - Allows hyphens in VG and LV names (e.g., "vg-data", "lv-bank")
- Changed
- Storage Page Tab Structure - Fixed improper if/else block nesting that caused "attempted to close an element that was not open" error
- Added missing
{/if}to close the outeractiveTabif/else chain - Properly closes tab content div structure
- Added missing
Full Changelog: v1.0.5...v1.0.6
v1.0.5
Added
- ACL UI Improvements - Enhanced ACL interface with detailed LUN display and unmap functionality:
- LUN Details Display - Each mapped LUN now shows LUN number, name, and size instead of just vague numbers
- Unmap Buttons - Each mapped LUN has an X button (visible on hover) to unmap it from the client
- Better Organization - Each ACL is in its own card with clear header showing client name and mapped LUN count
- Empty State - Shows "No LUNs mapped to this client" when appropriate
- Missing LUN Detection - Shows "(LUN not found)" for mappings to deleted LUNs
- LUN Number Parsing - Fixed regex-based LUN number extraction in both
getNextAvailableLUN()andparseLUNsFromTargetcli()to correctly display LUN numbers (0, 1, 2, etc.) - RAID Array Deletion - Fixed deletion bug by using device path (
/dev/md0) instead of mdadm name (arcanas:1) - RAID Array Unmounting - Arrays are now unmounted before deletion to prevent "Immutable" errors
- Volume Group Stats - Fixed VG used/available space showing 0 by using
--units bfor raw byte values instead of human-readable format - RAID Persistent Naming - Added mdadm.conf management with
--homehostto prevent md127 rename on reboot - Storage Pool Creation - Fixed device filtering to exclude already-mounted devices
- MD Device Visibility - Legacy MD device mounts now appear in storage pools API for NFS/Samba sharing
- NFS Path Update Logic - Export path changes now properly handle delete+recreate workflow
- iSCSI Backing Stores UI - Enhanced to show device availability status with mount point reasons
- Samba Share Permissions for /mnt Mounts - Fixed permission issues for Samba shares on mounts under
/mntby setting proper ownership and permissions on intermediate mount points - MD Device Samba Permissions - MD RAID devices mounted anywhere are now automatically detected and given proper permissions for Samba access (nobody:nogroup ownership, 0777 permissions)
- iSCSI Target Creation - Fixed bug where created targets had no backing store or LUN attached
- iSCSI Target Update - Targets can now be updated with new backing stores (replaces existing LUN)
- iSCSI targetcli Commands - Fixed all targetcli command paths from relative (
iscsi/) to absolute (/iscsi/) syntax - iSCSI LUN Parsing - Improved LUN detection and backstore path parsing from targetcli output
- iSCSI ACL LUN Mapping - Fixed LUN to ACL mapping by dynamically querying backstore path instead of hardcoding
/backstores/block/ - ACL IQN Validation - Fixed IQN input regex pattern to properly validate IQN format with hyphens and colons
Fixed
- iSCSI Slow Link Transfer Behavior - Configured iSCSI target with conservative burst lengths (
FirstBurstLength=32KB,MaxBurstLength=64KB) to prevent false transfer completion reporting on slow links (50Mbps/5MB/s). The default 256KB MaxBurstLength caused transfers to appear complete instantly while data continued transferring at line speed in the background.- Backend:
EnsureISCSITargetConfigured()now sets burst lengths via configfs when creating iSCSI targets - Fresh Installs:
install.shcreatesarcanas-iscsi-config.serviceto apply settings on boot - Upgrades: Run
/usr/local/bin/arcanas-iscsi-config.shmanually or restart the service to apply to existing installations
- Backend:
- iSCSI LUN Cache Mode - Configured block backstores to disable thin provisioning unmap emulation (
emulate_tpu=0) for more predictable I/O behavior. - Deploy Script Frontend Sync - Fixed rsync include rules order to properly sync frontend build files to remote server
- ACL URL Encoding - Fixed ACL deletion, LUN mapping, and LUN unmapping to properly URL-decode IQNs from request paths (colons in IQNs like
iqn.2016-04.com.open-iscsi:c8e34e60ec9were being sent as%3A) - ACL Creation Auto-Remove LUNs - New ACLs start with no LUNs mapped (auto-mapped LUNs are automatically removed) so users have explicit control over which LUNs to map
- ACL IQN Parsing - Fixed
GetISCSIACLsto correctly extract IQN from targetcli output (was usingparts[0]which waso-, now usesparts[1]for the actual IQN) - LUN Detection via ConfigFS - Fixed
getMappedLUNsForACLto use configfs link file detection instead of parsing targetcli output for more reliable LUN mapping status - LUN Backstore Detection - Fixed
MapLUNToACLto uselscommand instead ofinfocommand for more reliable backstore path parsing from targetcli output - LUN Mapping with Existing Symlinks - Fixed LUN mapping to detect and reuse existing symlinks instead of trying to create duplicate symlinks
DELETE /api/iscsi/acls/{iqn}/luns/{lun}- Unmap LUN from ACLGET /api/iscsi/acls-for-lun?lun=N- Get all ACLs for a specific LUN
- Target Configuration Change - Disabled auto-ACL generation (
generate_node_acls=0) for manual access control - ACL Models - New
ISCSIACL,ISCSIACLMappedLUN,ACLCreateRequest,ACLMapLUNRequestmodels - ACL System Functions -
GetISCSIACLs(),CreateISCSIACL(),DeleteISCSIACL(),MapLUNToACL(),UnmapLUNFromACL(),GetACLsForLUN() - LUN Number Display Fix - Fixed regex-based LUN parsing to correctly display LUN numbers (0, 1, 2, etc.) instead of all showing as LUN 0
- Storage Pool Export Modes - Unified storage management with three export modes:
- File Mode - Mounted filesystem for NFS/Samba sharing (default)
- iSCSI Mode - Unmounted, available for iSCSI/LVM use
- Available Mode - Unmounted, reserved for future use
- Export Mode API -
POST /api/storage-pools/{name}/export-modeto switch modes - New iSCSI Architecture - Redesigned iSCSI with single target, multiple LUNs model (enterprise standard)
- LVM Volume Group Management - Separate VG system from storage pools for iSCSI LUNs:
- VG Creation - Create volume groups from physical devices (RAID arrays, disks)
- VG Management Tab - New tab in Storage page for managing volume groups
- Quick VG Creation in iSCSI - Create volume groups directly when creating LVM LUNs
- VG Deletion - Delete VGs with automatic LUN cleanup
- LVM LUN Backends - Create flexible, resizable LUNs from LVM volume groups (recommended for sharing storage)
- Clear Backend Options - Three LUN backends with clear descriptions:
- LVM Volume (Flexible) - Create LUNs of any size from VG. Best for sharing storage among clients
- Block Device (Dedicated) - Use entire disk/RAID for one LUN. Simple but uses whole device
- File-Based (Testing) - File on disk as LUN. For testing only. Slower performance
- New iSCSI UI -
/scsiroute with simplified LUN management interface - Storage Pool Editing - Edit pool name and mount options without deletion
- NFS Path Editing - Change export paths on existing NFS shares
- Storage Pool Dropdown - Quick-select available storage pools when creating/editing NFS exports
- RAID Auto-Naming - System automatically assigns next available device number (e.g., md0, md1) when creating arrays
- Visual Warnings - Confirmation dialogs and warnings when making destructive changes
- Legacy Mount Detection - Automatic detection and support for
/mnt/arcanas-disk-*mounts - iSCSI Auto-Unmount - Mounted devices (including RAID arrays) are automatically unmounted when used as iSCSI backing stores
- Volume Group API -
GET/POST /api/volume-groups,DELETE /api/volume-groups/{name},GET /api/volume-groups/available-devices - LV Info on LUN Cards - LVM-backed LUNs now display Logical Volume path and size (queried via
lvs)
Changed
- iSCSI Access Control Model - Changed from automatic ACL generation to manual per-client ACL management:
- Breaking Change - Existing clients will lose access until ACLs are created and LUNs are explicitly mapped
- Benefit - Each client only sees LUNs explicitly mapped to their ACL (improved security and isolation)
- Migration Required - After upgrade, create ACLs for each client and map their required LUNs
- Target Attribute - Set
generate_node_acls=0to disable automatic ACL generation - LUN Number Display - Fixed regex-based LUN parsing to correctly display LUN numbers (0, 1, 2, etc.) instead of all showing as LUN 0
- Simplified Storage/iSCSI Workflow - Single "Storage Pool" concept with export modes replaces confusing multiple storage types
- Pool Export Mode - Change pool purpose (File Share ↔ iSCSI) with one API call, automatic mount/unmount
- iSCSI Model - From multiple targets (one per client) to single target with multiple LUNs
- Storage Pool Architecture - MD RAID devices now mount directly at
/srv/{poolname}instead of using MergerFS wrapper - MergerFS Behavior - Now only used for aggregating multiple raw physical disks (JBOD), not MD devices
- Device Selection - Create pool modal filters to show only available (unmounted) devices
- Pool Type Detection - New "legacy" type for old
/mnt/arcanas-disk-*mounts, "direct" for new/srv/*mounts - iSCSI Backing Stores Display - Mounted devices now show as available with "Will be auto-unmounted" message instead of blocked
Full Changelog: v1.0.4...v1.0.5
v1.0.4
v1.0.3
v1.0.2
v1.0.1
v1.0.0
Full Changelog: https://github.com/decryptedchaos/arcanas/commits/v1.0.0
Full Changelog: https://github.com/decryptedchaos/arcanas/commits/v1.0.0