Skip to content

Releases: TATboy210/simple-player

Simple Player v0.0.8

Choose a tag to compare

@TATboy210 TATboy210 released this 23 Sep 15:09

Simple Player v0.0.8


🇨🇳 中文

v0.0.8 · 播放列表进化 · 设置面板重构 · 音频与性能全面打磨

这一版不是简单增加几个按钮,而是对播放列表、设置面板、音频系统、玻璃 UI、Windows 原生交互和性能进行了系统性打磨。

播放列表

  • 新增批量删除与多选模式。
  • 支持全选、反选。
  • 删除操作增加确认条,明确提示不会删除本地文件。
  • 单条移除同样需要确认。
  • 删除正在播放的条目时自动处理播放队列。
  • 删除条目后同步清理对应播放断点与缩略图缓存。
  • 批量选中使用危险色边框,与播放中的蓝色高亮区分。
  • 固定边框占位,避免选中状态导致列表跳动。
  • 右键菜单改为统一的玻璃 UI。

缩略图

  • P-Thumb 缩略图系统全面升级。
  • 缓存身份加入路径、文件大小、修改时间和缩略图规格。
  • 文件内容替换后可以自动识别并重新生成缩略图。
  • 相同请求自动合并,避免重复解帧。
  • 原生缩略图生成并发限制为最多 2 个任务。
  • 增加失败重试机制。
  • 磁盘缓存支持自动清理和损坏缓存自愈。
  • 使用原子写入降低缓存损坏风险。
  • 按显示尺寸解码,降低内存占用。
  • 增加异步任务失效保护,避免旧请求覆盖新内容。

设置面板

  • 设置从传统弹窗改为停靠式浮动面板。
  • 设置面板迁入播放器控制层 Stack。
  • 修复设置打开后自定义标题栏无法拖动的问题。
  • 设置与播放列表采用统一的左右中三列布局。
  • 设置面板位于中间区域,并自动处理空间避让。
  • 统一毛玻璃、圆角、边框和动画设计。
  • 全屏状态下设置面板继续可用。

设置导航

  • 新增 XMB 风格两级设置导航。
  • L0:分区选择。
  • L1:具体设置内容。
  • 支持完整十字键导航。
  • ↑ / ↓:选择。
  • →:进入或切换。
  • ←:返回。
  • Enter:确认。
  • Esc:关闭设置面板。
  • 禁用分区不会进入键盘导航路径。
  • 关闭面板后自动恢复播放器焦点。
  • 设置界面打开期间不会误触播放器快捷键。

响应式 UI

  • 设置分区入口支持响应式居中。
  • 分区摘要支持自动循环跑马灯。
  • 空间足够时静态显示,空间不足时自动滚动。
  • 窗口缩放后自动重新计算布局。
  • 关于页面品牌信息改为自适应布局。
  • 修复控制栏超长文件名跑马灯尾部内容无法显示的问题。

毛玻璃与性能

  • 新增统一的 GlassBlurLayer。

  • 毛玻璃支持透明度、挂起和静态状态三重门控。

  • 隐藏状态下停止无意义的背景模糊采样。

  • 播放列表、设置面板、菜单、确认条等统一使用新的玻璃层。

  • 删除旧的 GlassTier.thick。

  • 玻璃体系统一为:

    • thin = 8.0
    • normal = 11.5
  • 进度条拖动期间暂停高成本玻璃模糊计算。

  • 菜单、确认条、错误卡片等小型组件使用较低模糊强度。

  • 设置面板 L0/L1 动画期间减少重复 Widget build。

  • 增加 Widget identity 缓存和 RepaintBoundary。

  • 缓存 Settings Services Bundle,避免无意义重建。

Windows 与 IME

  • 针对播放器没有文本输入框的场景进行 Windows IME 治理。
  • 普通播放器状态下禁用输入法上下文,避免中文候选框出现在窗口左上角。
  • 覆盖 FlutterView 子窗口。
  • IME 切换改为 Windows Platform Thread 执行。
  • 修正 Win32 IME Context 标志处理。
  • 原生文件选择器打开期间自动恢复 IME。
  • 文件选择器关闭后恢复播放器的 IME 状态。
  • 修复由于 IME Context 被解除而导致的 Windows 原生文件对话框崩溃。
  • Debug IME 测试输入框完成验证后已移除,不会进入正式版本。

