feat: merge upstream master - version 4.94

Merge upstream PiKVM master branch updates:

- Bump version from 4.93 to 4.94
- HID: improved jiggler pattern for better compatibility
- Streamer: major refactoring for improved performance and maintainability
- Prometheus: tidying GPIO channel name formatting
- Web: added __gpio-label class for custom styling
- HID: customizable /api/hid/print delay configuration
- ATX: independent power/reset regions for better control
- OLED: added --fill option for display testing
- Web: improved keyboard handling in modal dialogs
- Web: enhanced login error messages
- Switch: added heartbeat functionality
- Web: mouse touch code simplification and refactoring
- Configs: use systemd-networkd-wait-online --any by default
- PKGBUILD: use cp -r to install systemd units properly
- Various bug fixes and performance improvements
This commit is contained in:
mofeng-git
2025-08-21 11:21:41 +08:00
205 changed files with 9359 additions and 4653 deletions

View File

@@ -2,46 +2,52 @@ mixin about_tab(name, title, i18nid, checked=false)
- let button_id = `about-tab-${name}-button`
input(checked=checked type="radio" name="about-tab-button", id=button_id)
label(for=button_id i18n=i18nid) #{title}
div(class="tab")
div(id=`about-${name}` class="code")
.tab
.code(id=`about-${name}`)
if block
block
else
span(class="code-comment") No data
span.code-comment No data
div(id="about-window" class="window")
div(class="window-header")
div(class="window-grab" i18n="kvm_text1") About
button(class="window-button-close") #[b ×]
div(id="about")
.window#about-window(data-show-centered)
.window-header
.window-grab(i18n="kvm_text1") About
.window-buttons
button.window-button-original •
button.window-button-close #[b ×]
#about
table
tr
td(class="logo")
td.logo
a(href="https://pikvm.org" target="_blank")
img(class="svg-gray" src=`${svg_dir}/logo.svg` alt="PiKVM" height="40")
img.svg-gray(src=`${svg_dir}/logo.svg` alt="PiKVM" height="40")
td
table
tr #[td(colspan="2" class="title" i18n="index_title") The Open Source KVM over IP]
tr
td(colspan="2" class="copyright" i18n="copyright")
td.title(colspan="2" i18n="index_title")
| The Open Source KVM over IP
tr
td.copyright(colspan="2" i18n="copyright")
| Copyright © 2018-2024 #[a(target="_blank" href="mailto:mdevaev@gmail.com") Maxim Devaev]
br
div(class="tabs-box")
+about_tab("meta", "Meta", "meta", true)
.tabs-box
+about_tab("version", "Version", "version", true)
+about_tab("hardware", "Hardware", "hardware")
+about_tab("meta", "Meta", "meta")
div
span(class="code-comment")
| // You can get this JSON using handle #[a(target="_blank" href="/api/info?fields=meta") /api/info?fields=meta]#[br]
span.code-comment
| // You can get this JSON using handle
| #[a(target="_blank" href=`${root_prefix}api/info?fields=meta`) /api/info?fields=meta]#[br]
| // In the standard configuration this data#[br]
| // is specified in the file /etc/kvmd/meta.yaml
br
pre(id="kvmd-meta-json")
| No data
+about_tab("hardware", "Hardware", "hardware")
+about_tab("version", "Version", "version")
pre#kvmd-meta-json No data
+about_tab("thanks", "Thanks", "thanks")
span(class="code-comment" i18n="kvm_text2")
span.code-comment( i18n="kvm_text2")
| // These kind people donated money to the PiKVM project#[br]
| // and supported the work on it. We are very grateful#[br]
| // for their help, and memorializing their names#[br]
@@ -50,7 +56,7 @@ div(id="about-window" class="window")
| // you can donate on #[a(target="_blank" href="https://www.patreon.com/pikvm") Patreon]
| or #[a(target="_blank" href="https://paypal.me/pikvm") Paypal].
br
p(class="text credits")
p.text.credits
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12") One-KVM Project
|   |  
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13") One-KVM Documentation