Commit Graph

75 Commits

Author SHA1 Message Date
6a45d0ab06 feat: 重构 PJAX 事件处理器,添加 Mermaid 渲染支持
- 优化 pjax:beforeReplace 事件:
  - 添加详细的需求映射注释(需求 1.1-1.4)
  - 明确说明清理内容包含 Mermaid 实例
- 优化 pjax:complete 事件:
  - 添加 Mermaid 图表渲染调用(需求 3.6)
  - 添加 MathJax 和 KaTeX 渲染注释
  - 添加用户自定义回调注释
  - 满足需求 1.5, 1.6(模块初始化和错误隔离)
- 优化 pjax:end 事件:
  - 添加需求映射注释(需求 1.7)
  - 保持现有功能不变
- 更新顶部注释说明:
  - 明确包含 Mermaid 渲染
  - 添加完整的需求映射说明

满足需求:1.1-1.7, 3.6
2026-01-25 00:41:35 +08:00
1781e3bd79 feat: 优化 Lazyload 生命周期管理
- 添加全局 lazyloadScrollHandler 变量,用于降级方案的清理
- 优化 lazyloadInit() 函数:
  - 增强 Observer 存在性检查,添加 try-catch 错误处理
  - 清理旧的滚动监听器(降级方案)
  - 添加详细的调试日志
  - IntersectionObserver 初始化失败时自动降级
- 优化 loadImageOptimized() 函数:
  - 使用 requestAnimationFrame 优化 DOM 操作
  - 图片加载失败时取消 Observer 监听
  - 没有 data-src 时取消 Observer 监听
- 优化 lazyloadFallback() 降级方案:
  - 保存 handler 引用到全局变量
  - 所有图片加载完成后自动清理监听器
- 优化 cleanupLazyloadObserver() 函数:
  - 同时清理 Observer 和滚动监听器
  - 添加完善的错误处理
- 移除 cleanupEventListeners() 中的重复清理代码

满足需求:2.1, 2.2, 2.4, 2.5, 3.1-3.3, 8.2
2026-01-25 00:31:33 +08:00
8180a87b89 feat: 实现统一的资源清理管理器
- 封装 cleanupPjaxResources() 函数,统一管理所有资源清理
- 添加 cleanupLazyloadObserver() - 清理 Lazyload Observer
- 添加 cleanupZoomifyInstances() - 清理 Zoomify 实例
- 添加 cleanupTippyInstances() - 清理 Tippy 实例
- 添加 cleanupMermaidInstances() - 清理 Mermaid 实例和事件监听器
- 添加 cleanupDynamicStyles() - 清理动态 style 标签
- 添加 cleanupDynamicScripts() - 清理动态 script 标签
- 添加 cleanupEventListeners() - 清理事件监听器
- 每个清理函数都包含错误处理和调试日志
- 满足需求 1.1-1.4, 2.3, 6.1
2026-01-25 00:20:33 +08:00
dde868021e feat: 添加 Mermaid 图表拖拽和提示功能
- 添加鼠标左键拖拽移动图表
- 拖拽时显示 grabbing 光标,平时显示 grab 光标
- 添加底部提示文本:按住 Ctrl+滚轮缩放 | 拖拽移动
- 提示文本鼠标悬停时显示,支持夜间模式
- 防止拖拽时选中文本
2026-01-24 23:41:02 +08:00
a163e7a2a0 feat: 添加 Mermaid 图表缩放功能
- 图表容器宽度占满,只留文章边距(margin: 20px -20px)
- 添加缩放控制按钮:放大、缩小、重置
- 支持 Ctrl+滚轮缩放
- 缩放范围:50%-300%,步进 25%
- 响应式适配:移动端自动调整边距和按钮大小
- 夜间模式适配缩放控制按钮样式
2026-01-24 23:36:12 +08:00
28f0a1265e feat: 更新 Mermaid 到 v11 并优化错误处理
- 更新 Mermaid 库版本从 v10 升级到 v11.12.2
- 优化错误处理逻辑,避免重复嵌套错误容器
- 修复查看源代码时可能出现的嵌套报错问题
- 改进渲染前检查,跳过已处理的错误容器和已渲染的图表
- 优化重新渲染逻辑,只处理成功渲染的图表,排除错误容器
- 增强代码提取逻辑,优先使用传入的代码参数
- 添加主题切换时的智能判断,避免不必要的重新渲染
- 更新 functions.php 中的 CDN 地址到 v11
- 更新 settings.php 中的预览功能 CDN 地址到 v11
- 改进错误容器的 DOM 结构,使用独立元素而非 innerHTML
2026-01-24 22:46:00 +08:00
4200ea118c debug: 添加详细的代码提取调试日志
- 在 convertMermaidCodeblocks 中添加代码长度和内容日志
- 在 extractMermaidCode 中添加详细的提取信息
- 输出元素 HTML 以便排查问题
2026-01-24 21:57:23 +08:00
094a55b80a fix: 修复 Mermaid 代码块缩进和 API 兼容性问题
- 添加智能缩进清理:移除统一缩进但保持相对缩进
- 添加 Mermaid API 版本检测和兼容性处理
- 支持 Mermaid 10.x (render Promise API)
- 支持 Mermaid 8.x (mermaidAPI.render 回调 API)
- 添加降级方案 (mermaid.init 方法)
- 增强错误处理和调试日志
- 修复代码提取时的空格问题
2026-01-24 21:49:50 +08:00
29bfd284e0 feat: 实现 Mermaid 代码块魔改支持
- 添加 convertMermaidCodeblocks() 函数,在代码高亮前拦截 mermaid 代码块
- 支持标准 Markdown 代码块 (\\\mermaid) 渲染
- 更新 detectMermaidBlocks() 添加 mermaid-from-codeblock 选择器
- 更新 extractMermaidCode() 支持新容器类型
- 创建测试文件 test-codeblock-magic.html
- 更新用户文档、开发者文档和 FAQ
- 完全绕过代码高亮和 WordPress 格式化
- 支持 PJAX 页面切换
- 特殊字符和换行符正确保留
2026-01-24 21:35:12 +08:00
32c2a72d2b feat: 添加 Mermaid Shortcode 支持(推荐方式)
- 新增 [mermaid]...[/mermaid] shortcode
- 支持 theme、width、height、align 参数
- 不依赖 WP-Markdown 的处理方式
- 不会被 WordPress 自动格式化破坏
- 在原生编辑器中清晰可见
- 添加完整的使用指南和示例
2026-01-24 21:02:47 +08:00
bf8f973e91 fix: 修复 Mermaid 容器语法的换行符和特殊字符问题
## 问题描述

