KenanZhu
|
c250fa4a6e
|
refactor(theme): 将重复的主题逻辑下沉至 ThemeUtils,消除 validateTheme 职责过重
|
2026-06-19 11:21:50 +08:00 |
|
KenanZhu
|
57f1cfb3f2
|
fix(theme): 修复死锁、冗余读取、空作者字符串等交叉审查问题
- ThemeManager 拆分 _removeThemeFile 无锁版本, 消除 importTheme 持锁
时调用 removeTheme 导致的死锁
- validateTheme 增加 check_qss 参数, listThemes 跳过 QSS 读取
- validateTheme 拒绝空/空白作者字符串, 避免 info.json 与文件名不一致
- 统一默认作者为 "未知作者"
- ALSettingsWidget.ui 增加删除按钮 [-], 浏览按钮改为 [+]
- ALSettingsWidget 实现 onRemoveThemeButtonClicked 删除逻辑
|
2026-06-16 19:37:09 +08:00 |
|
KenanZhu
|
007b4dc2ef
|
fix(theme): 修复同名主题无法区分作者及导入链路边界问题
- 新增 ThemeUtils.validateTheme 和 readThemeQss 集中校验与读取逻辑
- ThemeManager.importTheme 通过 _resolveDestPath 处理同名主题:
不同作者自动命名为 {主题名}_{作者名}.altheme, 首次导入保持原名
- ThemeManager.listThemes 返回 file 字段以便 UI 层定位文件
- ALSettingsWidget 全线改用 file 标识符, 组合框按作者消歧义显示
- 移除 applyTheme 中的临时目录解压, 改用 readThemeQss 直接读取
|
2026-06-16 18:37:47 +08:00 |
|
KenanZhu
|
62f8ec3d91
|
refactor(theme): 将重复的主题逻辑下沉至 ThemeManager
ThemeManager 新增:
- clearTheme(theme) — 清除 QSS 并应用指定色调
- applyThemeOrClear(name, fallback) — 应用或回退的封装
- _applyColorScheme(theme) — Qt ColorScheme 设置的统一入口
- themeToReadable(need_theme) — 静态工具方法
ALSettingsWidget 移除:
- _clearCustomTheme → 改用 themeInstance().clearTheme()
- _applyCustomTheme → 改用 themeInstance().applyThemeOrClear()
- _themeToReadable → 改用 ThemeManager.themeToReadable()
ALSettingsWidget 仅保留 _applyTheme(含 setStyle 逻辑,供 AppInitializer 使用)
|
2026-05-30 22:51:05 +08:00 |
|
KenanZhu
|
35253dadbb
|
feat(theme): 引入 .altheme 主题文件格式与主题管理系统
- 新增 .altheme 文件格式(zip 压缩包包含 info.json 与 theme.qss)
- 新增 utils/ThemeUtils.py:主题文件打包/解包/读取工具函数
- 新增 managers/theme/ThemeManager:主题目录管理器,支持导入/列举/删除/应用
- 新增 LightLake 浅色主题 QSS 文件
- 新增 CfgKey.GLOBAL.APPEARANCE.CUSTOM_THEME 配置键
- 配置模板新增 custom_theme 字段
- ALSettingsWidget 接入 ThemeManager,替换裸 QSS 路径模式
- AppInitializer 启动时恢复自定义主题状态
- Zip Slip 防护与线程安全保护
|
2026-05-30 21:01:18 +08:00 |
|
KenanZhu
|
910e3e3224
|
chore: 统一 __init__.py 许可头为版权声明并改用相对导入
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 01:35:55 +08:00 |
|
KenanZhu
|
5e898180c7
|
refactor(style): 统一项目代码风格,整理导入顺序、间距规范与方法排列
- GUI 模块统一 QtCore → QtGui → QtWidgets 导入排列,各类独占一行按字母排序
- 统一类间两空行、类内方法间一空行、函数间一空行的间距规范
- 统一方法排列顺序:__init__ → setupUi → connectSignals → public → Slot → private
- 统一 _widgets 中 ConditionRowFrame/ActionStepFrame 方法命名(populate* / toScript / updateValueWidget)
- LibTimeSelector 迁入 operators/abs 抽象层
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-24 13:14:27 +08:00 |
|
KenanZhu
|
bbd97970a6
|
refactor(modules): 将 AutoScriptEngine 移至 dsl/,ConfigUtils 移至 managers/config/,修复单一职责和依赖倒置问题
|
2026-05-10 15:33:10 +08:00 |
|
KenanZhu
|
46b3447d1e
|
feat(autoscript): 将预处理脚本重构为 AutoScript DSL,新增可视化编排与预览对话框
|
2026-05-08 20:46:54 +08:00 |
|
Gogs
|
4d0d7a952c
|
feat(preproc): 新增适用于重复性定时任务的预处理脚本以及可视化编排对话框
|
2026-05-08 15:23:24 +08:00 |
|
KenanZhu
|
e11f696b76
|
style(*): 添加缺失的版权信息,并同一版权年份为文件创建时间的年份
|
2026-05-06 01:01:52 +08:00 |
|
KenanZhu
|
ffae43d5bd
|
fix(ConfigUtils): 添加未导入的 os 模块
|
2026-03-24 21:49:52 +08:00 |
|
Gogs
|
baa4f23136
|
refactor(config): 新增 ConfigUtils 工具类并优化配置管理逻辑
- 新增 ConfigUtils 工具类,提供配置路径获取等工具方法
- 将 ConfigManager.getValidateAutomationConfigPaths() 重构为 ConfigUtils.getAutomationConfigPaths()
- 优化 MsgBase 中 LogManager 的导入方式,使用模块导入替代函数导入
- 规范化 TimerUtils.py 中 calculate_next_repeat_time() 的文档字符串格式
|
2026-03-23 13:31:06 +08:00 |
|
KenanZhu
|
706fc889f9
|
chore(*): 重构项目结构
- 新增 src/boot 目录,用于存放启动时需要初始化的模块
- 新增 src/managers 目录,用于存放项目中的管理模块
- 新增 src/managers/config 目录,用于存放配置管理模块
- 新增 src/managers/log 目录,用于存放日志管理模块
- 新增 src/managers/driver 目录,用于存放浏览器驱动管理模块
- 修改对应文件中 import 导入路径
|
2026-03-20 19:19:34 +08:00 |
|
KenanZhu
|
bf93cc2cbc
|
style(*): 将中文逗号替换为英文逗号
|
2026-03-20 08:59:09 +08:00 |
|
KenanZhu
|
02463f087e
|
feat(MsgBase, gui, operators): 增强日志输出功能
- 为 _showTrace 方法添加 no_log 参数,支持控制日志写入
- 在主窗口各关键操作点添加日志输出
- 优化错误信息输出策略,分离 trace 和 log 输出
- 改进配置目录初始化过程的日志记录
|
2026-03-18 12:46:37 +08:00 |
|
KenanZhu
|
e481824344
|
refactor(AppInitializer): 初始化应用程序时,先初始化日志管理器,再初始化配置管理器
|
2026-03-18 11:03:44 +08:00 |
|
KenanZhu
|
2d0782c368
|
refactor(AppInitializer): 将初始化逻辑提取到 AppInitializer 模块中
- 本次提交将 Main.py 中的 ConfigManager, LogManager 等初始化逻辑提取到 AppInitializer 模块中
- 更改默认的配置文件路径从 config 目录变为 configs 目录,并考虑兼容性问题
|
2026-03-18 10:17:09 +08:00 |
|
KenanZhu
|
c26f19b6b3
|
feat(LogManager): 新增日志持久化功能
- 新增 LogManager 单例类,支持日志文件按日期滚动
- 创建 CallerInfoFormatter 自定义格式化器,提取真实调用位置
- 为 MsgBase._showTrace 方法添加日志级别参数,集成日志系统
- 新增 initializeLogManager 初始化函数,日志存储于 AppDataLocation/logs/
- 日志输出格式对齐:[时间] - [类名(15)|级别(8)] - [文件:行号(20:4)] - 消息
- 控制台/INFO级别,全量日志 / DEBUG 级别,错误日志 / ERROR级别
- 全量日志保留7天,错误日志保留14天
|
2026-03-17 21:37:24 +08:00 |
|
KenanZhu
|
0a94c344d5
|
ci(workflows): 修复 Release 工作流的触发条件
- 当创建 'release/v*' 分支时,自动进行 Release 构建
/! Release 流程必须手动创建分支,工作流结束后会将对应分支提交合并
/! 到 main 分支上,且对应分支会被删除
|
2026-03-17 15:46:32 +08:00 |
|
KenanZhu
|
ff083884b6
|
style(utils.ConfigManager): 添加一些注释,并为 getBaseConfigDir 添加文档字符串。
|
2026-03-04 23:53:31 +08:00 |
|
KenanZhu
|
9ae89b61a4
|
chore(utils.ConfigManager): 将 ConfigManager 类的 appDir 重命名为 configDir
|
2026-03-04 23:52:28 +08:00 |
|
KenanZhu
|
25aab588a8
|
feat(utils): 添加 ConfigManager 与 JSON 配置读写,替换旧实现
add:
- src/utils/ConfigManager.py
- src/utils/JSONReader.py
- src/utils/JSONWriter.py
remove:
- src/utils/ConfigReader.py
- src/utils/ConfigWriter.py
refactor:
- 更新调用方以使用 ConfigManager / JSONReader / JSONWriter(见 ALConfigWidget.py、ALMainWindow.py、ALTimerTaskManageWidget.py、ALMainWorkers.py 等)
- 统一方法命名(initlize* -> initialize*)、改进错误提示与配置路径管理
BREAKING CHANGE: 删除 ConfigReader/ConfigWriter,外部调用需改为 JSONReader/JSONWriter 或通过 ConfigManager 访问配置
|
2026-02-26 21:18:18 +08:00 |
|
KenanZhu
|
e1c2efc8c0
|
chore(utils): 配置文件读写器异常改为中文
|
2026-02-16 13:01:34 +08:00 |
|
KenanZhu
|
fa737711d4
|
optimize(ConfigReader, ConfigWriter): 优化配置文件读写类逻辑,完善异常处理,添加注释文档
|
2026-01-16 23:23:03 +08:00 |
|
KenanZhu
|
107ed41b58
|
chore(*): 更新 license 和版权信息为 2025 - 2026 年
|
2026-01-09 14:00:25 +08:00 |
|
KenanZhu
|
c2d53a8b78
|
chore(*): refactor the project structure
|
2025-11-25 08:48:18 +08:00 |
|