npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-theme-firefly

v0.1.3

Published

崩坏:星穹铁道 · 流萤主题 —— 立绘壁纸背景 + 萤火绿霓虹配色 + 开屏变身动画

Readme

dsh-theme-firefly · 流萤主题

🌌 崩坏:星穹铁道「流萤」主题的 DeepSeek Harness Web UI 皮肤插件。 萤火绿霓虹配色 × 立绘/动态壁纸 × 开屏变身动画 × 萤火氛围粒子 × 背景音乐 × 打字音效。

让流萤的萤火为你点亮DSH。✨

🖼️ 预览与演示

动态 / 静态壁纸

壁纸

开屏变身动画

开屏动画

萤火氛围粒子

萤火粒子

背景音乐播放器

背景音乐

表情包彩蛋

表情包

🎬 演示视频(B 站): https://www.bilibili.com/video/BV1nF8B6QEEj/?spm_id_from=333.1387.homepage.video_card.click&vd_source=573abae8b62b8edf27edc7cb8933e1b6


✨ 功能特性

壁纸系统(图片 / 动态视频)

  • 全屏 cover 铺底,界面容器半透明让壁纸透出;左暗右亮渐变遮罩保证聊天区可读
  • 「景」按钮弹出常驻面板:
    • 类型:动态(mp4)/ 静态(图片),各自独立记忆当前壁纸
    • 选择:弹出缩略图网格(正方形预览、固定三行、可滚动),点卡片直接应用该壁纸
    • 移除:在网格中勾选一张/多张后点「移除」——内置壁纸记为隐藏、运行时导入的壁纸从 IndexedDB 删除
    • 随机:勾选若干张后点「随机」——把它们设为随机轮换池并立即进入随机模式(不勾选则等于全部)
    • 随机间隔:自定义分钟数(默认 5 分钟)
    • + 添加壁纸:从本机一次多选导入图片/视频(Ctrl/框选),同名同大小自动去重,立即生效(IndexedDB 持久化)
    • 默认壁纸:首次安装(无历史记录)时优先展示 assets/Default_wallpaper.png
    • 选择面板点右上角「—」或再点「选择」收起;点「确定」收起设置面板,所有设置实时生效并持久化

