chore: gitignore .screenshots/ + capture round 10 lessons in CLAUDE.md#92
Merged
Conversation
Two small hygiene changes that lock in this session's learnings.
1. .gitignore — add `.screenshots/`. The existing `screenshots/` entry
on line 120 didn't match the dot-prefixed variant, so .screenshots/
has been showing up in every `git status` run for weeks. One-line
fix.
2. CLAUDE.md — new section "CI & E2E Stability (Round 10 Lessons,
2026-05-13)" between "Supabase Database Migrations" and "Important
Notes", capturing:
- NEVER merge a PR while another PR's CI is running against the
same backend. The concurrency mutex in e2e.yml protects this
now, but the rule still applies for any other shared backend
introduced later.
- NEVER bypass commit hooks. Husky + lint-staged + gitleaks catch
real bugs; --no-verify is explicitly forbidden without user
opt-in.
- Programmatic `el.scrollTop = N` does NOT fire scroll events in
WebKit reliably. The fix pattern (dispatch the scroll event
explicitly) is now applied at 4 sites in tests/e2e/messaging/,
and any future test code touching scrollTop should follow it.
- Branch hygiene — delete_branch_on_merge=true, fetch --prune
after merge, no floating unmerged branches, avoid stacked PRs
(PR #87 auto-close footgun documented).
- CI logs API ≠ UI. The Actions list page is misleading for
in-progress matrix runs; use `gh run view --json` for
authoritative state.
Plus a small fix on the existing "Important Notes" bullet — the
line claiming "E2E tests are local-only, not in CI pipeline"
was stale. E2E now runs on every push and PR across 28 shards
(chromium + firefox + webkit). Updated to reflect reality and
point at the new CI section.
Verification:
- `git check-ignore .screenshots/` confirms it's now matched by
the new line 121 entry
- `git status` no longer shows .screenshots/ as untracked
- Pre-commit hooks ran clean (prettier + gitleaks)
Refs: PR #89 (concurrency mutex), PR #87 (stacked-PR autoclose footgun),
memory entries feedback_branch_hygiene.md and
lesson_concurrent_ci_shared_backend.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two small hygiene changes that lock in this session's accumulated learnings.
1.
.gitignore— match.screenshots/The existing
screenshots/entry on line 120 didn't match the dot-prefixed variant. As a result.screenshots/has been showing up in everygit statusrun for weeks. One-line addition.2.
CLAUDE.md— new "CI & E2E Stability" section + stale-claim fixNew section between "Supabase Database Migrations" and "Important Notes" captures the round-10 lessons:
--no-verify) — explicit user preference, codifies what gitleaks/husky/lint-staged are for.el.scrollTop = Ndoes NOT fire scroll events reliably in WebKit — documents the fix pattern (dispatchEvent(new Event('scroll', { bubbles: true }))) so future test code doesn't re-trip on it.delete_branch_on_merge=true, fetch --prune after merge, no floating PRs, avoid stacked PRs (PR docs(auth): #85 replace stale Supabase project ref with placeholder #87 autoclose footgun documented).gh run view --jsonis authoritative; the Actions list page is misleading for in-progress matrix runs.Plus a stale-claim fix on "Important Notes": the bullet saying "E2E tests are local-only, not in CI pipeline" was wrong. E2E now runs on every push and PR across 28 shards (chromium + firefox + webkit). Updated to reflect reality.
Why bundle this
Both changes are pure hygiene with zero risk. Two unrelated tiny commits = noise. One PR = clean.
Verification
git check-ignore -v .screenshots/confirms.gitignore:121now matchesgit statusno longer shows.screenshots/as untracked🤖 Generated with Claude Code