phase: 135_git_source_branch
All verification complete. No edits were needed by this pass — the phase work and docs were already consistent and green. **Phase 135 final verification pass — report** - Verified all 5 tasks' work present & correct: migration 0024 (reversible), `GitSource.branch` + 4 schema shapes, `validate_branch_name` (full check order per design), `clone_or_pull(…, branch)` (HEAD guard first, `--branch` clone, fetch+ff merge), both call sites pass `row.branch`, UI (add-form field, editor field, row tag), `file://` URL transport. - Completion criteria: (1) branch-mirrored through Sync + CLI — **pass** (E2E + integration); (2) `branch=None` byte-identical — **pass** (`test_branch_none_argv_is_byte_identical_pre_phase_sequence` green); (3) fixed 422s / local-row 422 / tri-state — **pass**; (4) mismatch fails loudly with remove-and-re-add — **pass** (E2E); (5) coverage 99% >90%, E2E isolated green — **pass**; (6) no regressions — **pass**. - Tests: `uv run pytest --cov=app --cov-report=term-missing` → 3223 passed, app/ 99%; `uv run pytest tests/e2e/test_git_source_branch.py -v --no-cov` → 4 passed (16.4 s); `uv run ruff check .` clean; `uv run pyright` → 0 errors, 0 warnings. - Documentation: README.md reviewed in full — phase-135 branch section accurate; the phase's README diff also correctly fixed a pre-existing stale line (shallow `--depth 1` clone vs full-history, phase 107). Routes, env defaults, feature lists verified against code. AGENTS.md — all 10 rules + quick-reference verified (referenced tests, PLAN.md, phases dirs, commands all accurate). **Verified consistent — no changes needed.** - No live-infrastructure changes (dev DB already running and healthy; no live steps in this phase). - Next pending phase: `.agents/phases/todo/136_force_push_reset`.
This commit is contained in:
@@ -2788,6 +2788,7 @@ a.answer-image:hover { text-decoration: underline; } /* flat — the caption und
|
||||
credential — the URL input's treatment VERBATIM (mono, >=44px
|
||||
target, brand focus); type=password masks the value in display. */
|
||||
#git-source-url,
|
||||
#git-source-branch,
|
||||
#git-source-token {
|
||||
flex: 1;
|
||||
min-width: 14rem;
|
||||
@@ -2801,8 +2802,10 @@ a.answer-image:hover { text-decoration: underline; } /* flat — the caption und
|
||||
padding: 0.45rem 0.7rem;
|
||||
}
|
||||
#git-source-url::placeholder,
|
||||
#git-source-branch::placeholder,
|
||||
#git-source-token::placeholder { color: var(--ink-soft); }
|
||||
#git-source-url:focus-visible,
|
||||
#git-source-branch:focus-visible,
|
||||
#git-source-token:focus-visible { outline-offset: 0; border-color: var(--brand); }
|
||||
#git-source-add,
|
||||
#archive-upload-btn {
|
||||
@@ -3226,6 +3229,34 @@ a.answer-image:hover { text-decoration: underline; } /* flat — the caption und
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
|
||||
/* Phase 135 (task 04): the editor's branch field — the token field's
|
||||
box language (full panel width, --bg fill, the line border, mono)
|
||||
at the 44px touch floor; type=text (a branch is a name, not a
|
||||
credential — no masking) + autocomplete=off live in the markup, and
|
||||
the label reuses .ignore-editor-label (the source line's 0.75rem
|
||||
bottom margin is the field pair's top gap — no extra margin class).
|
||||
The muted hint line carries the .field-hint values (ink-soft, 400,
|
||||
0.8rem — the token field's hint styling) as a standalone <p>; the
|
||||
bottom margin is the gap to the copy line (which has no top margin).
|
||||
Git rows only — git-sources.js hides the group for local rows. */
|
||||
#ignore-editor-branch {
|
||||
display: block;
|
||||
width: 100%;
|
||||
min-height: 44px;
|
||||
padding: 0.55rem 0.65rem;
|
||||
font-family: var(--mono);
|
||||
font-size: 0.85rem;
|
||||
color: var(--ink);
|
||||
background: var(--bg);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
.ignore-editor-branch-hint {
|
||||
margin: 0.35rem 0 1rem;
|
||||
color: var(--ink-soft);
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
/* The in-dialog failure line (role=alert): the err pair (err-ink on
|
||||
err-bg 9.3:1, the err-line border) — the .remove-confirm-error
|
||||
language. */
|
||||
@@ -3450,8 +3481,11 @@ a.answer-image:hover { text-decoration: underline; } /* flat — the caption und
|
||||
.git-source-hidden:disabled { opacity: 0.5; cursor: wait; }
|
||||
/* Phase 105 (A5): the "hidden on" state tag — a copy of the
|
||||
.git-source-ignore-count idiom (TEXT + background, never
|
||||
color alone — WCAG 1.4.1: --ink on --bg 16.7:1). */
|
||||
.git-source-hidden-count {
|
||||
color alone — WCAG 1.4.1: --ink on --bg 16.7:1). Phase 135 (A6):
|
||||
the "branch: <name>" state tag joins the same rule — stored git
|
||||
rows with a branch only, the text IS the signal. */
|
||||
.git-source-hidden-count,
|
||||
.git-source-branch-count {
|
||||
display: inline-block;
|
||||
margin-left: 0.55rem;
|
||||
padding: 0.08rem 0.5rem;
|
||||
@@ -5405,6 +5439,7 @@ a.answer-image:hover { text-decoration: underline; } /* flat — the caption und
|
||||
#git-source-form > label,
|
||||
#archive-upload-form > label { white-space: normal; }
|
||||
#git-source-url,
|
||||
#git-source-branch,
|
||||
#git-source-token,
|
||||
#archive-upload-file { min-width: 0; }
|
||||
#git-source-add,
|
||||
|
||||
Reference in New Issue
Block a user