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

trellis-dashboard

v0.1.1

Published

A local, read-only dashboard for Trellis projects

Readme

Trellis Dashboard

npm version license node

一个本地、只读的 Trellis 项目面板。安装一次,在任意包含 .trellis/ 的项目里运行 trellis-dashboard 即可打开。

不需要数据库、Python 或 AI 服务,不修改目标项目,不执行它的脚本与 hooks。前端和服务端都随安装包构建,无须向目标项目添加依赖。

已发布到 npm:npx trellis-dashboard 或 npm install --global trellis-dashboard 即可使用,无需克隆本仓库。

快速开始

运行环境:Node.js 18.18+。开发和浏览器测试推荐 Node.js 22 LTS,本项目在 Node.js 22 / macOS 上验证。

1. 安装

# 免安装直接运行
npx trellis-dashboard --help

# 或全局安装
npm install --global trellis-dashboard

全局安装目录需在 PATH 中;若没有全局写权限,可以使用自己的 npm prefix,或使用上面的 npx 方式。不需要 sudo 修改目标项目。

从源码安装(开发或本地验证):

npm install
npm run build
npm install --global .

或者生成独立分发包再安装(不依赖源码目录持续存在):

npm pack
npm install --global ./trellis-dashboard-0.1.0.tgz

2. 在你的 Trellis 项目启动

cd /path/to/your-project
trellis-dashboard

默认打开 http://127.0.0.1:4317。按 Ctrl+C 停止。也可以从项目子目录运行,自动向上找到最近的 .trellis。

# 显式指定项目;路径可以包含空格和中文
trellis-dashboard --dir "/path/to/your project"

# 换一个端口,不自动打开浏览器
trellis-dashboard --port 4320 --no-open

# 自动分配空闲端口,以终端打印的 URL 为准
trellis-dashboard --dir /path/to/project --port 0

trellis-dashboard --help
trellis-dashboard --version

免全局安装(先在源码目录完成 npm install && npm run build):

node /absolute/path/to/trellis-dashboard/bin/trellis-dashboard.mjs \
  --dir /path/to/your-project --no-open

开发时启动

npm run dev -- --dir /path/to/your-project --no-open

此命令先构建再启动,不向目标项目写文件。修改 Dashboard 源码后重新构建/启动即可。

面板内容

任务面板

  • 看板 / 列表、关键词搜索、状态 / 优先级 / 负责人组合筛选、最近更新 / 创建时间 / 优先级排序。
  • 活动、归档及全部视图;统计与当前筛选集合一致。
  • 紧凑统计、固定导航与搜索筛选;每个看板列独立滚动,列表数据区独立滚动且表头保持可见,不再由任务数量撑高整页。
  • 窄屏看板可在内部横向切列;点击筛选按钮可展开完整状态/优先级/负责人筛选,支持关闭和 Escape。相同视图自动刷新时保留滚动位置。
  • 支持 planning、in_progress、completed;未知状态保留原值,不会被错当成完成。
  • 查看父子关系、基础信息、备注和完整原始元数据;目录名可以不同于 id / name。
  • 阅读 prd.md、design.md、implement.md、research/ 与 JSON/JSONL 等文本产物。可选文档不存在时正常显示。
  • JSONL 跳过 _example 模板行,单独标记损坏行,保留其他有效记录。

执行计划进度仅统计 implement.md 中真正的 Markdown 任务复选框,排除代码示例。没有可计算计划时显示“未提供”。它不是代码完成率、测试通过率或正式验收结论;in_progress 不被强行拆成实现/检查/收尾。

规范库

按 .trellis/spec/ 的实际目录阅读 Markdown,兼容 frontend/、guides/ 以及多包、多层组织方式;支持安全的内部文档链接。

工作记录

按 .trellis/workspace/<developer>/ 查看索引与 journal-N.md,也支持根工作区索引。这里是历史记录,不是 Agent 在线状态或实时对话。

阅读空间与滚动

  • 任务详情采用接近满屏的阅读布局;默认展示文档,完整说明、关系和备注移到“任务信息”页签,原始 JSON 仍在“原始元数据”中。
  • 规范库和工作记录的文件搜索位于紧凑标题栏右侧。目录、正文分别滚动,导航、页签和文档工具栏不跟随正文移动;滚到边界也不会继续带动整页。
  • 移动端文档目录默认收起,点击标题右侧的目录按钮展开;选中文档后返回阅读。支持 Escape 收起目录。
  • 内部锚点只定位正文;每两秒刷新不会无故把当前阅读位置重置到顶部。
  • 默认阅读状态的浏览器回归标准:1440×900 下正文视窗不少于 630px,390×844 下不少于 422px。测试用长目录和长 Markdown 验证真实滚动,而非只比较静态截图。

数据同步与异常

