CHANGELOG

更新日志

晚晚吖的完整版本史:从前身「12306 火车票票根编辑器」到 V4.1.1,共四个阶段。遵循 Keep a Changelog 精神记录变更。

阶段版本线时间说明
一12306 火车票票根编辑器 V4.0 → V6.2.42026-09-24 ~ 09-26前身项目,火车票工坊内核
二晚晚吖 V2.x(内部迭代)2026-09-28 前后外壳 + 行程地图 / 登机牌等模块孵化期(版本标记留存于源码注释)
三晚晚吖 V3.0.0 → V3.3.92026-09-29 ~ 10-01六大模块成型期,公开快照版本
四晚晚吖 V4.0.0 → V4.1.12026-10-01 ~ 10-03行程地图大版本 + 共享资源去重重构 + 手机端原生 App 化重构 + 版本检测 / 电子发票导入 + 票面快照修正 + 车站库补录与地图定位兜底 + 添加行程与即时预览 + 全国地铁库全量更新
← 返回官网首页

第四阶段 · 晚晚吖 V4.0.0 → V4.1.1(2026-10-01 ~ 10-03)

V4.1.1当前版本

  • 移除美团全部内容——删除行程卡「美团查看」跳转与美团 Token(此前美团 H5 落地页不识别参数会打开报错页);景点 / 酒店 / 美食卡保留地址 / 评分 / 人均
  • 高德 Key 改为用户自配——不内置开发者 Key(无法支持全量调用):未配置时发送自动拦截并打开「API 设置」;AI 大语言模型接口已内置、全量可用
  • 顶栏新增「API 设置」(Key + 安全密钥 + 五步申请教程)与「清空历史」按钮;首次进入弹出配置引导
  • 数据层迁移至高德 JS API v2.0,修复个人 Key 走 REST 签名报 USERKEY_PLAT_NOMATCH;兼容 2.0 天气返回结构
  • 珍藏册「一键清除所有数据」纳入旅游计划会话,保留用户自配高德 Key;密钥仅 Agnes 种子混淆内嵌

V4.1.0

  • 新增第七模块「我的旅游计划」——对话式 AI 行程规划:七步实时进度(解析需求 → 查询景点 → 酒店 → 美食 → 天气 → 规划路线 → 生成行程)+ 可展开思考面板;完成后进度与思考面板自动收起
  • 行程方案原生卡片渲染:按天时间轴、多日天气条、景点 / 酒店 / 美食卡(地址 / 评分 / 人均 / 美团 H5 链接)、按天气与风格生成的行李清单与出行贴士
  • 数据层接入高德 REST API(JSONP + 数字签名);接口不可用自动降级 AI 智能推荐
  • Agnes 多轮追问修改行程;高德 Key / 签名密钥 / 美团 Token / Agnes 种子全部分段异或 + Base64 + 倒序混淆内嵌
  • 会话存 localStorage 并纳入「一键清除所有数据」,支持新对话与历史恢复

V4.0.20

  • 全国地铁库全量更新——重新拉取高德地铁数据(GCJ-02,数据日期 2026-10-03):城市 34 → 48、线路 328 → 370、站点 7251 → 8067;新增徐州、长春、无锡、佛山、东莞、常州、南通、温州、绍兴、金华、台州、芜湖、滁州、洛阳 14 城(含用户指出的徐州地铁),南京并线更新(14 → 15 线);香港 12 线、澳门 3 线保持收录

V4.0.19

  • 行程地图:即时预览升级为真实票面——编辑器「即时预览」由外壳离屏工坊真实渲染:火车行程用工坊默认第一款底图,登机牌跟随航司常用配色,预览即最终存入珍藏册的票面效果
  • 修复:弹窗(dialog)内的面板标题被主题统一规则裁剪遮挡——面板头统一规则排除弹窗内元素,保留自身内边距

V4.0.18

  • 行程地图编辑器「即时预览」:编辑行程时实时渲染票面预览——外壳驻留持久离屏工坊框架,按模块复用,防抖后只渲染最新一条;编辑器关闭仅清队列,切换模块丢弃旧框架避免阻塞预览通道
  • 登机牌:二字码智能提取——航司输入支持「中国国际航空(CA)」「四川航空 / 3U」「CA」等多种写法,自动提取二字码联动配色

V4.0.17

  • 珍藏册:「添加行程」——新增火车 / 航班双模式添加入口,切到行程地图打开编辑器,填写保存后自动存入珍藏册与行程地图,并自动切回珍藏册生成票面预览;Esc / 取消同样视为放弃
  • 全球机场库数据升级(数据日期 2026-09-27 → 2026-10-03,体积 466KB → 391KB)

V4.0.16

  • 行程地图:车站库补录 84 站——与 12306 官方站名库全量比对,补齐库中缺失的 75 个营业站;另补入 12306 不发售、仅车站窗口售卖的金山铁路全线 8 站(上海南—莘庄—春申—新桥—车墩—叶榭—亭林—金山园区—金山卫,含「金山卫」),车站库 3329 → 3412 站并新增 8 条区间边
  • 行程地图:未收录站 AI 定位兜底——绘制时遇到车站库中没有的车站,自动调用 Agnes AI 以地图搜索查询其经纬度(WGS-84),校验位于中国范围内后动态加入车站库并重绘行程地图;定位失败的站本会话内不再重复请求,兜底过程不阻断首屏渲染
  • 车站库数据源标注(src)记录本次补录范围(12306 对比缺 75 站 + 金山铁路站售 8 站)