空置态交互

  • 未加载媒体时,打开设置或播放列表后可以点击面板外关闭。
  • 面板完全关闭后,中央“打开文件”按钮恢复正常点击。
  • 修复空置态 GestureDetector 抢占中央按钮手势的问题。

音量系统

  • 音量控制改为感知曲线。
  • UI 和持久化继续使用统一的 0~1 音量空间。
  • 使用 mpv 原生 mute 属性实现静音。
  • 静音不再把音量强制设为 0。
  • 删除 UI 层重复的音量和静音快照。
  • 音量状态统一由引擎维护。
  • 调整音量时自动解除静音。
  • 修复 Windows WASAPI 首次播放和切换媒体时的音量跳变。
  • 键盘 ↑ / ↓ / M 增加 OSD 反馈。

音频设置

  • 正式开放音频设置分区。
  • 音频延迟设置现在可以直接访问。
  • 音频延迟支持写入引擎并持久化。
  • 视频设置分区继续保持灰显。

工程与稳定性

  • Kernel 层 debugPrint 全部迁移到 KernelLogger。
  • 清理多个历史遗留的无效回调、Token 和死代码。
  • 增加玻璃渲染后端 A/B 测试方案。
  • Windows 支持 SIMPLER_PLAYER_FORCE_SKIA=1 进行 Skia / Impeller 对比测试。
  • 加强设置、IME、缩略图、玻璃层、异步生命周期等专项测试。
  • flutter analyze:0 error。
  • 最终提交验证:flutter test 1697 全绿。

🇬🇧 English

v0.0.8 · Playlist Evolution · Settings Panel Redesign · Audio & Performance Refinement

This release goes beyond adding a few buttons. It significantly refines playlist management, settings, audio control, glass UI, Windows integration, and overall performance.

Playlist

  • Added bulk deletion and multi-selection mode.
  • Added Select All and Invert Selection.
  • Added a confirmation bar before removing items, clearly stating that local files are not deleted.
  • Single-item removal also requires confirmation.
  • Automatically handles the playback queue when removing the currently playing item.
  • Removes orphaned playback breakpoints and thumbnail cache entries.
  • Selected items now use a danger-colored border to distinguish them from the blue playing-state highlight.
  • Stable border allocation prevents layout jumps when selection changes.
  • Replaced the old context menu with the unified glass UI style.

Thumbnails

  • Major upgrade to the P-Thumb thumbnail system.
  • Cache identity now includes path, file size, modification time, and thumbnail specification.
  • Replaced files are automatically detected and regenerated.
  • Identical requests are coalesced to avoid duplicate decoding.
  • Native thumbnail generation is limited to a maximum of two concurrent jobs.
  • Added retry support for failed thumbnail generation.
  • Disk cache now supports automatic cleanup and damaged-cache self-healing.
  • Atomic cache publishing reduces the risk of corrupted cache files.
  • Thumbnails are decoded closer to their actual display size to reduce memory usage.
  • Added async invalidation protection to prevent stale requests from overwriting newer content.

Settings Panel

  • Replaced the traditional modal settings dialog with a docked floating panel.
  • Moved settings into the player's control-layer Stack.
  • Fixed the custom title bar becoming undraggable while settings were open.
  • Introduced a unified left-center-right layout for settings and playlist panels.
  • Settings are positioned in the center region with automatic space management.
  • Unified glass, corner radius, border, and animation design.
  • Settings remain available in fullscreen mode.

Settings Navigation

  • Added XMB-style two-level settings navigation.
  • L0: section selection.
  • L1: detailed settings.
  • Added full directional keyboard navigation.
  • ↑ / ↓: select.
  • →: enter or move forward.
  • ←: go back.
  • Enter: activate.
  • Esc: close the settings panel.
  • Disabled sections are excluded from keyboard navigation.
  • Player focus is restored automatically after closing settings.
  • Opening settings no longer causes accidental player shortcut activation.

