视频加载失败

Fireflux —— 给 Firefly 博客配了一个本地管理客户端

返回项目列表
Fireflux —— 给 Firefly 博客配了一个本地管理客户端
已发布
Fireflux/Electron/Astro/Svelte/开源

写文章要开编辑器翻文件、改配置要读 TypeScript、发完还要回终端敲 git……于是做了一个只管「本地文件 + git」的 Windows 客户端,把动态发布、文章编辑、配置修改和一键上线收进同一个窗口,博客本身依然保持纯静态。

Fireflux —— 给 Firefly 博客配了一个本地管理客户端

一个 Windows 桌面客户端,把「写动态、改文章、调配置、推上线」收进同一个窗口里。

🤔 起因#

博客是 Astro 生成的静态站,日常维护却分散在好几个地方:写文章要在编辑器里翻 src/content/posts,改主题配置要打开 src/config 读 TypeScript,发动态要另开浏览器进 Memos,最后还要回到终端把改动 git push 出去。

这几件事都不难,但来回切换很碎。于是做了 Fireflux:它不做服务端、不建数据库,只做两件事 —— 按规则读写博客项目里的文件,以及调用本机的 git。

📦 它是什么#

  • Electron 37 + electron-vite + Svelte 5 + TypeScript 写的桌面应用,界面用 Svelte 5 的 runes 语法
  • 博客仍然是纯静态站:客户端只是让「编辑文件 + 提交推送」顺手一点,构建和部署链路完全不变
  • 首个版本 v0.1.0,目前只提供 Windows x64 安装包

✨ 功能一览#

💬 动态发布#

动态发布
动态发布

远端模式直接把 Memos 嵌进窗口里,登录状态会被记住,发完刷新博客就能看到。

内嵌网页难免遇到图片裂开、证书不受信任这类问题,所以顺手做了加载状态、失败横幅和一个「连接诊断」面板:把失败请求的 URL 和 net::ERR_* 摆到界面上,不用再开 DevTools 猜是图源的问题还是服务端的问题。

不想用 Memos 的话可以切到本地模式,表单 + Markdown + 插图 + 从磁盘导入 md:

本地发布
本地发布

📄 文章管理#

文章管理
文章管理

列表、编辑、分屏预览、新建都在同一个页面。新建文章时中文标题会自动转成拼音 slug,与主题自带的 new-post 脚本保持一致;支持插入本地配图(自动复制到约定目录并生成引用路径)和从磁盘导入已有的 md。项目展示、Spec 页面共用同一套编辑器,只是根目录不同。

🎛️ 配置中心#

配置中心
配置中心

主题的 25 个配置文件全部图形化:下拉框、开关、列表增删排序、图片 / 音乐 / 视频 / 二维码导入。嵌套的子配置也能识别,比如看板娘的两块配置:

看板娘配置
看板娘配置

保存时用 ts-morph 只补丁改动的字段,注释和其余代码原样保留 —— 配置文件是写给人看的,不该被工具重新格式化一遍。

🚀 发布上线#

改动清单、暂存、提交信息、一键「提交并推送」、从远程拉取最新、分支与远程仓库管理、整体 git diff 与单个文件的差异、提交历史,都在一页里完成。推送前会弹窗确认一次,避免手滑。

⚙️ 设置#

设置
设置

主题色、壁纸与不透明度、数据目录、看板娘开关与大小位置、硬件加速渲染都在这里调,改完即时生效并记住。

🔧 几个折腾过的地方#

  • 软件渲染:看板娘只在鼠标在窗口里移动、指针停在它身上、点击互动时逐帧渲染,其余时间渲染完最后一帧就完全停住,静止态 CPU 基本归零;窗口背景在启动时预烘焙成一张 1<1> 的位图,拖拽时每帧只做一次 blit
  • 配置补丁而不是重写:见上面配置中心那条,注释保留是硬要求
  • 让内嵌网页可诊断:Chromium 只会把 net::ERR_* 写到 stderr,既没有 URL 也不进界面,于是主进程把请求失败记录下来,通过一个 IPC 通道交给界面展示
  • 看板娘:鼠标在窗口里移动时它会跟着看,点一下会说话,大小和位置都能拖

🔐 数据与边界#

  • 所有设置与壁纸都放在客户端自己的 data/ 目录,不写进博客项目、也不会被提交
  • 只允许操作白名单目录:src/contentsrc/configpublic,主题源码不在其中
  • 没有账号体系,也没有云端同步,所有操作都在本机完成

📥 获取#

loveFirefly-26710
/
Fireflux
Firefly 博客的本地管理客户端:动态发布(内嵌 Memos)、文章与项目编辑、25 个配置文件图形化修改、一键 git 推送上线;博客保持纯静态。Electron 37 + Svelte 5 + TypeScript。
no-license
TypeScript

🙏 致谢#

  • 桌面看板娘的 Live2D 模型来自 Iskongkongyo/Firefly-live2d
  • 博客主题是 Firefly(基于 Astro 的博客主题),客户端的「配置中心」正是围绕它的配置文件做的
Profile Image of the Author
鸢尾花的萤火虫
大家好, 我是鸢尾花萤火虫,一枚流萤厨。
公告
众所周知,这是一只流萤厨。
分类
标签
最新动态
站点统计
文章
13
分类
2
标签
19
总字数
16,084
运行时长
0
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录