倒计时·DJS V2.8.3beta


这次更新是一次功能上的重大飞跃,主要集中在循环项目、壁纸选择器、鼠标穿透和UI/UX 增强这几个方面。

新版本下载:新版本
旧版本下载:旧版本
开源地址:GitCode
一、 核心功能新增与改进

  1. 循环项目
    旧版 (2.8.2):项目只有“普通”模式,基于一个固定的目标日期进行倒计时。

新版:新增了“循环”项目类型。用户可以设定项目在每周的特定星期几重复,并可设置可选的结束日期。倒计时会自动计算并显示下一个符合条件的触发时刻。这非常适合用于每周例会、每日打卡等周期性任务。

  1. 壁纸选择器
    旧版 (2.8.2):仅支持使用单张图片或动态壁纸作为背景。

新版:新增了完整的“壁纸选择器”模块。用户可以:

管理一个图片列表(添加、删除、排序)。

设置轮播模式(顺序、随机、循环)、切换间隔和填充方式(拉伸、适应、居中、平铺)。

支持淡入淡出切换效果。

将轮播壁纸直接应用到悬浮窗背景或系统桌面壁纸(跨平台支持 Windows/macOS/Linux)。

支持双屏扩展,可分别为主屏和副屏指定壁纸。

  1. 鼠标穿透模式
    旧版 (2.8.2):悬浮窗会拦截所有鼠标事件,阻碍与下方窗口的交互。

新版:新增“鼠标穿透”模式。开启后,悬浮窗将不再接收任何鼠标事件,所有点击操作都会直接穿透到下层窗口。这个功能在需要将倒计时作为纯桌面装饰,同时又不想影响正常操作时非常实用。该状态会随项目保存。

  1. 配置备份与还原
    新版 :在设置界面增加了“备份配置”和“还原配置”按钮。用户可以一键将当前所有配置(项目、布局、壁纸列表等)保存到 data/backups/ 目录,并随时从备份文件恢复,方便迁移和版本回滚。

  2. 启动欢迎窗口
    新版 :在首次启动(launch_count == 1)时会显示一个欢迎窗口,帮助新用户快速了解应用的核心功能、切换语言并获取帮助指引。打包前可通过调试控制台的 reset_welcome 命令重置该状态,确保打包后的版本能正常显示欢迎页。

二、 UI/UX 与交互增强

  1. 外观编辑器升级
    布局更紧凑:元素列表、预览画布和属性面板的布局经过重新设计,操作效率更高。

属性控件优化:字体大小、透明度、位置等参数现在都配有滑块和数字输入框联动,调节更直观。

手动尺寸控制:取消了元素的“自动宽度”后,可以分别手动调整宽度和高度;对于自定义图片元素,调整时还会自动锁定原始宽高比。

键盘快捷键支持:选中元素后,可以使用键盘的方向键(配合 Shift 加速)来微调元素尺寸,精度控制更方便。

拖拽排序:左侧元素列表支持直接拖拽调整层级顺序。

脏标记与取消确认:编辑未保存时,取消按钮会显示为“放弃更改 (*)”,关闭窗口时也会弹出确认对话框,防止误操作丢失修改。

  1. 项目管理界面改进
    项目列表现在使用带编号和状态图标(📅 普通 / 🔁 循环)的格式展示,置顶项目还会显示 📌 标记,一目了然。

添加项目时,会弹出对话框让用户选择项目类型(普通 / 循环)。

  1. 全局设置重构
    设置对话框改为无边框 + 半透明毛玻璃效果,与主窗口视觉风格统一,并支持拖拽移动。

全局设置页面采用 QGridLayout,布局更整齐。

新增渲染后端选择功能,用户可以根据硬件情况在 auto、software、opengl、vulkan、d3d11、d3d12、metal 之间切换。

新增数字翻转动画开关,允许用户关闭倒计时数字的翻转动效,降低动画开销。

移除了全局“诗词级别”下拉框(改为在每个项目的诗语轻扬元素中单独配置),并在原位置显示迁移提示卡片。

版本信息区域增加了“备份/还原”卡片和“项目主页”按钮,替代了失效的更新检查功能。

  1. 新的窗口打开/切换动画
    设置窗口打开时有缩放 + 淡入动画;切换 Tab 时有水平滑动效果,交互反馈更流畅。

  2. 调试控制台增强 - djs_pyqt6.py
    增加了 welcome 和 reset_welcome 命令,可手动打开或重置欢迎窗口状态。

help 命令内容已同步更新,包含所有新增命令和功能介绍。

三、 后端逻辑与性能优化

  1. 动态壁纸性能自动降级 - DynamicWallpaperWidget - djs_pyqt6.py
    新版增加了 _frame_costs 记录每帧耗时,当连续多帧的平均开销超过预算时,会自动降低画质或帧率(高→中→低,60→30),避免界面卡顿。

  2. 插件系统增强
    版本标识:插件系统现在有独立的版本号(Plugin.PLUGIN_SYSTEM_VERSION = “0.11”),并在插件管理界面显示。

更完善的错误收集:PluginManager 新增 load_errors 和 register_errors 列表,记录加载失败和 API 注册冲突的详细信息。

API 增强:

register_dynamic_bg 新增 border_radius 参数,插件注册动态背景时可直接指定圆角;配套的 update_dynamic_bg_radius 方法允许运行时更新圆角值。

register_settings_panel、register_widget、register_settings_widget 增加了重复 ID 检查和类型校验,注册失败时会通过 report_register_error 统一记录。

资源限制与自动禁用:新增 plugin_resource_limit 机制,当单个插件的事件处理耗时超过 2 秒时记录一次“超限违规”,累计 3 次后自动禁用该插件,防止失控插件拖垮整体性能。

UI 调整:插件管理右侧改为 QTabWidget(插件详情/日志/插件面板三标签),结构更清晰;“权限”按钮颜色改为金色,视觉上更突出其重要性。

  1. 配置系统升级
    配置版本迁移:新版配置文件增加了 config_version: 3 字段,并在加载时自动将旧版配置中的 poem_level 迁移到每个项目 custom_layout 的 poem.levels 数组中,保证向后兼容。

持久化新增字段:launch_count、first_run_done、enable_flip_animation、editor_splitter(编辑器分割条状态)等新属性均已纳入配置保存。

  1. 渲染后端支持
    新版在启动时根据配置文件的 render_backend 字段设置 QSG_RHI_BACKEND 环境变量,允许用户强制指定 Qt 的渲染后端,对某些显卡驱动有问题的场景有很大帮助。

  2. 代码健壮性提升
    debug_print 函数增加了异常捕获,避免在 stderr 不可写时崩溃。

日志模块增加了日志轮转功能,当 LOG.txt 超过 1MB 时自动轮转(保留 LOG.1.txt / LOG.2.txt)。

CountdownWindow 的 refresh 方法现在会在主题切换时调用 _update_default_colors_for_theme,智能更新文字颜色和背景色以适配深色/浅色模式。

各处 QMessageBox 调用增加了父窗口参数,避免模态对话框位置偏移。