用户报告 Mermaid 图表仍然渲染失败:
1. `flowchart TDStart` - `TD` 和 `Start` 之间没有换行符(有两个空格)
2. 箭头符号变成全角 `–>` 而不是 `-->`

## 根本原因分析

### 问题 1: 换行符丢失

WP-Markdown 可能将整个容器语法内容放在**一个** `<p>` 元素中:
```html
<p>::: mermaid<br>flowchart TD<br>Start --> End<br>:::</p>
```

而不是多个独立的 `<p>` 元素。之前的代码只处理了多元素的情况。

### 问题 2: 特殊字符转换

WordPress 的自动格式化功能会将某些字符转换为排版字符:
- `--` → `–` (U+2013 EN DASH)
- `---` → `—` (U+2014 EM DASH)
- `->` → `→` (U+2192 RIGHTWARDS ARROW)

这些字符在 Mermaid 语法中有特殊含义,必须保持原样。

## 修复方案

### 1. 支持单元素容器语法

在 `extractContainerContent()` 函数中添加检测逻辑:

```javascript
// 检查是否整个内容都在一个元素中
if (startText.includes(':::') && startText.lastIndexOf(':::') > 10) {
	// 整个容器语法在一个元素中
	let fullText = this.htmlToText(startHTML);
	// 移除开始和结束标记
	fullText = fullText.replace(/^:::\s*mermaid\s*/i, '').trim();
	fullText = fullText.replace(/:::\s*$/, '').trim();
	// 创建容器并返回
}
```

### 2. 增强 htmlToText() 函数

添加更多字符转换规则:

```javascript
// HTML 实体
.replace(/&#8211;/g, '-')  // EN DASH
.replace(/&#8212;/g, '--') // EM DASH
.replace(/&#8594;/g, '->') // RIGHTWARDS ARROW
.replace(/&ndash;/g, '-')  // EN DASH (named entity)
.replace(/&mdash;/g, '--') // EM DASH (named entity)
.replace(/&rarr;/g, '->'); // RIGHTWARDS ARROW (named entity)

// Unicode 字符
.replace(/–/g, '-')   // U+2013 EN DASH
.replace(/—/g, '--')  // U+2014 EM DASH
.replace(/→/g, '->'); // U+2192 RIGHTWARDS ARROW
```