流萤配色

  • 深空海军蓝黑 × 萤火虫青绿(#00ff87 / #7dff9e)× 莹白文字
  • 覆盖 100+ 个 --dsw-* 设计令牌,随主题即时生效

开屏变身动画

  • 内嵌 GIF 居中淡入,带绿色辉光边框 + 「流萤 // FIREFLY」标题
  • 每次刷新播放,时长跟随 GIF,点击任意处或「点击跳过」可跳过
  • 尊重系统 prefers-reduced-motion,自动跳过

萤火氛围粒子

  • 「萤」按钮分档:关 / 星点(12)/ 曳光(28)/ 流萤(80)
  • 数量切换带 0.9s 淡入淡出过渡,不陡然变化、不刷新页面
  • 每只萤火虫有独立尺寸、亮度、漂浮轨迹与呼吸式闪烁

背景音乐

  • 「乐」按钮点击开/关,弹出音乐面板
  • 旋转唱片 + 封面(内置曲目开箱即用默认「知更鸟」封面,也可手动指定)+ 进度条拖动跳转
  • 上一首 / 播放暂停 / 下一首 / 循环模式(单曲循环 → 列表循环 → 随机播放)
  • 选择:弹出歌单,勾选后移除(内置歌曲隐藏、导入歌曲删除)或随机(以勾选歌曲为随机池)
  • + 添加歌曲:从本机导入音乐并持久化;无封面时自动读取内嵌封面(MP3/FLAC)
  • 缩小 / ESC:收起为 dock 左侧的毛玻璃迷你播放器(大唱片在上、进度条在下, 点「隐藏封面」可切成只留进度条的简洁胶囊,「展开」恢复完整面板)
  • 当前曲目与循环模式持久化

打字音效

  • 聊天输入框打字时播放「咔哒 + 低频咚」的萤火质感按键音
  • Web Audio 实时合成,零音频文件;空格/回车音色更低;「声」按钮开关

彩蛋

  • 开屏动画:输入框发送 SAM → 重播开屏变身动画(精确匹配,普通消息不误触)
  • 表情包(GIF/表情包/ 目录,按对话内容触发,每回合最多一个,右下角弹出):
    • 你夸赞时 → 「开心」/「得意」(谢谢/太棒/厉害/绝了…)
    • 你确认开干时 → 「变身」(开始/开干/动手/走起/冲…)
    • 我确认时 → 「没错」(没错/正是/确实…)
    • 我需要你提供时 → 「期待」(发我/提供/给我…)
    • 我需要你确认时 → 「疑惑」(确认一下/要我…吗/可以吗…)

🎛️ 界面操作

四个按钮(自右向左)收在一个可拖动的毛玻璃长条面板里:

| 按钮 | 功能 | |---|---| | 声 | 打字音效 开/关 | | 萤 | 氛围粒子分档(关/星点/曳光/流萤) | | 景 | 壁纸设置(类型 + 选择/随机 + 随机间隔 + 添加壁纸 + 确定) | | 乐 | 背景音乐 开/关 + 播放面板 + 迷你播放器 |

🖱️ 按住面板任意位置拖动即可移动,位置自动记忆(重启 dsh web 后仍生效)。 音乐面板、歌单选择、壁纸设置、壁纸选择器弹层会相对该面板水平居中对齐, 并自动保持在屏幕内;迷你播放器则紧邻面板左侧显示。

按 ESC:关闭壁纸 / 氛围 / 歌单等浮层;音乐面板展开时收起为迷你播放器 (不会关闭迷你播放器)。


🎨 灵感来源

  • 角色与主题:本主题致敬米哈游《崩坏:星穹铁道》中的角色 流萤(Firefly) 与其机甲 S.A.M. ——「完全燃烧」的变身、萤火虫般的荧光、以及那句「我将点燃大海」。
  • 音乐:默认曲目为 HOYO-MiX 出品的《使一颗心免于哀伤》(知更鸟演唱),曲库另含《在银河中孤独摇摆》《希望有羽毛和翅膀》《若我不曾见过太阳》《唯有追赶风的方向》。
  • 实现参考:客户端主题的「令牌层 + 身份层」架构与 cordis 插件结构,学习自 dsh-theme-cyberpunk2077(作者 Tommy00748),特此致谢。
  • 生态:DSH 插件目录 awesome-dsh-plugin。

📁 目录结构

dsh-theme-firefly/
├── package.json            # dsh.client 声明(web 插件,注入 ui-theme 槽位)
├── lib/index.js            # 服务端占位
├── lib/client.template.js  # 浏览器端主题源码(含占位符,随仓库提交)
├── lib/client.js           # 构建产物(build.cjs --clean 生成,含 base64 素材,随仓库提交干净版)
├── assets/                 # 壁纸:图片(jpg/png/webp) + mp4 动态壁纸
├── GIF/                    # 开屏动图(取第一个 .gif)
│   └── 表情包/             # 表情包 GIF(文件名即触发情绪:开心/得意/变身/没错/期待/疑惑)
├── music/                  # 背景音乐(mp3/ogg/m4a/wav),默认第一首「使一颗心免于哀伤」
│   └── figure/             # 内置歌曲默认封面(取第一张图片,如知更鸟图)
├── build.cjs               # 构建:读取 client.template.js,把素材内嵌成 lib/client.js
├── build.music-exclude.txt # 音乐排除清单(clean 构建时不内嵌其中列出的曲目)
├── LICENSE                 # MIT(仅代码)
├── .gitignore              # 忽略构建产物与第三方壁纸
└── README.md

🚀 快速开始

方式一:npm 安装(推荐,一条命令开箱即用)

dsh plugin --profile web add dsh-theme-firefly

装完重启 dsh web 即生效。npm 包已内置「干净版」lib/client.js,免 git、免构建。

方式二:GitHub 源码安装(开发者/想改素材时用)

# 1. clone 本仓库(仓库已提交干净版 client.js,clone 后开箱即用)
git clone https://github.com/Liu-ZA-81/dsh-theme-firefly.git

# 2. 以 link 方式安装到 web profile(本插件声明了 dsh.bundle,会自动注册)
dsh plugin --profile web add "link:<本目录绝对路径>"

# 3. 重启 dsh web 生效

想改内置素材时,改完 assets/ 等目录后运行 node build.cjs --clean 重新构建干净版。

💡 开箱即用含一张动态壁纸(演示视频)与多张静态立绘;想加更多壁纸, 直接点「景」→「+ 添加壁纸」导入,或把文件放入 assets/ 后重新构建(见「自定义素材」)。

⚠️ 与其它主题(如赛博朋克主题)互斥:多个主题都会调用 ctx.theme.setTheme 并注入 !important 令牌样式,后加载的赢。建议同时只启用一个主题 (把其它主题的 patch 行注释掉即可,可随时恢复)。

卸载

dsh plugin --profile web remove dsh-theme-firefly
# 重启 dsh web 生效

📚 更多文档


🛠️ 自定义素材

壁纸有两种添加方式:

  1. 运行时添加(推荐):点「景」→「+ 添加壁纸」,从本机一次多选图片/视频(Ctrl/框选),立即生效并持久化
  2. 打包内嵌:把文件放入 assets/ 后运行 node build.cjs(适合预置默认壁纸)

其余素材(开屏动图、音乐)需通过 build.cjs 内嵌进 lib/client.js:

node build.cjs          # 完整构建:打包 assets/ 里全部素材(含第三方,仅供本地使用)
node build.cjs --clean  # 干净构建:只打包 build.include.txt 清单里的素材(用于提交仓库)
  • 壁纸:assets/ 支持 .jpg/.jpeg/.png/.webp(静态)与 .mp4(动态)
  • 默认壁纸:assets/ 里文件名含 Default 的图片会在首次安装(无保存记录)时作为初始壁纸;仓库默认随带 Default_wallpaper.png,替换后重新 node build.cjs --clean 即可
  • 开屏动图:GIF/ 目录取第一个 .gif
  • 音乐:music/ 支持 .mp3/.ogg/.m4a/.wav,默认第一首为「使一颗心免于哀伤」; music/figure/ 里第一张图片会作为内置歌曲默认封面;build.music-exclude.txt 里列出的 文件名会在构建时被排除(可留待运行时「+ 添加歌曲」导入)

💡 体积建议:素材会 base64 内嵌进 JS 包,建议控制大小(mp3 ≤128kbps、图片 ≤500KB、 视频 ≤1080p),避免页面加载变慢。

⚠️ 提交仓库前记得跑 node build.cjs --clean(生成只含官方素材的干净版), 避免把含第三方壁纸的完整版误提交。


🔧 技术实现

  1. 客户端插件机制:通过 window.__ModuleLoader__.load() 注册为 DSH 客户端模块, 导出 cordis 插件 { isPlugin, inject: ["theme"], apply }
  2. 设计令牌覆盖:apply(ctx) 中 ctx.theme.register({ id, colorScheme, tokens }) 向 ThemeRuntime 注册 --dsw-* 令牌并 setTheme 激活
  3. 身份层:注入 <style> 实现壁纸背景、粒子动画、开屏动画等;音频全部 Web Audio 实时合成,无外部资源依赖
  4. 壁纸/音乐渲染:动态壁纸用 <video muted loop autoplay>、静态用 CSS 背景层、 音乐用 <audio>;均以 base64 data-URI 内嵌

⚖️ 版权与合规(重要)

  • 代码:本项目源码采用 MIT 协议,欢迎自由使用与修改。
  • 素材:
    • 仓库随代码开源的素材仅为米哈游 / HoYoverse / HOYO-MiX 官方内容: 音乐(如《使一颗心免于哀伤》等)、开屏 GIF、表情包 GIF,以及官方角色壁纸 (firefly-bg.jpg、firefly2.png、firefly3.png)。米哈游对非商业同人二创较为友好, 不涉及商业盈利一般不予追究,但版权仍归米哈游所有。
    • 第三方壁纸:仓库仅随带一个演示视频(哲风壁纸「台灯-城市夜景-夜晚」) 用于开箱即用体验,其余第三方壁纸与 mp4 不随仓库分发。使用者可通过 「景」→「+ 添加壁纸」导入自己的素材,或替换 assets/ 内的文件。

⚠️ 请勿将第三方壁纸资源随仓库公开分发;如需收录,请使用你自己的原创或已授权素材。

📄 免责声明

本项目为粉丝同人作品,与米哈游、HoYoverse、DeepSeek 无任何关联,也未获得官方授权。 仅用于技术学习与个人使用。如侵权请联系我删除。