diff --git a/docs/QA_LOOP.md b/docs/QA_LOOP.md index 229f7ede..9bbd681c 100644 --- a/docs/QA_LOOP.md +++ b/docs/QA_LOOP.md @@ -51,7 +51,7 @@ any bugs found, and committing the fixes. | 3 | Community Pages | pass | 2026-07-16 | Re-verified (2nd pass): settings gates, 404 for unknown communities, canonical links (zero `/c/c-` hrefs anywhere), and DID-fallback links all hold; pagination + subscribe round-trip clean. **Backend issues still open**: `community.get` omits `viewer` state (subscribe resets on reload — `community.list` has the correct pattern to copy); stats counters disagree with reality. Carry-forwards: feed loader logs a console error on community-404 pages before the 404 renders; `displayHandle` unused (header shows `!c-science.coves.social`); community sort dropdown renders no selected value; catalogued dev-only binding warnings on /c pages. | | 4 | Post Detail & Comments | pass | 2026-07-16 | Re-verified (2nd pass): delete-confirmation modal works end-to-end (cancel preserves, confirm tombstones), zero CommentActions/CommentVote ownership warnings, full lifecycle (create/nest/vote/edit/delete), tombstones link-free, share URLs canonical, permalinks render standalone. Carry-forwards unchanged: CommentTree.svelte:114 virtualizer binding warnings (needs refactor, dev-only), single ownership warning via SvelteKit `data` prop, deleted comments count in totals (backend), `[image-proxy] withPreset non-proxy URL` warning on PDS getBlob avatars. Note: older QA test comments from previous sessions remain on the science post as content/tombstones. | | 5 | Creation Flows | pass | 2026-07-16 | Re-verified (2nd pass): community form correct (fields, DNS-name auto-transform, pattern validation blocks bad names with NO network call, zero legacy /api/v3 requests), fresh-post redirect lands on the rendered post (markdown body correct, feed listing, clean delete via confirm modal). +1 new fix: required markdown fields (community description) failed silently — `TextArea` never applied `required` to the DOM; now shows native validation + label asterisks. Carry-forwards: drafts not preserved when navigating away; post delete doesn't navigate/update in place; validation is native-browser only. | -| 6 | Profiles & Blocks | fixed | 2026-07-16 | 5 frontend fixes: block requests sent `{did}` instead of the backend's `{subject}` contract (every block 400'd), missing `account.block/unblock` i18n keys, Block/Message rendered on own profile, `/profile/voted/*` + `/profile/media` crashed on legacy Lemmy endpoints (now gated 404s, nav links removed), `/profile/settings` was blank (gated 404; can migrate to `social.coves.actor.updateProfile` later). Profiles, tabs, foreign profiles, blocks pages all pass. **Backend issues flagged**: block records are never indexed (jetstream consumer) — `getBlockedUsers` stays empty, feeds unfiltered, unblock 404s, records stranded on PDS; mari's PDS has 3 stale block records from 2026-02-07. Blocks-users page still reads legacy shape (migrate to `getBlockedUsers` once backend indexes). Carry-forward: background feed fetch logs a console error on user-404 pages. | +| 6 | Profiles & Blocks | pass | 2026-07-16 | Re-verified (2nd pass): own profile clean of foreign actions, "Block user" label translated, all 4 gated routes show clean 404s, nav cleanup holds, blocks pages + not-found graceful, zero new console noise. +1 new fix: deep-linked `?type=` filter now honored on hard loads (state seeded from URL). **Backend issues still open**: block records never indexed (jetstream consumer) — blocking untestable end-to-end (block deliberately not clicked to avoid stranding PDS records); blocks-users page migration to `getBlockedUsers` blocked on that. Carry-forward: feed fetch console error on 404 pages. | | 7 | Explore & Discovery | fixed | 2026-07-16 | PASSED overall (search, sort, empty states, canonical links, join-from-list all work). 2 fixes: subscribe toggles mutated the unbound `community` prop (now local optimistic state), communities with atproto's `handle.invalid` sentinel linked to a dead `/c/handle.invalid` 404 (now DID links, verified working). **Key backend diagnostic**: `community.list` DOES populate `viewer.subscribed` (survives reload on explore) — only `community.get` omits it, which is exactly why the community-page subscribe state resets (§3 flag, now precise). Carry-forwards: explore always splits "Top results"/"Other results" even without a query; top cards omit member counts; "Popular" sort order is non-deterministic across reloads; no user/post search (palette only hands off community search); instance stats "Posts 0" (backend aggregation). | | 8 | Settings, Theme & Shell | fixed | 2026-07-16 | PASSED — all settings pages load clean and persist toggles, theming (scheme + presets) applies live and persists, shell nav has zero dead links at desktop and 375px mobile (no overflow), keyboard nav + skip-link + command palette all work, /go redirects correct. 2 fixes: mailto links were rewritten into dead /profile/ links (Lemmy-era implicit-mention rewrite removed), free-text error messages triggered i18n missing-translation warnings on every error page. Minor carry-forwards: theme color hex inputs report #000000 in a11y snapshot despite correct swatches; theme preset cards use lorem-ipsum sample text. |