Responsive UI

  • Responsive centering for settings section entries.
  • Added looping marquee text for section summaries.
  • Summaries remain static when there is enough space and scroll automatically when space is limited.
  • Layout is recalculated when the window is resized.
  • Improved responsive branding on the About page.
  • Fixed the existing long-filename marquee bug where trailing content could never appear.

Glass UI & Performance

  • Added a unified GlassBlurLayer.

  • Glass blur now supports opacity, suspension, and static enable/disable gating.

  • Hidden glass layers no longer perform unnecessary background blur sampling.

  • Playlist, settings, menus, confirmation bars, and related components now share the same glass layer system.

  • Removed the obsolete GlassTier.thick.

  • Glass blur is now standardized to:

    • thin = 8.0
    • normal = 11.5
  • Suspends expensive glass blur processing while scrubbing the progress bar.

  • Small transient components use a lower blur intensity.

  • Reduced repeated widget builds during L0/L1 settings transitions.

  • Added widget identity caching and RepaintBoundary isolation.

  • Stabilized the Settings Services Bundle to prevent unnecessary cache invalidation.

Windows & IME

  • Added Windows IME governance for a player without text input fields.
  • IME is normally disabled during regular playback to prevent Chinese candidate windows from appearing at the top-left corner.
  • FlutterView child windows are covered as well.
  • IME switching now runs on the Windows platform thread.
  • Corrected Win32 IME context flag handling.
  • Native file pickers temporarily restore IME while they are open.
  • IME is disabled again after the dialog closes.
  • Fixed native Windows file dialog crashes caused by a missing IME context.
  • The temporary debug IME test field was removed after UAT verification and is not included in release builds.

Empty-State Interaction

  • When no media is loaded, clicking outside an open settings or playlist panel now closes it correctly.
  • The central “Open File” button works normally when all panels are closed.
  • Fixed a GestureDetector consuming the central button's pointer events in the empty state.

Audio

  • Reworked volume control using a perceptual volume curve.
  • UI and persistence continue to use a unified 0–1 volume space.
  • Switched mute handling to mpv's native mute property.
  • Muting no longer forces the volume value to zero.
  • Removed duplicated UI-side volume and mute snapshots.
  • The engine is now the single source of truth for volume state.
  • Changing the volume automatically unmutes playback.
  • Fixed volume jumps during the first playback or media switching on Windows WASAPI.
  • Added OSD feedback for keyboard ↑ / ↓ / M volume controls.

Audio Settings

  • Audio settings are now officially enabled.
  • Audio delay can now be accessed directly.
  • Audio delay changes are persisted and applied through the engine.
  • Video settings remain disabled for now.

Engineering & Stability

  • Migrated remaining kernel-level debugPrint calls to KernelLogger.
  • Removed obsolete callbacks, tokens, and dead code.
  • Added an A/B testing protocol for glass rendering backends.
  • Added SIMPLER_PLAYER_FORCE_SKIA=1 for Skia / Impeller comparison testing on Windows.
  • Expanded targeted tests for settings, IME, thumbnails, glass layers, and async lifecycles.
  • flutter analyze: 0 errors.
  • Final verification: flutter test — 1697 tests passing.

🇰🇷 한국어

v0.0.8 · 플레이리스트 개선 · 설정 패널 개편 · 오디오 및 성능 최적화

이번 버전은 단순히 버튼 몇 개를 추가한 것이 아니라, 플레이리스트, 설정 패널, 오디오, 글래스 UI, Windows 연동 및 성능을 전반적으로 다듬었습니다.

