Skip to content

Repository files navigation

SchedulePin

SchedulePin 是一个本地优先的 Chrome / Edge 计划管理插件。插件负责编辑和保存计划;可选的 Windows 桌面助手负责把计划渲染进壁纸。桌面端没有需要移动、置底或关闭的伪桌面窗口,也不会遮挡其他应用。

目录

功能概览

浏览器插件

  • 新标签页总览:左侧用紧凑的文字列表快速访问网站,右侧保留主题化的 Principle 和完整 To-Do List。大横屏和大竖屏都按可用宽度保持双栏,两栏分别滚动;To-Do List 收起后以横向摘要显示当天完成进度,并可在卡片内展开,Principle 也可独立收起,状态会被记住。
  • 快捷访问:只填网址即可添加,名称选填;留空时自动展示网站简称,例如 https://docs.example.com 显示为 example,并随网址更新,已有自定义名称保留。支持固定、分组、查找、编辑、删除和手动排序。首次使用从空列表开始;链接默认在当前标签页打开,Ctrl / 中键沿用浏览器的新标签打开方式。设置中可切换导航左右位置和网站简称显示;名称与简称相同时不会重复展示。
  • 快速操作:在列表末尾输入内容并按 Enter 添加任务;拖动任务时,任务会跟随指针且相邻项目平滑让位。
  • 入口快捷操作:页面空闲时按 / 聚焦入口搜索;编辑文字或打开弹窗时不抢焦点。拖动入口右侧手柄可在已固定区域或当前分组内排序,也可用空格提起、方向键移动、空格放下;筛选期间暂停排序,避免改变隐藏入口的位置。
  • 网站图标:优先使用浏览器保存的网站原始图标,再尝试该网站的 /favicon.ico;取不到时显示域名首字符的大写图标,底色按域名稳定生成。扩展使用 favicon 权限,不接入第三方图标服务。普通网页预览只能尝试网站根目录图标;未访问且仅在其他路径声明图标的网站,可能暂时显示字母。
  • 导航外观:柔和渐变底色、分组色点和数量、浅色添加按钮随主题调整;悬停或键盘聚焦时突出网站入口。任务区的小型完成环、勾选和输入焦点呼应主题色,横竖屏布局及原有外观设置继续生效。
  • 页面背景:右下角“壁纸库”或设置中的“页面背景”提供清爽纸感、流彩渐变和风景沉浸三种风格。背景效果、自动更换与选图分开管理,横竖屏分别保存裁切位置。修改自动保存,无需再次确认;图片加载失败保留原背景。恢复背景默认设置保留我的壁纸。
  • 我的壁纸:只展示主动收藏、固定、上传或导入的图片,自动换图缓存不会混入。上传支持 JPG / PNG / WebP(20 MB 以内,优化到最长边 3840px),在线图片来自 Wikimedia Commons,保留作者、来源和许可信息。已保留图片可离线使用,可导出 / 导入包含实际图片的 JSON 备份。收藏不会停止轮换,固定则使用该图片并停止自动更换;解除固定后图片继续保留。
  • 自动换图:可选每日更换或每次打开/刷新更换,来源为在线精选或我的壁纸。每日模式在当天首次打开时更新;每次打开/刷新模式由各窗口独立选图,不会带动已有窗口切换。正在输入、打开弹窗或页面隐藏时延后换图,网络失败保留上一张。固定后点击“换一张”先预览,确认才替换并保留;恢复自动更换会使用固定之前的频率。新标签页背景不会修改 Windows 壁纸或触发桌面同步。
  • 自动归档:当天完成的任务保留删除线,次日自动移入归档;归档页支持搜索、查看完成时间、恢复和删除。
  • 个性化设置:导航分为“浏览器页面”和“桌面展示”。浏览器页面按整体样式、页面背景、快捷导航、待办区域和原则卡片组织;桌面展示在同一页连接助手、选择显示范围和显示器,并直接编辑当前屏幕的计划布局。整体样式统一管理默认主题、字体、字号、间距、圆角,以及新标签页单独配色和面板透明度;Principle 的内容、默认展开状态、独立样式和跟随配色集中在原则卡片。修改即时生效并自动保存,失败可重试,各页恢复默认只重置相应范围。
  • 多入口访问:新标签页提供导航与计划总览;扩展图标打开侧边栏计划,侧边栏顶部可新开完整计划页面。首页收起待办不会影响这两个计划入口。
  • 本地存储:任务与基础设置保存在 chrome.storage.local,图片和新标签页背景设置保存在独立 IndexedDB;无需登录。在线图库需要联网,上传和已收藏图片可离线使用。卸载扩展或清除站点数据会清除本地收藏,请使用导出备份迁移。