### 3. 添加详细调试日志

```javascript
this.logDebug('检查元素,textContent: ' + startText.substring(0, 50));
this.logDebug('innerHTML: ' + startHTML.substring(0, 100));
this.logDebug('检测到单元素容器语法');
this.logDebug('转换后的完整文本: ' + fullText.substring(0, 200));
this.logDebug('移除标记后的代码: ' + fullText.substring(0, 200));
```

## 处理流程

### 单元素容器语法

```
1. 检测到 ::: mermaid 开始标记
2. 检查 textContent 中是否包含结束标记 :::
3. 如果包含,说明整个内容在一个元素中
4. 提取 innerHTML
   原始: "::: mermaid<br>flowchart TD<br>Start –> End<br>:::"
5. 使用 htmlToText() 转换
   - <br> → \n
   - – → -
   - → → ->
   结果: "::: mermaid\nflowchart TD\nStart --> End\n:::"
6. 移除开始和结束标记
   结果: "flowchart TD\nStart --> End"
7. 创建容器元素存储代码
```

### 多元素容器语法(保持原有逻辑)

```
1. 检测到 ::: mermaid 开始标记
2. 遍历后续兄弟元素
3. 收集所有内容直到 ::: 结束标记
4. 使用 \n 连接所有行
5. 创建容器元素存储代码
```

## 测试验证

### 测试用例 1: 单元素容器语法
```html
<p>::: mermaid<br>
flowchart TD<br>
    A[开始] –> B[处理]<br>
    B –> C[结束]<br>
:::</p>
```

预期结果:
```
flowchart TD
    A[开始] --> B[处理]
    B --> C[结束]
```

### 测试用例 2: 多元素容器语法
```html
<p>::: mermaid</p>
<p>flowchart TD</p>
<p>A --> B</p>
<p>:::</p>
```

预期结果:
```
flowchart TD
A --> B
```

### 测试用例 3: 复杂流程图(AI 评论审核)
- 100+ 个节点
- 多行文本(`<br/>` 标签)
- 箭头符号(`-->`, `-->`)
- 样式定义(`style` 语句)

## 影响范围

- 仅影响 Markdown 容器语法(`::: mermaid ... :::`)
- 不影响其他格式(`<div class="mermaid">`, `<pre><code>` 等)
- 向后兼容,支持单元素和多元素两种情况

## 相关文件

- `argontheme.js` - 修改 `extractContainerContent()` 和 `htmlToText()`
- `tests/test-ai-comment-flow.md` - 测试文档

## 技术细节

### WordPress 自动格式化

WordPress 的 `wptexturize()` 函数会自动转换以下字符:
- `--` → `–` (EN DASH)
- `---` → `—` (EM DASH)
- `->` → `→` (RIGHTWARDS ARROW)
- `(c)` → `©` (COPYRIGHT SIGN)
- `(r)` → `®` (REGISTERED SIGN)
- `(tm)` → `™` (TRADE MARK SIGN)

这些转换对于普通文本是有益的,但对于代码块(如 Mermaid)是有害的。

### 解决方案

1. **禁用自动格式化**(不推荐)
   - 会影响整个网站的排版
   - 需要修改 WordPress 核心代码

2. **在提取时反转换**(推荐)
   - 只影响 Mermaid 代码块
   - 不影响其他内容
   - 易于维护

### 字符映射表

| 原始字符 | HTML 实体 | Unicode | 显示 |
|---------|----------|---------|------|
| `-` | `&#45;` | U+002D | - |
| `--` | `&#8211;` / `&ndash;` | U+2013 | – |
| `---` | `&#8212;` / `&mdash;` | U+2014 | — |
| `->` | `&#8594;` / `&rarr;` | U+2192 | → |

## 注意事项

1. **性能影响**:增加了字符串替换操作,但性能影响可忽略
2. **安全性**:只处理 Mermaid 代码块,不执行任何脚本
3. **兼容性**:支持所有现代浏览器
4. **调试**:添加详细日志,便于排查问题

