diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..f3fdae91
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+scripts/icons.manifest -text
+scripts/*.sh text eol=lf
diff --git a/.github/workflows/architecture-boundaries.yml b/.github/workflows/architecture-boundaries.yml
index ae36b7e4..a3093fc6 100644
--- a/.github/workflows/architecture-boundaries.yml
+++ b/.github/workflows/architecture-boundaries.yml
@@ -15,3 +15,6 @@ jobs:
run: sudo apt-get update && sudo apt-get install -y ripgrep
- name: Check architecture boundaries
run: bash scripts/check-architecture-boundaries.sh
+ # A missing or mis-painted icon is silent at runtime, so it has to be caught here.
+ - name: Check icon references
+ run: bash scripts/check-icon-references.sh
diff --git a/AGENTS.md b/AGENTS.md
index 51b26975..cb211528 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -20,7 +20,7 @@ This is a Rust 2024 Cargo workspace.
* `crates/nyaterm-store`: transitional persistence façade. The implementation currently remains in `nyaterm-core`; do not expand the re-export-only boundary without either moving the implementation or updating consumers to use this crate.
* `crates/nyaterm-legacy`: migration and legacy-source compatibility only. Do not add new product features here.
* `crates/nyaterm-otp`: bundled OTP implementation used for HOTP/TOTP compatibility.
-* `crates/nyaterm-app/assets`: application SVG assets.
+* `crates/nyaterm-app/assets`: bundled icon assets. `icons/**` is monochrome and painted with `svg()`; `color/**` is full color and painted with `img()`. The two are not interchangeable — see `docs/third-party-icons.md`. Assets are vendored by `scripts/sync-icons.sh` from `scripts/icons.manifest` and committed, so add or change icons through the manifest rather than by hand.
* `vendor/`: modified or pinned third-party dependencies such as `russh`, `russh-sftp`, and `zmodem2`.
## Architectural Rules
diff --git a/Cargo.lock b/Cargo.lock
index 70aa8517..450440b2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4212,9 +4212,11 @@ dependencies = [
"gpui",
"nyaterm-core",
"nyaterm-desktop",
+ "rust-embed",
"tracing",
"tracing-appender",
"tracing-subscriber",
+ "usvg",
]
[[package]]
@@ -4299,6 +4301,7 @@ dependencies = [
"alacritty_terminal",
"encoding_rs",
"flate2",
+ "memchr",
"unicode-width",
]
diff --git a/Cargo.toml b/Cargo.toml
index c2a57879..8a9a78fd 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -55,6 +55,7 @@ redb = "4.1.0"
regex = "1.11.1"
russh = { path = "vendor/russh/russh", features = ["des", "dsa"] }
russh-sftp = { path = "vendor/russh-sftp" }
+rust-embed = { version = "8.11", features = ["include-exclude", "debug-embed"] }
serialport = { version = "4", default-features = false }
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["raw_value"] }
@@ -68,6 +69,9 @@ tokio-socks = "0.5.2"
tracing = "0.1"
tracing-appender = "0.2.4"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
+# Test-only. Feature set must mirror gpui's own usvg dependency (default-features
+# = false) so asset tests cannot pass under capabilities the app does not build.
+usvg = { version = "0.45", default-features = false }
uuid = { version = "1", features = ["v4", "serde"] }
vte = "0.14"
zmodem2 = { path = "vendor/zmodem2" }
diff --git a/crates/nyaterm-app/Cargo.toml b/crates/nyaterm-app/Cargo.toml
index c36d4c04..c800e17e 100644
--- a/crates/nyaterm-app/Cargo.toml
+++ b/crates/nyaterm-app/Cargo.toml
@@ -11,10 +11,18 @@ anyhow.workspace = true
gpui.workspace = true
nyaterm-core.workspace = true
nyaterm-desktop.workspace = true
+rust-embed.workspace = true
tracing.workspace = true
tracing-appender.workspace = true
tracing-subscriber.workspace = true
+[dev-dependencies]
+usvg.workspace = true
+
+[lib]
+name = "nyaterm_app"
+path = "src/lib.rs"
+
[[bin]]
name = "nyaterm"
path = "src/main.rs"
diff --git a/crates/nyaterm-app/assets/color/brand/mobaxterm.png b/crates/nyaterm-app/assets/color/brand/mobaxterm.png
new file mode 100644
index 00000000..6fa3021f
Binary files /dev/null and b/crates/nyaterm-app/assets/color/brand/mobaxterm.png differ
diff --git a/crates/nyaterm-app/assets/color/brand/windterm.png b/crates/nyaterm-app/assets/color/brand/windterm.png
new file mode 100644
index 00000000..f438ed99
Binary files /dev/null and b/crates/nyaterm-app/assets/color/brand/windterm.png differ
diff --git a/crates/nyaterm-app/assets/color/brand/xshell.png b/crates/nyaterm-app/assets/color/brand/xshell.png
new file mode 100644
index 00000000..c9e95488
Binary files /dev/null and b/crates/nyaterm-app/assets/color/brand/xshell.png differ
diff --git a/crates/nyaterm-app/assets/color/os/alibabacloudlinux.svg b/crates/nyaterm-app/assets/color/os/alibabacloudlinux.svg
new file mode 100644
index 00000000..a50bbbca
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/alibabacloudlinux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/almalinux.svg b/crates/nyaterm-app/assets/color/os/almalinux.svg
new file mode 100644
index 00000000..12a9bbe3
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/almalinux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/alpine-linux.svg b/crates/nyaterm-app/assets/color/os/alpine-linux.svg
new file mode 100644
index 00000000..e5411687
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/alpine-linux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/android.svg b/crates/nyaterm-app/assets/color/os/android.svg
new file mode 100644
index 00000000..f04349ec
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/android.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/anolisos.svg b/crates/nyaterm-app/assets/color/os/anolisos.svg
new file mode 100644
index 00000000..70efddc8
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/anolisos.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/apple.svg b/crates/nyaterm-app/assets/color/os/apple.svg
new file mode 100644
index 00000000..942531cf
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/apple.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/archlinux.svg b/crates/nyaterm-app/assets/color/os/archlinux.svg
new file mode 100644
index 00000000..cd0c1527
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/archlinux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/aws.svg b/crates/nyaterm-app/assets/color/os/aws.svg
new file mode 100644
index 00000000..ca0b8e39
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/aws.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/centos.svg b/crates/nyaterm-app/assets/color/os/centos.svg
new file mode 100644
index 00000000..d60ad8ac
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/centos.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/cmd.svg b/crates/nyaterm-app/assets/color/os/cmd.svg
new file mode 100644
index 00000000..3bf17788
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/cmd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/debian.svg b/crates/nyaterm-app/assets/color/os/debian.svg
new file mode 100644
index 00000000..edf539ef
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/debian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/deepin.svg b/crates/nyaterm-app/assets/color/os/deepin.svg
new file mode 100644
index 00000000..a76c9f87
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/deepin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/fedora.svg b/crates/nyaterm-app/assets/color/os/fedora.svg
new file mode 100644
index 00000000..19b74712
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/fedora.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/gentoo.svg b/crates/nyaterm-app/assets/color/os/gentoo.svg
new file mode 100644
index 00000000..08ea42af
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/gentoo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/git.svg b/crates/nyaterm-app/assets/color/os/git.svg
new file mode 100644
index 00000000..a2665c53
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/git.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/h3c.svg b/crates/nyaterm-app/assets/color/os/h3c.svg
new file mode 100644
index 00000000..f5396963
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/h3c.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/huawei.svg b/crates/nyaterm-app/assets/color/os/huawei.svg
new file mode 100644
index 00000000..4f4a1a9c
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/huawei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/k8s.svg b/crates/nyaterm-app/assets/color/os/k8s.svg
new file mode 100644
index 00000000..f34657db
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/k8s.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/kalilinux.svg b/crates/nyaterm-app/assets/color/os/kalilinux.svg
new file mode 100644
index 00000000..779bba09
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/kalilinux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/kylin.svg b/crates/nyaterm-app/assets/color/os/kylin.svg
new file mode 100644
index 00000000..0f8239e2
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/kylin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/linux-mint.svg b/crates/nyaterm-app/assets/color/os/linux-mint.svg
new file mode 100644
index 00000000..1ec1f517
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/linux-mint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/linux.svg b/crates/nyaterm-app/assets/color/os/linux.svg
new file mode 100644
index 00000000..3c600b80
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/linux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/manjaro.svg b/crates/nyaterm-app/assets/color/os/manjaro.svg
new file mode 100644
index 00000000..98118a68
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/manjaro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/nixos.svg b/crates/nyaterm-app/assets/color/os/nixos.svg
new file mode 100644
index 00000000..a5abcdbc
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/nixos.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/openeuler.svg b/crates/nyaterm-app/assets/color/os/openeuler.svg
new file mode 100644
index 00000000..faefef8f
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/openeuler.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/opensuse.svg b/crates/nyaterm-app/assets/color/os/opensuse.svg
new file mode 100644
index 00000000..9e510aeb
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/opensuse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/powershell.svg b/crates/nyaterm-app/assets/color/os/powershell.svg
new file mode 100644
index 00000000..c960d455
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/powershell.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/raspberrypi.svg b/crates/nyaterm-app/assets/color/os/raspberrypi.svg
new file mode 100644
index 00000000..4990ba94
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/raspberrypi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/rocky-linux.svg b/crates/nyaterm-app/assets/color/os/rocky-linux.svg
new file mode 100644
index 00000000..b8569dfb
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/rocky-linux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/tencentos.svg b/crates/nyaterm-app/assets/color/os/tencentos.svg
new file mode 100644
index 00000000..3677bedb
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/tencentos.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/ubuntu.svg b/crates/nyaterm-app/assets/color/os/ubuntu.svg
new file mode 100644
index 00000000..4875ee3f
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/ubuntu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/uos.svg b/crates/nyaterm-app/assets/color/os/uos.svg
new file mode 100644
index 00000000..b1fdafeb
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/uos.svg
@@ -0,0 +1,53 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/color/os/windows.svg b/crates/nyaterm-app/assets/color/os/windows.svg
new file mode 100644
index 00000000..9199d0a0
--- /dev/null
+++ b/crates/nyaterm-app/assets/color/os/windows.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai.svg b/crates/nyaterm-app/assets/icons/ai.svg
index 7df01597..b7d5cd1a 100644
--- a/crates/nyaterm-app/assets/icons/ai.svg
+++ b/crates/nyaterm-app/assets/icons/ai.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/exec-auto.svg b/crates/nyaterm-app/assets/icons/ai/exec-auto.svg
index 423f03f2..05fbc02c 100644
--- a/crates/nyaterm-app/assets/icons/ai/exec-auto.svg
+++ b/crates/nyaterm-app/assets/icons/ai/exec-auto.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/exec-confirm.svg b/crates/nyaterm-app/assets/icons/ai/exec-confirm.svg
index 215fe171..8a87c75c 100644
--- a/crates/nyaterm-app/assets/icons/ai/exec-confirm.svg
+++ b/crates/nyaterm-app/assets/icons/ai/exec-confirm.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/exec-smart.svg b/crates/nyaterm-app/assets/icons/ai/exec-smart.svg
index f7bcb4ec..f8510015 100644
--- a/crates/nyaterm-app/assets/icons/ai/exec-smart.svg
+++ b/crates/nyaterm-app/assets/icons/ai/exec-smart.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/history.svg b/crates/nyaterm-app/assets/icons/ai/history.svg
index 31af58cb..f8f018c8 100644
--- a/crates/nyaterm-app/assets/icons/ai/history.svg
+++ b/crates/nyaterm-app/assets/icons/ai/history.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/new.svg b/crates/nyaterm-app/assets/icons/ai/new.svg
index 09320265..58f73e96 100644
--- a/crates/nyaterm-app/assets/icons/ai/new.svg
+++ b/crates/nyaterm-app/assets/icons/ai/new.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/search.svg b/crates/nyaterm-app/assets/icons/ai/search.svg
index 79c57799..cd9fd53c 100644
--- a/crates/nyaterm-app/assets/icons/ai/search.svg
+++ b/crates/nyaterm-app/assets/icons/ai/search.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/send.svg b/crates/nyaterm-app/assets/icons/ai/send.svg
index 87daad06..b6786781 100644
--- a/crates/nyaterm-app/assets/icons/ai/send.svg
+++ b/crates/nyaterm-app/assets/icons/ai/send.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/settings.svg b/crates/nyaterm-app/assets/icons/ai/settings.svg
index bc4c7907..b36758ca 100644
--- a/crates/nyaterm-app/assets/icons/ai/settings.svg
+++ b/crates/nyaterm-app/assets/icons/ai/settings.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/ai/stop.svg b/crates/nyaterm-app/assets/icons/ai/stop.svg
index e41cba83..48d3f2d7 100644
--- a/crates/nyaterm-app/assets/icons/ai/stop.svg
+++ b/crates/nyaterm-app/assets/icons/ai/stop.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/arrow-down.svg b/crates/nyaterm-app/assets/icons/arrow-down.svg
new file mode 100644
index 00000000..b6f2de90
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/arrow-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/auth.svg b/crates/nyaterm-app/assets/icons/auth.svg
index 3a130f71..f1868021 100644
--- a/crates/nyaterm-app/assets/icons/auth.svg
+++ b/crates/nyaterm-app/assets/icons/auth.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/apple.svg b/crates/nyaterm-app/assets/icons/brand/apple.svg
new file mode 100644
index 00000000..de4b0d17
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/apple.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/aws.svg b/crates/nyaterm-app/assets/icons/brand/aws.svg
new file mode 100644
index 00000000..e7483bad
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/aws.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/baidu.svg b/crates/nyaterm-app/assets/icons/brand/baidu.svg
new file mode 100644
index 00000000..d3e65969
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/baidu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/bilibili.svg b/crates/nyaterm-app/assets/icons/brand/bilibili.svg
new file mode 100644
index 00000000..6c114c71
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/bilibili.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/bing.svg b/crates/nyaterm-app/assets/icons/brand/bing.svg
new file mode 100644
index 00000000..b455b9e4
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/bing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/centos.svg b/crates/nyaterm-app/assets/icons/brand/centos.svg
new file mode 100644
index 00000000..3f16a9e0
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/centos.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/claude.svg b/crates/nyaterm-app/assets/icons/brand/claude.svg
new file mode 100644
index 00000000..1beee861
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/claude.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/css.svg b/crates/nyaterm-app/assets/icons/brand/css.svg
new file mode 100644
index 00000000..59bb2437
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/css.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/debian.svg b/crates/nyaterm-app/assets/icons/brand/debian.svg
new file mode 100644
index 00000000..6e4be6a7
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/debian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/docker.svg b/crates/nyaterm-app/assets/icons/brand/docker.svg
new file mode 100644
index 00000000..0021a8a7
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/docker.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/duckduckgo.svg b/crates/nyaterm-app/assets/icons/brand/duckduckgo.svg
new file mode 100644
index 00000000..7b51a80e
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/duckduckgo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/fedora.svg b/crates/nyaterm-app/assets/icons/brand/fedora.svg
new file mode 100644
index 00000000..7f461d0e
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/fedora.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/gemini.svg b/crates/nyaterm-app/assets/icons/brand/gemini.svg
new file mode 100644
index 00000000..765adb08
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/gemini.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/github.svg b/crates/nyaterm-app/assets/icons/brand/github.svg
new file mode 100644
index 00000000..538ec5bf
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/gitlab.svg b/crates/nyaterm-app/assets/icons/brand/gitlab.svg
new file mode 100644
index 00000000..e4a29630
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/gitlab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/go.svg b/crates/nyaterm-app/assets/icons/brand/go.svg
new file mode 100644
index 00000000..0cadd56b
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/go.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/google.svg b/crates/nyaterm-app/assets/icons/brand/google.svg
new file mode 100644
index 00000000..2eaf9155
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/google.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/googlecloud.svg b/crates/nyaterm-app/assets/icons/brand/googlecloud.svg
new file mode 100644
index 00000000..b7b4dcc0
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/googlecloud.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/html5.svg b/crates/nyaterm-app/assets/icons/brand/html5.svg
new file mode 100644
index 00000000..e8b1e371
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/html5.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/javascript.svg b/crates/nyaterm-app/assets/icons/brand/javascript.svg
new file mode 100644
index 00000000..91e51623
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/javascript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/kubernetes.svg b/crates/nyaterm-app/assets/icons/brand/kubernetes.svg
new file mode 100644
index 00000000..667f2d47
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/kubernetes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/linux.svg b/crates/nyaterm-app/assets/icons/brand/linux.svg
new file mode 100644
index 00000000..381d3d8a
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/linux.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/mongodb.svg b/crates/nyaterm-app/assets/icons/brand/mongodb.svg
new file mode 100644
index 00000000..a4c81748
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/mongodb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/mysql.svg b/crates/nyaterm-app/assets/icons/brand/mysql.svg
new file mode 100644
index 00000000..195caada
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/mysql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/nginx.svg b/crates/nyaterm-app/assets/icons/brand/nginx.svg
new file mode 100644
index 00000000..5875410b
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/nginx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/nodedotjs.svg b/crates/nyaterm-app/assets/icons/brand/nodedotjs.svg
new file mode 100644
index 00000000..281c8296
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/nodedotjs.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/openai.svg b/crates/nyaterm-app/assets/icons/brand/openai.svg
new file mode 100644
index 00000000..384e411c
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/openai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/php.svg b/crates/nyaterm-app/assets/icons/brand/php.svg
new file mode 100644
index 00000000..a08156af
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/php.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/postgresql.svg b/crates/nyaterm-app/assets/icons/brand/postgresql.svg
new file mode 100644
index 00000000..dcf75b72
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/postgresql.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/python.svg b/crates/nyaterm-app/assets/icons/brand/python.svg
new file mode 100644
index 00000000..30587d81
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/python.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/redis.svg b/crates/nyaterm-app/assets/icons/brand/redis.svg
new file mode 100644
index 00000000..fc47db86
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/redis.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/rust.svg b/crates/nyaterm-app/assets/icons/brand/rust.svg
new file mode 100644
index 00000000..b95ce42a
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/rust.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/server.svg b/crates/nyaterm-app/assets/icons/brand/server.svg
new file mode 100644
index 00000000..2e93fefa
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/server.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/typescript.svg b/crates/nyaterm-app/assets/icons/brand/typescript.svg
new file mode 100644
index 00000000..e8beb740
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/typescript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/ubuntu.svg b/crates/nyaterm-app/assets/icons/brand/ubuntu.svg
new file mode 100644
index 00000000..227f86aa
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/ubuntu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/yahoo.svg b/crates/nyaterm-app/assets/icons/brand/yahoo.svg
new file mode 100644
index 00000000..c164caac
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/yahoo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/youtube.svg b/crates/nyaterm-app/assets/icons/brand/youtube.svg
new file mode 100644
index 00000000..0492366a
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/youtube.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/brand/zhihu.svg b/crates/nyaterm-app/assets/icons/brand/zhihu.svg
new file mode 100644
index 00000000..c283d23e
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/brand/zhihu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/check.svg b/crates/nyaterm-app/assets/icons/check.svg
index 43dd6880..8676ca39 100644
--- a/crates/nyaterm-app/assets/icons/check.svg
+++ b/crates/nyaterm-app/assets/icons/check.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/chevron-down.svg b/crates/nyaterm-app/assets/icons/chevron-down.svg
index 4fe8fcf9..4428af00 100644
--- a/crates/nyaterm-app/assets/icons/chevron-down.svg
+++ b/crates/nyaterm-app/assets/icons/chevron-down.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/chevron-up.svg b/crates/nyaterm-app/assets/icons/chevron-up.svg
index ce0e5a81..53985246 100644
--- a/crates/nyaterm-app/assets/icons/chevron-up.svg
+++ b/crates/nyaterm-app/assets/icons/chevron-up.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/close.svg b/crates/nyaterm-app/assets/icons/close.svg
new file mode 100644
index 00000000..c3f7c2fd
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/commands.svg b/crates/nyaterm-app/assets/icons/commands.svg
index 00a23a3c..d5fa3689 100644
--- a/crates/nyaterm-app/assets/icons/commands.svg
+++ b/crates/nyaterm-app/assets/icons/commands.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/add.svg b/crates/nyaterm-app/assets/icons/conn/add.svg
index 09320265..58f73e96 100644
--- a/crates/nyaterm-app/assets/icons/conn/add.svg
+++ b/crates/nyaterm-app/assets/icons/conn/add.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/apple.svg b/crates/nyaterm-app/assets/icons/conn/apple.svg
deleted file mode 100644
index 2c51fd86..00000000
--- a/crates/nyaterm-app/assets/icons/conn/apple.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/crates/nyaterm-app/assets/icons/conn/connect.svg b/crates/nyaterm-app/assets/icons/conn/connect.svg
index 592108ac..f39e2a7e 100644
--- a/crates/nyaterm-app/assets/icons/conn/connect.svg
+++ b/crates/nyaterm-app/assets/icons/conn/connect.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/debian.svg b/crates/nyaterm-app/assets/icons/conn/debian.svg
deleted file mode 100644
index d0913060..00000000
--- a/crates/nyaterm-app/assets/icons/conn/debian.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/crates/nyaterm-app/assets/icons/conn/docker.svg b/crates/nyaterm-app/assets/icons/conn/docker.svg
deleted file mode 100644
index bfb5c87c..00000000
--- a/crates/nyaterm-app/assets/icons/conn/docker.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/crates/nyaterm-app/assets/icons/conn/file.svg b/crates/nyaterm-app/assets/icons/conn/file.svg
index e125bd99..6aa287e0 100644
--- a/crates/nyaterm-app/assets/icons/conn/file.svg
+++ b/crates/nyaterm-app/assets/icons/conn/file.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/flash.svg b/crates/nyaterm-app/assets/icons/conn/flash.svg
index 34888f0f..e948043d 100644
--- a/crates/nyaterm-app/assets/icons/conn/flash.svg
+++ b/crates/nyaterm-app/assets/icons/conn/flash.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/folder.svg b/crates/nyaterm-app/assets/icons/conn/folder.svg
index 7b7bf550..e70b01ce 100644
--- a/crates/nyaterm-app/assets/icons/conn/folder.svg
+++ b/crates/nyaterm-app/assets/icons/conn/folder.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/github.svg b/crates/nyaterm-app/assets/icons/conn/github.svg
deleted file mode 100644
index 0bf89b00..00000000
--- a/crates/nyaterm-app/assets/icons/conn/github.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/crates/nyaterm-app/assets/icons/conn/linux.svg b/crates/nyaterm-app/assets/icons/conn/linux.svg
deleted file mode 100644
index 058ed03d..00000000
--- a/crates/nyaterm-app/assets/icons/conn/linux.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/crates/nyaterm-app/assets/icons/conn/more.svg b/crates/nyaterm-app/assets/icons/conn/more.svg
index 88540e69..f2427f84 100644
--- a/crates/nyaterm-app/assets/icons/conn/more.svg
+++ b/crates/nyaterm-app/assets/icons/conn/more.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/python.svg b/crates/nyaterm-app/assets/icons/conn/python.svg
deleted file mode 100644
index f2d68641..00000000
--- a/crates/nyaterm-app/assets/icons/conn/python.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/crates/nyaterm-app/assets/icons/conn/serial.svg b/crates/nyaterm-app/assets/icons/conn/serial.svg
index 2b3902ca..f4c8e262 100644
--- a/crates/nyaterm-app/assets/icons/conn/serial.svg
+++ b/crates/nyaterm-app/assets/icons/conn/serial.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/server.svg b/crates/nyaterm-app/assets/icons/conn/server.svg
index 31b9ea10..4079ced5 100644
--- a/crates/nyaterm-app/assets/icons/conn/server.svg
+++ b/crates/nyaterm-app/assets/icons/conn/server.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/sort.svg b/crates/nyaterm-app/assets/icons/conn/sort.svg
index ebeddf98..84efa535 100644
--- a/crates/nyaterm-app/assets/icons/conn/sort.svg
+++ b/crates/nyaterm-app/assets/icons/conn/sort.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/symlink.svg b/crates/nyaterm-app/assets/icons/conn/symlink.svg
index 9497b0eb..f39e2a7e 100644
--- a/crates/nyaterm-app/assets/icons/conn/symlink.svg
+++ b/crates/nyaterm-app/assets/icons/conn/symlink.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/telnet.svg b/crates/nyaterm-app/assets/icons/conn/telnet.svg
index f9f4e4d7..4079ced5 100644
--- a/crates/nyaterm-app/assets/icons/conn/telnet.svg
+++ b/crates/nyaterm-app/assets/icons/conn/telnet.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/terminal.svg b/crates/nyaterm-app/assets/icons/conn/terminal.svg
index d99912f3..b1a4d635 100644
--- a/crates/nyaterm-app/assets/icons/conn/terminal.svg
+++ b/crates/nyaterm-app/assets/icons/conn/terminal.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/conn/ubuntu.svg b/crates/nyaterm-app/assets/icons/conn/ubuntu.svg
deleted file mode 100644
index 880f1322..00000000
--- a/crates/nyaterm-app/assets/icons/conn/ubuntu.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/crates/nyaterm-app/assets/icons/conn/windows.svg b/crates/nyaterm-app/assets/icons/conn/windows.svg
deleted file mode 100644
index da974cd8..00000000
--- a/crates/nyaterm-app/assets/icons/conn/windows.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/crates/nyaterm-app/assets/icons/connections.svg b/crates/nyaterm-app/assets/icons/connections.svg
index 31b9ea10..4079ced5 100644
--- a/crates/nyaterm-app/assets/icons/connections.svg
+++ b/crates/nyaterm-app/assets/icons/connections.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/copy.svg b/crates/nyaterm-app/assets/icons/copy.svg
index a26c38fe..7c6b60ae 100644
--- a/crates/nyaterm-app/assets/icons/copy.svg
+++ b/crates/nyaterm-app/assets/icons/copy.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/docker.svg b/crates/nyaterm-app/assets/icons/docker.svg
index 89e50601..0021a8a7 100644
--- a/crates/nyaterm-app/assets/icons/docker.svg
+++ b/crates/nyaterm-app/assets/icons/docker.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/eye.svg b/crates/nyaterm-app/assets/icons/eye.svg
index 99b75c4c..5c700e39 100644
--- a/crates/nyaterm-app/assets/icons/eye.svg
+++ b/crates/nyaterm-app/assets/icons/eye.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/back.svg b/crates/nyaterm-app/assets/icons/fe/back.svg
index d670bfbe..e119372c 100644
--- a/crates/nyaterm-app/assets/icons/fe/back.svg
+++ b/crates/nyaterm-app/assets/icons/fe/back.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/bookmark-remove.svg b/crates/nyaterm-app/assets/icons/fe/bookmark-remove.svg
index 6d4730c9..679a1aac 100644
--- a/crates/nyaterm-app/assets/icons/fe/bookmark-remove.svg
+++ b/crates/nyaterm-app/assets/icons/fe/bookmark-remove.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/delete.svg b/crates/nyaterm-app/assets/icons/fe/delete.svg
index ae9c131a..0969a4dc 100644
--- a/crates/nyaterm-app/assets/icons/fe/delete.svg
+++ b/crates/nyaterm-app/assets/icons/fe/delete.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/download.svg b/crates/nyaterm-app/assets/icons/fe/download.svg
index ebd0850e..3b44aec9 100644
--- a/crates/nyaterm-app/assets/icons/fe/download.svg
+++ b/crates/nyaterm-app/assets/icons/fe/download.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/forward.svg b/crates/nyaterm-app/assets/icons/fe/forward.svg
index ce5487b4..aae64cf7 100644
--- a/crates/nyaterm-app/assets/icons/fe/forward.svg
+++ b/crates/nyaterm-app/assets/icons/fe/forward.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/new-file.svg b/crates/nyaterm-app/assets/icons/fe/new-file.svg
index 40fc9b88..36c9d08b 100644
--- a/crates/nyaterm-app/assets/icons/fe/new-file.svg
+++ b/crates/nyaterm-app/assets/icons/fe/new-file.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/new-folder.svg b/crates/nyaterm-app/assets/icons/fe/new-folder.svg
index b353e0a7..3c9da3d6 100644
--- a/crates/nyaterm-app/assets/icons/fe/new-folder.svg
+++ b/crates/nyaterm-app/assets/icons/fe/new-folder.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/paste.svg b/crates/nyaterm-app/assets/icons/fe/paste.svg
index c44ecc41..af63a642 100644
--- a/crates/nyaterm-app/assets/icons/fe/paste.svg
+++ b/crates/nyaterm-app/assets/icons/fe/paste.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/refresh.svg b/crates/nyaterm-app/assets/icons/fe/refresh.svg
index 9171dfce..217df885 100644
--- a/crates/nyaterm-app/assets/icons/fe/refresh.svg
+++ b/crates/nyaterm-app/assets/icons/fe/refresh.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/search.svg b/crates/nyaterm-app/assets/icons/fe/search.svg
index 79c57799..cd9fd53c 100644
--- a/crates/nyaterm-app/assets/icons/fe/search.svg
+++ b/crates/nyaterm-app/assets/icons/fe/search.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/star-outline.svg b/crates/nyaterm-app/assets/icons/fe/star-outline.svg
index df1b0951..edef6948 100644
--- a/crates/nyaterm-app/assets/icons/fe/star-outline.svg
+++ b/crates/nyaterm-app/assets/icons/fe/star-outline.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/star.svg b/crates/nyaterm-app/assets/icons/fe/star.svg
index b270983d..10a5d7d4 100644
--- a/crates/nyaterm-app/assets/icons/fe/star.svg
+++ b/crates/nyaterm-app/assets/icons/fe/star.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/sync.svg b/crates/nyaterm-app/assets/icons/fe/sync.svg
index 164f1392..65004930 100644
--- a/crates/nyaterm-app/assets/icons/fe/sync.svg
+++ b/crates/nyaterm-app/assets/icons/fe/sync.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/up.svg b/crates/nyaterm-app/assets/icons/fe/up.svg
index 755a7fab..b84aab84 100644
--- a/crates/nyaterm-app/assets/icons/fe/up.svg
+++ b/crates/nyaterm-app/assets/icons/fe/up.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/upload-folder.svg b/crates/nyaterm-app/assets/icons/fe/upload-folder.svg
index bc99af7e..3b85ccbe 100644
--- a/crates/nyaterm-app/assets/icons/fe/upload-folder.svg
+++ b/crates/nyaterm-app/assets/icons/fe/upload-folder.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/fe/upload.svg b/crates/nyaterm-app/assets/icons/fe/upload.svg
index c135f963..76168acf 100644
--- a/crates/nyaterm-app/assets/icons/fe/upload.svg
+++ b/crates/nyaterm-app/assets/icons/fe/upload.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/apps.svg b/crates/nyaterm-app/assets/icons/file/apps.svg
new file mode 100644
index 00000000..b0ccb6c8
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/apps.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/archive.svg b/crates/nyaterm-app/assets/icons/file/archive.svg
new file mode 100644
index 00000000..1fa6401d
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/archive.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/audio.svg b/crates/nyaterm-app/assets/icons/file/audio.svg
new file mode 100644
index 00000000..08ad00de
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/audio.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/code.svg b/crates/nyaterm-app/assets/icons/file/code.svg
new file mode 100644
index 00000000..01454236
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/code.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/data-object.svg b/crates/nyaterm-app/assets/icons/file/data-object.svg
new file mode 100644
index 00000000..8199c504
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/data-object.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/description.svg b/crates/nyaterm-app/assets/icons/file/description.svg
new file mode 100644
index 00000000..1585a6ca
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/description.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/image.svg b/crates/nyaterm-app/assets/icons/file/image.svg
new file mode 100644
index 00000000..6ccc16ad
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/image.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/movie.svg b/crates/nyaterm-app/assets/icons/file/movie.svg
new file mode 100644
index 00000000..632ecd4e
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/movie.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/pdf.svg b/crates/nyaterm-app/assets/icons/file/pdf.svg
new file mode 100644
index 00000000..e50f55f5
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/pdf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/present.svg b/crates/nyaterm-app/assets/icons/file/present.svg
new file mode 100644
index 00000000..27c21d79
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/present.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/storage.svg b/crates/nyaterm-app/assets/icons/file/storage.svg
new file mode 100644
index 00000000..8cae0c1e
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/storage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/table.svg b/crates/nyaterm-app/assets/icons/file/table.svg
new file mode 100644
index 00000000..c6491c7b
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/file/text.svg b/crates/nyaterm-app/assets/icons/file/text.svg
new file mode 100644
index 00000000..55c1c072
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/file/text.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/files.svg b/crates/nyaterm-app/assets/icons/files.svg
index fbe06236..931189a4 100644
--- a/crates/nyaterm-app/assets/icons/files.svg
+++ b/crates/nyaterm-app/assets/icons/files.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/history.svg b/crates/nyaterm-app/assets/icons/history.svg
index dc9f8c7f..f8f018c8 100644
--- a/crates/nyaterm-app/assets/icons/history.svg
+++ b/crates/nyaterm-app/assets/icons/history.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/import.svg b/crates/nyaterm-app/assets/icons/import.svg
index 3fc78350..ef421c32 100644
--- a/crates/nyaterm-app/assets/icons/import.svg
+++ b/crates/nyaterm-app/assets/icons/import.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/import/mobaxterm.svg b/crates/nyaterm-app/assets/icons/import/mobaxterm.svg
deleted file mode 100644
index e58f0b01..00000000
--- a/crates/nyaterm-app/assets/icons/import/mobaxterm.svg
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
diff --git a/crates/nyaterm-app/assets/icons/import/windterm.svg b/crates/nyaterm-app/assets/icons/import/windterm.svg
deleted file mode 100644
index b226356f..00000000
--- a/crates/nyaterm-app/assets/icons/import/windterm.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/crates/nyaterm-app/assets/icons/import/xshell.svg b/crates/nyaterm-app/assets/icons/import/xshell.svg
deleted file mode 100644
index 458747fa..00000000
--- a/crates/nyaterm-app/assets/icons/import/xshell.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/crates/nyaterm-app/assets/icons/lock.svg b/crates/nyaterm-app/assets/icons/lock.svg
index aa507a55..2154a2c5 100644
--- a/crates/nyaterm-app/assets/icons/lock.svg
+++ b/crates/nyaterm-app/assets/icons/lock.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/article.svg b/crates/nyaterm-app/assets/icons/menu/article.svg
index ebd8523a..55c1c072 100644
--- a/crates/nyaterm-app/assets/icons/menu/article.svg
+++ b/crates/nyaterm-app/assets/icons/menu/article.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/book.svg b/crates/nyaterm-app/assets/icons/menu/book.svg
index a93fa084..d238211b 100644
--- a/crates/nyaterm-app/assets/icons/menu/book.svg
+++ b/crates/nyaterm-app/assets/icons/menu/book.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/broadcast.svg b/crates/nyaterm-app/assets/icons/menu/broadcast.svg
index 7b7938f2..f4c8e262 100644
--- a/crates/nyaterm-app/assets/icons/menu/broadcast.svg
+++ b/crates/nyaterm-app/assets/icons/menu/broadcast.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/export.svg b/crates/nyaterm-app/assets/icons/menu/export.svg
index bdf5bfd8..0fe9aadd 100644
--- a/crates/nyaterm-app/assets/icons/menu/export.svg
+++ b/crates/nyaterm-app/assets/icons/menu/export.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/fit.svg b/crates/nyaterm-app/assets/icons/menu/fit.svg
index 82631c3e..e8a07e71 100644
--- a/crates/nyaterm-app/assets/icons/menu/fit.svg
+++ b/crates/nyaterm-app/assets/icons/menu/fit.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/horizontal.svg b/crates/nyaterm-app/assets/icons/menu/horizontal.svg
index 1c9fcd3f..4b7ef90b 100644
--- a/crates/nyaterm-app/assets/icons/menu/horizontal.svg
+++ b/crates/nyaterm-app/assets/icons/menu/horizontal.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/info.svg b/crates/nyaterm-app/assets/icons/menu/info.svg
index 1e8d33a2..22ef137e 100644
--- a/crates/nyaterm-app/assets/icons/menu/info.svg
+++ b/crates/nyaterm-app/assets/icons/menu/info.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/menu.svg b/crates/nyaterm-app/assets/icons/menu/menu.svg
index 667c03f4..ae7c36cb 100644
--- a/crates/nyaterm-app/assets/icons/menu/menu.svg
+++ b/crates/nyaterm-app/assets/icons/menu/menu.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/palette.svg b/crates/nyaterm-app/assets/icons/menu/palette.svg
index dc800451..a4be942f 100644
--- a/crates/nyaterm-app/assets/icons/menu/palette.svg
+++ b/crates/nyaterm-app/assets/icons/menu/palette.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/reset.svg b/crates/nyaterm-app/assets/icons/menu/reset.svg
index 5fb8c790..6c59c4da 100644
--- a/crates/nyaterm-app/assets/icons/menu/reset.svg
+++ b/crates/nyaterm-app/assets/icons/menu/reset.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/sidebar.svg b/crates/nyaterm-app/assets/icons/menu/sidebar.svg
index 6b2b520c..f11e08a7 100644
--- a/crates/nyaterm-app/assets/icons/menu/sidebar.svg
+++ b/crates/nyaterm-app/assets/icons/menu/sidebar.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/split.svg b/crates/nyaterm-app/assets/icons/menu/split.svg
index aa6ac560..60d15a00 100644
--- a/crates/nyaterm-app/assets/icons/menu/split.svg
+++ b/crates/nyaterm-app/assets/icons/menu/split.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/update.svg b/crates/nyaterm-app/assets/icons/menu/update.svg
index 5b181e53..2e02f709 100644
--- a/crates/nyaterm-app/assets/icons/menu/update.svg
+++ b/crates/nyaterm-app/assets/icons/menu/update.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/vertical.svg b/crates/nyaterm-app/assets/icons/menu/vertical.svg
index 4b704390..2e63c3c0 100644
--- a/crates/nyaterm-app/assets/icons/menu/vertical.svg
+++ b/crates/nyaterm-app/assets/icons/menu/vertical.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/zoom-in.svg b/crates/nyaterm-app/assets/icons/menu/zoom-in.svg
index 47ded04b..0c257ee8 100644
--- a/crates/nyaterm-app/assets/icons/menu/zoom-in.svg
+++ b/crates/nyaterm-app/assets/icons/menu/zoom-in.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/menu/zoom-out.svg b/crates/nyaterm-app/assets/icons/menu/zoom-out.svg
index 4ec63ec4..b511470c 100644
--- a/crates/nyaterm-app/assets/icons/menu/zoom-out.svg
+++ b/crates/nyaterm-app/assets/icons/menu/zoom-out.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/migration.svg b/crates/nyaterm-app/assets/icons/migration.svg
index 3df9aabd..75333ca5 100644
--- a/crates/nyaterm-app/assets/icons/migration.svg
+++ b/crates/nyaterm-app/assets/icons/migration.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/net/delete.svg b/crates/nyaterm-app/assets/icons/net/delete.svg
index ae9c131a..0969a4dc 100644
--- a/crates/nyaterm-app/assets/icons/net/delete.svg
+++ b/crates/nyaterm-app/assets/icons/net/delete.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/net/edit.svg b/crates/nyaterm-app/assets/icons/net/edit.svg
index 85316d93..a2841f94 100644
--- a/crates/nyaterm-app/assets/icons/net/edit.svg
+++ b/crates/nyaterm-app/assets/icons/net/edit.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/net/move.svg b/crates/nyaterm-app/assets/icons/net/move.svg
index c9887b74..11bcc0e1 100644
--- a/crates/nyaterm-app/assets/icons/net/move.svg
+++ b/crates/nyaterm-app/assets/icons/net/move.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/network.svg b/crates/nyaterm-app/assets/icons/network.svg
index d5eee3aa..55c6883b 100644
--- a/crates/nyaterm-app/assets/icons/network.svg
+++ b/crates/nyaterm-app/assets/icons/network.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/pin.svg b/crates/nyaterm-app/assets/icons/pin.svg
index f12ed5d4..568580e1 100644
--- a/crates/nyaterm-app/assets/icons/pin.svg
+++ b/crates/nyaterm-app/assets/icons/pin.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/processes.svg b/crates/nyaterm-app/assets/icons/processes.svg
index c80b387f..86d6ff68 100644
--- a/crates/nyaterm-app/assets/icons/processes.svg
+++ b/crates/nyaterm-app/assets/icons/processes.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/quote.svg b/crates/nyaterm-app/assets/icons/quote.svg
index ac2847a8..9d8fa8b4 100644
--- a/crates/nyaterm-app/assets/icons/quote.svg
+++ b/crates/nyaterm-app/assets/icons/quote.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/record.svg b/crates/nyaterm-app/assets/icons/record.svg
index 18565709..d91ccfd9 100644
--- a/crates/nyaterm-app/assets/icons/record.svg
+++ b/crates/nyaterm-app/assets/icons/record.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/resources.svg b/crates/nyaterm-app/assets/icons/resources.svg
index 2a2478fe..7caf14e7 100644
--- a/crates/nyaterm-app/assets/icons/resources.svg
+++ b/crates/nyaterm-app/assets/icons/resources.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/send.svg b/crates/nyaterm-app/assets/icons/send.svg
index d61a6fda..b6786781 100644
--- a/crates/nyaterm-app/assets/icons/send.svg
+++ b/crates/nyaterm-app/assets/icons/send.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/session/disconnect.svg b/crates/nyaterm-app/assets/icons/session/disconnect.svg
index a22580a4..0ea35879 100644
--- a/crates/nyaterm-app/assets/icons/session/disconnect.svg
+++ b/crates/nyaterm-app/assets/icons/session/disconnect.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/session/more.svg b/crates/nyaterm-app/assets/icons/session/more.svg
index 86531ca6..afb392c8 100644
--- a/crates/nyaterm-app/assets/icons/session/more.svg
+++ b/crates/nyaterm-app/assets/icons/session/more.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/session/reconnect.svg b/crates/nyaterm-app/assets/icons/session/reconnect.svg
index 8b666792..217df885 100644
--- a/crates/nyaterm-app/assets/icons/session/reconnect.svg
+++ b/crates/nyaterm-app/assets/icons/session/reconnect.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/session/record.svg b/crates/nyaterm-app/assets/icons/session/record.svg
index 23bcb539..d91ccfd9 100644
--- a/crates/nyaterm-app/assets/icons/session/record.svg
+++ b/crates/nyaterm-app/assets/icons/session/record.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/session/rename.svg b/crates/nyaterm-app/assets/icons/session/rename.svg
index f64ee8be..a4fa4478 100644
--- a/crates/nyaterm-app/assets/icons/session/rename.svg
+++ b/crates/nyaterm-app/assets/icons/session/rename.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/session/save.svg b/crates/nyaterm-app/assets/icons/session/save.svg
index 19015da7..b672e6b2 100644
--- a/crates/nyaterm-app/assets/icons/session/save.svg
+++ b/crates/nyaterm-app/assets/icons/session/save.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/session/stop.svg b/crates/nyaterm-app/assets/icons/session/stop.svg
index 5757171a..48d3f2d7 100644
--- a/crates/nyaterm-app/assets/icons/session/stop.svg
+++ b/crates/nyaterm-app/assets/icons/session/stop.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/sessions.svg b/crates/nyaterm-app/assets/icons/sessions.svg
index e9dfd234..f39e2a7e 100644
--- a/crates/nyaterm-app/assets/icons/sessions.svg
+++ b/crates/nyaterm-app/assets/icons/sessions.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/settings.svg b/crates/nyaterm-app/assets/icons/settings.svg
index 0c704d08..f255a580 100644
--- a/crates/nyaterm-app/assets/icons/settings.svg
+++ b/crates/nyaterm-app/assets/icons/settings.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/sync.svg b/crates/nyaterm-app/assets/icons/sync.svg
index 497eb6b0..0b5b51ec 100644
--- a/crates/nyaterm-app/assets/icons/sync.svg
+++ b/crates/nyaterm-app/assets/icons/sync.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/transfer/clear-all.svg b/crates/nyaterm-app/assets/icons/transfer/clear-all.svg
index 395a2960..8aab88ac 100644
--- a/crates/nyaterm-app/assets/icons/transfer/clear-all.svg
+++ b/crates/nyaterm-app/assets/icons/transfer/clear-all.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/transfer/pause.svg b/crates/nyaterm-app/assets/icons/transfer/pause.svg
index 917d6006..c20e1563 100644
--- a/crates/nyaterm-app/assets/icons/transfer/pause.svg
+++ b/crates/nyaterm-app/assets/icons/transfer/pause.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/transfer/play.svg b/crates/nyaterm-app/assets/icons/transfer/play.svg
index 564a5e05..c5e1a4c4 100644
--- a/crates/nyaterm-app/assets/icons/transfer/play.svg
+++ b/crates/nyaterm-app/assets/icons/transfer/play.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/transfer/playlist-remove.svg b/crates/nyaterm-app/assets/icons/transfer/playlist-remove.svg
index 8bb85c17..99454437 100644
--- a/crates/nyaterm-app/assets/icons/transfer/playlist-remove.svg
+++ b/crates/nyaterm-app/assets/icons/transfer/playlist-remove.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/transfer/stop.svg b/crates/nyaterm-app/assets/icons/transfer/stop.svg
index 8f245fe7..a968282c 100644
--- a/crates/nyaterm-app/assets/icons/transfer/stop.svg
+++ b/crates/nyaterm-app/assets/icons/transfer/stop.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/translation.svg b/crates/nyaterm-app/assets/icons/translation.svg
index 9e8557ef..9b806048 100644
--- a/crates/nyaterm-app/assets/icons/translation.svg
+++ b/crates/nyaterm-app/assets/icons/translation.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/view-compact.svg b/crates/nyaterm-app/assets/icons/view-compact.svg
index 8d83dc99..4beb2cd9 100644
--- a/crates/nyaterm-app/assets/icons/view-compact.svg
+++ b/crates/nyaterm-app/assets/icons/view-compact.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/view-grid.svg b/crates/nyaterm-app/assets/icons/view-grid.svg
index 5917331a..b732680d 100644
--- a/crates/nyaterm-app/assets/icons/view-grid.svg
+++ b/crates/nyaterm-app/assets/icons/view-grid.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/view-list.svg b/crates/nyaterm-app/assets/icons/view-list.svg
index 9fa9d2a5..0144a900 100644
--- a/crates/nyaterm-app/assets/icons/view-list.svg
+++ b/crates/nyaterm-app/assets/icons/view-list.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/warning.svg b/crates/nyaterm-app/assets/icons/warning.svg
new file mode 100644
index 00000000..05fbc02c
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/warning.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/window/close.svg b/crates/nyaterm-app/assets/icons/window/close.svg
index 9fea7d64..a1c97efd 100644
--- a/crates/nyaterm-app/assets/icons/window/close.svg
+++ b/crates/nyaterm-app/assets/icons/window/close.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/window/maximize.svg b/crates/nyaterm-app/assets/icons/window/maximize.svg
index 13209481..bc0f29a9 100644
--- a/crates/nyaterm-app/assets/icons/window/maximize.svg
+++ b/crates/nyaterm-app/assets/icons/window/maximize.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/window/minimize.svg b/crates/nyaterm-app/assets/icons/window/minimize.svg
index 7ff8e8f3..ff59c67a 100644
--- a/crates/nyaterm-app/assets/icons/window/minimize.svg
+++ b/crates/nyaterm-app/assets/icons/window/minimize.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/window/restore.svg b/crates/nyaterm-app/assets/icons/window/restore.svg
index 8d05edfc..efd9cebb 100644
--- a/crates/nyaterm-app/assets/icons/window/restore.svg
+++ b/crates/nyaterm-app/assets/icons/window/restore.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/assets/icons/workspace.svg b/crates/nyaterm-app/assets/icons/workspace.svg
new file mode 100644
index 00000000..16822956
--- /dev/null
+++ b/crates/nyaterm-app/assets/icons/workspace.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/crates/nyaterm-app/build.rs b/crates/nyaterm-app/build.rs
new file mode 100644
index 00000000..fadc68c4
--- /dev/null
+++ b/crates/nyaterm-app/build.rs
@@ -0,0 +1,7 @@
+fn main() {
+ // `rust_embed` expands to `include_bytes!` for the files that exist when the
+ // macro runs, so cargo only tracks those paths. Without this, adding or
+ // removing an asset leaves a stale `EmbeddedAssets` and the new icon 404s at
+ // runtime until something else forces `assets.rs` to recompile.
+ println!("cargo:rerun-if-changed=assets");
+}
diff --git a/crates/nyaterm-app/src/assets.rs b/crates/nyaterm-app/src/assets.rs
index 2c7fb12f..506c70f0 100644
--- a/crates/nyaterm-app/src/assets.rs
+++ b/crates/nyaterm-app/src/assets.rs
@@ -1,279 +1,129 @@
use std::borrow::Cow;
use gpui::{AssetSource, Result, SharedString};
+use rust_embed::RustEmbed;
+
+/// Bundled UI assets, addressed by the same paths the desktop crate passes to
+/// `svg()` and `img()`.
+///
+/// The directory prefix encodes how an asset is meant to be painted, because the
+/// two GPUI elements are not interchangeable:
+///
+/// * `icons/**` — monochrome. `svg()` rasterizes to an alpha mask and keeps only
+/// the coverage channel, so the file's own paints are discarded and the color
+/// comes entirely from `.text_color()`.
+/// * `color/**` — full color. `img()` keeps the rasterized pixels, and the asset
+/// cannot be tinted.
+///
+/// Invariant: nothing under `icons/` may contain a raster `` payload.
+/// GPUI builds resvg without the `raster-images` feature, so embedded bitmaps are
+/// skipped silently — the icon renders as nothing at all rather than failing.
+/// `color/**` carries real `.png` files instead of base64-in-SVG for that reason.
+#[derive(RustEmbed)]
+#[folder = "assets/"]
+#[include = "icons/**/*.svg"]
+#[include = "color/**/*.svg"]
+#[include = "color/**/*.png"]
+pub struct EmbeddedAssets;
/// Bundled SVG assets for the native shell (activity icons, logo, connection icons).
pub struct NyaTermAssets;
-const ICON_FILES: &[&str] = &[
- "icons/logo.svg",
- "icons/files.svg",
- "icons/network.svg",
- "icons/auth.svg",
- "icons/sync.svg",
- "icons/settings.svg",
- "icons/connections.svg",
- "icons/ai.svg",
- "icons/sessions.svg",
- "icons/history.svg",
- "icons/resources.svg",
- "icons/processes.svg",
- "icons/docker.svg",
- "icons/commands.svg",
- "icons/send.svg",
- "icons/record.svg",
- "icons/lock.svg",
- "icons/chevron-down.svg",
- "icons/chevron-up.svg",
- "icons/check.svg",
- "icons/copy.svg",
- "icons/quote.svg",
- "icons/eye.svg",
- "icons/import.svg",
- "icons/import/xshell.svg",
- "icons/import/mobaxterm.svg",
- "icons/import/windterm.svg",
- "icons/pin.svg",
- "icons/view-compact.svg",
- "icons/view-grid.svg",
- "icons/view-list.svg",
- "icons/window/minimize.svg",
- "icons/window/maximize.svg",
- "icons/window/restore.svg",
- "icons/window/close.svg",
- "icons/session/more.svg",
- "icons/session/save.svg",
- "icons/session/stop.svg",
- "icons/session/record.svg",
- "icons/session/disconnect.svg",
- "icons/session/reconnect.svg",
- "icons/session/rename.svg",
- "icons/translation.svg",
- "icons/migration.svg",
- "icons/conn/server.svg",
- "icons/conn/terminal.svg",
- "icons/conn/telnet.svg",
- "icons/conn/serial.svg",
- "icons/conn/linux.svg",
- "icons/conn/ubuntu.svg",
- "icons/conn/debian.svg",
- "icons/conn/apple.svg",
- "icons/conn/windows.svg",
- "icons/conn/docker.svg",
- "icons/conn/python.svg",
- "icons/conn/github.svg",
- "icons/conn/folder.svg",
- "icons/conn/file.svg",
- "icons/conn/connect.svg",
- "icons/conn/symlink.svg",
- "icons/net/move.svg",
- "icons/net/delete.svg",
- "icons/net/edit.svg",
- "icons/conn/sort.svg",
- "icons/conn/more.svg",
- "icons/conn/flash.svg",
- "icons/conn/add.svg",
- "icons/fe/new-file.svg",
- "icons/fe/new-folder.svg",
- "icons/fe/upload.svg",
- "icons/fe/upload-folder.svg",
- "icons/fe/download.svg",
- "icons/fe/delete.svg",
- "icons/fe/up.svg",
- "icons/fe/refresh.svg",
- "icons/fe/search.svg",
- "icons/fe/back.svg",
- "icons/fe/forward.svg",
- "icons/fe/star.svg",
- "icons/fe/star-outline.svg",
- "icons/fe/sync.svg",
- "icons/fe/paste.svg",
- "icons/fe/bookmark-remove.svg",
- "icons/transfer/clear-all.svg",
- "icons/transfer/pause.svg",
- "icons/transfer/play.svg",
- "icons/transfer/playlist-remove.svg",
- "icons/transfer/stop.svg",
- "icons/menu/article.svg",
- "icons/menu/book.svg",
- "icons/menu/broadcast.svg",
- "icons/menu/export.svg",
- "icons/menu/fit.svg",
- "icons/menu/horizontal.svg",
- "icons/menu/info.svg",
- "icons/menu/menu.svg",
- "icons/menu/palette.svg",
- "icons/menu/reset.svg",
- "icons/menu/sidebar.svg",
- "icons/menu/split.svg",
- "icons/menu/update.svg",
- "icons/menu/vertical.svg",
- "icons/menu/zoom-in.svg",
- "icons/menu/zoom-out.svg",
- "icons/ai/history.svg",
- "icons/ai/settings.svg",
- "icons/ai/new.svg",
- "icons/ai/send.svg",
- "icons/ai/stop.svg",
- "icons/ai/search.svg",
- "icons/ai/exec-confirm.svg",
- "icons/ai/exec-smart.svg",
- "icons/ai/exec-auto.svg",
-];
-
-fn icon_bytes(path: &str) -> Option<&'static [u8]> {
- match path {
- "icons/logo.svg" => Some(include_bytes!("../assets/icons/logo.svg")),
- "icons/files.svg" => Some(include_bytes!("../assets/icons/files.svg")),
- "icons/network.svg" => Some(include_bytes!("../assets/icons/network.svg")),
- "icons/auth.svg" => Some(include_bytes!("../assets/icons/auth.svg")),
- "icons/sync.svg" => Some(include_bytes!("../assets/icons/sync.svg")),
- "icons/settings.svg" => Some(include_bytes!("../assets/icons/settings.svg")),
- "icons/connections.svg" => Some(include_bytes!("../assets/icons/connections.svg")),
- "icons/ai.svg" => Some(include_bytes!("../assets/icons/ai.svg")),
- "icons/sessions.svg" => Some(include_bytes!("../assets/icons/sessions.svg")),
- "icons/history.svg" => Some(include_bytes!("../assets/icons/history.svg")),
- "icons/resources.svg" => Some(include_bytes!("../assets/icons/resources.svg")),
- "icons/processes.svg" => Some(include_bytes!("../assets/icons/processes.svg")),
- "icons/docker.svg" => Some(include_bytes!("../assets/icons/docker.svg")),
- "icons/commands.svg" => Some(include_bytes!("../assets/icons/commands.svg")),
- "icons/send.svg" => Some(include_bytes!("../assets/icons/send.svg")),
- "icons/record.svg" => Some(include_bytes!("../assets/icons/record.svg")),
- "icons/lock.svg" => Some(include_bytes!("../assets/icons/lock.svg")),
- "icons/chevron-down.svg" => Some(include_bytes!("../assets/icons/chevron-down.svg")),
- "icons/chevron-up.svg" => Some(include_bytes!("../assets/icons/chevron-up.svg")),
- "icons/check.svg" => Some(include_bytes!("../assets/icons/check.svg")),
- "icons/copy.svg" => Some(include_bytes!("../assets/icons/copy.svg")),
- "icons/quote.svg" => Some(include_bytes!("../assets/icons/quote.svg")),
- "icons/eye.svg" => Some(include_bytes!("../assets/icons/eye.svg")),
- "icons/import.svg" => Some(include_bytes!("../assets/icons/import.svg")),
- "icons/import/xshell.svg" => Some(include_bytes!("../assets/icons/import/xshell.svg")),
- "icons/import/mobaxterm.svg" => {
- Some(include_bytes!("../assets/icons/import/mobaxterm.svg"))
- }
- "icons/import/windterm.svg" => Some(include_bytes!("../assets/icons/import/windterm.svg")),
- "icons/pin.svg" => Some(include_bytes!("../assets/icons/pin.svg")),
- "icons/view-compact.svg" => Some(include_bytes!("../assets/icons/view-compact.svg")),
- "icons/view-grid.svg" => Some(include_bytes!("../assets/icons/view-grid.svg")),
- "icons/view-list.svg" => Some(include_bytes!("../assets/icons/view-list.svg")),
- "icons/window/minimize.svg" => Some(include_bytes!("../assets/icons/window/minimize.svg")),
- "icons/window/maximize.svg" => Some(include_bytes!("../assets/icons/window/maximize.svg")),
- "icons/window/restore.svg" => Some(include_bytes!("../assets/icons/window/restore.svg")),
- "icons/window/close.svg" => Some(include_bytes!("../assets/icons/window/close.svg")),
- "icons/session/more.svg" => Some(include_bytes!("../assets/icons/session/more.svg")),
- "icons/session/save.svg" => Some(include_bytes!("../assets/icons/session/save.svg")),
- "icons/session/stop.svg" => Some(include_bytes!("../assets/icons/session/stop.svg")),
- "icons/session/record.svg" => Some(include_bytes!("../assets/icons/session/record.svg")),
- "icons/session/disconnect.svg" => {
- Some(include_bytes!("../assets/icons/session/disconnect.svg"))
- }
- "icons/session/reconnect.svg" => {
- Some(include_bytes!("../assets/icons/session/reconnect.svg"))
- }
- "icons/session/rename.svg" => Some(include_bytes!("../assets/icons/session/rename.svg")),
- "icons/translation.svg" => Some(include_bytes!("../assets/icons/translation.svg")),
- "icons/migration.svg" => Some(include_bytes!("../assets/icons/migration.svg")),
- "icons/conn/server.svg" => Some(include_bytes!("../assets/icons/conn/server.svg")),
- "icons/conn/terminal.svg" => Some(include_bytes!("../assets/icons/conn/terminal.svg")),
- "icons/conn/telnet.svg" => Some(include_bytes!("../assets/icons/conn/telnet.svg")),
- "icons/conn/serial.svg" => Some(include_bytes!("../assets/icons/conn/serial.svg")),
- "icons/conn/linux.svg" => Some(include_bytes!("../assets/icons/conn/linux.svg")),
- "icons/conn/ubuntu.svg" => Some(include_bytes!("../assets/icons/conn/ubuntu.svg")),
- "icons/conn/debian.svg" => Some(include_bytes!("../assets/icons/conn/debian.svg")),
- "icons/conn/apple.svg" => Some(include_bytes!("../assets/icons/conn/apple.svg")),
- "icons/conn/windows.svg" => Some(include_bytes!("../assets/icons/conn/windows.svg")),
- "icons/conn/docker.svg" => Some(include_bytes!("../assets/icons/conn/docker.svg")),
- "icons/conn/python.svg" => Some(include_bytes!("../assets/icons/conn/python.svg")),
- "icons/conn/github.svg" => Some(include_bytes!("../assets/icons/conn/github.svg")),
- "icons/conn/folder.svg" => Some(include_bytes!("../assets/icons/conn/folder.svg")),
- "icons/conn/file.svg" => Some(include_bytes!("../assets/icons/conn/file.svg")),
- "icons/conn/connect.svg" => Some(include_bytes!("../assets/icons/conn/connect.svg")),
- "icons/conn/symlink.svg" => Some(include_bytes!("../assets/icons/conn/symlink.svg")),
- "icons/net/move.svg" => Some(include_bytes!("../assets/icons/net/move.svg")),
- "icons/net/delete.svg" => Some(include_bytes!("../assets/icons/net/delete.svg")),
- "icons/net/edit.svg" => Some(include_bytes!("../assets/icons/net/edit.svg")),
- "icons/conn/sort.svg" => Some(include_bytes!("../assets/icons/conn/sort.svg")),
- "icons/conn/more.svg" => Some(include_bytes!("../assets/icons/conn/more.svg")),
- "icons/conn/flash.svg" => Some(include_bytes!("../assets/icons/conn/flash.svg")),
- "icons/conn/add.svg" => Some(include_bytes!("../assets/icons/conn/add.svg")),
- "icons/fe/new-file.svg" => Some(include_bytes!("../assets/icons/fe/new-file.svg")),
- "icons/fe/new-folder.svg" => Some(include_bytes!("../assets/icons/fe/new-folder.svg")),
- "icons/fe/upload.svg" => Some(include_bytes!("../assets/icons/fe/upload.svg")),
- "icons/fe/upload-folder.svg" => {
- Some(include_bytes!("../assets/icons/fe/upload-folder.svg"))
- }
- "icons/fe/download.svg" => Some(include_bytes!("../assets/icons/fe/download.svg")),
- "icons/fe/delete.svg" => Some(include_bytes!("../assets/icons/fe/delete.svg")),
- "icons/fe/up.svg" => Some(include_bytes!("../assets/icons/fe/up.svg")),
- "icons/fe/refresh.svg" => Some(include_bytes!("../assets/icons/fe/refresh.svg")),
- "icons/fe/search.svg" => Some(include_bytes!("../assets/icons/fe/search.svg")),
- "icons/fe/back.svg" => Some(include_bytes!("../assets/icons/fe/back.svg")),
- "icons/fe/forward.svg" => Some(include_bytes!("../assets/icons/fe/forward.svg")),
- "icons/fe/star.svg" => Some(include_bytes!("../assets/icons/fe/star.svg")),
- "icons/fe/star-outline.svg" => Some(include_bytes!("../assets/icons/fe/star-outline.svg")),
- "icons/fe/sync.svg" => Some(include_bytes!("../assets/icons/fe/sync.svg")),
- "icons/fe/paste.svg" => Some(include_bytes!("../assets/icons/fe/paste.svg")),
- "icons/fe/bookmark-remove.svg" => {
- Some(include_bytes!("../assets/icons/fe/bookmark-remove.svg"))
- }
- "icons/transfer/clear-all.svg" => {
- Some(include_bytes!("../assets/icons/transfer/clear-all.svg"))
- }
- "icons/transfer/pause.svg" => Some(include_bytes!("../assets/icons/transfer/pause.svg")),
- "icons/transfer/play.svg" => Some(include_bytes!("../assets/icons/transfer/play.svg")),
- "icons/transfer/playlist-remove.svg" => Some(include_bytes!(
- "../assets/icons/transfer/playlist-remove.svg"
- )),
- "icons/transfer/stop.svg" => Some(include_bytes!("../assets/icons/transfer/stop.svg")),
- "icons/menu/article.svg" => Some(include_bytes!("../assets/icons/menu/article.svg")),
- "icons/menu/book.svg" => Some(include_bytes!("../assets/icons/menu/book.svg")),
- "icons/menu/broadcast.svg" => Some(include_bytes!("../assets/icons/menu/broadcast.svg")),
- "icons/menu/export.svg" => Some(include_bytes!("../assets/icons/menu/export.svg")),
- "icons/menu/fit.svg" => Some(include_bytes!("../assets/icons/menu/fit.svg")),
- "icons/menu/horizontal.svg" => Some(include_bytes!("../assets/icons/menu/horizontal.svg")),
- "icons/menu/info.svg" => Some(include_bytes!("../assets/icons/menu/info.svg")),
- "icons/menu/menu.svg" => Some(include_bytes!("../assets/icons/menu/menu.svg")),
- "icons/menu/palette.svg" => Some(include_bytes!("../assets/icons/menu/palette.svg")),
- "icons/menu/reset.svg" => Some(include_bytes!("../assets/icons/menu/reset.svg")),
- "icons/menu/sidebar.svg" => Some(include_bytes!("../assets/icons/menu/sidebar.svg")),
- "icons/menu/split.svg" => Some(include_bytes!("../assets/icons/menu/split.svg")),
- "icons/menu/update.svg" => Some(include_bytes!("../assets/icons/menu/update.svg")),
- "icons/menu/vertical.svg" => Some(include_bytes!("../assets/icons/menu/vertical.svg")),
- "icons/menu/zoom-in.svg" => Some(include_bytes!("../assets/icons/menu/zoom-in.svg")),
- "icons/menu/zoom-out.svg" => Some(include_bytes!("../assets/icons/menu/zoom-out.svg")),
- "icons/ai/history.svg" => Some(include_bytes!("../assets/icons/ai/history.svg")),
- "icons/ai/settings.svg" => Some(include_bytes!("../assets/icons/ai/settings.svg")),
- "icons/ai/new.svg" => Some(include_bytes!("../assets/icons/ai/new.svg")),
- "icons/ai/send.svg" => Some(include_bytes!("../assets/icons/ai/send.svg")),
- "icons/ai/stop.svg" => Some(include_bytes!("../assets/icons/ai/stop.svg")),
- "icons/ai/search.svg" => Some(include_bytes!("../assets/icons/ai/search.svg")),
- "icons/ai/exec-confirm.svg" => Some(include_bytes!("../assets/icons/ai/exec-confirm.svg")),
- "icons/ai/exec-smart.svg" => Some(include_bytes!("../assets/icons/ai/exec-smart.svg")),
- "icons/ai/exec-auto.svg" => Some(include_bytes!("../assets/icons/ai/exec-auto.svg")),
- _ => None,
- }
-}
-
impl AssetSource for NyaTermAssets {
fn load(&self, path: &str) -> Result