Dev/mihomo control (#339)

* Add Mihomo Control plugin

Monitor and control a Mihomo (Clash Meta) external controller from the
bar: live traffic graph, proxy mode, proxy-group management with latency
tests, and core restart. Works locally (127.0.0.1) or remotely via
host/port/secret settings.

* Add Chinese (Simplified) translation

* Add test-all latency button

Adds a Test all button next to the Proxy groups heading that runs latency
tests on every group sequentially, with a single summary notification.

* Unify traffic and proxy groups section styles

Give both sections the same card look: muted medium-weight heading on the
left, secondary info on the right, and proxy-group cards restyled as
bordered sub-cards inside the section.

* Polish proxy group cards

Show the selected proxy next to the bold group name (ECS > ecs-proxy),
move the expand chevron to the type/members row where the list opens,
and drop the list glyph from the card header.

* Decouple heights of paired group cards

Keep each card in a two-column row at its natural height instead of
stretching the neighbor when one is expanded.

* Use thumbnail generator to generate thumbnail

* mihomo-control: theme-aware panel colors

Use theme roles for traffic and latency colors so they stay readable in
light mode, and keep the status chip's green/amber/red identity with
darker light-mode shades.
This commit is contained in:
MA Dingjie
2026-08-12 09:34:17 -04:00
committed by GitHub
parent 86e04099bc
commit 222fec4875
13 changed files with 1601 additions and 0 deletions
+94
View File
@@ -0,0 +1,94 @@
# Mihomo Control — monitor and control a Mihomo (Clash Meta) external
# controller: live traffic, proxy mode, group selection, latency tests and
# active connections, locally (127.0.0.1) or on a remote host.
#
# The service entry owns every HTTP request and publishes "mihomo.*" state;
# the widget, panel and shortcut are pure subscribers and send commands
# through the "mihomo.command" state channel.
id = "mdj2812/mihomo-control"
name = "Mihomo Control"
version = "0.1.0"
plugin_api = 9
author = "mdj2812"
license = "MIT"
icon = "cat"
description = "Monitor and control Mihomo (Clash Meta) — live traffic, proxy mode, group selection, and connections, local or remote."
tags = ["network", "indicator", "utility", "bar", "panel", "service", "shortcut"]
dependencies = []
# ── Shared settings ──────────────────────────────────────────────────────────
[[setting]]
key = "host"
type = "string"
default = "127.0.0.1"
label_key = "settings.host.label"
description_key = "settings.host.description"
[[setting]]
key = "port"
type = "string"
default = "9090"
label_key = "settings.port.label"
description_key = "settings.port.description"
[[setting]]
key = "secret"
type = "string"
default = ""
label_key = "settings.secret.label"
description_key = "settings.secret.description"
[[setting]]
key = "use_https"
type = "bool"
default = false
advanced = true
label_key = "settings.use_https.label"
description_key = "settings.use_https.description"
[[setting]]
key = "allow_insecure_tls"
type = "bool"
default = false
advanced = true
label_key = "settings.allow_insecure_tls.label"
description_key = "settings.allow_insecure_tls.description"
[[setting]]
key = "test_url"
type = "string"
default = "https://www.gstatic.com/generate_204"
label_key = "settings.test_url.label"
description_key = "settings.test_url.description"
[[setting]]
key = "refresh_interval"
type = "int"
default = 2
min = 1
max = 60
advanced = true
label_key = "settings.refresh_interval.label"
description_key = "settings.refresh_interval.description"
# ── Entries ──────────────────────────────────────────────────────────────────
[[widget]]
id = "widget"
entry = "widget.luau"
[[panel]]
id = "panel"
entry = "panel.luau"
width = 560
height = 720
placement = "floating"
position = "center"
[[service]]
id = "service"
entry = "service.luau"
[[shortcut]]
id = "mode"
entry = "shortcut.luau"