可选桌面展示

  • 将计划渲染为 Windows 壁纸,可指定一块显示器或全部显示器。
  • 桌面计划沿用网页的品牌栏、日期进度、Principle 和 To-Do 卡片层级,只省略按钮、输入框、勾选框和拖动手柄等交互控件;两端共享主题设计配置,桌面端按显示区域独立换算字号并完整换行。
  • 在浏览器设置页中拖动和缩放计划卡片,为每块显示器独立保存百分比布局。
  • 任务、外观、日期或显示器配置变化后自动重绘;浏览器关闭后,助手仍可按最后一次快照刷新。
  • 关闭桌面展示、主动恢复或卸载助手时,可恢复启用前的原壁纸。
  • 壁纸只是静态桌面内容,不会遮挡应用,也不接受鼠标操作。

浏览器插件可以独立使用。只有需要桌面壁纸功能时,才需要安装和运行 Windows 桌面助手。

快速开始

1. 准备环境

仅构建和测试浏览器插件需要:

  • Node.js 22(包含 npm);
  • Chrome 或 Edge;
  • 在项目目录执行一次 npm install

桌面助手仅支持 Windows 10/11。参与助手开发或完整联调时,还需要 Rust stable 工具链,以及与 Rust 工具链匹配的本机链接器:MSVC 工具链需要 Visual Studio Build Tools 的“使用 C++ 的桌面开发”,GNU 工具链需要 MinGW GCC。

2. 命令总览

项目命令集中列在这里,后续章节只解释各流程的用途和产物。

命令 用途 是否需要 Rust
npm install 安装前端依赖,首次拉取项目后执行
npm run dev 启动 React 界面预览
npm run build 类型检查并构建插件到 dist
npm run extension:build 构建插件到 dist,当前等同于 npm run build
npm run preview 本地预览已构建的前端资源
npm run test:navigation 校验链接、分组、排序和独立存储
npm run test:settings 校验默认原则、旧数据迁移及已有设置保留
npm run test:settings-ui 校验设置分类、即时保存、局部恢复及原则卡片设置
npm run test:ui 使用 Playwright 运行隔离的前端回归测试(需单独准备浏览器测试环境)
npm run test:icons 使用同一 Playwright 环境,在隔离扩展中验证网站图标和字母回退;测试副本禁用桌面通信
npm run test:background 检查换图日期、固定模式和裁切范围
npm run test:wallpaper 检查即时保存、收藏与固定、备份、默认恢复、裁切和独立换图
npm run test:wallpaper-store 使用真实 IndexedDB 验证保留、迁移、缓存清理和默认恢复
npm run test:wallpaper-race 验证延迟下载、多窗口固定/重置和刷新排除上一张图片
npm run test:local 构建插件与助手、执行测试、注册助手并启动隔离的 Edge 联调环境
npm run helper:test 运行 Rust 单元测试和壁纸渲染测试
npm run helper:build 构建 Release 模式的桌面助手
npm run helper:smoke 只读检查 Native Messaging 和显示器信息 是,且需先构建助手
npm run helper:install 注册本地开发版助手 是,且需先构建助手
npm run helper:uninstall 注销本地开发版助手并清理其数据
npm run helper:uninstall -- -KeepData 注销本地开发版助手,但保留缓存和壁纸备份
npm run release:local 测试并构建桌面助手,再生成单文件安装程序

