feat: CSV 导入导出、导入撤销支持及多项 bug 修复

功能:
- 新增 CSV 格式导入导出支持(含 BOM 处理、引号转义、智能标题行检测)
- 导入操作支持撤销/重做
- 保存时 PATH 长度检查与警告
- 深色模式状态持久化(darkmode.txt)
- 提取 get_current_target/push_record 为共享函数,消除控制器层重复代码
- 新增 string_list_insert_at,修复撤销删除时的索引恢复
- 新增 undo_redo、error_code、import_export 单元测试

Bug 修复:
- 修复备份目录对话框和失败原因的硬编码中文字符串
- 提取 get_exe_dir 到 os_env 消除 i18n.c/ui_utils.c 重复定义
- 修复导入撤销 old_sys/old_user 内存管理(push 后置 NULL 防止重复释放)
- 修复 CSV 导出转义与导入解析不一致(移除反斜杠转义,依赖 CSV 引号机制)
- 修正 PATH 长度 8191 限制描述为 "command line safe limit"
This commit is contained in:
2026-05-03 01:52:06 +08:00
parent 720ebb535d
commit cdcfd8e0a7
27 changed files with 1823 additions and 110 deletions
+29 -1
View File
@@ -414,4 +414,32 @@ msgstr "Dark Mode"
#: src/ui/main_window.c
msgid "Light Mode"
msgstr "Light Mode"
msgstr "Light Mode"
#: src/controller/callbacks_sys.c
msgid "Select backup directory"
msgstr "Select backup directory"
#: src/controller/callbacks_sys.c
msgid "Unknown error"
msgstr "Unknown error"
#: src/controller/callbacks_sys.c
msgid "Failed to get AppData path"
msgstr "Failed to get AppData path"
#: src/controller/callbacks_sys.c
msgid "Failed to create backup directory or file"
msgstr "Failed to create backup directory or file"
#: src/controller/callbacks_sys.c
msgid "Failed to read PATH from registry"
msgstr "Failed to read PATH from registry"
#: src/controller/callbacks_sys.c
msgid "Backup failed! Reason: %s\n\nContinue saving?\n(Continuing may prevent recovery)"
msgstr "Backup failed! Reason: %s\n\nContinue saving?\n(Continuing may prevent recovery)"
#: src/controller/callbacks_sys.c
msgid "Total PATH length: %d characters (command line safe limit: 8191)\n"
msgstr "Total PATH length: %d characters (command line safe limit: 8191)\n"