V4.0.15

  • 交通票据工坊:地铁城市选择与公交统一——固定下拉框改为手输输入框 + datalist 联想,输入即联动重绘票面
  • 交通票据工坊:出租车发票城市字段接入编辑表单并写入行程记录(城市与上/下车地点一并进地图)
  • 影演票工坊:票面城市按实际名称显示——不再无脑补「市」:已带行政区后缀(市 / 区 / 县 / 旗 / 州 / 盟 / 省)的原样保留,港澳台与自治区简称回填官方全称,其余维持「××市」
  • 长城市名与长标题两排显示:交通票地铁 / 出租 / 客运标题与影演三票种票面标题超长时对半折成两排并缩小字号,预览与导出一致

V4.0.14

  • 珍藏册:详情面板按票种分型——不再统一套用火车票格式,十类票种各自设计字段组:火车(车次 / 担当车组 / 经由)、航班(航班号 / 执飞机组 / 航线)、公交 / 地铁(线路与上下车站)、出租车(车费 / 里程 / 发票号)、客运(班次 / 座位 / 准点情况)、电影(影院 / 影厅)、景区(区县 / 入口 / 人数)、演唱会(场馆 / 票区),详情标题随票种显示;字段可直接编辑并回写行程簿
  • 珍藏册:按车次自动补全(担当局 / 动车所 / 配属 / 经由站序与线路)仅对火车记录触发,其他票种不再误触发

V4.0.13

  • 行程地图:坐标基准统一——铁路车站库与全球机场库为 WGS-84、地图底图 / 地铁库 / 城市坐标为 GCJ-02,装载时统一经 wgs2gcj 转换为 GCJ-02,全国车站 / 机场定位与底图基准一致
  • 行程地图:坏站坐标修正——保山(原值误标至中朝边境境外,按城市中心逆变换修正)、海阳(莱荣高铁,按莱阳南—乳山南中点插值)、永庆(敦白高铁,按安图西—长白山中点插值);城市坐标修正烟台

V4.0.12

  • 修复:进入工坊时的「清除遗留数据」确认询问重复弹出——改为每打开一次网页最多询问一次,离开模块再进入不再重复询问

V4.0.11

  • 珍藏册票面修正:火车记录缩略图改为优先使用记录自带的工坊字段快照(tk)——它一定对应该记录本身,彻底修复「票面串号 / 画出别人的票面 / 假票面」;缺少快照时回退记录字段,空快照自动忽略
  • 火车票工坊:修复「系统自动导入假票面」——离屏渲染时跳过本地草稿读写,杜绝渲染中的票面字段被写入用户真实草稿;点击进入火车票工坊时询问一次,确认后清理遗留的假票面数据(本地草稿 + 记录上残留的预览图片字段)并清空表单
  • 珍藏册:示例票面导入时将本次渲染快照随记录一并持久化;缩略图不再读取持久化图片,只认当次会话渲染结果;导出记录时仅落盘快照并清除遗留图片字段
  • 珍藏册:存储容量超限时降级保存(丢弃预览图、保留字段快照);「重新生成」连同快照一并清除,航班字段回填后同步清除旧快照
  • 登机牌:珍藏册缩略图字段补全——序号、机场三字码、城市名、英文姓名、航司与配色
  • 登机牌工坊:三字码反查新增「城市名 + 机场名全称」精确匹配兜底(北京大兴 / 成都双流 / 郑州新郑 / 成都天府)
  • 行程地图:记录字段白名单补保留票面字段(到发城市 / 三字码 / 英文姓名 / 序号 / PNR / 配色等),刷新或重导后票面信息不再丢失

V4.0.10

  • 顶栏版本更新检测:提示全程为悬浮窗、不占用页面布局
  • 火车票工坊:新增「二维码开关」按钮(位于「一键清除」右侧)——可显示 / 隐藏票面二维码,导出图片同步生效,开关状态本机记忆
  • 火车票工坊:PDF 导入新增支持铁路电子发票(电子发票(铁路电子客票)),与 12306 行程单共用同一入口(文案改为「行程单/发票PDF导入」);自动回填车次、到发站、乘车日期(避开右上角「开票日期」)、开车时刻、车厢座位、席别、票价、乘车人姓名与证件号、电子客票号
  • 火车票工坊:修复铁路电子发票文字提取为空——内置 29 个 GB / UniGB CMap(约 194KB)离线读取,断网与本地 file:// 打开均可正常解析
  • 火车票工坊:票面文字默认字重由 600 调整为 500;移除鼠标跟随的圆形光圈
  • 珍藏册 / 行程地图:重复导入同一行程(车次 | 日期 | 区间 | 出发时刻 相同)时以「本次导入」为准——新记录覆盖旧记录并保留原 ID,不再跳过
  • 珍藏册:新增详情面板(左票面预览 / 右分块信息,可编辑)与按车次自动补全(担当局 / 动车所 / 配属 / 经由站序 / 线路);修复导入后不显示身份证号、缩略图与工坊预览不一致
  • 行程地图:新增「一键计算里程」(本地运行图优先、AI 兜底),AI 同时估算到达时刻与航距;修复同一行程两点间出现两条线;点击行程不再出现焦点描边圈
  • 登机牌工坊:新增 OurAirports 全球机场兜底库(8591 个机场);城市 / 机场输入框支持中文、拼音、IATA、英文模糊搜索与下拉(优先中国机场);修复导入后不显示票号 / 姓名 / 航司
  • 桌面端应用同步升级至 V4.0.10(Mac arm64/x64 dmg+zip、Windows x64 NSIS 安装包)

