Loading
CamelliaV の BLOG
0%
INITIALIZING
项目清单
DOC_ID // 377ca1ONLINE

项目清单

2026-6-6
UPDATED: 2026-6-8
技术分享
READ 14 MIN/COUNT 5315
#项目#开发#复盘
CamelliaV の BLOG
🎨
堆放Vibe项目与二开实现

Vibe

Hanasato

 

Rosereader

 
 
 
 
  • AI自动补全元信息
  • 已知问题:pdf选字不精准;元信息补全过程不透明;暂时不能内嵌AI Mode页
notion image
 

二开

SimpMusic

  • 移动端测试(绕开yt音频限制)
notion image
notion image
  • SimpMusic 是一个开源 YouTube Music 客户端,覆盖 Android 和 Desktop,基于 Compose Multiplatform。
Fork 新特性
  1. YouTube 视频当音乐播放 fallback
  • 当 YouTube Music 把某些 YouTube 视频标成不可播放、非音乐、灰色条目时,fork会绕开此限制。
  • 支持补齐标题、频道/艺人、缩略图、时长、队列位置、播放元信息。
  • 播放时不再只依赖 YouTube Music 音频接口,而会 fallback 到普通 YouTube stream extraction。
  • 支持 muxed video stream 作为可靠音频来源,因此一些“视频但其实可以当音乐听”的内容能直接播。
  • 一些 podcast 也能直接在 SimpMusic 内播放,不需要强行跳到 YouTube 视频页。
  • playlist 里的 fallback 视频、艺人页视频列表里的 fallback 视频都覆盖了。
  • 修了艺人页“更多视频”空响应、无图片、无法进入等问题。
  • 启动恢复上次播放时,fallback 视频曲目也能恢复 metadata 和视频状态。
  1. 通过Cookie 导入便捷桌面端 YouTube 登录
  • 桌面端可以从已登录的 Chromium 系浏览器导入 YouTube cookie,思路类似 yt-dlp --cookies-from-browser。
  • 支持复制浏览器 cookie DB 后读取,避免浏览器占用数据库导致失败。
  • Linux 上支持 Chromium v10、v11 加密 cookie。
  • 支持 KDE KWallet 场景,通过 kwallet-query 读取相关凭据。
  • 导入后同时写入 SimpMusic 账户 cookie,以及给 YouTube extractor 使用的 Netscape 格式 ytdlp-cookie.txt。
  • 如果检测到 YouTube 登录态掉了,会尝试自动重新从浏览器导入;失败时给用户反馈,而不是静默播放失败。
  1. 桌面快捷键和输入体验
  • Ctrl+Alt+P 全局播放/暂停。
  • Ctrl+Alt+Left、Ctrl+Alt+Right 全局上一首/下一首。
  • 窗口聚焦时 Space 播放/暂停。
  • 窗口聚焦时 Left、Right 用于进度后退/前进。
  • Ctrl+S toggle 右侧 now-playing panel。
  • 鼠标侧键映射为后退/前进导航。
  • 支持中键横向拖动列表;Wayland/Compose/AWT 不可靠时,Linux 下可走 evdev 事件读取。
  • mini-player 展开内容支持点击外部关闭,且不破坏原本 mini-player 位置行为。
  1. Linux 桌面运行时优化
  • 重点适配 Arch/KDE/Wayland/NVIDIA。
  • Wayland 下使用 opaque decorated Compose window,规避透明无边框 Skiko 窗口黑屏问题。
  • 保持 SKIKO_RENDER_API=OPENGL 等硬件 OpenGL 路径,不强制降到软件渲染。
  • 保留高刷新率、vsync、refresh-rate fallback,不固定 60fps。
  • 桌面播放能从 vlc.bundled.path 和打包内 lib/app/vlc 找到 bundled VLC。
  • Linux 打包启动时可以绕开容易崩的 native jpackage launcher,改用 Java classpath 启动同一套应用。
  • 默认桌面 UI scale 调到 150%,并在设置里提供缩放控制。
  • 增加字体选择,内置 Noto Sans / Noto Sans SC,改善中文和桌面显示。
  • 桌面语言优先读 LC_MESSAGES 或 KDE Plasma 的 plasma-localerc,再 fallback 到 JVM locale。
  • 更新提醒改成可选设置,默认关闭。
  1. 播放底层增强
  • core 子模块增加 YouTube video fallback stream 支持。
  • 增加 YtDlpStreamExtractor、NewPipePlayerFallback 等提取路径。
  • VLC 侧增加 fallback policy、cached format policy、GoogleVideo range proxy、播放启动参数等处理。
  • Android/Media3 和 JVM/VLC 两条播放链路都做了适配,避免只在一个平台能播。
  1. 打包与发布流程
  • 新增/整理 GitHub Actions release workflow。
  • Android 同时产出 signed Full APK 和 FOSS APK。
  • Windows 产出离线安装包 SimpMusic-Windows-installer.zip,包含 install.bat、证书和 x64 .msix。
  • Linux 产出 SimpMusic-linux-x86_64.tar.gz。
  • Arch Linux 产出 release PKGBUILD,用户可以 makepkg -si 一键安装。
  • 通过 Conveyor 处理桌面跨平台包,并修了 Windows ARM64 VLC 不存在导致 CI 失败的问题。
  • Release URL 和 Arch PKGBUILD 下载地址已改成 fork 仓库地址。

NotionNext

  • Next.js + Notion API 的开源建站系统,把 Notion 当内容后台,用网站前端发布成独立站。支持个人博客、知识库、文档站、作品集、产品官网、导航站等场景,并内置主题、SEO、RSS/Sitemap、评论、统计、搜索、广告、插件、静态导出和 Vercel/Netlify 等部署能力。
fork新特性主要有:
  • endspace修复Recent Logs、目录 TOC;TOC 有滚动进度和当前章节高亮,Recent Logs 按最近编辑时间排序。
  • endspace修复搜索入口:侧栏和移动端新增 Search 按钮;有 Algolia 时打开搜索弹窗,没有时跳到 /search。
  • 文章阅读统计:文章处理时计算字数和阅读时间;endspace 文章页显示 READ x MIN / COUNT x,如果没有 readTime,就按约 400 字/分钟从 wordCount 估算。
  • endspace主题播放器兼容meting网易云,同时避免 endspace 再渲染全局 APlayer,防止重复播放器。
  • 图片加载体验:新增 EndspaceImage 和 Notion 正文图片 skeleton,图片加载中显示占位,加载完成或错误后切换为 loaded 状态。
  • 邮箱链接体验:endspace 导航里的邮箱链接改为 Gmail compose 打开,同时保留邮箱加密/解密工具。
  • Hexo 主题首页交互增强:加入 @chenglou/pretext 的动态 Hero 文案排版/动效,以及可拖拽排序的文章列表,排序写入 localStorage;

Codegraph MCP

Background

  • VS Code 扩展,原型来自 KatsuteDev/Background。通过修改 VS Code 的 workbench 文件,把图片/GIF/URL/glob 解析出来后注入成背景,支持给整个窗口、编辑器、侧边栏、面板分别设置背景,并配置对齐、大小、重复、模糊、透明度、轮播时间、自定义 CSS、API 开关等。
fork 增加/改变的内容:
  • 新命令 Background Local: Copy Current Background URI:复制当前实际显示的背景 URI;本地 VS Code 内部资源 URI 会转换成可直接打开的 file:///...,HTTPS 背景保持不变。(原则上也可以通过打开开发者模式通过js脚本提取,但其快捷键经常不work,完全不可靠)
  • 新命令 Background Local: Next Background:不改用户设置,只把当前选中的活动背景槽切到解析后列表里的下一张。
  • 新命令 Background Local: Previous Background:同样不改设置,把当前活动背景槽切到上一张。
  • 支持多活动背景选择:当窗口、多个编辑器、侧边栏、辅助栏、面板同时有背景时,会用 VS Code quick pick 让用户选择要复制或切换哪一个。

Waywallen

  • Linux 动态壁纸管理器(kde Wallpaper Engine继任),KDE,niri,hyprland可用。
fork修改:
  1. 默认静默启动:启动 daemon 和托盘,但不自动弹主窗口;可以从托盘/DBus 再打开 UI。配置项是 silent_startup,默认 true,UI 设置页也有开关。
  1. 启动恢复改成优先恢复“最后一次 Apply 的壁纸”:全局记录 last_wallpaper,冷启动时优先按全局最后应用结果恢复,避免旧的单显示器记录覆盖用户最后选择。也支持 --no-restore 禁用。
  1. MPRIS 媒体播放自动暂停:当其他播放器通过 MPRIS 报告PlaybackStatus=Playing 时暂停壁纸,停止播放后按 resume delay 恢复;设置项 pause_on_media_playing 默认开启,UI 设置页可配置。
  1. Wallpaper Engine 库路径去重:新增真实路径归一化,避免 ~/.steam/steam 和 ~/.local/share/Steam 这类 symlink 等价路径重复添加同一个 Steam 库。
  1. 修复应用内 Material 图标缺失:UI 构建时优先使用系统的 Material Symbols Rounded 字体,绕开依赖中 Git LFS 字体资源不完整导致的缺图标问题。
  1. 壁纸详情页增加“打开所在文件夹”按钮:在详情路径旁添加 folder open action,直接打开壁纸所在目录。
  1. KDE 静默启动竞态修复:display socket 现在会先 bind 成功,再发布 daemon Ready,避免 KDE 在 Ready 边沿触发重连时 socket 还不可连接。

GrokSearch MCP

  • 给CC与Codex补充联网搜索能力的MCP
fork只保留两个工具:
  • web_search:通过 OpenAI 兼容的 Grok API 做 AI 网络搜索(接收数组,服务端并行查询,不依赖客户端并发实现)。
  • web_fetch:通过 Tavily Extract 抓网页内容,失败时用 Firecrawl Scrape 托底。
完整修改内容:
  • web_search.query 改成 JSON 数组字符串,例如 '["q1","q2"]',服务端会用 asyncio.gather 并行请求上游,再按查询分段合并结果。
  • 单次搜索如果 Grok 返回空内容,会自动再重试一次,仍为空才报错(中转站常见故障转移场景)。
  • 引入共享 httpx.AsyncClient,web_search、Tavily、Firecrawl 共用连接池,减少重复 TLS/连接开销。
  • 重写搜索 prompt:要求准确性优先、使用 [N] 引用格式、同语言回答、区分事实查询和观点查询、事实类优先官方/一手来源、论文/DOI 场景要求核实 DOI。观点类优先博客、reddit等社区来源。
  • 搜索 provider 支持注入共享 HTTP client,同时保留流式响应解析、SSE 兼容和 Retry-After/指数退避重试。
  • 移除了 planning.py 及一组 plan_* 搜索规划工具。
  • 移除了 web_map、get_sources、get_config_info、switch_model、toggle_builtin_tools。
  • 移除了搜索时自动注入本地时间的逻辑。
  • 移除了 Tavily/Firecrawl 作为 web_search 额外信源补充的逻辑,当前 Tavily/Firecrawl 主要用于 web_fetch。

Vicinae

  • Linux 桌面启动器,定位类似 Raycast:用键盘快速启动应用、搜索文件、查 emoji、计算、管理剪贴板历史、执行脚本命令、聚合扩展等。技术上是 QtQuick/QML 做界面,C++ 做业务逻辑;扩展 API 用 React/TypeScript,并尽量兼容 Raycast 扩展生态。
fork围绕剪贴板历史做高频操作增强,尤其是多选、多项粘贴、预览和图片 URI 粘贴兼容性。完整修改:
  • 剪贴板历史多选:支持 Shift+Click 范围选择、Ctrl+Click 单项切换、Ctrl+M 进入/退出多选模式、Space 切换当前项。
  • 多选视觉反馈:选中项显示 checkmark,状态栏显示 X selected,选中时隐藏原图标。
  • 多项操作:Enter 顺序粘贴多项,Ctrl+Enter 反向粘贴,Ctrl+C 复制多项,Ctrl+X 删除多项。
  • 多项内容合并:文本按换行拼接,HTML 合并,文件项合并 text/uri-list。
  • 剪贴板列表导航增强:PageUp/PageDown 按页跳,Home/End 到首尾。
  • 预览导航联动:大图预览打开时按方向键或翻页/首尾键,会先关闭预览并继续导航。
  • 文本预览可选中复制:预览面板里的文本从纯展示改为可选择、只读文本。
  • 图片点击放大:点击图片预览可打开 1000x800 的无边框置顶预览窗口,点击、失焦、Esc/Enter/Space 或导航键关闭。
  • 本地图片 URI 转 PNG 粘贴:对本地 image URI clipboard entry 提供 Ctrl+Shift+Enter / “Paste image as PNG”,会把 text/uri-list 或 GNOME copied-files 里的本地图片读成 PNG/image data后直接粘贴到当前窗口,用来绕过 sandbox app 无法读取原文件路径的问题。
  • 粘贴时序修正:对无法可靠追踪焦点的窗口管理器使用更长 blind paste delay,提升关闭 launcher 后粘贴到目标窗口的稳定性。
  • Ctrl+Alt+R 打开剪贴板里的链接到默认浏览器。
  • Ctrl+Shift+V “Paste as text”,把选中项强制作为纯文本粘贴。
  • 自动 path-to-URI 转换:如果剪贴板里是本地绝对路径,会自动补 text/uri-list;如果是图片文件,还会补图片 mime 数据。
  • 剪贴板后端健康检查/自动恢复:针对 data-control clipboard server 异常做健康检查和重启。

Cherry Studio

  • 跨平台(Electron)桌面 AI 助手客户端,把多个 LLM 提供商、本地模型、助手、会话、知识库、文件处理、MCP 工具、翻译、搜索、备份等 能力整合到一个桌面应用里,面向个人 AI 工作流和多模型对话使用。
fork改动:
主要是把 Cherry Studio 改成更偏“高频聊天工作台”的版本:
  • 会话多标签:透明多标签栏、中键关闭、重启恢复标签/活动标签、记住横向滚动位置。
  • 工作区标签组:可创建/切换/重命名/删除工作区,每个工作区独立保存标签和当前会话。
  • 时间线:修复滚动消失和首尾裁切,节点预览,按节点恢复位置,Alt+Arrow 和 Alt+Numpad1..9 跳转。
  • 模型分组:全局模型组,支持 order-first 回退和 round-robin 轮询,可在助手设置和聊天顶部切换。
  • 生成中继续发送下一条消息。
  • 启动器:Ctrl/Cmd+P,助手/话题搜索、键盘导航、右键菜单复用、直接创建助手/话题。
  • Markdown 导出增强:图片输入会导出 .assets/ 资源目录,URL 图片保留外链。
  • Token 统计面板:设置 -> 统计,按助手/话题/对话聚合 token、消息数、更新时间。
  • 聊天背景轮播:目录、多图、透明度、间隔、手动下一张、显示当前背景图,支持软链接图片和软链接目录。
  • 启动器里增加“下一张背景图片”动作。
  • Anthropic 提供商增加 Claude Code 兼容模式,请求头和 User-Agent 可一键应用。
  • GPT-5.2+ 推理强度识别,支持新版 GPT-5 系列的 xhigh 等选项。
  • 用户纯文本 URL 在关闭 Markdown 渲染时也会变成可点击链接。
  • 会话切换稳定性:Ctrl+Tab/Ctrl+Shift+Tab 保留各标签滚动位置,减少代码块延迟重排导致的跳动。
  • 会话面板持续挂载、加载骨架屏、切换按键锁存、历史流图强类型和 memo 化。
  • 大话题性能优化:减少 DOM 扫描、降低合成器压力、限制时间线锚点数量、content-visibility、大消息数自动关闭时间线锚线。
  • Ctrl/Cmd+W 关闭当前会话标签,最后一个标签不会被关掉;菜单/WebView 快捷键也接入关闭当前标签。
  • 修复聊天消息视口高度塌陷导致正文消失。
  • 聊天路由保活:进入设置页等路由时保留首页聊天状态、流式输出和滚动位置。
  • 渲染性能基础设施:开发环境性能监控、active/warm/cold 会话生命周期、非活跃标签暂停锚点和 token 估算。
  • 视频/文件工作流增强:新增视频预处理服务,用 ffmpeg/ffprobe 抽帧、抽音频、读 SRT/VTT 字幕,并把视频转换成帧、音频、时间线文本给模型;本地视频渲染也更稳。
  • 文件列表增强:ripgrep 文件枚举抽出 helper,支持 followSymlinks。
  • 语言归一化:统一处理 ja、jp、zh_HK、pt-BR 等浏览器/旧配置语言码。
  • MCP Browser 多标签稳定性:切换标签时保持 BrowserView 附着,用移出屏幕替代反复 remove/add,减少重排/状态丢失。
  • Arch Linux 打包:新增 cherry-studio-bin、cherry-studio-patched-git、cherry-studio-patched-local PKGBUILD。
  • 文档/工程规则:README 改成补丁功能说明,中英文同步;AGENTS/CLAUDE 增加远端策略、i18n、验证、技能路由等协作规则。
  • 修复设置数据页恢复显示。
  • 新增技能目录服务:扫描 Codex 技能目录和 Cherry 本地技能目录,读取 SKILL.md 和 agents/openai.yaml 元数据。
  • 新增技能设置页:设置 -> 技能,可启用/禁用来源、搜索技能、打开目录、刷新目录、禁用单个技能。
  • 支持重复/冲突技能处理:同名同内容折叠为重复项,同名不同内容标记为变体,可设置 Cherry/Codex 优先来源或手动首选变体。
  • 聊天输入框新增技能工具按钮:手动模式下可从 quick panel 多选技能,并以标签形式显示/移除。
  • 支持 $skill 显式引用:例如输入里带 $review 会解析对应技能、从正文移除引用,并把技能提示注入本次回复。
  • 自动技能发现模式:默认把可用技能的精简目录摘要注入 assistant prompt,让模型自行判断是否应用。
  • 消息元数据记录技能上下文:保存本次是手动/自动、具体注入了哪些技能、是否由 $ 显式触发。
  • 助手消息头显示技能上下文:展示“已注入技能”或“自动技能发现”,并显示技能 chip。
  • Agent Session 目前只补了输入状态字段,设置文案明确普通聊天已接入,Agent Session 尚未真正接入技能目录。
  • 背景轮播未提交增强:双层 crossfade 切换、禁用时淡出、透明度变更只更新当前层、新挂载容器自动恢复轮播状态。
  • 时间线/渲染未提交加固:有精确滚动快照时不再用时间线锚点抢恢复;无快照时回退到锚点;失败/暂停/陈旧未完成回复会在时间线锚点标记异常。
  • 新增/补充相关测试:技能目录、技能 prompt 注入、消息头技能显示、背景轮播 crossfade、DataSettings 默认渲染等。

