OpenWrt 路由器上跑 OpenClash:手动补内核、双路由和 fake-ip 排查 OpenWrt 路由器里 OpenClash 内核下载失败,补上后手机和其他电脑能走代理,只有 Mac 不行。文章把问题拆成内核架构、插件状态、家庭网络拓扑和 Mac 本机 Clash Verge TUN / fake-ip 冲突,按层确认流量到底被谁接管,形成一套路由器代理排查路径。 2026-07-04
别再用 length 统计用户文本:一次 Unicode 字符数和 ESLint 护栏复盘 昵称计数用 value.length,遇到 emoji 和国旗就会提前超限或截断错误。文章从 Unicode grapheme 出发,补统一的计数、截断、取首字符工具,再把昵称、签名、备注、搜索和举报描述迁过去,并用 ESLint 规则阻止后续误用,覆盖更多用户可见输入。 2026-07-03
Header 不要被页面反向控制:一次 Nuxt SSR hydration 错位复盘 一次 Nuxt Header hydration mismatch 复盘。layout 先输出 Header,page slot 后写入 Header 消费的 useState,payload 又记录了写完后的状态,导致服务端 HTML 和客户端首帧 VNode 表达了两个时间点。 2026-06-29
NextAuth 安全升级撞上 sidebase 旧入口 一次 next-auth 安全升级消掉了 CVE 告警,却触发 @sidebase/nuxt-auth 对旧子路径 next-auth/core 的解析警告。文章从 package exports 变化解释原因,并讨论升级、兼容、回滚和本地 built Nitro 验证时该看哪些边界。 2026-06-26
WebStorm 主题插件被升级覆盖后,自己打一个固定版 WebStorm 升级后旧 One Dark 风格被覆盖,插件市场里的同名主题也不对味。文章记录如何从本地配置找回旧版主题,比较新旧 UI 色表,再把旧主题重新打成固定版插件,让每天盯着看的编辑器颜色保持稳定,也顺手解释 JetBrains 主题插件结构。 2026-06-26
Teleport 弹窗尺寸为什么会丢 一次账号编辑弹窗变窄的排查。问题不是 Teleport 普遍丢样式,也不是 rem 换算,而是 Teleport + Transition + 初始 v-if=false 后插入节点时,CSS v-bind 变量可能没有正确回填到目标节点。文章用最小复现缩小触发组合。 2026-06-22
自定义滚动条别挤布局:一次 hover 抖动的处理 弹窗网格在 hover 时因为滚动条出现而横向抖动。文章把问题归到 scrollport 宽度变化,最终用隐藏原生滚动条、保留滚动能力、绘制不参与布局的 overlay thumb 来稳定视觉提示,让 hover 只改变提示层,不改变内容排版,适合菜单和弹窗这类紧凑区域。 2026-06-17
Nuxt Image 不是 img 的平替:一次本地 assets 图片 404 的排查 把 img 换成 Nuxt Image 后,本地 assets 图片经 IPX 改写成 404。文章说明 Nuxt Image 是图片优化组件,不是 img 的无脑平替;public 图源、Vite import 资源、/_nuxt 路径和 provider 处理边界要分清,也说明什么时候该继续用原生 img。 2026-06-17
修复 Vue Devtools Open In Editor 找不到 Toolbox WebStorm Vue / Nuxt Devtools 的 Open in editor 找不到 JetBrains Toolbox 管理的 WebStorm。文章把问题定位到 launch-editor 的 macOS WebStorm 发现逻辑和实际应用包路径不一致,并给出修复和验证方式。 2026-06-11
Clash Verge TUN 下让公司内网依赖走内网 TUN 模式下,公司内网域名可能被 Clash DNS 接管并落到 fake-ip,导致客户端已连接公司网络但请求没有真正进内网。文章按代理规则、fake-ip 过滤、公司 DNS、fixed hosts 和 TUN 路由排除逐层处理,避免只靠一条 DIRECT 规则误判。 2026-06-09