플레이리스트

  • 일괄 삭제 및 다중 선택 모드를 추가했습니다.
  • 전체 선택 및 선택 반전을 지원합니다.
  • 삭제 전에 확인 바를 표시하며 로컬 파일은 삭제되지 않음을 명확히 표시합니다.
  • 단일 항목 삭제에도 확인 절차가 적용됩니다.
  • 현재 재생 중인 항목을 삭제하면 재생 큐를 자동으로 정리합니다.
  • 삭제된 항목의 재생 위치와 썸네일 캐시를 함께 정리합니다.
  • 선택된 항목은 위험 작업을 나타내는 색상의 테두리를 사용하며 재생 중인 항목의 파란색 강조와 구분됩니다.
  • 선택 상태 변경으로 인해 목록 크기가 흔들리지 않도록 고정 테두리 공간을 유지합니다.
  • 우클릭 메뉴를 통일된 글래스 UI 스타일로 변경했습니다.

썸네일

  • P-Thumb 썸네일 시스템을 대폭 개선했습니다.
  • 캐시 식별자에 경로, 파일 크기, 수정 시간, 썸네일 사양을 포함합니다.
  • 파일 내용이 교체되면 자동으로 새로운 썸네일을 생성합니다.
  • 동일한 요청을 병합하여 중복 디코딩을 방지합니다.
  • 네이티브 썸네일 생성 동시 작업 수를 최대 2개로 제한합니다.
  • 썸네일 생성 실패 시 재시도할 수 있습니다.
  • 디스크 캐시 자동 정리 및 손상 캐시 자동 복구를 지원합니다.
  • 원자적 캐시 저장 방식으로 손상 가능성을 줄였습니다.
  • 실제 표시 크기에 맞춰 디코딩하여 메모리 사용량을 줄였습니다.
  • 오래된 비동기 요청이 최신 결과를 덮어쓰지 않도록 무효화 보호를 추가했습니다.

설정 패널

  • 기존 모달 설정 창을 도킹형 플로팅 패널로 변경했습니다.
  • 설정 패널을 플레이어 컨트롤 레이어의 Stack으로 이동했습니다.
  • 설정을 열었을 때 사용자 지정 제목 표시줄을 드래그할 수 없던 문제를 수정했습니다.
  • 설정 패널과 플레이리스트 패널을 좌·중·우 구조로 통일했습니다.
  • 설정은 중앙 영역에 배치되며 공간에 따라 자동으로 조정됩니다.
  • 글래스 효과, 모서리, 테두리 및 애니메이션을 통일했습니다.
  • 전체 화면에서도 설정 패널을 사용할 수 있습니...
Read more

Simple Player v0.0.6.2

Choose a tag to compare

@TATboy210 TATboy210 released this 17 Sep 16:46

🇨🇳 中文 · 0.0.6.2 · 它还记得你 🎯

▎ 一句话版本:关掉再开,上次看到哪,一眼就找到。

0.0.6 让断点“说到做到”,0.0.6.2 让它跨越开关软件——你上次看到的地方,重启后一眼就能找到。

🎯 断点续播 · 跨会话现场恢复

  • 重启软件后,播放列表自动高亮上次播放的那一条(白色标记)
  • 点该条目的“断点续播”分区,一键从上次位置继续
  • 退出软件前自动补一次进度落盘——播放中直接关窗,断点也不丢
  • “记住播放位置”总开关关闭时,以上行为全部不生效

🎨 播放列表 · 三态视觉分级

  • 播放中:蓝色边框 + 蓝色名称
  • 上次播放(未播放时):白色边框 + 白色名称
  • 鼠标悬停:整卡微微泛白——纯定位反馈,不与状态高亮抢层级

🖱️ 光标 · 全界面统一食指

  • 修复控制栏全部按钮、进度条、倍速、音量、标题栏窗口按钮(置顶/最小化/最大化/关闭)、播放列表条目、设置面板交互件的悬停光标——此前这些位置悬停显示的是箭头
  • 禁用状态(如未加载媒体的进度条)仍为箭头,语义正确

🛠️ 内部

  • 播放列表存储升级 v3:新增“上次播放”锚点,旧文件无缝迁移
  • 静态分析诊断全清零(lib 逐项修复 + 测试惯例豁免)
  • 全量 1575 项测试护航,flutter analyze 零告警