V4.0.9

  • 手机端界面全面重构(原生 App 化):整体布局重排为主流 App 视觉——顶部应用栏 + 底部固定标签栏(含 iOS 安全区适配),六大模块按移动端使用习惯重新设计按钮位置与交互流程
  • 火车票工坊:修复滑动卡顿——实现滑动方向锁,横向滑动翻页票面、纵向滑动正常滚动页面,互不劫持
  • 交互统一:行程地图地图控件右下浮动、交通票 / 影演票主操作底部吸附栏、全应用触控目标 ≥44px 标准;珍藏册顶栏工具统一 44px 触控尺寸
  • 桌面端应用同步升级至 V4.0.9(Electron 33 打包,Mac arm64/x64 dmg+zip、Windows x64 NSIS 安装包)

V4.0.8

  • 火车票工坊:修复「导入珍藏册」后票面缩略图背景图与所选款式不一致、部分信息缺失的问题——根因为珍藏册缩略图由外壳在隐藏采集帧中重绘,数据管道三个环节丢失字段:桥接记录未携带底图款式与车厢 / 乘车人 / 票号,行程地图存储白名单不保留这些字段,外壳重绘字段表未传票种
  • 修复:桥接记录补发 carriage / seatNo / name / ticketNo,并以专用 bgType 字段携带底图款式(避开行程地图中 ticketType 表示景区票种标签的同名冲突);normRecord 扩展保留上述票面字段;外壳重绘字段表回传 ticketType 并按「X车YY」正则兼容拆分旧记录的车厢与座位

V4.0.7

  • 火车票工坊:票面底图新增两款版画风格——「蓝雕票」(复兴号列车蓝底版画,源图 1255×772)与「蓝雕磁票」(磁浮列车版画底,源图 1058×655),底图芯片由六款扩为八款
  • 两张新底图保持原始尺寸与画质不变,PNG 转 WebP(quality 80,透明票面边角保留)压缩约 90%(1.9 MB → 186 KB / 1.3 MB → 108 KB);绘制时按 cover 等比铺满画布并居中裁边,与背面自定义底图口径一致
  • 行程地图模块标题随版本链更新为 V4.0.7

V4.0.6

  • 火车票工坊:修复手动填写完整票面后点「导入珍藏册」无反应、始终提示「暂无票面」的问题——批量行程数组仅在 PDF 提取 / 分享链接 / OCR 管线填充,现为其空时用当前表单快照作为单条票面兜底导入(车次 / 车站均为空才维持原提示)
  • 交通票据工坊:城市不再无条件补「市」——港澳台与自治区简称显示官方全称(香港特别行政区 / 澳门特别行政区 / 新疆维吾尔自治区等),已带行政区后缀(市 / 区 / 县 / 旗 / 州 / 盟 / 省,含自治州 / 自治县 / 特区 / 林区)的原样保留
  • 交通票据工坊:长标题自动折行——公交票竖排标题超 7 字均衡拆为多列(最多 3 列封顶 + 省略号,7 字内保持单列避免「公交」被拆断),地铁 / 客运票横排标题超宽自动分两行(均衡断点 + 省略号兜底),预览与导出一致

V4.0.5

  • 行程地图:修复「放大至全屏」按钮无反应(根因为共享主题规则特异性压过 .expanded 类样式);放大缩小按钮旁新增角标开关,一键隐藏 / 显示左上角 HUD 信息卡(行程摘要 / 榜单 / 花费)并同步状态提示
  • 本版未单独推送仓库,内容随 V4.0.6 一并发布

V4.0.4

  • 火车票工坊:票面姓名新增「禁区」约束——姓名只允许绘制在二维码左缘之前(保留 8px 安全间距),放不下时自动折成上下两行(末行保持原基线、首行上移一行),两行仍越界则等比缩小字号并以禁区裁剪兜底;长姓名不再压到二维码上

V4.0.3

  • 珍藏册 → 工坊直接编辑扩展至登机牌工坊:航班记录预填支持机场三字码与中文机场名智能归位(isCode 判定分别写入 fromCode/fromCity 等字段),与到发机场字段口径对齐

V4.0.2

  • 行程地图:新增票种地点库——影城 / 景区 / 演出场馆优先使用实际 POI 坐标,避免把「万象城」等商圈名称误匹配为老挝万象车站
  • 珍藏册 → 工坊直接编辑:珍藏册卡片编辑票面时按各工坊字段口径统一转换预填(影演票 / 火车票 / 交通票三工坊),影演票保留票种专用字段(影院 / 入口 / 人数等)便于再次编辑准确回填;火车票工坊已按珍藏册记录预填时不再用本地草稿覆盖(__prefillApplied 旗标)

