chore(comments): drop epic, sprint and review-round ids from the code
The code cited its plan instead of saying why: `E28 review J4`, `(R6 S3b)`, `S1 justified…`,
`deep-review round 5`. That plan lives in the private ops repo, so for every reader of this one the
citation was noise, and a sentence whose subject was the plan step ("round 2 showed…") hid its
lesson behind an id. Each one is gone and the "why" kept: a bare citation is deleted, a sentence
carrying a lesson is reworded around it ("a later attempt showed…").
Measured (`scripts/audit_metrics.py`, product code): 652 lines in 270 files carried an epic code by
the definition the next commit holds (507 / 241 by the old, two-digit-only one) -> 0. Across all
code, tests, scripts and configs: ~1100 epic-code lines plus ~320 sprint/round ids.
Behaviour unchanged, checked mechanically: every changed .py file has the same AST once docstrings
are blanked; css/sh/toml/yml/json files are identical once comments are stripped; the only
non-comment changes in TS/JS are test titles, one description string in a contract table, and five
ESLint messages, whose text is all the gates snapshot diff holds. Not touched: Markdown (docs and
the changelog keep their history), Alembic migrations, TV episode notation (`S2 · E5`), DESIGN.md
ids (`C1`, `B4`, `S3h`), tracker ids (`SEC-16`, `DX-17`).
One stale claim fixed on the way: test_hls_reaper's docstring said the player checkpoints "every
10 s whether or not it is playing", which plex/stream.py calls wrong; it now says what the code does.
This commit is contained in:
@@ -128,7 +128,7 @@ export default function NotificationsPanel() {
|
||||
else refresh();
|
||||
}
|
||||
// It empties both lists for good (the server's are deleted), so it asks first — it moved from the
|
||||
// band into the header's "…" (E28 C1), where a destructive row keeps its confirm.
|
||||
// band into the header's "…", where a destructive row keeps its confirm.
|
||||
async function clearEverything() {
|
||||
const ok = await confirm({
|
||||
title: t("inbox.clearConfirmTitle"),
|
||||
@@ -145,8 +145,8 @@ export default function NotificationsPanel() {
|
||||
// notices — jump to the feed filtered to that state and the video's channel.
|
||||
// Built from nothing, not spread over the reader's filters: EVERY narrowing that could leave the
|
||||
// video out goes — a tag, "no tag", a search, the age cap, the year, the custom range, the length,
|
||||
// a content type (a hidden Short under "no Shorts"), the scope and the library source (E28 review
|
||||
// C2: the spread kept whatever this list forgot). Only how the reader orders and matches stays.
|
||||
// a content type (a hidden Short under "no Shorts"), the scope and the library source (the
|
||||
// spread kept whatever this list forgot). Only how the reader orders and matches stays.
|
||||
function locate(meta: VideoHiddenMeta | VideoWatchedMeta) {
|
||||
setFilters({
|
||||
tags: [],
|
||||
@@ -176,7 +176,7 @@ export default function NotificationsPanel() {
|
||||
.catch((e) => notifyActionError(e, t("inbox.revertFailed")));
|
||||
}
|
||||
|
||||
// --- The rows' ONE menu (E28 C1) -------------------------------------------------------------
|
||||
// --- The rows' ONE menu -------------------------------------------------------------
|
||||
// A row keeps its link and its unread mark in sight; its dismiss shows on hover. Everything it can
|
||||
// do — the link again, find / undo on an activity row, mark read, dismiss — is its menu.
|
||||
// One menu per list, keyed by the notification's id: the server list polls, and the "…" must still
|
||||
@@ -329,7 +329,7 @@ export default function NotificationsPanel() {
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* The inbox band (B4): Mark all read in sight, Clear everything in its "…" (E28 C1), fixed
|
||||
{/* The inbox band (B4): Mark all read in sight, Clear everything in its "…", fixed
|
||||
while the list scrolls. No title card: the nav rail and the tab title name the page, and the
|
||||
shell's hidden h1 names it to a screen reader. */}
|
||||
{/* The page's background menu (DESIGN "Background menu"): the band's own non-destructive
|
||||
@@ -518,7 +518,7 @@ function NotificationRow({
|
||||
const isScheduler = serverKind(n) === "scheduler";
|
||||
const isDownloadDone = serverKind(n) === "download";
|
||||
const isEmailUndelivered = n.type === "email_undelivered" && typeof n.data?.reason === "string";
|
||||
// A download's life after it is done (E30): shared with you, about to expire, expired, evicted.
|
||||
// A download's life after it is done: shared with you, about to expire, expired, evicted.
|
||||
const lifecycle = DOWNLOAD_LIFECYCLE[n.type];
|
||||
let title = n.title;
|
||||
let body = n.body;
|
||||
@@ -529,7 +529,7 @@ function NotificationRow({
|
||||
body = t("inbox.maintenance.body", { count: d.count });
|
||||
} else if (isScheduler) {
|
||||
// "<Job label> finished/failed", with the result as the body — named in the reader's language
|
||||
// when it rode along as data (E30), else the English summary of an older notice.
|
||||
// when it rode along as data, else the English summary of an older notice.
|
||||
const run = jobRunText(t, n.data as { job_id: string }, lang);
|
||||
title = run.title;
|
||||
body = run.body || n.body;
|
||||
@@ -636,7 +636,7 @@ function ClientActivityRow({
|
||||
}) {
|
||||
const { icon: Icon, color } = LEVEL_STYLE[n.level];
|
||||
const needsAction = n.requiresInteraction && !n.dismissed;
|
||||
// A hidden / watched notice's Find in feed and Undo are in its menu (E28 C1): the row reads.
|
||||
// A hidden / watched notice's Find in feed and Undo are in its menu: the row reads.
|
||||
const quiet = n.meta?.kind === "video-hidden" || n.meta?.kind === "video-watched";
|
||||
const subscribed: ChannelSubscribedMeta | null =
|
||||
n.meta?.kind === "channel-subscribed" ? n.meta : null;
|
||||
|
||||
Reference in New Issue
Block a user