## 后续优化

1. 考虑使用 DOMParser 解析 HTML,更可靠
2. 添加更多特殊字符的转换规则
3. 支持自定义字符映射表
4. 添加单元测试

## 参考资料

- [WordPress wptexturize() 函数](https://developer.wordpress.org/reference/functions/wptexturize/)
- [Unicode 字符表](https://unicode-table.com/)
- [Mermaid 语法文档](https://mermaid.js.org/intro/syntax-reference.html)
2026-01-24 20:56:43 +08:00
b4ba37a6c5 fix: 修复 Mermaid 容器语法换行符丢失问题
## 问题描述

用户提供的 AI 评论审核流程 Mermaid 图表渲染失败,错误信息显示:
- `flowchart TDStart` - `TD` 和 `Start` 之间缺少换行符
- 箭头符号被转换成全角 `–>` 而不是 `-->`

## 根本原因

WP-Markdown 插件将容器语法 `::: mermaid ... :::` 转换为 HTML 时:
1. 每一行代码都被包裹在 `<p>` 标签中
2. 行内的换行使用 `<br>` 标签表示
3. 使用 `textContent` 或 `innerText` 提取时,`<br>` 标签被忽略或转换为空格
4. 导致多行代码被合并成一行,Mermaid 语法解析失败

## 修复方案

### 1. 新增 `htmlToText()` 辅助函数

```javascript
htmlToText(html) {
	// 将 <br> 和 <br/> 转换为换行符
	let text = html.replace(/<br\s*\/?>/gi, '\n');
	// 移除其他 HTML 标签
	text = text.replace(/<[^>]+>/g, '');
	// 解码 HTML 实体
	text = text
		.replace(/&nbsp;/g, ' ')
		.replace(/&lt;/g, '<')
		.replace(/&gt;/g, '>')
		.replace(/&amp;/g, '&')
		.replace(/&quot;/g, '"')
		.replace(/&#039;/g, "'");
	return text;
}
```

### 2. 改进 `extractContainerContent()` 函数

- 使用 `innerHTML` 而不是 `textContent` 或 `innerText`
- 调用 `htmlToText()` 将 `<br>` 标签转换为换行符
- 保留所有换行符和空行
- 添加详细的调试日志

### 3. 处理流程

```
1. 检测到 ::: mermaid 开始标记
2. 提取 innerHTML(包含 <br> 标签)
3. 使用 htmlToText() 转换:
   - <br> → \n
   - 移除其他 HTML 标签
   - 解码 HTML 实体
4. 收集所有行内容
5. 使用 \n 连接所有行
6. 创建容器元素存储完整代码
```

## 测试验证

### 测试用例 1:简单流程图
```markdown
::: mermaid
flowchart TD
    A[开始] --> B[处理]
    B --> C[结束]
:::
```

### 测试用例 2:复杂流程图(AI 评论审核)
- 包含 100+ 个节点
- 包含多行文本(`<br/>` 标签)
- 包含箭头符号(`-->`, `-->`)
- 包含样式定义(`style` 语句)

### 预期结果
-  所有换行符正确保留
-  箭头符号不被转换
-  多行文本正确显示
-  样式定义正确应用

## 影响范围

- 仅影响 Markdown 容器语法(`::: mermaid ... :::`)
- 不影响其他格式(`<div class="mermaid">`, `<pre><code>` 等)
- 向后兼容,不影响现有功能

## 相关文件

- `argontheme.js` - 修改 `extractContainerContent()` 和新增 `htmlToText()`
- `tests/test-ai-comment-flow.md` - 测试文档
- `docs/mermaid-usage-guide.md` - 使用指南

## 技术细节

### HTML 结构示例

WP-Markdown 生成的 HTML:
```html
<p>::: mermaid<br>
flowchart TD<br>
    Start([用户提交评论]) --> PreProcess[预处理]<br>
:::</p>
```

### 提取过程

1. **原始 HTML**: `::: mermaid<br>flowchart TD<br>Start --> End<br>:::`
2. **htmlToText()**: `::: mermaid\nflowchart TD\nStart --> End\n:::`
3. **移除标记**: `flowchart TD\nStart --> End`
4. **最终代码**:
   ```
   flowchart TD
   Start --> End
   ```

## 注意事项

1. **性能影响**:使用 `innerHTML` 和正则替换,性能影响可忽略
2. **安全性**:只处理 Mermaid 代码块,不执行任何脚本
3. **兼容性**:支持所有现代浏览器
4. **调试**:添加详细日志,便于排查问题

## 后续优化

1. 考虑支持更多 Markdown 容器语法(如 `::: warning`, `::: tip` 等)
2. 优化正则表达式性能
3. 添加单元测试
2026-01-24 20:49:32 +08:00
b6d9f8c47e fix: 修复容器语法和 WP-Markdown 的两个关键问题
- 修复 WP-Markdown document.write 重复输出问题
- 改进容器语法检测,支持跨多个元素收集内容
- 解决空行导致内容被分割成多个元素的问题
2026-01-24 20:41:08 +08:00
0ac57949ae fix: 修复代码高亮和容器语法的两个关键问题
- 代码高亮排除 mermaid 代码块,避免干扰渲染
- 容器语法正确处理空行,不再截断内容
- 添加测试页面验证修复效果
2026-01-24 20:14:48 +08:00
4c0569afaf feat: add WP-Markdown special format support
- Detect script tags with document.write() in extractMermaidCode
- Extract Mermaid code from document.write() content
- Support escape character decoding (backslash-n, quotes, etc)
- Add comprehensive test file for WP-Markdown format validation
- Requirements: 10.5
2026-01-23 23:49:24 +08:00
f36a96d3b6 feat: 实现 Mermaid 插件兼容层
- 添加插件检测函数(WP Githuber MD、Markdown Block、Code Syntax Block)
- 实现 Mermaid 库加载状态检测
- 添加重复加载防护逻辑,避免与插件冲突
- 在设置页显示插件兼容性状态
- 修改库加载逻辑,当检测到插件时跳过加载
- 在 JavaScript 端添加库加载状态标记
- Requirements: 9.1, 9.2, 9.3, 9.4, 9.5
2026-01-23 23:36:12 +08:00
1d5899ce7e feat: 实现 Mermaid 库加载失败的降级处理机制
- 添加多 CDN 备选方案(jsdelivr、unpkg、本地镜像)
- 实现递归加载逻辑,主 CDN 失败时自动尝试备用 CDN
- 添加 onerror 事件处理,捕获库加载失败
- 所有 CDN 失败时显示友好的错误提示
- 在错误提示中保留原始代码供用户查看
- 添加详细的控制台日志输出
- 创建 PHP 和 HTML 测试文件验证功能
- 暴露 MermaidRenderer 到全局作用域供降级处理使用

Requirements: 1.4, 2.3, 7.1, 7.2, 7.3, 7.4, 7.5
2026-01-23 23:12:05 +08:00
43b695bd66 feat: 实现 Mermaid JavaScript 渲染引擎
- 在 argontheme.js 中添加完整的 Mermaid 渲染引擎模块
- 实现 Mermaid 配置初始化函数(支持主题自动切换)
- 实现主题获取函数(根据页面 darkmode 类返回对应主题)
- 实现代码块检测器(支持 div.mermaid、pre code.language-mermaid、pre[data-lang]、code.mermaid 四种格式)
- 实现批量渲染函数(一次 DOM 遍历,批量渲染所有图表)
- 实现错误处理机制(显示友好错误提示,保留原始代码)
- 实现样式增强(淡入动画、响应式 SVG)
- 实现主题切换监听器(监听 argon:theme-switched 事件和 darkmode class 变化)
- 实现图表重新渲染功能(主题切换时自动重新渲染)
- 实现渲染缓存机制(避免重复渲染)
- 添加调试日志系统(支持 debugMode 配置)
- 在 DOMContentLoaded 事件中自动初始化
- 暴露 ArgonMermaidRenderer 到全局(用于 PJAX 等场景)
- Requirements: 2.1, 2.5, 10.1, 10.2, 10.3
2026-01-23 23:02:25 +08:00
c0e21840f1 fix: 修复评论提交后表单状态未清除的问题
- 将表单重置代码移到 success 回调的最前面,确保优先执行
- 将表单重置与 UI 更新(插入评论、滚动)分离,避免异常影响表单重置
- 确保评论内容、验证码、Geetest 状态都能正确清除
- 修复需要刷新页面才能再次发送评论的问题
2026-01-23 16:41:02 +08:00
f2c807edf0 feat: 移除所有文章加载动画相关代码
- 移除pjax:afterGetContainers中的加载动画逻辑
- 移除pjax:beforeReplace中的动画清理代码
- 删除CSS中的loading-css-animation样式
- 删除CSS中的loading-dot动画样式
- 删除CSS中的post-pjax-loading相关样式
- 删除CSS中的post-list-pjax-loading相关样式
- 删除loading-animation关键帧动画
2026-01-23 15:45:57 +08:00
5ee608537e fix: 完善文章加载动画的状态恢复逻辑
- 在pjax:beforeReplace中恢复所有隐藏卡片的opacity和pointer-events
- 确保页面切换后所有卡片都能正常显示和交互
- 保持无!important的纯净实现方式
2026-01-23 15:40:24 +08:00
c3acaea5e2 fix: 移除important并通过禁用transition解决问题
- 找到根本原因:post-preview的transition: all导致opacity被动画恢复
- 解决方案:临时禁用transition,设置opacity,然后恢复
- 添加footer隐藏功能
- 让被点击的卡片居中显示
- 清理时恢复footer和卡片位置
2026-01-23 15:37:57 +08:00
85af3dcdd1 fix: 通过attr设置style添加important强制隐藏
- 使用attr方法直接修改style属性
- 添加!important确保优先级最高
- 移除调试日志,保持代码简洁
- 这是最终解决方案
2026-01-23 15:32:03 +08:00
d0fff9952e fix: 使用JavaScript强制隐藏其他文章卡片
- 添加直接CSS操作强制设置opacity为0
- 将opacity检查延迟100ms,等待CSS生效
- 这样可以绕过CSS选择器优先级问题
- 保留调试日志用于后续优化
2026-01-23 15:28:34 +08:00
6fad1244a8 fix: 移除important并添加详细调试日志
- 移除CSS中的!important,避免叠屎山
- 添加详细的console.log调试信息
- 输出每个卡片的opacity值和loading状态
- 方便通过浏览器控制台定位问题
2026-01-23 15:16:50 +08:00
aed0fb5c47 fix: 增强CSS选择器优先级并添加调试日志
- 为所有opacity相关CSS规则添加!important确保优先级
- 为.post-pjax-loading添加position: relative
- 添加console.log调试信息,方便排查问题
- 严格遵守设置项,只在启用进入文章动画时生效
2026-01-23 13:59:46 +08:00
dc11338ca2 fix: 修复文章加载动画功能无论是否启用都能正常工作
- 修改CSS选择器从.post-preview改为.post,匹配所有文章卡片
- 修改JavaScript选择器从article.post-preview改为article.post
- 添加#main.article-list限定,只在文章列表页生效
- 修复清理代码,确保能正确移除所有文章的加载状态
2026-01-23 13:50:36 +08:00
2de0cfb8de refactor: 将TODO折叠按钮移至未完成任务下方
- 折叠按钮现在作为已完成任务区域的分隔栏显示
- 分隔栏包含已完成图标、文字和数量徽章
- 点击分隔栏可折叠/展开已完成任务
- 桌面端和移动端都采用相同的设计
- 优化了视觉层次,更符合用户使用习惯
2026-01-23 13:09:56 +08:00
9f8b560d20 feat: 为TODO列表添加折叠已完成任务功能
- 添加折叠/展开已完成任务的按钮,显示已完成数量
- 实现流畅的折叠展开动画效果(高度、透明度、位移)
- 优化删除和完成任务的动画,增加缩放效果
- 同时支持桌面端和移动端
- 折叠按钮在没有已完成任务时自动隐藏
- 使用 CSS transition 实现平滑的进入退出动画
2026-01-23 13:04:43 +08:00
00a6ee0db2 fix: 修复评论提交后无法再次提交的问题
- 评论提交成功后调用 geetestCaptcha.reset() 重置验证码实例
- 清空数学验证码输入框(之前错误地自动填充答案)
- 确保用户可以连续提交多条评论而无需刷新页面
2026-01-22 18:58:09 +08:00
adf3852a74 feat: 完善用户名-评论联合检测功能
- 改为立即同步执行 AI 检测,不再延迟
- 管理员可看到原用户名:用户-XXXXXXXX (原用户名: xxx)
- 添加前台删除评论功能(仅管理员可见)
- 删除按钮使用红色 outline-danger 样式
- 删除前弹出确认对话框
- 删除后淡出动画并移除评论元素
- 完整的成功/失败提示
2026-01-22 18:41:44 +08:00
0ae1472e79 fix: 修复开启进入文章动画时文章加载不正常的问题
- 在 pjax:beforeReplace 事件中清理文章列表的 PJAX 加载状态
- 移除 post-preview 元素的 loading 动画和 transform 样式
- 清理 post-list-pjax-loading 类,避免影响新页面
- 优化 post-full 动画,添加 transform-origin 确保动画流畅
- 通过 :not(.no-animation) 选择器支持禁用动画的场景
2026-01-22 15:57:22 +08:00
cb5c65d611 fix: 修复TODO在非停靠状态时不会折叠的问题
- 在所有关闭侧边栏的操作中添加折叠所有面板的逻辑
- 包括点击遮罩、关闭按钮、链接、搜索和目录跳转等场景
- 确保侧边栏关闭时所有折叠面板(TODO、文章目录等)都会自动收起
2026-01-22 15:40:02 +08:00
4515831d7f chore: 清理临时文件和测试文件
- 删除临时测试文件 (test-*.html, test-*.js)
- 删除临时文档文件 (GPU_ACCELERATION_USAGE.md, RENDER_OPTIMIZER_USAGE.md)
- 删除测试 HTML 文件 (argon-memory-manager.test.html, argon-performance.test.html)
- 整理文档到 specs 目录下
2026-01-22 10:42:19 +08:00
9feba74cfe fix: 修复 argontheme.js 文件编码问题
- 修复所有 UTF-8 编码错误字符( 替换为正确的中文字符)
- 涉及注释、字符串等 100+ 处编码问题
- 确保文件以正确的 UTF-8 编码保存
2026-01-22 10:39:43 +08:00
4dafdc62f6 fix: 替换所有 console 调用为 ArgonDebug
- 在 argontheme.js 中引入 ArgonDebug 调试控制台
- 替换所有 console.warn 为 ArgonDebug.warn
- 替换所有 console.error 为 ArgonDebug.error
- 替换所有 console.info 为 ArgonDebug.info
- 删除移动端侧边栏的调试日志(console.log)
- 简化不必要的日志输出,只保留关键信息
- 所有日志现在只在调试模式下输出,避免生产环境污染控制台
2026-01-22 09:46:44 +08:00
2e8700f7d7 fix: 改进 PJAX 和 LazyLoad 错误处理与性能
- 为 pjax:complete 中的所有初始化函数添加 try-catch 错误处理
- 优化 applyLoadEffectOptimized:使用 transitionend 事件替代 setTimeout
- 为所有优化函数添加完整的 JSDoc 注释
- 添加代码优化说明注释,便于后续维护
- 确保单个模块失败不影响其他模块的初始化
2026-01-21 13:48:25 +08:00
0cbfa0aab3 fix: 优化 PJAX 和 LazyLoad 功能
- 创建 cleanupPjaxResources() 函数统一管理资源清理
- 创建 resetGT4Captcha() 函数封装验证码重置逻辑
- 消除 pjax:end 中的重复初始化调用(waterflowInit、lazyloadInit)
- 优化 LazyLoad Observer 生命周期管理,添加存在性检查
- 使用 requestAnimationFrame 替代 setTimeout 优化图片加载效果
- 实现滚动监听降级方案,支持不兼容 IntersectionObserver 的浏览器
- 改进错误处理,所有第三方库调用都有 try-catch 保护
- 优化图片状态清理,使用正则表达式移除所有 lazyload-style-* 类名

需求:1.1-1.5, 2.1-2.5, 3.1-3.5, 4.1-4.5, 5.1-5.5, 6.1-6.5, 7.1-7.5
2026-01-21 13:42:31 +08:00
5c3e0aa465 fix: 修复懒加载未启动的问题
- 修复 argonConfig.lazyload 配置逻辑,默认启用懒加载
- 修复懒加载初始化时机,确保 DOM 加载完成后再执行
- 添加 DOMContentLoaded 事件监听,避免过早初始化导致找不到图片元素
- 修复懒加载禁用判断,同时支持 false 和 'false' 字符串
- 优化 header.php 中的懒加载配置,使用 get_option 默认值
2026-01-20 23:22:32 +08:00
86d11e1f91 fix: 修复 PJAX 页面切换时的资源加载问题
- 修复懒加载未重新初始化导致图片不显示的问题
- 添加全局 lazyloadObserver 变量,在 PJAX 切换时正确清理旧的 Observer
- 修复 Zoomify 实例未清理导致的内存泄漏和功能异常
- 添加全局 zoomifyInstances 数组管理所有 Zoomify 实例
- 在 pjax:beforeReplace 事件中清理所有旧资源(懒加载、Zoomify、Tippy)
- 优化资源初始化顺序,先初始化懒加载再初始化其他功能
- 在 pjax:end 事件中延迟再次确保资源正确加载
- 修复滚动位置恢复逻辑,确保页面跳转后正确定位
- 重置图片状态(opacity、transform、transition)避免样式残留
2026-01-20 23:19:25 +08:00
39d5f88b1e chore: 清理未提交的文件
- 删除 page-ai-summary-query.php 模板文件

- 删除 js-fallback.js

- 其他文件的修改
2026-01-20 22:50:10 +08:00
dcaa19f5bc fix: 修复页面加载时的样式跳变问题
- 在 header.php 中添加预加载脚本,页面渲染前应用用户样式设置
- 优化强制刷新逻辑,避免二次刷新
- 移除 argontheme.js 中重复的样式应用代码
- 修复字体、阴影、滤镜、UI 样式的闪烁问题
2026-01-20 18:30:08 +08:00
29257dfce2 fix: 从 0dba91c 恢复 style.css 和 argontheme.js
- 完全恢复到问题出现前的版本
- 确保浮动按钮正常工作
2026-01-20 16:26:20 +08:00
05fd756c9c fix: 恢复主题 JS 文件 2026-01-20 16:18:17 +08:00
25fd3891a3 feat: 重构评论点赞系统,支持取消点赞
- 改用 IP + User-Agent 哈希识别用户,登录用户使用 user_id
- 服务端存储点赞用户列表,而非简单计数
- 同一用户只能点赞一次,再次点击可取消点赞
- 移除 Cookie 依赖,避免 IP 变化导致重复点赞
- 已点赞按钮 hover 时显示可点击状态
2026-01-16 22:24:34 +08:00
d9aafe2479 fix: 修复评论回复按钮点击无反应和点赞数显示问题
- 将评论回复/编辑的滚动动画从 jQuery animate + easeOutCirc 改为原生 window.scrollTo
- 避免因其他插件覆盖 jQuery 导致 easing 函数丢失的问题
- 修复 .comment-upvote .btn-inner--text 样式,确保点赞数正确显示
- 添加 display: inline-block !important 强制显示点赞数文本
2026-01-16 22:18:08 +08:00
ce5f7c8bfa fix: 在文件末尾再次添加 easing 函数备用
- 确保在所有脚本加载完成后 easing 函数仍然可用
- 解决其他插件覆盖 jQuery 导致 easing 丢失的问题
2026-01-16 21:50:50 +08:00
cdf343f4b4 fix: 添加 jQuery easing 函数备用定义
- 添加 easeOutCirc 和 easeOutExpo 备用实现
- 防止其他插件加载的 jQuery 覆盖 argon_js_merged 中的 easing 插件
- 解决 'n.easing[this.easing] is not a function' 错误
2026-01-16 21:08:49 +08:00
8f3f80d2df fix: 修复评论区回复按钮第一次点击无效的问题
- 为 .comment-operations 添加 pointer-events: none(opacity: 0 时)
- hover 时恢复 pointer-events: auto
- 问题原因:按钮不可见时仍能接收点击事件,导致第一次点击被'空'按钮捕获
- 恢复 jQuery 事件委托方式绑定回复按钮点击事件
2026-01-16 21:03:07 +08:00
2da70526ea fix: 修复评论区回复按钮页面刷新后第一次点击无效的问题
- 使用原生 document.addEventListener 替代 jQuery 事件委托绑定回复按钮点击事件
- 原生事件监听器在 DOM 解析完成后立即生效,不依赖 jQuery 初始化状态
- 添加 element.closest() 实现事件委托,兼容动态加载的评论
- 保留 jQuery 事件绑定用于 PJAX 相关功能
- 添加 offset() 防护检查避免元素未渲染时报错
2026-01-16 20:52:58 +08:00