diff --git a/patch_v2/meowpanel/web/meowpanel.js b/patch_v2/meowpanel/web/meowpanel.js
index 8331991..84afe4b 100644
--- a/patch_v2/meowpanel/web/meowpanel.js
+++ b/patch_v2/meowpanel/web/meowpanel.js
@@ -755,6 +755,38 @@
}
return homeCard('WiFi / DNS', '
' + rows + '
');
}
+ /* 蓝牙状态卡(M6.30):数据来自 overview 的 net.bt(netmgrd status pass-through)。
+ * 展示:蓝牙开关/已连接/已配对/本机地址/A2DP 编解码·采样率;输出目标(DAC|蓝牙)与音量控制(avrcp/dac)
+ * 依赖面板后端透传 audiod 的 target/volctl 键——当前 audio_fill 未透传,缺失时优雅降级为「—」(不谎报)。 */
+ function btCard() {
+ const nd = homeData && homeData.net;
+ const ad = homeData && homeData.audio;
+ let bt = nd && nd.bt;
+ if (!bt || !isAvail(nd)) return homeCard('蓝牙', homeUnavailable());
+ if (bt.available === false) return homeCard('蓝牙', '无蓝牙
');
+ const on = !!bt.powered;
+ const conn = (bt.connected != null) ? bt.connected : 0;
+ let rows = '';
+ rows += homeKv('蓝牙', on ? '已开启' : '已关闭');
+ rows += homeKv('连接', conn > 0 ? ('已连接 ' + esc(conn) + '') : '未连接');
+ rows += homeKv('已配对', bt.paired != null ? esc(bt.paired) : '—');
+ if (bt.address) rows += homeKv('本机地址', esc(bt.address));
+ if (conn > 0) {
+ rows += homeKv('A2DP 编解码', bt.a2dp_codec ? esc(bt.a2dp_codec) : '—');
+ rows += homeKv('采样率', bt.a2dp_rate ? esc(bt.a2dp_rate) : '—');
+ } else {
+ rows += homeKv('A2DP 编解码', '—');
+ }
+ const target = ad && ad.target != null ? ad.target : null;
+ const volctl = ad && ad.volctl != null ? ad.volctl : null;
+ const targetName = target === 'bt' ? '蓝牙' : (target === 'dac' ? 'DAC' : null);
+ rows += homeKv('输出目标', targetName ? ('' + esc(targetName) + '') : '—');
+ rows += homeKv('音量控制', volctl ? esc(volctl) : '—');
+ if (ad && ad.vol != null && ad.vol >= 0) {
+ rows += homeKv('音量', esc(ad.vol) + ' %' + (volctl === 'avrcp' ? ' (AVRCP)' : ''));
+ }
+ return homeCard('蓝牙', '' + rows + '
');
+ }
function healthCard() {
const ams = homeData && homeData.ams;
const svcd = homeData && homeData.svcd;
@@ -840,7 +872,7 @@
if (!homeData) { body.innerHTML = '加载总览…
'; return; }
let h = powerSummaryCard() + eventsBar(); // 摘要条(功耗/事件)置顶
h += '' +
- deviceCard() + batteryCard() + audioCard() + netCard() + healthCard() + storageCard() + perfCard() +
+ deviceCard() + batteryCard() + audioCard() + netCard() + btCard() + healthCard() + storageCard() + perfCard() +
'
';
body.innerHTML = h;
const ad = homeData.audio;
diff --git a/scripts/build/fw_content.conf b/scripts/build/fw_content.conf
index e818a40..1763985 100644
--- a/scripts/build/fw_content.conf
+++ b/scripts/build/fw_content.conf
@@ -28,7 +28,7 @@
# ---- 用户态/服务守护二进制(usr/bin,全部 chmod 755 静态 MIPS)----
patch_v2/bootmenu/meow_bootmenu|/usr/bin/meow_bootmenu|8de51144538d698c3ff82ee6651b8b1a|引导选单 M6.25(开机菜单/第二屏亮度按用户设置恢复:显示前读 settings.conf 写回,方案A)
-patch_v2/meow_launcherd/meow_launcherd|/usr/bin/meow_launcherd|505f91c7a728fe1a6b1c8b7d753a471b|M6.29 播放页任意右滑返回桌面(patch4手势回退修正)
+patch_v2/meow_launcherd/meow_launcherd|/usr/bin/meow_launcherd|bd09fc3018b7825cd3dc27739eba61d5|M6.30 播放页右滑返回+批3歌词数据源+批4双页歌词+批5封面双色取色+蓝牙P1子页
patch_v2/meow_watchdog/meow_watchdog|/usr/bin/meow_watchdog|34ddbf0275526eaf9be988134845c3af|应用看门狗 M6.23(亮屏亮度按用户设置 display.brightness 恢复,修 panel ON 固定60跳变)
patch_v2/meow_svcd/meow_svcd|/usr/bin/meow_svcd|605646c4cc93f2baf29071ea6bc870ea|服务管理器 M2.77(+崩溃上报 meow_crash agent-187)
mips-repo/bins/meow_mdns/bin/meow_mdns|/usr/bin/meow_mdns|d6b0151bda26768f19952dae1342610d|mDNS 应答器 M2.78(启动竞态+换IP重检 agent-194)
@@ -38,8 +38,8 @@ patch_v2/meow_svc_power/meow_svc_power|/usr/bin/meow_svc_power|39ae3aa255695a97f
patch_v2/meow_verify/meow_verify|/usr/bin/meow_verify|6c2e8ed24aebe5caf41e7aed391312d5|II期验签 2B(多公钥+v2签名块 agent-221)
patch_v2/meow_crash/meow_crash|/usr/bin/meow_crash|f02c4f45099157dc388b3d10b443aa57|系统级崩溃捕获 (agent-187) + log升级: 清理前缀扩 perf_/hang_ 承接1GB纪律 (337)
patch_v2/meow_svc_perf/meow_svc_perf|/usr/bin/meow_svc_perf|566f0615698efe32c1f90a9c62f09148|性能专项服务 M2.75 + log升级(337:卡死快照+perf基线) + OOM治理C(348:Cached/Dirty监控降载, /tmp/meow_cachegov_c.state单点)
-patch_v2/meow_audiod/meow_audiod|/usr/bin/meow_audiod|b122c9b81880b00f705bca30e42f3d58|独占音频守护 M6.5(M6.0 全量+315 孤儿会话两段式回收:客户端崩溃/OOM 杀后 STATE 回干净无流基线)
-patch_v2/meow_audiod/meow_audio|/usr/bin/meow_audio|891ab26475ef9e9931bf9147d265dce4|audiod 用户侧 CLI M2.97(+monitor 实时电平表/文本电平条;status 补 rms/peak)
+patch_v2/meow_audiod/meow_audiod|/usr/bin/meow_audiod|37de4637a8183a672beff59ce4f3807d|独占音频守护 M6.30(M6.5 315回收+蓝牙P2 OUT_BT输出目标+libasound直连pcm.bluealsa glibc-dynamic脱离dlopen)
+patch_v2/meow_audiod/meow_audio|/usr/bin/meow_audio|7a9cd32fbd6400564a7f98230f95c63d|audiod 用户侧 CLI M6.30(+蓝牙P2 audio_output/OUT_BT codec 展示;monitor 实时电平表/文本电平条;status 补 rms/peak)
patch_v2/meow_powermgr/meow_powermgr|/usr/bin/meow_powermgr|1ef2f8afc07acc7aa09dee9f7149aba8|功耗管理专项服务期2 M6.1(期1+history/top/events+mp2731 current_now 实测充电功率+WiFi 未关联档/BT rfkill 细化+系数路径 /data/meow/powermgr/;IPC 0xD0-D7)
patch_v2/meow_powermgr/meow_powermgr|/usr/bin/meow_power|1ef2f8afc07acc7aa09dee9f7149aba8|meow_powermgr 的 CLI 形态(同二进制双形态,argv[0]=meow_power 即 CLI:status/estimate/model/history/top/events,policy 期3桩)
patch_v2/meow_netmgrd/meow_netmgrd|/usr/bin/meow_netmgrd|9c345b2e43138bc0299c749ce0f6bb5d|网络管理服务期6 M6.28(蓝牙P1 BT_CTL权威收口:hcitool con判连接/paired-devices补名/a2dp详情/connect-disconnect-pair-unpair-scan)