⚠️ 本期取舍

  • 切换视频时分辨率闪变的根除方案已设计定稿,因需要更充分的实机验证暂缓发布(下版本见)

🇬🇧 English · 0.0.6.2 · It Remembers You 🎯

▎ In one line: Close it, reopen it — and find exactly where you left off, at a glance.

0.0.6 made breakpoints keep their promises; 0.0.6.2 makes them survive restarts — the place you stopped at is one glance away.

🎯 Resume Playback · Cross-Session Restore

  • After restarting, the playlist automatically highlights the last item you played (marked in white)
  • Click its "Resume Playback" zone to continue right from where you stopped
  • A final progress save runs before the app exits — closing the window mid-playback no longer loses your breakpoint
  • All of the above is disabled when the "Remember playback position" switch is off

🎨 Playlist · Three-State Visual Hierarchy

  • Playing: blue border + blue title
  • Last played (while idle): white border + white title
  • Hover: the whole card softly brightens — pure positioning feedback that never competes with state highlights

🖱️ Cursor · A Single Pointer Language

  • Fixed hover cursors across the entire UI: all control-bar buttons, the progress bar, speed, volume, title-bar window buttons (pin / minimize / maximize / close), playlist
    entries, and settings controls — previously they showed the plain arrow
  • Disabled states (e.g. the progress bar with no media loaded) keep the arrow, as they should

🛠️ Internals

  • Playlist storage upgraded to v3: a new "last played" anchor, with seamless migration of old files
  • Static-analysis diagnostics fully cleared (item-by-item fixes in lib + test-convention exemptions)
  • Guarded by 1,575 tests; flutter analyze zero warnings

⚠️ Trade-offs

  • The fix for the resolution flicker when switching videos is fully designed but postponed to the next release for more on-device validation

🇰🇷 한국어 · 0.0.6.2 · 기억하는 플레이어 🎯

▎ 한 줄 요약: 끄고 다시 켜도, 마지막 위치가 한눈에 보입니다.

0.0.6에서 이어보기가 약속을 지키기 시작했다면, 0.0.6.2에서는 앱을 껐다 켜도 그 약속이 유지됩니다.

🎯 이어보기 · 세션 간 재생 위치 복원

  • 앱을 다시 시작하면 재생 목록에서 마지막으로 재생한 항목을 자동으로 강조합니다 (흰색 표시)
  • 해당 항목의 "이어보기" 영역을 누르면 마지막 위치에서 바로 이어서 재생됩니다
  • 종료 전에 진행도를 한 번 더 저장합니다 — 재생 중 창을 닫아도 이어보기 지점이 사라지지 않습니다
  • "재생 위치 기억" 스위치를 끄면 위 기능들은 모두 비활성화됩니다

🎨 재생 목록 · 3단계 시각 구분

  • 재생 중: 파란색 테두리 + 파란색 제목
  • 마지막 재생 항목 (정지 상태): 흰색 테두리 + 흰색 제목
  • 마우스 올림: 카드 전체가 은은하게 밝아집니다 — 위치 안내용이며 상태 강조와 경쟁하지 않습니다

🖱️ 커서 · 전 화면 통일

  • 컨트롤 바의 모든 버튼, 진행 바, 배속, 음량, 제목 표시줄 창 버튼(고정/최소화/최대화/닫기), 재생 목록 항목, 설정 패널의 마우스 커서를 수정했습니다 — 이전에는 화살표로
    표시되었습니다
  • 비활성 상태(미디어 미로딩 시 진행 바 등)는 의미에 맞게 화살표를 유지합니다

🛠️ 내부

  • 재생 목록 저장소 v3로 업그레이드: "마지막 재생" 앵커 추가, 기존 파일은 자동 마이그레이션
  • 정적 분석 진단 전부 해소 (lib 항목별 수정 + 테스트 관례 면제)
  • 총 1,575개 테스트 통과, flutter analyze 경고 0건

⚠️ 보류 사항

  • 영상 전환 시 해상도 깜빡임 근본 해결책은 설계를 완료했으나, 실기 검증을 더 위해 다음 버전으로 연기했습니다