前端每 2 秒读取本地快照,常规项目的变化在 5 秒内可见;也可手动刷新。打开的文档会同步更新。目录消失时明确显示不可用,不把旧快照冒充最新状态。

单个损坏任务、未知字段、缺失可选目录、超限文档不会让其他合法数据不可用;读取提示会说明被跳过的路径和原因。

读取范围与安全

  • 服务只绑定 127.0.0.1,没有 --host 0.0.0.0 选项。没有账户、远程共享、遥测、云端上传或数据库。
  • 只有 GET / HEAD 接口,校验 Host / Origin;没有任务创建、编辑、启动、归档或任意命令接口。
  • 文件接口仅开放 tasks/ 的 Markdown、JSON、JSONL、TXT、YAML 文本,以及 spec/ / workspace/ 的 Markdown。.version 只用于显示版本。
  • 不开放 .developer、.runtime、.env、项目源码、scripts/、agents 或任意文件系统路径。
  • 拒绝目录穿越、隐藏路径和越界符号链接;仅允许仍位于获准内容范围内的链接。顶层 .trellis 指向项目外的链接也会被拒绝,不继承 Trellis 的额外受信任目录配置。
  • Markdown 不执行原始 HTML/脚本。外部链接须用户点击才打开;不自动加载 Markdown 图片,包括远程跟踪图片。
  • 不执行目标项目的 Python、shell、hooks、Git 或 AI 工具;不修改 .trellis、package.json、Git 索引或任务状态。

有界读取

为避免单个本地文件拖垮面板,设置如下上限;达到上限时明确提示,不将截断数据冒充完整结果:

| 项目 | 上限 | | --- | --- | | 单份文档 | 1 MiB | | 单份 task.json | 256 KiB | | 单次任务/计划读取预算 | 8 MiB | | 单次扫描目录项 | 10,000 | | 任务数 | 1,000 | | 目录嵌套深度 | 32 | | JSONL 结构化展示 | 前 2,000 行,仍可展开文件完整原文 |

超大型项目可能需要缩小内容规模;面板不是后台索引服务器。目录文件布局兼容基于官方说明及 Trellis 0.6.15 样例验证,不承诺未知未来版本的所有扩展语义。

验证与测试

npm run typecheck
npm test                       # 构建 + 单元 / 文件系统 / HTTP / CLI 集成测试
npm exec -- playwright install chromium
npm run test:e2e                # 先完成 build;真实 Chromium 浏览器测试
npm run test:package            # pack → 离线临时全局安装 → 在另一项目启动
npm run check                  # 完整检查(需要已安装 Chromium)

测试使用临时合成项目,不依赖开发者私有路径。覆盖任务兼容性、解析、实时刷新、异常、只读摘要对比、路径/符号链接保护、跨源防护、安装后的命令、桌面/移动端交互以及 Markdown 脚本和远程资源隔离;另用长列表/长文档验证阅读高度、定向滚轮、边界隔离、固定工具栏、移动目录及锚点/刷新位置。测试中的安装使用临时 prefix,不污染实际全局 npm 安装。

浏览器截图和失败 trace 存在 test-results/,不纳入安装包。

常见问题

  • 找不到 .trellis:进入已经初始化的 Trellis 项目或传 --dir;本命令不会自动执行 trellis init。
  • 最近的 .trellis 损坏/是普通文件:先修复该目录;不会偷偷改为打开上层项目。
  • 4317 被占用:换 --port 4320 或 --port 0;不会结束别人的进程。
  • 浏览器没打开:直接访问终端中的 URL;自动打开失败不会结束已启动的服务。
  • 缺少前端资产:在源码目录执行 npm run build,或重新安装生成的 .tgz;不能只拷贝启动脚本。
  • 任务状态不符合预期:面板显示磁盘上的 task.json 原值;finish 只清除会话指针不一定改变状态,归档和 completed 也不是同一个概念。
  • 跨目录 symlink 被拒绝:这是面板的只读安全边界;不通过配置文件隐式授予其他目录权限。

实现结构

bin/                  可安装的命令入口
src/server/           项目发现、有界文件读取、本地 HTTP 服务
src/shared/           DTO、筛选、JSONL 与安全链接规则
src/client/           React 界面、文档阅读器、响应式样式
test/                 合成 fixture、单元/集成/浏览器测试
scripts/              构建与隔离安装验证
dist/                 构建后随包分发的服务端和前端资产

运行期不需要第三方 Node 依赖,前端与 Markdown 解析器在构建时打包。React、Vite、TypeScript、Playwright 等只用于开发/构建。

来源与边界

本项目独立实现文件读取与 UI,参考 Trellis 的公开文件语义,不是官方 Trellis CLI 的修改版,不复制其脚本、Agent 定义、品牌图片或用户业务内容。

上游 Trellis 使用 AGPL-3.0;本地数据不会被纳入 Dashboard 分发包。本项目以 MIT 许可发布于 npm。