Refactor: ES module architecture, tauri-plugin-store, unified design

Major changes:
- ES module system: main.js as central hub, shared modules
- tauri-plugin-store for persistent storage (dialog, fs plugins added)
- tauri-plugin-dialog for folder selection
- tauri-plugin-fs for real file system scanning
- Removed MOCK_FILES/FILE_TREE - real file scanner implemented
- All pages use unified page-header + page-content layout
- Custom titlebar with window controls
- Onboarding: 4-step flow with folder selection (Downloads default)
- CSS: unified design system, .hidden utility class added
- SVG icons throughout (no emoji)

Note: onboarding.js downloadDir() has runtime issue - needs fix
This commit is contained in:
2026-06-01 04:41:19 +09:00
parent 1ef6cb1379
commit 13328e6a8b
45 changed files with 2137 additions and 7430 deletions

View File

@@ -23,3 +23,6 @@ serde = { version = "1.0", features = ["derive"] }
log = "0.4"
tauri = { version = "2.11.2", features = [] }
tauri-plugin-log = "2"
tauri-plugin-store = "2"
tauri-plugin-dialog = "2"
tauri-plugin-fs = "2"

View File

@@ -6,6 +6,17 @@
"main"
],
"permissions": [
"core:default"
"core:default",
"core:window:default",
"core:window:allow-close",
"core:window:allow-minimize",
"core:window:allow-toggle-maximize",
"core:window:allow-is-maximized",
"core:window:allow-start-dragging",
"store:default",
"dialog:default",
"fs:default",
"fs:allow-read-dir",
"fs:allow-stat"
]
}
}

View File

@@ -1,6 +1,10 @@
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_store::Builder::new().build())
.plugin(tauri_plugin_log::Builder::default().build())
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_fs::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}

View File

@@ -20,7 +20,9 @@
"minHeight": 600,
"center": true,
"resizable": true,
"fullscreen": false
"fullscreen": false,
"decorations": false,
"transparent": true
}
],
"security": {
@@ -28,7 +30,7 @@
}
},
"bundle": {
"active": true,
"active": false,
"targets": "all",
"icon": [
"icons/32x32.png",