Spectacle

  • KDE 的截图/录屏工具
新增/维护的三类特性:
  1. Copy file URI to clipboard(多项目剪贴场景) 在 Settings -> General -> After taking a screenshot 增加“复制文件 URI 到剪贴板”选项。复制 file:///.../shot.png 这种 URI,配合patch过的vicinae作多项目剪贴(需要 text/uri-list的程序)。
  1. Game Mode(避免与游戏F系列快捷键冲突,临时全快捷键禁用) 在 Settings -> General 增加游戏模式开关。启用后 Spectacle 会抑制自身全局快捷键,避免截图快捷键和游戏里的 F1-F12 等按键冲突。默认关闭。
  1. Restore Last Rectangular Region(自动采用上次截图区域,用于截取等大小,等位置的图片) 在矩形区域截图选择界面按 R,恢复上一次确认过的矩形区域。它只恢复选择框,不会立刻截图,所以还能继续微调后再确认。保存的是浮点逻辑坐标,避免高 DPI/分数缩放下因取整产生 1-2 像素漂移;空区域或完全离屏区域会被忽略。

Karousel

  • KDE KWin 脚本,实现类似niri可横向无限滚动的平铺窗口管理(也可以结合虚拟桌面作纵向)。它会自动把普通窗口放进列式网格,但不强制把窗口宽度最大化;窗口宽度可以由用户控制,超出屏幕宽度时通过水平滚动浏览。适合宽屏使用,提供窗口/列移动、聚焦、宽度调整、堆叠列、桌面移动等快捷键能力。
相对上游改动有:
  1. 支持 KDE “初始时最小化”窗口规则(kde窗口规则的静默启动) 如果窗口规则让应用启动时最小化,Karousel 接管时不再把它强行恢复显示。窗口会进入 Karousel 现有的 TiledMinimized 状态,用户手动恢复后再变成正常平铺窗口。这个主要服务于静默启动场景。

TODO

SimpMusic

  • 支持视频(content unavailable ytb) yt music上游不支持不被yt判定为music的视频,尝试绕过
  • 解决error empty reponse(应用对视频类有时无法正常加载)

NotionNext

  • endspace主题:引入博客目录层级 | 修复recent log不更新变更 & 博客阅读时间未显示 | 邮件跳转gmail发送页
 
NAVIGATION // Related Articles
Loading...
© 2024-2026 CamelliaV