V4.0.1

  • 地图 HUD 卡片固定宽度 248px(原自适应),移动端 width:min(190px, calc(100vw - 32px)) 适配;图层控件布局与地图头部动作区微调

V4.0.0

  • 行程地图增强(主版本特性):铁路、航班、票种地点与完整中国底图——全国视图完整可见(含台湾、南海诸岛附图);新增地图榜单悬浮卡(行程距离 / 总时长 / 总费用三张,hover 抬升,移动端自适应)
  • 共享资源去重重构:跨模块重复的内联资源抽取为 shared-* 块(html2canvas 1.4.1、全球机场库、全球航司库、统一 UI 样式、ReactBits 动效脚本、fit 脚本共 7 份),模块内以 <!--jdd-shared:N--> 占位、注入 iframe 前还原——体积与维护性双优化
  • 内置全球机场数据库(aptdata,IATA + 坐标,462KB,数据日期 2026-09-27)与全球航司数据库(airdata,IATA 二字码,459KB,数据日期 2026-09-28)
  • 文件名自本版起增加「-行程地图」后缀;行程地图模块标题携带版本号

第三阶段 · 晚晚吖 V3.0.0 → V3.3.9(2026-09-29 ~ 10-01)

V3.3.9

  • 登机牌 / 交通票 / 影演票工坊预览票面下方新增「动态柔和反射光」(径向渐变椭圆 + 透视形变,颜色随票面主色联动,仅预览装饰、不进入导出图片)
  • 同日留存精简变体快照:晚晚吖-V3.3.9-精简版.html

V3.3.8

  • 珍藏册 / 工坊统一 UI 布局微调:火车票工坊 album-theme 下左列行高配比、底部卡片区 min-height:0 与网格行修正,修复内容区溢出

V3.3.4 ~ V3.3.7

  • 版本快照未留存(本地目录跳号)

V3.3.3

  • 珍藏册展示重构为「行程时间轴」:所有票面按出行时间正序串联成编年史视图(当日曾迭代波浪网格 3D 化、扭环带等展示方案,最终留存快照收敛为单一时间轴视图,后续版本沿用)
  • 同日留存主题变体快照:V3.3.3-新中式弥散水墨版.html、V3.3.3-无弥散水墨版.html(同为时间轴基线)

V3.3.2

  • 3D 视角方向修正:对参考图(Wave Grid / 06 SPATIAL CARD)做像素分析拟合格向量(列向 +10.75°、行向左倾 12.8°、上排更远),修正 rotateX(16deg) rotateZ(9deg);50/50 Playwright 验证通过

V3.3.1

  • 珍藏册网格升级「3D 视角」:perspective 外层 + 网格 rotateX/rotateZ/scale 斜俯视展台感,波浪与选中在倾斜平面内发生;fitTilt() 迭代补偿缩放使投影仍覆盖可用区;测量口径改用不受 transform 影响的 offsetWidth / offsetHeight

V3.3.0

  • 珍藏册示例票面「整齐网格 + 波浪起伏」:9 票种 × 每种 5 实例 = 45 张;网格尺寸按可用区宽高与 2.1 宽高比反算行列(2~14 列遍历取最优);双层 DOM 分离 transform(外层格位 + 内层票面本体);波浪为纯 keyframes + 按行列错峰 delay(波峰沿对角连续传递、行列位置恒定)
  • 选中卡片单独前移突出显示(translateY(-8px) scale(1.13)),关闭平滑归位;新增「波浪起伏 / 停止起伏」开关;网格模式仅在全部记录有示例图时启用
  • 修复:grid 隐式 auto 轨道下 img max-height:100% 失效导致票面被裁(显式 minmax(0,1fr) 轨道修复)

V3.2.1

  • 示例票面排版由两列瀑布流改为「俄罗斯方块」式紧凑补位:天际线(skyline)最矮处补位算法 + 宽降序排序,填充率 62% → 76.8%(五种视口实测 71.5%~82.2%,重叠恒为 0);高度显式按图片比例写死;容器宽变化防抖 180ms 重排

V3.2.0

  • 珍藏册空态新增「导入示例文件」:9 个票种(火车票 / 登机牌 / 公交 / 地铁 / 出租 / 客运 / 电影票 / 景区门票 / 演唱会票)各一张,采集工坊预览框原始票面图(50% 尺寸展示、像素保留高清 2x),瀑布流展示;同时写入 9 条记录到行程地图绘制
  • 采集链路:外壳逐模块加载 → 离屏 .cap-on(1440×1000 强制可见)→ sample-render → 工坊临时套用示例字段经既有导出管线产出 dataUrl → 回执对齐 → 拆除采集态并还原用户内容;示例图仅存当前会话内存

V3.1.14

  • 行程地图右上角三按钮(导入 / 导出 / 添加行程)迁至珍藏册右上角,珍藏册新增顶栏工具区【导入】【导出】【清除所有数据】【添加行程】;跨 srcdoc iframe 通过 postMessage 转发(行程地图按钮 DOM 保留 + hidden)
  • 新增「一键清除所有数据」危险按钮(紧邻添加行程左侧,需二次确认):清除 6 个用户内容键(行程记录、火车票草稿、常用乘客、车次历史、自定义字体、登机牌草稿)+ IndexedDB jdd-ledger 镜像;保留 OCR 密钥、主题、视图偏好等;清除后内存态同步重置(五 iframe 重载 + 珍藏册就地刷新);移动端顶栏逐级适配

V3.1.13

  • 景区票「所在城市 / 所在区县」由下拉改为可手输输入框 + 联动检索筛选(城市双向归一:精确 → 去后缀 → 补后缀 → 前缀扫描)
  • 新增全国 4A / 5A 景区模糊联想搜索:数据源 zh.wikipedia MediaWiki API(5A 374 条 + 4A 5089 条 = 5463 条,gzip+base64 内联 87KB);自定义面板支持「名称·城市·等级」多列展示、连续子串 + 子序列两级模糊评分、5A 加权、键盘 ↑↓/Enter/Escape 与鼠标选择、选中自动回填景区名 / 城市 / 区县;39 项 Playwright 验证通过

V3.1.12

  • 景区票缩至 280.55px(照片带 104px,占比保持 0.3707);票脚收窄加 .sc 作用域前缀防影响其他票种
  • 三票种通用「图片显示区域自定义裁剪」:新增【调整】按钮弹出裁剪面板——缩放 1.00×~3.00×、水平 / 垂直取景 0~100%、恢复默认;background-size + background-position 实现(无 transform / mask,导出与预览逐像素一致);裁剪参数按票种独立保存

V3.1.11

  • 景区票整体变矮约 5%(378.25 → 358.19px),照片带 133px,图片占比不变(偏差 +0.3%);印章同步缩至 48px

V3.1.10

  • 景区票照片带 118 → 140px(照片在白色区域占比 54.8%),票面总高保持不变

V3.1.9

  • 景区门票 / 演唱会票删除自动匹配功能,仅电影票保留(OMDb 链路)
  • 景区图从票面顶部长条移至票面下半部独立照片带 .sc-band
  • 消除渐隐分界线割裂感:底色改横向渐变使海报区恒为纯主色 + 图片层宽度对齐 + 渐隐遮罩改 8 段 smoothstep;修复半像素边界漏色 1px 横线(按行差异剖面法定位)

V3.1.8

  • 影演票工坊三票种「存入行程簿」统一改为「存入珍藏册」(按钮 / toast / 注释);「海报待设置 / 景区图待设置」占位仅预览可见、导出隐藏(.exp-clean 类挂在导出克隆根)

V3.1.7

  • 影演票据工坊新增自定义样式与联网图片能力:三票种(电影票 / 景区门票 / 演唱会票)票面主色 / 辅助色自定义控件 + 实时预览;电影票右侧海报区(豆瓣 / QQMovie-Art 讨论后落地为 OMDb 链路)、景区门票顶部航拍图区、演唱会票海报区,均带左侧渐隐遮罩;自动与手动上传模式共存;取消三票种「纪念票样、非官方凭证」水印及渲染逻辑
  • 票面配色走 CSS 变量(按主色相对亮度自动派生文字与底色);海报图层夹心层级与渐变遮罩层实现(html2canvas 1.4.1 兼容)

V3.1.6

  • 客运票重构为经典公路客票浅色版:参考真实长途客票票样(浅色纸底 + 标题区 + 票价醒目 + 底部条码),左主区(圆托图标 / 告示板路线 / 信息带 3 格 / 条码行)+ 右侧票价竖块(渐变底白字);旧深色版 CSS/HTML 全删;23 项验证通过

V3.1.5

  • 客运票彻底重构为「深色夜行快客」整卡设计(后被用户否决,v3.1.6 重做)

V3.1.4

  • 长途客运汽车票样式微调:横向路线区、明细区 4 格

V3.1.3

  • 修复:导出图片与预览不一致——根因为克隆票面内层元素丢失 #ticket 上的 .tk-* 作用域类致版式 CSS 失效;改为克隆 #ticket 整体(保留作用域类)+ 锁定固定宽度 + 去预览投影
  • 影演票据工坊导出从 foreignObject SVG 栅格化整体替换为 html2canvas 方案(内联 1.4.1 + 离屏克隆 + 固定 2x),文件名 venue-ticket-<票种>-<日期>.png

V3.1.2

  • 交通票票面固定像素尺寸不随窗口缩放(bus 430 / metro 640 / taxi 340 / coach 640),预览面板内部横向滚动;导出尺寸与预览完全一致

V3.1.1

  • 交通票据工坊:公交 / 地铁 / 出租 / 客运四类票面差异化重绘(公交方形纪念卡左竖排色带、地铁横长单程票卡、出租纵向发票条、客运经典版式),保留原有信息字段
  • 左下角【存入行程簿】→【存入珍藏册】并新增【导出图片】(自适应横向布局);删除票面右上角按钮与票面水印(保留下方小字);深浅色主题适配

V3.1.0

  • 登机牌工坊:控制台区块标题「手动编辑」→「细节确认」(含页签 / i18n 词条 / 注释 / AI 识别失败提示 6 处联动);「细节确认」区底部新增【导入珍藏册】,删除右上角【导入行程地图】按钮;按钮 flex+wrap 自适应布局;删除底部 footer 区域;AI 功能描述更新为「由 AI 大模型(Agnes 2.5 Flash)转录票面文字并匹配字段」;全链版本号 V3.1.0

V3.0.10

  • 登机牌工坊控制台与预览模块样式与交通票工坊统一:径向微光底 + 居中展示 + 暖色投影,去除棋盘格台面与装饰外框;删除免责声明与署名文字;「保存为图片」移至编辑区最下方;导出倍数控件移除、固定 2x;卡片高度自适应占位;修复窄屏单列回退被固定双列规则覆盖的 CSS 层叠陷阱

V3.0.9

  • 统一火车票预览模块四按钮(细节调整 / 导出图片 / 导入珍藏册 / 一键清除)高度与圆角:桌面 34px 高 / 8px 圆角,移动端 48px;触屏断点清除芯片与 .btn 同高同圆角

V3.0.8

  • 火车票工坊布局断点修正:桌面断点 70/30 布局在平板断点正确回退为堆叠布局

V3.0.7

  • 火车票工坊 UI 与功能调整:删除【撤销 / 重做】按钮及功能;【一键导入行程地图】迁入车票预览框内改名「导入珍藏册」;【细节调整】移至【导出图片】左侧;删除「编辑右侧表单后跳转到表单」逻辑;预览模块高度自适应缩小;深色主题下按钮图标白色;模块内文字默认字重 500;平板 / 手机预览高度自适应

V3.0.6

  • 登机牌工坊:预览框移至右侧(UI 对齐层,与交通票据工坊布局结构 / 视觉样式 / 组件尺寸 / 交互反馈全面对齐),窄屏单列回退收拢

V3.0.5

  • 修复:导航栏 6 个按钮收缩后与顶部 logo 尺寸不一致、图标巨大溢出——按钮统一 42×42、圆角 13px,图标 20×20 并隐藏文字标签

V3.0.4

  • 主题配色统一为「青瓷绿」,移除其他配色及切换功能
  • 删除「数据本地互通」「版本备份」功能按钮及分隔线;移除所有板块右上角版本号
  • 侧栏收缩状态优化

V3.0.3

  • 登机牌工坊品牌小字:与参考三页统一(仅英文小字)

V3.0.2

  • 版本号显示优化:版本号文本移至「晚晚吖」文字旁
  • 界面元素清理、导航栏图标添加(为左侧模块按钮设计匹配图标)
  • 行程地图功能优化:移除 AI 填充的空余按钮及相关模块,保留核心功能
  • 顶部样式统一:行程地图 / 火车票工坊 / 登机牌工坊对齐影演票据工坊、交通票据工坊、珍藏册
  • 新增设计令牌;侧栏交互:磁吸聚光 · 波纹 · 可折叠(ReactBits 风格动效注入 jdd-fx)

V3.0.1

  • 快照迭代(无独立变更记录留存)

V3.0.0

  • 首个公开快照基线:外壳 + 六模块(行程地图 / 火车票工坊 / 登机牌工坊 / 交通票工坊 / 影演票工坊 / 珍藏册)单文件集成
  • 目录留存开发数据文件(district-data.json、metro-data 等)

第二阶段 · 晚晚吖 V2.x(内部迭代,2026-09-28 前后)

晚晚吖外壳成型期:在火车票编辑器基础上集成行程地图(账本)、登机牌工坊、珍藏册等模块。

本阶段未留存独立快照,以下条目依据 V4.0.3 源码注释考据。

V2.8.1

  • 行程地图:模糊兜底(raw 包含城市名取最长 key、包含站名 key 兼容口语站名);单地点票(电影 / 景区 / 演唱会)退化为城市级单点标记;珍藏册删除 / 修改直接写 localStorage 实现跨模块同步;账本写入格式对齐 {"v":1,"records":[]}

V2.8.0

  • 行程地图:城市坐标兜底——新票种(公交 / 地铁 / 出租车 / 客运 / 影演)地点填城市名即可绘图

V2.7.1

  • 修复:hidden 属性必须始终胜出(.row-3/.ed-sec 等 display 规则会覆盖 UA 的 [hidden])

V2.7.0

  • 全站光场:Aurora 漂移极光(行程地图 / 火车票工坊 / 登机牌工坊统一),独立合成层、仅 transform 动画
  • 登机牌工坊:移除黑夜模式,固定浅色「冷调时刻表」

V2.6.3

  • 登机牌工坊:导入失败诊断框(常驻、可选中复制,替代 2.6 秒即逝的 toast);FileReader → data URL 读取图片;窗口级拖放拦截;就地更新预览不再清空重建

V2.6.2

  • 登机牌工坊:HTTP 错误不再吞掉——区分超时 / 断网 / 接口错误,返回 { error } 供明确提示

V2.6.1

  • 修复:hidden 被 display:flex 覆盖导致空容器(黑块)常驻

V2.6

  • 行程地图:飞行轨迹(虚线航路 + 中段飞机标记,与铁路实线弧差异化);到访城市点亮(柔光晕圈 + 实心点);航班图标采用 Material flight 轮廓

V2.4.5

  • 行程地图:五步分区标题设计(绿皮车 × 现代时刻表:等宽编号 + 点线 + 英文小标)

V2.4.4

  • 行程地图:手机版自适应——触控目标 ≥44px、输入 ≥16px(防 iOS 聚焦放大)

V2.4.1

  • 行程地图:视口锁定——整页不滚动,仅票面列表内部滚动

V2.4.0

  • 行程地图:删除底部图例 + 里程统计条(视觉拥挤)

V2.3.5

  • 行程地图:去掉车票列表上下渐变模糊纱幕

V2.2

  • 布局值迁移:兼容 V2.0/V2.1 草稿中的旧枚举

V2.0 / V2.1

  • 火车票工坊模块的布局枚举初版(V2.2 起提供旧草稿迁移兼容)

第一阶段 · 前身项目「12306 火车票票根编辑器」(V4.0 → V6.2.4)

纯前端单文件的 12306 风格火车票票根编辑器(MIT 开源)。

晚晚吖的「火车票工坊」模块即由该项目的 V6.2.x 内核演化而来。

V4.0

  • 新增:车票背面制作——报销凭证「使用须知」模板、背景与遮罩自定义、正反面合并导出

V4.1

  • 优化:背面排版——主标题与条款区上移,顶部留白更透气

V4.2

  • 修复:背面制作交互——按钮高亮残留、行程标签显示、遮罩与取消逻辑优化

V4.5

  • 新增:导出体验统一——单张直接下载、多张自动打包 ZIP;背面制作支持按行程独立款式

V4.6

  • 优化:导出文件名规范——统一「车次_日期_站名」命名,导出图片带「正面 / 背面 / 正反面」后缀

V4.9

  • 新增:PDF 智能导入——解析 12306「行程信息提示」PDF 自动回填字段;手动修改优先,空白不覆盖
  • 新增:站点 / 车次输入智能联想补全,站名拼音自动联动

V4.9.1

  • 修复:行程信息独立管理——每条行程独立数据副本(深拷贝隔离),交叉编辑互不污染

V4.9.2

  • 优化:界面全面重构——「铁路信号台」设计语言,重绘全套图标,适配明暗双主题

V4.9.3

  • 修复:检票口为「数字+英文」组合(如 21A、24A25A)时 PDF 自动识别导入失败(适配新版 12306 PDF 标签与值拆分)

V5.0

  • 新增:4 款新车票底图——蓝纸票、蓝磁票、红纸票、红磁票(正面背面均可选用,约 4.3MB → 0.5MB 压缩优化)
  • 新增:主界面「更新日志」按钮
  • 优化:正面预览排版微调;修复检票口「数字+英文」组合识别失败

V5.1

  • 优化:车票正面 6 款底图排版优化(检票口与票号底部对齐、字段以出发时间为基准左对齐、二维码与虚线框底部对齐等)
  • 修复:车次号后方残留「、」符号;PDF 导入后票号错位(电子票号与订单号写入位置对调)

V5.2

  • 修复:PDF 导入票号识别映射(电子票号 21~25 位 → 顶部红色票号;订单号 → 取票机编号 + 票号组合);蓝纸票模板顶部红色票号与检票口下移至票面边界内

V5.3

  • 新增:「细节调整」悬浮窗——占界面 80% 面积的模块级精修:单击锁定 + 高亮框 + 名称标签,位置四向微调(步长 1/2/5/10px,支持方向键)、字号 / 二维码大小(50%~200%)、字间距(-4~+20px)、文字粗细(400~800);18 个独立模块;实时预览、自动保存、按票种独立记忆、可单模块 / 整版重置

V5.4

  • 修复:主界面预览框与细节调整悬浮窗底图整体丢失(V5.3 回归)——drawImage 实例级包装将 3 参调用误以 5 参转发导致 undefined→NaN 画布静默跳过绘制,包装层改为按参数个数转发

V5.5

  • 新增:多行程同步渲染——细节调整关闭悬浮窗时自动同步其他行程并重渲染;模块批量多选与对齐(水平 / 底部 / 居左 / 居中 / 居右,主选基准)
  • 修复:字间距仅对数字生效(段间间隙与段内字符间隙统一);PDF 导入区溢出异常(状态条移出拖放区)
  • 新增:调试钩子(__dtState / __dtAlign / __dtClose / __dtSyncOtherTrips)

V5.6

  • 修复:PDF 多份导入跨行程污染(提取管线全局互斥标记);移动端导出失败(夸克 / UC 内核改走 toBlob → Blob URL → a.download,触屏「长按保存」浮层);老内核 PDF 组件加载失败无反馈(检测并提示升级)
  • 优化:所有按钮 / 滑块 / 底图芯片统一 touch-action: manipulation;导出前二维码就绪检测(≤400ms)

V5.7

  • 新增:模块级字体自定义——内置 Arial、微软雅黑、宋体、黑体、Times New Roman 五种字体 + 「默认(跟随票面)」,按票种独立记忆
  • 新增:自定义字体导入——上传 TTF / WOFF / WOFF2(FontFace API 注册),保存于本机浏览器 localStorage,分享链接自动回退

V5.8

  • 新增:「跳转PDF官方下载」按钮——新标签页打开 12306 官网,原生 <a> 外链复用 .btn/.btn-mini 样式

V5.9

  • 修复:导出图片缺二维码 / 批量导出 ZIP 跨行程旧码——二维码竞态问题,导出统一改为条件等待(二维码就绪 + 画布打标 __qrPainted,80ms 轮询、3 秒超时兜底),单张 / 批量 / 背面三条导出路径全部接入

V6.0

  • 新增:「纸质票拍照识别(OCR)」功能模块——票面文字本地识别并一键回填(车次、到发站、日期时间、车厢座位、席别、票价、姓名证件号、检票口、双票号等)
  • 新增:本地 OCR 双引擎(默认高精度 PP-OCRv5,PaddleOCR 官方浏览器 SDK / ONNX Runtime Web;轻量引擎 Tesseract.js 回退),模型按需 CDN 懒加载并缓存于 IndexedDB,识别全部在本地完成
  • 新增:票面智能裁剪与照片方向探测(Otsu 阈值 + 行列投影;竖拍横票 0°/90°/180°/270° 判向;灰度化 + 分位对比度拉伸)
  • 新增:站名智能解析(全国站名库拼音反查,编辑距离 ≤2 模糊兜底);批量识别队列;CSV 数据导出(UTF-8 BOM,17 列)
  • 优化:「一键清除」迁至顶栏;「存放常用旅客」并入「乘客与备注信息栏」
  • 修复:全展开布局卡片区挤压重叠问题

V6.1

  • 优化:桌面端「纸质票扫描识别」布局重构——完整操作流程移入独立悬浮窗口(可拖拽,约 680×480),卡片只留紧凑入口行;移动端与窄屏保持卡片内自适应布局

V6.2

  • 新增:拍摄角度自动矫正(Otsu 二值化 + 最大连通域 + 极值角点 + 单应变换拉正,按标准票幅 85.6:54 裁剪)
  • 新增:本地引擎升级为 PP-OCRv6(PPLCNetV4 统一骨干,纯本地推理,首次下载约 30MB 模型后可离线);PP-OCRv5 保留为「高精度引擎」
  • 新增:联网 OCR 备选引擎 OCR.space(仅用户明确选择并二次确认后上传,云端失败自动回退本地)
  • 优化:识别悬浮窗默认尺寸屏幕 50%;识别进度条改为标题栏下方独立顶条(流光渐变 + 第 N/M 张整体进度)

V6.2.1

  • 修复:车厢号 / 座位号 / 检票口识别为空——三级兜底(标签式正则 → PP 引擎检出框位置感知补全 → 裁剪放大补盲重识别)
  • 修复:「一键清除」不清除导入数据(确认旗标 __clearConfirmed 门控替代按钮文案判断);联网引擎切不回本地引擎(引擎芯片即时刷新)
  • 优化:照片添加后立即自动矫正(透视矫正 + 标准票幅 1600×1009 裁剪 + 「已矫正」角标);扫描识别界面参照 PDF 导入样式重排
  • 新增:第二个联网引擎「百度 OCR」(百度智能云文字识别标准版,免费 500 次/日,Key 仅存本机,凭证缓存 30 天)

V6.2.2

  • 修复:导入纸质火车票「点击添加 / 拖入没有反应」——OCR 模块初始化 TypeError 中断脚本装配(V6.2.1 引入),初始化移至常量定义后并加 try/catch 兜底
  • 加固:添加 / 拖入链路反馈统一走 pickFiles();支持 HEIC / HEIF / AVIF / TIFF 格式(iPhone HEIC 不再被静默过滤);拖入新增 filesFromDrop() 兜底
  • 优化:缩略图 blob URL 延迟回收,控制台不再刷 net::ERR_FILE_NOT_FOUND

V6.2.3

  • 新增:AI 识别引擎(Agnes 3.0 Flash)并设为默认——视觉大模型直接「看」票面照片输出逐行文字,OpenAI 兼容接口接入,内置体验 Key,云端失败自动回退本地引擎
  • 调整:照片添加成功后自动弹出识别悬浮窗;引擎选择移入悬浮窗
  • 优化:AI 引擎跳过本地多角度方向探测,每张照片只上传一次

V6.2.4

  • 修复:卡片虚线框内状态文字与提示文字重叠——出现状态消息时提示文字自动隐藏、由状态条取代,清空后恢复
  • 修复:一级界面卡片「添加 / 清除已导入图片」按钮文字溢出——按钮列由固定 88px 改为随内容自适应
  • 调整:识别悬浮窗操作按钮行重排(添加 / 开始识别 / 生成车票 / 清空同级等高);状态提示移入虚线框内覆盖层显示;窗内内容重排(识别引擎 → 按钮行 → 结果列表 → 导出 CSV)
  • 精简:隐藏 Agnes API Key 配置行——体验 Key 写入底层代码,默认 AI 引擎开箱即用
  • 新增:拍摄方向自动矫正(0°/90°/180°/270°),上下颠倒的照片先转正再识别
  • 优化:识别悬浮窗尺寸提升至屏幕 70%(原 50%)