|
|
4c7245f919
|
feat: 升级 zPDF_package 子模块,PDF 页签删除任务去掉二次确认
子模块指针 4d12b61 -> a48e601:
- JobList.vue 删除任务的 confirm() 二次确认弹窗移除,点击即删(软删,管理员可恢复)
- i18n 移除已无引用的 deleteConfirm/deleted/deleteFailed 文案
|
2026-07-27 17:35:40 +08:00 |
|
|
|
ae540a1a70
|
feat: PDF 页签从 iframe 改为构建期组件挂载,清理 iframe 配置与文档
前后端分离:UI/交互在 zPDF_package,能力由 zTools2 的 /api/pdf/* REST API 提供。
组件经同源 fetch 调用,httpOnly cookie(zk_pdf)经反代第一方自动携带,无需 CORS。
与 timeTableFix 集成范式完全一致。
- src/modules/pdf/Pdf.vue:iframe 包装器重写为组件挂载包装器,套 PageShell +
透传 :locale;删除 pageSrc/getLiveness/scheduleFailCheck/openExternal 等 iframe 逻辑
- src/modules/pdf/index.js:注释从 iframe 改为构建期组件 import(requiresAlive 探针保留)
- src/config/app.config.js:移除 pdf.pagePath(iframe src),保留探针配置
- src/i18n/{zh-CN,en}.js:移除 pdf.openExternal(iframe 降级按钮文案,已无用)
- docs/submodule-zPDF_package.md:集成方式改为构建期组件 import,补 cookie 认证说明
- docs/deployment.md:拓扑去 /api/pdf 页面行,措辞改为组件 fetch
- third_party/zPDF_package:子模块指针升级到 4d12b61(去 iframe 表述)
|
2026-07-27 17:14:07 +08:00 |
|
|
|
304ebc9448
|
feat: 配置简化为同源相对路径,统一 /api/ 路由约定
配合 zTools2 路由统一到 /api/,简化环境感知配置:
- app.config.js:去掉 BASE_URL 的 dev/prod 分支,iframe 与探针一律用同源相对路径
(/api/pdf、/api/health、/api/wb-page/{id}),默认空 baseUrl;保留 VITE_API_BASE 覆盖。
这样无论 dev(vite proxy)还是任意部署环境(反代),同源相对路径都自动指向当前环境 zTools2,
不再误打到 f.zikai.wang 等其它环境域名。
- vite.config.js:dev proxy 从 /api /pdf /health /static /upload /files /wb /ws 多条
简化为单条 /api(含 ws:true,覆盖 /api/ws WebSocket)。
- deploy.sh:Apache vhost 从多条 ProxyPass 简化为单条 /api/,a2enmod 增加 proxy_wstunnel。
- docs/deployment.md:更新拓扑/模式说明,新增路由约定(所有入口在 /api/ 下,反代只需一条规则)。
- 同步更新 zPDF_package 子模块指针(其 vite proxy 亦简化为单条 /api)。
|
2026-07-27 15:44:49 +08:00 |
|
|
|
39f3056099
|
feat: 环境感知配置(dev 经 vite proxy 指向本地 zTools2,prod 指向 f.zikai.wang)
修复 PDF 页签在开发环境返回 {"detail":"Not Found"}:
此前 baseUrl 始终指向线上 f.zikai.wang,开发环境跨域访问线上
既无法命中本地 /pdf 路由又会暴露生产。
- app.config.js: BASE_URL 按 import.meta.env.PROD 切换
dev -> ''(同源,经 vite proxy 转发到本地 zTools2)
prod -> https://f.zikai.wang(同源)
VITE_API_BASE 可显式覆盖
- vite.config.js: dev server 新增 /api /pdf /health /static /upload
/files /wb /ws 代理到 127.0.0.1:6867,使 iframe 与 fetch 同源命中本地服务
测试环境指向测试环境,生产环境指向生产环境。
|
2026-07-27 13:59:50 +08:00 |
|
|
|
66f93c67f5
|
feat: 新增整体部署脚本与部署指南(组件独立/整体/持久化三模式)
- deploy.sh:整体部署,构建 zMainPage + rsync 到 /var/www/html + 配置
Apache 反代(/api /pdf /pdf-admin /static 等到 zTools2)+ 重启后端
- docs/deployment.md:三种部署模式文档(组件独立开发 / 整体生产 / systemd 持久化)
- README:补部署指南链接
|
2026-07-27 13:52:40 +08:00 |
|
|
|
04f11b5432
|
feat: 新增 PDF 转换页签(iframe 嵌入 zTools2 /pdf,zPDF_package 子模块)
mainPage 用 iframe 嵌入 zTools2 同源托管的 /pdf 页面(PDF 转换:上传 epub、
进度显示、下载、用户软删/管理员硬删)。同源使 cookie 第一方生效,无需 CORS。
- src/modules/pdf/:页签模块(requiresAlive 存活校验 + iframe + 降级提示)
- src/config/app.config.js:新增 pdf 服务配置(baseUrl/healthPath/pagePath)
- i18n:tabs.pdf 中英文案 + pdf.openExternal
- third_party/zPDF_package:git submodule(源码管理,iframe 集成非构建期编译)
- docs/submodule-zPDF_package.md:集成/升级/移除文档
- README:更新结构、子模块列表、文档链接
|
2026-07-27 11:35:28 +08:00 |
|
|
|
3e5c1d5494
|
feat: 升级 timeTableFix 子模块(时区选择)+ 修正 README 构建路径
- 子模块 timeTableFix 升级至时区选择版本:加载自动检测用户时区,取不到
回退墨尔本;仅作新建事件默认 tzid 与下载 ICS 的 X-WR-TIMEZONE,不换算
- 修正 README:构建输出到 dist/(非 /root/html),由 npm run deploy rsync
到站点根;补 npm run deploy 命令;细节记于 docs/readme-fixes.md
- 集成构建验证通过(npm run build)
|
2026-07-27 09:51:43 +08:00 |
|
Zikai
|
1379e1a607
|
build: 稳定文件名去hash + HTML压缩 + deploy脚本
- vite.config.js: 文件名去掉 [hash],输出到项目本地 dist/(emptyOutDir=true
避免旧 hash 残留堆积);新增 html-minifier-terser 插件压缩 index.html。
- package.json: 新增 deploy 脚本,build 后用 rsync 把 dist/ 的 mainPage
命名空间子目录同步到 Apache 站点根 /root/html,--delete 仅作用于 mainPage
子目录,不误伤既有旧文件(jquery/pdf.js 等)。
- 站点始终由 Apache 静态服务(DocumentRoot /var/www/html),无 Node 实时渲染。
|
2026-07-24 09:34:22 +00:00 |
|
Zikai
|
cb50c23c84
|
chore: 页脚移除 'Built with Vue 3' 字样
- 页脚仅保留版权年份,去掉技术栈宣传文字
- 同步更新 timeTableFix 子模块 gitlink(导入按钮高亮)
- 移除无用的 .footer__dot 样式
|
2026-07-24 09:25:37 +00:00 |
|
Zikai
|
05a594d0cb
|
docs: 更新 timeTableFix 子模块 gitlink
|
2026-07-24 09:16:24 +00:00 |
|
Zikai
|
08c1b457e4
|
docs: 精简 README(结构/依赖/使用),更新子模块 gitlink
- mainPage README 精简为结构/外部依赖/如何使用/开发命令
- 子模块 z449 (9ed486c) / timeTableFix (78d7afe) README 同步精简,细节移至各自 docs/
|
2026-07-24 09:15:38 +00:00 |
|
Zikai
|
d9309756c7
|
fix: 子模块 i18n 桥接 -- 透传 :locale prop,修复嵌入页显示 i18n ID
根因:子项目组件用 useI18n({useScope:'global'}) 注入,嵌入时解析到宿主
mainPage 的 i18n 实例(不含子项目文案)-> 文案回退成 key(显示 ID)。
修复:
- z449 / timeTableFix 组件改用 useLocale composable 直读自身模块级 i18n 实例
- ttf 新增独立 i18n(中英 locale + useLocale),抽取所有硬编码中文
- mainPage 侧 Timetable/MobileGameWrapper 包装器透传 :locale prop
- 两个子模块 gitlink 更新至各自修复 commit
验证:构建后两个子模块 chunk 含真实中文文案,无 useI18n 注入残留
|
2026-07-24 09:02:38 +00:00 |
|
Zikai
|
6ad6c15e9d
|
feat: 拆分移动游戏项目为独立 z449 子模块(git submodule + i18n prop 桥接)
- mobile-game 模块源码迁出至独立仓库 z449(third_party/z449),独立可渲染/维护
- z449 App.vue 为便携式组件:自带独立 vue-i18n 实例与 locale 文案
- mainPage 侧 MobileGameWrapper 透传 :locale prop,子模块 watch 同步语言
- mainPage i18n 精简:仅保留 tabs.mobileGame,删除 mobileGame.* 大块文案
- 文档:新增 docs/submodule-z449.md,更新 README/architecture/add-module
|
2026-07-23 07:04:08 +00:00 |
|
|
|
61e65052d4
|
fix: 补语义令牌修复嵌入页下载按钮不可见 + 停用 /ttf/ 独立入口
- variables.css 补 --success/--danger/--warn 等语义令牌:timeTableFix 嵌入时
其按钮(btn-success/danger)依赖这些令牌,缺失会导致背景/边框为空、按钮不可见
- docs/submodule-timeTableFix.md 移除 /ttf/ 独立访问说明(已停用)
- 升级 timeTableFix 子模块至 2d7b8d0(README 移除 systemd 部署)
|
2026-07-23 04:46:40 +00:00 |
|
|
|
b3960f503a
|
docs: 移除 systemd 部署与 /ttf/ 独立入口说明
本项目仅作为 mainPage submodule 集成,无独立线上入口。
保留独立开发/测试说明(npm run dev/test/build)。
|
2026-07-23 04:45:49 +00:00 |
|
|
|
b511998372
|
chore: 升级 timeTableFix 子模块至 c68d106(前端视觉与 mainPage 协调)
子模块前端改为浅色极简 + 靛蓝主色,与主页视觉统一;
设计令牌对齐,嵌入时由宿主 :root 令牌驱动。
|
2026-07-23 04:24:34 +00:00 |
|
|
|
4334dec00d
|
docs: 精简 README,细节拆分到 docs/
README 仅保留概览/结构/基础设施/安装/开发命令;
架构、新增页签、子模块管理细节移至 docs/ 下三个 md:
- docs/architecture.md:模块注册/PageShell/KeepAlive/存活校验
- docs/add-module.md:新增页签步骤 + 元数据字段速查 + 常见变体
- docs/submodule-timeTableFix.md:submodule 升级/clone/移除/独立访问
|
2026-07-23 04:09:42 +00:00 |
|
|
|
a844f364dc
|
refactor: 引入 PageShell 统一页面外壳,高内聚低耦合
- 新增可复用 PageShell 组件(titleKey/fluid/padded + actions 插槽),
统一容器宽度(1080px)、垂直节奏与标题,消除各模块重复包裹
- whiteboard/calendar/mobile-game 全部改用 PageShell,去掉各自手写的
.container/.__inner/.__title 重复样式;calendar 用 fluid 全宽变体
- timetable 改用 mainPage 侧包装器 Timetable.vue:import 子模块 App.vue
套 PageShell(对齐其他页宽度),并持有 KeepAlive 匹配名 name:'timetable'
- 子模块 timeTableFix 的 App.vue 去掉 defineOptions(保持纯净),name 约定
由 mainPage 包装器持有,消除跨仓库脆弱约定;submodule 升级到 17aeea8
- 注册表清理:去掉无效 try/catch,order 缺省改 999(避免与 hidden 页 99 冲突),
注释文档化全部元数据字段与 KeepAlive 约定
- 新增页签照 timetable 模式复用 PageShell,注册方式一致
|
2026-07-23 04:04:40 +00:00 |
|
|
|
91d55f1b11
|
feat: timeTableFix 改为构建期组件集成 + git submodule
- 弃用 iframe 嵌入:直接 import 子模块 timeTableFix 的 App.vue 为懒加载路由
组件,共享 mainPage 构建/依赖(ical.js)/KeepAlive 缓存,无运行期割裂
- git submodule 接入 third_party/timeTableFix(固定到 a49a725),.gitmodules
使用无凭据 URL;.gitignore 忽略子模块 node_modules
- 删旧 iframe 包装组件 Timetable.vue,移除 app.config 中 timeTableFix 配置
- timetable 模块不再 requiresAlive(构建期已打包,无远程依赖)
- README 更新:项目结构、submodule clone/升级流程、存活校验描述
- 子模块样式隔离(scoped + ttf- 前缀)已在 timeTableFix 侧完成,无泄漏
|
2026-07-23 02:54:00 +00:00 |
|
|
|
7d81da65cf
|
feat: 新增日程整理页签(iframe 嵌入 timeTableFix /ttf/)
- 新增 timetable 模块:iframe 嵌入同源 /ttf/(Apache 反代到本地 vite preview)
- 声明 requiresAlive 探测 /ttf/,复用现有存活校验:周期探测、失活隐藏页签
并卸载组件、恢复自动重载(与其他 requiresAlive 模块一致)
- app.config.js 新增 timeTableFix 配置(pageUrl / healthUrl)
- timeTableFix 作为独立项目维护(独立仓库/构建/systemd),mainPage 仅嵌入,
删除该模块文件夹不影响 timeTableFix 本身与其他页签
- i18n:tabs.timetable(日程整理 / Schedule Organizer)
|
2026-07-23 02:25:54 +00:00 |
|
|
|
711026be9f
|
feat: 隐藏页签持久可见 + 页签切换不卸载 + 白板周期存活探测
- 隐藏页签(cqy)访问后保持可见:路由进入即标记 visited,切走不再消失
- 页签切换默认不卸载组件:<KeepAlive :include> 缓存全部模块组件
仅声明 requiresAlive 的模块在服务失活(down)时移出 include -> 卸载
- 白板存活检测改为加载即探测 + 每 30s 周期重探(startPolling),
状态在 up/down 间响应式翻转,不再一次性固化
- 各模块组件 defineOptions name 与模块 id 一致,便于 KeepAlive 精确匹配
|
2026-07-22 03:20:48 +00:00 |
|
|
|
2c33457c87
|
fix: 白板页改用 .container 容器,与移动游戏项目页一致的左右留白
|
2026-07-22 02:53:05 +00:00 |
|
|
|
370388e729
|
fix: 白板页签乐观显示 + 白板切换输入框 + /whiteboard/{id} 直链
- 存活逻辑改为乐观显示:探测中(pending)/存活(up) 都显示页签,仅明确
不可达(down) 才隐藏。修复首屏看不到页签、需刷新才出现的问题
- 白板页加 ID 输入框与切换按钮,可切换不同白板,默认 share
- 路由支持 /whiteboard/:boardId 可选参数,直链访问自动填入输入框并切换
- 模块可声明 param 让路由表生成子路径,保持注册表驱动
|
2026-07-22 02:43:26 +00:00 |
|
|
|
b5dcf924fb
|
feat: 新增共享记事本页签(iframe 嵌入 + 存活校验)与集中配置
- 新增 whiteboard 模块:iframe 嵌入 f.zikai.wang/wb/shared,骨架屏+降级外链
- 存活校验:模块声明 requiresAlive,启动时 no-cors 探测 /health 一次,
服务挂掉则隐藏页签(刷新页面才重探)
- 集中配置 src/config/app.config.js:白板 URL/探针/默认记事本 id 统一管理
- 容错强化:注册表/路由/useProjects 单模块异常不影响其他页签,删除一个页签
仅需删其模块文件夹并重新 build
- i18n:tabs.whiteboard / common.serviceUnavailable / whiteboard.openExternal
- README 精简重写:仅保留项目结构、基础设施、Ubuntu 从0安装、新增页签
|
2026-07-22 02:22:59 +00:00 |
|
Zikai
|
19b301b937
|
fix: 日历用全宽(突破 .container 1080px 限制)
日历页改用全宽容器(calendar-page__inner,max-width:100%),
不受全局 .container 的 1080px 限制,仅留左右内边距。
宽屏 1400px 时 frame 从 1032px -> 1352px,iframe 1350x843;
窄屏仍自适应。aspect-ratio 默认 16:10(min-height 500px),
窄屏回退 4:3。
|
2026-07-13 14:17:49 +00:00 |
|
Zikai
|
337d516c08
|
fix: 日历页显示页签+页签样式优化+iframe自适应+骨架屏
- useProjects: 访问 hidden 模块(/cqy)时仍显示其页签并高亮,
让用户知道当前位置;主页仍隐藏日历页签
- TabNav: 非激活页签加圆角背景与 hover 背景反馈,激活页签
下边线贯通整宽,更像页签
- Calendar: iframe 去除固定 800x600,改 width/height:100% +
aspect-ratio 自适应(宽屏16:10,窄屏4:3,min-height 400px)
- Calendar: 加载骨架屏覆盖层(iframe @load 后淡出),
iframe 始终在 DOM 中确保 load 事件触发
- i18n: 日历页签文案改「cqy课程表」/「CQY Timetable」
headless 验证:/cqy 显示页签且激活、hover 有背景反馈、
iframe 自适应宽窄屏、骨架屏加载后淡出
|
2026-07-13 14:13:23 +00:00 |
|
Zikai
|
49900d2363
|
feat: 添加隐藏日历页 /cqy(谷歌日历,不在导航显示)
- 新增 calendar 模块(Calendar.vue + index.js),路由 /cqy
- 模块 meta 设 hidden: true,useProjects 过滤隐藏模块,
TabNav 不显示日历页签,仅能手动访问 zikai.wang/cqy
- Calendar 组件懒加载(独立 chunk),默认页不下载
- iframe 嵌入谷歌日历(周视图),iframe loading=lazy
- 既有 .htaccess SPA 回退已覆盖 /cqy,线上 200
headless 验证:默认页无日历页签且不加载 Calendar chunk;
直接访问 /cqy 渲染 iframe 且加载 chunk;TabNav 仍只有移动游戏
|
2026-07-13 14:00:03 +00:00 |
|
Zikai
|
c6dad2b79a
|
refactor: 高内聚低耦合 - 配置集中化与 i18n 统一
结构优化:
- 新增 mobile-game/config.js:集中模块静态配置(资源路径、排行榜端点、
hero meta、子标签页定义),消除散落在各组件的硬编码
- 新增 composables/useLocale.js:共享语言辅助(t/isZh/pick),
消除 6 个组件各自重复定义的 L() helper
- 文案全部迁入 i18n locale(mobileGame 命名空间),消除模板内联 L('中','英')
- 数据文件 versions.js 去除 {zh,en} 对象,文案改由 i18n 键(tracks/versions)取
- 各组件改为读 config + t(),不再直接 useI18n,降低与 i18n 实现的耦合
headless 验证:中文(hero/meta/team/timeline/3D置顶) + 英文切换 + 切回中文 全通过
|
2026-07-12 16:08:25 +00:00 |
|
Zikai
|
b3556b8639
|
perf: 子标签页按需加载(代码与元素懒加载)
原 v-show + 静态 import 导致三个子标签页的组件代码全部打进 MobileGame
chunk,且首屏即渲染全部(排行榜 onMounted 立即发 AJAX、视频元数据加载)。
改为:
- 三个标签页内容拆为独立组件 TeamLeaderboardTab/IterationsTab/ExperimentTab
- MobileGame 用 defineAsyncComponent + 动态 import,Vite 拆成独立 chunk
- v-if + Suspense:未激活的标签页组件根本不挂载(不发 AJAX、不渲染)
构建产物可见三个独立 chunk;headless 验证:默认团队页仅加载 team chunk,
点迭代记录才加载 IterationsTab chunk,点实验才加载 ExperimentTab chunk。
|
2026-07-12 15:44:39 +00:00 |
|
Zikai
|
88979a68c2
|
fix: 去掉「作品集」与「角色/主开发」字样
- 品牌栏与页面标题移除「作品集」副标题,仅保留 Zikai
- HeroSection 移除「角色: 主开发/Lead Developer」meta 项
- TeamCard 移除成员角色(主开发/开发/团队),仅显示姓名
- 清理 i18n locales 中无用的 subtitle 字段及 App.vue 对应样式
|
2026-07-12 15:41:56 +00:00 |
|
Zikai
|
8e08e619fc
|
fix: 时间显示/3D线置顶强调/子标签页重构
1. fix(HeroSection): period 为 {zh,en} 对象却直接渲染导致显示 [object Object],
改为字符串 '2022'
2. feat(timeline): 3D滚球(最终形态)线移到最前并 featured 强调(渐变背景+★+实心3D徽章),
其后用分隔标记提示「早期并行演进:2D线」
3. refactor(MobileGame): 团队+排行榜/迭代记录/实验 改为平级子标签页(SubTabs),
默认显示团队+排行榜;新增 SubTabs.vue 通用子标签组件
headless 验证:默认页(团队+排行榜) -> 迭代记录(时间线) -> 实验(视频) -> 切回 全通过,
中英文子标签页文案正常
|
2026-07-12 15:34:30 +00:00 |
|
Zikai
|
0adb320a47
|
docs: 部署节更正为 Apache + 补充 SPA .htaccess 回退说明
实际对外服务是 Apache 2.4(非 nginx),DocumentRoot /var/www/html。
history 模式下直接访问 /mobile-game 会 404,已用站点根 .htaccess 回退
(该文件不纳入本项目仓库,仅文档说明)。
|
2026-07-12 15:24:34 +00:00 |
|
Zikai
|
e8dee338ed
|
fix: EN切换失效、删除贡献者描述、版本按演进线分组(2D->3D)
- fix(i18n): composition 模式下响应式 locale 在 i18n.global 上(非 i18n.locale),
loadLocaleAsync 与 useI18nLazy 改用 i18n.global.locale;
useI18nLazy.current 改为派生自全局 locale 的 computed(单一数据源);
各组件 useI18n() 加 useScope:'global' 确保读到同一 composer。
headless 验证:默认中文(不下载EN chunk)->点EN加载en.[hash].js并切英文->切回中文 全通过
- content: 删除 MobileGame 概览中「主要贡献者 Zikai Wang... Hongxiang He...」句子
- timeline: 版本数据改为多演进线并行(zikai-ui/main/doby/roll-a-ball),
每线带 2D/3D 形态标记,3D 线前显示「形态转变:2D -> 3D 滚球」转折标记
|
2026-07-12 15:03:04 +00:00 |
|
Zikai
|
15af291da0
|
feat: init mainPage portfolio site
Vue 3 模块化作品集主页,浅色极简风格,中英双语懒加载 i18n。
- 模块注册表(import.meta.glob)约定式收集项目模块,新增页签无需改导航/路由
- i18n: 中文同步注入主 chunk,英文动态 import() 拆独立 chunk,仅切换时下载
- 第一个页签 mobile-game: 展示 448/449 移动游戏毕设(概览/截图轮播/版本时间线/团队/排行榜/ML视频)
- 排行榜复用 /449/449rest.php,失败优雅降级
- 构建: vite outDir=/root/html,emptyOutDir=false,产物用 mainPage/ 命名空间
- 样式: CSS 变量令牌,无 UI 框架运行时依赖
|
2026-07-12 14:18:35 +00:00 |
|