🇯🇵 日本語 · 0.0.6.2 · あなたを覚えている 🎯

▎ 一言でいうと:閉じて開き直しても、続きの場所がひと目でわかる。

0.0.6 で再生素材が「言ったことは守る」ようになり、0.0.6.2 ではアプリの再起動を超えてその約束を守ります。

🎯 再生ブックマーク · セッション間の再生位置復元

  • アプリ再起動後、プレイリストで最後に再生した項目を自動ハイライト(白色マーク)
  • その項目の「続きから再生」ゾーンをクリックするだけで、中断した位置から再開
  • 終了前に進行状況を自動保存 — 再生中にウィンドウを閉じてもブックマークは失われません
  • 「再生位置を記憶」スイッチがオフの場合、上記の動作はすべて無効になります

🎨 プレイリスト · 3 状態のビジュアル階層

  • 再生中:青い枠線 + 青いタイトル
  • 最終再生項目(停止時):白い枠線 + 白いタイトル
  • マウスホバー:カード全体がほのかに明るくなります — 位置の目安であり、状態ハイライトと競合しません

🖱️ カーソル · 全画面で統一されたポインター

  • コントロールバーの全ボタン、プログレスバー、倍速、音量、タイトルバーのウィンドウボタン(ピン留め/最小化/最大化/閉じる)、プレイリスト項目、設定パネルのホバーカーソルを修正しま
    した — 以前は矢印が表示されていました
  • 無効状態(メディア未読み込みのプログレスバー等)は意味どおり矢印のままです

🛠️ 内部

  • プレイリスト保存形式を v3 に更新:「最終再生」アンカーを追加、旧ファイルはシームレス移行
  • 静的解析の診断を全件解消(lib の個別修正 + テスト慣例の免除)
  • 全 1,575 テストが合格、flutter analyze 警告ゼロ

⚠️ 今期の割り切り

  • 動画切り替え時の解像度ちらつきの根本解決策は設計完了済みですが、実機検証を十分に行うため次回リリースに持ち越しました

Simple Player v0.0.6

Choose a tag to compare

@TATboy210 TATboy210 released this 16 Sep 08:28
  • 🔀 播放列表排序(新):四键 × 升降序、物理重排不打断播放、自然序、

    • 🎲 随机播放重做:修复“乱列表+乱存盘”,随机终于名副其实(随机下一曲 / 历史精确回退 / 播完随机接续)

    • ⏯ 断点续播:停止不再清零、片尾自动清、5 秒落盘、

    • 🎛 控制栏:空置态常驻、列表切歌标题跟随、按钮风格统一

    • 🌐 语言:한국어 / 日本語

  • 🔀 プレイリストの並べ替え(新):四つのキーで昇降順、物理的な並べ替えでも再生は途切れず、自然な順序、

  • 🎲 シャッフル再作成:『ごちゃまぜリスト+無秩序保存』を修正、シャッフルがやっと本当にシャッフルに(次の曲をシャッフル / 厳密な履歴戻し / シャッフル終了後も続く)

  • ⏯ 再開再生:停止してもリセットされない、エンド時に自動クリア、5秒で保存、

  • 🎛 コントロールバー:空状態でも常駐、リスト切り替えでタイトル追従、ボタンスタイル統一

  • 🌐 言語:한국어 / 日本語

  • 🔀 재생목록 정렬(신규): 4키 × 오름/내림차순, 물리적 재배치 시 재생 중단 없음, 자연스러운 순서,

  • 🎲 랜덤 재생 리뉴얼: '리스트 랜덤 + 저장 랜덤' 문제 수정, 이제 진정한 랜덤 (다음 곡 랜덤 / 기록 정확히 되돌리기 / 랜덤 다 재생 후 이어서 재생)

  • ⏯ 이어서 재생: 정지해도 초기화 안됨, 엔딩 자동 초기화, 5초 저장,

  • 🎛 컨트롤 바: 비어 있을 때 상시 표시, 리스트 곡 변경 시 제목 동기화, 버튼 스타일 통일

  • 🌐 언어: 한국어 / 日本語

