Skip to content

審查報告「立刻做」與「下一步」批次 - #1

Merged
1morr merged 11 commits into
masterfrom
fix/review-do-now-batch
Sep 8, 2026
Merged

1morr merged 11 commits into
masterfrom
fix/review-do-now-batch

Conversation

@1morr

@1morr 1morr commented Sep 8, 2026

Copy link
Copy Markdown
Owner

docs/reviews/2026-09-06-full/report.md 開出 19 條 finding,這個分支修掉其中 10 條。

已修

# 問題 commit
F01–F04 「立刻做」那批(F07 是 F01 的副作用,一起消失) 先前兩個 commit
F05 批次做完之後表格停在舊分面,主畫面變空表格 ca03ea0
F06 Folders 作業列在沒勾選時整組按鈕消失,違反「按鈕變灰時旁邊一定寫得出原因」 8bebe17
F09 兩份 README 說 gen-icons 是「純 Node」,實際上要 Playwright 的 Chromium 9f602d6
F10 PRODUCT.md 指到錯的 design.md 節號,根因是同步 grep 的範圍不含它 9f602d6
F13 lint warning 不擋 CI,三支 Playwright 腳本一支都不在 CI 05afb1c

9f602d6 另外帶了一次 L4 抽驗的結果:space/wbi/arc/search 的 created 與 x/web-interface/view
的 pubdate 對三個真實帳號分秒相同,寫進 docs/design.md 11。

這個 PR 想確認的事

05afb1c 新增的 ui job 從沒在 Linux 上跑過——它跑 smoke / ui-preview / quickfav-preview
三支 Playwright 腳本,本機只在 Windows headless 驗過。開這個 PR 的主要目的就是讓它實際跑一次。

本機驗證

typecheck ✓ · test 242 ✓ · lint 0 warning ✓ · format:check ✓ · build ✓ ·
smoke 17/17 ✓ · ui-preview errors: none ✓ · quickfav-preview ✓

1morr added 11 commits September 6, 2026 20:41
recArchivesByKeywords is a recommendation endpoint, not an upload list:
with ps=1 it returns code 0 and an empty archives array for *every*
account, so the whole following list was recorded as noVideos — whose
inactive age is Infinity, the direction that gets accounts unfollowed
by mistake. Only page.count === 0 now means "never uploaded"; a reply
that does not add up throws and becomes unknown instead.

Activity records bump to schema 2 so the bad rows are swept on open
rather than sitting in the cache for the 30-day TTL.
The "do now" batch from the 2026-09-06 review.

F01 the error banner only existed on the review screen, which a run
that fails before producing any rows can never reach — the page went
silent and people just pressed the button again.
F03 an invalid base URL was rewritten to api.openai.com with the key
still attached, so refusing to save is the only safe fallback.
F04 "Connected" only ever meant two fields were non-empty; it now
needs Test connection to have passed.
F02 from the same review. The script set zh-Hant and then matched
~30 Chinese strings, so the settings rewrite killed it — and CI
never ran it, so nobody noticed. Chapter numbers and tab order
cannot drift the way section titles did.

Lint and format now skip docs/reviews for the same reason: review
attachments are evidence, not project source.
The rows a batch just touched stop matching the active facet, so the
main pane went empty right after the least reversible action in the
app. Switch to the facet the batch produced and say what it did.

ui-preview used to click that facet itself, which hid this.
Every other page greys its buttons and writes the reason next to them;
this one dropped the whole group, leaving a first-time visitor to infer
"tick something first" from a sentence.
gen-icons runs Playwright's Chromium, not plain Node. PRODUCT.md sent
readers to section 3 for the follow endpoints; they are in 11. The
badges still pointed at the pre-rename repo.

The section number drifted because CLAUDE.md's sync grep covered only
src docs CLAUDE.md README.md, which happens to miss PRODUCT.md.

Also records the arc/search spot check: created matches view's pubdate
to the minute on three real accounts.
Warnings exited 0, so they accumulated into background noise, and none
of the three Playwright scripts ran in CI — which is why smoke stayed
broken for months without anyone noticing.

The deliberate service-worker console calls now carry an inline
oxlint-disable with the reason. smoke's only outbound call was the
login check; on CI it gets a stubbed signed-out nav so a rate-limited
runner IP cannot look like a failed assertion.
The report and the benchmark notes are 91 kB of text worth citing by
finding number. Its 56 screenshots are 6.7 MB and would repeat every
time a review runs, so shots/ and logs/ stay untracked.
The four tabs were React state only, so a side button, Alt+Left or a
two-finger swipe left the app entirely — during a run that takes twenty
minutes. Each tab now owns a hash, and the active one carries
aria-current for screen readers.
Cancelling a classification dropped straight back to the prepare screen
without a word, so a run that took twenty minutes looked like nothing
had happened. Cancelling a write left the review filter on a facet that
was now empty. Both stores now remember where they stopped, and the
banner says what stayed cached. The two paths that already returned
partial results — the activity check and the unfollow — are unchanged.
Half-screen next to Bilibili is a natural way to use this, and that
width is below the 900px breakpoint: checkboxes were 15x15 and the
top-bar recheck icon 13x13. The settings switches keep their 34x20 —
they are a different control, and the selectors have equal specificity.
@1morr
1morr merged commit 5ba1312 into master Sep 8, 2026
2 checks passed
@1morr
1morr deleted the fix/review-do-now-batch branch September 22, 2026 13:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant