diff --git a/docs/QA_LOOP.md b/docs/QA_LOOP.md index b2d4c6a5..229f7ede 100644 --- a/docs/QA_LOOP.md +++ b/docs/QA_LOOP.md @@ -50,7 +50,7 @@ any bugs found, and committing the fixes. | 2 | Home Feed | pass | 2026-07-16 | Re-verified: all 5 fixes hold (scroll-to-end through ~50 posts with no dead-stop, full end message, untitled fallback, zero nested anchors, zero console warnings on the feed). Sort + vote round-trips clean. Carry-forwards: post detail page still logs 6 dev warnings/load (1 ownership via SvelteKit data prop, 4 CommentTree virtualizer bindings, 1 isAdmin stub — all catalogued in §4); sidebar "Posts 0" stat (backend); vote count transition may announce transient values to screen readers. | | 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 | fixed | 2026-07-16 | 3 fixes: community creation was entirely broken (still POSTing to the Lemmy endpoint → 404; form rewritten against `social.coves.community.create` and verified end-to-end — test community `qa-loop-test.coves.social` exists and can't be deleted, no API), failed submits showed an empty toast (`errorMessage` could return non-strings that crashed the toast markdown renderer), post-create redirect raced the AppView indexer showing "Post unavailable" for brand-new posts (now polls ~3s on the `?uri=` fresh-post signal). Post round-trips, URL/title validation all passed. Carry-forwards: drafts not preserved when navigating away from create forms; post delete succeeds but the page doesn't navigate/update in place; validation is native-browser only (no styled inline errors). | +| 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. | | 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. |