Simple Player v0.0.5

Choose a tag to compare

@TATboy210 TATboy210 released this 12 Sep 17:24
0879c53

✨ 全新功能

🎯 播放队列 · 相册式连播

  • 双击任意视频,整部文件夹自动入列 —— 打开 第01集.mp4,同目录下的所有影片按文件名自动排成队列,从它开始连播,播完自动接下一集
  • 拖入多个文件 → 按拖入顺序整体装载;网络流地址自动识别走单元素队列
  • 队列里混入坏文件?播放器内核会自动跳过它继续播,永不卡死

🪟 右侧沉浸式播放列表面板

  • 控制栏同款圆角毛玻璃:同装饰、同圆角、同边框、同模糊档位——视觉上就是控制栏的孪生兄弟
  • 280px 窄条贴右而立,底部精确避开控制栏,边看边选两不误
  • 全屏状态下照常可用;三种关闭方式:Esc / 点面板外任意处 / 关闭按钮
  • 进出场是控制栏同款的渐进渐退,透明度过渡期间自动停用玻璃采样——不闪、不抖、不留残影

🫧 透明“塑料膜”按钮 · 隐形的双手

缩略图上覆盖着一层看不见的膜,上下两片:上片播放,下片断点续播。

  • 静置时完全隐形——画面就是画面,没有任何按钮抢戏
  • 鼠标悬停 1 秒:图标如呼吸般浮现,居中亮起
  • 再过 1 秒:“播放” / “断点续播”字样渐进舒展,图标被自然推向左侧
  • 悬停分区微亮(白 6%),按下变暗(黑 12%)——反馈即时,却轻得像一层膜
  • 鼠标移开,一切反向渐退,缩略图恢复完整

⏯ 断点续播 · 从上次的地方继续

  • 每个视频自动记录播放位置与总时长,切走、关窗都不丢
  • 条目右侧显示断点细进度条 + 「断点 xx:xx」;无断点时续播按钮自动禁用
  • 条目右侧显示断点细进度条 + 「断点 xx:xx」;无断点时续播按钮自动禁用
  • 精确落点:续播信号与新片源起播信号严格锁存对齐——不会“看起来续了、实际从头播”

🖼 缩略图 · Windows 首次全面支持

  • Media Foundation 系统解码器直接解帧(与播放器解码能力同源,能播的就能出图)
  • 取 1 秒处画面,巧妙避开黑屏首帧;MD5 指纹磁盘缓存,重启秒加载
  • 滚动列表零阻塞:异步加载,失败静默降级占位图

🎛 控制栏与快捷键升级

  • 中央控制组新增 ⏮ 上一个 / ⏭ 下一个——叫“上一个/下一个”而非“上一曲”,视频与音乐两相宜
  • L 键开关播放列表;N / P 键快速切换队列条目
  • 播放模式一键循环:全部循环 → 单曲循环 → 随机播放(mpv 原生 playlist-shuffle,乱序循环不打断)

🔧 体验修复

  • 🌑 对齐媒体引擎原生交互:暂停状态静置数秒,控制栏同样优雅收起;拖拽/音量保活逻辑原样保留
  • 🪟 模态窗口保活:设置/右键菜单开启期间控制栏不再“自顾自消失”,关窗后重新计时
  • 👻 杜绝幽灵点击:面板关闭瞬间即让出全部命中区域
  • 🎞 渐入渐出全程无闪烁:玻璃采样随透明度自动启停

Simple Player v0.0.4

Choose a tag to compare

@TATboy210 TATboy210 released this 08 Sep 11:11
0879c53

Simple Player v0.0.4 更新日志

发布日期:2026-09-08
v0.0.4

✨ 新功能

