尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A single-page tool for turning a pasted Jira ticket export into a monthly delivery board: a "what shipped this month" report you can review, write up, and share.
Sign-in is required — with an @BHphoto.com email address — before the board is shown. See Cloud sync below.
Paste ticket rows (tab/comma/pipe-separated, or a raw Jira multi-line export) and it builds:
Everything runs client-side in one HTML file — no build step, no backend required. Board state lives in memory for the session; use Save this month to persist a board to the browser's local storage and reload it later from Saved months.
Also has a star-to-save-for-later feature (Year in review, for pulling together an end-of-year report).
The Saved months card has:
The board's grouping options (release, sprint, portfolio, priority, reporter) now include Group by month, which groups rows by which saved month they came from and orders the groups newest-first. It's used automatically by Load all to board, and can also be picked directly from the grouping dropdown.
Starring an item for Year in review before its writeup (what we were solving / what shipped / impact to watch) is filled in no longer freezes that entry blank — editing the row afterward keeps the year-in-review entry updated with the latest text.
The whole app sits behind a sign-in screen (email + password, via Firebase Authentication), restricted to @BHphoto.com addresses — enforced both client-side (the form rejects other domains before ever calling Firebase) and by Firestore's own security rules (firestore.rules), so it holds even if the client-side check is bypassed. New accounts get a verification email and can't use the app until they click it.
Once signed in, everything that keeps Main board, Dashboard, and Updates populated — the current board itself (rows, period, your name, notes, grouping) — plus your saved months and starred items also sync to your own Firestore document, so they follow you to any browser or device you sign into. Auto-save: every 10 seconds, if anything on the board changed, the app saves it — to this browser, into Saved months (under the board's period, as if you'd clicked Save this month), and to your account when signed in. It also saves right away when you switch tabs or close the page. The full date and time of the last save (e.g. "Last auto-save: Tue, Oct 27, 2026 at 5:49:42 PM") shows at the top right of the board and in the Saved months card, and is remembered across reloads. When the board holds several months (Load all to board), each row is saved back to its own month. Signing in for the first time on a browser that already has a cloud copy asks before overwriting what's in that browser. Nothing is uploaded until your cloud copy has been read, so reopening the app can't overwrite newer edits from another device; if the two copies already match, you aren't asked at all. Next to your email in the toolbar, Saved to account confirms each sync, and Not saved to account (with an explanation) shows if Firestore rejects a write — usually because firestore.rules hasn't been published yet.
Signing in lasts 4 hours (tracked from the moment you sign in, independent of activity — reloading the page doesn't reset it), after which you're automatically signed out and shown the login screen again. Right before that happens, whatever's currently on the board — even if you never clicked Save this month — is saved into Saved months so nothing is lost. A normal reload or new tab in the meantime doesn't ask you to sign in again.
To enable this on your own Firebase project:
firestore.rules's contents into the Firestore Rules tab and publish.The Firebase web config is inlined directly in index.html (these values are public client identifiers by Firebase's own design — the security rules above are what actually restrict access, not hiding this config).
Open index.html directly in a browser, or serve it locally:
python3 -m http.server 8000
then visit http://localhost:8000.
The included GitHub Actions workflow (.github/workflows/deploy.yml) publishes index.html to GitHub Pages on every push to main. Enable it under the repo's Settings → Pages → Source: GitHub Actions.