正式发布时使用的 Git 命令也集中在此处。版本号必须与 package.json 一致;以下以 0.3.0 为例:

git tag v0.3.0
git push origin v0.3.0

3. 加载浏览器插件

  1. 运行 npm run extension:build
  2. 打开 chrome://extensions;Edge 使用 edge://extensions
  3. 开启“开发者模式”。
  4. 点击“加载已解压的扩展程序”,选择项目生成的 dist 目录。
  5. 新开一个标签页即可使用;点击工具栏中的 SchedulePin 图标可打开侧边栏,侧边栏顶部的“完整页面”按钮可另开完整计划。

npm run devnpm run preview 只适合快速查看 React 界面。普通网页没有扩展权限,因此不能用它们验证新标签页、侧边栏或桌面助手连接。

Windows 桌面助手

安装正式版本

  1. GitHub Releases 下载 SchedulePin-Helper-Setup.exe
  2. 双击安装。安装过程不需要管理员权限,也不需要手动填写扩展 ID。
  3. 回到 Chrome 或 Edge 的扩展管理页,重新加载 SchedulePin。
  4. 打开 SchedulePin 设置页并点击“重新检测”。显示“桌面助手已连接”后,即可启用桌面计划。

安装程序会:

  • 把助手安装到 %LOCALAPPDATA%\Programs\SchedulePin Helper
  • 为 Chrome 和 Edge 注册 com.schedulepin.helper
  • 使用内置的固定扩展 ID 安全白名单;
  • 注册当前用户的无窗口开机启动进程。

直接双击 schedulepin-helper.exe 不会打开界面。它是由浏览器启动、通过标准输入输出通信的 Native Messaging Host;正式用户应使用安装程序,而不是裸 EXE。

调整桌面布局

在设置中先选择“指定屏幕”或“全部屏幕”,再选择一块显示器编辑布局。拖动预览卡片可改变位置,拖动卡片右下角可改变大小;不透明度等设置会自动同步。布局按百分比保存,因此分辨率或缩放比例变化后仍会保持相对位置。

恢复壁纸与卸载

  • 暂时关闭展示:关闭“显示桌面计划”,恢复原壁纸,同时保留助手和任务。
  • 立即恢复:点击“恢复启用前的原壁纸”,恢复壁纸并关闭桌面展示。
  • 卸载正式版本:在 Windows“设置 → 应用 → 已安装的应用”中卸载。卸载程序会先尝试恢复壁纸,再注销 Native Messaging 和开机启动项。
  • 卸载开发版本:使用命令总览中的 helper:uninstall 命令;如需保留缓存和壁纸备份,使用带 -KeepData 的版本。

助手会备份各显示器启用时的壁纸图片、位置模式和背景色。当前版本不会重新启动 Windows 壁纸轮播;如果启用前使用轮播,恢复后会停留在当时捕获的那张图片。

更完整的正式安装和卸载说明见 Windows 桌面助手安装

开发与测试

浏览器插件开发

只开发任务管理、新标签页、侧边栏或设置页面时,不需要 Rust。通过命令总览中的 dev 命令快速调整界面,再用 extension:build 生成真正的插件资源并按“加载浏览器插件”步骤验证扩展能力。

前端浏览器回归

前端回归测试脚本会先构建前端,再启动仅监听本机的临时产物预览服务,创建隔离浏览器上下文,并在结束后关闭服务和浏览器;测试数据不会写入日常浏览器配置。测试覆盖导航管理、完整任务列表、横竖屏、独立滚动、任务操作、外观即时保存及主题,截图位于 .tools/ui-tests/。设置和壁纸专用回归截图分别位于 .tools/settings-tests/.tools/wallpaper-tests/