窗口(自绘标题栏 · 四边等宽拖拽 · 全屏无缝)

  • 全新窗口技术栈(bitsdojo_window + window_manager 双包):原生级自绘标题栏、四边等宽缩放判定区域、Win11 圆角边框
  • 双击标题栏最大化/还原;关闭进程改为即时硬杀(hide→持久化→销毁,不再有残留后台进程)
  • 全屏边缘防误触:全屏状态下自动屏蔽边框缩放命中与边缘漏光
  • 启动空白窗口修复:窗口改为首帧渲染完成后才显示——出现即带完整内容,不再有数百毫秒白屏

设置面板全面重构

  • 设计语言统一:设置/属性对话框升级为控制栏同款毛玻璃面板(4 层光影 + 渐变描边辉光 + accent 竖条标题)
  • 错误反馈卡片质感升级:警告/错误/致命三级各配语义色辉光,状态色“点亮”而非平涂
  • 修复最小窗口下设置面板绘制不完整(854×480 下内容溢出裁剪)
  • 左侧导航交互升级:悬停底色渐现 + 手型光标 + 按下反馈(对齐控制栏按钮手感)
  • 全局字体统一:消除 Material 组件与自绘文字的 Roboto/Segoe 混排
  • 中英文切换:设置 → 通用 → 语言(跟随系统 / English / 中文),切换即时生效

关于页

  • 品牌社交链接:X / 爱发电 / Patreon / GitHub 四枚真实品牌 logo,点击直达对应主页
  • 特别鸣谢:上移至技术栈之前,独立深色圆角鸣谢区,爱发电支持者以头像 + 姓名呈现

播放器交互

  • 控制栏显现区域收窄:从“底部 150px 全宽”收窄到控制栏本体矩形——鼠标在画面中移动不再误唤醒控制栏,只在指向控制栏时显现

⚡ 性能优化(减少硬件占用)

  • MemoryMonitor 移出 release 构建:发版后不再有每 30 秒的后台内存采样定时器(零消费者,纯开销)
  • 移除死代码动画陷阱:EdgeGlow 未使用的 pulse/omni 变体(含永不停止的每帧动画控制器)
  • 诊断日志降噪:探针摘要降为 debug 级——数据进 DevTools 不丢,控制台清净

🔧 修复

  • macOS:Xcode 26 新 SDK 下系统提示音 API 变更(NSSound.beep())
  • Linux:Flutter 引擎 API 名称修正(fl_engine_get_binary_messenger)
  • 标题栏双击最大化测试断言与最终实现方案对齐

🏗️ 工程与 CI

  • CI 三平台全绿(Windows / Linux / macOS 各跑 analyze + test + build)——Linux/macOS 构建首次真正打通(补装 libmpv-dev、修复引擎 API 与 SDK 兼容)
  • 清零 65 个静态分析债务(--fatal-infos 门禁恢复)
  • 删除测试已废弃开关的 flag-matrix CI job(每次推送省约 15 分钟)
  • 测试数 1397 → 1416(新增:控制栏显现区域 9 例、MemoryMonitor 探针 3 例、鸣谢区/社交按钮断言等)

Simple Player v0.0.3

Choose a tag to compare

@TATboy210 TATboy210 released this 06 Sep 15:17
0a829de

1.窗口依赖换成了Windows manager加 bitsdojo window
2.添加了英语选项

喜欢此软件的可以在 爱发电 和 patreon 支持作者
https://ifdian.net/a/SimplePlayerTeam
https://www.patreon.com/cw/SimplePlayerTeam

Simple Player v0.0.2

Choose a tag to compare

@TATboy210 TATboy210 released this 05 Sep 07:32
   - 修复全屏状态下窗口边缘仍能拖拽改变大小的问题:在 Windows 原生层拦截全屏边缘命中及缩放命令,退出全屏后恢复原有缩放行为。
   - 程序及安装包版本统一为 0.0.2。
   - 安装包附带应用本地 VC++ 运行库及播放器所需 DLL、资源文件。

Simple Player v0.0.1

Choose a tag to compare

@TATboy210 TATboy210 released this 28 Aug 16:06

首个发布版本。

Windows 安装包

基于 media_kit (libmpv) 的桌面媒体播放器。本版本包含统一的错误捕获与报告契约