Skip to content

Releases: petrel-cn/prompt-generator

Release list

v2.1.0

Choose a tag to compare

@petrel-cn petrel-cn released this 03 Oct 08:26

文本区字号可调、已保存提示词可改标题。

新增

文本区字号可调

  • 配置对话框新增「字体大小」下拉框(位于「思考模式」之后):9 / 10 / 11 / 12 / 13 磅,默认 9 磅(与 2.0 显示一致)
  • 只作用于主窗口的「用户输入」「英文提示词」与查看窗口的同名两个文本框;按钮、标签、图片上传区、图片路径框、状态栏等其余部分字号不变
  • 保存配置后主窗口立即生效,查看窗口下次打开时生效
  • 越界、缺失或非法的取值在加载时钳制回合法档位(0 → 9 磅,> 13 → 13 磅)
  • config.json 新增 fontSize 键,旧配置缺失时按 9 磅处理

修改已保存提示词的标题

  • 查看窗口新增「修改标题」按钮,位于「复制英文」与「删除」之间
  • 沿用「保存提示词」的对话框样式,弹出时自动填入原标题,光标停在末尾便于接着修改
  • 只能修改用户自己输入的那段文字:列表显示时自动附加的 <Pony> 前缀与保存时间既不显示在输入框内,也不会被改写
  • 标题允许改空(列表显示为「无标题」);写盘失败时回滚内存中的修改并提示

变更

  • 版本号 2.0 → 2.1.0
  • 配置对话框高度 620 → 660,为「字体大小」下拉与两行提示文字腾出空间;提示文字补充字号作用范围说明
  • SaveDialog 支持自定义窗口标题、说明文字、附加提示与预填标题,保存与改名共用同一套外观(无参构造行为不变);预填文本在 Shown 之后再摆一次插入符,避免被控件获得焦点时的默认行为覆盖
  • Defaults 新增 FontSizeBase(基准档 N = 9)/ FontSizeOptionCount(5 档)/ FontSizeMax 与 NormalizeFontSize / FontSizeDisplayName 纯函数,便于离线回归测试覆盖
  • SavedEntry 新增只读派生属性 EditableTitle(= title 原文,不参与序列化):改名的预填与写回都以它为准,与列表显示文本 Display 严格分开
  • 主窗口与查看窗口在销毁时释放自己创建的文本区字体;配置对话框「保存失败」后不再把未落盘的字号应用到主窗口
  • Storage 新增 RemoveEntryAt(entries, index) 纯函数(返回移除后的新列表,原列表不变)与 TryRemoveEntryAt(entries, index, save, out committed, out error) 事务函数(先算新列表 → 写盘成功才提交);写盘动作以委托注入,因此「写盘失败不得提交」这条顺序性质能离线断言

升级说明

  • 无需迁移:config.json 自动补齐 fontSize(默认 9 磅),schemaVersion 仍为 2,prompt.txt 与 saved.json 不受影响
  • 已保存记录的标题格式不变,<Pony> 前缀与保存时间仍然只在列表显示时派生

修复

以下为 2.0 的遗留问题,本次一并修掉:

  • 删除记录写盘失败会使列表与内存错位(中等,数据级):查看窗口删除记录时先改内存列表再写盘,写盘失败(saved.json 被占用 / 只读 / 磁盘满 / 无写权限)只提示不回滚,而列表行号与内存下标是一一绑定的,因此:此后「复制英文」会静默复制相邻记录的内容,「修改标题」会改到相邻记录,下一次「删除」会删错记录(确认框里的标题与高亮行对不上);若失败的是最后一行,还会出现「明明有高亮行却提示请先选择一条记录」且右侧内容全空。更隐蔽的是,之后任何一次写盘成功都会把这次失败的删除持久化。现改为「先用 Storage.RemoveEntryAt 算出新列表 → 写盘成功后才替换内存列表 → 再删缩略图并刷新」(由 Storage.TryRemoveEntryAt 承载),失败时内存、界面与磁盘三者均保持原样
  • 配置保存失败会把未落盘的值留在内存(轻微):配置对话框直接改写 Storage.Config 这份活对象,而写盘失败只弹提示、值不回滚,因此之后任何一次 Storage.SaveConfig(例如关闭查看窗口写几何)都会把这批「保存失败」的设置静默写进 config.json,与界面提示相矛盾(也会让主窗口显示出未落盘的字号)。现失败时把 keyName / model / thinking / fontSize 回滚为写盘前的值;SetApiKey 内部的密钥回滚(明密文成对)留待后续版本
  • 原子写在收尾阶段抛异常会破坏「抛异常 ⇒ 未写入」的假设(轻微):WriteFileAtomic 的回退分支在目标文件已被替换为新内容之后还要执行一次 File.Delete(backup),它抛异常会冒泡到调用方,使调用方误以为未写入(内存与磁盘分叉)。现把该清理改为 best-effort,并在方法注释中把「抛异常时目标文件必为旧值」写成明确的不变量

下载:PromptGenerator.exe —— Windows 10 / 11 单文件,双击即用,无需安装、无需 .NET SDK(依赖系统自带的 .NET Framework 4.8)。

完整的变更记录、升级说明与离线回归测试说明见仓库中的 CHANGELOG.md 与 tests/README.md。

v1.0.1

Choose a tag to compare

@petrel-cn petrel-cn released this 17 Sep 13:23

把中文描述翻译为英文绘图提示词的 Windows 单机工具(DeepSeek API,零第三方依赖,单文件分发)。

本版内容

  • 主窗口新增「关于」按钮(位于「查看」右侧),展示版本号、版权与 MIT 许可
  • 项目采用 MIT 许可证,版权归 petrel-cn & LanZi 所有
  • 查看对话框:左右分隔线可拖动;标题过长时列表下方出现横向滚动条;记录较多时可纵向滚动
  • PromptGenerator.exe 携带程序图标
  • 主窗口最小宽度 520 → 600(容下六个按钮一行)

下载

  • PromptGenerator.exe —— Windows 10 / 11 双击即用(系统自带 .NET Framework 4.8,无需安装任何组件)

首次使用

  1. 打开「配置」,填入 DeepSeek API Key,保存
  2. 在主窗口输入中文描述,点「生成」(或 Ctrl+Enter)

用户数据保存在 %APPDATA%\prompt-generator\,API Key 以 Windows DPAPI(CurrentUser)加密存储,不落明文。

完整变更见 CHANGELOG。