Releases: AkarinLiu/smtc2web
Releases · AkarinLiu/smtc2web
v0.2.3
v0.2.2
v0.2.0
v0.1.9-nightly2
Full Changelog: v0.1.9-nightly1...v0.1.9-nightly2
v0.1.9-nightly1
Full Changelog: v0.1.8...v0.1.9-nightly1
v0.1.8
v0.1.7
更新日志
Breaking Change
- 支持自定义端口
- 将单个
main.rs代码拆分成console.rs和config.rs - 配置文件存放在
%appdata%\smtc2web\config.toml - 规范静态资源依赖存放路径
v0.1.6
更新日志
版本 0.1.6 - 优化更新逻辑
🚀 主要改进
1. 智能更新逻辑优化
-
后端更新机制:
- 新增播放状态检测 (
is_playing字段) - 实现智能更新策略,避免不必要的重复更新
- 添加时间戳机制,确保强制更新(5秒间隔)
- 动态调整轮询间隔:播放时100ms,暂停时200ms
- 新增播放状态检测 (
-
前端更新优化:
- 实现数据变化检测,避免重复渲染
- 动态调整轮询频率:播放时100ms,暂停时200ms
- 错误处理优化,异常时使用250ms默认间隔
2. 数据结构增强
- Song 结构体:
- 新增
is_playing: bool字段,标识当前播放状态 - 新增
last_update: u64字段,用于时间戳管理 - 派生
PartialEqtrait,支持结构体比较
- 新增
3. 错误处理改进
- 增强了 Windows API 调用的错误处理
- 添加了会话管理器获取失败的处理逻辑
- 改进了异步操作的错误处理模式
4. 性能优化
- 减少了不必要的状态写入操作
- 优化了轮询机制,降低CPU使用率
- 实现了基于播放状态的动态更新频率
📝 文档更新
- README.md:
- 完善了编译依赖说明
- 详细列出了主要依赖包及其版本
- 分离了Windows特定依赖的说明
- 优化了文档结构和可读性
🔧 技术细节
后端变更 (src/main.rs)
// 新增字段
#[derive(Default, Clone, Serialize, PartialEq)]
struct Song {
// ... 原有字段
is_playing: bool,
last_update: u64,
}
// 智能更新逻辑
let should_update = if current_song.is_playing != last_song.is_playing {
true
} else if current_song.position != last_position {
true
} else if !current_song.is_playing && no_change_count < 10 {
no_change_count += 1;
true
} else {
timestamp.saturating_sub(last_song.last_update) > 5
};前端变更 (frontend/main.js)
// 数据变化检测
if (JSON.stringify(data) !== JSON.stringify(lastData)) {
Object.assign(info, {
...data,
pct: data.pct ?? 0,
});
lastData = data;
}
// 动态轮询间隔
const pollInterval = info.is_playing ? 100 : 200;
setTimeout(poll, pollInterval);📦 版本信息
- 版本号:从 0.1.5 升级到 0.1.6
- 更新时间:2025年9月10日
- 提交哈希:
18920652694b2a849a59b929653613877408aea2
💡 优化效果
- 显著减少了不必要的网络请求和状态更新
- 提高了播放状态响应的实时性
- 降低了系统资源占用
- 增强了应用的稳定性和可靠性
注意:此版本主要专注于性能优化和用户体验改进,建议所有用户升级到最新版本以获得更好的使用体验。
Full Changelog: v0.1.5...v0.1.6
v0.1.5
Full Changelog: v0.1.3...v0.1.5
v0.1.3
Full Changelog: v0.1.2...v0.1.3