运行 test:ui 需要可用的 Playwright 包及其浏览器。已有开发工具运行环境时,可用 SCHEDULEPIN_PLAYWRIGHT_PATH 指向其 Playwright 模块入口,用 SCHEDULEPIN_BROWSER_PATH 指向本机 Chrome / Edge 可执行文件;否则脚本从项目中解析 playwright 并使用其默认 Chromium。单元测试和生产构建不需要 Playwright。

一键完整联调

环境准备完成后运行命令总览中的 test:local。脚本会依次:

  1. 构建浏览器插件;
  2. 测试并构建桌面助手;
  3. 验证 Native Messaging;
  4. 注册固定 ID 的开发版助手;
  5. 使用独立测试配置启动 Edge,并自动加载 dist

随后在新打开的 Edge 中进入设置,点击“重新检测”即可测试桌面壁纸。脚本无需扩展 ID 或其他参数;测试数据保存在项目的 .tools/edge-test-profile,不会与日常 Edge 配置混用。

单独测试桌面助手

需要分步排查助手时,按命令总览中的顺序运行 helper:testhelper:buildhelper:smoke。其中 helper:smoke 只读取 Native Messaging 与显示器信息,不会修改壁纸。

Release 模式的开发版助手生成在:

native-helper\target\release\schedulepin-helper.exe

该文件只用于开发联调和打包,不是面向用户的安装入口。

构建与发布

本地构建安装程序

除完整联调所需环境外,本地打包还需要 PowerShell 5.1 或 PowerShell 7,以及 Inno Setup 6。运行命令总览中的 release:local 后,脚本会检查依赖、测试并编译 Rust Helper,最后调用 Inno Setup 打包。

成功后,输出目录中只有一个交付文件:

release\local\SchedulePin-Helper-Setup.exe

也可以直接运行 scripts\release-local.ps1。缺少 Rust、链接器或 Inno Setup 时,脚本会指出缺失项并停止,不会自动安装或修改本机软件。

使用 GitHub Actions 构建

仓库的 Build Helper Installer 工作流运行在 GitHub 提供的 windows-2022 Standard Runner 上,不需要自建服务器。远程构建与本地构建共用 scripts\release-local.ps1,并在上传前通过静默安装、注册表检查和卸载验证完整安装流程。

手动测试构建:

  1. 打开仓库的 Actions 页面。
  2. 在左侧选择 Build Helper Installer
  3. 点击 Run workflow
  4. 构建完成后,从该次运行的 Artifacts 下载 SchedulePin-Helper-Setup

手动构建产物保留 14 天,不会创建正式 GitHub Release。

发布正式版本

  1. 确认 package.json 中的版本号。
  2. 使用命令总览中的 Git 命令推送同版本的 v* 标签。
  3. 工作流校验标签与包版本;不一致时会停止。
  4. 构建和安装验证通过后,GitHub Release 只发布 SchedulePin-Helper-Setup.exe

当前安装程序尚未配置商业代码签名证书,因此 Windows 可能显示“未知发布者”或 SmartScreen 提醒。这不影响安装流程;公开发布前可为工作流接入可信代码签名。

数据与版本说明

  • 浏览器插件中的数据是主数据;助手只保存离线重绘所需的最后一份快照。
  • 普通 To-Do 不受“当天”限制,未完成时会持续保留;Principle 是独立段落,不参与完成度或归档。
  • 浏览器预览模式使用 localStorage,加载为扩展后使用 chrome.storage.local,两者不是同一份数据。
  • 旧 Tauri / SQLite 原型数据不会自动迁移到 0.3 插件;旧版仅为测试原型,迁移层已随旧架构移除。
  • 卸载浏览器扩展时,浏览器会清除该扩展的数据;卸载桌面助手不会删除浏览器里的任务。
  • 原壁纸恢复支持逐屏图片、位置模式和背景色,但暂不恢复 Windows 壁纸轮播状态。

项目文档

About

A locally stored planner for your browser and Windows desktop. 本地存储的计划管理插件,让待办常驻浏览器与 Windows 桌面。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages