From c528efb0d0f250b9b90be4db32600d06b6967567 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 12 Aug 2026 08:15:32 +0200 Subject: [PATCH 01/53] Let Stop end a running npm install (#274) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Nothing in the app can stop a running `npm install`. `npm:kill` resolves a child out of the script registry only — by `runId`, or by the directory index `npm:run-script` maintains — and a running install lives in a different map, `runningInstalls`, keyed by an `installId` the preload never hands back. So Stop answers `{ok: false, error: 'No running script'}` and the install runs to completion. Nobody has hit it because nothing had asked to stop one: install is reached from the checklist button, and the terminal's Ctrl+C is only wired up during chains that do not include it. #246 changes that — it starts install unattended after the clone, and being able to stop it is the condition that makes running unattended reasonable at all. ## What changes `installIdByDirectory`, beside the existing `runIdByDirectory`, and a fallback in `npm:kill` that consults it once the two script lookups miss. A directory is all a caller can offer for an install, and the two never run for the same directory at once. Everything downstream is already generic: `cancelledChildren`, `killChildTree`, the 3-second `SIGKILL` backstop. No `src/preload.js` change — `npmKill` already forwards `{ runId, directoryPath }`, and during an install `currentRunIdRef.current` is null, so the directory branch is the one that runs. Marking the child cancelled matters more for an install than for a script. A stopped install exits non-zero, and on Windows a kill surfaces as a plain exit code rather than a signal, so without it `runNpmWithEngineRetry` would read the stop as an engine mismatch and respawn the install the contributor just stopped. `test/npm-runner.test.cjs` already pins that `cancelled` short-circuits the retry; this makes the install path reach it. **Not in this PR:** any caller. The Stop control that uses it ships in the stacked PR for #246. On its own this is reachable only through the terminal's Ctrl+C during a chain that runs an install. ## How to test this Platforms: **macOS and Windows both** — process-tree killing is the one thing that differs, and this is a kill path. This has no button of its own until the stacked PR lands, so it is driven from the terminal. **Starting state:** a site whose clone has finished and whose dependencies are **not** installed. 1. Click **Install npm dependencies**. Wait for npm to start producing output in the Terminal. 2. Press **Ctrl+C** in the Terminal. 3. The install stops. Check no `node`/`npm` child of the app survives — Activity Monitor on macOS, Task Manager on Windows. 4. The **Install npm dependencies** step now offers **Retry npm install**, and the build step stays locked. 5. Click the retry. It starts a fresh install rather than resuming a dead one. Before this change, step 2 does nothing at all and the install runs to completion. **What must not have happened:** - No orphaned `npm`/`node` process left behind after the stop. That is the failure mode `killChildTree` exists for (#83, #146), and an install is a tree too. - The stop must **not** be retried as an engine mismatch — watch for a second `npm install` starting itself a moment after you stopped the first. On Windows this is the likely shape of a regression, since the kill there produces a plain non-zero code with no signal. - The site must **not** read as having completed the install step. A cancelled install leaves a partial `node_modules`, and `installFailed` is recorded so it does not read as done (#42). Covered by `npm:kill ends a running install, which only its directory can name` in `test/ipc-wiring.test.cjs`, which fails on the old code (the handler returns `{ok: false}` and never reaches kill-tree). ## Risks and limitations Small and additive: one map, one fallback branch, no change to any existing lookup. The blast radius is a `npm:kill` call that used to fail and now succeeds. The lifetime of `installIdByDirectory` mirrors `runIdByDirectory` exactly, including the identity-guarded delete, so a second install for the same directory cannot be made unkillable by the first one's exit. Not tested by hand on Windows by me — the artifact from this branch is the way to do that. ## Related Groundwork for #246. Does not close anything on its own. ---
Design decisions and alternatives considered **A separate `npm:install-kill` channel** was the obvious alternative. Rejected: the renderer already calls `npmKill({runId, directoryPath})` from one place (`killCurrent`), and it does not know whether the thing it is stopping is an install or a script — that is precisely the knowledge the main process has. Two channels would have pushed that question back into the renderer for no gain. **Returning the `installId` to the renderer** so an install could be killed by id like a script. Rejected: the preload deliberately keeps `installId` private, correlating log and done events internally so callers get a plain `(onLog, onDone)` pair. Widening that to hand out the id would change the shape of the API for every caller to serve one.
Review outcome (required — see AGENTS.md) 1 [fix here] · 0 [follow-up] — fixed. **tests 🟡 [fix here]** — the new test passed under Electron's Node but failed under `npm test` on `.nvmrc`'s Node: emitting `close` reaches `npm:install`'s `onDone`, which calls `getStore()`, which pulled in the real `electron-store` and through it the real `electron` package, tripping the harness's own guard. Fixed by adding `fakeSettingsStore()` to the stubs, the same way the quit-sweep test does for the same reason. This is exactly the "green on one of the two runtimes" shape the review standard names; both runtimes are green now (840 tests each). The judgement pass was run in this session rather than dispatched to a subagent — the tooling in use blocked spawning one. Flagging it because the standard prefers fresh context for that pass, and a self-review is the weaker version.
Screenshots or recording Nothing on screen changes. The behaviour is in the main process; the control that exposes it ships in the stacked PR.
Co-authored-by: Claude Opus 5 (1M context) --- src/main.js | 26 ++++++++++++++++++++++++- test/ipc-wiring.test.cjs | 41 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index 54568d6..9a7e087 100644 --- a/src/main.js +++ b/src/main.js @@ -203,6 +203,12 @@ const runningScripts = {}; const cancelledChildren = new WeakSet(); /** @type {Record} */ const runIdByDirectory = {}; +// The same directory index for installs. The renderer knows a script's runId +// (`npm:run-script` returns it before the first log line) but never an +// installId — `runNpmInstall` keeps that correlation id to itself in the +// preload — so a directory is all a Stop control can offer for an install. +/** @type {Record} */ +const installIdByDirectory = {}; /** @type {Record} */ const playgroundServers = {}; // The sites being created right now — liveness, not truth, which is why it is @@ -2261,6 +2267,7 @@ ipcMain.handle('npm:install', async (event, directoryPath) => { retryOnEngineMismatch: true, register: (child) => { runningInstalls[installId] = child; + installIdByDirectory[directoryPath] = installId; }, onLog: (type, data) => { event.sender.send('npm:install:log', { installId, type, data }); @@ -2280,6 +2287,12 @@ ipcMain.handle('npm:install', async (event, directoryPath) => { } catch {} event.sender.send('npm:install:done', { installId, code }); delete runningInstalls[installId]; + // Guarded on identity: a second install for the same directory has + // already claimed the slot, and clearing it blind would leave that + // one unkillable. + if (installIdByDirectory[directoryPath] === installId) { + delete installIdByDirectory[directoryPath]; + } } }); @@ -2328,12 +2341,23 @@ ipcMain.handle('npm:kill', async (_event, { runId, directoryPath }) => { const id = runIdByDirectory[directoryPath]; child = runningScripts[id]; } + // An install is the other thing a directory can be busy with, and until this + // fallback existed it was unstoppable: Stop resolved nothing, returned "No + // running script", and the install ran to completion regardless. Checked + // after the scripts because a runId can only ever mean a script, and the two + // never run for the same directory at once. + if (!child && directoryPath && installIdByDirectory[directoryPath]) { + child = runningInstalls[installIdByDirectory[directoryPath]]; + } if (!child) return { ok: false, error: 'No running script' }; try { + // Also what stops `runNpmWithEngineRetry` respawning an install that a + // cancel pushed into a non-zero exit — it reads this set to tell a real + // engine mismatch from a stop. cancelledChildren.add(child); // A script is a tree — runner -> npm -> shell -> grunt — and child.kill() // signals only the first link, so stopping a build left the rest of it - // running (#83, #146). + // running (#83, #146). An install is the same shape: runner -> npm. killChildTree(child); // Last resort for a child that ignores SIGTERM. Only the direct child: by // this point the tree has had its chance, and the runner dying takes the diff --git a/test/ipc-wiring.test.cjs b/test/ipc-wiring.test.cjs index 5739cc1..48e98da 100644 --- a/test/ipc-wiring.test.cjs +++ b/test/ipc-wiring.test.cjs @@ -1428,6 +1428,47 @@ test('npm:kill ends the script tree rather than signalling the runner alone', as assert.deepEqual(cp.children[0].kill.calls, []); }); +// The install is the other thing a directory can be busy with, and it was the +// one Stop could not reach: `npm:kill` resolved children out of the script +// registry alone, so a running install answered "No running script" and carried +// on to completion. Nothing exercised that path, because nothing in the app +// stopped an install until the setup chain (#246) needed to. +// +// A directory is all the caller can offer here — `npm:install` keeps its +// installId inside the preload, so unlike a script there is no id to pass back. +test('npm:kill ends a running install, which only its directory can name', async (t) => { + const cp = stubbedSpawn(); + const killChildTree = spy(); + const main = loadMain({ + stubs: { + ...silentLogging(), + // Same reason as the quit sweep below: npm:install's onDone reaches + // getStore() to record installFailed, and the close emitted at the end + // of this test would otherwise pull in the real electron-store, and + // through it the real electron package the harness must never load. + ...fakeSettingsStore().stubs, + 'child_process': { spawn: cp.spawn }, + './kill-tree': { killChildTree } + } + }); + + await main.invoke('npm:install', '/sites/wp'); + t.mock.timers.enable({ apis: ['setTimeout'] }); + + assert.deepEqual(await main.invoke('npm:kill', { directoryPath: '/sites/wp' }), { ok: true }); + + assert.deepEqual(killChildTree.calls, [[cp.children[0]]]); + assert.deepEqual(cp.children[0].kill.calls, []); + + // A stopped install exits non-zero, which is indistinguishable from an engine + // mismatch on Windows (the kill surfaces as a plain code, not a signal). The + // handler marks the child cancelled so `runNpmWithEngineRetry` does not read + // the stop as a failure worth retrying and respawn the install the + // contributor just stopped. + cp.children[0].emit('close', 1, null); + assert.equal(cp.spawned.length, 1); +}); + // Spins until the stubbed spawn has been called `count` times, so a test can wait // for a handler that spawns after an await without knowing how many microtasks // that takes. Unlike reachSpawn it counts cumulatively, so several handlers can be From b9b139926b51321177b00f773db36a0a2fe77c97 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 12 Aug 2026 08:17:46 +0200 Subject: [PATCH 02/53] Rank the "Latest" pill by the newest commit, not the newest touch (#285) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pill was decided by GitHub's `updated_at`, which a comment, a label change or an upstream force-push bumps just as hard as a push. On Trac #62064 a force-push of trunk restamped ~2,580 open pull requests inside one window; the two on that ticket landed 19 seconds apart in the sweep, and the app crowned the November 2024 patch that no longer applies over the April 2026 one that does. Pull requests are now dated by their newest commit. The extra requests are kept small by a bound — `updated_at` is never earlier than the last commit, so on the list already sorted by it, it bounds every row below — plus a cap of four requests and reuse of cached dates. When the walk cannot finish, or the top two are within an hour, there is no pill: an undated row competes as an upper bound on the runner-up rather than as an answer. Verified against live GitHub on #62064: the pill moves to #11517 (last commit 10/04/2026), which applies cleanly, away from #7871 (22/11/2024), which fails with "patch does not apply". One search plus two lookups; a Refresh spends none. Closes #281 Co-Authored-By: Claude Opus 5 (1M context) --- src/github-prs.js | 227 +++++++++++++++++++++++++++- src/latest-patch.cjs | 96 ++++++++++-- src/main.js | 26 +++- src/patch-sources.cjs | 47 +++++- src/renderer/index.jsx | 15 +- src/renderer/pr-date-label.cjs | 41 ++++++ test/github-prs.test.cjs | 261 ++++++++++++++++++++++++++++++++- test/ipc-wiring.test.cjs | 20 ++- test/latest-patch.test.cjs | 105 ++++++++++++- test/patch-sources.test.cjs | 38 ++++- test/pr-date-label.test.cjs | 31 ++++ 11 files changed, 868 insertions(+), 39 deletions(-) create mode 100644 src/renderer/pr-date-label.cjs create mode 100644 test/pr-date-label.test.cjs diff --git a/src/github-prs.js b/src/github-prs.js index 567fc29..8a71ee3 100644 --- a/src/github-prs.js +++ b/src/github-prs.js @@ -17,22 +17,236 @@ * the rest of the app already relies on, and adds nothing to install. That * request primitive now lives in github-http.cjs, because opening a pull * request (#167) needs the same one with a method and a body. + * + * The list costs one request; ranking it costs a few more. That is not a + * regression against the care taken above — it is the price of the list meaning + * anything (#281). See resolveCommitDates for how few it settles for. */ -const { parseLinkedPrs, classifyHttpFailure } = require('./patch-sources.cjs'); +const { parseLinkedPrs, orderByCommitDate, classifyHttpFailure } = require('./patch-sources.cjs'); const { httpGet } = require('./github-http.cjs'); const REPO = 'WordPress/wordpress-develop'; +/** + * How many requests the commit-date walk may spend on one ticket. + * + * Each is one request against the shared unauthenticated 60/hour, so the + * ranking below spends them only while they can still change the answer and + * stops at this cap regardless. Four covers every ticket seen in practice + * except one caught inside a fresh upstream force-push sweep, where no number + * is obviously right and admitting the ranking is incomplete is better than + * emptying the quota. + * + * It counts requests rather than pull requests because that is what the quota + * counts: a pull request over 100 commits costs two, and four rows of those + * would be eight requests under a cap that reads like four. + */ +const MAX_COMMIT_LOOKUPS = 4; + +/** + * How far ahead of now a commit date may sit before it is treated as a wrong + * clock rather than a fresh commit. Machines drift by minutes; a commit dated + * next month is not a fix anyone can apply. + */ +const CLOCK_SKEW_TOLERANCE_MS = 10 * 60 * 1000; + +/** + * The date of a pull request's most recent commit, or null when it cannot be + * read (issue #281). + * + * `search/issues` — the one request the list is built from — carries no commit + * date, so this is the extra cost of ranking by code rather than by touch. The + * documented `pulls/{n}/commits` is used rather than a ref trick against + * `commits/{sha}`: this file already avoids undocumented GitHub behaviour on + * the `.diff` routes, and the same reasoning applies here. + * + * The list is ascending and paginated at 100. Nearly every pull request fits in + * one page; a longer one is followed once, to the `rel="last"` page named in + * the Link header. GitHub truncates the list at 250 commits, so a pull request + * longer than that resolves to the newest of the 250 it lists — off by nothing + * that matters for "which of these is fresher", and never silently absent. + * + * @param {number} number + * @param {Function} get httpGet, injected so the loop is testable. + * @param {Object} spent Mutable `{count}` — every request made is counted. + * @return {Promise<{ok: true, date: string|null}|{ok: false, status: string}>} + */ +async function fetchPrCommitDate(number, get, spent) { + const base = `https://api.github.com/repos/${REPO}/pulls/${number}/commits?per_page=100`; + + const page = async (url) => { + spent.count += 1; + let res; + try { + res = await get(url, { Accept: 'application/vnd.github+json' }); + } catch { + return { ok: false, status: 'offline' }; + } + if (res.status !== 200) return { ok: false, status: classifyHttpFailure(res.status, res.headers) }; + let json; + try { json = JSON.parse(res.body); } catch { return { ok: false, status: 'error' }; } + return { ok: true, commits: Array.isArray(json) ? json : [], headers: res.headers || {} }; + }; + + const first = await page(base); + if (!first.ok) return first; + + // Only the last page can hold the newest commit, so a paginated pull request + // costs a second request and not a walk through the middle. That second one + // is checked against the cap here rather than only at the top of the walk: + // the cap counts requests, and a guard that admits a row and then spends two + // makes the real ceiling one higher than the number it is written as. + const lastPage = lastPageNumber(first.headers.link); + let commits = first.commits; + if (lastPage > 1) { + // Refusing is the honest outcome, not falling back to the first page: its + // newest commit is the oldest part of this pull request, so using it would + // be a confident wrong answer rather than a missing one. + if (spent.count >= MAX_COMMIT_LOOKUPS) return { ok: false, status: 'capped' }; + const rest = await page(`${base}&page=${lastPage}`); + if (!rest.ok) return rest; + commits = rest.commits; + } + + let newest = null; + for (const entry of commits) { + // `committer.date` is when the commit last took its current form — the + // one a rebase or amend moves. `author.date` is the fallback for the + // rare entry that omits it. + const c = entry && entry.commit ? entry.commit : null; + const text = (c && c.committer && c.committer.date) || (c && c.author && c.author.date) || ''; + const ms = text ? Date.parse(text) : NaN; + if (!Number.isFinite(ms)) continue; + if (newest === null || ms > Date.parse(newest)) newest = text; + } + return { ok: true, date: newest }; +} + +/** + * The page number in a Link header's `rel="last"`, or 0 when there is none. + * + * @param {string} [link] + * @return {number} + */ +function lastPageNumber(link) { + if (typeof link !== 'string' || !link) return 0; + for (const part of link.split(',')) { + if (!/rel="?last"?/.test(part)) continue; + const m = /[?&]page=(\d+)/.exec(part); + if (m) return Number(m[1]); + } + return 0; +} + +/** + * Fills in the commit date of as many pull requests as the answer needs, in + * place, and reports whether the resulting ranking is complete (issue #281). + * + * The saving that makes this affordable: GitHub's `updated_at` is at or after + * the last commit date — a comment or a bot sweep can only push it later, never + * earlier — so on a list already sorted by `updated_at` descending it is a + * per-row *upper bound*. Once a resolved commit date beats the next row's + * bound, no row below can win and the walk stops. A ticket with one pull + * request, or with a clear winner, costs one extra request; only a ticket whose + * bounds are all identical — which is exactly what a force-push sweep produces, + * and the bug this exists to fix — walks down to the cap. + * + * "Complete" means the tail was ruled out rather than merely unread: true when + * the walk stopped on the bound or ran out of rows, false when it stopped on + * the cap or on a failed lookup. The caller shows no "Latest" pill on an + * incomplete ranking, because an unread row could be the real winner. + * + * A date already known from the cache is reused rather than fetched again, on + * the same bound that makes the walk cheap: `updated_at` moves when a branch is + * pushed, so a row whose stamp has not changed since it was cached has not had + * new code pushed to it either. Without this a Refresh on a rate-limited + * quota would replace a ranking the contributor could already read with an + * unranked list, and the request that failed would have destroyed the evidence + * rather than merely failed to add to it. + * + * @param {Array} prs Sorted by `updatedAt` descending; mutated in place. + * @param {Function} get + * @param {Map} known PR number → `{updatedAt, commitDate}` last seen. + * @return {Promise} Whether the ranking is complete. + */ +async function resolveCommitDates(prs, get, known) { + const spent = { count: 0 }; + let bestMs = -Infinity; + let complete = true; + + // A commit dated well ahead of now is a contributor's clock, not a fresher + // fix. It has to be discarded rather than merely ignored for the pill: as + // `bestMs` it would clear every remaining bound at once, ending the walk and + // reporting the whole ranking complete on the strength of the one date that + // is wrong. The tolerance is for the ordinary case of a machine a few + // minutes out — a just-pushed commit is the freshest thing on the ticket and + // should not be thrown away over a clock, which is the failure this guard + // could otherwise cause instead of prevent. + const horizonMs = Date.now() + CLOCK_SKEW_TOLERANCE_MS; + const usable = (date) => { + const ms = date ? Date.parse(date) : NaN; + return Number.isFinite(ms) && ms <= horizonMs ? ms : NaN; + }; + + // Cached dates are free, so they are applied to every row before the walk + // starts rather than only to the rows it reaches — a date the walk would + // have stopped short of is still a date the row can show. A cached date gets + // the same horizon check as a fetched one: a clock corrected backwards since + // it was written would otherwise leave a future date on the row, winning the + // pill and never being re-read, because a dated row is one the walk skips. + for (const pr of prs) { + const cached = known instanceof Map ? known.get(pr.number) : null; + if (!cached || !cached.commitDate || !cached.updatedAt) continue; + if (cached.updatedAt !== pr.updatedAt) continue; + const cachedMs = usable(cached.commitDate); + if (!Number.isFinite(cachedMs)) continue; + pr.commitDate = cached.commitDate; + if (cachedMs > bestMs) bestMs = cachedMs; + } + + for (const pr of prs) { + if (pr.commitDate) continue; + + const boundMs = pr.updatedAt ? Date.parse(pr.updatedAt) : NaN; + // Nothing from here down can beat what is already resolved. + if (Number.isFinite(boundMs) && bestMs >= boundMs) break; + if (spent.count >= MAX_COMMIT_LOOKUPS) { complete = false; break; } + + const res = await fetchPrCommitDate(pr.number, get, spent); + // A spent rate limit or a dead network will not fix itself on the next + // row, and each attempt costs a request the contributor may need for the + // diff they are about to apply. + if (!res.ok) { complete = false; break; } + + const ms = usable(res.date); + pr.commitDate = Number.isFinite(ms) ? res.date : null; + if (Number.isFinite(ms) && ms > bestMs) bestMs = ms; + } + + return complete; +} + /** * The pull requests that cite a ticket, newest first. * + * `deps.known` is the last-seen list for this ticket, if the caller kept one. + * Its commit dates are reused for rows whose `updatedAt` has not moved since, + * which is what stops a Refresh from re-spending the walk — and, on a spent + * quota, from replacing a ranking the contributor could already read. + * * @param {number|string} ticketId * @param {Object} [deps] - * @return {Promise<{status: 'ok'|'rate-limited'|'error'|'offline', items: Array, error?: string}>} + * @param {Function} [deps.httpGet] + * @param {Array} [deps.known] + * @return {Promise<{status: 'ok'|'rate-limited'|'error'|'offline', items: Array, rankComplete?: boolean, error?: string}>} */ async function fetchLinkedPrs(ticketId, deps = {}) { const get = deps.httpGet || httpGet; + const known = new Map(); + for (const pr of Array.isArray(deps.known) ? deps.known : []) { + if (pr && typeof pr.number === 'number') known.set(pr.number, { updatedAt: pr.updatedAt, commitDate: pr.commitDate }); + } const id = String(ticketId).replace(/[^0-9]/g, ''); if (!id) return { status: 'error', items: [], error: 'No ticket number' }; @@ -67,7 +281,12 @@ async function fetchLinkedPrs(ticketId, deps = {}) { return { status: 'error', items: [], error: 'Too many results to list reliably' }; } - return { status: 'ok', items: parseLinkedPrs(json, id) }; + const items = parseLinkedPrs(json, id); + // The list arrives ordered by `updatedAt`, which is the bound the walk needs + // and not an ordering worth showing (#281). Rank it by real commit dates, + // then reorder for display. + const rankComplete = await resolveCommitDates(items, get, known); + return { status: 'ok', items: orderByCommitDate(items), rankComplete }; } /** @@ -92,4 +311,4 @@ async function fetchPrDiff(number) { return { ok: true, text: res.body }; } -module.exports = { fetchLinkedPrs, fetchPrDiff, httpGet }; +module.exports = { MAX_COMMIT_LOOKUPS, fetchLinkedPrs, fetchPrDiff, httpGet }; diff --git a/src/latest-patch.cjs b/src/latest-patch.cjs index 3885a8e..2a1cec7 100644 --- a/src/latest-patch.cjs +++ b/src/latest-patch.cjs @@ -16,11 +16,28 @@ * the renderer imports it, `node --test` requires it directly (same convention * as patch-plan.cjs / patch-sources.cjs). * - * Caveat, deliberate: a PR is dated by `updatedAt`, which also bumps on - * comments, so "latest" means "most recently touched", not "newest commit". - * That matches the common case (an active PR is usually the freshest thing) and - * is the only date the list already carries. + * A PR used to be dated by `updatedAt`, on the reasoning that "most recently + * touched" is usually also "newest code" — a fair trade for a comment. It does + * not survive an event that touches every PR at once: an upstream force-push of + * trunk restamped thousands of open PRs inside one window, and on #62064 the + * nineteen seconds between two of those restamps were the entire basis on which + * a patch from 2024 that no longer applies was crowned over one from 2026 that + * does (#281). So a PR is now dated by its newest commit, resolved by + * github-prs.js, and an unresolved one does not compete at all — falling back + * to `updatedAt` would be falling back to the bug. + * + * Which leaves the cases where the honest answer is no pill rather than a + * guess, all handled in pickLatest by the same comparison: a row that has not + * been ruled out, and a margin too small to mean anything. The dates stay on + * every row either way, so the contributor can still read them. + */ + +/** + * How close two patches have to be before "which is later" stops being an + * answer worth putting a pill on. Two commits within the hour are one piece of + * work, not a newer and an older fix. */ +const NEAR_TIE_MS = 60 * 60 * 1000; /** * Milliseconds for an attachment's upload time, or NaN when it cannot be known. @@ -53,43 +70,94 @@ function attachmentDateMs(attachment) { } /** - * Milliseconds for a PR's last activity, or NaN when absent. + * Milliseconds for a PR's newest commit, or NaN when it was never resolved. + * + * NaN keeps that PR out of the comparison entirely. `updatedAt` is still on the + * object and is still the wrong answer; see the note at the top of this file. * * @param {Object} pr * @return {number} */ function prDateMs(pr) { - const text = pr && typeof pr.updatedAt === 'string' ? pr.updatedAt : ''; + const text = pr && typeof pr.commitDate === 'string' ? pr.commitDate : ''; return text ? Date.parse(text) : NaN; } /** - * The most recent patch across the loaded sources, or null if none is datable. + * The most recent patch across the loaded sources, or null when there is no + * answer worth showing. * * Only applyable attachments (patch files) compete — a .txt is context, not a * fix. `attachments` being undefined means they have not been loaded yet, so * the answer is drawn from PRs alone; that is the normal, pre-attachment state. * - * @param {Object} root0 - * @param {Array} [root0.prs] - * @param {Array} [root0.attachments] + * Null means "show nothing", and it covers three cases, not one: nothing is + * datable, the PR ranking is incomplete, or the top two are too close to + * separate. The last two are the point — a pill is a claim, and a wrong claim + * sends a contributor into an apply that cannot succeed, which costs far more + * than the pill was ever worth. + * + * An undated PR does not disqualify the answer; it competes as an upper bound. + * That single rule replaces what used to be a special case, and it is worth + * spelling out because getting it wrong cost this feature its pill on the + * ordinary ticket: + * + * - A PR the walk *ruled out* is undated on purpose — the walk stopped early + * precisely because its `updatedAt` was already below a resolved date. Its + * bound therefore sits far below the winner, and the pill shows. Treating it + * as "unknown, so no answer" threw away the pill in exactly the cheap, + * one-lookup case the walk exists to produce. + * - A PR the walk never *reached* — the cap, a failed lookup, a cache written + * before commit dates existed — carries the stamp that has not been ruled + * out, which in a force-push sweep sits at or above the winner. The near-tie + * check then suppresses the pill on its own. + * + * So both cases fall out of the same comparison, with no flag distinguishing + * them. A PR with neither a date nor a usable stamp is unbounded, and takes the + * answer with it. + * + * @param {Object} root0 + * @param {Array} [root0.prs] + * @param {Array} [root0.attachments] + * @param {boolean} [root0.prRankComplete] False when the lookup walk stopped early. * @return {{kind: 'pr'|'attachment', key: (number|string), whenMs: number}|null} */ -function pickLatest({ prs, attachments } = {}) { +function pickLatest({ prs, attachments, prRankComplete } = {}) { let best = null; + let runnerUpMs = -Infinity; const consider = (kind, key, whenMs) => { if (!Number.isFinite(whenMs)) return; - if (!best || whenMs > best.whenMs) best = { kind, key, whenMs }; + if (!best || whenMs > best.whenMs) { + if (best) runnerUpMs = Math.max(runnerUpMs, best.whenMs); + best = { kind, key, whenMs }; + return; + } + runnerUpMs = Math.max(runnerUpMs, whenMs); + }; + // A bound can only ever argue that the answer is too close to call. It never + // becomes the answer: `updatedAt` is not a date this app is willing to put a + // pill on, which is the whole of #281. + const considerBound = (whenMs) => { + runnerUpMs = Number.isFinite(whenMs) ? Math.max(runnerUpMs, whenMs) : Infinity; }; for (const pr of Array.isArray(prs) ? prs : []) { - consider('pr', pr.number, prDateMs(pr)); + const whenMs = prDateMs(pr); + if (Number.isFinite(whenMs)) consider('pr', pr.number, whenMs); + else considerBound(pr && pr.updatedAt ? Date.parse(pr.updatedAt) : NaN); } + // A walk that broke on a failed lookup may not have left a usable bound on + // the row it died at, so the flag still gets the last word. + if (prRankComplete === false) return null; + for (const att of Array.isArray(attachments) ? attachments : []) { if (!att.applyable) continue; consider('attachment', att.url || att.filename, attachmentDateMs(att)); } + + if (!best) return null; + if (best.whenMs - runnerUpMs < NEAR_TIE_MS) return null; return best; } -module.exports = { attachmentDateMs, prDateMs, pickLatest }; +module.exports = { NEAR_TIE_MS, attachmentDateMs, prDateMs, pickLatest }; diff --git a/src/main.js b/src/main.js index 9a7e087..42453a0 100644 --- a/src/main.js +++ b/src/main.js @@ -1328,20 +1328,36 @@ ipcMain.handle('git:list-ticket-patches', async (_e, sitePath) => { const ticketId = meta.tracTicket; if (!ticketId) return { ok: true, ticket: null, prs: { status: 'no-ticket', items: [] } }; - const result = await fetchLinkedPrs(ticketId); + // The cached list is passed back in, not just fallen back to: its commit + // dates are still valid for any pull request GitHub reports with the + // same `updatedAt`, so a Refresh does not re-spend the ranking, and a + // Refresh on a spent quota cannot replace a ranking the contributor + // could already read with an unranked one (#281). + const cachedBefore = s.get(patchCacheKey(ticketId)) || null; + const result = await fetchLinkedPrs(ticketId, { known: cachedBefore ? cachedBefore.items : null }); if (result.status === 'ok') { - s.set(patchCacheKey(ticketId), { checkedAt: new Date().toISOString(), items: result.items }); - return { ok: true, ticket: ticketId, prs: { status: 'ok', items: result.items } }; + // `rankComplete` is cached with the items and handed back with them: + // a list whose commit-date ranking was cut short must not come back + // from the cache looking complete, or the "Latest" pill returns + // without the evidence for it (#281). + s.set(patchCacheKey(ticketId), { checkedAt: new Date().toISOString(), items: result.items, rankComplete: result.rankComplete }); + return { ok: true, ticket: ticketId, prs: { status: 'ok', items: result.items, rankComplete: result.rankComplete } }; } // Could not read GitHub. Fall back to whatever was last seen for this // ticket, labelled with when — a stale-but-shown list beats a short one // presented as complete. - const cached = s.get(patchCacheKey(ticketId)) || null; + const cached = cachedBefore; return { ok: true, ticket: ticketId, - prs: { status: result.status, items: cached ? cached.items : [], cachedAt: cached ? cached.checkedAt : null, error: result.error } + prs: { + status: result.status, + items: cached ? cached.items : [], + rankComplete: cached ? cached.rankComplete === true : false, + cachedAt: cached ? cached.checkedAt : null, + error: result.error + } }; } catch (e) { return { ok: false, error: String(e) }; diff --git a/src/patch-sources.cjs b/src/patch-sources.cjs index 489b5fe..6e6eb6e 100644 --- a/src/patch-sources.cjs +++ b/src/patch-sources.cjs @@ -85,8 +85,14 @@ function prState(item) { /** * Reduces a GitHub `search/issues` response to the PRs that cite the ticket. - * Returns newest-first — for a moving target like a PR the freshest is the one - * a contributor most likely wants. + * + * Returns sorted by `updatedAt` descending. That is deliberately *not* the + * order shown to a contributor: `updatedAt` moves on a comment, a label or an + * upstream force-push, so as a claim about freshness it is worthless (#281). + * What it is worth is a bound — it never sits earlier than the last commit — + * so this ordering is the one the commit-date walk in github-prs.js needs to + * decide how few lookups it can get away with. The display order comes from + * orderByCommitDate below, once those lookups have happened. * * @param {Object} searchJson * @param {number|string} ticketId @@ -120,6 +126,42 @@ function parseLinkedPrs(searchJson, ticketId) { return prs; } +/** + * The order a contributor reads: newest code first (issue #281). + * + * Pull requests whose commit date was resolved come first, freshest first. The + * rest follow in `updatedAt` order, which is not a claim about them — it is + * simply better than an arbitrary shuffle. + * + * Worth being exact about what the tail does and does not mean, because the + * walk that produced it stops on a bound: an unresolved row is known to be + * older than the *newest* resolved one, which is what the "Latest" pill needs, + * but not older than every resolved row above it. So a 2020 commit can sit + * above an unresolved row whose real commit is last month. The pill is still + * correct; the ordering below the top is a best effort, and the row's own date + * — blank where it is unknown — is what a contributor should read rather than + * the position. + * + * @param {Array} prs + * @return {Array} + */ +function orderByCommitDate(prs) { + const list = Array.isArray(prs) ? prs.slice() : []; + const ms = (pr) => { + const parsed = pr && typeof pr.commitDate === 'string' && pr.commitDate ? Date.parse(pr.commitDate) : NaN; + return Number.isFinite(parsed) ? parsed : null; + }; + list.sort((a, b) => { + const x = ms(a); + const y = ms(b); + if (x !== null && y !== null) return y - x; + if (x !== null) return -1; + if (y !== null) return 1; + return (b.updatedAt || '').localeCompare(a.updatedAt || ''); + }); + return list; +} + /** * Classifies a non-2xx GitHub response so the UI can tell "nothing on this * ticket" apart from "we could not read it". A rate-limited answer is not an @@ -145,6 +187,7 @@ module.exports = { TICKET_HOST, bodyCitesTicket, parseLinkedPrs, + orderByCommitDate, classifyHttpFailure, parsePrRef }; diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 5775079..7c1e934 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -34,6 +34,7 @@ import { pickLatest } from '../latest-patch.cjs'; import { beginSetup, adoptSetupPath, discardSetup, rowPathAfterStatus } from './pending-setup.cjs'; import { parsePrRef } from '../patch-sources.cjs'; import { prStateBadge } from './pr-state.cjs'; +import { prDateLabel } from './pr-date-label.cjs'; import { ticketUrl, attachUrl } from './trac-ticket.cjs'; import { adminUrl, adminerUrl } from './site-urls.cjs'; import { ticketBranchRows, ticketListCard } from './ticket-branch-list.cjs'; @@ -2692,7 +2693,14 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // The single most recent patch across whatever is loaded — PRs always, Trac // attachments once the contributor has opened them (#11). Drives the "Latest" // pill and the "latest is a patch file" note. - const latestPatch = pickLatest({ prs: ticketPatches?.items, attachments: tracAttachments?.items }); + // `rankComplete` travels with the list: when the commit-date walk stopped + // early there is no pill, because an unranked row could be the newer fix + // (#281). + const latestPatch = pickLatest({ + prs: ticketPatches?.items, + attachments: tracAttachments?.items, + prRankComplete: ticketPatches?.rankComplete + }); const latestIsAttachment = latestPatch?.kind === 'attachment'; // The panel lists only what can be applied — screenshots and other non-patch // attachments are noise here. The parser still returns them (pickLatest and @@ -4247,7 +4255,10 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit
{prStatePill(pr.state)} - {pr.updatedAt ? updated {new Date(pr.updatedAt).toLocaleDateString()} : null} + {(() => { + const dated = prDateLabel(pr); + return dated ? {dated.prefix} {new Date(dated.when).toLocaleDateString()} : null; + })()}
+ >{buildLabel} ) }, { @@ -3781,28 +3926,17 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit } ]; - let currentStepCaptured = false; - const stepItems = baseSteps.map((step) => { - let status; - if (step.done) { - status = 'complete'; - } else if (!currentStepCaptured && step.ready) { - status = 'current'; - currentStepCaptured = true; - } else if (step.ready) { - status = 'pending'; - } else { - status = 'locked'; - } - return { ...step, status }; - }); + const stepItems = setupStepStatuses(baseSteps); // The one block to point the contributor at next (#252). The checklist has // already worked out its own current step; the resolver folds that together // with the post-init state into a single id, which the render tags onto the // matching block (`data-next-action` + the `.next-action-cue` class) and the // cue hook scrolls into view. - const currentSetupStep = stepItems.find((s) => s.status === 'current')?.key || null; + // A failed step counts as the one to point at: retrying it is exactly what + // the contributor should do next, and it consumes no `current` of its own, so + // without this a chain that stopped would leave the view with no cue at all. + const currentSetupStep = stepItems.find((s) => s.status === 'current' || s.status === 'failed')?.key || null; const nextAction = deriveNextAction({ skipInit, currentSetupStep, @@ -4048,6 +4182,33 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit {!skipInit ? (
Initial setup checklist
+ {/* + Nobody pressed a button to start this, so the banner has to say what + is happening, how far along it is and how to stop it — that is the + whole licence for running unattended. The step counter comes from + the same `updateStepStatuses` the update panel uses. + */} + {isSettingUp ? ( +
+
+ + Setting this site up for you — step {setupStepStates.filter((s) => s.status === 'complete').length + 1} of {setupSteps.length} + + + {setupChainState === 'installing' + ? 'Installing dependencies. You can leave this running — the build follows on its own.' + : 'Running the full build. This can take up to half an hour on Windows; the Terminal below shows what it is doing.'} + +
+ +
+ ) : null} + {!isSettingUp && setupChainEnd === 'stopped' ? ( +
+ Setup stopped.{' '} + Nothing was lost — pick it back up with the buttons below whenever you want. +
+ ) : null}
Complete each step to prepare this site for development.
{stepItems.map((step) => { diff --git a/src/renderer/setup-steps.cjs b/src/renderer/setup-steps.cjs index 936e42b..07eeb23 100644 --- a/src/renderer/setup-steps.cjs +++ b/src/renderer/setup-steps.cjs @@ -25,6 +25,7 @@ function computeSetupStepState(flags = {}) { const building = Boolean(flags.building); const starting = Boolean(flags.starting); const installFailed = Boolean(flags.installFailed); + const buildFailed = Boolean(flags.buildFailed); const isUpdating = Boolean(flags.isUpdating); // node_modules existing is not evidence the install succeeded: a failed @@ -41,11 +42,17 @@ function computeSetupStepState(flags = {}) { install: { done: installOk, ready: !isPending, + // A failed attempt is reported as its own state rather than folded + // into "not done yet" (#44): the difference between a step nobody + // has started and one that ran and lost is the whole reason a + // contributor knows to look at the terminal. + failed: installFailed && !installing, disabled: isPending || statusLoading || installing || installOk || isUpdating }, build: { done: hasBuilt, ready: installOk, + failed: buildFailed && !building && !hasBuilt, disabled: statusLoading || building || !installOk || hasBuilt || isUpdating }, dev: { @@ -56,6 +63,49 @@ function computeSetupStepState(flags = {}) { }; } +/** + * Walks the checklist and gives every step its status word. + * + * The ladder: a finished step is `complete`; a step whose last attempt lost is + * `failed`; the first unfinished step whose prerequisites are met is `current`; + * later reachable steps are `pending`; anything still waiting on a prerequisite + * is `locked`. + * + * `failed` outranks `current` so a step that ran and lost keeps the row rather + * than handing it to whatever comes next — and it does not consume `current`, + * because the thing to do next is still to retry it. + * + * Every one of these states is derived from what is on disk plus the recorded + * outcome of the last run, never from the position of a chain — which is what + * lets a site reopened days later, with nothing running, still show the truth. + * + * Lived in the renderer as an inline loop until #246; moved here because it is a + * decision with branches, and those belong in a module by this project's own + * rule. + * + * @param {Array} steps Steps carrying `done`, `ready` and optional `failed`. + * @return {Array} The same steps, each with a `status`. + */ +function setupStepStatuses(steps = []) { + let currentCaptured = false; + return steps.map((step) => { + let status; + if (step.done) { + status = 'complete'; + } else if (step.failed) { + status = 'failed'; + } else if (!currentCaptured && step.ready) { + status = 'current'; + currentCaptured = true; + } else if (step.ready) { + status = 'pending'; + } else { + status = 'locked'; + } + return { ...step, status }; + }); +} + /** * The status word shown on a checklist step. * @@ -73,7 +123,7 @@ function computeSetupStepState(flags = {}) { * decision with branches, and those belong in a module by this project's own * rule. * - * @param {string} status One of complete|current|pending|locked. + * @param {string} status One of complete|failed|current|pending|locked. * @param {boolean} isRunning The current step's action is under way. * @return {string} */ @@ -81,6 +131,8 @@ function setupStepLabel(status, isRunning) { switch (status) { case 'complete': return 'Completed'; + case 'failed': + return 'Failed'; case 'pending': return 'Pending'; case 'locked': @@ -90,4 +142,94 @@ function setupStepLabel(status, isRunning) { } } -module.exports = { computeSetupStepState, setupStepLabel }; +/** + * The button label and description on the install and build steps. + * + * Both read differently in four situations — not started, running, done, and + * failed — and both are strings a contributor reads to decide what to do, so + * they belong here rather than as ternaries in the component. Derived from the + * same flags as `computeSetupStepState` so the words and the button state can + * never disagree. + * + * @param {Object} flags The flags computeSetupStepState takes. + * @return {{installLabel: string, installDescription: string, buildLabel: string, buildDescription: string}} + */ +function setupStepCopy(flags = {}) { + const state = computeSetupStepState(flags); + const installFailed = Boolean(flags.installFailed); + const hasBuilt = Boolean(flags.hasBuilt); + + let installLabel = 'Install npm dependencies'; + if (state.install.done) installLabel = 'Dependencies installed'; + else if (installFailed) installLabel = 'Retry npm install'; + + let installDescription = 'Install npm packages so commands can run.'; + if (state.install.done) { + // Once done, this button never re-enables (#182), so the step says where a + // later install lives rather than leaving a dead control unexplained. + installDescription = 'Installed. Added a dependency to package.json since? Run npm install in the Terminal below.'; + } else if (state.install.failed) { + // A failure the contributor did not start (the chain runs install on its + // own now) has to say where the evidence is, or "Failed" is all they get. + installDescription = 'The install did not finish. Its output is in the Terminal below — retry when you have read it.'; + } + + let buildLabel = 'Run full build'; + if (hasBuilt) buildLabel = 'Build complete'; + else if (state.build.failed) buildLabel = 'Retry the build'; + + let buildDescription = 'Compile WordPress Core to generate the dist files. Later updates rebuild automatically.'; + if (hasBuilt) { + buildDescription = 'Built. Edited files in src/ since? Run npm run build in the Terminal below so the site picks them up — updates and applied patches rebuild on their own.'; + } else if (state.build.failed) { + buildDescription = 'The build did not finish. Its output is in the Terminal below — retry when you have read it.'; + } + + return { installLabel, installDescription, buildLabel, buildDescription }; +} + +/** + * What the renderer should do about auto-starting the setup chain (#246). + * + * Three answers, because the decision is taken in two halves: the trigger is an + * edge — the clone going from running to finished — and only once that holds is + * it worth reading the site's state off disk. So `probe` means "this is the + * moment, go and read the status", and the caller comes back with that status + * for the second, final call. + * + * Getting the edge wrong is the difference between a wizard that finishes + * itself and one that launches a half-hour build every time the app opens, + * which is why this is a tested decision rather than a chain of conditions in + * an effect. The refusals, and why each one: + * + * - not the edge: a site already cloned when its row appeared never triggers, + * which is what makes reopening the app safe; + * - already armed: once per mount, so a re-render cannot start a second chain; + * - the wizard was skipped: that contributor has said they want the manual path; + * - node_modules already exists: this is not the fresh clone it looks like, and + * the tree may be one somebody is already working in. + * + * @param {Object} root0 + * @param {boolean} root0.wasPending The clone was running on the last render. + * @param {boolean} root0.isPending The clone is running now. + * @param {boolean} [root0.alreadyArmed] This row has already triggered once. + * @param {?Object} [root0.status] A fresh site:status read; omit to ask + * whether reading one is worthwhile. + * @return {'skip'|'probe'|'start'} + */ +function setupAutoStartDecision({ wasPending, isPending, alreadyArmed, status } = {}) { + if (!wasPending || isPending || alreadyArmed) return 'skip'; + if (status === undefined) return 'probe'; + // A read that failed is not evidence the site is fresh, so it refuses. + if (!status) return 'skip'; + if (status.skipInitWizard || status.hasNodeModules) return 'skip'; + return 'start'; +} + +module.exports = { + computeSetupStepState, + setupStepStatuses, + setupStepCopy, + setupAutoStartDecision, + setupStepLabel +}; diff --git a/src/renderer/update-plan.cjs b/src/renderer/update-plan.cjs index f17e8cb..b60bd9d 100644 --- a/src/renderer/update-plan.cjs +++ b/src/renderer/update-plan.cjs @@ -5,6 +5,12 @@ * a site's trunk snapshot is, which steps an update runs, and how the chain * ends. * + * It has since become the home of every multi-step chain the renderer runs — + * updating (#94), applying a patch (#11) and initial setup (#246) — because all + * three share `updateStepStatuses` and the same outcome vocabulary. Keeping the + * three plans beside the machinery they share is what stops a fourth chain + * growing its own. + * * Kept as a pure, dependency-free module so it can be unit tested without a * DOM: the renderer bundle imports it, `node --test` requires it directly * (same convention as setup-steps.cjs and dev-server-command.cjs). @@ -94,6 +100,32 @@ function planApplySteps({ needsInstall, buildByWatcher } = {}) { ]; } +// Initial setup (#246) is the third chain, and the one the contributor does not +// start: it runs on its own the moment the clone finishes, so a newcomer who +// walks away comes back to a built environment instead of a checklist waiting +// on two clicks with no decision between them. +const SETUP_STATE_TO_STEP = { cloning: 'download', installing: 'install', building: 'build' }; + +/** + * The chain initial setup runs. Nothing is ever skipped here: a fresh clone has + * no node_modules and no build, so both always run — the `skipped` field is kept + * only so the three plans share one shape. + * + * Starting the dev server is deliberately not part of it. It is the step that + * marks the initialization wizard finished and hands the contributor to a + * WordPress setup wizard in a browser, so running it unattended would end the + * checklist on their behalf and leave a server listening that nobody asked for. + * + * @return {Array} + */ +function planSetupSteps() { + return [ + { key: 'download', label: 'Download WordPress', skipped: false }, + { key: 'install', label: 'Install dependencies', skipped: false }, + { key: 'build', label: 'Run full build', skipped: false } + ]; +} + /** * How applying a patch (or updating trunk) should treat a running build watch * (#247, #262). A watch that is running already recompiles src/ on save, so a @@ -122,7 +154,8 @@ function planWatchImpact({ needsInstall, watcherActive } = {}) { * current, later ones pending; skipped steps stay 'skipped' once passed. * * The state→step map is a parameter so a different chain can reuse this: the - * applying chain (#11) has the same three-stage shape with its own state names. + * applying chain (#11) has the same three-stage shape with its own state names, + * and the setup chain (#246) uses it for its progress counter. * * @param {Array} steps * @param {string} updateState @@ -167,16 +200,44 @@ function updateOutcome({ fetchOk, upToDate, moved, installNeeded, installCode, b return 'done'; } +/** + * How the setup chain ended, and the only thing that decides what the + * contributor is told. `stopped` is separated from `failed-install` / + * `failed-build` on purpose: a chain the contributor stopped is not a problem to + * report, and telling someone their install "failed" when they pressed Stop is + * how a tool loses their trust. + * + * A stop and a failure are otherwise indistinguishable from the exit code — a + * killed npm exits non-zero, and on Windows without even a signal — so the + * caller passes `stopped` from the fact that it asked for the kill, not from + * what the process did. + * + * @param {Object} root0 + * @param {boolean} [root0.stopped] The contributor pressed Stop. + * @param {number} [root0.installCode] Exit code of npm install, if it ran. + * @param {number} [root0.buildCode] Exit code of npm run build, if it ran. + * @return {string} + */ +function setupOutcome({ stopped, installCode, buildCode } = {}) { + if (stopped) return 'stopped'; + if (installCode !== 0) return 'failed-install'; + if (buildCode !== 0) return 'failed-build'; + return 'done'; +} + module.exports = { STALE_THRESHOLD_DAYS, SKIP_INSTALL_MESSAGE, BUILD_BY_WATCHER_MESSAGE, STATE_TO_STEP, APPLY_STATE_TO_STEP, + SETUP_STATE_TO_STEP, planApplySteps, planWatchImpact, + planSetupSteps, trunkAgeInfo, planUpdateSteps, updateStepStatuses, + setupOutcome, updateOutcome }; diff --git a/test/setup-steps.test.cjs b/test/setup-steps.test.cjs index d7341ff..4ea1dce 100644 --- a/test/setup-steps.test.cjs +++ b/test/setup-steps.test.cjs @@ -3,7 +3,29 @@ const test = require('node:test'); const assert = require('node:assert'); -const { computeSetupStepState, setupStepLabel } = require('../src/renderer/setup-steps.cjs'); +const { + computeSetupStepState, + setupStepStatuses, + setupStepCopy, + setupAutoStartDecision, + setupStepLabel +} = require('../src/renderer/setup-steps.cjs'); + +// The four checklist rows, in order, as the renderer builds them — so the ladder +// tests below read as the screen the contributor is looking at. +function checklist(flags) { + const state = computeSetupStepState(flags); + return setupStepStatuses([ + { key: 'download', ...state.download }, + { key: 'install', ...state.install }, + { key: 'build', ...state.build }, + { key: 'dev', ...state.dev } + ]); +} + +function statuses(flags) { + return Object.fromEntries(checklist(flags).map((s) => [s.key, s.status])); +} test('while the clone is still running, the install step is locked (issue #47)', () => { const steps = computeSetupStepState({ isPending: true }); @@ -122,7 +144,188 @@ test('the current step reads "In progress" once its action is running (#257)', ( test('the other statuses keep their fixed labels regardless of the running flag', () => { for (const running of [true, false]) { assert.strictEqual(setupStepLabel('complete', running), 'Completed'); + assert.strictEqual(setupStepLabel('failed', running), 'Failed'); assert.strictEqual(setupStepLabel('pending', running), 'Pending'); assert.strictEqual(setupStepLabel('locked', running), 'Locked'); } }); + +// --- the ladder (#44, #246) ---------------------------------------------- +// +// #44's acceptance criteria are a matrix: before start, during, after success +// and after failure, for each asynchronous step. These walk it. What every one +// of them is really asserting is that the status comes from what is on disk plus +// the last run's outcome — never from where a chain happens to be — because that +// is what lets a half-finished site reopened days later still read true. + +test('the ladder walks the checklist: exactly one current step, the rest locked behind it', () => { + assert.deepStrictEqual(statuses({ isPending: true }), { + download: 'current', install: 'locked', build: 'locked', dev: 'locked' + }); +}); + +test('before install starts, install is current and nothing claims to be running (#44)', () => { + const rows = checklist({}); + assert.deepStrictEqual(statuses({}), { + download: 'complete', install: 'current', build: 'locked', dev: 'locked' + }); + // The #44 report itself: the next step must not announce itself as under way. + assert.strictEqual(setupStepLabel(rows[1].status, false), 'Ready'); +}); + +test('while install runs, its step says so (#44)', () => { + const rows = checklist({ installing: true }); + assert.strictEqual(rows[1].status, 'current'); + assert.strictEqual(setupStepLabel(rows[1].status, true), 'In progress'); +}); + +test('after a successful install the build takes over as current (#44)', () => { + assert.deepStrictEqual(statuses({ hasNodeModules: true }), { + download: 'complete', install: 'complete', build: 'current', dev: 'locked' + }); +}); + +test('after a failed install the step reads failed, and nothing downstream becomes current (#44)', () => { + const rows = checklist({ hasNodeModules: true, installFailed: true }); + assert.deepStrictEqual(statuses({ hasNodeModules: true, installFailed: true }), { + download: 'complete', install: 'failed', build: 'locked', dev: 'locked' + }); + assert.strictEqual(setupStepLabel(rows[1].status, false), 'Failed'); + // The retry is the point of naming the failure — a failed step with a dead + // button is worse than no label at all. + assert.strictEqual(rows[1].disabled, false); +}); + +test('a retry in flight replaces the failed label rather than sitting under it', () => { + // installFailed is still recorded — the flag only clears when the next run + // finishes — so without the `installing` guard the step would read "Failed" + // while its own retry was streaming output to the terminal. + const rows = checklist({ hasNodeModules: true, installFailed: true, installing: true }); + assert.strictEqual(rows[1].status, 'current'); + assert.strictEqual(setupStepLabel(rows[1].status, true), 'In progress'); +}); + +test('after a failed build the step reads failed, and the dev server stays locked (#44)', () => { + assert.deepStrictEqual(statuses({ hasNodeModules: true, buildFailed: true }), { + download: 'complete', install: 'complete', build: 'failed', dev: 'locked' + }); +}); + +test('a build that succeeded after failing earlier reads complete, not failed', () => { + // hasBuilt is the ground truth; a stale buildFailed flag must not outrank it. + assert.deepStrictEqual(statuses({ hasNodeModules: true, hasBuilt: true, buildFailed: true }), { + download: 'complete', install: 'complete', build: 'complete', dev: 'current' + }); +}); + +test('the dev server step is the last current one and never completes itself', () => { + assert.deepStrictEqual(statuses({ hasNodeModules: true, hasBuilt: true }), { + download: 'complete', install: 'complete', build: 'complete', dev: 'current' + }); +}); + +// --- the words on the steps (#246) --------------------------------------- + +test('the install step says what it is offering in each of its four states', () => { + assert.strictEqual(setupStepCopy({}).installLabel, 'Install npm dependencies'); + assert.strictEqual(setupStepCopy({ hasNodeModules: true }).installLabel, 'Dependencies installed'); + assert.strictEqual( + setupStepCopy({ hasNodeModules: true, installFailed: true }).installLabel, + 'Retry npm install' + ); + // The retry stays named as a retry while it runs, rather than reverting to + // the first-run wording halfway through. + assert.strictEqual( + setupStepCopy({ hasNodeModules: true, installFailed: true, installing: true }).installLabel, + 'Retry npm install' + ); +}); + +test('a failed step points at the terminal, since nobody clicked to start it (#246)', () => { + // The chain runs install and build unattended, so a bare "Failed" would be + // the first a contributor heard of it with nowhere to look. + const install = setupStepCopy({ hasNodeModules: true, installFailed: true }); + assert.match(install.installDescription, /Terminal below/); + const build = setupStepCopy({ hasNodeModules: true, buildFailed: true }); + assert.strictEqual(build.buildLabel, 'Retry the build'); + assert.match(build.buildDescription, /Terminal below/); +}); + +test('a completed step says where a later install or build lives (#182)', () => { + const copy = setupStepCopy({ hasNodeModules: true, hasBuilt: true }); + assert.strictEqual(copy.buildLabel, 'Build complete'); + assert.match(copy.installDescription, /Terminal below/); + assert.match(copy.buildDescription, /Terminal below/); +}); + +test('the copy and the button state cannot disagree about a failed install', () => { + // Both come from the same flags: node_modules exists but the install failed, + // so the step is not done, its button is live, and it says "Retry" (#42). + const flags = { hasNodeModules: true, installFailed: true }; + assert.strictEqual(computeSetupStepState(flags).install.done, false); + assert.strictEqual(computeSetupStepState(flags).install.disabled, false); + assert.strictEqual(setupStepCopy(flags).installLabel, 'Retry npm install'); +}); + +// --- auto-starting the chain (#246) -------------------------------------- +// +// The riskiest decision in the feature: too eager and it launches a half-hour +// build nobody asked for, too shy and the wizard never finishes itself. + +test('the clone finishing is what asks for a status read', () => { + assert.strictEqual( + setupAutoStartDecision({ wasPending: true, isPending: false }), + 'probe' + ); +}); + +test('a fresh clone with the wizard still on starts the chain', () => { + assert.strictEqual( + setupAutoStartDecision({ wasPending: true, isPending: false, status: {} }), + 'start' + ); +}); + +test('nothing happens while the clone is still running', () => { + assert.strictEqual(setupAutoStartDecision({ wasPending: true, isPending: true }), 'skip'); +}); + +test('a site that was already cloned when its row appeared never auto-starts', () => { + // This is what makes reopening the app safe: no edge, no chain, whatever + // state the site is in. + assert.strictEqual(setupAutoStartDecision({ wasPending: false, isPending: false }), 'skip'); + assert.strictEqual( + setupAutoStartDecision({ wasPending: false, isPending: false, status: {} }), + 'skip' + ); +}); + +test('the chain arms once per row, so a re-render cannot start a second one', () => { + assert.strictEqual( + setupAutoStartDecision({ wasPending: true, isPending: false, alreadyArmed: true }), + 'skip' + ); +}); + +test('a skipped wizard means the contributor drives, so the chain stays out of it', () => { + assert.strictEqual( + setupAutoStartDecision({ wasPending: true, isPending: false, status: { skipInitWizard: true } }), + 'skip' + ); +}); + +test('an existing node_modules is not the fresh clone it looks like', () => { + assert.strictEqual( + setupAutoStartDecision({ wasPending: true, isPending: false, status: { hasNodeModules: true } }), + 'skip' + ); +}); + +test('a status read that failed refuses rather than assuming the site is fresh', () => { + // null is a failed probe, not an empty one. Guessing here would run npm + // install against a tree nothing is known about. + assert.strictEqual( + setupAutoStartDecision({ wasPending: true, isPending: false, status: null }), + 'skip' + ); +}); diff --git a/test/update-plan.test.cjs b/test/update-plan.test.cjs index badf9b1..bce1a66 100644 --- a/test/update-plan.test.cjs +++ b/test/update-plan.test.cjs @@ -5,9 +5,12 @@ const assert = require('node:assert'); const { STALE_THRESHOLD_DAYS, SKIP_INSTALL_MESSAGE, + SETUP_STATE_TO_STEP, trunkAgeInfo, planUpdateSteps, + planSetupSteps, updateStepStatuses, + setupOutcome, updateOutcome } = require('../src/renderer/update-plan.cjs'); @@ -126,3 +129,60 @@ test('updateOutcome: full chain success (issue #94)', () => { 'done' ); }); + +// --- the setup chain (#246) ---------------------------------------------- + +test('planSetupSteps: clone, install, build — and nothing is ever skipped (issue #246)', () => { + const steps = planSetupSteps(); + + assert.deepStrictEqual(steps.map((s) => s.key), ['download', 'install', 'build']); + // The update and apply chains skip the install when the lockfile did not + // move; a fresh clone has no node_modules at all, so there is nothing this + // chain can honestly skip. + assert.deepStrictEqual(steps.map((s) => s.skipped), [false, false, false]); + // Starting the dev server is deliberately outside the chain: it marks the + // wizard finished and hands the contributor to a browser wizard. + assert.ok(!steps.some((s) => s.key === 'dev'), 'the dev server is not part of the chain'); +}); + +test('the setup chain reuses updateStepStatuses with its own state names (issue #246)', () => { + const steps = planSetupSteps(); + const at = (state) => updateStepStatuses(steps, state, SETUP_STATE_TO_STEP) + .map((s) => s.status); + + assert.deepStrictEqual(at('cloning'), ['current', 'pending', 'pending']); + assert.deepStrictEqual(at('installing'), ['complete', 'current', 'pending']); + assert.deepStrictEqual(at('building'), ['complete', 'complete', 'current']); + assert.deepStrictEqual(at('done'), ['complete', 'complete', 'complete']); +}); + +test('an idle setup chain claims no step (issue #246)', () => { + // 'idle' is not in the map, so nothing is current and nothing is complete — + // which is what keeps the banner off the screen when no chain is running. + assert.deepStrictEqual( + updateStepStatuses(planSetupSteps(), 'idle', SETUP_STATE_TO_STEP).map((s) => s.status), + ['pending', 'pending', 'pending'] + ); +}); + +test('setupOutcome: install and build both succeeded -> done (issue #246)', () => { + assert.strictEqual(setupOutcome({ installCode: 0, buildCode: 0 }), 'done'); +}); + +test('setupOutcome: a failed install never reaches the build (issue #246)', () => { + // buildCode is undefined because the build never ran — the outcome has to + // name the install, not read the missing build as the failure. + assert.strictEqual(setupOutcome({ installCode: 1 }), 'failed-install'); +}); + +test('setupOutcome: a failed build after a good install (issue #246)', () => { + assert.strictEqual(setupOutcome({ installCode: 0, buildCode: 2 }), 'failed-build'); +}); + +test('setupOutcome: Stop is not a failure, whatever exit code the kill produced (issue #246)', () => { + // A killed npm exits non-zero, and on Windows without even a signal, so the + // exit code cannot tell a stop from a failure. Telling a contributor their + // install "failed" when they pressed Stop is how a tool loses their trust. + assert.strictEqual(setupOutcome({ stopped: true, installCode: 1 }), 'stopped'); + assert.strictEqual(setupOutcome({ stopped: true, installCode: 0, buildCode: 143 }), 'stopped'); +}); From a6f9ec5e6ae2f844a4cbc7f693c00ef9323ede57 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 12 Aug 2026 09:39:50 +0200 Subject: [PATCH 05/53] Say how much of a patch failed, why, and what to do next when it will not apply (#291) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why When a patch no longer applies, the app names one file, says the checkout was not changed, and stops. That sentence reads identically whether one region of twenty missed or all twenty did — opposite decisions for the contributor, who either spends ten minutes rescuing the patch or throws it away. The failures beyond the first file never reach the card at all, and the most useful thing on screen at that moment — the ticket's other pull request, which applies cleanly — is never pointed at. #282 makes the full case, from applying a pull request on Trac #62064. ## What changes The refusal itself is untouched: all-or-nothing stays, and nothing here writes to the checkout. What changes is what the refusal says. `resolveFile` now asks its existing question once per region instead of once per file, only on the failure path. Each failing region reports **why** — its surroundings changed, or its change looks already present, told apart by whether the region's reverse fits (the same reasoning `patchIsAbsent` already uses; this is #226's first half) — and carries the `-`/`+` lines it wanted to make plus a **searchable anchor line verified to exist in the contributor's file** (the hunk's own line numbers are coordinates in the file as the patch author had it, and on an old patch they miss by the very drift the patch failed on). A new pure module, `src/renderer/apply-conflict.cjs`, turns the failure payload into the notice (the `open-failure.cjs` shape), with **two framings chosen by where the patch came from**: - **A pull request** has an author, and its conflicts are theirs to fix — showing the contributor line-level detail invites them into work that is not theirs. The notice names the stale side (*"written against an older trunk"*, not "your checkout has moved on"), sizes the problem (places and files), says whose work the fix is, and frames the contributor's one real act: leaving a comment asking for a rebase. Buttons: **Ask its author for a rebase** (opens the PR) and **Try another patch on this ticket**. - **A loose patch** (Trac attachment, file from disk) has nobody to send the contributor to, so it keeps the full per-region breakdown — there, the contributor with the failing lines in hand is the only way out. Every failing file reaches the card in both framings, rather than only the first. Deliberately not in this PR: loosening the matching or applying the parts that fit (ruled out in #226 and #282), applying from the pull request's recorded base (three-way — #226's second half, with verified groundwork in its comments), and naming which side is stale (needs the PR-date work shared with #281). ## How to test this Platforms: any. **Starting state:** 1. A Core site on current trunk, linked to Trac ticket **62064**. 2. In *Apply a patch or PR*, paste `7871` and preview it, then **Apply and rebuild**. **Expected:** the apply refuses; the banner says the pull request was written against an older trunk, sizes it ("7 of its 24 changes, in 1 file, would need rework"), says updating it is its author's work and suggests a comment on the PR, and offers **Ask its author for a rebase** (the PR shows GitHub's own "conflicts that must be resolved" banner, corroborating) and **Try another patch on this ticket** (which dismisses the failed attempt entirely — banner and preview — and scrolls to the list, whose Apply buttons are enabled again). Applying PR **11517** from the same list then succeeds. For the detailed framing, download a failing patch as a `.diff` and apply it via "choose a .diff / .patch file": the same failure now shows the per-region breakdown — `near …` anchor lines you can Cmd+F in the checkout and find, "the code around it has changed" labels, and the `-`/`+` lines for the first three regions. **What must not have happened:** - No file in the checkout changed on the refusal (`git status` clean, or exactly as it was before). - A patch that fails for a non-conflict reason (a `.diff` whose file is not in the checkout) still shows its plain sentence — no empty breakdown, no headline claiming counts. - Reverting an applied patch that conflicts shows the plain message, not the breakdown with buttons that make no sense for a revert. The old behaviour — one file named, the rest of the failures only in the terminal — is pinned by the new tests: `test/apply-conflict.test.cjs` (module) and the `#282`/`#226` blocks in `test/patch-apply.integration.test.cjs` (per-region diagnosis on a real repo, anchors asserted to exist in the file). ## Risks and limitations - The per-region labels are **evidence, not proof**: matching searches for a fit and can find one in the wrong place, which is why the wording hedges ("looks like") and why the diagnosis never decides a write. Stated in the module comment. - The wording throughout is a draft for review — headline, region labels, button copy. - Verified by hand on macOS against the real case (PR 7871 / Trac 62064); Windows through the suite only. - Self-review outcome: 4 [fix here] · 1 [follow-up] — all five addressed before opening, details in the collapsed block. ## Related Closes #282. First half of #226 (its second half — apply from the recorded base — stays open there, with the measured groundwork in its comments). Related: #286 (next-step guidance from a different angle), #290 (trying the PR as written), #281 (which side is stale). ---
Design decisions and alternatives considered **Anchors instead of line numbers.** The hunk's `oldStart` is in the patch-base file's coordinates: on the motivating case it says "line 132" for code sitting at line 149 of the contributor's file, and the drift grows toward the end of the file. Candidates from the hunk are checked against the file and the longest one actually present wins (first line of a hunk is often a bare brace, and "near `}`" locates nothing); preference order follows the failure kind — a moved region usually still contains its own `-` line, an already-applied one its `+` result. Falling back to "line N of the patch" only when nothing from the hunk survives. **Diagnosis stays in `patch-apply.js`, presentation in a `.cjs` module.** Same split as `open-failure.cjs`, for the same reason: `index.jsx` cannot be loaded by the suite, so every branch that decides what the contributor reads lives where a test reaches it. **No three-way in this PR.** The apply is two-way by construction (no base is known). Three-way with the PR's recorded base collapses most of these false failures — measured on this very case: 41 of 49 regions merge cleanly, and the `diff3` algorithm reproduces git's six conflicts exactly — but it is a different change with its own surface (GitHub API, new dependency), tracked in #226 with the measurements posted there. **Reverse skips the diagnosis.** A failed revert's answer is never "try the ticket's other patches"; the panel discards the breakdown, so the resolver does not compute it.
Review outcome (required — see AGENTS.md) Run per `.github/instructions/code-review.instructions.md`, judgement pass in a fresh-context subagent. **4 [fix here] · 1 [follow-up] — all five addressed, plus the three style notes.** - 🟡 "Try another patch" scrolled to a list whose Apply buttons were disabled by the still-open preview — the exact dead end the module's own comment forbids. → the button clears the preview first. - 🟡 `otherTicketPatchCount` was a derivation inside `index.jsx`, unreachable by the suite. → moved to `apply-conflict.cjs` as `otherPatchCount`, with tests including the picked-from-disk label case. - 🟡 A patch entirely already-in-tree got the headline "None of this patch's changes still fit" above regions saying the opposite. → dedicated headline when every failing region is `already-applied`. - 🔵 One path still set `applyError` without clearing the breakdown, leaving a stale breakdown hiding a parse error. → routed through `clearApplyError()`. - 🔵 [follow-up, done here] `diagnoseHunks` exported with no direct test — the caps and fallbacks were unasserted. → direct tests for `REGION_LINE_LIMIT`, `REGION_DETAIL_LIMIT`, the anchor's last-resort branch, and the `null` on overlapping hunks. - Style notes applied: reverse no longer pays for a discarded diagnosis; region React keys use the hunk index (`oldStart` can collide in concatenated patches, which also double-counted via the by-sentence map — replaced with consume-on-match); anchor picks the longest present candidate. Clean and verified by the reviewer, not reported as findings: EOL/CRLF handling end-to-end, IPC surface (nothing added to the bridge; the payload rides the existing done channel), performance (worst plausible diagnosis measured at 38 ms, failure path only).
Implementation notes - The apply result now carries `failures` (all sentences — previously computed and forwarded but read only as `error`) and `conflicts` (`{ path, error, total, regions[] }`). `main.js` and `preload.js` needed no changes: the handler already spreads the whole result into the done payload. - `diagnoseHunks` applies each hunk in isolation against the unshifted file — the only question askable when nothing is applied. Two hunks that overlap once applied can each pass alone while the file fails; the resolver returns `null` for that and the original sentence stands, rather than claiming zero conflicts. - Payload is bounded: 3 regions per file carry lines, 10 lines per region, anchors capped at 120 chars; the rest are counted and located. - End-to-end verification script (throwaway, scratchpad only) drove the packaged renderer against a fixture checkout with the real PR 7871 diff and asserted every anchor exists in the current `forms.css`.
Screenshots or recording Banner on the real case (PR 7871 against current trunk, Trac 62064) — will attach the capture in a comment: ``` This pull request was written against an older trunk and no longer fits it: 7 of its 24 changes, in 1 file, would need rework. The checkout was not changed. src/wp-admin/css/forms.css — 7 of 24 changes Bringing it up to date is its author's work — a rebase, or merging trunk in. Leaving a comment on the pull request to let them know is a real contribution in itself. [Try another patch on this ticket] [Ask its author for a rebase] ``` The same failure from a `.diff` file shows the detailed framing instead: ``` 7 of this patch's 24 changes no longer fit — the other 17 do. The checkout was not changed. src/wp-admin/css/forms.css — 7 of 24 changes near line-height: 1.42857143; /* 20px */ · the code around it has changed - line-height: 1.42857143; /* 20px */ + line-height: 1.42857143; + /* 20px */ … (7 regions, all anchors present in the contributor's file) ```
--- src/patch-apply.js | 203 +++++++++++-- src/renderer/apply-conflict.cjs | 259 +++++++++++++++++ src/renderer/index.jsx | 160 +++++++++-- test/apply-conflict.test.cjs | 394 ++++++++++++++++++++++++++ test/patch-apply.integration.test.cjs | 245 +++++++++++++++- 5 files changed, 1223 insertions(+), 38 deletions(-) create mode 100644 src/renderer/apply-conflict.cjs create mode 100644 test/apply-conflict.test.cjs diff --git a/src/patch-apply.js b/src/patch-apply.js index 332e30c..e222a1a 100644 --- a/src/patch-apply.js +++ b/src/patch-apply.js @@ -113,15 +113,175 @@ function reverseFile(file) { }; } +// How many failing regions carry their own lines, and how many lines each of +// those carries. Everything else is still counted and located — only the +// content is dropped. The whole diagnosis crosses IPC and then has to fit in a +// notice, and a patch that misses in forty places would otherwise send forty +// blocks of diff to a panel nobody can read. +const REGION_DETAIL_LIMIT = 3; +const REGION_LINE_LIMIT = 10; + +/** + * The `-`/`+` lines of one hunk — what that region was trying to change. + * Context lines are dropped: they are what the region was looking for, not what + * it wanted to do, and they are the bulk of the text. + * + * @param {Object} hunk + * @return {{lines: Array, more: number}} + */ +function changedLines(hunk) { + const changed = (hunk.lines || []).filter((line) => line[0] === '+' || line[0] === '-'); + return { + lines: changed.slice(0, REGION_LINE_LIMIT), + more: Math.max(0, changed.length - REGION_LINE_LIMIT) + }; +} + +/** + * A line the contributor can search for to find this region in *their* file. + * + * The hunk's line numbers cannot serve: they are coordinates in the file as it + * was when the patch was written, and on an old patch they miss by dozens — + * precision that sends someone to the wrong place. A line of content survives + * the drift, so the notice offers text for the editor's search instead. + * + * Which line to prefer depends on why the region failed — a region whose + * surroundings moved usually still has the very line it wants to change, one + * already applied has the *result* — but "usually" is not a promise, so every + * candidate is checked against the file itself and the first one actually + * present wins. Only when nothing from the hunk survives in the file does the + * preference order alone decide, as the least-bad thing to show. + * + * @param {Object} hunk + * @param {boolean} alreadyApplied + * @param {string} text Current file contents, EOL-normalised. + * @return {string} A trimmed line, or '' when the hunk offers nothing usable. + */ +function anchorLine(hunk, alreadyApplied, text) { + const lines = hunk.lines || []; + const candidates = (marker) => lines + .filter((line) => line[0] === marker && line.slice(1).trim()) + .map((line) => line.slice(1).trim().slice(0, 120)); + const preferred = alreadyApplied ? ['+', '-', ' '] : ['-', ' ', '+']; + for (const marker of preferred) { + // Longest present candidate, not first: the first line of a hunk is + // often a bare brace, and "near `}`" locates nothing. + const present = candidates(marker).filter((line) => text.includes(line)); + if (present.length) return present.reduce((a, b) => (b.length > a.length ? b : a)); + } + for (const marker of preferred) { + const [firstLine] = candidates(marker); + if (firstLine) return firstLine; + } + return ''; +} + +/** + * Which regions of a patch no longer fit a file, and why. + * + * `JsDiff.applyPatch` answers for a whole file at once, so a patch that misses + * in one place out of twenty is indistinguishable from one that misses + * everywhere — and those are opposite decisions for the contributor (#282). + * Asking the same question once per hunk is all it takes to tell them apart. + * + * The reverse answers *why*: a region whose inverse fits is one whose change is + * already in the file, so the patch is redundant there rather than stale (#226). + * That is the same reasoning `patchIsAbsent` uses below, asked per region. + * + * **Evidence, not proof.** `applyPatch` searches by offset for somewhere the + * context fits, so a region whose surroundings repeat can match in the wrong + * place. That is acceptable for choosing what to say and is never acceptable + * for deciding what to write — nothing here reaches a write. Each hunk is also + * matched against the file as it is now, not as earlier hunks would have left + * it, which is the only question that can be asked when nothing is applied. + * + * @param {string} text Current file contents, EOL-normalised. + * @param {Object} file Parsed patch file. + * @return {?{total: number, regions: Array}} null when nothing to add. + */ +function diagnoseHunks(text, file) { + const hunks = file.hunks || []; + if (!hunks.length) return null; + + const regions = []; + hunks.forEach((hunk, index) => { + const single = { ...file.patch, hunks: [hunk] }; + if (JsDiff.applyPatch(text, single) !== false) return; + const alreadyApplied = JsDiff.applyPatch(text, JsDiff.reversePatch(single)) !== false; + const region = { + index, + // The patch's own coordinates, kept for logs and tests — the notice + // leads with `anchor`, because on an old patch these numbers point at + // where the code *used* to be, not where the contributor will find it. + line: hunk.oldStart, + status: alreadyApplied ? 'already-applied' : 'moved', + anchor: anchorLine(hunk, alreadyApplied, text) + }; + // Only the first few regions carry their lines; the rest are still named + // and located, which is what the counts are built from. + if (regions.length < REGION_DETAIL_LIMIT) { + const { lines, more } = changedLines(hunk); + region.lines = lines; + if (more) region.more = more; + } + regions.push(region); + }); + + // A file can fail as a whole while every region passes alone: applied one at + // a time they are matched against the unshifted file, and two that overlap + // once applied do not. There is nothing useful to say about that, so the + // caller keeps its original sentence rather than claiming zero conflicts. + if (!regions.length) return null; + return { total: hunks.length, regions }; +} + +/** + * The one sentence for a file the patch no longer fits. + * + * Kept in a single place because three branches of `resolveFile` produce it and + * the tests match on its wording. + * + * @param {string} label Path to name. + * @param {?Object} diagnosis From `diagnoseHunks`, or null. + * @return {string} + */ +function conflictSentence(label, diagnosis) { + if (!diagnosis) { + return `${label} has moved on since the patch was written, so it no longer applies`; + } + const failed = diagnosis.regions.length; + const { total } = diagnosis; + if (failed === total) { + return `${label} has moved on since the patch was written, so none of its ${total} change${total === 1 ? '' : 's'} still fits`; + } + return `${label} has moved on since the patch was written: ${failed} of its ${total} changes no longer fit, and the other ${total - failed} do`; +} + /** * Works out what one file's new content should be, without touching disk. * Also captures what is there now, so a failed write can be rolled back. * - * @param {string} dir - * @param {Object} file + * `diagnose` is off for `patchIsAbsent`, which only ever reads `.error` — every + * file it asks about is expected to resolve, and diagnosing the ones that do not + * would be work whose answer is discarded. + * + * @param {string} dir + * @param {Object} file + * @param {Object} [options] + * @param {boolean} [options.diagnose] * @return {Object} */ -function resolveFile(dir, file) { +function resolveFile(dir, file, { diagnose = true } = {}) { + // The three "no longer applies" branches below share this: the sentence, and + // the per-region detail behind it when there is any. + const conflict = (label, text) => { + const diagnosis = diagnose ? diagnoseHunks(text, file) : null; + const error = conflictSentence(label, diagnosis); + // The sentence rides along inside the conflict as well, so the panel can + // line each detail up with its entry in `failures` without re-deriving it. + return diagnosis ? { error, conflict: { path: label, error, ...diagnosis } } : { error }; + }; + const target = resolveInside(dir, file.path); if (!target) return { error: `${file.path} points outside the site folder` }; @@ -131,9 +291,9 @@ function resolveFile(dir, file) { // Validate the file still matches what the patch expects to remove, so an // edit made after the preview fails all-or-nothing rather than being // silently deleted with the contributor's changes in it. - if (file.hunks && file.hunks.length - && JsDiff.applyPatch(normalizeEol(previous.toString('utf8')), file.patch) === false) { - return { error: `${file.path} has moved on since the patch was written, so it no longer applies` }; + if (file.hunks && file.hunks.length) { + const text = normalizeEol(previous.toString('utf8')); + if (JsDiff.applyPatch(text, file.patch) === false) return conflict(file.path, text); } return { op: 'delete', abs: target, path: file.path, previous }; } @@ -158,10 +318,9 @@ function resolveFile(dir, file) { let content = originalBuf; if (file.hunks.length) { const original = originalBuf.toString('utf8'); - const applied = JsDiff.applyPatch(normalizeEol(original), file.patch); - if (applied === false) { - return { error: `${file.oldPath} has moved on since the patch was written, so it no longer applies` }; - } + const text = normalizeEol(original); + const applied = JsDiff.applyPatch(text, file.patch); + if (applied === false) return conflict(file.oldPath, text); content = applied.replace(/\n/g, dominantEol(original) === '\r\n' ? '\r\n' : '\n'); } return { @@ -176,10 +335,9 @@ function resolveFile(dir, file) { // checkout does not make every context line miss — but the file is written // back with the endings it already had. const raw = fs.readFileSync(target, 'utf8'); - const applied = JsDiff.applyPatch(normalizeEol(raw), file.patch); - if (applied === false) { - return { error: `${file.path} has moved on since the patch was written, so it no longer applies` }; - } + const normalized = normalizeEol(raw); + const applied = JsDiff.applyPatch(normalized, file.patch); + if (applied === false) return conflict(file.path, normalized); const content = dominantEol(raw) === '\r\n' ? applied.replace(/\n/g, '\r\n') : applied; return { op: 'write', abs: target, path: file.path, content, previous: Buffer.from(raw, 'utf8') }; } @@ -216,7 +374,7 @@ function resolveFile(dir, file) { function patchIsAbsent(dir, files) { const text = files.filter((f) => f.kind !== 'binary'); if (!text.length) return false; - return text.every((f) => !resolveFile(dir, f).error); + return text.every((f) => !resolveFile(dir, f, { diagnose: false }).error); } /** @@ -285,15 +443,20 @@ async function applyPatchToDir({ dir, patchText, reverse = false, onLog = () => const actions = []; const skipped = []; const failures = []; + const conflicts = []; for (const file of files) { if (file.kind === 'binary') { skipped.push(file.path); continue; } - const resolved = resolveFile(dir, file); + // No diagnosis on a reverse: the panel discards it — the patch being + // reverted came through this app, and the ticket's other patches are no + // answer to a revert that failed. + const resolved = resolveFile(dir, file, { diagnose: !reverse }); if (resolved.error) { failures.push(resolved.error); + if (resolved.conflict) conflicts.push(resolved.conflict); continue; } actions.push(resolved); @@ -316,7 +479,11 @@ async function applyPatchToDir({ dir, patchText, reverse = false, onLog = () => return { ok: false, notApplied: true, error, applied: [], skipped }; } onLog(`\nThe patch was not applied — the checkout is unchanged.\n${failures.map((f) => ` • ${f}\n`).join('')}`); - return { ok: false, error: failures[0], failures, applied: [], skipped }; + // `failures` carries every file, not just the first: the panel used to show + // `error` alone and send the rest to the terminal, where a contributor has + // no reason to be looking (#282). `conflicts` is the same failures with + // their regions, for the ones that have any. + return { ok: false, error: failures[0], failures, conflicts, applied: [], skipped }; } if (!actions.length && !skipped.length) { @@ -369,4 +536,4 @@ async function applyPatchToDir({ dir, patchText, reverse = false, onLog = () => return { ok: true, applied, skipped }; } -module.exports = { applyPatchToDir, resolveInside, reverseFile, dominantEol, rollback }; +module.exports = { applyPatchToDir, resolveInside, reverseFile, dominantEol, rollback, diagnoseHunks }; diff --git a/src/renderer/apply-conflict.cjs b/src/renderer/apply-conflict.cjs new file mode 100644 index 0000000..05d56d3 --- /dev/null +++ b/src/renderer/apply-conflict.cjs @@ -0,0 +1,259 @@ +// What the panel says when a patch will not apply. +// +// The refusal itself is right and stays: nothing is written, and a patch placed +// approximately is worse than no patch at all. What was wrong is everything +// after it (#282). "This file has moved on" read identically whether one region +// of twenty missed or all twenty did — opposite decisions for the contributor, +// who either spends ten minutes on a salvageable change or throws it away — and +// the panel showed only the first failing file, sending the rest to the terminal +// where nobody is looking. +// +// So this turns `applyPatchToDir`'s failure payload into something to act on: +// every failing file, how much of the patch actually missed, where, why (#226), +// and what those regions were trying to do. Plus the two ways out that need no +// data the app is not already holding — the ticket's other patches, and the pull +// request itself, where a rebase is someone else's to do. +// +// Pure and dependency-free like open-failure.cjs, and for the same reason: the +// renderer bundle imports it, `node --test` requires it directly, and neither +// needs a DOM. +'use strict'; + +// Why a region no longer fits, in the contributor's terms. +// +// Hedged on purpose. Matching searches for somewhere the surrounding lines fit, +// so a region whose surroundings repeat can be recognised in the wrong place — +// good enough to choose a sentence, never good enough to decide what to write. +// "Looks like" is that uncertainty, said out loud rather than buried here. +const REASONS = { + 'already-applied': 'looks like it is already in your checkout', + moved: 'the code around it has changed' +}; + +/** + * One failing region, ready to render. + * + * @param {Object} region + * @return {Object} + */ +function describeRegion(region) { + return { + line: region.line, + status: region.status, + reason: REASONS[region.status] || 'it no longer fits', + // A line to search for, not a number to go to: the hunk's line numbers + // are in the patched file's coordinates and miss by the drift the patch + // failed on. The panel leads with this and keeps `line` as the fallback. + anchor: region.anchor || '', + lines: region.lines || [], + more: region.more || 0 + }; +} + +/** + * The headline: how much of the patch missed, across every file. + * + * Counts, not adjectives. "2 of 20" is the whole point — it is what separates a + * patch worth rescuing by hand from one that is genuinely dead. + * + * The already-applied case gets its own sentences: a patch whose changes are + * all in the tree already fails every region, and "none of its changes still + * fit" over rows saying "already in your checkout" would be the banner + * contradicting itself — with the headline, the half that decides whether the + * patch gets thrown away, telling the wrong story. + * + * @param {Array} conflicts + * @return {string} + */ +function headlineFor(conflicts) { + const failed = conflicts.reduce((sum, c) => sum + c.regions.length, 0); + const total = conflicts.reduce((sum, c) => sum + c.total, 0); + const changes = `change${total === 1 ? '' : 's'}`; + const where = conflicts.length === 1 ? '' : ` across ${conflicts.length} files`; + const allApplied = conflicts.every((c) => c.regions.every((r) => r.status === 'already-applied')); + + if (allApplied) { + if (failed === total) { + return `All ${total} of this patch's ${changes}${where} look like they are already in your checkout.`; + } + return `${failed} of this patch's ${total} ${changes}${where} look like they are already in your checkout — the other ${total - failed} still fit.`; + } + if (failed === total) { + return `None of this patch's ${total} ${changes}${where} still fit your checkout.`; + } + return `${failed} of this patch's ${total} ${changes}${where} no longer fit — the other ${total - failed} do.`; +} + +/** + * How many other patches the ticket is offering besides the one that failed. + * + * The answer decides whether "try another patch" is a way out or a click back + * to the same dead end, so only what is already on screen counts — Trac + * attachments load on demand and are genuinely not there until asked for. + * Matching is by the preview's label on both lists: a failed PR is labelled + * `PR #n`, a failed attachment (or the same file picked from disk) by its + * filename. + * + * @param {Object} root0 + * @param {?string} root0.label The failed preview's label. + * @param {Array} [root0.prs] The ticket's linked pull requests. + * @param {Array} [root0.attachments] The ticket's loaded patch attachments. + * @return {number} + */ +function otherPatchCount({ label, prs = [], attachments = [] } = {}) { + const failedLabel = label || ''; + return prs.filter((pr) => `PR #${pr.number}` !== failedLabel).length + + attachments.filter((att) => att.filename !== failedLabel).length; +} + +/** + * The pull-request framing: whose problem this is, and how big. + * + * The regions belong to whoever updates the pull request, and that is its + * author, not the contributor reading this notice — showing them line-level + * detail invites them into work that is not theirs. What they need instead is + * the situation named (the PR is behind trunk), the scale (files and places), + * and the one act that is genuinely theirs: telling the author. + * + * The pull request's state changes who that act is for. Asking a closed pull + * request's author for a rebase asks for work on something they walked away + * from — and in wordpress-develop "closed" is also what *landing* looks like, + * since core commits go through SVN and the pull request is closed, never + * merged. The regions tell those apart: a landed change reads back as already + * in the checkout, an abandoned one as moved. + * + * "No longer fits today's trunk" rather than "has conflicts": the app matches + * without the pull request's base, so its count can include a region a real + * merge would settle — close enough to size the problem, not a claim GitHub + * will show the identical number. + * + * @param {Array} conflicts + * @param {?string} prState 'open' | 'merged' | 'closed' | null when unknown. + * @return {{headline: string, advice: string, prButton: ?string}} + */ +function prFraming(conflicts, prState) { + const failed = conflicts.reduce((sum, c) => sum + c.regions.length, 0); + const total = conflicts.reduce((sum, c) => sum + c.total, 0); + const allApplied = conflicts.every((c) => c.regions.every((r) => r.status === 'already-applied')); + const closed = prState === 'closed' || prState === 'merged'; + + // A pull request whose changes are all in trunk already needs no rebase and + // no message — there is nothing left for anyone to do with it. When it is + // also closed, that is core's own way of landing a change: committed via + // SVN, pull request closed. + if (allApplied && failed === total) { + return { + headline: closed + ? `All ${total} of this pull request's change${total === 1 ? '' : 's'} look like they are already in trunk — it was likely committed to core, which is why it is closed. There is nothing left to apply.` + : `All ${total} of this pull request's change${total === 1 ? '' : 's'} look like they are already in trunk — there is nothing left to apply.`, + advice: '', + prButton: null + }; + } + + const files = conflicts.length; + const scale = `${failed} of its ${total} change${total === 1 ? '' : 's'}, in ${files} file${files === 1 ? '' : 's'},`; + + // A closed pull request has no author coming back to it: asking for a + // rebase would be a message into the void. The way forward is the ticket — + // another patch, or redoing the change, which is a contribution in itself. + if (closed) { + return { + headline: `This pull request is closed and was written against an older trunk — it no longer fits: ${scale} would need rework.`, + advice: 'Nobody is coming back to update a closed pull request — its discussion may say why it ended.', + prButton: 'See why it was closed' + }; + } + + return { + headline: `This pull request was written against an older trunk and no longer fits it: ${scale} would need rework.`, + advice: 'Bringing it up to date is its author\'s work — a rebase, or merging trunk in. Leaving a comment on the pull request to let them know is a real contribution in itself.', + prButton: 'Ask its author for a rebase' + }; +} + +/** + * Everything the panel needs to explain a failed apply, or null when there is + * nothing to explain. + * + * Two framings, chosen by where the patch came from. A pull request has an + * author who is the one to fix it, so the notice names the situation and the + * scale and points at them — no line-level detail. A loose patch (a Trac + * attachment, a file from disk) has nobody to send the contributor to, so it + * keeps the full per-region breakdown: there, the contributor with the failing + * lines in hand is the only way out. + * + * `items` follows the order of `failures` so that a patch failing for mixed + * reasons — one file with drifted regions, another simply not in the checkout — + * reads as one list rather than two. Failures with no region detail keep their + * own sentence; that covers every non-conflict refusal (a path escaping the + * folder, a file to add that already exists) as well as the conflict that could + * not be broken down. + * + * @param {Object} result The apply payload from main. + * @param {Object} [options] + * @param {number} [options.otherPatchCount] Other patches on this ticket. + * @param {?string} [options.prUrl] The failing patch's pull request. + * @param {?string} [options.prState] Its state, when known. + * @return {?Object} + */ +function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, prUrl = null, prState = null } = {}) { + if (!result || result.ok) return null; + + const failures = Array.isArray(result.failures) ? result.failures : []; + const conflicts = Array.isArray(result.conflicts) ? result.conflicts : []; + // Nothing structured to add: a parse failure, a write that was rolled back, + // a refusal from main. The single sentence is already the whole story, and + // the panel keeps rendering it exactly as it did before. + if (!failures.length && !conflicts.length) return null; + + const fromPr = Boolean(prUrl); + + // Each conflict is consumed as it is matched, not looked up in a map: a + // concatenated patch can fail the same file twice with the identical + // sentence, and a map would show one breakdown twice while dropping the + // other from the counts. + const unmatched = [...conflicts]; + const sentences = failures.length ? failures : conflicts.map((c) => c.error); + const items = sentences.map((text) => { + const at = unmatched.findIndex((c) => c.error === text); + const conflict = at === -1 ? null : unmatched.splice(at, 1)[0]; + if (!conflict) return { kind: 'note', text }; + return { + kind: 'conflict', + path: conflict.path, + total: conflict.total, + failed: conflict.regions.length, + // For a pull request the regions are the author's problem; the file + // row with its counts is the whole story the contributor needs. + regions: fromPr ? [] : conflict.regions.map(describeRegion) + }; + }); + + // With no conflicts to count there is nothing to summarise that the items + // do not already say, so the headline stands down rather than padding. + let headline = ''; + let advice = ''; + let prButton = fromPr ? 'Open the pull request' : null; + if (conflicts.length) { + const framing = fromPr + ? prFraming(conflicts, prState) + : { headline: headlineFor(conflicts), advice: '', prButton: null }; + headline = framing.headline; + advice = framing.advice; + prButton = framing.prButton; + } + return { + headline, + advice, + items, + // Both are offered only when they lead somewhere, the way open-failure.cjs + // withholds its picker: a way out that returns to the same dead end is + // worse than no button, because it costs a click to find that out. + offerOtherPatches: othersAvailable > 0, + prUrl: prUrl && prButton ? prUrl : null, + prButton + }; +} + +module.exports = { describeApplyFailure, headlineFor, otherPatchCount, REASONS }; diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 210b5b8..381da30 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -29,6 +29,7 @@ import { appendBounded, countLines } from './debug-log.cjs'; import { pathBasename } from './path-basename.cjs'; import { sanitizeSiteFolder, resolveTargetDir, directoryFromFileEntry } from './site-folder.cjs'; import { noticeForOpenResult } from './open-failure.cjs'; +import { describeApplyFailure, otherPatchCount } from './apply-conflict.cjs'; import { trunkAgeInfo, planUpdateSteps, updateStepStatuses, SKIP_INSTALL_MESSAGE, planApplySteps, planWatchImpact, APPLY_STATE_TO_STEP, planSetupSteps, SETUP_STATE_TO_STEP, setupOutcome } from './update-plan.cjs'; import { pickLatest } from '../latest-patch.cjs'; import { beginSetup, adoptSetupPath, discardSetup, rowPathAfterStatus } from './pending-setup.cjs'; @@ -1309,6 +1310,20 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // chain shows its build step skipped and attributed to the watch (#262). const [applyBuildByWatcher, setApplyBuildByWatcher] = useState(false); const [applyError, setApplyError] = useState(''); + // The failure broken down: which regions of the patch no longer fit, where, + // why, and what they were trying to change (#282, #226). Held beside + // applyError rather than replacing it — a refusal with nothing to break down + // (a parse error, a rolled-back write) still has only its sentence. + const [applyConflict, setApplyConflict] = useState(null); + // One call, because the breakdown must never outlive the sentence it belongs + // to: every place that took the error banner down predates it, and any that + // cleared only one would leave regions on screen describing a patch the + // contributor has moved on from. + const clearApplyError = () => { setApplyError(''); setApplyConflict(null); }; + // Where "try another patch" goes. The list is already on screen when a patch + // fails — three rows above, in the case that prompted this — so the way out + // is a scroll, not a fetch. + const ticketPatchesRef = useRef(null); // Not every unhappy ending is a failure: a revert can find that the patch is // already gone, which resolves the situation rather than blocking it. Red // would read as "you broke something" when nothing is left to do. @@ -2925,7 +2940,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // Reads a patch file and works out what it would do, without touching the // checkout — the contributor decides after seeing the file list. const choosePatchFile = async () => { - setApplyError(''); + clearApplyError(); setApplyNotice(''); try { const chosen = await window.api.choosePatchFile(); @@ -3001,7 +3016,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // Fetches a PR's diff and drops into the same preview the file picker uses, // so applying a PR and applying a downloaded patch are one path from here on. const previewPr = async (pr) => { - setApplyError(''); + clearApplyError(); setApplyNotice(''); setFetchingPr(pr.number); try { @@ -3017,7 +3032,11 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit setApplyError(preview?.error || 'Could not read that diff.'); return; } - setApplyPreview({ ...preview, label: `PR #${pr.number}`, text: diff.text }); + // `url` and `state` ride along so a conflict can offer the pull request + // itself, framed by what it is: an open one is rebased by its author, a + // closed one is nobody's to update (#282). State is absent when the PR + // came from a pasted number rather than the linked list. + setApplyPreview({ ...preview, label: `PR #${pr.number}`, text: diff.text, prUrl: pr.url, prState: pr.state || null }); } catch (e) { setApplyError(String(e)); } finally { @@ -3029,7 +3048,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // scrapes its attachment list, and shows it in-app. On demand, not on link. const loadTracAttachments = async () => { const gen = scrapeGenRef.current; - setApplyError(''); + clearApplyError(); setTracAttachmentsLoading(true); try { const res = await window.api.listTracAttachments(sitePath); @@ -3046,7 +3065,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // Downloads an attachment through the challenge-passing session and hands it // to the same preview the PR and file paths use. const previewAttachment = async (att) => { - setApplyError(''); + clearApplyError(); setApplyNotice(''); setFetchingAttachment(att.url); try { @@ -3072,7 +3091,10 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // linked to the ticket — same fetch → preview flow as the linked-PR list. const previewPrFromInput = () => { const parsed = parsePrRef(prUrlInput); - if (!parsed.ok) { setApplyError(parsed.error); setApplyNotice(''); return; } + // clearApplyError first, not setApplyError alone: a parse error arriving on + // top of a conflict breakdown would otherwise leave the stale regions on + // screen hiding it, since the banner leads with the breakdown's headline. + if (!parsed.ok) { clearApplyError(); setApplyError(parsed.error); setApplyNotice(''); return; } setPrUrlInput(''); previewPr({ number: parsed.number, url: `https://github.com/WordPress/wordpress-develop/pull/${parsed.number}` }); }; @@ -3091,7 +3113,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // the build and is not interrupted; an install/full build pauses it (#262). const watcherActive = watchStateRef.current === 'watching'; const impact = planWatchImpact({ needsInstall, watcherActive }); - setApplyError(''); + clearApplyError(); setApplyNotice(''); setApplyNeedsInstall(needsInstall); setApplyBuildByWatcher(!impact.runBuild); @@ -3123,6 +3145,21 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit return; } setApplyError(res?.error || 'The patch could not be applied.'); + // A conflict is where the panel used to stop: one file named, the + // rest of the failures left in the terminal, and no sense of whether + // one region of twenty missed or all of them. The breakdown is what + // turns that into a decision (#282). A reverse is left out — the + // patch it names came from this app and the ticket's other patches + // are no help against it. + setApplyConflict(reverse ? null : describeApplyFailure(res, { + otherPatchCount: otherPatchCount({ + label: preview?.label, + prs: ticketPatches?.items, + attachments: patchAttachments + }), + prUrl: preview?.prUrl || null, + prState: preview?.prState || null + })); finishApply(); return; } @@ -4376,7 +4413,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit ) : null} -
+
Linked pull requests
- +
) : null} @@ -4635,15 +4672,100 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit ) : null} {applyError ? ( -
- {/[.!?]$/.test(applyError.trim()) ? applyError : `${applyError.trim()}.`} The checkout was not changed. - +
+
+ {/* The headline replaces the sentence when there is one: it says + the same thing in counts, which is the part that decides + whether the patch is worth rescuing. Without a breakdown the + original sentence is still the whole story. */} + + {applyConflict?.headline || (/[.!?]$/.test(applyError.trim()) ? applyError : `${applyError.trim()}.`)} The checkout was not changed. + + +
+ + {applyConflict ? ( +
+ {applyConflict.items.map((item, i) => ( +
+ {item.kind === 'note' ? ( +
{item.text}
+ ) : ( + <> +
+ {item.path} — {item.failed} of {item.total} {item.total === 1 ? 'change' : 'changes'} +
+ {item.regions.map((region) => ( + // index, not line: a concatenated patch can carry + // two hunks whose oldStart coincides. +
+ {/* A searchable line, not a line number: the patch's + numbers are coordinates in the file as its author + had it, and on an old patch they miss by dozens. + Text survives the drift — copy it into the + editor's search and land on the region. */} +
+ {region.anchor + ? <>near {region.anchor} + : `line ${region.line} of the patch`} · {region.reason} +
+ {/* The lines themselves, because a location alone + cannot answer the question that decides the + next ten minutes: is this the change that + matters, or reformatting that came with it. */} + {region.lines.length ? ( +
+                                  {region.lines.join('\n')}{region.more ? `\n… ${region.more} more ${region.more === 1 ? 'line' : 'lines'}` : ''}
+                                
+ ) : null} +
+ ))} + + )} +
+ ))} + + {applyConflict.advice ? ( +
{applyConflict.advice}
+ ) : null} + + {applyConflict.offerOtherPatches || applyConflict.prUrl ? ( +
+ {applyConflict.offerOtherPatches ? ( + + ) : null} + {applyConflict.prUrl && applyConflict.prButton ? ( + + ) : null} +
+ ) : null} +
+ ) : null}
) : null} @@ -4670,7 +4792,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit
{ setPrUrlInput(value); setApplyError(''); setApplyNotice(''); }} + onChange={(value) => { setPrUrlInput(value); clearApplyError(); setApplyNotice(''); }} onKeyDown={(event) => { if (event.key === 'Enter') { event.preventDefault(); previewPrFromInput(); } }} disabled={isUpdating || installing || building} placeholder="Paste a pull request URL or number" diff --git a/test/apply-conflict.test.cjs b/test/apply-conflict.test.cjs new file mode 100644 index 0000000..eb1b823 --- /dev/null +++ b/test/apply-conflict.test.cjs @@ -0,0 +1,394 @@ +'use strict'; + +// What the panel says when a patch will not apply (#282). +// +// The failure it exists for: "this file has moved on" read the same whether one +// region of twenty missed or all twenty did, and only the first failing file +// ever reached the screen. Both of those are decisions the contributor makes +// differently — rescue the patch by hand, or abandon it — so both are asserted +// here rather than left to the panel. + +const test = require('node:test'); +const assert = require('node:assert/strict'); + +const { describeApplyFailure, otherPatchCount, REASONS } = require('../src/renderer/apply-conflict.cjs'); + +const FOO = 'src/wp-includes/foo.php'; +const BAR = 'src/wp-includes/bar.php'; + +function conflict(path, total, regions) { + return { path, error: `${path} has moved on`, total, regions }; +} + +// --- nothing to explain -------------------------------------------------- + +test('describeApplyFailure: a success has nothing to say (issue #282)', () => { + assert.equal(describeApplyFailure({ ok: true, applied: [FOO] }), null); + assert.equal(describeApplyFailure(null), null); +}); + +// A failure with no structured detail is every refusal that is not a conflict — +// a parse error, a rolled-back write, main declining. The panel already renders +// `error` for those, and inventing a second empty banner beside it would be +// noise, so this stands down rather than returning an itemless shell. +test('describeApplyFailure: a failure with no detail leaves the plain error alone (issue #282)', () => { + assert.equal(describeApplyFailure({ ok: false, error: 'The patch does not change any files.' }), null); +}); + +// --- the count that changes the decision --------------------------------- + +test('describeApplyFailure: a mostly-fitting patch says so, in counts (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 20, [ + { index: 0, line: 40, status: 'moved', lines: ['-a', '+b'] }, + { index: 1, line: 58, status: 'moved' } + ])] + }); + + // The whole point of the issue: 2 of 20 is a patch worth ten minutes, and + // "it no longer applies" is one that gets thrown away. + assert.match(result.headline, /2 of this patch's 20 changes/); + assert.match(result.headline, /the other 18 do/); + assert.equal(result.items.length, 1); + assert.equal(result.items[0].failed, 2); + assert.equal(result.items[0].total, 20); +}); + +test('describeApplyFailure: a patch that misses everywhere does not claim a salvageable remainder (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 2, [ + { index: 0, line: 1, status: 'moved' }, + { index: 1, line: 9, status: 'moved' } + ])] + }); + + assert.match(result.headline, /None of this patch's 2 changes/); + assert.doesNotMatch(result.headline, /the other/); +}); + +test('describeApplyFailure: counts span every failing file (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`, `${BAR} has moved on`], + conflicts: [ + conflict(FOO, 5, [{ index: 0, line: 3, status: 'moved' }]), + conflict(BAR, 5, [{ index: 0, line: 7, status: 'moved' }]) + ] + }); + + assert.match(result.headline, /2 of this patch's 10 changes across 2 files/); + assert.equal(result.items.length, 2); +}); + +// A patch whose changes are all in the tree fails every region, and a headline +// counting fits ("none still fit") over rows saying "already in your checkout" +// would be the banner contradicting itself — with the headline being the half +// that decides whether the patch gets thrown away (issue #226). +test('describeApplyFailure: an all-already-applied patch is not announced as dead (issue #226)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 2, [ + { index: 0, line: 4, status: 'already-applied' }, + { index: 1, line: 19, status: 'already-applied' } + ])] + }); + + assert.match(result.headline, /All 2 of this patch's changes look like they are already in your checkout/); + assert.doesNotMatch(result.headline, /still fit your checkout/); +}); + +test('describeApplyFailure: a partly-applied patch says both halves (issue #226)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 5, [ + { index: 0, line: 4, status: 'already-applied' } + ])] + }); + + assert.match(result.headline, /1 of this patch's 5 changes look like they are already in your checkout/); + assert.match(result.headline, /the other 4 still fit/); +}); + +// One region genuinely moved keeps the plain counting headline: "already in +// your checkout" as a summary would be wrong about that region. +test('describeApplyFailure: mixed reasons keep the counting headline (issue #226)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 5, [ + { index: 0, line: 4, status: 'already-applied' }, + { index: 1, line: 19, status: 'moved' } + ])] + }); + + assert.match(result.headline, /2 of this patch's 5 changes no longer fit/); +}); + +// A concatenated patch can fail the same file twice with the identical +// sentence. A lookup by sentence would render one breakdown twice and lose the +// other from the counts; matching consumes each conflict once instead. +test('describeApplyFailure: two identical failure sentences get their own breakdowns (issue #282)', () => { + const sentence = `${FOO} has moved on`; + const result = describeApplyFailure({ + ok: false, + failures: [sentence, sentence], + conflicts: [ + conflict(FOO, 3, [{ index: 0, line: 1, status: 'moved' }]), + conflict(FOO, 4, [{ index: 0, line: 9, status: 'moved' }]) + ] + }); + + assert.equal(result.items.length, 2); + assert.deepEqual(result.items.map((i) => i.total), [3, 4]); +}); + +// --- every failure reaches the screen, not just the first ---------------- + +test('describeApplyFailure: a second failing file is not dropped (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + error: `${FOO} has moved on`, + failures: [`${FOO} has moved on`, `${BAR} is not in this checkout`], + conflicts: [conflict(FOO, 3, [{ index: 0, line: 1, status: 'moved' }])] + }); + + assert.equal(result.items.length, 2); + // Mixed reasons stay one list, in the order they were reported: a file whose + // regions drifted, then one that is simply absent and has no regions at all. + assert.equal(result.items[0].kind, 'conflict'); + assert.deepEqual(result.items[1], { kind: 'note', text: `${BAR} is not in this checkout` }); +}); + +// --- why it failed (issue #226) ------------------------------------------ + +test('describeApplyFailure: tells "already there" apart from "the code moved" (issue #226)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 4, [ + { index: 0, line: 40, status: 'already-applied' }, + { index: 1, line: 58, status: 'moved' } + ])] + }); + + const [redundant, drifted] = result.items[0].regions; + assert.equal(redundant.reason, REASONS['already-applied']); + assert.equal(drifted.reason, REASONS.moved); + // Hedged, because matching searches for a fit and can find one in the wrong + // place. A sentence that sounds certain here would be the app overstating + // evidence it cannot have. + assert.match(redundant.reason, /looks like/); +}); + +test('describeApplyFailure: an unknown status still gets a sentence (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 1, [{ index: 0, line: 2, status: 'something-new' }])] + }); + + assert.equal(result.items[0].regions[0].reason, 'it no longer fits'); +}); + +// --- what the region was trying to do ------------------------------------ + +test('describeApplyFailure: carries the lines a region wanted to change (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 1, [ + { index: 0, line: 40, status: 'moved', lines: ['-return $out;', '+return apply_filters( $out );'], more: 4 } + ])] + }); + + const region = result.items[0].regions[0]; + assert.deepEqual(region.lines, ['-return $out;', '+return apply_filters( $out );']); + assert.equal(region.more, 4); +}); + +test('describeApplyFailure: carries the anchor, and falls back to the patch line without one (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 2, [ + { index: 0, line: 40, status: 'moved', anchor: 'return $out;' }, + { index: 1, line: 90, status: 'moved' } + ])] + }); + + const [anchored, bare] = result.items[0].regions; + assert.equal(anchored.anchor, 'return $out;'); + // The fallback is empty-string, not undefined: the panel branches on it to + // decide between "near `…`" and the patch's own line number. + assert.equal(bare.anchor, ''); + assert.equal(bare.line, 90); +}); + +test('describeApplyFailure: a region with no lines renders as an empty list, not undefined (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 9, [{ index: 8, line: 300, status: 'moved' }])] + }); + + assert.deepEqual(result.items[0].regions[0].lines, []); + assert.equal(result.items[0].regions[0].more, 0); +}); + +// --- the ways out -------------------------------------------------------- + +test('describeApplyFailure: offers the other patches only when there are some (issue #282)', () => { + const payload = { + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 1, [{ index: 0, line: 1, status: 'moved' }])] + }; + + assert.equal(describeApplyFailure(payload, { otherPatchCount: 1 }).offerOtherPatches, true); + // The only patch on the ticket is the one that just failed: a button back to + // the same list is a click that teaches the contributor nothing. + assert.equal(describeApplyFailure(payload, { otherPatchCount: 0 }).offerOtherPatches, false); + assert.equal(describeApplyFailure(payload).offerOtherPatches, false); +}); + +// --- the pull-request framing -------------------------------------------- +// +// The regions belong to whoever updates the pull request — its author. The +// contributor gets the situation, the scale, and their one real act: telling +// the author. Line-level detail is for patches with nobody behind them. + +const PR_URL = 'https://github.com/WordPress/wordpress-develop/pull/7871'; + +test('describeApplyFailure: a pull request failure names the stale side and the scale, not the lines (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 24, [ + { index: 0, line: 18, status: 'moved', lines: ['-a', '+b'] }, + { index: 1, line: 69, status: 'moved' } + ])] + }, { prUrl: PR_URL, otherPatchCount: 1 }); + + // The stale side is the pull request, said outright — not "your checkout". + assert.match(result.headline, /written against an older trunk/); + // The scale, so the contributor can size it: places and files. + assert.match(result.headline, /2 of its 24 changes, in 1 file/); + // Whose work the fix is, and what the contributor can actually do. + assert.match(result.advice, /author's work/); + assert.match(result.advice, /comment on the pull request/); + // The file row survives for the summary; the regions do not. + assert.equal(result.items[0].failed, 2); + assert.deepEqual(result.items[0].regions, []); +}); + +// A closed pull request has no author coming back to it. Asking for a rebase +// would send the contributor's one act into the void — and in wordpress-develop +// "closed" is also what landing looks like, since core commits via SVN. +test('describeApplyFailure: a closed pull request is not offered a rebase (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 3, [{ index: 0, line: 7, status: 'moved' }])] + }, { prUrl: PR_URL, prState: 'closed' }); + + assert.match(result.headline, /closed and was written against an older trunk/); + assert.doesNotMatch(result.advice, /rebase/); + assert.match(result.advice, /Nobody is coming back/); + // The PR is still worth opening — its discussion says why it ended — but + // the button says that, not "ask for a rebase". + assert.equal(result.prButton, 'See why it was closed'); + assert.equal(result.prUrl, PR_URL); +}); + +test('describeApplyFailure: a closed PR already in trunk reads as landed, not dead (issue #226)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 2, [ + { index: 0, line: 4, status: 'already-applied' }, + { index: 1, line: 9, status: 'already-applied' } + ])] + }, { prUrl: PR_URL, prState: 'closed' }); + + // Core lands through SVN and closes the PR; the regions reading back as + // already-present is what that looks like from the checkout. + assert.match(result.headline, /likely committed to core/); + assert.equal(result.prButton, null); + assert.equal(result.prUrl, null, 'no button, no url — nothing to do with the PR'); +}); + +test('describeApplyFailure: an unknown PR state keeps the open framing (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 3, [{ index: 0, line: 7, status: 'moved' }])] + }, { prUrl: PR_URL }); + + // A PR pasted by number carries no state; assuming open keeps the rebase + // path available rather than withholding it on missing data. + assert.equal(result.prButton, 'Ask its author for a rebase'); +}); + +test('describeApplyFailure: a pull request already in trunk asks for nothing (issue #226)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 2, [ + { index: 0, line: 4, status: 'already-applied' }, + { index: 1, line: 9, status: 'already-applied' } + ])] + }, { prUrl: PR_URL }); + + assert.match(result.headline, /already in trunk — there is nothing left to apply/); + // No rebase to ask for: the advice line stands down. + assert.equal(result.advice, ''); +}); + +test('describeApplyFailure: a loose patch keeps the full breakdown — there is no author to send to (issue #282)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 3, [ + { index: 0, line: 7, status: 'moved', lines: ['-x', '+y'] } + ])] + }); + + assert.equal(result.items[0].regions.length, 1); + assert.deepEqual(result.items[0].regions[0].lines, ['-x', '+y']); + assert.equal(result.advice, ''); +}); + +// The count feeding offerOtherPatches, as its own unit: it lives here rather +// than in index.jsx so the label-matching (a failed PR by `PR #n`, a failed +// attachment — or the same file picked from disk — by filename) is testable. +test('otherPatchCount: excludes the failed patch from either list (issue #282)', () => { + const prs = [{ number: 7871 }, { number: 11517 }]; + const attachments = [{ filename: '62064.diff' }]; + + assert.equal(otherPatchCount({ label: 'PR #7871', prs, attachments }), 2); + assert.equal(otherPatchCount({ label: '62064.diff', prs, attachments }), 2); + // The same attachment picked from disk carries its filename as the label, + // so it is excluded the same way as one applied from the list. + assert.equal(otherPatchCount({ label: '62064.diff', prs: [], attachments }), 0); + assert.equal(otherPatchCount({ label: 'unrelated.diff', prs, attachments }), 3); + assert.equal(otherPatchCount({}), 0); +}); + +test('describeApplyFailure: carries the pull request only when the patch came from one (issue #282)', () => { + const payload = { + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 1, [{ index: 0, line: 1, status: 'moved' }])] + }; + + const url = 'https://github.com/WordPress/wordpress-develop/pull/1234'; + assert.equal(describeApplyFailure(payload, { prUrl: url }).prUrl, url); + // A .diff chosen off disk has no pull request to ask for a rebase on. + assert.equal(describeApplyFailure(payload).prUrl, null); +}); diff --git a/test/patch-apply.integration.test.cjs b/test/patch-apply.integration.test.cjs index 5613744..24ec39b 100644 --- a/test/patch-apply.integration.test.cjs +++ b/test/patch-apply.integration.test.cjs @@ -6,7 +6,9 @@ const fs = require('fs'); const os = require('os'); const path = require('path'); const git = require('isomorphic-git'); -const { applyPatchToDir, resolveInside, dominantEol, rollback } = require('../src/patch-apply'); +const JsDiff = require('diff'); +const { applyPatchToDir, resolveInside, dominantEol, rollback, diagnoseHunks } = require('../src/patch-apply'); +const { parsePatchFiles } = require('../src/patch-plan.cjs'); // A real on-disk repo, like trunk-update.integration.test.cjs: applyPatchToDir // calls ensureAutocrlf, which reads and writes git config, so a bare temp @@ -549,3 +551,244 @@ test('rollback: returns an empty list when it restores everything (issue #11)', assert.deepStrictEqual(recovery, []); assert.strictEqual(fs.existsSync(path.join(dir, 'added')), false, 'an added file is removed on rollback'); }); + +// --- how badly it failed (issue #282) ------------------------------------ +// +// The refusal is right and stays; what it says is what changed. "This file has +// moved on" read identically whether one region of twenty missed or all twenty +// did, which is the difference between a patch worth rescuing by hand and one +// worth abandoning. These assert the counts the panel is built from. + +// A file long enough to hold three regions that do not merge into one hunk. +const LONG = 'src/wp-includes/long.php'; +const LONG_BODY = Array.from({ length: 30 }, (_, i) => `line ${i + 1}`).join('\n') + '\n'; + +// Three regions: near the top, the middle and the bottom. +const LONG_PATCH = `diff --git a/${LONG} b/${LONG} +--- a/${LONG} ++++ b/${LONG} +@@ -1,3 +1,3 @@ + line 1 +-line 2 ++LINE TWO + line 3 +@@ -14,3 +14,3 @@ + line 14 +-line 15 ++LINE FIFTEEN + line 16 +@@ -27,3 +27,3 @@ + line 27 +-line 28 ++LINE TWENTY-EIGHT + line 29 +`; + +test('applyPatchToDir: names how many regions missed, not just the file (issue #282)', async (t) => { + const dir = await makeRepo(t, { [LONG]: LONG_BODY }); + // Only the first region's surroundings are disturbed. + fs.writeFileSync(path.join(dir, LONG), LONG_BODY.replace('line 1\n', 'line one, rewritten\n')); + + const res = await applyPatchToDir({ dir, patchText: LONG_PATCH }); + + assert.strictEqual(res.ok, false); + assert.strictEqual(res.conflicts.length, 1); + const [conflict] = res.conflicts; + assert.strictEqual(conflict.path, LONG); + assert.strictEqual(conflict.total, 3, 'the patch has three regions'); + assert.strictEqual(conflict.regions.length, 1, 'only one of them missed'); + assert.strictEqual(conflict.regions[0].line, 1); + // The sentence carries the same counts, for the terminal and for anywhere + // the structured detail does not reach. + assert.match(res.error, /1 of its 3 changes no longer fit/); + assert.match(res.error, /the other 2 do/); +}); + +test('applyPatchToDir: a region carries the lines it was trying to change (issue #282)', async (t) => { + const dir = await makeRepo(t, { [LONG]: LONG_BODY }); + fs.writeFileSync(path.join(dir, LONG), LONG_BODY.replace('line 1\n', 'line one, rewritten\n')); + + const res = await applyPatchToDir({ dir, patchText: LONG_PATCH }); + + // Without these there is a location and no way to judge whether it is the + // change that matters or reformatting noise, which is the judgement the + // whole diagnosis exists to enable. + assert.deepStrictEqual(res.conflicts[0].regions[0].lines, ['-line 2', '+LINE TWO']); +}); + +// The anchor is a line to search for, because the hunk's numbers are in the +// patched file's coordinates and an old patch misses by its whole drift. For a +// "moved" region the `-` line is the one thing known to still be in the file — +// the failure means the *neighbours* changed, not it. +test('applyPatchToDir: a region\'s anchor is a line still present in the checkout (issue #282)', async (t) => { + const dir = await makeRepo(t, { [LONG]: LONG_BODY }); + const drifted = LONG_BODY.replace('line 1\n', 'line one, rewritten\n'); + fs.writeFileSync(path.join(dir, LONG), drifted); + + const res = await applyPatchToDir({ dir, patchText: LONG_PATCH }); + + const region = res.conflicts[0].regions[0]; + assert.strictEqual(region.anchor, 'line 2'); + assert.ok(drifted.includes(region.anchor), 'searching the anchor finds the region'); +}); + +// An already-applied region carries the change, not its precondition: the `-` +// line is gone from the file by definition, and the `+` line is what a search +// will actually hit. +test('applyPatchToDir: an already-applied region anchors on its result (issue #226)', async (t) => { + const dir = await makeRepo(t, { [LONG]: LONG_BODY }); + const current = LONG_BODY + .replace('line 2\n', 'LINE TWO\n') + .replace('line 14\n', 'line fourteen!\n'); + fs.writeFileSync(path.join(dir, LONG), current); + + const res = await applyPatchToDir({ dir, patchText: LONG_PATCH }); + + const applied = res.conflicts[0].regions.find((r) => r.status === 'already-applied'); + assert.strictEqual(applied.anchor, 'LINE TWO'); + assert.ok(current.includes(applied.anchor), 'searching the anchor finds the region'); +}); + +// The other half of the same question (issue #226): a region can miss because +// its change is already there, which means the patch is redundant rather than +// stale — the opposite conclusion from the same failure. +test('applyPatchToDir: a region already in the tree is told apart from one that drifted (issue #226)', async (t) => { + const dir = await makeRepo(t, { [LONG]: LONG_BODY }); + const current = LONG_BODY + .replace('line 2\n', 'LINE TWO\n') // the patch's own change, already here + .replace('line 14\n', 'line fourteen!\n'); // and genuine drift around another region + fs.writeFileSync(path.join(dir, LONG), current); + + const res = await applyPatchToDir({ dir, patchText: LONG_PATCH }); + + assert.strictEqual(res.ok, false); + const byLine = Object.fromEntries(res.conflicts[0].regions.map((r) => [r.line, r.status])); + assert.strictEqual(byLine[1], 'already-applied'); + assert.strictEqual(byLine[14], 'moved'); +}); + +// Every failing file reaches the caller. The panel showed `error` alone and +// sent the rest to the terminal, where a contributor has no reason to look. +test('applyPatchToDir: a second conflicting file is reported, not swallowed (issue #282)', async (t) => { + const dir = await makeRepo(t, { [FOO]: FOO_BODY, [BAR]: BAR_BODY }); + const twoFilePatch = `${FOO_PATCH}diff --git a/${BAR} b/${BAR} +--- a/${BAR} ++++ b/${BAR} +@@ -1,3 +1,3 @@ + alpha +-beta ++BETA + gamma +`; + fs.writeFileSync(path.join(dir, FOO), 'ONE\nTWO\nTHREE\n'); + fs.writeFileSync(path.join(dir, BAR), 'ALPHA\nBETA\nGAMMA\n'); + + const res = await applyPatchToDir({ dir, patchText: twoFilePatch }); + + assert.strictEqual(res.failures.length, 2); + assert.strictEqual(res.conflicts.length, 2); + assert.deepStrictEqual(res.conflicts.map((c) => c.path), [FOO, BAR]); +}); + +// A file that is simply not there has no regions to break down, so it keeps the +// sentence it always had. The panel has to render both kinds side by side. +test('applyPatchToDir: a failure with no regions carries no conflict detail (issue #282)', async (t) => { + const dir = await makeRepo(t, { [FOO]: FOO_BODY }); + const missingFilePatch = FOO_PATCH.replace(new RegExp(FOO, 'g'), 'src/wp-includes/gone.php'); + + const res = await applyPatchToDir({ dir, patchText: missingFilePatch }); + + assert.strictEqual(res.ok, false); + assert.deepStrictEqual(res.conflicts, []); + assert.match(res.error, /not in this checkout/); +}); + +// --- diagnoseHunks directly, for what the integration path cannot reach --- +// +// The caps and fallbacks fire only on shapes no small fixture hits through +// applyPatchToDir: a hunk with more changed lines than the cap, more failing +// regions than carry detail, a hunk none of whose lines survive in the file. + +// A one-hunk patch against `original`, parsed the way applyPatchToDir would. +function parsedFile(patchText) { + const parsed = parsePatchFiles(patchText); + assert.ok(parsed.ok, parsed.error); + return parsed.files[0]; +} + +test('diagnoseHunks: caps the lines one region carries and counts the rest (issue #282)', () => { + const before = Array.from({ length: 14 }, (_, i) => `alpha ${i}`).join('\n') + '\n'; + const after = Array.from({ length: 14 }, (_, i) => `beta ${i}`).join('\n') + '\n'; + const patch = JsDiff.createPatch('big.txt', before, after); + const file = parsedFile(`diff --git a/big.txt b/big.txt\n${patch.split('\n').slice(1).join('\n')}`); + + // A file the hunk cannot fit at all, so the one region fails. + const diagnosis = diagnoseHunks('something else entirely\n', file); + + assert.strictEqual(diagnosis.regions.length, 1); + assert.strictEqual(diagnosis.regions[0].lines.length, 10, 'REGION_LINE_LIMIT caps the carried lines'); + // 14 removed + 14 added = 28 changed lines; 10 carried, 18 counted. + assert.strictEqual(diagnosis.regions[0].more, 18); +}); + +test('diagnoseHunks: regions beyond the detail cap are located but carry no lines (issue #282)', () => { + // Five separated regions, all of which will fail. + const body = Array.from({ length: 41 }, (_, i) => `row ${i}`).join('\n') + '\n'; + const changed = body + .replace('row 2\n', 'ROW 2\n').replace('row 10\n', 'ROW 10\n') + .replace('row 18\n', 'ROW 18\n').replace('row 26\n', 'ROW 26\n') + .replace('row 34\n', 'ROW 34\n'); + const patch = JsDiff.createPatch('rows.txt', body, changed, '', '', { context: 2 }); + const file = parsedFile(`diff --git a/rows.txt b/rows.txt\n${patch.split('\n').slice(1).join('\n')}`); + + const diagnosis = diagnoseHunks('unrelated\n', file); + + assert.strictEqual(diagnosis.total, 5); + assert.strictEqual(diagnosis.regions.length, 5); + const detailed = diagnosis.regions.filter((r) => Array.isArray(r.lines)); + assert.strictEqual(detailed.length, 3, 'REGION_DETAIL_LIMIT caps which regions carry lines'); + assert.ok(diagnosis.regions.slice(3).every((r) => r.lines === undefined)); + // Every region still has an anchor, even past the detail cap. + assert.ok(diagnosis.regions.every((r) => typeof r.anchor === 'string' && r.anchor)); +}); + +test('diagnoseHunks: a hunk with nothing left in the file still offers its best anchor (issue #282)', () => { + const file = parsedFile([ + 'diff --git a/gone.txt b/gone.txt', + '--- a/gone.txt', + '+++ b/gone.txt', + '@@ -1,3 +1,3 @@', + ' context line', + '-old line', + '+new line', + ' other context', + '' + ].join('\n')); + + const diagnosis = diagnoseHunks('completely different file\n', file); + + // Nothing from the hunk survives in the file, so the preference order alone + // decides: for a moved region, the first `-` line. + assert.strictEqual(diagnosis.regions[0].anchor, 'old line'); +}); + +test('diagnoseHunks: overlapping hunks that each pass alone yield null, not zero conflicts (issue #282)', () => { + // Both hunks fit the file individually (their contexts are present), but the + // whole patch fails because the first hunk's insertion shifts the second's. + // diagnoseHunks must decline to explain rather than claim nothing failed. + const body = 'one\ntwo\nthree\nfour\nfive\nsix\nseven\n'; + const file = parsedFile([ + 'diff --git a/f.txt b/f.txt', + '--- a/f.txt', + '+++ b/f.txt', + '@@ -1,3 +1,3 @@', + ' one', + '-two', + '+TWO', + ' three', + '' + ].join('\n')); + + // Sanity: the single hunk applies, so per-hunk diagnosis finds no failures. + assert.strictEqual(diagnoseHunks(body, file), null); +}); From 51877974f482024728250e3e8bbcb5c99d394911 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 12 Aug 2026 09:43:42 +0200 Subject: [PATCH 06/53] Show a linked ticket's own facts, read off the page the app already opens (#293) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why A linked ticket shows its number and the work attached to it, but nothing about itself. A ticket closed `wontfix` years ago reads the same as one filed last week — and the contributor finds out on Trac, after the time is spent. #292 makes the case; the gap surfaced while testing #291, where a ticket whose only pull request is closed had its explanation (the ticket's own status) one unread page away. ## What changes The ticket's own facts — summary, status, resolution, type, milestone, component, keywords, opened date — ride the scrape the attachments already do: same embedded Trac window, same one-time human-check, one extra read of the `#ticket` block (with the description cut before it crosses out of the page). No new mechanism, no second challenge, and `main.js`/`preload.js` are untouched — the handler already spreads the scrape result. A new pure module, `src/trac-ticket-info.cjs`, does the parsing — regex over the HTML like `trac-attachments.cjs`, proven against fixtures taken from **archived copies of real ticket pages** (one open with milestone/component/keywords, one closed `wontfix`). It also owns the one display decision: the status pill folds the resolution in, because "closed (fixed)" and "closed (wontfix)" are opposite instructions to a contributor. The card shows the summary under the ticket number, the status pill, type, age ("opened 18 months ago", absolute date in the tooltip), milestone, and the component and keywords as links — **Trac's own query URLs lifted from the page**, not rebuilt, opened in the browser like any other link. A "Read details from Trac" link sits next to "Open in Trac" and triggers the same scrape the attachments button uses. The details are read **automatically at the moment a ticket is linked** — that is when the facts matter most (a `wontfix` ticket should say so before work starts), and it is the one moment a human-check window has context, since the contributor just acted on this ticket. On mount or site re-activation nothing opens: there the #109 on-demand rule stands, and the "Read details from Trac" link is the way in. Deliberately not in this PR: any writing to Trac, and any freshness machinery — the facts can go stale exactly like the attachment list, and the same re-read answers both. ## How to test this Platforms: any. **Starting state:** 1. A Core site with no ticket linked. 2. Link a ticket with real properties — **62881** (the case from #292) or any `good-first-bug`. The details load on their own; pass the human-check if it appears. (On a site whose ticket was linked before this build, use **Read details from Trac** next to "Open in Trac" — nothing auto-opens on merely selecting a site.) **Expected:** under the ticket number: the ticket's title; a status pill (red for closed, with the resolution folded in; green otherwise); the type; "opened … ago" with the absolute date on hover; the milestone when there is one; component and keywords as links that open Trac queries in the browser. **What must not have happened:** - No second Trac window / second challenge beyond the one visit. - A ticket page that fails to parse shows nothing — no empty shell of "component:" labels; attachments still work. - Nothing was written anywhere; this is read-only. Tests: `test/trac-ticket-info.test.cjs`, table-driven over the two real-markup fixtures. ## Risks and limitations - The parse is regex over markup that Trac could change — same exposure as the attachments parse, contained in one module with fixtures, failing soft (no info shown, everything else intact). - Wording and layout are a draft for review. - Verified against archived real pages and the suite; not yet driven by hand against live Trac (needs a human to pass the check). ## Related Closes #292. Stacked on #291 (merge that first; this PR's base is its branch). Related: #109 (the embedded read this extends), #286. ---
Review outcome (required — see AGENTS.md) Deterministic layer: `npm test` 933/933, `npm run lint` clean, renderer bundle builds. The judgement pass for the stack will run once on the combined branch before merge — flagged here so it is a decision, not an omission.
--- src/renderer/index.jsx | 82 +++++++++++++++++ src/trac-ticket-info.cjs | 162 +++++++++++++++++++++++++++++++++ src/trac-view.js | 17 +++- test/trac-ticket-info.test.cjs | 57 ++++++++++++ 4 files changed, 317 insertions(+), 1 deletion(-) create mode 100644 src/trac-ticket-info.cjs create mode 100644 test/trac-ticket-info.test.cjs diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 381da30..d51d1d6 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -35,6 +35,7 @@ import { pickLatest } from '../latest-patch.cjs'; import { beginSetup, adoptSetupPath, discardSetup, rowPathAfterStatus } from './pending-setup.cjs'; import { parsePrRef } from '../patch-sources.cjs'; import { prStateBadge } from './pr-state.cjs'; +import { statusBadge } from '../trac-ticket-info.cjs'; import { prDateLabel } from './pr-date-label.cjs'; import { ticketUrl, attachUrl } from './trac-ticket.cjs'; import { adminUrl, adminerUrl } from './site-urls.cjs'; @@ -1758,6 +1759,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit return; } setTracTicket(res.ticket); + if (res.ticket) autoReadTicketRef.current = res.ticket; setTicketInput(''); setPatchSavedTo(''); if (metaPatchRef.current) metaPatchRef.current(sitePath, { tracTicket: res.ticket }); @@ -2862,6 +2864,10 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // attachments are noise here. The parser still returns them (pickLatest and // tests rely on the full list); the filtering is purely what's shown. const patchAttachments = (tracAttachments?.items || []).filter((a) => a.applyable); + // The ticket's own facts (#292), riding the same scrape as the attachments: + // one Trac visit, one challenge, both answers. + const tracInfo = tracAttachments?.ticket || null; + const tracInfoBadge = statusBadge(tracInfo); const tracAttachmentsRead = tracAttachments && (tracAttachments.status === 'ok' || tracAttachments.status === 'no-attachments'); // One pill shape, two uses: the "Latest" marker on a patch row and a linked @@ -2983,6 +2989,13 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // the list. Placed after loadTicketPatches is defined: an effect that named it // earlier in the body would read the const before its declaration ran. const loadedTicketRef = useRef(null); + // Set only by saveTicket, on a link the contributor just performed. The + // per-ticket effect below consumes it to auto-read the ticket's details: + // there, after the generation bump, so the scrape's result is not dropped as + // stale. A ref and not state — it must not survive a remount, or selecting + // an already-linked site would open a Trac window nobody asked for (#292). + const autoReadTicketRef = useRef(null); + const tracScrapeRef = useRef(null); useEffect(() => { if (!tracTicket) { setTicketPatches(null); @@ -3005,6 +3018,17 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit setTracAttachmentsLoading(false); loadedTicketRef.current = tracTicket; loadTicketPatches(); + // Auto-read the ticket's own facts when this ticket was just linked by + // hand (#292). Only then: the contributor just acted on this ticket, so a + // human-check window appearing has context. On mount or re-activation the + // ref is empty and nothing opens — details stay on demand, the #109 rule. + if (autoReadTicketRef.current === tracTicket) { + autoReadTicketRef.current = null; + // Through the ref, not the function: loadTracAttachments is declared + // below this effect and recreated per render — the same shape as + // metaPatchRef above. + if (tracScrapeRef.current) tracScrapeRef.current(); + } }, [tracTicket, isActive, loadTicketPatches]); // A Trac scrape can run up to 90s. Bump a generation on every ticket change so @@ -3064,6 +3088,8 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // Downloads an attachment through the challenge-passing session and hands it // to the same preview the PR and file paths use. + useEffect(() => { tracScrapeRef.current = loadTracAttachments; }); + const previewAttachment = async (att) => { clearApplyError(); setApplyNotice(''); @@ -4404,8 +4430,64 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit #{tracTicket} + {!tracInfo ? ( + + ) : null}
+ + {tracInfo ? ( +
+ {tracInfo.summary ? ( +
{tracInfo.summary}
+ ) : null} +
+ {tracInfoBadge ? ( + + {tracInfoBadge.label} + + ) : null} + {tracInfo.type ? ( + {tracInfo.type} + ) : null} + {tracInfo.opened ? ( + opened {tracInfo.opened.relative} + ) : null} + {tracInfo.milestone ? milestone: {tracInfo.milestone} : null} +
+ {tracInfo.component || tracInfo.keywords.length ? ( +
+ {tracInfo.component ? ( + + component:{' '} + {tracInfo.component.url ? ( + + ) : tracInfo.component.label} + + ) : null} + {tracInfo.keywords.length ? ( + + keywords:{' '} + {tracInfo.keywords.map((kw, i) => ( + + {i ? ' ' : ''} + {kw.url ? ( + + ) : kw.label} + + ))} + + ) : null} +
+ ) : null} +
+ ) : null} {changesNote && changesNote.placement === 'ticket' ? (
{changesNoteBody} diff --git a/src/trac-ticket-info.cjs b/src/trac-ticket-info.cjs new file mode 100644 index 0000000..c164f1d --- /dev/null +++ b/src/trac-ticket-info.cjs @@ -0,0 +1,162 @@ +'use strict'; + +/** + * Reading a ticket's own properties off its Trac page (issue #292). + * + * The app shows a linked ticket's number and the work attached to it, but + * nothing about the ticket itself — so a contributor can sink time into a + * ticket that was closed `wontfix` years ago and only find out on Trac. The + * facts that would have told them (status, resolution, type, milestone, + * component, keywords, when it was opened) all sit in the `#ticket` block of + * the page the attachments scrape already loads, so reading them costs no new + * mechanism and no second proof-of-work challenge. + * + * Parsing is regex over the HTML string, like trac-attachments.cjs and for the + * same reason: unit-testable under `node --test` with no browser, against + * fixtures taken from real ticket pages. Every field degrades to an empty + * value rather than failing the parse — a ticket with no milestone is normal, + * not an error. + * + * The component and keyword links are Trac's own query URLs, lifted from the + * page rather than rebuilt, so they stay right if Trac changes its query + * syntax. They open in the contributor's browser, which handles the + * proof-of-work like any other visit. + */ + +const TRAC_HOST = 'core.trac.wordpress.org'; + +/** + * The handful of entities Trac's property markup actually emits. + * + * @param {string} text + * @return {string} + */ +function decodeEntities(text) { + return text + .replace(/&/g, '&') + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/"/g, '"') + .replace(/"/g, '"') + .replace(/'/g, "'"); +} + +/** + * A page-relative Trac link made absolute, or null for anything that is not + * plainly a Trac path. The hrefs come out of scraped HTML, so they are treated + * as untrusted: only `/…` paths onto the known host survive. + * + * @param {string} href + * @return {string|null} + */ +function absoluteTracUrl(href) { + const decoded = decodeEntities(href || ''); + if (!decoded.startsWith('/')) return null; + return `https://${TRAC_HOST}${decoded}`; +} + +/** + * First capture of `re` against `html`, entity-decoded and trimmed, or ''. + * + * @param {string} html + * @param {RegExp} re + * @return {string} + */ +function capture(html, re) { + const m = html.match(re); + return m ? decodeEntities(m[1]).trim() : ''; +} + +/** + * One "Opened … ago" (or Closed, or Last modified) line from the date block. + * Trac renders these as a relative phrase whose title carries the absolute + * moment — both are kept, the relative for display, the absolute for the + * tooltip. + * + * @param {string} html + * @param {string} label + * @return {{relative: string, absolute: string}|null} + */ +function dateLine(html, label) { + const re = new RegExp( + `${label}\\s*]*title="See timeline at ([^"]+)"[^>]*>([^<]+)` + ); + const m = html.match(re); + if (!m) return null; + return { absolute: decodeEntities(m[1]).trim(), relative: decodeEntities(m[2]).trim() }; +} + +/** + * A `…` cell's links, as `{label, url}` rows. + * + * @param {string} html + * @param {string} header + * @return {Array<{label: string, url: ?string}>} + */ +function cellLinks(html, header) { + const cell = html.match(new RegExp(`]*>([\\s\\S]*?)`)); + if (!cell) return []; + const links = []; + const linkRe = /]*href="([^"]+)"[^>]*>([^<]+)<\/a>/g; + let m; + while ((m = linkRe.exec(cell[1])) !== null) { + const label = decodeEntities(m[2]).trim(); + if (label) links.push({ label, url: absoluteTracUrl(m[1]) }); + } + return links; +} + +/** + * The ticket's own facts, from the `#ticket` block's HTML. + * + * Returns null when the HTML holds no recognisable ticket — the caller treats + * that as "nothing to show", never as an error: the attachments alongside it + * are still good. + * + * @param {string} html + * @return {?Object} + */ +function parseTicketInfo(html) { + if (!html || !/trac-status|trac-ticket-title/.test(html)) return null; + + const summary = capture(html, /([^<]*)<\/span>/); + const status = capture(html, /\s*]*>([^<]+)<\/a>/); + const type = capture(html, /\s*]*>([^<]+)<\/a>/); + // Only present on closed tickets, rendered as "(fixed)" beside the status. + const resolution = capture(html, /\s*\(]*>([^<]+)<\/a>/); + + const [milestone] = cellLinks(html, 'h_milestone'); + const [component] = cellLinks(html, 'h_component'); + const keywords = cellLinks(html, 'h_keywords'); + + return { + summary, + status, + type, + resolution, + opened: dateLine(html, 'Opened'), + closed: dateLine(html, 'Closed'), + milestone: milestone ? milestone.label : '', + component: component || null, + keywords + }; +} + +/** + * The status pill's text and tone, as one decision. + * + * "closed (fixed)" and "closed (wontfix)" read as opposite instructions — go + * find another ticket vs read the discussion first — so the resolution rides + * inside the pill rather than being a separate fact. Tone is a name the panel + * maps to its palettes, not a colour, so this stays a pure module. + * + * @param {?Object} info From parseTicketInfo. + * @return {?{label: string, tone: 'closed'|'active'}} + */ +function statusBadge(info) { + if (!info || !info.status) return null; + const label = info.resolution ? `${info.status} (${info.resolution})` : info.status; + return { label, tone: info.status === 'closed' ? 'closed' : 'active' }; +} + +module.exports = { parseTicketInfo, statusBadge }; diff --git a/src/trac-view.js b/src/trac-view.js index 55b49b2..72d3696 100644 --- a/src/trac-view.js +++ b/src/trac-view.js @@ -20,6 +20,7 @@ const { BrowserWindow, session } = require('electron'); const { parseAttachments, secureTracUrl } = require('./trac-attachments.cjs'); +const { parseTicketInfo } = require('./trac-ticket-info.cjs'); const { httpGet } = require('./github-prs'); const TRAC_HOST = 'core.trac.wordpress.org'; @@ -113,7 +114,21 @@ async function openAndScrape(ticketId) { .executeJavaScript('(document.querySelector("#attachments") || {}).outerHTML || ""') .catch(() => ''); const items = parseAttachments(html, id); - return { status: items.length ? 'ok' : 'no-attachments', items }; + // The ticket's own facts ride the same visit (#292): the page is already + // loaded and the challenge already cleared, so reading them costs + // nothing. The description is cut before the HTML crosses out of the + // page — it is the bulk of the block and nothing in it is parsed. + const ticketHtml = await win.webContents + .executeJavaScript(`(() => { + const t = document.querySelector('#ticket'); + if (!t) return ''; + const copy = t.cloneNode(true); + for (const el of copy.querySelectorAll('.description, form, script')) el.remove(); + return copy.outerHTML; + })()`) + .catch(() => ''); + const ticket = parseTicketInfo(ticketHtml); + return { status: items.length ? 'ok' : 'no-attachments', items, ticket }; } catch (e) { return { status: 'error', items: [], error: String(e && e.message ? e.message : e) }; } finally { diff --git a/test/trac-ticket-info.test.cjs b/test/trac-ticket-info.test.cjs new file mode 100644 index 0000000..8b5d317 --- /dev/null +++ b/test/trac-ticket-info.test.cjs @@ -0,0 +1,57 @@ +'use strict'; + +// A ticket's own properties, parsed off its page (issue #292). +// +// The fixtures are the `#ticket` blocks of two real core Trac tickets, taken +// from archived copies of the live pages — #59234 (open, with milestone, +// component and keywords) and #40000 (closed wontfix) — so the regexes are +// proven against markup Trac actually emits, not markup remembered. + +const test = require('node:test'); +const assert = require('node:assert/strict'); + +const { parseTicketInfo, statusBadge } = require('../src/trac-ticket-info.cjs'); + +const OPEN_TICKET = '
\n
\n

Opened 18 months ago

\n

Last modified 12 months ago

\n
\n

\n #59234\n \n new\n \n \n enhancement\n \n

\n

\n Introduce a `wp_json_decode()` function, including validation when available\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Reported by:\n \n jrf\'s profile\n \n jrf\nOwned by:\n
\n Milestone:\n \n Future Release\n \n Priority:\n \n normal\n
\n Severity:\n \n normal\n \n Version:\n \n 6.4\n
\n Component:\n \n General\n \n Keywords:\n \n php83 needs-patch dev-feedback\n
\n Focuses:\n \n \n Cc:\n \n
\n
'; + +const CLOSED_TICKET = '
\n
\n

Opened 8 years ago

\n

Closed 8 years ago

\n

Last modified 6 years ago

\n
\n

\n #40000\n \n closed\n \n \n enhancement\n \n \n (wontfix)\n \n

\n

\n Alot of tickets continue to be created\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Reported by:\n \n jorbin\'s profile\n \n jorbin\nOwned by:\n \n alot\'s profile\n \n alot\n
\n Milestone:\n \n 4.8\n \n Priority:\n \n normal\n
\n Severity:\n \n normal\n \n Version:\n \n 0.71\n
\n Component:\n \n General\n \n Keywords:\n \n needs-more-alot has-alot\n
\n Focuses:\n \n ui, accessibility, javascript, docs, rtl, administration, template, multisite, rest-api, performance\n \n Cc:\n \n
\n
'; + +test('parseTicketInfo: an open ticket yields every fact the panel shows (issue #292)', () => { + const info = parseTicketInfo(OPEN_TICKET); + + assert.equal(info.summary, 'Introduce a `wp_json_decode()` function, including validation when available'); + assert.equal(info.status, 'new'); + assert.equal(info.type, 'enhancement'); + assert.equal(info.resolution, ''); + assert.equal(info.opened.relative, '18 months ago'); + assert.match(info.opened.absolute, /08\/28\/2023/); + assert.equal(info.closed, null); + assert.equal(info.milestone, 'Future Release'); + assert.equal(info.component.label, 'General'); + // The link is Trac's own query URL, made absolute — not one rebuilt here. + assert.equal(info.component.url, 'https://core.trac.wordpress.org/query?status=!closed&component=General'); + assert.deepEqual(info.keywords.map((k) => k.label), ['php83', 'needs-patch', 'dev-feedback']); + assert.equal(info.keywords[1].url, 'https://core.trac.wordpress.org/query?status=!closed&keywords=~needs-patch'); +}); + +test('parseTicketInfo: a closed ticket carries its resolution and closed date (issue #292)', () => { + const info = parseTicketInfo(CLOSED_TICKET); + + assert.equal(info.status, 'closed'); + assert.equal(info.resolution, 'wontfix'); + assert.ok(info.closed, 'the Closed line is parsed'); + assert.equal(info.closed.relative, '8 years ago'); +}); + +test('parseTicketInfo: junk yields null, not a shell of empty fields (issue #292)', () => { + assert.equal(parseTicketInfo(''), null); + assert.equal(parseTicketInfo('
Checking your browser
'), null); +}); + +// The pill: resolution rides inside it because "closed (fixed)" and "closed +// (wontfix)" are opposite instructions to a contributor. +test('statusBadge: folds the resolution into the label and names the tone (issue #292)', () => { + assert.deepEqual(statusBadge(parseTicketInfo(CLOSED_TICKET)), { label: 'closed (wontfix)', tone: 'closed' }); + assert.deepEqual(statusBadge(parseTicketInfo(OPEN_TICKET)), { label: 'new', tone: 'active' }); + assert.equal(statusBadge(null), null); +}); From 2ab4b37965d4b565df718659323bb29db1dfedf6 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 12 Aug 2026 10:28:53 +0200 Subject: [PATCH 07/53] Replace the manual install list with a platform-aware Download button (#295) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why The docs' install step handed visitors a link to the Releases page and a bulleted list explaining which of four similarly-named files was theirs — `.dmg` "whose name contains `arm64`", `.exe`, `.AppImage`. Every newcomer had to read release-asset naming before they could download anything, and at a Contributor Day that is the first thing standing between someone and the app. Suggested by Adam Zieliński: replace all of it with a Download button that just starts downloading the right file. No issue — it came from Slack. ## What changes A `` component in a new VitePress custom theme, used in the guide's **Install the app** section (replacing the per-OS list) and as the landing page's primary hero action. Every affordance labelled "Download" is now the smart one. That took three edits beyond the component: the hero's static Download action is gone and the button is injected in its place via the `home-hero-actions-after` slot (hero actions come from frontmatter and cannot host a component); "Get started" drops to the secondary style so the page has one primary action; and the nav item is renamed **Releases**, which is where it goes and what it is for. Two links called "Download" that behave differently is worse than none. The asset URL cannot be hardcoded. `artifactName` in `package.json` bakes the version into every filename, so there is no stable "latest .dmg" URL — the button resolves the asset at runtime from the GitHub releases API and matches on the OS/extension portion of the name. Two decisions worth surfacing: - **One request per visitor, not per page view.** The unauthenticated API allows 60 requests/hour *per IP*, and a Contributor Day room shares one address. A single response resolves all three platforms into `sessionStorage`, so a room of 30 people costs 30 requests instead of exhausting the budget and silently degrading for everyone who arrives after. - **The user-agent decision lives in `match-platform.mjs`, not in the component.** The docs package has no test harness, so a branch inside the `.vue` file is unreachable by anything — same reasoning as the renderer-module invariant in AGENTS.md §1. The module is imported by the root `node --test` suite. Deliberately not in this PR: nothing about how releases are built or named. The button reads the existing assets; `artifactName` is untouched. ## How to test this **Platforms:** any — it is a docs-site change, driven entirely in a browser. Nothing in the Electron app is touched. **Starting state:** the branch checked out, docs dev server running. 1. `cd docs && npm install && npm run dev`, then open `http://localhost:5173/contributor-toolkit/`. The hero shows a **Download for macOS (Apple Silicon) v0.1.2** button as its primary action (label matches whatever machine you are on), with "Get started" above it in the secondary style. 2. Hover or copy the button's link. It points at `.../releases/download/v0.1.2/wordpress-contributor-toolkit-0.1.2-mac-arm64.dmg` — the asset itself, not the Releases page. 3. Click it. The download starts directly; no intermediate page. Then click the nav's **Releases** and confirm that one still goes to the releases list — it is the route to `.deb`/`.snap` and older versions. 4. Open `/guide/getting-started`. The **Install the app** section shows the same button in place of the old numbered list, with "Intel Macs are not currently supported." beneath it on macOS. 5. DevTools → three-dot menu → **Network conditions** → uncheck "Use browser default" and paste a Windows user agent, then reload. The button reads **Download for Windows** and links to the `.exe`. Repeat with a Linux UA for the `.AppImage`. 6. Same again with an iPhone UA (`Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) ...`). The button reads **Download from the Releases page** and links there — an iPhone must not be offered a `.dmg`. 7. DevTools → Network → **Block request URL** on `api.github.com`, then reload with any UA. The button falls back to the Releases-page link. Same with the network offline. 8. With DevTools' Network tab open and `sessionStorage` empty, load the landing page and then navigate to the guide. Exactly **one** request to `api.github.com` across both, and the second page's button still carries the direct asset URL. 9. Narrow the window below 960px and reload. The button stays aligned with the hero text and the "Get started" action above it, rather than centring on its own. **What must not have happened:** - No link labelled "Download" may point at the Releases page. That was the state this PR first landed in — the button sat below the feature cards while the hero action and nav item, both called "Download", still sent people to the file list — and it is the thing to re-check if the hero is ever touched. The only remaining Releases links are the nav's **Releases** and the "All platforms and previous versions" line under the button, both of which say so. - The button must never be a dead link. Every failure path — undetectable platform, API down, rate limited, JavaScript disabled — has to land on the Releases page, which is what the docs did before. A button that silently does nothing is worse than the list it replaced. - The Releases-page link under the button must survive on every platform: it is the only remaining route to `.deb`/`.snap` and to older versions, and the old Linux bullet was the only place `.deb`/`.snap` were mentioned. - Reloading must not re-fetch. If step 8 shows two API calls, the session cache is not working and the room-shares-one-IP problem is back. - `npm run docs:build` must still pass — the component reads `navigator` and calls `fetch`, and doing either outside `onMounted` breaks SSR at build time rather than in the browser. ## Risks and limitations Review outcome: **3 [fix here] · 3 [follow-up] — all 6 fixed.** Details in the collapsed block below. - **iPadOS in desktop mode is indistinguishable from a Mac** and will still be offered a `.dmg`. Safari on iPad reports a `Macintosh` user agent by design; there is no reliable signal short of touch-point heuristics, which misfire on touchscreen laptops. An iPhone is handled correctly. - **The API dependency is real.** GitHub rate-limiting or an outage degrades the button to the old behaviour rather than breaking it, but the smart path does depend on a third-party call from the visitor's browser. The alternative — generating a static URL at release time — is noted below. - **Asset-name coupling.** The button matches release filenames. It is now loose on the arch token so an `x64` → `x86_64` rename cannot break it, but a change to the OS or extension portion of `artifactName` would silently drop that platform to the fallback with no error anywhere. `test/download-button-platform.test.cjs` pins the current names, so that test is the tripwire. - **Not tested by hand:** an actual rate-limit 403 from GitHub. Blocking `api.github.com` in DevTools exercises the same fallback branch (`response.ok` is false either way), but I could not stage 60 real requests to see the genuine response. ## Related Suggested by Adam Zieliński in Slack. No issue. ---
Design decisions and alternatives considered **Generating a static redirect at release time instead of calling the API.** The obvious alternative: have the release workflow write a small JSON file (or a set of stable redirect URLs) into the docs site, so the page needs no third-party call. It is strictly better on rate limits and privacy, and it is what I would build if this were load-bearing. Not done here because it couples the docs deploy to the release workflow — the docs would have to be rebuilt on every release, or the file fetched anyway — and the runtime call is a self-contained change to one component. Worth revisiting if the API dependency ever bites. **Leaving the hero action alone.** The first version of this PR did exactly that, on the reasoning that the static Download was a harmless always-works fallback and a layout override was disproportionate. It was wrong, and it was wrong in the way that shows up immediately: asked to try it, the first thing JuanMa clicked was the hero's "Download", then the nav's — the two most prominent Downloads on the page, both of which went to the file list this PR exists to remove. A fallback that outranks the real thing is not a fallback. Hence the `home-hero-actions-after` slot, which turned out to be a documented default-theme slot rather than the full layout override I had assumed. **Renaming the nav item rather than deleting it.** The releases list is still the only route to `.deb`/`.snap` and to older versions, so it earns a place; it just cannot be called "Download" while a smarter Download sits on the same page. **Keeping the per-OS list as a collapsed section.** Rejected: the button's own fallback link goes to the Releases page, which shows every asset with its name. Restating the naming scheme in prose is a second copy that drifts the moment a target is added.
Review outcome (required — see AGENTS.md) **3 [fix here] · 3 [follow-up] — all 6 fixed.** The judgement pass ran in a fresh context per `.claude/skills/self-review`. Deterministic layer: `npm run lint` clean, `npm test` 898/898 (894 before this PR, +4 new). [fix here]: 1. 🟡 **Cross-platform** — `/Mac/` matched iPhones. Every iOS user agent contains `like Mac OS X`, so an iPhone visitor was told "Download for macOS (Apple Silicon)" and handed a `.dmg`. Now matches `Macintosh`, with `iPhone|iPad|iPod` added to the mobile guard alongside Android. This was a real bug, not a hypothetical — the new test fails on the pre-review code. 2. 🟡 **Performance** — the API call fired on every page view with no caching, against a 60/hour/IP limit shared by a whole Contributor Day room. Now one response resolves all three platforms into `sessionStorage`. 3. 🔵 **Architecture** — the Intel-Mac caveat was gated on comparing against the user-visible label string, so a copy edit would have silently dropped the warning. Now gated on a non-display `id`. [follow-up] — all fixed here rather than deferred, since each was a one-liner in code the PR was already touching: 4. 🔵 **Cross-platform** — `-linux-x64.AppImage` was an exact match, and electron-builder maps `x64` → `x86_64` for AppImage when expanding `${arch}`. A rebuild could have renamed the asset out from under it with no error surfacing. Patterns are now loose on the arch token. 5. 🔵 **Security** — `asset.browser_download_url` went into `:href` with no scheme check. Now only assets under `https://github.com/` are accepted; anything else is skipped and the visitor gets the fallback. The threat is remote (an attacker who controls that field controls the binaries), but the repo's standard is that a URL crossing a trust boundary gets validated before something acts on it. 6. 🔵 **Tests** — the only branchy logic sat in a component in a package with no test harness. Extracted to `match-platform.mjs`; finding 1 is exactly what a table test over real user-agent strings catches.
Implementation notes Eight files, all docs-side except the test: - `docs/.vitepress/theme/index.js` — new. Extends the default theme to register the component globally and to install the Layout wrapper; there was no custom theme before this PR. - `docs/.vitepress/theme/Layout.vue` — new. Wraps the default layout for the single purpose of filling `home-hero-actions-after`. The button sets no alignment of its own so it inherits the hero's, which switches between left and centred by viewport and by whether a hero image is set — a hard-coded media query on the button got this wrong at 700px. - `docs/.vitepress/config.mjs` — nav "Download" → "Releases". - `docs/.vitepress/theme/DownloadButton.vue` — new. All `navigator`/`fetch` access is inside `onMounted`, so SSR renders the fallback state and `npm run docs:build` is the regression check for that. - `docs/.vitepress/theme/match-platform.mjs` — new. `matchPlatform( ua )` plus the `PLATFORMS` table. ESM because the browser loads it through Vite as-is; the CJS test imports it dynamically. - `docs/guide/getting-started.md`, `docs/index.md` — the two usages. - `test/download-button-platform.test.cjs` — new, 4 tests. Real user-agent strings rather than synthetic ones, since the iOS case only exists because a real iPhone UA says `like Mac OS X`. Also asserts the asset patterns against both the current Linux filename and the `x86_64` form from finding 4. Verified in Chromium via Playwright across spoofed macOS / Windows / Linux / Android / iPhone user agents, with `api.github.com` blocked, and with a request counter across two navigations to confirm the session cache holds at exactly one call.
Screenshots or recording Not attached — `gh` cannot upload images, and I would rather not paste an external host into a WordPress repo. Both surfaces are one dev-server command away (steps 1 and 4 above), and the visual change is small enough to describe: **Landing page hero** — under the tagline, "Get started" in the grey secondary style, and below it the brand-coloured "Download for macOS (Apple Silicon)" pill with the version in lighter text beside it, then two small grey lines: the Intel-Macs note and "All platforms and previous versions on the Releases page". The nav reads "Releases" where it read "Download". **Guide → Install the app** — the same button in place of the numbered list and its four per-OS bullets, followed by one sentence: "Download the latest build for your platform with the button above, then open the app." The "If macOS blocks the app" subsection below is untouched. Both were checked in light and dark theme; the button uses VitePress's own `--vp-button-brand-*` tokens, so it matches the hero's "Get started" button in both.
--------- Co-authored-by: Claude Fable 5 --- docs/.vitepress/config.mjs | 6 +- docs/.vitepress/theme/DownloadButton.vue | 167 +++++++++++++++++++++++ docs/.vitepress/theme/Layout.vue | 24 ++++ docs/.vitepress/theme/index.js | 14 ++ docs/.vitepress/theme/match-platform.mjs | 52 +++++++ docs/guide/getting-started.md | 8 +- docs/index.md | 7 +- test/download-button-platform.test.cjs | 86 ++++++++++++ 8 files changed, 354 insertions(+), 10 deletions(-) create mode 100644 docs/.vitepress/theme/DownloadButton.vue create mode 100644 docs/.vitepress/theme/Layout.vue create mode 100644 docs/.vitepress/theme/index.js create mode 100644 docs/.vitepress/theme/match-platform.mjs create mode 100644 test/download-button-platform.test.cjs diff --git a/docs/.vitepress/config.mjs b/docs/.vitepress/config.mjs index 51e2742..d05c74e 100644 --- a/docs/.vitepress/config.mjs +++ b/docs/.vitepress/config.mjs @@ -37,8 +37,12 @@ export default defineConfig( { themeConfig: { nav: [ { text: 'Guide', link: '/guide/getting-started' }, + // "Releases", not "Download": the platform-aware Download button is + // on the landing page and in the guide, and two links called + // "Download" that behave differently is the confusion this avoids. + // This one goes to the list of every asset and past version. { - text: 'Download', + text: 'Releases', link: 'https://github.com/WordPress/contributor-toolkit/releases/latest', }, ], diff --git a/docs/.vitepress/theme/DownloadButton.vue b/docs/.vitepress/theme/DownloadButton.vue new file mode 100644 index 0000000..8be5d67 --- /dev/null +++ b/docs/.vitepress/theme/DownloadButton.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/docs/.vitepress/theme/Layout.vue b/docs/.vitepress/theme/Layout.vue new file mode 100644 index 0000000..19252d2 --- /dev/null +++ b/docs/.vitepress/theme/Layout.vue @@ -0,0 +1,24 @@ + + + diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js new file mode 100644 index 0000000..b0a062a --- /dev/null +++ b/docs/.vitepress/theme/index.js @@ -0,0 +1,14 @@ +// The default theme, extended for : a Layout wrapper that +// puts it in the home hero, and a global registration so markdown pages (the +// install section of the guide) can use it too. +import DefaultTheme from 'vitepress/theme'; +import Layout from './Layout.vue'; +import DownloadButton from './DownloadButton.vue'; + +export default { + extends: DefaultTheme, + Layout, + enhanceApp( { app } ) { + app.component( 'DownloadButton', DownloadButton ); + }, +}; diff --git a/docs/.vitepress/theme/match-platform.mjs b/docs/.vitepress/theme/match-platform.mjs new file mode 100644 index 0000000..823261c --- /dev/null +++ b/docs/.vitepress/theme/match-platform.mjs @@ -0,0 +1,52 @@ +// The user-agent → platform decision behind , kept out of the +// component so the root `node --test` suite can reach it (the docs package has +// no test harness of its own). ESM rather than .cjs because the browser loads +// it as-is through Vite; the test imports it dynamically. +// +// `assetPattern` is matched against the release asset names produced by the +// artifactName pattern in the root package.json. The arch token is matched +// loosely on purpose: electron-builder maps `x64` to `x86_64` for some targets +// (AppImage among them), so an exact `-x64` match is one rebuild away from +// silently missing every Linux asset. macOS stays pinned to `arm64` — the app +// has no Intel build, and the label promises Apple Silicon. +export const PLATFORMS = [ + { + id: 'windows', + test: /Windows/, + assetPattern: /-win-[^.]+\.exe$/, + label: 'Windows', + }, + { + id: 'mac', + // "Macintosh", not "Mac": every iOS user agent contains "like Mac OS X", + // and an iPhone cannot open a .dmg. (iPadOS in desktop mode presents + // itself as a Mac and is genuinely indistinguishable.) + test: /Macintosh/, + assetPattern: /-mac-arm64\.dmg$/, + label: 'macOS (Apple Silicon)', + }, + { + id: 'linux', + test: /Linux|X11/, + assetPattern: /-linux-[^.]+\.AppImage$/, + label: 'Linux', + }, +]; + +/** + * Pick the download platform for a browser user-agent string, or null when + * there is no build for it (mobile, unknown OS) and the caller should fall + * back to the Releases page. + * + * @param {string} ua `navigator.userAgent`. + * @return {?{id: string, test: RegExp, assetPattern: RegExp, label: string}} + * The matched platform entry. + */ +export function matchPlatform( ua ) { + // Android UAs contain "Linux" and iOS UAs contain "like Mac OS X"; there + // is no build for either. + if ( /Android|iPhone|iPad|iPod/.test( ua ) ) { + return null; + } + return PLATFORMS.find( ( platform ) => platform.test.test( ua ) ) ?? null; +} diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index b7f77ac..c69a55e 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -12,11 +12,9 @@ No Git, no Node.js, no npm, no Docker needed. Everything is bundled inside the a ## Install the app -1. Download the latest packaged build for your platform from the [Releases page](https://github.com/WordPress/contributor-toolkit/releases/latest). Pick the file that matches your OS: - - **macOS on Apple Silicon:** the `.dmg` file whose name contains `arm64`. Intel Macs are not currently supported. - - **Windows:** the `.exe` installer. - - **Linux:** the `.AppImage`; `.deb` and `.snap` packages may also be available. -2. Open the app. + + +Download the latest build for your platform with the button above, then open the app. ### If macOS blocks the app diff --git a/docs/index.md b/docs/index.md index 4e0f1ac..7b61bf9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,12 +6,11 @@ hero: text: Contribute to WordPress core with zero prerequisites tagline: A desktop app that clones wordpress-develop, builds it, runs it, and turns your changes into a patch or pull request — no Git, Node, npm, or Docker required. actions: - - theme: brand + # Secondary on purpose: the brand-coloured action on this page is the + # Download button injected after this list (see .vitepress/theme/Layout.vue). + - theme: alt text: Get started link: /guide/getting-started - - theme: alt - text: Download - link: https://github.com/WordPress/contributor-toolkit/releases/latest features: - title: A full core environment in one click diff --git a/test/download-button-platform.test.cjs b/test/download-button-platform.test.cjs new file mode 100644 index 0000000..3c3a137 --- /dev/null +++ b/test/download-button-platform.test.cjs @@ -0,0 +1,86 @@ +// The user-agent → platform decision behind the docs site's . +// The module lives in docs/.vitepress/theme/ because the browser loads it, but +// the docs package has no test harness, so its test lives here in the root +// suite. ESM module, CJS suite: imported dynamically. +const { describe, it, before } = require( 'node:test' ); +const assert = require( 'node:assert' ); + +// Real user-agent strings, not synthetic ones — the iOS case exists precisely +// because every iPhone UA contains "like Mac OS X". +const UA = { + macChrome: + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36', + macSafari: + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15', + windows: + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36', + linuxX11: + 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36', + linuxFirefox: + 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0', + android: + 'Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Mobile Safari/537.36', + iphone: + 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1', + ipad: 'Mozilla/5.0 (iPad; CPU OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1', +}; + +describe( 'matchPlatform', () => { + let matchPlatform; + let PLATFORMS; + + before( async () => { + ( { matchPlatform, PLATFORMS } = await import( + '../docs/.vitepress/theme/match-platform.mjs' + ) ); + } ); + + it( 'maps each desktop OS to its platform', () => { + assert.strictEqual( matchPlatform( UA.macChrome ).id, 'mac' ); + assert.strictEqual( matchPlatform( UA.macSafari ).id, 'mac' ); + assert.strictEqual( matchPlatform( UA.windows ).id, 'windows' ); + assert.strictEqual( matchPlatform( UA.linuxX11 ).id, 'linux' ); + assert.strictEqual( matchPlatform( UA.linuxFirefox ).id, 'linux' ); + } ); + + it( 'returns null for mobile, which has no build', () => { + // Android UAs contain "Linux"… + assert.strictEqual( matchPlatform( UA.android ), null ); + // …and iOS UAs contain "like Mac OS X". A .dmg on an iPhone helps nobody. + assert.strictEqual( matchPlatform( UA.iphone ), null ); + assert.strictEqual( matchPlatform( UA.ipad ), null ); + } ); + + it( 'returns null for an unrecognised user agent', () => { + assert.strictEqual( matchPlatform( 'curl/8.6.0' ), null ); + } ); + + it( 'matches the published asset names, loose on the arch token', () => { + const names = { + windows: 'wordpress-contributor-toolkit-0.1.2-win-x64.exe', + mac: 'wordpress-contributor-toolkit-0.1.2-mac-arm64.dmg', + linux: 'wordpress-contributor-toolkit-0.1.2-linux-x64.AppImage', + // electron-builder maps x64 → x86_64 for AppImage when expanding + // ${arch}, so a rebuild can rename the Linux asset out from under + // an exact match without any error surfacing anywhere. + linuxRenamed: + 'wordpress-contributor-toolkit-0.2.0-linux-x86_64.AppImage', + }; + const byId = Object.fromEntries( PLATFORMS.map( ( p ) => [ p.id, p ] ) ); + assert.ok( byId.windows.assetPattern.test( names.windows ) ); + assert.ok( byId.mac.assetPattern.test( names.mac ) ); + assert.ok( byId.linux.assetPattern.test( names.linux ) ); + assert.ok( byId.linux.assetPattern.test( names.linuxRenamed ) ); + // No pattern matches another platform's asset. + for ( const platform of PLATFORMS ) { + for ( const [ id, name ] of Object.entries( names ) ) { + if ( id !== platform.id && ! id.startsWith( platform.id ) ) { + assert.ok( + ! platform.assetPattern.test( name ), + `${ platform.id } pattern must not match ${ name }` + ); + } + } + } + } ); +} ); From 5e046374f38d218ec1d1666e11ca01cb319a9ee9 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 12 Aug 2026 10:29:22 +0200 Subject: [PATCH 08/53] Bring the guide back in line with the app before 1.0 (#297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Twenty PRs landed on `trunk` between `v1.0.0-beta.1` and this release candidate, and several moved behaviour the guide describes. Four of the guide's claims had gone from incomplete to simply false: - **The build watcher is no longer tied to the dev server** (#247/#272) — `running-the-site.md` said it ran "alongside the server… while the server is up". - **A trunk update no longer needs the server stopped** (#262/#273) — the guide said the opposite. - **The setup checklist is no longer four clicks** (#246/#276) — install and build now start themselves once the clone finishes. - **There is a wp-admin link now** (#250) — the guide told you to type `/wp-admin/` onto the URL by hand. ## What changes Correcting those four, and documenting what came with them: the build watch's own control, dot and log tab; what a failed apply says now and why the framing differs for a pull request versus a loose patch file (#282); the ticket's own facts and the "Latest" pill's real ranking (#292, #281); **Discard all changes** rewinding to the ticket's base (#270); severity colour in the log panes (#280); and one short passage on the "Start here" cue and the completion toasts (#252, #253) — cross-cutting enough that repeating them per page would read worse than naming them once. ## Review Ran `/self-review` per `AGENTS.md`, dispatched to a fresh `Explore` subagent so the session that wrote the docs was not the one grading them. `npm run lint` / `npm test` don't apply — docs-only, no JS touched — so the review focused on the one dimension that does: **every behavioural claim verified against the actual source**, not assumed. It caught ten inaccuracies, five worth fixing here — including two pages I hadn't touched (`editors.md`, `creating-a-site.md`) that my changes to `running-the-site.md`/`setup-wizard.md` had left contradicting. All five are fixed in the second commit; the other five were softened as follow-up-scale wording tightenings, folded into the same commit since they were one-line each. ## Not in this PR Screenshots. `site-view.png`, `setup-wizard.png` and `trac-ticket-panel.png` now show a UI that has moved on (Build watch button, wp-admin link, ticket-facts card). Retaking them needs the shots harness against a running app; filing a follow-up issue rather than blocking this PR on it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5 (1M context) --- docs/guide/applying-patches.md | 27 ++++++++++++++++++++++++++- docs/guide/creating-a-site.md | 2 +- docs/guide/editors.md | 2 +- docs/guide/getting-started.md | 23 +++++++++++++---------- docs/guide/logs-and-debugging.md | 12 +++++++++++- docs/guide/running-the-site.md | 31 ++++++++++++++++++++++++++----- docs/guide/setup-wizard.md | 23 +++++++++++++++-------- docs/guide/submitting-changes.md | 8 ++++++++ docs/guide/trac-tickets.md | 22 +++++++++++++++++++--- docs/guide/trunk-updates.md | 8 +++++--- 10 files changed, 125 insertions(+), 33 deletions(-) diff --git a/docs/guide/applying-patches.md b/docs/guide/applying-patches.md index 8562a63..57b56dc 100644 --- a/docs/guide/applying-patches.md +++ b/docs/guide/applying-patches.md @@ -27,7 +27,32 @@ Click **Apply and rebuild** to go ahead, or **Cancel** to back out. The panel shows each step as it runs: applying the patch, installing dependencies if needed, and rebuilding. When it finishes, the panel reports what is applied — the patch's name, how many files it changed, and when. -If a step fails, the error says what went wrong and the checkout was not changed. +If the [build watch](running-the-site#the-build-watch) is running and the patch does not move `package-lock.json`, there is no build step: the patch is applied and left for the watch to compile, and the checklist says so. A patch that does move the lockfile has to install and build, so it pauses the watch for the duration and resumes it after — the dev server stays up throughout. + +## When a patch will not apply + +The apply is all-or-nothing. If anything fails, nothing is written to your checkout — but the panel now tells you *how much* failed, because one region of twenty missing and all twenty missing are opposite decisions for you. + +The headline is a count, not an adjective: *4 of this patch's 20 changes across 3 files no longer fit — the other 16 do.* When every change is already in your checkout — which is what a patch that has since been committed to core looks like — it says that instead, rather than reporting the patch as dead. + +### For a patch file or a Trac attachment + +You get the full breakdown, because you are the only one who can rescue it. Each file lists its failing regions, and each region says **why**: + +- **the code around it has changed** — the patch was written against an older trunk and the lines it expected have moved. +- **looks like it is already in your checkout** — that change is present. The app tells the two apart by testing whether the region's reverse fits. + +Every region carries an **anchor line taken from your own file** to search for. A hunk's line numbers are coordinates in the file as its author had it, so on an old patch they miss by exactly the drift that made it fail; a line you can search for does not. The first few regions of each file also show the lines the patch wanted to add and remove — enough to recognise the change without turning the panel into the diff itself. + +### For a pull request + +The regions belong to whoever updates the pull request, and that is its author, not you. So the notice names the situation and its scale — *this pull request was written against an older trunk and no longer fits it: 4 of its 20 changes, in 3 files, would need rework* — without the line-level detail, and points at the one act that is genuinely yours: telling the author. Leaving a comment asking for a rebase is a real contribution. + +A **closed** pull request is read differently, because on `wordpress-develop` "closed" is also what landing looks like — core commits go through SVN and the pull request is closed, never merged. If all its changes read back as already in trunk, the panel says it was likely committed to core and there is nothing left to apply. Otherwise it says nobody is coming back to update it, and offers **See why it was closed**. + +### The way out + +When the ticket has other patches on it — another pull request, another attachment — the panel offers them. It only does so when there is genuinely one to try: a way out that lands you back at the same dead end costs a click to discover. ## Applied patches belong to a ticket diff --git a/docs/guide/creating-a-site.md b/docs/guide/creating-a-site.md index 8b6ab7e..ac20868 100644 --- a/docs/guide/creating-a-site.md +++ b/docs/guide/creating-a-site.md @@ -25,7 +25,7 @@ The app clones the `wordpress-develop` repository from GitHub. Git is bundled wi While the clone runs, the site view shows a **Setting up new site…** card with the current phase and a terminal panel streaming progress output. The clone downloads the full repository, so expect it to take several minutes depending on your connection. -The clone is the first step of the [initial setup checklist](./setup-wizard); the remaining steps (installing dependencies, building, starting the dev server) stay locked until it finishes, then you drive them yourself. +The clone is the first step of the [initial setup checklist](./setup-wizard); the remaining steps stay locked until it finishes. Then the app carries on by itself — installing the dependencies and running the first build without waiting for you — so the only step left to click is starting the dev server. If setup fails, the half-created site is removed from the list — the row simply disappears. The reason goes to the application log rather than to a dialog, so **Help → Open App Log** is where diff --git a/docs/guide/editors.md b/docs/guide/editors.md index f135c14..a39e99b 100644 --- a/docs/guide/editors.md +++ b/docs/guide/editors.md @@ -37,4 +37,4 @@ If an application fails to open the directory — it was uninstalled, or the lau ## What to edit -WordPress source lives under `src/` in the site directory. While the dev server is running, a watcher rebuilds your edits into `build/` automatically — see [Running the site](./running-the-site). When your change is ready, see [Submitting changes](./submitting-changes). +WordPress source lives under `src/` in the site directory. While the [build watch](./running-the-site#the-build-watch) is running, your edits are rebuilt into `build/` as you save them. It runs on its own control, so it does not need the dev server up — though starting the server starts it too. When your change is ready, see [Submitting changes](./submitting-changes). diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index c69a55e..32b2635 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -31,18 +31,21 @@ The app is signed and notarized by Automattic, so macOS should open it without i The app is code-signed. The recursive flag (`-r`) tries to strip attributes from files inside the sealed bundle, which macOS rejects with permission errors. Removing the attribute from the top-level bundle is sufficient. ::: -## Your first contribution, in ten steps +## Your first contribution, in seven steps 1. Click **Create WordPress Core site** and choose a destination folder for your site. -2. Wait while the app downloads `wordpress-develop`. -3. Click **Install npm dependencies**. -4. Click **Run full build**. -5. Click **Start dev server**. -6. A browser window opens automatically. If not, open it by clicking the site URL. -7. Make changes to the code — [open the site in your editor](./editors) straight from the app. -8. Click **Review & submit changes** to see a diff of everything you changed. -9. Pick where the patch goes: [a pull request](./submit-github-pr), [a Trac ticket](./submit-trac), or [a file for your mentor](./submit-mentor). -10. That's it — you've contributed to WordPress core. +2. Wait. The app downloads `wordpress-develop`, then installs the dependencies and runs the first build on its own — go and get a coffee. See [The setup wizard](./setup-wizard). +3. Click **Start dev server**. +4. A browser window opens automatically. If not, open it by clicking the site URL — or the **wp-admin** link beside it, to go straight to the dashboard. +5. Make changes to the code — [open the site in your editor](./editors) straight from the app. +6. Click **Review & submit changes** to see a diff of everything you changed. +7. Pick where the patch goes: [a pull request](./submit-github-pr), [a Trac ticket](./submit-trac), or [a file for your mentor](./submit-mentor). + +That's it — you've contributed to WordPress core. + +::: tip You are not left guessing what to do next +When a site has something pending — a setup step to run, a warning to act on, work in flight — that one block is ringed in amber and scrolls itself into view, and is announced to screen readers as *Next step: …*. A site that is set up, running and clean has nothing pending, so nothing is ringed. And when an action finishes — a patch saved, trunk updated, a pull request opened — a brief notice says so out loud rather than leaving you to check. +::: ![A site ready for work: Start dev server, Review & submit changes, the Trac ticket panel and the patch panel](/screenshots/site-view.png) diff --git a/docs/guide/logs-and-debugging.md b/docs/guide/logs-and-debugging.md index 899bd69..47da0e7 100644 --- a/docs/guide/logs-and-debugging.md +++ b/docs/guide/logs-and-debugging.md @@ -1,13 +1,23 @@ # Logs and debugging -The **Logs** section of the site view has two tabs: +The **Logs** section of the site view has three tabs: - **Server** — the dev server's own output: everything the Playground server prints while starting and running. +- **Build watcher** — the [build watch](./running-the-site#the-build-watch)'s output. The tab title + carries its state while it is doing something: *Build watcher (watching)*, *(building)*, + *(paused)*, or *(exited 1)* when it stopped on its own. Stop it yourself and the title goes back + to a plain *Build watcher*. - **debug.log** — WordPress's PHP log for this site, streamed live while the dev server runs. Output from `npm install` and `npm run` commands appears in the [Terminal](./terminal), not here. +All three panes read in the terminal's own monospace font, so the columns of a PHP stack trace line +up, and each line is coloured by what it is: a fatal, a warning, a deprecation, a notice, a stack +trace frame, or the `Ready! WordPress is running on …` line you are actually waiting for. The +`[11-Aug-2026 …]` timestamp at the head of a `debug.log` line is dimmed, so 26 identical characters +per line recede instead of competing with the message. + ![The debug.log tab showing PHP notices](/screenshots/debug-log.png) ## The debug.log tab diff --git a/docs/guide/running-the-site.md b/docs/guide/running-the-site.md index 9fb6e5e..954107b 100644 --- a/docs/guide/running-the-site.md +++ b/docs/guide/running-the-site.md @@ -12,9 +12,9 @@ Click **Start dev server**. The button cycles through three states: - **Starting dev server...** — the server is booting. A "Dev server is starting…" line below the button shows the elapsed time. - **Stop dev server** — the server is up. The button shows a red dot; clicking it stops the server. -When the server is ready, its URL appears below the button, for example `http://127.0.0.1:/`. Click it to open the site in your default browser. +When the server is ready, its URL appears below the button, for example `http://127.0.0.1:/`, with a **wp-admin** link beside it. Click either to open the site in your default browser. -The button is disabled while a trunk update is running, and a trunk update is blocked while the server runs — the two would fight over the same files. +The button is disabled while a trunk update is running. The reverse is no longer true: an update can run with the server up, because it pauses the build watch for the rebuild and leaves the server serving — see [Applying patches and PRs](./applying-patches) and [Staying up to date with trunk](./trunk-updates). ## Logging in @@ -23,7 +23,7 @@ Every site uses the same credentials, shown next to the URL: - Username: `admin` - Password: `password` -Append `/wp-admin/` to the site URL to reach the dashboard. +The **wp-admin** link next to the site URL opens the dashboard directly. It appears in both places the URL does: the [setup checklist](./setup-wizard) step and the site page. ## What the dev server actually runs @@ -31,10 +31,31 @@ The dev server is not a stub — it is WordPress Playground running your checkou - The app spawns the [Playground CLI](https://wordpress.github.io/wordpress-playground/) (`@wp-playground/cli`) in server mode, with your site's `build/` directory mounted as the WordPress root. PHP runs as WebAssembly inside the bundled Node.js runtime, so no PHP install is needed. - The database is **SQLite**, stored inside the Playground instance. This covers most core contribution work; if a ticket specifically needs MySQL behaviour, this environment cannot reproduce it. -- Alongside the server, the app runs the core build watcher, so edits under `src/` are rebuilt into `build/` while the server is up. A page reload then shows the change. - The server binds to the loopback interface only. It is reachable from your machine, not from the rest of your network. - Outgoing mail is captured locally instead of being sent — see [Mail](./mail). +## The build watch + +The build watcher compiles what you edit under `src/` into `build/`, which is what the server actually serves. It has its own **Start build watch** button next to the dev-server button, and its own status dot: + +| Dot | State | +| --- | --- | +| Green | Watching. It stays green while it recompiles a save — that is its normal working state. | +| Amber | Either the one-off full build that runs before the watch can start on a site that has never been built, or the watch paused while another action owns the build directory. | +| Red | It exited on its own. Read the **Build watcher** log tab to find out why. | +| Grey | Stopped. | + +The watch and the server are independent in both directions: + +- Starting the dev server starts the watch first (building once if the site has no `build/` yet), then serves. +- Stopping the dev server leaves the watch running, so you can keep compile-on-save going without a server. +- The watch exiting never touches the server. +- You can start and stop the watch on its own, at any time, whether or not a server is up. + +While the watch is running, applying a patch or updating trunk uses it rather than fighting it. A patch that does not move `package-lock.json` is applied and left for the watch to recompile — the checklist shows the build step skipped and names the watch as doing it. One that does move the lockfile has to install and build, so it pauses the watch for the duration and resumes it after, with the PHP server up throughout. + +Its output goes to its own **Build watcher** log tab, not to the terminal, and it no longer holds the terminal's "running" lock — so the terminal and one-shot actions stay available while it runs. + ## Open Adminer While the server is running, an **Open Adminer** button appears next to **Stop dev server**. It opens Adminer, a database browser, against the site's SQLite database — useful for inspecting what a code change wrote. See [Database](./database) for details. @@ -43,4 +64,4 @@ The button disappears when the server stops, because there is no database to con ## Where the output goes -Everything the server and the watcher print streams into the site's terminal panel, which is also where startup errors land. See [Terminal](./terminal) and [Logs and debugging](./logs-and-debugging). +The server's output goes to the **Server** tab of the Logs section, and the watcher's to its own **Build watcher** tab; startup errors land there too. The terminal panel is for the commands you type. See [Logs and debugging](./logs-and-debugging) and [Terminal](./terminal). diff --git a/docs/guide/setup-wizard.md b/docs/guide/setup-wizard.md index 1b36a4d..9532718 100644 --- a/docs/guide/setup-wizard.md +++ b/docs/guide/setup-wizard.md @@ -1,6 +1,6 @@ # The setup wizard -After [creating a site](./creating-a-site), its view shows the **Initial setup checklist**. Complete each step to prepare the site for development. The steps run in order — each one unlocks the next. +After [creating a site](./creating-a-site), its view shows the **Initial setup checklist**. It runs itself: when the clone finishes, the install and the build start on their own and run to the end, so a site you walked away from is ready to work on when you come back. The buttons are there for when something fails, or when you stopped the chain yourself. ![The Initial setup checklist showing four steps: download, install npm dependencies, run full build, and start dev server](/screenshots/setup-wizard.png) @@ -12,33 +12,40 @@ The clone of `wordpress-develop` that started when you created the site. It runs ### 2. Install npm dependencies -Click **Install npm dependencies** to run `npm install` using the Node.js runtime bundled with the app — no system Node or npm is needed. If the install fails, the button changes to **Retry npm install**; a leftover `node_modules` folder from a failed run does not count as completed. +`npm install`, run on the Node.js runtime bundled with the app — no system Node or npm is needed. It starts by itself when the clone ends, and the terminal says so: *Setting this site up — running npm install…* -Once installed, the button reads **Dependencies installed** and stays disabled. If you later add a dependency to `package.json`, run `npm install` yourself in the [Terminal](./terminal). +If it fails, the chain stops there and the button changes to **Retry npm install**; a leftover `node_modules` folder from a failed run does not count as completed. Once installed, the button reads **Dependencies installed** and stays disabled. If you later add a dependency to `package.json`, run `npm install` yourself in the [Terminal](./terminal). ### 3. Run full build -Click **Run full build** to compile WordPress core and generate the `dist` files the dev server serves. This is the longest step after the clone. +Compiles WordPress core and generates the files the dev server serves. This is the longest step after the clone, and it follows the install without asking. -You only run it manually once: [trunk updates](./trunk-updates) and [applied patches](./applying-patches) rebuild on their own. If you edit files in `src/` by hand, run `npm run build` in the Terminal so the site picks them up. +You never run it manually unless something failed: [trunk updates](./trunk-updates) and [applied patches](./applying-patches) rebuild on their own, and while the [build watch](./running-the-site#the-build-watch) is running your own edits under `src/` are compiled as you save them. ### 4. Start dev server & finish wizard -Click **Start dev server and finish the wizard** to launch the WordPress dev server for the first time. This completes the checklist and permanently replaces it with the compact action bar described below. The server URL appears next to the button once it is up — see [Running the site](./running-the-site). +Click **Start dev server and finish the wizard** to launch the WordPress dev server for the first time. This completes the checklist and permanently replaces it with the compact action bar described below. The server URL, and a **wp-admin** link beside it, appear next to the button once it is up — see [Running the site](./running-the-site). + +## Stopping the chain + +Press **Ctrl+C** in the [Terminal](./terminal) to stop setup, including a running `npm install`. The terminal says where you stand — *Setup stopped. The remaining steps are in the checklist above — run them whenever you are ready* — and the checklist buttons take over from there. The chain names its other endings too: setup complete, the install failed, or the build failed with dependencies already installed. ## Step states Each step carries a state label: - **Completed** — done, marked with a green check. -- **In progress** — the step to do next; its button is enabled. +- **In progress** — this step is running right now. +- **Ready** — the next step to do, waiting on you rather than working. The distinction matters: a step that said "In progress" while nothing was installing invited you to wait instead of to click. - **Pending** — ready but waiting for you to reach it. - **Locked** — its prerequisites are not met yet; the button is disabled. +The step to act on is also ringed in amber and scrolls itself into view, and is announced to screen readers as *Next step: …*. The ring carries no label of its own — the step's own status text names it. It moves when the step it points at is done, not on a timer. + Steps also lock temporarily while a [trunk update](./trunk-updates) is running, since the update owns the working tree during that time. ## Skipping the wizard -Below the checklist is a **Skip initialization wizard** link. Clicking it hides the checklist for this site, for good, and shows the compact action bar instead: the dev server start/stop button, **Review & submit changes**, and — while the server is running — **Open Adminer**. +Below the checklist is a **Skip initialization wizard** link. Clicking it hides the checklist for this site, for good, and shows the compact action bar instead: the dev server start/stop button, the [build watch](./running-the-site#the-build-watch) button, **Review & submit changes**, and — while the server is running — **Open Adminer**. Skipping does not run any of the steps for you. If the dependencies were never installed or the build never ran, the dev server will not have anything to serve, so only skip on a site you know is already set up (for example, a `wordpress-develop` checkout you prepared outside the app). For everything else, finishing step 4 gets you to the same action bar with the work actually done. diff --git a/docs/guide/submitting-changes.md b/docs/guide/submitting-changes.md index c9a18a0..da2a365 100644 --- a/docs/guide/submitting-changes.md +++ b/docs/guide/submitting-changes.md @@ -15,6 +15,14 @@ Two buttons sit above the diff: If there are no changes to send, the screen says so. If the site's WordPress code is old, a warning says the patch may not apply on Trac and suggests updating to the latest trunk first — see [Staying up to date with trunk](trunk-updates). +## Discarding it all + +Next to the heading is **Discard all changes**. It asks first — *Discard all local changes? This cannot be undone* — and then throws away exactly what the diff above it shows, which on a ticket means the whole of that ticket's work: your uncommitted edits *and* anything parked in a commit the last time you switched away from it. + +The ticket itself survives. Its branch stays, the link stays, and you carry on working on it from a clean base. Throwing the ticket's work away along with its branch is a different gesture — [Delete this ticket's work](ticket-branches#deleting-a-ticket-s-work), on the tickets card. + +The button is unavailable while an install, a build or a [trunk update](trunk-updates) is running, or while the dev server is up, since all of them are holding the files it would rewind. + ## What a patch can and cannot carry The patch carries files you added, files you edited, and files you deleted. A deletion is written the way `git apply` and `patch` expect one, so a reviewer applying your patch really does lose the file. diff --git a/docs/guide/trac-tickets.md b/docs/guide/trac-tickets.md index 7c0bd97..046a3e2 100644 --- a/docs/guide/trac-tickets.md +++ b/docs/guide/trac-tickets.md @@ -17,11 +17,25 @@ Linking a ticket gives it its own branch inside the site, so the work you do for If you have edited anything before linking, the app asks what should happen to those edits rather than deciding for you. The four choices are described under [Edits you made before picking a ticket](./ticket-branches#edits-you-made-before-picking-a-ticket). -Once a ticket is linked, the panel shows its number with two actions: +Once a ticket is linked, the panel shows its number with these actions: - **Open in Trac** — opens the ticket in your browser. +- **Read details from Trac** — fills in what the ticket actually says, described below. It is only there until the details are loaded; once they are on screen it has nothing left to do and goes. - **Unlink** — removes the link and puts the site back on trunk. Nothing on Trac is affected, and nothing you did for the ticket is lost: the work stays attached to the ticket in this site, and the ticket moves to the **Your tickets on this site** card, ready to continue. +## What the ticket says + +A ticket number on its own tells you nothing about the ticket. One closed `wontfix` three years ago reads exactly like one filed last week — and you find out on Trac, after the afternoon is spent. + +Click **Read details from Trac** and the panel fills in the ticket's own facts, under its number: + +- Its **summary**. +- A **status pill** with the resolution folded in — `closed (wontfix)` rather than a bare `closed`, because "closed (fixed)" and "closed (wontfix)" are opposite instructions to a contributor. +- Its **type**, its **milestone**, and how long ago it was **opened** (the exact date is in the tooltip). +- Its **component** and **keywords**, as links. These use Trac's own query URLs, lifted from the page rather than rebuilt, and open in your browser like any other link. + +This reads the same embedded Trac window the attachment list uses, so it costs the same single human check — see [Trac attachments](#trac-attachments) below. Clearing that check once serves both. + ## Unsubmitted work When the linked ticket has changes you have not submitted anywhere, the panel says so — *You have 1 unsubmitted change for ticket #29798* — with links to **review and submit** or **discard your changes**. @@ -30,7 +44,7 @@ The count is the ticket's whole work, including everything parked when you last ## Linked pull requests -The panel searches GitHub for pull requests on `WordPress/wordpress-develop` that cite the ticket number, and lists them newest first. Each row shows the PR number (click it to open the PR in your browser), its title, its state, and when it was last updated. Click **Refresh** to search again. +The panel searches GitHub for pull requests on `WordPress/wordpress-develop` that cite the ticket number, and lists them newest first. Each row shows the PR number (click it to open the PR in your browser), its title, its state, and a date labelled with what it is: **last commit** when the newest commit's date could be resolved, **updated** only as a fallback when it could not. Click **Refresh** to search again. ![The Trac ticket panel with two linked pull requests, one carrying a red CLOSED pill and one a green OPEN pill](/screenshots/linked-pull-requests.png) @@ -55,7 +69,9 @@ Two things can go wrong: ## Which patch is newest -When a ticket has both pull requests and attachments, the panel marks the most recent one, and points out when the latest work is a file attachment rather than a pull request. Testing the newest patch first is usually what a ticket needs. +When a ticket has both pull requests and attachments, the panel marks the most recent one with a **Latest** pill, and points out when the latest work is a file attachment rather than a pull request. Testing the newest patch first is usually what a ticket needs. + +"Most recent" means the newest **commit**, not the last time the pull request was touched. GitHub's "updated" timestamp is bumped just as hard by a comment, a label change or a bot sweep as by a push — and an upstream force-push of trunk can restamp thousands of open pull requests inside one window, which is enough to crown a patch whose newest code is eighteen months old over one that still applies. ## Next steps diff --git a/docs/guide/trunk-updates.md b/docs/guide/trunk-updates.md index 374ebeb..1454d44 100644 --- a/docs/guide/trunk-updates.md +++ b/docs/guide/trunk-updates.md @@ -12,9 +12,11 @@ The header of each site shows which snapshot it currently holds — for example This option is always there — on every site, at any time, no matter how old or new the snapshot is and whether or not the app has flagged it as stale. If nothing has moved, you simply get "Already up to date." in the terminal. -Stop the dev server first. The **Update to latest trunk** button in the staleness notice is -disabled while the server, an install, or a build is running — but the ☰ menu entry is not, and -clicking it in that state simply does nothing, with no message to say why. +You no longer have to stop the dev server first. The update pauses the [build watch](./running-the-site#the-build-watch) for the rebuild and resumes it afterwards, and the PHP server keeps serving throughout. + +What it will not run alongside is another install or build. The **Update to latest trunk** button in +the staleness notice is disabled while one is running — but the ☰ menu entry is not, and clicking it +in that state simply does nothing, with no message to say why. ## What an update runs From eb750c9d3a0a1d572f2fc882ef958a182d9bed18 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 12 Aug 2026 10:29:31 +0200 Subject: [PATCH 09/53] Bump version to 1.0.0-rc.1 (#296) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why `v1.0.0-beta.1` shipped on 10 August. Twenty changes have landed on `trunk` since — the setup chain, the decoupled build watch, the failed-apply explanation, the ticket's own facts, the toasts. That is the release candidate for 1.0, so the version moves to `1.0.0-rc.1` before the tag is cut. ## What changes `package.json` and `package-lock.json`, and nothing else. Written by `npm version 1.0.0-rc.1 --no-git-tag-version` rather than by hand, so the lockfile's two copies of the string move with it. `git grep 1.0.0-beta` outside the lockfile returns nothing, so no doc, workflow or script carries the version. `electron-builder` derives the artefact names from `package.json`, so the assets become: - `wordpress-contributor-toolkit-1.0.0-rc.1-mac-arm64.dmg` - `wordpress-contributor-toolkit-1.0.0-rc.1-win-x64.exe` - `wordpress-contributor-toolkit-1.0.0-rc.1-linux-x86_64.AppImage` The `rc.1` shape (not `rc1`) keeps the same form as `beta.1`, so the filenames stay in one series. ## Scope The open Gutenberg stack (#255 → #261 → #264 → #269 → #283) is deliberately **not** in this release candidate. An RC stabilises what is there; a feature of that size belongs in the release after it. ## Review No behaviour changes, so the review standard has nothing to grade beyond the diff itself: two version strings, produced by npm, verified against `git grep`. Lint and unit tests run on this branch. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 (1M context) --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index edda7a2..1131ba0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "electron-setup-wordpress-core", - "version": "1.0.0-beta.1", + "version": "1.0.0-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "electron-setup-wordpress-core", - "version": "1.0.0-beta.1", + "version": "1.0.0-rc.1", "hasInstallScript": true, "license": "GPL-2.0-or-later", "dependencies": { diff --git a/package.json b/package.json index bceae78..df9e929 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "electron-setup-wordpress-core", "author": "WordPress.org", - "version": "1.0.0-beta.1", + "version": "1.0.0-rc.1", "private": true, "license": "GPL-2.0-or-later", "description": "Electron app to setup WordPress develop structure and run npm install", From 86d361ede97943fb26629d59e6df5f98fa711477 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 12 Aug 2026 13:32:55 +0200 Subject: [PATCH 10/53] Retake the docs screenshots for the 1.0 UI (#298) (#310) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #298. ## Why #297 fixed the guide's text for everything that shipped since `v1.0.0-beta.1`, but three pictures still showed the pre-1.0 app: no build-watch button, the old four-click checklist, a Trac panel with no ticket facts. Retaking them turned out to be blocked on the harness, not on the camera. Each of these states is one no seeded site can reach: - the **wp-admin** link renders only while a dev server is serving, and fixture sites are empty directories; - the **self-setup chain** arms on the clone-finished edge, so a site that was already in the registry when the app started never runs it; - a **ticket's own facts** come from a live visit to its Trac page and are held in memory, never written to the site's metadata. ## What changes `shots.cjs` moves `setup-wizard`, `site-view` and `trac-ticket-panel` to the live tier, next to `dev-server-running`, ordered so one site walks all four in sequence. The header comment records why each cannot be a fixture, so the next person does not move them back. `capture.cjs` grows `--user-data=` for the live tier, so a capture session runs against a documentation profile instead of the maintainer's own registry. The existing guard stays — it exists so a stray *exported* `TOOLKIT_USER_DATA_DIR` cannot silently redirect a run, and a path typed on the command line is a decision, not a leftover. The flag is refused on the fixture tier, which builds its own throwaway profile. The four images come from one real site the app created at `/private/tmp/wpct-docs/my-first-patch` — a real clone, install, build, dev server and Trac read. No username in any pixel. `dev-server-running.png` is new, and answers the half of #298 a single picture could not: `site-view.png` stays in the stopped state, so the guide's "shows a **Start dev server** button" prose still matches, and the wp-admin link gets its own shot in *Running the site*. Re-running the fixture tier also refreshed `site-menu`, `stale-site-notice` and `debug-log`: same pre-1.0 button row, same fix. Alt text follows the new pictures in `getting-started.md`, `running-the-site.md`, `setup-wizard.md` and `trac-tickets.md`, and the `docs.yml` comment now says four shots need a maintainer. ## Review The ticket in the panel is [#65856](https://core.trac.wordpress.org/ticket/65856), which has no keywords set, so that row of the facts card is absent — the card renders what the ticket has. The images were driven programmatically rather than clicked by hand, using the same launch config the harness uses (1200×800, DPR 1) with the folder picker answered through `dialog.showOpenDialog`. The live tier itself is unchanged as the documented, maintainer-at-the-keyboard path. ## Testing - `npm run lint`, `npm test` (937 pass), `cd docs && npm run build` — green. - `npm run shots` (fixture tier) still captures its eight shots; `--only=site-view` on the fixture tier now fails loudly with the known-slug list, and `--user-data` on the fixture tier is refused. - Every image is 1200×800 at DPR 1, and no path in any picture contains a username. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 (1M context) --- .github/workflows/docs.yml | 5 +- docs/guide/getting-started.md | 2 +- docs/guide/running-the-site.md | 4 +- docs/guide/setup-wizard.md | 2 +- docs/guide/trac-tickets.md | 2 +- docs/public/screenshots/debug-log.png | Bin 21055 -> 19142 bytes .../public/screenshots/dev-server-running.png | Bin 0 -> 97180 bytes docs/public/screenshots/setup-wizard.png | Bin 99279 -> 99751 bytes docs/public/screenshots/site-menu.png | Bin 93531 -> 102902 bytes docs/public/screenshots/site-view.png | Bin 87009 -> 100776 bytes docs/public/screenshots/stale-site-notice.png | Bin 89901 -> 101586 bytes docs/public/screenshots/trac-ticket-panel.png | Bin 28718 -> 49054 bytes scripts/screenshots/capture.cjs | 57 ++++++++++---- scripts/screenshots/shots.cjs | 70 ++++++++++-------- 14 files changed, 95 insertions(+), 47 deletions(-) create mode 100644 docs/public/screenshots/dev-server-running.png diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c944c70..3dd293a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -5,7 +5,10 @@ # # Screenshots are committed to the repo, not captured here. Capturing them needs the Electron # app running against a seeded site, which is minutes of flaky work on a runner; a maintainer -# runs `npm run shots` locally when the UI changes instead (see scripts/screenshots/). +# runs `npm run shots` locally when the UI changes instead (see scripts/screenshots/). Four of +# them show states no seeded site can reach — a running dev server, a site setting itself up, +# a ticket read from Trac — so they come from `npm run shots -- --tier=live` against a real +# site, with a maintainer at the keyboard. shots.cjs says which ones and why. # # The site base path is derived from the repository name at run time rather than hardcoded, # because a project Pages site lives under // and this repository is being renamed diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index 32b2635..17d09f3 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -47,7 +47,7 @@ That's it — you've contributed to WordPress core. When a site has something pending — a setup step to run, a warning to act on, work in flight — that one block is ringed in amber and scrolls itself into view, and is announced to screen readers as *Next step: …*. A site that is set up, running and clean has nothing pending, so nothing is ringed. And when an action finishes — a patch saved, trunk updated, a pull request opened — a brief notice says so out loud rather than leaving you to check. ::: -![A site ready for work: Start dev server, Review & submit changes, the Trac ticket panel and the patch panel](/screenshots/site-view.png) +![A site ready for work: Start dev server, Start build watch, Review & submit changes, the Trac ticket panel and the patch panel](/screenshots/site-view.png) The rest of this guide walks through each of these screens in detail, starting with [creating a site](./creating-a-site). diff --git a/docs/guide/running-the-site.md b/docs/guide/running-the-site.md index 954107b..37d4327 100644 --- a/docs/guide/running-the-site.md +++ b/docs/guide/running-the-site.md @@ -2,7 +2,7 @@ Once the [setup wizard](./setup-wizard) is complete, the site view shows a **Start dev server** button. This starts a local WordPress that serves the code in your site's `build/` directory, so you can see your changes running. -![The site view with Start dev server and Review & submit changes](/screenshots/site-view.png) +![The site view with Start dev server, Start build watch and Review & submit changes](/screenshots/site-view.png) ## Start and stop @@ -14,6 +14,8 @@ Click **Start dev server**. The button cycles through three states: When the server is ready, its URL appears below the button, for example `http://127.0.0.1:/`, with a **wp-admin** link beside it. Click either to open the site in your default browser. +![The site view with the dev server running: the site URL, the wp-admin link and the admin / password credentials below the buttons](/screenshots/dev-server-running.png) + The button is disabled while a trunk update is running. The reverse is no longer true: an update can run with the server up, because it pauses the build watch for the rebuild and leaves the server serving — see [Applying patches and PRs](./applying-patches) and [Staying up to date with trunk](./trunk-updates). ## Logging in diff --git a/docs/guide/setup-wizard.md b/docs/guide/setup-wizard.md index 9532718..02fdae4 100644 --- a/docs/guide/setup-wizard.md +++ b/docs/guide/setup-wizard.md @@ -2,7 +2,7 @@ After [creating a site](./creating-a-site), its view shows the **Initial setup checklist**. It runs itself: when the clone finishes, the install and the build start on their own and run to the end, so a site you walked away from is ready to work on when you come back. The buttons are there for when something fails, or when you stopped the chain yourself. -![The Initial setup checklist showing four steps: download, install npm dependencies, run full build, and start dev server](/screenshots/setup-wizard.png) +![The Initial setup checklist running itself: a banner reading "Setting this site up for you — step 2 of 3" with a Stop setup button, above the four steps — download completed, install in progress, build and start dev server locked](/screenshots/setup-wizard.png) ## The four steps diff --git a/docs/guide/trac-tickets.md b/docs/guide/trac-tickets.md index 046a3e2..53579c4 100644 --- a/docs/guide/trac-tickets.md +++ b/docs/guide/trac-tickets.md @@ -2,7 +2,7 @@ Every WordPress core change starts life on a [Trac](https://core.trac.wordpress.org/) ticket. The **Trac ticket** panel on the site view links your site to the ticket you are working on, and then shows you the work that already exists on it — pull requests on GitHub and patch files attached on Trac — so you can test it before adding your own. -![The Trac ticket panel, showing a linked ticket with its linked pull requests and Trac attachments](/screenshots/trac-ticket-panel.png) +![The Trac ticket panel, showing a linked ticket with its summary, status, type, milestone and component read from Trac, and the pull request that cites it](/screenshots/trac-ticket-panel.png) ## Link a ticket diff --git a/docs/public/screenshots/debug-log.png b/docs/public/screenshots/debug-log.png index fe66e95b4fa7fbb3420ca0a6beb2416ca5ffce22..82a1e363c3d484626d803c934ed93156f10d037d 100644 GIT binary patch literal 19142 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

A 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 B6JG!T literal 21055 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 Qwg3PC07*qoM6N<$g70$NJpcdz diff --git a/docs/public/screenshots/dev-server-running.png b/docs/public/screenshots/dev-server-running.png new file mode 100644 index 0000000000000000000000000000000000000000..2bfb26275550b8d61c96b24a37995e5ae7ee0330 GIT binary patch literal 97180 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 J@M3G(6_yUnhF_)bYes!ClHY-&`|*5MlS_z_T=V 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 OFw)}kVr3$q{r?ME=stJ= literal 99279 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%0ANIde#5>N*%y(lpYP6)X*yBi}$7IZ&zufTA~c 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

RC)a;iguMzuhak9@9|Dc$MPK^A^}&9OJ#b` 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

#l%**kAc#c36#>a8nuxJrpR}4MzTaZAS+HGM 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 TnbsBH&OJ#{S=djJ_n-a`8I9yq literal 93531 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 Q_zTQiDMiV0@%R4!7yqe7t^fc4 diff --git a/docs/public/screenshots/site-view.png b/docs/public/screenshots/site-view.png index 28786f8abdba5095005b4c95f2cd1c4e5752bc4e..4dc2d5aa806a5983638c689ac5c00559974d5f74 100644 GIT binary patch literal 100776 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 z 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%0Af^5MM~YEHgeM5F)yoGbA>A&uh(TycIG!oXaR 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 points it at a separate profile instead — a site list kept +// for documentation, so a capture session neither adds to nor photographs the +// sites the maintainer actually works on. // // playwright-core rather than playwright: it ships the same Electron driver // with no postinstall script and no browser download — the only browser needed @@ -24,6 +28,7 @@ // e2e/ is the Playwright `testDir`, and nothing here is run by `npm run test:e2e`. const fs = require('fs'); +const os = require('os'); const path = require('path'); const readline = require('readline'); const { _electron } = require('playwright-core'); @@ -40,18 +45,39 @@ const WINDOW = { width: 1200, height: 800 }; const ELECTRON_SWITCHES = ['--force-device-scale-factor=1']; function parseArgs(argv) { - const args = { tier: 'fixture', only: null }; + const args = { tier: 'fixture', only: null, userData: null }; for (const arg of argv.slice(2)) { if (arg.startsWith('--tier=')) args.tier = arg.slice('--tier='.length); else if (arg.startsWith('--only=')) args.only = arg.slice('--only='.length); + else if (arg.startsWith('--user-data=')) args.userData = arg.slice('--user-data='.length); else throw new Error(`Unknown argument: ${arg}`); } if (args.tier !== 'fixture' && args.tier !== 'live') { throw new Error(`--tier must be "fixture" or "live", got "${args.tier}"`); } + // The fixture tier builds its own throwaway profile per variant; letting a + // path in here would either be ignored or quietly overwrite a real one. + if (args.userData && args.tier !== 'live') { + throw new Error('--user-data only applies to --tier=live'); + } + if (args.userData) { + args.userData = path.resolve(expandHome(args.userData)); + fs.mkdirSync(args.userData, { recursive: true }); + } return args; } +/** + * `~` is the shell's, not Node's: an unexpanded one would become a literal directory. + * + * @param {string} p + */ +function expandHome(p) { + if (p === '~') return os.homedir(); + if (p.startsWith('~/') || p.startsWith(`~${path.sep}`)) return path.join(os.homedir(), p.slice(2)); + return p; +} + async function launchApp(env) { const app = await _electron.launch({ // From plain Node, require('electron') resolves to the binary's path — @@ -100,16 +126,21 @@ async function runFixtureTier(selected) { cleanFixtureSites(); } -async function runLiveTier(selected) { +async function runLiveTier(selected, userData) { // Explicitly undefined rather than omitted: launchApp spreads process.env, so a // TOOLKIT_USER_DATA_DIR exported while debugging the fixture tier would silently // point the "real sites" tier at fixture state, and the images would be wrong in - // a way only a careful look at the sidebar reveals. - const { app, page } = await launchApp({ TOOLKIT_USER_DATA_DIR: undefined }); + // a way only a careful look at the sidebar reveals. --user-data overrides it, + // because a path typed on the command line is a decision, not a leftover. + const { app, page } = await launchApp({ TOOLKIT_USER_DATA_DIR: userData || undefined }); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const ask = (q) => new Promise((resolve) => rl.question(q, resolve)); try { - console.log('\nLive tier: the app just opened against your real sites.'); + console.log( + userData + ? `\nLive tier: the app just opened against the site list in ${userData}.` + : '\nLive tier: the app just opened against your real sites.' + ); console.log('Screenshots will show real paths — review every image before committing.\n'); for (const shot of selected) { console.log(`\n${shot.slug}:\n ${shot.instructions}`); @@ -134,7 +165,7 @@ async function main() { fs.mkdirSync(outDir, { recursive: true }); console.log(`Capturing ${selected.length} ${args.tier}-tier screenshot(s) into ${path.relative(repoRoot, outDir)}/`); if (args.tier === 'fixture') await runFixtureTier(selected); - else await runLiveTier(selected); + else await runLiveTier(selected, args.userData); } main().catch((err) => { diff --git a/scripts/screenshots/shots.cjs b/scripts/screenshots/shots.cjs index be97e5e..2e3f88b 100644 --- a/scripts/screenshots/shots.cjs +++ b/scripts/screenshots/shots.cjs @@ -13,6 +13,20 @@ // wrong thing; // - target (optional): a locator for an element screenshot instead of the // whole window. Panels read better cropped; whole-window shots orient. +// +// Three shots that used to be fixture-tier are live-tier now, joining +// dev-server-running, and moving them back would photograph a screen the 1.0 +// app never shows (#298). Each depends on state a seeded settings.json cannot +// express: +// - dev-server-running: the site URL and the wp-admin link render only while +// a dev server is serving, and fixture sites are empty directories; +// - setup-wizard: the self-setup chain arms on the clone-finished edge, so a +// site that was already in the registry when the app started never runs it; +// - trac-ticket-panel, and site-view with it: a ticket's own facts come from +// a live visit to its Trac page and are held in memory, never written to +// the site's metadata. +// The price is that these four need a maintainer and a real site; the fixture +// tier still covers everything else. /** * Clicks a site in the sidebar and waits for its view to render. @@ -57,24 +71,6 @@ const shots = [ await page.getByRole('dialog').getByText('Site name').waitFor(); } }, - { - slug: 'setup-wizard', - tier: 'fixture', - variant: 'seeded', - prepare: async (page) => { - await selectSite(page, 'wordpress-develop'); - await page.getByText('Initial setup checklist').waitFor(); - } - }, - { - slug: 'site-view', - tier: 'fixture', - variant: 'seeded', - prepare: async (page) => { - await selectSite(page, 'my-first-patch'); - await page.getByRole('button', { name: 'Submit changes' }).waitFor(); - } - }, { slug: 'site-menu', tier: 'fixture', @@ -94,16 +90,6 @@ const shots = [ await page.getByText(/days old/).first().waitFor(); } }, - { - slug: 'trac-ticket-panel', - tier: 'fixture', - variant: 'seeded', - target: (page) => card(page, 'Trac ticket'), - prepare: async (page) => { - await selectSite(page, 'my-first-patch'); - await page.getByText('#60000').waitFor(); - } - }, { slug: 'apply-patch-panel', tier: 'fixture', @@ -148,11 +134,37 @@ const shots = [ // ---- Live tier: real site, maintainer present. `instructions` is what the // harness prints before pausing. + // + // The first four are in the order one site passes through them, so a single + // session — create the site, let it set itself up, run it, link a ticket — + // takes all four without ever going backwards. Every path in these images is + // published, so create the site somewhere with no username in it + // (/private/tmp/wpct-docs/my-first-patch is what the committed ones show), + // and name it to match the fixture-tier shots so the guide reads as one site. + { + slug: 'setup-wizard', + tier: 'live', + instructions: + 'Create a site and leave it alone. Shoot while the "Setting this site up for you — step N of 3" banner is up, with a step still to go, so the checklist shows a done step, a running one and a locked one.' + }, { slug: 'dev-server-running', tier: 'live', instructions: - 'Select an initialized site and click "Start dev server". Wait until the site URL and "Log in with admin / password" are visible.' + 'When the build has finished, click "Start dev server and finish the wizard". Wait until the site URL, the wp-admin link and "Log in with admin / password" are visible.' + }, + { + slug: 'site-view', + tier: 'live', + instructions: + 'Stop the dev server, then link an open ticket that a pull request cites (65856 in the committed shot) and click "Read details from Trac", clearing the human-check once. Shoot the whole window: Start dev server, Start build watch, Review & submit changes, and the ticket panel below them.' + }, + { + slug: 'trac-ticket-panel', + tier: 'live', + target: (page) => card(page, 'Trac ticket'), + instructions: + 'Same screen as site-view — the ticket facts read and the linked pull requests listed. This one is cropped to the Trac ticket card.' }, { slug: 'submit-changes-diff', From fe9b915b9e55da657363f0ebecb459c0860a1130 Mon Sep 17 00:00:00 2001 From: Amit Raj <77401999+amitraj2203@users.noreply.github.com> Date: Thu, 13 Aug 2026 12:52:14 +0530 Subject: [PATCH 11/53] Move Open Adminer onto the same line as the site links (#268) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Start/stop the dev server and Review & submit are things you *do* to a site. Adminer is a *place* in the running site, like the front end and wp-admin. Keeping it in the button row split three destinations across two parts of the page. ## What changes Adminer moves down beside the other two links, so the running site's destinations read as one row: > `http://127.0.0.1:9400/` · **wp-admin** · **Adminer** The credentials line stays underneath, where it now covers all three. The action row keeps only actions. Two parts are not just a move: - **Adminer keeps its own `running` guard.** The URL row renders on `serverUrl`; Adminer rendered on `running && serverUrl`. Rather than let it inherit the row's weaker condition, the link and its separator sit in a `running ?` fragment together. - **As an anchor it needs `preventDefault`.** A `Button` could not navigate the window; a bare `href` can, and nothing binds `will-navigate` on the main window — so a click would load Adminer *into the app* and replace the UI. The label is `Adminer`, not `Open Adminer` — it is a destination among destinations now, not a button. **Deliberately not in this PR:** the front-end link still shows the full URL rather than the word "Site" from the issue's sketch, since the port is worth being able to read and copy; and the middle-click gap under **Risks** is left for its own change. ## How to test this Platforms: any — this is renderer markup, with no path, spawn or line-ending behaviour in it. **Starting state:** an initialized site, dev server stopped. 1. Open the site and click **Start dev server**. Wait for the URL to appear. 2. Under the site name, one row reads ` · wp-admin · Adminer`, with `Log in with admin / password.` below it. 3. The button row above holds only **Stop dev server** and **Review & submit changes** — no Adminer button anywhere. 4. Click **Adminer** → the database browser opens in your **browser**, already logged into the site's SQLite database. 5. Click **wp-admin**, then the URL itself → both still open in the browser. 6. Click **Stop dev server** → all three links disappear together, and no `·` is left behind. **What must not have happened:** - **Adminer must not open inside the app window.** It was a `Button` before, which could not navigate; as a link it can, and that would replace the app UI with a web page and no way back. This is the one regression the new shape introduces. - **Adminer must not appear while the server is stopped**, and must not appear without wp-admin beside it. - `Open Adminer` must not still exist in the action row — a duplicate would be easy to miss if you only look at the new row. ## Risks and limitations Review found `2 [fix here] · 1 [follow-up]`; both `[fix here]` are fixed. Details in the collapsed block below. **Middle-clicking any of these three links opens it inside the app.** `preventDefault()` runs on `click`, and middle-click dispatches `auxclick`, so nothing intercepts it — and `createWindow()` binds neither `setWindowOpenHandler` nor `will-navigate`. Such a window inherits the parent's `webPreferences`, `preload.js` included, and the URL never reaches `external-url.js`. Not introduced here: ~20 links in this file share the pattern and #250 added three of them. The fix is one guard on the main window, not three `onAuxClick` handlers, so it belongs in its own change. **The `running` guard is not covered by a test.** Review established the state it guards against is unreachable — `setServerUrl` and `setRunning` only ever change together — so it is redundant rather than load-bearing. Kept because it costs nothing and states the intent. **The rendered row is not automated.** No DOM test infrastructure exists here, which is what #216 chose; the tests read `index.jsx` as source instead. Step 2 above is what actually proves the row. ## Related Fixes #249. Follow-up to #250, which built the row. ---
Design decisions and alternatives considered **Keeping `running` rather than inheriting `serverUrl`.** Simply dropping the Adminer link into the row would have widened its condition, since the row renders on `serverUrl` alone. Review then showed the two flags always change together, so the guard is provably redundant — but it is one word, it documents that Adminer needs a live server in a way `serverUrl` does not, and removing it would mean re-deriving that argument the next time someone reads the row. Left in. **A link, not a small button in the row.** A button among links would keep the widget and lose the point of the issue: these three are destinations and should look alike. It also drops "Open" from the label, which only made sense while it was a button. **Not renaming the URL link to "Site".** The issue sketches the row as **Site · wp-admin · Adminer**. Showing the literal URL keeps the port visible and copyable, which is worth more than the symmetry — contributors paste it into other tools. **Pinning placement by position, not by parsing.** The test asserts the Adminer link falls between the site page's wp-admin link and the credentials line. Parsing the JSX would be sturdier but needs a parser the suite does not have; a position check is what the existing source-assertion tests in this repo already do.
Review outcome (required — see AGENTS.md) `2 [fix here] · 1 [follow-up]` — both `[fix here]` fixed, follow-up deferred with reason. Ran per `.github/instructions/code-review.instructions.md`, with the judgement pass in a fresh context rather than the session that wrote the change. Lint clean; docs site builds; 781 tests pass on both system Node and Electron's Node. **Fixed — 🟡 docs: three guide pages described a UI that no longer exists.** `running-the-site.md` and `database.md` both stated an **Open Adminer** button appears in the action row / next to the URL, and `setup-wizard.md` listed it as the action bar's third item. The widget and its name are both gone. Screenshots were checked and are unaffected — the row only renders while the server runs, `site-view.png` shows it stopped, and the `dev-server-running` live shot has never been captured — but prose is not covered by that. Also dropped `running-the-site.md`'s "Append `/wp-admin/` to the site URL", stale since #250. **Fixed — 🔵 tests: placement was unpinned.** The four Adminer assertions covered the widget change and the URL derivation, but all four still passed with the anchor rendered back inside the action-button row — the exact state #249 exists to move away from. Verified by mutation, then fixed by anchoring the link between the site page's wp-admin link and the credentials line. **Deferred — 🟡 security: middle-click is not intercepted.** Described under **Risks and limitations**. Pre-existing pattern shared by ~20 links in this file; the fix belongs on the main window, not on these three anchors. Verified and not findings: the `running` gate cannot produce a dangling separator or a dead link, since `setServerUrl`/`setRunning` only change together and the separator shares a fragment with the link; nothing of value was lost with the button (it carried no `disabled`, `title` or `isBusy`, and unlike its neighbours was not gated on `isUpdating`); no new decision landed inline in `index.jsx` that §1 wants in a module. The source assertions were mutation-tested rather than assumed — 8 mutations, each assertion isolated: | Mutation | Result | | --- | --- | | Adminer link loses `preventDefault` | caught | | label reverts to `Open Adminer` | caught | | Adminer href hardcoded | caught | | Adminer link deleted | caught | | Adminer link duplicated | caught | | button re-added while keeping the link | caught | | anchor moved back into the action-button row | **passed before this review; now caught** | | label kept but href points at `adminUrl` | caught, but by the wp-admin assertion rather than an Adminer one — fails safe, though the message points at the wrong link |
Implementation notes Four commits: the move, its tests, the guide update, then the placement assertion the review asked for. `604bb31` does not pass on its own — it changes `index.jsx` while the assertion inherited from #250 still expects one `adminerUrl(` call. Splitting these two files cannot avoid that in either order, since each half contradicts the other's expectations. Head is green; kept split for readability rather than squashed. Both URLs still come from `src/renderer/site-urls.cjs` (added in #250) — this change moves a link and swaps a widget, and adds no URL logic. That module's docstring still refers to the "Open Adminer button" in the present tense; left alone to keep this diff to the move, but worth a sweep later.
Screenshots or recording Starting the dev server, the row it produces, each of the three links opening in the browser, and all three disappearing together when the server stops. https://github.com/user-attachments/assets/c9bef140-727d-4dfd-abe8-b6f8d0227449
--- docs/guide/database.md | 12 +++++----- docs/guide/running-the-site.md | 6 ++--- docs/guide/setup-wizard.md | 2 +- src/renderer/index.jsx | 15 +++++------- test/site-urls.test.cjs | 42 ++++++++++++++++++++++++++++++++-- 5 files changed, 56 insertions(+), 21 deletions(-) diff --git a/docs/guide/database.md b/docs/guide/database.md index ef9e016..6795d1d 100644 --- a/docs/guide/database.md +++ b/docs/guide/database.md @@ -3,18 +3,18 @@ The dev server runs WordPress on SQLite, and the app bundles [Adminer](https://www.adminer.org/) so you can look inside that database from your browser. -## Open Adminer +## Opening Adminer -While the dev server is running, an **Open Adminer** button appears next to the server URL in the -site view. Clicking it opens Adminer in your browser, already logged into the site's SQLite -database — no credentials to enter. From there you can browse tables, inspect rows, and run SQL, -the same way you would against a MySQL-backed install. +While the dev server is running, a **DB inspect (Adminer)** link appears beside the server URL in +the site view, after **wp-admin**. Clicking it opens Adminer in your browser, already logged into the site's +SQLite database — no credentials to enter. From there you can browse tables, inspect rows, and run +SQL, the same way you would against a MySQL-backed install. The database file itself lives inside the Playground environment at `/wordpress/wp-content/database/.ht.sqlite`. It is not a file you can open directly on disk; go through Adminer. -Adminer is only reachable while the dev server runs — the button disappears when the server +Adminer is only reachable while the dev server runs — the link disappears when the server stops, and so does the page it opened. ## Is SQLite enough for core development? diff --git a/docs/guide/running-the-site.md b/docs/guide/running-the-site.md index 37d4327..879600b 100644 --- a/docs/guide/running-the-site.md +++ b/docs/guide/running-the-site.md @@ -58,11 +58,11 @@ While the watch is running, applying a patch or updating trunk uses it rather th Its output goes to its own **Build watcher** log tab, not to the terminal, and it no longer holds the terminal's "running" lock — so the terminal and one-shot actions stay available while it runs. -## Open Adminer +## DB inspect (Adminer) -While the server is running, an **Open Adminer** button appears next to **Stop dev server**. It opens Adminer, a database browser, against the site's SQLite database — useful for inspecting what a code change wrote. See [Database](./database) for details. +While the server is running, a **DB inspect (Adminer)** link joins the site URL and **wp-admin** on the same row. It opens Adminer, a database browser, against the site's SQLite database — useful for inspecting what a code change wrote. See [Database](./database) for details. -The button disappears when the server stops, because there is no database to connect to. +The link disappears when the server stops, because there is no database to connect to. ## Where the output goes diff --git a/docs/guide/setup-wizard.md b/docs/guide/setup-wizard.md index 02fdae4..4ead190 100644 --- a/docs/guide/setup-wizard.md +++ b/docs/guide/setup-wizard.md @@ -46,6 +46,6 @@ Steps also lock temporarily while a [trunk update](./trunk-updates) is running, ## Skipping the wizard -Below the checklist is a **Skip initialization wizard** link. Clicking it hides the checklist for this site, for good, and shows the compact action bar instead: the dev server start/stop button, the [build watch](./running-the-site#the-build-watch) button, **Review & submit changes**, and — while the server is running — **Open Adminer**. +Below the checklist is a **Skip initialization wizard** link. Clicking it hides the checklist for this site, for good, and shows the compact action bar instead: the dev server start/stop button, the [build watch](./running-the-site#the-build-watch) button, and **Review & submit changes**. While the server is running, the site URL, **wp-admin** and **DB inspect (Adminer)** appear on a row below it. Skipping does not run any of the steps for you. If the dependencies were never installed or the build never ran, the dev server will not have anything to serve, so only skip on a site you know is already set up (for example, a `wordpress-develop` checkout you prepared outside the app). For everything else, finishing step 4 gets you to the same action bar with the work actually done. diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index d51d1d6..502aab2 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -4383,15 +4383,6 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit style={{ padding: '10px 16px', borderRadius: 10 }} >Review & submit changes - {running && serverUrl ? ( - - ) : null}

3Po%?~w4!@p5urhPWB4%C#60F=(xURA{YC zRE?wxZ%sK)-zI+$4b~M7O}~>6q+#H}^bda@92O=#Nkw3kd;pZ}W=G@jTqH5-zwy6WEMf zx;}sT(hoAXzs73s>)-~5D4o!{w@ugKQilfARDV^T2$1UEFN=`>obLHQr}6yf^ZXyO zLjNnjtsI$L2?;Elh_wRy!Wrn;0N+5!G>^Xt|0OxCT)hDX_kZPA{S{BbH~#OIvi{Hh znbHXK5cCT7Hz!?C{XxXB*d333c?MWG}U6i30q zDEVp(ID@M{X^Nq-ECI&&rfCoW~5uTB8IE^pT>(1tdDuBZN5Pww;<9DKga>CSf42=0DSA{=TWRhkir46NhEmeYLnk3 z6!GjnDkx(bZ>b;c}t{ zr;ASubeU0Q=O72&5PlGTPeA*NklAVJ*Z2z|&h0Z4g+A?&R*p4_+jt}?q4&f-8AkQ;Oawt*`eBpzJoQ{I#Hq+7bLePk zc^v1m0uDcIV#OZkMX|OnsZS&98%XUe#xkFQEW02I6s7Uj6St9(^@|{wGi|9z@a#L= z2Tluhl48h{$+2F4ae8{nn8?k^#nytPz;62en5ajy@s;Y~XP_N*dH(L7h2Y+v(cDfu8yB$f!d#}dg>%GrhL4V4D|dw#c$zJ+e`IXw#sQpaX5(rChd zur`tx#`0>f9RI_Ml?8v9_ohD*)XF7iAIRXgwY61j4{-t^A7;+f<%=-)^i&G4u?I6TNmC-?Jvs#D$IIlHu!)N8(d>4%KApv&P?6c8ZZ6-{L` z)980s3v8VB&aDa`WMHdaR=4oOYw6bsSdJ&EtfzoWXtV=vA;{Pn!V71gRYOgoFwSLJnYSg3buj^Lq7sXChGV zVI2d?>gV*2N>Bsju5N9WIQ*F&EuK+Vmt;bweO|xP;#S5wySV5CX&Ya^KJk~Iu6824 zBLCP6jhN_oG(D^?nEy-+o;9}F#;*Yhp zv}ug;=5IxnVFL|te{l%sFFQoCGmbrw=XF1tMjdn|dq}BoCjF}xpd&3Uy?1aP6b!?Y zT=bh59L#qkQv}I`ya%F<&yGk!gF?^Q)aI(c#uC5JM05VeNyIS^5H2>GanF?C(&It6*u(t(FXTT z0#Rv!NUn{Ete;=Kz5c?e@;~62$1`L`{35;4vZ%Zf8pa{)+Lqz@+elXC z6oUg~P_B!-t#lkXhlG`sIy?Q&o#&6ge|R2^B4#63Fh9F{)YkJJ3T*eEGV_3<8c1;N zAj&GVT<#3&?B=xS;U-RrOnsHMsu{o2(0a>qIJeSs)j%UHK07<5Ntl|0v&mk@40wCP z^zq1nZv{M$%?1V+0Z+iJQLjGEmW8M{pL!UT4%>{5G4N_sUvZesPxqHxFjzBC+4qOH z;j>R<(~{C@w|-@2(VtMXJP{?b)?d1_zVcxK%D77f7~i*2l^d(mcB*C(m~P?V;OOtu zU{3|OMTJ?{s}ehV(Wk}wYJY1bs< z@2T{cd5nTMzVB1jR}f;`Bu~H!)AliBsSls;)j{{LC2Lr<*`Fgu@qnx3Yx&?)e^Uej zZL_#ptfH$STw!pgl{ z-aS}Uvum#B)uiZ1CHzoXTCQGU6`bMcmy*&H*N-J#6BY^==dWx ziYwbHC7EdrVMpDY%>WzjBQO^<`l$PDD?0y4ek`jP21^`1_MVfK1(!*Yu)G-|p@lpN zlhgyi7D6D z8O0_f-?$BUv})qjf-ZAm`A%n6Y<@$ z3;JZ(1Hv?X)EZhc{R2|UV?Y|NQOL{NRa4Ute@3J4Oth(c@Ax7Bn-rdYX6KNK6JB;< zVY2kw0MFF!S4nt3FZrfpd``W3PBF|_HV0C7oM-^Sh6i+g@XJLq5*GcvtJ+-cR^9FkWz~} zNRsN}aiVmb({Qyj>z9+W^T!n!Mb43t@(_~+^%Z~N!Fd`5`wf()sFakMI+yLA>L-Wm z+`y>5f2mm-7uQhi^Q-Ak*Ur3UY`1<=e1z^P#*Dq>RY~C1AFnSVL$l1Bd0+(sd;=bb zisxMdHctSU%wl8H4%a)K{UCISh}8kx>(m!}2Ne|+=?BoWpjJrq-fC$BzP&^QiS2kL zl0R%6f^n|!tR7o2*`I=t1gJz0ym3#a-U?r-*G9@COg@LF6_N6wDsPWeIcCLk=){m5 z2L{e$3#O#J{4}sYV{#OJ3ibT4=5~WHFdpYQBTb7>ydE|u-NVefjrRsOdI?>|+wp~7 zeJ`5wz{X5HAKS$#-5W6MNa1ngixUSu$m4tgw>3wwE5F^Q($W||J3Z@cvb+pa2q4j= z7@y=l{C1p3(nMD$HbdznInPeUczu|}W5s*scHN5Zg^b)xD@itu5(PMlT^u{tK=(53 zb^ArJ2DeowY1}ZP6c)|z0#xx97l2vI1u5VO*!e=fPEiss{fo!U=XG{WNB)UgkP*%@ zRcGol%N;!mbHDPwXod>__~pUIkXg53y2P?7I8O>H*nk`@&?q}t9Y#t>hn;}) z_Biy?+o4dBZ$rsjqd80mAyeU@@AzD{T0T|~n#iXZ7#UHX`$|8cKkq!#ywu*eJ>KPv zZb)vLXSsZ)twg^U$RUIS=yT&vJ!-5xbi_Hc6$t8BnZtRi2wi?B7fgHLemsODNUeKq zg@p<@VF$sgKhp%((-Z8RT(B1cg0&3#J^+G5zk2}Q%ol*BDanKSv`&LF5e@_`=P5QO zSz()5tiFr;fX8klx}P0(cyI_{6c*6%K&7ef>i0?sPAADyUrI4ZrY9yQ@V0GcO4ebD z|ELL&r#Q=@FO8lTRnZRdlR!||!L5aG1mLq9PJ>7IJ+1cMUYsS-L=|AIwKg)LSTY}Q zI8boD!82M1+eu6kfs)gIkdClWfz%cF^Q#$+7FSOA<|LQ~-&q@ILy61G%Ia61;hA3` zh9N)jjb=jXCLBO%p%19_stJS!{9f7LHA{8zmfA(M(Mu0-ic(Z&JOQQ}C z?`C}jb1?@)_#-RwINPU-KXPA=cPM;%w+)g!Vjb|w4z;!(jyr6e!VzKq;tlG`y=elF z_Kxj+ARcQB|Mb#xGrB!Lu(F}s}Hx~ejAz6TDBnhNaEL=ws!__Tf7;{`X2kf|bFCX=ekj5@>CV?~ zy-8@?W?l}wwdoA!UaWvlWcvo3iDs>X9B#+aUE;36safG8pS9wZ_nggCtyf@h3Cfa^ zP>YwRC#1D=Ih?Afd`q+e>pRf6Vk7cYih3&6xx-U8RwkUM<{T)pD5NR9#fFMh zkrFJdzOJd}!|SA~c!)wv{1&9X!69Kiar89uy!eoZ>3L&payksXm9=J7chr=|2*axZnfO8=-vDN@=kV6;XG|LlEqTX`(P&wyZNld;Mvipa8MIRX?#@P z*BMILyTn7n&{Hsbgd~0P%BVj>myOoQ6~Hr0R&F!s7Ht3~9tzv>QWWYXa?H%k2akLf;u*Aca`i-H4HJJC z6VW|p&T=hDA5$EAnQLNYbwAiX>_CZ0_E&=krjO%fxsBUmcZCBk(-G)Hb5d9(<)WF8 zeax(_t!`ngSQ=Q>Tb*><+PofeiAgRbx}j~K2;$6rQ0wER9;}QYBgF<{l1w#SU1Lt} zs9x$Gt}N7YS{=HM)`BHrb#i$TxH(w?Fyis4xy z7>4D2+Lx~9)dQ84m3XQ`db!lL6IkU>&C+2Zo8Q;e(Jq-xB^&&og4p+A%YS%uB z-$g!7f`^NCL^Da|JXS{fbnSc8UhQw#-H^Dxb5^_peFCkuC;l$Qjb(C=KO3(<;9oy- zFt?4H$pL4*y7U=Wp~PK6fWx{xb3av@#d*?bJWeJEIWp%V3IXtjf3_0)v_xgOu^*_*j-H{5rcen87YL4&^0%EYwfw8638cH|E`_$Qm zER}?8X4m9B=aRC*!YX#()As_fZZ49O{>|IvcZ;>PwYdSop+}z;Ood!` z?)Z&DZi-iroFyIWdc0G@@N_uu zsfUaVnt+poM{twF%3b2)#LcCn&$0W75oS@+s(jUB^geUKXmf4uN6MfDlL5G4_z$Sk_U%%a< zphFdzT13c5}_!y9e_Lt;vzZk&t^y)pMbtYf@vnYF!5sLkBlNq(^G&8SH7B*aA#$}F!NT4MC*k= zYptho9KQ@KnGVY~P=5TGQzVJxd@<<2U_3Bqe5X9}l#7d1TvJ^VKOmI(Q{6N1XYdIx z_RhcAC&GJ1S6uMQ^c|c;8cW}BbWB1RhAe5#+oT87kl5NLLS?dvr3JvAr;S2fsj%1* zqH5eps%R#wb?>c>J@SuSo9ur1aSMmcHxFWUuABE#hY^r#noVS4XP24uzVW?|gBPNZ zD1=640I#P`p2~EZaH%-?0^Q=wk8~9w?_HY)_lx#w)(jSzTA`1zqc_T$yf4HnLv$Ox z4}Z@-eMDIbrDulM_MXs!v%81o_H0ALs5UOb&V!$y%$RNzSx}4w@Ll%Zv@S(2p|qUk zC`M~GT3G??7*|V**#JxuPYc>61xP4GHs8bP`N-p4z>~2@m`Px*vZqX{tGB8Mnd`W;ZD2&v}L7iJ0z(U27A9ifontOFwJr|){!6GPL`DJpP8JW5P-AA+6$>m zZ62^2H&?4#>ODPKSS`L+Uwz!$m-+kp+}G>(joAg`=e?A7hG^gb8264Pp?H^%i6;p~ z^4yob$E`Qt-k$5cMx=oBz?`L=Xz0U z_VzloQo%$+9qkl!jxFCgs^(_Y=y|A_hS{0*`^vd8WfV7qemwiKp3~E_#H>U}{2h<| z*5V@Lebp%`cr{+Twi8`ffZR2sQGWMEh_Cej(40%d0dcexGGMd zYv7VfNMt#xNjkpK*hr$WA})^9ZRRAWnlvj;`hw`x%QBN?;zeY4$99{H+80OGC8<$~ zm_5xPnW#+z4}K5-v+?_kN_cMdzaz0)%iBU8wz=mCv?ycVQ7w}3^lYgl;wKjN{%jX7 z;xYlPZ=kmFib%POt45+$4NM0UgYjtlElQ=A^4Wrdg~nw<`0 zALT~b^&lL&t9Dx3K-gCjUA;o1PpWHPtxP#=4zGB8O2ze51riPD%b9&t%OwA?n3!aT z;v3VG-|`kxf`UA5k6hMmmJ2e(u*Kfx_~O}>&8W4@O>F9eJ%LWlC;H+O1Cc@SOi443 z___2GNy*%zq92&ko20hW0%Xl(Q?<_V%&jw-p9E`Xe{I4UVrLZBC&2iR=p9rHA^Sa* zz$0sbe81K2fP>0?g8NtZ6!5s)r3qd?{zmeJH6y@K(RFri5hOp$-ElY+ct-iHYEe{Q zn?7(?;L#6f0lP{lpIinF&1$oz%=B?=PC4>h+f8cZ!0<c0d zcJ^(bi9LG;U4s02<2T*Ij$TKy^*d5;1=CqZU99@b6?H7*Zf72=)|Nw1-!)=Mvu%Dm zyWWYzxj)H9D#QuhURZ%5V|V6q?Xckm+zhwHxbtJzxg_$J{-3pQdP|tW6{nYlBnwm2uCV zgJnc9c!)qK4~h%+wHKhwD*aiW4XorX;^Uv;I0<;H;6Vok=`WyXK#!;<=iK4Gd2C19 zB9H;jX+;}XptJy_-g}u}0)HMcSNJ z(iBu`S?dxh5EE~Qad?nWrcS}Z=Dy)-HLX(VyHhwt>B%c{wiL#%)AsP^@Bk+V3)Jr_ zT+=WhpYG2>9{Y-$o!t(^0{r;IpK>(pXlExWE!)B+=6qu+JUIOMhjso+Q_aW4hY^n= zS0<}bVoLaU(mqX%Ydo#>U#v>(rckcI#IrZJTl;^q?C39U1o}OFVeg6L4TpwyzIsj>LO)4^DkPP>${-3Q!j z;|(q|*}YnE^q%|L8KoZPf#V8EeE!#&0wzGy2nW&k>fv#sSZ@qH`lh|wsoSCFZmz4i zw%rdEx09-}$8i~gz>?7stkZX)keB&8$90-?Fdgl)H5-mdeLj7AE$kbjzJzz zqQpIeX|9lgD(coJ1LR%WwEj2UPS{N}!4D)-U03&1$$9}O;|zHbO+HtzWtgN&pPzWW zlM9o3{RG$6xiw#1IWFZI-Ru{i-90L$>h3VlGTS@uU-*Ec{)N9EpA5b6gq!Js@Lu!Q zQyZGW-XkAq^`Cb!1vEF4+}XoEe* z@P~&*-kVada4&RKghH(Ta*^PwV6pVyj8uz4`){}KHj{Zhh?jjUoP>Nxf8U&LXVd~4 zcQ{Ti4^_QY+h@Syf&eHl`gos0*a$m|-Y}@?F$9Wz9oIM?kAL}fqyi09CiZc_>rN0a z-&~!!douYP>R|VoUfPYn>Y5@&dq9_3+WX((^W@umnl!V(29Q{p#Or|J^J7=yhb$_z z+^yw<6uzFQ>@wY$$$UkNjCTKP*A$3TWs?O&Bngx3x2Fq%R>IH1^YlFdXFS zOnq(*Ee-vGfc`4|h`?@5md~6ve@Ep2%L%6;tz# zr)eiz^SkI18mOf0F!I>hcO}Pf=0y!gMT`E>Sk$B^i4-Lu^?Dt9V-57Q&m%F8`CQgW zC7Fq0t*h=)y`v{dpgl-ik2a?72u%!fwiBR#$rg4onc*>7I9X}vkak1!JIPWns9@7%bQ>q`GI zf(uyUB6OFn#=mfbU~lX9%1&4fPh_CBG=pWViV)sX=+(8{w{@R`PUx zq_DwloogtzVTu5FjWPFsX7}BrRNER0o;hzdze5=ac)#2~i*`r~svg81~p!oocd&biS(Bi#l? zlrlq|#bUuA7OpnmCztMO2iJSE|3pM~XZ=2RlbPd#pM=~QtiV5RJDX|Tkb^)_ADV-yeVkG ze>*P9F>y`H|g$zEBeA9~>Q(nfJh_oso(G>mj>xiGt!cw$9lZ!jXO=9J*zZbQ_@`D)`@gvyw6>C?yM}tro8rz zJ5bR)^p^j9=Mfi4TgkjV>)cZIRRU)6x}Xh2P6ee)(mMsS!RmoO4VEg-%$rJlV{w>> z=W~d(-7zX@9D#T`UKIHS34=;ZI<)|3WnGwywIu|4x1|iq>Z(yK1|$Ar(;d2*obHR~ zCn%}1PwBG68&~;-QX84?-@oX*T^D(&9eEVtJ|x>C(qguw@bxa)fWnTNDLBErYa=83 zgF5f4kODisBR&>`BZl`Gt`D1+1^t7FpgF|-FOF8ILA84h}2b{T` zaU^W<`_e1n@o9!LIh%awtzd6t6Z5}9u%Mx5Wfsr=RSWq4I0bO14S>bx=NF4I0s_d{pvj+*F3z>A7{=$O&5bmi0)iq zT1W_1XDMlErN{5B+Z}m5wpyT&I#|a59mrF9z|JY*LUMs-wV4z`o3rpW?VDPW4vzP0 z;P664h9wTQ(c2qJK@XMuSDq;=m%*y^LA*XHHYuqc|K~d3Pw$u;DJXp6bJ*$EC%gDH zCD`(f;_bmx^{uU0vdoEm+vsg)BcmZ`G{$6U$$qk8_l`LymX(*6hFI4;6X~8)lQM*W ziKhQykfgQVMx){A)(;~7J56K2y?V9qo$TBfRG&AQp)X|L`SF1QRLq#p+0yj&NrYUx zKb;<*>ODodvPEq;%`SK3-%Nb&jX9F5BX=z2ef|}p;7I|+VH81E0(-}|zz8&4ccomt z>j1lgfd{BuXi3T@uyI*VjCBn>zf=XVZL^FrxGLmK%x^C(gOiE^9Z18qmg1E5|( zfVP6PZ1*R?2zDHai;DwURov*+!OAYZT9Mo*9t`^_Xf=`uy4}Mi4CI4QZBABJ5sKho zDMD^rxAWsXNE`DzJ#3XtUGd9V9yF#$UVZk#?d8i_r`2*;?!hSnU^>bfddK6Iwh(>& z+3`|dC$mwmr?=SelV5lG-5>Sk3yXup{z&0RDEP{FgMxDg%5M-GGW7E&J#}KJW)`U=Od{;&4kTq?-)rEAND4uH(Ien zijMVEQU_xraV1Vca#J8ge& zO33Tz7qqEQ4>zq1tqbc%P3aYErolF-AB+nRj9I_aocY8gZ#M+c}2yY&z$S6T-a#FEbN3lsl{bw`#-cju(Y}# zLc-llh8C`@qt#52`Fy~KCz%9PYS*_YcKBWIbmc=hcxzi5Q12lS&LDPB=6vRVc9mH~z5bhOL1v)O1i$h0K= zi3Gg`vb^2TjtgeK&}wl>98lJk?Po|R#Qur(EXKnBq4njCI?-;DVMF09i# zYB4xEc#K!M^l5T_)@`!i2OQ=}uPY$v`XW-q!|~ps7WJjf)O$%Za{3DfJ;op_BE7gl zGm@p$wub;Rbyh(&>4ZK~Az8?;zeH>Fhbt_K^c*q>ZOjeuXAGge60s@PAyXn4Ybq|- z8A+~#3Ri)8;&)x~!&8{DTL3j*4xtYHVE^(P_cNH-kIoo-60;}z!TOakmp z;QkVUkmDE9VB2}D5b|H5pRv;3`#WME9XTK4K2M2?O4~4p7C$cIhY;7hyL1-NAHcIb zI1Z*CbcDu>$PaYdQs~AL5aI`Kj^=C8jpFWp;g^Vnbzx z=3e1m!`}HZHrY53zFJ=zC`#TDErvE`&sw5sC+Une_C!@_sTgL|&oj_?RHKOvJRbl} z?wF+{a$f?kw*Km#hhpP7=q3D7ALIgOBb(o4&9@;wGLp2>ac*H1a)81g38`%Oc2~&f zX&_bsVFRG->o__&c{p$L`7|3WbQt*qZLP*Z^?nXEwT6bK*WRAeCpE6{zSsdFYQ9^| zU*SEiw3)Rlrc(W0!XB;eLyMt2w*!&p!XbP8#S3OJcGfKjQa} zE@%ZrtM0VG9cAbUI?c{eacDK^5E+RrF4uYTD86u4dG*#>#8TN^B{Rdbh-MY(p z-+u}C6{w-0=uSPzmYNUHs@!}+hu4b`3;-TH=&iqPv%ON@;PSkfmR23qQ%m2&X*$A( zkwK`qvAZHZiwRc#l|FU8QKM~x#&bJoZz3aW zX=>`V^a(!!*(F&sEXQmUlbD2jovmZ8qgxHz(^t4WR5VfsjEJm@M|W1JC8g4Wy1Rd~-v?{gvGqpv<5}(`#BUZac0mFPrL_1u;e*d6T<6uIpBrc+(U~ z$3Qe|DJJ%|#F4hMQvWQ67(E-~EK4^<2drs*y7gm~UNmeen-i5Uaw)b%+$y;$8-*HE zbmip5l}6j!H9h%&)dXF_0?jg;Crv`p<))|}62^a*Y@b#HzBq%g!ouKj3f2`bty-pC z8tk4ySo7}fG-P{YSJo{2C=?ilfrw>BrX4`3^+_Na6(u+r@50i;tls_b6zF56AE~Lc zgE;yLbe!zF!nlN8-3_Lp-UcD7&yMl?mlL^df#>!RAKwiKM&5|Iuds*+r z)}X<^#{cS|T3y(u(G!*fs7-uBovypmgA;zB2x!fp1({hH{L1jarKgu!90#J4fbqm#SwOr%m^c-+W`$XJ z<~S6u4$u$E`1yP00^w9?HB(~Ql9>nLEStdI{OClu)T{gU6(yd>(aKR4=101-qs6>q zVUe0r9_<>Xwy&wFPV3xc7NVcaRQF9fZ+`rMN1=(ctwlj=HU4X*r|Rscxn_ZMoU}v) zQ3n!PJmn;(_HrSTnppO7mxH68uZgV$}*Yd2NYtXY(&FC5(l4%|^<1(;*clN)Ss6>8B9z2B}(m7UM;Rj-3wfpzXs0(PCqB^Jxkf;>fS zZ_Mr^S^vGoNUG^tLz-}$o4ML`j?pvquvo11H!_x%VqjoEiy%#d#5TpW@6+wTn>|X^ zh~31Q`ETZ`Ct||wV`F3g&Zuv?$0h^HkvV3n$4~a`rcT3T9`;5+WOSykSZoSCIose^ zrzBZAPE%S=Ru+|z+>;kftk}=r?v$N{K8hU}mFY+aD}ShRbpX!P6I7KGdI!l?b4$zM z%~Xv8HHqbYT6P9ekatxwu|1aHN2ULCyN}r3r-2ORitsxiZAu&?Wy`2oFn5gfzc-PsUN{XfE4;8UNn&No_=l86=bq7== zFKgOa({F=uNWu(!S!RlnFU3A*?cJi=v&a4z=krl%Cni4iah!MhP9o!DG0QxOA=If$ zY9zlQXBX)-P0d=y{JdA&xk=QB5sC(quLEo7HiPmF_aB-@gu}2Ao%hKJi5hIU0aby- zJo^7e-3Y(qe*iuQ@6{#7#DpfO-2U2j@@|J-u-v%s%?dZ=b6cBe>R(2rA*6P1yz8h< zkcyt(Q*rqXJ z4d}MP+7%x^(h;Ep2|6Dh{(Z_RSdSjvyMI6Q*Kga9TgZstL*Xfohqp4nKQ~o}39-f? zL2!3>54!gcetkYAH8nXs-h&53*x13>bw&yjeEQhtb`*$Kwm zN7yqU9;#So_WxfjQ1AYC*vlY7;8N4x-aaboIqLwc{jNO<%0I^2g=%?4!J5gad-`Ok#Ipwguk5)yj+7%WCGg>*9b~ugm_0g<=2rcE+Ti+_9ylrNBEs*_nm+J}xgW zc&84|>!&@xV-Ta(VJWl|6>$uLaRy;ydVon^UXCay%l4mn0}|uYL{jb`GZxsCiTfeG z>54dXmu2vqD`tk!Y?U5dbQIPkxF}fumPV2PjsR7>RsH(F=OpdkEyW%1E)-+mzi*|l z{{tbHhBOEC|7Iu$R##WAtbCYp=Hx{Thzk<^p}>E8jj-_XjUlrd@eW0~e;vc5cruF% zVNM4wLBZjy92{7P;Up=jw-Jb)x)ZVsrpHSRc-ZGhh)YGC{`(IALUN(^8R7Qo!jO@Yuzw#rm() zsXh-CD5pxIwB8L;FnWL`@JQGVH3E3lB@58B`f2i`#&xxHN12uxM8I&O5d^@7=Nh}W zuFv`Tc}W4tW$!d;*K*|nTn*rV5OJ#hcdW@nq9py9;yoOqFuo7fPMaX@P2TBw%xt!ii|w{oU2Z+4bc_sv;IG?^d!rZE z+R9qC2m{5fBCX?C8KlCZE(iN@}FviZgWL~|2zTL$x)SszrRfS4au zF7MZkybXTDC?}Z!!}Sg9yw~6WoST7+GMM{&PyzADV%=TFz;; z;XNvldqDM3Z5-c`^zmcKBw#1eFbF&%%GJpy?tYGw&;=IJ`4RvCf_km9YI|`pj74?? zU2MqJN~b9swzp>28=ko>+X%Lzf-%5pd-%_ASqCg;dBx^*i5x;gI#yg7e72f=HE!#b zK(EwKmtK4ajFqVp%f4?C5eh{73^TEN4<)^3{>~fy@yV++>Dx!kDeBGqMA&H5py5p0 zQ38Q;pLX@i=?4Cr*QLhN%Zw^_{W~y76pvd74el;m$;+q}h?3f$FVHR|3jiRW;vHn( zF7zaJOig8o#4Pow6`GHyCp;Y~m_yLI&*H86K22#{rnf@qaZV}ehblen^a7A8TTPaW zNT`{PY}8nCTWL0#mw7%3BDL6h^DOA6^Y++BDu*RdZ|4jp3{V8bF=?a&^SRWvAJLU! zy+_{lvm?UH++5!Y@VJ!i>3d7kbV$%S6A15d}O!n1u8m@kcX%4iyYOECBNI~ zuKVo`CR4ZG9AKnBppR9U|43)6bfSj+H76^^V9sT$03T%R!J(l^e1;E2MSQM`x1=)a zk(I_@mU>CRo3`frH@?|G>5ix~DnKN2xJwwZ6 zIeNr6o}A1Y75}3Xc+iq+WM&{{9?n-|R84mUZ$fOH{q`l&IY01}o+2U1-X$0#xlZ=+ z;-E|BMUKpJxTHLAm+`$*zk4V0 zbTXq$@Rp?ez=n^!!uQwxXmh-SIuBPKUcSyIL|W>3BD3wZib+*P1vX7VVS$l9unt0S zv^@^ui_e#2c#VFGV7K!7wY8?#yh-8e#7o5Fhxs?`5b~#_V;?(% zWCcQ{DBe@i`~11QK&yKHp);}LnPd*bpf4lv^$16b?#tZ6iGlZ?v9VQh=JqNN>(<`k zeoR}@TycI#4Re%wj>6UJj)+IC46B>pLBR}RE-qkn1}C!Zc;o!sB0ZF_b?Pi?UU5UE z3uf6gO5lv0*Xk`XN39hf^~$3TstS4RjVX_sO6C(oLJJfgGCJfKB88jW0`BIOpNAa5 z_7eNT$@Tqna;N7NrIZ-JMV|TObvrtmGPnRzNp!rZnhtzBZ=XDtHS-RxR%-gK7|UHu z8E_XBm5r6PD@u@`7;HxZa2St>=;L0N^Adr$p7tiKs!gmEo0*zPUbSg(3HQ)BnoTY( z41DW!18W1fdG~>>v$!lJ`8>@f-#HLVp=s#=z8~oC$|noxPj4hV_B`847Uga&Ux4Yq zEeEE|do+)l+q;tEQuvQUj|!>3oxAJ2Pw1`)}nYv2g-z#Err7!nk-hWtGjjGHBA&NFH)ty$MS@&KM#l6$ zE~T}`%a;(8#9geb{N>3dxPGwF$=5lp_gX>gNq3MVT2rb{Bzr)@G1Sq)9rpvIlyV6? z7}q1JBDSH*4U(U7tKAzM9t&f^R6T0#t*z-q2NG$4xs_h~0p$Lu>4ZTm{gd_?5~SEU zubenIvMz8r8XK}{VIo}RaK2|5){l`VynupT2d?sE*pGnb1ht8?7(Qvczn`@5({IgW zM5993QPTfTG#MY40wco3IS~6``JnY#mv@7z6~SO6GkTbm_uM1&kFZa}CqP||J$*w? zL1AcM0M<``4w(ja6ciM7;KQS$qlW~Cm6TMzxRY|f4*S6a0Qmr8_uSXfTFK3Pm6G7k z{yux39@7;?%x6pQhJOvb;v)wMUpm++o}ygV!nqp0Es%WO1WduJU1X9{K)~cw0tmta@3CxVeL>Z`El31~Gv{g}#Nw zKL{q=&%`DC-@lnlw<95KJU05*iYkP+OH9?-mPrJveKYk;G+WM1O1aVrfjb z6XLX2uJ*`708EzkJms}Hh}J$F4n5A+VBWTRX4Q}Z0=BKcf-$ztjh zSya?sp7x@JdH#cjsVgShjBjhLw$RAx#<*KGH);-g*+cIvTA3RY=$DT;a=hko5TDQU z+H=eK4U-DF7V>CnMpUenPqmLUc#0ccgO?8UM}n*m961XZ%EkMRnwAO5jMA-tSk=0& z9!^$Y#(2)p$3*!ja*x~^j&$EglYGR|1-Ld6P<0%R-+?r6*Atv*b~Cvh{gS^S^2Vr7PbFpdOzU_aSoQl+LD;V^J=op!iLnex)p!Hd*{o}s_Q-{dSUcGaV& ztiJz1iJu($VKp#^&NS9#Ry?yLjrtaA(0VzCf0xV+7QTGVc17iOVpe08E*T!-yMS-Dc|wEcj~yrDEO^uV zj-@eG2eUZG`aX(3@~d_9O`F-pL>7IKuZ6b*zygkc)&+DhgC9ylxosz^mP`s z$wlET*5;%w;PVQd;6AYsuFSR6tWOo<;&J!4-#EUEwze@zH)kM1&UTsq=>la#i{YYq zFnzV=KzIexZA>lb3oC@)n!WrM7{vE>`_QlK>ejZfXSKs}(T*h)H7x#2d(E|e@;Ym4 z$z55Y<6J9W?LS!?UI*a-K8Itq`epkR;ur%giW<9JCD@=sbDTOJjM}xY!X}^%Gf`?S zF)pnNsVR@+4Rtd-C&RV(aT%GOXSV>dr|ne|uGwfByQYxSQo#-(mCTKSzMqMI0-0tA zlB5^=cPKsgXsGrNV7+)=dm(}^>dzcZChc}0a5S)wr_q(c@zOll7j;)kx>&q}5;I|m zMt<3O@m*TIimvhH2;f%!;zodD+IT&N``{ev`2~Z&~Uk5AvGEn~b ze7a^m>Q2mOKpY5R$#||kB)ktGBqmA*siy>T513OU93S0aF`85qE=zVEF1>2=xT6cu zWNbn5?W$$HIwdufKXnp(JVD%gETOZBvEnRlS z??*?z;ZO_qkqhPgMiG6gaG*MEb|>^{%RN<_zFWhgQL`KDKW^7_0~}*->AOl!bjk6e z)ad(?5U!j0>5lqHR(-4vNF}-~2K2hWzPv!rD7<|+If^e!^*SXi>nKa>d6bV#1_r1(6gqJiN!)&W>nA2 z$vHdkLZW#34Q%FXoE8&#PwN05Q>al@^5pgTx>~UqwH<`bL3)?fOl1XBw_{h?+e05s z1JMFl224{PWEc#ZnRc?W-{F6l$|nD+bdo9Ob^rAij$A4QikHBdB5+y*uqIbxOvaAK zgRcCh#h&D>$ZM_mj}h!K@7KbQp9c9VUXn?Yf5khwck-Kss>Hr48cj$U>%qPo;4Sl% z$6c2PLtRN-e@2>&S;TVlRq&z_Pd+p*FB{=vQLOhfm1gfA6;TNYDtgKKE&b#W8#is? z$NUEY-UGV#T%qrzj&>EEP{uGc94QrSFA?VyQgwX}R$yhmbm}bdi%)4d^_-6n?7Kt@ zsK|QmIn~`BCqvi%n~ogKAXN$w?@H1zm@hhc5MHB2o;IO zrk~F8Hy{}45FQ}+i%&&;6&my^rZFk@YK4foF2zD`XBn^5H-xf@!zU?h42K?#@omOl zSiua=yTYNO;MIY{1k8f&|D&_B42q)(*Ea4RoInCmPSyAO+uGWy*{$vBnd#~7$F5tosKh@mpx(;s9v2W|0`k|NT4lN zTLaLmu;v{#%GHRp7=kt8cP)R_pzBM3!7fLH=uc1ZNLVB(O@@;|IVFpBEe39+1Kkrm z9KX|X2npc8y1O4GtHDviT!0u|%vl?Bq~Pa~QxElP>U6Y`w}g37i`E* zNVj?p)CW(__KSbd{advD6OV|_9X<;Xjc|TYU~oQJc|!hT33#pOS6e(|D|oD$aPtSR z52rs`ZFW5uFAW2(yy|$48t)w&pi(`h%JC-a0qZp>k4wNi4)^^_EytaW!e!6v=+{E{ zlOVz*VFUeNp{^G@iMr(40FesT+tcy`*E7mnKvogZw69^%ZnBzeHiCyZG&Ft&N{ZvB z`kkyQ3K9XiOhTeim)<@aGZ%n^DT(!_)?v>W&^uWlYW58~;p}ZwF2}xV^;&WlcfeoA zm;p%bg`k>W?I*?7$imrlQ1I}ZVB& zfvfVR)LV&8wM8)(a?C_Fsn2X6diz@pVYaTIEfwp!g%={7h}97p3rR$5y-y?fJlxz9 znyoSpY18X<>kW*g$&6NO*OHtr?t8eQgNN4j9Z%HX6hYCs#4V882pj`e5=H>u< z@{CM_^?4%?$~99DTivb((#PT1f=sN*zFre=1VYn}ULsd(>equY3kLmA=b*ff8U2Q(fNdsKaw7ApvfJAH1*^LIgT~HE=C%?0Km)%N6 zVzI)_vGD2lC$PDJy3uZ!5|Ha=W6-Mh@Q#2ey(6GUcw}YmYO@%Hgj)?HwP75t zYUCyYz7vB6E7TFQ(aca1?Bm5~LPBP3PTw)PdcSU~(`wuy>^Jmkwfz940I;BABrA2> zLPVPEaszhQbVcRboYo($<}(Oc^%okKV%?Z*Ehf-E*z(4>-%cvD z(Ngbu5h;4d*=@3X=b{$4LUe@fqSLxqQL;nFu=rDLBzUSm{n^IddGp2X{)0)|;OAS6 zm(9dDzTy>~@n%H}^=b{Bi;3!ju#y6$4i>HjXm$r-i<6^W_BDxJ3Z}m)AXGgxXNF7U zuVQ;Kv>@O{*k+?49Ug$R6+!lo8^-dY?PB`9$WTu&+PUtKV?pHJQkoB4oNdMD3~km< z`Pug{6IoM5gKUV61VI{wY@SRDj!`VBG$*f_&RJ*6Q3t5vg)d#?hnA}|vA%AA9?UJw zu^juO(PN27gkaDZ(NM>obhL1Xz;NVT;B|~_TCXn?`C!!Y_qwa_L#Cs z+6Eb(zMP8d<-Xj0dm=VYu?()ifrp2F@6{xXMC8QADEZRj_z14Ioo>Cl zktG5ot{&9%SHKTOb@NSC25AEJ?Ev$!tFr@jFM;A zv@}+o)c|cyUD|Hqv1JlR@+b?kqF7WWpDVju{2i-(=^N+Q__kLyN9(IBS} z6Z6tE@;$@aGZ63!TtPosKn$WPX&cMUT+-Du_^^RojEny;Q0Mz_cQ1)WmUeeu=(TtY z6oruAdf!bAoFlIrEL^5dI`MlyHq-BiB^S~RZvz=xPk2od1_rB3OBsr2m%vtthlVY< zE3x*R@wV5$is)8BsBQ?&2j${s?t}cR-mZh7bkiekOOx#|2<*xSJYtfGXv~$dw|<-& z>4TGbkXN)~NB#2&hQi+f(_?GNwp``S@&F_HI@aX4g1OCqHg( z)_i+#+X&e|*0H6nq;|L%$nY(;r?_h~F*mSzB%O|lXWO?b=^lN6Q-rY9ir4NX>rXKls!o6}h*5WS}G37!l!X!rc z$E{y^Es2;|k8(o${^>VQMZdJF#B-2}qhDND2hem#14`c+=^tZXME3{<6TNoN zqRE3pLT$PL*-Eq7_{B2R%QtH&$m=I7_DK8pNV1LVyj!NXX+iZufOpvoA$7HS@TUUm zS}@UNl2Nc-Wcl#%97f6PFXC@tG0K5yP0;6&*o2Z&-VzlF|JGtg%aY7evV{?RZ(z%KyakGGGbQ#Pu@vJojvfhqZQ~WH%QVx#{3BTH#-PkPc0+9Z(6vFP0 z>;S*ogrYtB{=nJ+zZpSVeSRp0@^9$SdcKy1z7kN$7>~*Vd+p-jq#Sv9v(o5RatZ9e z4U^HLYqDAOcWvg^k+qMu^!`*J6u=}aZRQX_%*4c$+5orL03BV(_6-jNs7K{|&pO0{ z4$c0TE7vE#i15MqB1V8?A3p@=y*X(1dLllbW0hs4$*fpKR_gBI)x~liI6Pbmiy|jL zuHBR9ay{$T8upodZG+8T2N|2h=VZ=VZ`nh|9hHgk^LX0FnU9whB#{IWJ-E}3 z+&nXDu7x%6t*6P-agN);sWvIGp zM`P~25E6g!B?bm=iQ7f%;T_lVoOL+%hxs~;@PY_yOE%x?&F^pBV%FX@s&>4gk*7{h zuBy_TytvBeNb9GQ%fVeDW8nCXe z%^EM*dE6=#<5?*fX=VU!<(!crH_$1)wPm<2&%4BGMJ_@05O~fKx>iVNRpk}1i zVqE6vT=dmSdoPN{wj)?_$!pVF@$Cw0CSoxPf}D#>W8JGe)67IM1yv-^=rK@s`)WHw z-ZkagnOoAAc>6QuUZ4aM>*YDUI8;hYD^17JHn`l)qxq%Lj4pc|nUasoBc`Jxvmu$F zM2aHzV+&Mkem;jl?Yn)e=|fEYWmM2bF(vWorKFdZwY$IER|3JIj^yD5pn2-}5dI4g$Y}oiUk{DuM)n~Vj zK}{vfymqM)D|!~cbYw(pYip=bS>V&+3mr$A-2B21-?5BL-cRa}bE7^-URz)U4)^WD z7Wl5C_|XrDIs{JOLL`5o4o_CS8cr5L@(@J>RX_$Hb&LmeQc{d=xdT=4k(o6hlI1(} z`eZhMabea5u2C>x4O|`Tz7D+!(lKpHM2Iw_U)-JTL};1p!`I6zmsRiUx$lWA((j^8_|LolSy0bt zR)(YcAk!zQ*k9$bGyYpqO5cwsi65XMmnD@#(1`WCp^B0gS_IN<{DI#!*44X3pyiOe zu>&0wX|Ig**b=yAwRJskAg|l`rG<-&!eK8B>zD$NPllwN+w8jf{P-AP$!8OQSR4l< z$(;EhTg-L)_=iWhQe~G=pr-mX3<#^4o152LZ=gzv{Ps&m4xn?HOjy#Wq7ahPt8s7^ zZ?Y*vU?2=HrQkH^e6;A3oVRCxFF`e#NAn{@9IGhC2@8F>QSdKs2PA&;;xoYpy1hy# zO(*elnwc>4M3wDLgu2UJpc~|J+cC>icXt8`hG|RLz#G1!BKWx543}{pi z`n*RYwOOrAW3-A~L_v%*!P)G$S32Oe@&Xj?-CGQw#?!mU3zqawQHNsE-)cw*i&&OnT5xu${Nd1quxHkJaszAR*@FK1O8(}VUc0PfM#>13|%1m@$3%S?gz zyv?2>%*VrWhD7xW-HqLS+yx#uYD{zD>c(y^ulTh2F=026&54}u?p-Y|Xeix*)ZlJ> z9|=Z?ZD`JE*vdCS0TX8tX3RS(JOt(Ouw&IxV5NMrJxo>FplfNm0!Dz^;bY6ahX-0F z5X3~T`ZH2XL!kE6-Zz*;Yu%YI953l{nHRh-D)9WJ?| zPUcoujVQ=xarZ2iTLZZt8Ou7hv8yeDHi^+Z@9SJ=zc!p=8Fzk4wV654SH?5% zO`h7w&mUAl7VB+|7%(nQiAm?H4Be*C@3f;kp`*(d@W9#hh>k-2Id&bsJ zT~GUz@A#I#_NimI3(a@$a3apdWPUK9G++M0?lZ?Ow7;vgfS!uqVa>b$G9!wJz`G5K zeVp52^~vbvOv^WmP3zrq+>hLj3nVI(051jh`UW5>u%u3*FnNI)2o_wd3Fgo8T|bOA zf**TmlGh_e&k7V}3a%@(_=rar?+C?fMGCAbYQO6n;JDivFR<23f445XA6BwEy8KO=Rz4^`Q^}p`DsS|MAFAH z!=A#6TAvYv&gMB`QKKk%Tpr84{J{O+w>)F|E-WRGtM{)J92_{$IAmmhR5vxz zkji>^v@W+1J~O~_2TD^Tm4A2!H3tj~(4e`iZ00gE1goF>y(#=Qs)Unhy0v9^Ih~*@YW@Fz(Q27vO zq%UDMvmx1+W*-t0W2@)B0)3$?HR04g_{n-HrfXyKAJd-A=UoHZH5BT0 zh-h`CAMT2~yV%M&h@G$BS|)h!!XzzgJc;LXQ7~tiy>}~d?}F^WEg)rfe0AIeWn3*Z zB3CAJ+NQ9dB=`NQ>m~>yUU+k#Sd@F`CH0zZuky!I@K<$pg3~sOUc|ai_;u0LR)ogo zda?XqnGbUH7O^XYfg!^oV)`0leLm;EazwK$Uvfw9-@(6tCQ6C~9~@rm=#$O-Fny+~ zjMTX=y82U#SJkYiYAZ>Z%bTB9Z*^qQZ(E9w_Dw3L<-JwT)h_*yVWW|k#Eu=V-=0FS zWxYEosz{KySXi-$UI>oEhZ#_=Dw^`lysm5=M;jtNv#~0iH0_oVQ?dQJca*{=peL@B z03+$VvNJ|+w6gygl)lyP`{R#oRMJi{u$8;Rm|*8%86QbfRogZYuq7roel7X=qBi>L zsofczyM)G$mb@b;u3t*DwKsvusFvg)Mhx$d2^7`W&IJ-Xr-XXnQQy%nd!DJNY>MF# z5XlZFzs0+NjXzBgR%?5M7T18KVn$q#?Z-LHrDX4{5M3dBZTj3=zTDZDgOod-@k+|e zmE2Hgv6tzfdnFItBoZlVJ3+^Tw)B&Jtu=MJ6C84KsEtm(leCdR0Ny_8}j{a2GDcFm*l zEqK;25eAVm0EBXGuarfH^w<94-b!P8=Yj?0_IPfYHcZOA@J+{%^Z8SFUU#LY_-Upb zUvqGF3WYm?dav@4p$%0Wyw-%+~IQ%S*oU#xsRzm${as6-~qf^3en{`da9 zi6{>QD^2Ze@YLUSC@WLVAk<0+JXB>?_%oY@m5JwIcHG{BTV>~HyolereN`?U=0g=X z%jn%A;`hmE9j9nRo%wFf4_s5fd1q}Xq~+b%JfG$IlH{bvX1v>eQtwc=9N7gbm-&q3 zfW&eB+K`aABIGZhTj*jPmcL(Gg*-ztQWUPX%$0o9lhMS#kr(WX{g`S!+P;n8tE$5$ zZx(iht_h9Lm-`LqtP@Xks$~LxDf#$=|qTT9NX}yyY~~? zJ41=^CO|+fG|)q+Q_J^|snxOW1HD(L<3UFi?J!^I1+%HUze$3s8lx?ipZri;wx*W) z_1I~`=Z~H>mf*zlPZN}JCCOXmV?G#9fsndnQz4@5on;c?`>hkt(v2KvL7(5JRu9{~ zKZq=tF}>e(U1s~@o!u#_q-Y>XDrMZ~C@RH`TW`UpVqAm3fnY-^xE8 zaAW#<;R+Z%cfbQ{i}gkFa=Vy%^)|1{m>X)M40{Jp`1Cg0Iu^WfgPkZmKJ`fFw z9B!AClnDHwf!{eBw4|Q3cBO}g9m1Ytbksq3)xP+B1BJ43L?X`5gG|F|u|AVX#PN4C=l?rhZb53i>PF%P-Pv*VaB&cGx$A?{ ziY~v5ntTKP{2ybXzyHJX4`ZEw3Z2pt}*s%`8K&B2BJdzFXHx`RP) zw2%}wrzx4wa3_;2szFK8;!vm@97M=qEjB|0TI2l?aZLyVgN!I64pH5y+)d*GqUF9% z)~hozuYeS6H#RuWN#K1~PNft;SKTI@a}~Of@EUZYS7_*H;e%B1(k}fc zyzCPi3}#w-uqDHugW-R>jdD&hZ5UcjeL~%i0-Pn-X1UW5sOL^dz+S$k3S5sG-H8v(vNauH7^%uVNdIn5>uq#&dE@7pyjyo%@Zqc;GGx_72 zB1VP!->rgKk}963AcB#nhpYGA+gAGeopp87%_SU8{F!JXAe=$#Wu(fDe5u%@qa#TS zva>?wHy&X4I=Y*X3qiht3P4DO70n{c&u;0_O+s#lOv!PSoL=#f8y8!SIn^d%BEj=LuwmG}qsfa9N4v||438H=j6HrfY=vtC3>N=Vo7GM|$)_2nZs3#NDx zGmL#9@qRbWnyS0|UBkhzb$pb@hzPW@#M-G^#_!-i_>lw1KEm&ur}|G)*_1Ri#>c+L z55R~4G;{wDrW6)J6hw{6gr}jCh5Yh-_`vuqySMD3aF8PEvcoNvQuj z7sI28B0!|G1l-YTS+;um>ULO9Zyy1K!!{9qn0VfpQ7$tfQ=aE-sC64)>iJ=j|CBr6 znO?ZN7ttZ2ql@7knj4e^>Ry9uICcf^_%Uen8;X&MU9A`EWm2I7Au+g*B6@n6%U#Fv z&0d9O<0wqBvRbC>*vOYBsmaMt<9l^$u-lzfd_U#Khfz)zf-!y$%#TD==qf6r92;wz z(@i9vVr{`?WJUa&m8So@`c!!Fi)H%Ef`TT`{P1Sn3bd=*@eUeg*#@j53KsXw);9r>6z&&;M7?ka5os^DdcizyZ4bokpo z;D?othwz)@H$o0p`$;lb*R$cdk+L6*0etQ`^wTHn(a)BX7A7uMDXkt_?pOM)rlwn` zSdxXk(xq?zn>FR(oKSEPDDCa4^C!(?Vz8dc7c4EHghZ+J<`7!M4*NhkbCl(aMk%jE1-?2|xbtkbJAbqzC)!ZtE@Pj~;Y4nT)?W%Zf}KaOlIz*Z)Ix+K0A zoTM}Jq3GWQL^=N+fCcO)s0p{X1*uwDUVI3?cw0cnotq1} zJ~0-a5KyJ0XNQ?lRl=<@i#=v+EHtc}pGaZUP?PB%xwy2e0#~#~$!Nhiwb%gAOIgj` z)@(i>!B2!G;CTib``$KbW+2hrpI>%)q8p|@yCNAVIw~w2sMu`*A!1@;mIQh~Tu#kS zcX-}pMMum3NQs$ori*#gp0M2H3 ztcj>BEbZu zIL;=^nhk?AgGhK@{_N#0>CFE&Ss+_l$A=ibv%Qbk3w#ff` z@D-7nP!@!P^WRt-_C*x%_P)2+0os?Y^Xpqbz4L^a?d|Q;PijU+l*6L`*B(l>CNoy(H1!O~AL#Q}GJa)XS@_rW9-g58 zdJBAx5&}*9Yx(a1{{P28(hEEc%*#u~iX#II3=GoW1rZ*GLppnNviHkp;2Rhj2?g;= IQNw`$0jb{_dH?_b literal 87009 zcmd4(WmBBr*8~bDAq0ZEJHg!@f@^TsU?I2#w;%5A9^5UsC%6;b-QC^JCjYvto)7TU zsWUH9Q`9vxm+ZY(cdzaQ%gc(x!{ETYdGiKdQbI)W&71d?Z{9$>fqn=6(oFx+@XedI zXr{u#@_KLHIH$!&wM%u%qxE=63BHGd5)TZcH!Dl2TQ$g|lNHL5Uy5OUUlmRqPTA%| z!tZnPvt)G@m6G!TS{9O{eF3hX2;UVU@M5Dm(Czs*Z;zBQ)+d)~Q;xLbz2xfC;WT#( zPfnR+t704v^xDjWA*;~V?^x6?l;<+TSH^NJD46bsoRqiArw$q0>lB@HwmY96NpvG9 zIFnWxhh?6covr`2!yGNriuMN=EUJ`_Zz~c^P#B;_!j7DYHY*n@eaj@L6ID4L|4Cj; zpI2OO>8Lyvvn^%cYt}pR3u}r%VH6>D5%l2}{|6{1G;yB3P2#mTZ;;+diU=w@ryVXqI!~ApLY@vS^}feq zw)k!14zD=fANFxBJU{>sXHQu+#~! z7&9JDPH2%!4>&kDZ5}4HC^qF<)G83YPUF_?M)Owe1Jom z{K$V_rd7YL@$c?s!%eEv*H~Sn{cI9j)8FCZ`kr?|+Hx?d^+1#l=lle|zVMM`BEVnC7rFWfYIVo1UKT zkDO?w$QgQ``;Cf3l>9U1qO;cJ9B=ZRx78ii=)$0#VgdTE#{POb9do|`tTvd z&@(x9JCci!jhy_0ceP51>dr{Iw1mXx!LDG`b}kiWd%68GBXU7jd}br)50!7E6Y1%+ z8&37Sp3u?J{S)YQn!cNx7gT0Wj@;CfOn<0aueV;2y;HtDBoOd)-=8cpx1%JdVB0QK z$bmtl{BM`jZd2m_&Q0@IU}z|8Mzl{?;&^hl%f&W2R9afvsr$>b$JthgKkV!6T<;DI zL?k?(uZ1<{tMV93p!=T8<3wK^;q0{1=JEY-x@;kyMvW0xX1PeIpvyioD9HKcnNLWx z-Seqjw>2a|CYhO7Buh7N8G(==Jd*VSxl9A~sK64@Pz>U#pD#R4$FzEF+96u%&)|W! zM>RX0ET67*=4lLN@ICzTh59ZoKp~rEV`C$)8DO_Hu(!W&@O7!l;pOoHF`MYySeu8N zZ3LZG9h&&TT=kAWEM|s)SA=H-p@43YB3Tt*ZRkBNin*_PpK_ic4^J~BEXLP`1ZtIH zA%B>l35oc3|8~L?iD@uipMvv98W&53bR4C(50;Rog+*ybMn+P4SM^)D3|^`}B|YB{ z@I%AH8yg$&aBv~$G>)5n$f&5ORZumoR*RfY$BWPcSYmhIFL%e-+1YV$aKyyKHhLq~ zitDHZN6#7~+n*;IY!zpatp_sjc%5?kI(55!O|9dOp3m&2Ll%M5% z%^$1(h6qtm)^~Phz-|BeljuxlbvTtnAhz?fV(iIcBdRI39>&)vAsA)P}a88g|3-Z3yY#{@pF9dEem+g$Q#V70c RQDOfYp0u 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 z z6KlfTtmC7FdJwQE)2tPO?%MC_?p`D7ApS+U&2O{%8BF9#n`e)JA(#nADhJpgg#ttd zfz8^|!h-QH_=?}ZKie96O+6`7ZFK0({SodZ55uMElY_)#cE8*i%@P#+(|X_USPkH0 zJf-T7+ugI-r{z|AbNTj>s*Qrv#T;`AC&WlomYq0Sg~zUb7Dq>R(f~MR8GOb1*(xA| zhMz|9EhMh!A!~`j6=azyDUu8 zArSI;UfxR9BOW`OuRQx+Upp#ML`a*3zw`CMpw;!zkSR(nGgUz7nO=zX*mb^y%E6 z*eb44>z125pkMm8z)p+7ptW{z5Q*Fc&u={q$HJmStC%k{4Zq(ni=$U%W(iU)=E@~LYtm}v z#A{#83Ayd?7))f6qbQtSC*UR1R?chZ%s?84c(@V^9YDlPwVEHAvt>R5HqV~(%cH4Q zv#pR@q^fncVzq8gkSQ@Fmm%PA^%I_^4OW{TTyPtoO#VZhnYUzkw+`9V#663;O|R~g zNEU*5v{=>3%FphT7rzA*Bd}INjdfYA6WZFIt56F7)jYUAuQePwoSoOGHj3V>JsRpAv_xnTt#zu{~ak7WY!+`KK<$7uX+Zs@`owxQKW;xTj>q-=he1MuHLKPL! zF6{i+aA+f5+6aJ#M3lH7FClmXvcSMCDCh$JGDyg!=-5Ct^#;<#b|cg4nTeG(jomWE z*$`__r>hL)>Ojo9ueTQpm3kQ2nmCKN%yRA*5Plse^1n!=0-ItX@K;kiK*FGXmW73e zmN!Elj0pk3V2^`oIuZU{sW65<8b9?zQt=2-%OGOoC>0FA_FV4+8JiBFHkS)AT4l$* zaY&Ufe*Iv*8@@S_TFQRIso(KFPDZUvb8B<6#(ITcMC6Q4KtQ0>0=W32!WB%>f)qD4 z_v|^<8FXu)0~{QFkVoM9Ll_7{_)?+vt^*2#IuHJ51idWxx$`Y4y_O%w_i<-#FMJ>` zi-w9Cnq$dPkH}K+rAz-QgzZ4Z5&QwI99c8Bp1;Yh#r0`=dStqH<_2)G;S^RJ=0ZZd z?dqLh3?B0RnT#&3M#__u{TmoV=|y>D4>aYfdCV9ekh3*50NU|3AdNWmJ{X z*Y>Ld3ew#T(%mhMG>CLacXvy7Nw<`AhjcfR(kb2D{Vx1J&vV}M;f!%UobjIhNe8g^ zecyY z_trjd{EpFj*k1b^qc71zlR&Rp_0=g7Z!R`j<@{$v1@ElptO-_u^6gN02D{~ijmwK`BDE%^)>%q3mE?Zj^kHMgob@Pn&5^#udD?|Sp3h4raSKb3w z4WW__Xcm{3brAUFuRr7I0)sOpF-R3q=dpE5#VyJIiJeDY$aOv~WigAod4o$z#2p#| z?bvTrFyji0=_*5HR-a0MW_RaZANP%$wiz&SbOSsGV^-7sb2)Pg1x1U;dl`?CY#Io2ywX#4El}mwWy{bipak`B=JC_>cY;%)C*DTDJ2DK z+OZ63%}N>X$W-AjoVJhnAOkx`pw2f3B5WvI9oMH1vqj%e6_YmgW5C)Ub>@|&bCWy} zF~j3eA`S&!0lyczxYz(6Ke3>OIIdxy#aZVEJIptJ6Vt_7#eo40Tm)ERf^xQDhE;X! zERUmd$bSj_V}##19`pU3+MiKl1`dR2k?73#k%hmdWlsB2zsE|6?z~$N#1lh?8wJuf zH?KQ?iMr>%G2na~hAXrC841*wu#UH!2UYqT{?1=kg{2jLDXp?vSN5Q!Tm?2Nf>h{r zLM|s}etucop9N3ESNgia5&V~FprDz-hg z?Ln8Fk^vOl2&9rBV8hroF;}70IZD;v`+=2PT3SphWg8q;Fc3^J&&AoVmx{G4FM$?y zAKys#H_rOJ4qw8pfGCSQh_5-?{`F~Tn$Es8SCug;#H+|%WX>-cRR!GwL?^dl&zf#Q z(!K(GlO5eSn4RC04m$fO`$AsG4XEa7PiJjxxm0->prqbvcNiF{<)(X2p(Mb%>*IW*!dp zg^-@Tgy@;lF!N`Ea{U9fInW$b8A@ifxfB{*no*j{W-z{upf3Xlqh}cZ2K!CP4&&?+ zheDK424pG)$#h=Ng!%%$CPx5VQRd1TL{!0(XdZ3$I(OPg3MmNK8rcjUReIhJ*eq)N z@)$DIG#qGb>k6{JkS`P3C;X!80$BVy3AewceT@5X!>$XIFr^x7at~n(;|k+c2i<*r zGn3uj;@V1>Vbmc_!-*V-Li1Dm9AMXT+nk5@VEa?)iF;ZKD&5_$8LX}GR`g$?b3mf& z2ne9f#cc(U;I=+RYm-<|ZokvuHma)oK0KtU+%0VQ zDXkXrO9v3)kn$cZpC6~WhFu>m`ttWh;(YKRbVfwX6+{EeEKh;+bYsPgzl3?D5-~sCvRhwJgeBd zZbKJR1#rZll)7Z|zd2hT8Sh5LXk*h~$g-W=3#_|9LVMMD zNp9w+Ql`bAT|$YYutKBOytA6q2P#0qnKRbQC|zBLJlEih2ZBz!?GZx*gB#)RZ>9~m z4sPjE*fRKC-)vRsp0n?kYBtybssvt^x_UW~1j}E*!oW1R?njnqdNVI2&??YUQerKz zzt7HL&~Bw(4&wwm!91YM`AhRn%N+!SU$i9T`t5G&6*Qa%Q~PH7DS`Ifo0jUq2I|W_ zoa9gB7-Ya+0SSGTMO_r<)JY0i5Fwey?!DLj`t?Uc1J|f^t^m4|^=@xPTbq{qv*lcK zh*x$jLCk&%hb61sZxJ{-ES@UG0ETTm>ggZ3Sy6;b8a0RhK82`#AO2Xb3XLc$C-lEE zl#CA#4o2Ho_k9Te<0C8%a|YWb&)xOv&1}uU`u1-f|7gF&T65)CdiG+i>bpA`4W_0N zHRf`i7EKAEt~*EZ$kfS3Va#0lN)%|eqAv~4e^;YdtImnfH=GV8E7NEBUB0exonu~O zGb%+VVn_{n&s=QmR-@*Rh|sgKupCb16ua123}&Is0=1)Uy|K>R5~s0jy328gFr33} zv0qu)Nc}je+Xc32iG*$?bfD5_kSRR&5{~Y2wo;37@hi1`*w|G*Y$7sRkC7%B-imfS z=+7!R4iUf)0o$#^r}#|Yi__J%D!~9*V71<#E_6McoSV?`o@V>9#h~uAwFqT<)7e9F zn|?;0A)t|xnEkE&hi*>mq9EE-e<1K(TIZc~p(`D-+;l%@u(at`v)}YbM}ve}?5^@A z1-*unpzgI%E%4h=8nObniz1H}o#Uo4Ho+@peAHBXgd+R}0Z=v3$rX&SZeEeCouv@*g<>X+oTw<$glCp{B7=_UFFuG}-^9=@{FA~ja zN&t!!NnJa0a>=BsW*r zxw*Mj_kEBAO?baM`qjiFc%EpG7Nl1?t*M9w8A78p!|vpR!Prm(BRY3 z;*(n1Xp*4=MWJ{#1aip^iJqHYyMbR19>5Uh+nk-}GGJK5ACNzqK?ppe)9LQGGf$+s z0&yCa%!VkfQG=czzVJw!39RIf=!@0}&vpq*U`!D80@*?E6Q?PRKS($L;cNSNb!lm- zmzmX=_{GADEL{Yiehzo`NxiXgo{6b4l+Mkr)476?<9NI@_U5yl>3*Ht6g9>cujJFI z;w9DJuy9~>aJE=s-)wU~g?%jYeCsVpy%2LD`Fr!ZA1J9k^ETrYNEFXdWwAl@3MT$) zyn={nbaeDLJ9EjSnL8QtI;gC){?B3|!8=hgF%jt_P_+Lc7cMmP#SeGU_Z6t18Er)FhZsUh?>^_9pa{-U{S0sor2AAF>KFr4>u~6|7zost;N{&o2_-c7Hs-A( zTZ^6QA)N*{K$B^~qEWW%4E_wKCnjFKJ>Lci!N%*abMDW|z6z!XdnGThgO~g`x{rL{ zm>TbAG}8*v>NAkB)A(i8;(l$Vq!jltE@pRkH=b7Qti0`MFlK$X?cG)D1%9wr`pp0Q zwKMhostEz87TkQfGxj9yj=?^g%Cv&ofG`h8-%xI7IfjzJV)Zzs9)%OgSB z1NGDDyzydg$Gsoy{ge{kSO*icl^~lDnXY-$*!7QO^4Ot>4BexX#5jpaC;y`zq;a6K z1rVGp4wla}$YCBnq5pfg^}N-f-E~%0R#k#r0Td^TTbb`(*SOnmx81#uafZz{biA~@ z+IT0I&vfik4i24_)w)cTF#o;@&tI&NotgOn{aFu2`ES3-bVORU`X2VUO_VvuP+AmG3q%ziKssih5vR;OgoMz5K>d z;^@Et6*we;#Y0H_F0X`N3B#)Y_^*uvW2$4o`tlE4kRl`e!G}KP4WH z0KTGrz;NIN5)#8H>@19|01`^b__aM8o8^3S zXaVpOfMX%M5R6Ppty}`!n(xHL`-p`D z0bVcP=@9V9=81`kK?R_quI|NT`%@_M`RV=`r2kPEzK4aGKRw6-#~n~q=u{cN%<}-& zK(nhoK7M+CzeJ6Ri3z3S1OR3Nt1Kv4c|JX0M}Uj$Y62iDfTx+6ngZlEx&+95N~FB} zYeKyf%`$(VNj?2ML*tyshc9SvvZ8bre=ZTT^s3_Sn1??uSnuBb&~2e}!h@c3zc^2W zNhZlb`SAN{=;()5Q>cQx#9{-@>L0Oz-Za+HHkYguqs#C-enP&mls4wCA34H0p)R(b zP>E{qp}IxI1|?&XkSG4;>MGyb?G_z)FSJH$1@VvK7?+j?JUvcZB3jM-zKGCZb<1Gm zj}1tk-r^&6NAS+zTUM7-(O;w$5QZ2=_N431!x^8cav^RhNp^gISSR3($*bRH$l(Qe z6SQ0Jw608b5fKl~v~T_)uN|7~>gX`^d-a}k-{@v4EJGK!aHmMof$d<)8?V-^tn_6; z&0U_@k5d3?)D2c#T%h2)HZwJ?wO)Bz%L@Ytk&zTO8sE9g{TZb8=uO5C6F=J8+VpVz zL2-)T<>VCv0Azf$V_{+vv~~$G2!=U5YxjWwdmi|G@huUFu#gbb@$8;I`Enp}MkedH z+6fgO=1=6d^OqP>;&+S1Tvf0uSXIDUJO#>nm1$t1QQ3oB|6vR=R%F8AyrvUml^p(~ zz#12#_l2WKeYry2)o+O7`Lj!#4PUc_V9Q9U;pbs2;Gh2V z*74UzWajGhy1}QYOvL^14mi>uKYuy-Xzl9VZT(D1E~yERU{#nBVLF-YVVopjy0#;S z54@`4bS9TRs567=VwaIV_=8kNWjyNGUq5E2OGyK;L=@y z_pZbGu$5Zk%V(lxX0`HfNrm*ya&(Hy|GC(mwya7?y0uV!h2QVFE!%IsKfwkHF zVn?9`B!D?MAe&<;4BH?g#pq<{;9R`U@K{a80AT~rKVQ&r&d1ACj$zIUCBnSIS_tS8 zXcv)qT)sjidRc&gx#e3pW)J4W{$v@cEVFlqhwZD^j`vrGz%?%ThE}C)5mcOBSaolR z0v$J^Wzl(%ivs`!PWS_${=LW0K6tn4)D;N-QhWl$KwuFDv?N+EkP=XDp;Y3=mgX4t`nY6vo$=+v7aLVjqjjG}? z8vWQz9$FQ4*MR<1U71iCRxi_yW29HWy3Cb~&xM3o3B>>+LvU0+{sIAe*PVXiCFR3Vn)$Wjuv-6cN3Rn2+vz zrqtZpTX%$e%?5Oz3}XgZ2`_{AM-_VWdLs>+0L8a&?{N6UT~w&`8H?KT@&cxtqL}!- zY@vf(%rB>Z*pXj4I^an~sRacFRy?*P%+W?}frD!!EU1^*G%i<#NU3ok z^hU7~SrC>>9vJCq5kH91(!G!uHirPD5yP(FFDN-lM(fvV)*-T&dRs_@lb?uo$!wMyJ6OU!o9< zTAyq`W8R31->(`f7(WJlX8yFv23hLlDbUkHzF|9w&m({J*xzoobu7?ZvvU-p+jqc? z8l>)Nj}bqJQ)8;fZI{AuXR5Toc^mWPYNb4^q|%W=P2Z>4t>yWO9K zuSy`AG@6~GOy`8z-{@`MbQC2P+2XIWBzCqoz=e9H>QKK7jzPwMM@7yeOCK5+`aMQ{ z0BD#hR>5qA*t4MQ%MuC>4&c1zt9&0b@%#7hnHiNr?^7~4(SjS|_ax&>^|lb>O1$Pu z24-fV2l;4v=sbex<3K26N`D~^&_Etwks~f%ZI{1qt{4@RlKK~!IGmZwVh_jD%*0WB*3;9&px3-f7iEvbM%}LI zHkFUo;R|-{>FJ?b8dth;i!@QgDtD(-{O7odg&6=ZKhMg{<4s4J50IdIKc z8f{<&%YLQt_lMpT@882LE1tpFEbWTnPR*p0V1ZY-`_yxc)GO-#my37e2AnqlJru1K zBC^5T4u?z<=3sWVr7{*)$N47w&D`$0Wsl9op=6n$0REQ?$RtAdVWd8w&w%JWO9K=+ zaM}=}69wm^uZg{po`9@&u+ce#p8>O_3UT+Uox#Z` z&+0}uG4fi6YG@H`9nBhXrCF_mS*BIFe@i^cWppp$&ptsGg3SN?pJcE=5!?)TZs2tn z%lQ9_8LxzM%=~_9YYPJd12DqgDD+}tV`INmz0k;B?7+x{5jBuPT3T8F#63H!YHfXd za$@5{xz57M+U<-7B3f;2Z4meT=Lm} z(3h8&u0JUsJ1X4Il|Q|lY;!-{RHMH9Lqx=EFaK>PSh`+BJ{tD|hM&a6#aX!liGM}r z^JjaYkfBqr`OoLSB=OCNK=@?{&b$E9kA@2lbP>HIqM^_$!~OlBE~yAmw%s=1KnCiO z>7W7`CzrufJ>88E7?hv9=JUGwCBXq+PnxFBx_2vMAQlH#%sdgm^WV7u!1@l=CHtK% z8fG+-b_)VKs$`5)Yh6N8_y`6DDIU|r!F)c8FSF*Ooc|PS0231ziQWmA=>je%?Nd{i zKz7h?DtSDT%5hwnwuYVYABj^|SlAG#^aBXbxE(k!0!+suK(YZQN{BHNP&{3HQ~TRf0P9+&;#Pd=h{8DPo)s5sUvAin_4ly=Ft-(s|ZsEE*Sqvaqz_1Wh#oyQJdA5se!=LezI#e6dvhJU?$gJ2I=v0WtFS6ioSW07 zYI7zaBwvue;m{T)VnfAD{CkLdz2iDLH>6w4{tkX$Uo9s)>*XF~-O`y~2xq(?*v0E< z2eKHF1R0U(g4W=^o=$wA2WitHs8Ko0Wl?r6GA>IR)GOBqQmF)0DwoG zV647$Ca5+V1`1IY!@*omJ9&Ae43JB*G&XkL9>Iqb01Gvc*nkxXBtc}G+j$s7$jKh^ zp%})&%IJlV25mXlzsryIHXgV;Z2;VCvj|F+L6Zb9S=WDsE0T)l{Bu)xIx3 z%JY@`o2z#R=(8MP@wjsYCwCyF`7h~$TBTlqk52~x6|S#6dGq7?&Vl1H(k(!7;vgXr z0nI@YAbFEQM}y-sgF<#Ukl=mKgksi}kdOco51@I5e+Nzud$g6MT60WAy%x92yQ@PU zi`j}786o%-z!0jdtCPfJ4b^tVgI`@zo3#HrbpGhl75?mo2P|Rw){Ms(a zX(|}Aux@<9zv$~cqFb81`gQiC4|hx=+y-+HI!pYSc?(Q5HX2+Qkrm%ZNcS)>G6l4X zApTQ;Y4~^%)Om!Df0m-OW&@dsqIyNFzypo`P6+F_s|{@?!2^fq1>AhH4J3_N`Qu5RZ5 z;=y1zcz6Ze?nL~5DfZnFa8@4A8zIo;}NYei|% zf|*&h8TDhHL(Z#sa*V1bUZy-5 ztJiJdN8(F$Hs*m?;On{_dneasyQCf=8Au+s)7J+J=Z`%zwScUk0E0C)iDtJsHjp4H zE|DkGB%IL_p2EQtdqTQckL!caV9cJ*Jr&N{c3dL%z{Tr@%+}~##Ly{sjzg!88cc4j zKBEc(QOP%eApQ6%SQj-=UH9)(Z2vDSCRcn%Sj@3h_Q5+p@dK8b0!=Q5)G3b0Fw_YQ zXr4O8VT*ix)YOyVj}qSB##uZni+A?SM8qk&d&trHi+{Ogl(uS9XR8Vc30YY9o{(BB zU{)DueVuwAxNsc=jz*`~s^+UaFH7~cuDaKhm~F&cxeHVIKLt+lXpc$no(NFAekTA| zwgASz3$si~`aAcBrtVt8y3+7~NGi9R1nQDHo^5AxP$_zeRjA&Ma$(pVnKb`4CDn{R z-8AeDkveo0`7}s2Fgwo2Rt&MiLUrioE*(0Kt%_$Str1DNHP@#w_)96K!p@M18Z+grj@`~1zd=l8Gv6GWc z-oEX@7r+c`|6w-}#mWY zX+3j+gGJ_cLu(-gMxa0IbJk%>GQz&4?VaLmZbRF_Q&*_@#c#GoC1mXuIWQlki(cq9 zluQhSY7)Z1dvoJ(#PD6!32(t!u0h{BIL7Da)l6DoRaBPGL1ub-G4u9lP8ierx?xO- zr~PMM$lHOu0;n&=UxQWi3W>3H%!!yy`}3zK<7CPlMwZuh+4I77bMQ@3Z&3&2-G(}) z&4+mxcq1EA)Lm3ab?BFdr4AX(gGRF%!zOy#@Dy`qeH(sg^squVDbE>?7Wqk|AY)q_ z6>+)Nqo1V`4N)ibQ$yEO+QKAYsN-v-=*54bzop3Jtoh+xDV(d;d~q6USpePgY*y?98RqDDYEKvyDq?>&d4u*h%XsLc8R&`;SaQt5z>WpW;(JyY=UV zyqn>oBnsx{weHx?o1#dHYj1)tTD^=blCE@TI!58S-Qp}yvaTtuZP!V&qms60T6wGz zR@zT>dPTPFpI|`09K1P)6H$mQ$5S^E#kS1TJuQc()=Y3@>ssVEjtTH?`^E{kevfPm z=@2IH&KAoZ&B%YV<9j&(bF-Jtqp%u$muq8M-pN(tkVBhlg1_vvX}LO@)nf9k5i@~7 z2+?R|Do~)C1X|5w4~msVF)=BT(ikFt@fkgf_!5K7q%CgQIbA;^0bW-s~z+ z<)q0whrLycf(H0QLtP89drYH_qHltz27OhW2DG0?OP^J(YbeN| zGn@5soqJ;%7s6Dk)`#Z5z~wEEAx3^PuY2M&Z1v9jK-dkj-y+VhZ--|ll|!6QtgQQY zBI2ZISfFeHxg-neM=xTfi2Ma&c=6bda9%H=ukc!o=)D8`it`4`R%A&$MSdAk+kt#^ zy4rPStb#q~&R2u*z^)bQVg8I}q`*8;qHd*9+#$0p7L40O>l@t;$vFitj)1+0weR{q z<7-KeL*zD4=L1GT>Lx9FVmpKy5Izl>U5LL3Mf8eJ{YrCX*Va&aM=p9wrmA@hpb0tn zA3JXiOV)=N$~-N`+snZ41}&$;&w1WwiPu&0_W)EwmHdX4FhC<>bNuJ@-$ z94<8%`uqKlx|$(x-`QR&L$-#ri+@8W$5zz1nvhqLXKB zmdGxP0#qw>rrk<9xaOt8snu}1hLv{qW2x6nJ6x=^{9EQ^!ZJKWH$z_c9ei(LEDt?2 zXs3W6I!JC{a73`eL7BQj23>Vdj56UNhvoyKiI5rl96G|s;hfDSZdNiAJojzT)r77 z>O|>4dJI#=L)VwH79r64#oiKkhW*J{|1ZU@XO{fW)@L#l$IIJTX3KjH$bE9{)#RIX zqz&DLOUH{y^s8Cr+5WW`|Cn_o=vm1`}OjdN?I!`vknMJCcATyqhBjqB6JGcsJeJCv!KhRb!9O|_A_nm(Fs1iH;&yJ zCg-W|BevUC{^?!Iir!>5l8=iWf6^gbmnO46a8wf`5JhWoz>SqXTkUcZfj(EuY(G%Eh;u@RY$9iDLxYl_Rjs1`z36;O8(eVU&$A=S<1_8;^8{*$N} zjeN4mB3QQB(=cdh7HwiNDigK~nY~WYAv^^`6_h@XxVvEuIRMSGa9=4l;EFU~_|#F@ z$HUFV!BXGtBK&}CK{-O&YB3^C$C6UYxpc!;%U4>vELSi>Qfv<2p%<>^;w_{QEN=8YTXlOxh783k~q;gu7UWfQI!N-6DYXB5m&mFZ2^6~aWa!C$cT z!d2j~_fVYn#|CMz6_}R9bYsUXdr{p*GFdmbAW=vL$jxNMGdoorlak z6uSVbzmJVcq||?r2w_7cM{0SHL-|OJV2@6()8m{T$8nN3vZ_Z+UI`wy`S!na0SAzMD-$P8QGgly1)lgf>7jrd z^5vb@#ZU69ge`Ucrz-e*8^>=hJs(igi3CzB?bL+n=vF6&p-Ca&a}(#|;nDA1$plua zz=mG9`Phf$u>*Csx70`&(x_Q`76_7UnB_t5g1U*n>xzZO<}7a>VcQ!;LGV9nlQv67 zu&p%q7z~#@JP*5~vOKm-wtbP4n>oGyP=zX4`&p$$mr1^-t%)&~>#7 z=6x<_Nq#YMVpXQQ$0Pq+g+I$%Lsgrj=g*4ylayY&-{80RF@qWj%|JC`0u%A(9({vi zU+?n|8yqCERL`yQ6=j2`yB={x!oG@SjM%L^T@78`qBxe1OB&6ul7fT1jDh{{0^-NF zua5boyxIHbh?cf(FBbft2RZg+XSB8St0Sgn4L) zJHo>23XZ()Tn~%rYKKDN;-u`dC+CSWRof@qt?9$nvpM`!#b0@q9M2~}H?f&R=%ca4 z8X+o(@Q}gZ8>`c*Ur(1RS=!=4#w?|!JJZEu)(Z0_EAWw^hY}{AAJh`mdsuel^E(qx zFQYW-sXy+KQKzVAJnC##y#*0oO}J#i(zNI4e7o9ui2{Ylee4yXMjAZ6`859^J% z!RF7y#p?7>EX$}UR0_Gd&lriR-OM(Oi55fHZ%&*`F?FT|j2=agE@s!(=gujg&tj_J0CM5JuHp>7 zq>E!CAG22oDQs=auX-1ioceFHLF1ldYahu-mq>C+d*6e`!ups$9>~ekGBw|id1bZV zNP9TAi+jEE#;d3^BO7uQeZTi9->OsN_O|${PTjcNf8A&Gr(;AI_fX_ySLZsYmQ@ze z;SPQf;aA$jevSUF39LCI8pvZc#eGZSRoKKB+HEv6WF&)bE`8afVH_l&lwq;lF2WL` zzFi1gRV{YNY|3La)1h=9HS}h+rLXECM8@{g36k4&9mCHhJeXw6dw1Uy?$FTo$}VX? z)x<;9Pzvj}2J+3GWsUdOMSm`@!+TE@aq~HOC;J)LnNAHhC4Rw5W%MpT3gH;z=xI>) zE?hjwaZzLnRVj!fW{amS2{O}lknYUeU;Q#fZ$&+loh|cQ~%D^q& zj*1(5$N5&~q$6qe!;L;G(}eU?Q~)p-mv_E@If*qP`2Vo`4zwD1esdm=Ys_lqA$`6< z8*G*LawI)P{mFc4QE3P*t_)R<`lzt>AZV!C*)>&F^B_givkUs&yD5d8wj5vkg+UH) zG3>BFY|RIWv#4$Jn-xaj+h?vj%_h2f5#2}M+Y8yF-=Qe*k{+Eia4>zNL03;hc<)X* zTNC%ZQ1C3n#P^b@-n;c|zPn4b?ze+l6MW)r#KoLzyT^*1Q^sY1kCK3fQ})y&oWAQR zrkpGU^{VCODCBaOZj7Bj19+$z%ZGoDu-B8cFcof3?Vq}{-^=XbSkGcVTz~%tBJ?fk zepZL7C@fx!lG<&#Cp$h30`aBaPV>kyFruv)^)x;9B5shmF@HRfyH0vKW(AekMgr4c zpB8@9*7BhDEg>=uc2O?)mNBs?eo@<=zhe5sA`;qV7CY^HcUT+aTREedCm#p;Jy+4N zeZsqvWfU@cMz^l^dcg#52Kai1CH(t_&jebgF;zy>9kL5Q{CK!6wGGP7!2f;3 zA8s)@05SCKcX+zI@RW(3RA0hRu=y~ogtw=ZX?&fji^`uZJ6qoYhbx~7vEnG-W?q`* zZ;4=CwSQr`zCrdR1X_ldbPr!VP_jKNbN^yLoS723Q-fCO-71Hhb-s`~wR}J-?sW`5 zJwi<^uo7-g7^$IB5mKfQA#h(qiBJr8`J-@3#!B{a_ZklBmR!1cYj%F#ME~q9{*otJ z*&kslqkTK~Q^>j>(Jt0Hb8|@r&>@)g?1lQgB~f`;XbRbaD5YjhCYD_qNo_ejw{2H;4H3 zc%Nqy+a+jxsj0Ec&rM&RG#M^o|A_s#Ks<1XiF_? z-O-1Mh7$C>RxD-j%lLTJXQo4oTDI79Je~JR$!1iMel6sjWFwu@J=gdJ3Zy^wO!6zg zeP|Lj^Y9%U=ptQnbWogRXSAMT{y5I-8^(+A2V9U6ZSfWW)Ofa>btqxHY&XbA}3N&HKdBZ3X_Ui`HW zRnzKUh5(mXPX15X=vL{zXkQhxa0%Em0a*(uR> znr=i{>fue%7P|RM_99O}IK48$m#o0hp?i0?vX!LHOzgIz#M?u(aTV{AT?4 zHIKpjzVI-qv5B=|QD#P^vqOuCM-#z^!}lPYck7Y}Jo{M&$b3FKzhXM^CwkQv7C0c3 z>UI;mynI_kK}seQMDvvTe@9WqtjPm-3_3g-qg)`qNWT7`gy27n8A!4_7GcAPw7otE zrD{$nQB?D*PV9orw(j`f-==G4u0xaP4nEgI#X@OlcGL0Vks{`e!bC;TSAmXY60jc1 z^#KHyuEA&#pH)Tt#|tT4ite(cv(uomM0bBu~EZ>AIF6z%%A#ywV z{M!GKnI+4X0~UeLjz3NGw#xz;G|~UYY5X!WoU=|}Fq&99MlB+agKY6!C*X_XcIWyH z?zDnGp#&ZU`BD8pOa(;$>}x`OkOFPHr`)@|-}(0OX&(1c0wg&a>~|7qvsFrcb>AOT zrJ#t9_-i*{pZ;c>?_*FVss$rZi!swGuj*}c7##BW@i(97op(21{?jFH$NdCH=wA)) z|75%A|8tG7U)agIqN1X}avB&Eq)!AKDgVmqaH1L-8ggy^#h>b24D*q0ayrPg|~j*Q~+&cx6vP2 z^y5XSCgS~`hDM5%lvHk14s=|@!tifJu@$fcOzqn+>tNyu6Z`)vDS5{n)tc zlpylX=71ts;NP65rsk%leaKIjc`-eRv?0CxEQs_Yar(=j!hs?$=n3=hehS~=-LFE+ zOS}a5*upL@^)WFq|1Ny*b)OgK8?*^*YZ<{fCJ|B5^Su|SKFOtzep{x^ASJllUL;)H zq13Q{N-)I#dYhMKelM^8k5SqG4^7ks2C}-uQ&_ECZwIF~#DVp4darihdbtq*TYz|h zTc3zb5f(HDwCPXQ*vt{#uM^@9j)>rKdw?VWx2ZSO(ItK);Nr4(k-R~{>wfeQ-e#QM zW}_ehPe@4kd%v?s>fa;EORD<_D%`}ozt+}cU0Du6M-?E`4fa`>DW6|h(EZw3&jbaF zwlmwB9*vN}=j}6RXm3;Rbo%NVZ(Hl~)@e zhA9Lrg@k+q1I5f%Bxw_K)`NA0TdQMP<%C|ow-CTlA*ltffFx3Jr&Hn&AKiI)PV>^! zE%WJ@_Sr1#KzFt>J~u8dOfJtYS}_}2$HV1fInZ(k^gl6OD(h-Ee=cusXl%vfbMn}= zLqEr)p3l=5#pST38a@IyH>^>M9K_?WH}O2qSe1Za9A6gGSA|LHU1$?CdzIIndF$-gXODNp+JE~6T28vn7=(Htw=PDT6Xu)wp<2(v%-VT^?&CAR;t}OSj$!_K2;Vs zI-2RU+-$;4p^77<^V>?BYE$iQtUSKkrc({B4<_3C`}YLc!;;=c5pp>^{T_fdmRqHR z6f+nC{oP76ThXk+&}e@nm&*L<-(rRKH6S{;6^q|O!sp?(XH}ie>@PA3%Gt&)3)-TG zhv(SN(W=ijXtB2DIvXtr=Z z9fLIkFC$Up$;MnY;HQ9dA%Mrby`0`fr)kx4b#(;V6!d#Rn@w%gG{CBm)2?DnVB1fO ziP@2i2c0v-B)O5h2u!?XLICCy<6YzBPATUWXwLdir6P&?R)|DV_sLgO!cX))<`Ezz zM_SA|9nCda-XjQtSeAx{#@pN5+B!3h%PyF-ueWzqty!LtTyZvpQ#R8JLJp75{}bNE zE>o&s*UwAy9^|#P^%~Y%+EUv8dV4_i7olEka7P^Vb~Kr(*Y$e?^}fEL;gfYdr8eAX z>Mtu)9jk>(7UK+$()l`-J;BfCLjnwIAwMNs=RV~};>!{W=ouJXTrD*Xe9q6w0~&mn zD@15UCMF=Z;2>~5UIL!^{(QMAy_~wbgZ)xOLIKdn;r+iS#9V@e67wEFYyr#Ta>JAb znBX?=&ZfZl%l&nCb>w*WdoHIhvd#6px3lvMH1ji&ey~3;*o~*rcpLjXm8Vf#^rbts zHMbd6L=Xs)*=U}3#|no)XFP5*D8wBs18kX4~E&fJNf^n5M}>j`l8|R>5Pa_YypNuhq3s zB4a~CHv79tjN#M|M+PVDuR)W>Y}8YZw>_EPpN%Nipx652X}%oHh_mlM`2~V`pOVSN?=#gYK@@)`Y02s9-z& zQXSUQ+|3JWr6O@zkN%_|GeGa!Pt2^W(py?+nlXvHrZgCei+X=y40ei`?b4^>xq;8MM?`Ut43OeV}4xW2*(7-fC+d9UU2I|7|fO zU}o*X5;KDJ4#1>uP!g@YRFUtuDn4PsK1O!=iwSuCv(6eYSyI0KoIve;!5_a~h zzGczguC6~r3qvnv1#{(il}*r>w$=L>1A`!eO-dO=H1X+>?}F+*ZMr@JRy?qmeTh6D z7#jNX=MRXb)`4V!oZz*n0BCIR@bCcIMHvrmMSquqtfX>qbaYvH5w9uQ^J0-GV#dT! z$@oFrW{$G4TFK-CUW8VdI{!e0;e+a}b|M&;_^k zCw9i@w7G^EgGM7zb80_V`_-X?6mdj!Ps-_+x>*0?}av z7Rv|nT6qhkWv!QHB9nL!#4+l@k+MDIqfL#CYjbmI7|`HC{I-GWO!D}t+AKcl0%JJS z`Eu&Q_T2`c@h-y!!aO+~A6zC(z7mb28Q=mDnT8-`FIV z%&rx!g214|8FZ%K^M3QxuD4_k@G84)Wiz?lFK%GqF82T29}VxnyE+u4?-{B@{UE6# zM6ccWd#MWof+m5k#p`x$LKGIt^@HZs=zC%)#acBYBF3ZHxr*8aUqXJ+lsb%w;}8Lx zYl(wgUyo@-3r5Aw<3wUfGEceva9^QyIh3v=>Nv>TLCWa6IO$zrt80jlajdv2-eT-` zCNP(Gwt+EE5f(^YsIV=&eh#C4kV)p&{}8Bf+GW!>qQ&I#)CmQb;}Jym0pqmMaaS|P zjm^^1l9aTIDwYBm(+LnyW$A!79c)aU?d`80L7UIA{9@2U%_cYjG#CtK;dVc2=476L?{qz00}1i!F9xx*%@jqXehvzlw9BRY8wS_h2_zTi30tG0Lj`Rp-QW4jKh zUd!G$M4(sTIEg3@yT!M^6s?y>OYXKmrf0$)k+%1yN&yja8ffy+yyd&Q>^t5-RdI0! z)AhT%o^J?#N0UoUN>6Wp8r>1h*&b^lokjVzEw6Pi6LG z*$bCwZMJncvZs9T)sqkojI#2`JRl@cQxoXj%{q%mj&-G9UQI;1JJZ-f9+*%t|G5$HC}h0RCc{PT`aP6S2|3fS2xj* zh3RR$M0GC@lt6?7hpYfE9TZ?t-$$HwFM$=3IZ{@ zpS!9_|9WOi#FZ~qvRl-J*Ev6Taf|FD!jXh6528Qh+dj;}at{0O+K5^VvGdcYROZp+ zr&vlF*ir;K>3NP=I`2{BWng|k}|J*UY&Kd<-ow=&LuXAa3 zL)kneN8f9Gfa9Q)uGY0NhUbzn#;bk#3Uqb=}tX?zMQi&mdS7I zd!FlpbtLw~%~R}Y*I87$(U;b$mw0zKFh3k+{5k93!&8|s04IU=+{53wSSEht1&9Ke zDD1{)6z|s7)uvH~gkJzGI?iml^?D%u>BK@`zDAU`UdQl~mXiVyd6epnDkmtfeM?L{ zIAb|wXG|_BMejq_2~|^Q{4U>^908rB#1HE{#|Z?G*nMly@k}(u4D0S*p4UMxTR2*U z;aPz~Oce#y{27^z{cmuqruRw(N$=F@pBH)=h{~=h=eYIs9SHZ(F)}LL$}E35{iI~f zXrOJnn&@M|P*Y(4{h8vk63;P8%PS(-)ydz?Ty=%Hou zxg(bFB$kYcxP#!GQ|bndyxAXZKB@ifKYdgYNSpikxOcay`fvG~oy%4F79RtdK%xdY zk3$(cWCzxOF}D^p8q-x37k`J&e%dXovXl zg*_bHp4D>eNCra~L~TwFEYIrUni0<%mM3)d9* z9wLG@`ahL}EWCX+;rZhaQ?KmH<_EyJqpzqUae zl$4Z~Zjh1&2}$WLQM!?CQ0WFKMM6NNyIZ;h1Zf1MySr!Y|MNWaZRVI`<~`oopKk9P z_r1CHb*^6|!r`L87eOC76;dcL`S|$2kG2)y2k9nCR`p9OYpb?Y zieF!8x$mUa1!m3P@r)h2+F$PTHHD%NR-umbM-{5bfN#vB$vf~a<198AvsQXsxUO{V z8IO0a^j`5g7!8nre^Z7`ZwTVa(Jf(@ov?7Z7c###PM3PR1tRqA6AhgwZhg{uQ*7l+ z*&e)QXZLVboVc>;>gL6M0^6j?&?mfG1JO$KwG*gt#z)~&Ep+@k^xB`lx&Oiu7(bjJ zGgWt)^w+0M)2}5(FMaf{ZZf@>S+j0$Omxk=dm4Rmsg|~Q^<6}Oh-VQ&Y^S^W&y4>q zGxMm=E~-eo!ipRnl0ifXC7!ju%aB03H=*XEzkNHyHU5X{Dt6Hcwyfv7rAaQkrw}y# z_YCFZWvpt+OH{CG6Wl*Oeyk%PAfR7e{pM-aB{Q9JHf9RgUogI$VAS`Cc?KyLOi&Og z8tZqD#+Vjc^=*_HURQjskF~;60^Wcri$DExNeq5#yYt=>(g`a!)6ppv(YvnvWVzQ$ z0#)3Mj~rbgNbjmEo~cEl%0f2kB5NF$m4>%XB5#zrURpRg-1s!Mzk8u5vr}Z4#IN5K zYC6<=`uX#}&J(n<6&&xVzgK}%Bj%@X-i&>YdV^?whX@e8P*kp4_v&QLpX|BTdv16B z7CRrc*%^{7`BzgSUAMpMTQAiKn4FpziJj#?OjXNk550mD#-u-y@>sF{^XAGUh_t~j zI@Bq3tbqe!=pP)}?V%6aXZ>ys6SaSMDI1?2SX}%LHHaC4M6r5uK>++nb3cg%eb)#c8s*DsYt;u;0dy_QhQtC!oGSFplf>uxM}LLtf_N)W%DP`)w7 z07zt2#?!3(YInE`&K);jY_3G@M%oO}ppQN0tfW)YJ{4h-iD%}qZmdijTu{1eB&-6c zzxY}(90NJ`0mWP_w2e4kF4&|clfh$U=^8i_e`Dt(y z3I-V7;TAmu_gnpEw(?((Ngm&^9L}LlIiv5gRi(TV5--$^Sm+E(;q~Z;>(j0uj478a zK<`m$HUI7pO?c7kx`;<}n>7dVEH{#y_m&4z3NDUlSvtZ=omTqwY{^n1lIy@}o)LAh z74R+pSZh3T<5J^6E#4{TbBY__Of6ztaOPSIyv>f|6unxPm=1IcUGXpcVw#smzPfH^ zrD??N8KSTtUn-|Mtkt9;IWh7+F_CbnCXqob@31gn`9|{8q<%z-vnJaVsjLozlE`WQ z_s~$bTKn&5jt4s{-8mO0;HG6$=RC?wX5cU}He|{zYu)WjnK3G_=lH>v7))HLg!=)Uq>=wJS){Nd)Zi}UwqGu`!ZM%fE0fXS zv-8}!rOk98HIy~F?V0z~b2wpn?e>Qufj$#QBhx-pi^CMga%oB`Dk>)3dZU9;Yh~F; z8$Ben)uM4}DXFf{d)S5Ef+{!@_UEzP6&9n4|1MRBfk@8INScg{Dt zz#4=ZY7v+O1ZUe<9;!53&GJXMUclfc6Y|C}GH%#3G5NvJxp#PYxwvF(WEKn1W-J+Y zBqqp02*9mbTT5%XD@D-1Dg@knhnd(q5AnJ9Ri^en?3()XQ|IY zVh=|U?f`Fa|4Yz+g-u7J%&cag*tHP-syd_1@o?{9 zOU2aVc9b;&g8f`8M86vCE&6m3reuqIkCB~Ps;gsX6!sM|p(1Ahlm14eMaI}$(-s~q zabfJH0UBl2jt&X>o4p2MEOlYD1at)aeH9I>uVIw=sNi6`9v`0_3}4*N^*lE!8hHCp zyV*ffTTjuyBqqWH4I_SD7_KQILK*%GtZ2B5&CI~+8JmFMsBbp?^zJIWHa0RZO;-`{ z$M8Lj$e>~TJD*BQoIO1~9Ua45%Lq^*BvSPbKoP|eT@Cq<{)4}_0nEIO8LudaeXoMw z_dgi?X#p>MG=zio|Gu@%{{>EuxOm@xl;5XNzWd<=!p{}K>&L@eZm|vf5GBQYxqO58 zB_0p5Hvj*M`uyL1diaLn3;8cRD!LZjq45!al43@*HlcaoPul1pnPYeUOH01rf41K1 z>#!;~^)hQ$=@pv=N4Ybq7j%?2H#fJqJQ23D2mHRtK^p%0YUBs8(A8D5HDgcDOGK=? zp`kw~JR66*yNXu9!NE1)*^mB0KVFxPj@iP^dny&8O zEq<4Rf_%SWkCSb|A8MDh{AggX=X}%Lx}*Ea(P?SD!ap-44mSDps$J7hFh*bRXCN)QXNzjB51{;Qr}1UoHpNW z?fZjR>|v}rgkuA)3QnL1*pO~o!1EMyu0YiPkys%5)^uGJNUuRv?B^H-y3uG#$y{kd z9K?h27viV#REw6*)?$2K+r_hCR-j!z)jB1&b~*?@3c1a<4WIh%$82O6!nMR@qkQ;*K$6u zD?-pW2d)nWt|RLev%1%z2`r(>oK{2ijx`}>(iY9n(6yia3IAH@xcL_sgOgOy`%XBw z%?wtj`Dm%!z|2+K+kBzXVRBQO{Qkx(q_z&QHhXh6$a_w}ZHEkyV4$k-SrmCtF@I`;jzjw3kkAk1R`-GS{3|+|^p`!)0 zB*K{@;%t3{u|5g510e5%Z_IO{1C5*#vGKC>zP`4dZ3vABi3ksF{|PA7;CQyk6`c0~ z5sBIT0<9&Oe6leyd5->C0}o9SKBu#jpUr8$4@R?JZ>7fNWer>sEeODIr7?RAa0@{3 z$KU`7#=+78k^uferd5gg!RYe>?fE5WLE*hV+yuzmr`m4U;9~wG^#El9D zmw3T@(-$WkKjccv%Zd3ssXnqyUZ6dJ5SnRTpMlj&jlhB_=cn>3-7#6p{`;^CHff)WZUFqy32+Pb5w7uqJ)>%6$!r) z5|NFK4WNXKir-!wEcY!eEUhA1LOMl9NO6m_w@Gy`T`f`_ULQVhDfcf~R#v z`r{z_+$#l}c!0-)q8XZQ54>m=X9xpL? zFBmj&nD)=5UNqlD!eLb}_XO9H&I=6U78$S8)rgxMh*fpj7^*Qnu>r{bR9K`Skqgty zQoU#fg2es&{Mr_PBO!k1g}EE`8*}#)VH)HXfFos9Rh7@#K6RsUhn@hoo z(}oh&;mL{5@g{*gc&a|=kWBZuI zc$$?gz+!)%Umc8HjGo0&25BjQ9o$1qB}{+*dfi6P8qPbV#57fvm3aDzpFiU;s=soV zjne1KE;Z%g;1CGSlv-3C#wvMsD%^Nl_~BBDUJRbi^qbbEH0cKaQX=KiS%+mnHD6y= zxdMDmGFcTP@q2W%Cz=xJ!Azr90wm;lhSPSGwe1QLTSShks{`6~y||=SD*li&B#x7e zO#iZs=--@nU8zeS;XTfOI9(})#J7iVsHnT2iyeL zK|d5l_8fViES1Oe^d0y>S5&A`5iW`mYon40>6Sc}r0MdTeo|fLfLXZzxRAw_n$1;cxL@ZWn8MCA-Fwn7w0G?i)O3McYn_r=qY7x z3wqejl*%z>1UHRF(JI&oC?vBvoTM}?(8}QrQRUpvdtJaVvo)E4Z!%dSsbKC2@^XP9 ztvc_GV-nxM@Tkf5mxSSywaXsV$>@(Bu}jZqmF<$Sq2KBUPkL5Q0LW?q zv=v8~)2BT-1rL5$xq@5K_C%Q^F+oMMc7+AG*!JI=gRhd3r{`0!$p961PzK1}V2DVJ?XVk*^7oiW=SZzQ?10$Uu3Fj5^6@2_~~U!JL~Wp?;jewLB7 zHZsb#Z-(8d|07zHz%R=#_N6!Ol;*!m#GqcyHV|>Y{ZtYi79YQ<)6wFOQlNE)A*xqJ z+CVG+B_w?|Hh4j)R`;1pWn_{5hBJx#;kHhp)t5a(iMNXo^gL3aM}*t;#b-d?f*8@C z%Lh4teTC2Nzh{PbU>De>;7UloRtbmJWA=}(&C-39&%#|elZ3IYfXNhtn@i}U+K-SkDfUz=0CFQxwn3&6JmN{@_w{~QW$`2v|i zT#RbYYZU#>=|(%;fm2#F;B)TjsgA?>54%8rN6lyV-f+&h<|@_@zJ6WjDPq<6>EFhS zIDNMHJjt-gm&z96p+j7EH7!Nvl62w_^=I(p;NXBGR<^r~hwA4|L|o%p$Ibbl%bQgY zqk%;lPZ21ULq=WcsJYH{}~$GwnV9z`ac}a=f-NhRw4qvDdnn4BXAwMBSlv@ z5TG*3@05Me1i^=J-wtLgq@z(IcBYwXJp)=-S9?F$p~Aq+BILgqYyS@@L&LIf-n`Lt zt={zouV8SS6$aMVsg^QVCqAogabpX{()RWqFjM9vclY)%GVQB|$x!`HIi!soF)n1Tge?iq` z#c&~Q@+o%5X%)@uhnv0Y!SdF3`ae5=8v=9u9GBP5)>3ivu&Q<@%b>zJ`9bC5)<9%)`^9lPSapI-zh!4-KC`#~ zJ_?vstkAwX(gDa;k$vaKhU9TyLBeHe&L*vY4AssVN&?u2s^u%bmdZ;gdTrcoCG7gf zXHMhK@86n71MC6_i%MZw%tvcOta(^yBp3ldL8n8cupjTNY%NeWIvtE|`J9lUK6=EU zUM^LXGF?$&e8aRkQ?}DHVhK$rmxZe3PuE}Iph82~-wH=%?5kqtk;Q*#v>X+7(S+Uc#ZLA8zj&+#&Yx+ z_f*rXtE-vets?^GAbIkwJu@@&nqGTmqOgned|$Tx{=a`wad~5Jw!t!cqKr34ukX~u zxu(>(O)jtxI2@VM*d6pX4w;b)3z8?i2Y6wGY)m@Ok?b0w`Mo~*DWXR*9nYMYhE?s^ z&X6Bf5d+;^UKhZMtHEfN(u*zN1j)Su!&X7y-=ENz^R92OO%Got$k z_`mH%CHy_`_b;(iQ~1{^i2l$~&?vIc3>o?ivxm)0XZF#P%2>tgZOm%FXweYt8my0wnvKR01h2qk0rPsR z1f60Y$apHye%{&t+;j1XXa1>p@voxU`lG!)dc9nuz+>y1u{6g}0hJ#^99#oe*p zLoLK<8*SYxaQe42+sz2n3`Y2_acw*wE>y!FLFB5F|NOSci8a$63VeoE@{7TY&S)f@ zIzmC2c$Vw+-;Lf4dtkjRIuW^0HfN6fTpEGkl)gt27d-qFa9MU#yoA|l#Y zU#F0KdwQH)7j!Ev?JeMCW_G{6ESv_btn}+6=7m|IhV5COV#|ToVaL3jhaCk|Jd?x% z@7@m&%=nx@{q%Wp)2K}7=WMMrH8l~(s$Zx-J7drblfQ@K&PUuD?}K>P4|ow>859{E zVWhzpYugPsU?fJJBICHS-2lfZ`uc1UGzw2T28-wGLS!@TIdYST?dYhej23s()EG4C z&zxHMmU>-|))P309(TZroX3;VMi%HRrvCk7#Rm639-?6661=(RsJvp{gp2*t9?>4A zH-aR+l{T#s#6FDPM%UNZT^dqZF|-jU`})} zHS=eMHCL^G-RO;vu<(s(o?@LS<{0=x%m%oLkt*u8o33nZgbtv`IWIzJ zQYvz3sJ-uQx53^nefD28s_{RSJLCSl&z*;nJ>%Xh+zy9w1Y?g$YKma3)0XG*UtYUc zmygo|07Dst{suyRJsn-}r}p$D939JfR5oe7+)u1V%h{d>ot{(}tqB8Dl2Q^C+SZ;L z6ntSHbhV^9Sm=*G+zX_c;@J6HR$l%>QKLrUw4Y*mW94HM7(Qi|Cx%SZY?GTtY@V__ zWfCCfUx6_9%Wy-^P2tm!+Z^rseQ}m!gVIex4VWZgr_GAc8g&3%$O5TCD%J1E+tOeJ zLJ-vI4?4G|z=SbdGtKjPpcR;;ie!pL;pad&avZG!DNtpUT5HZ`Uwnq)M1Yd?TO)a; zqtz^nOQCLoPQ}mSz$_#N!=QU4{N=5Wtzn`J3k!n@yl~vN%t1tBEP?0s;r@RA((38u znFF!l!cY7-G~&dCu2Rhs2+u&NG@n-Hd(8xX@(jGlqVv7jv7@n^bT%UDp>_SzYdXIoSkCm{{37BWYmwFG<4g+Sy*YhH3ny&F3*w?0VyR+ z>-I8VRka!7zOwBtb_w&aZ%;JnK!gS+Q4-1`{zbE2so`qzGb`*^&Nz8H)ib*{2j>?^ zuf9BQotcp@DZMxMc8=#XzQ|*GgfTutD)ThjKTr~Rza=6$c`HeaBRT{(OU~kAV`D9? z-|EHs|y~ zP48SDQoX+r@KQeVW$o%GU$4K9eDJl_v!+x^hQZ^-NN-DvuKw&T!8ceCO*C&B7#oBk z8pijY*|)u{vQoWERlO$nncx zBu0Aq_R5yuKb0pchxU*bN4|}I-Q>M+zK>h^fP$K#gN20^#dCTpw95rGpB-<%IYSa) z#VZR0yGrjLPl03=3*9xGj5d>{PIKv*q4@o+d)Z*?e z*1jO+)<1%m48%3i&j-7RCvn)Oael0-ikv^qwjtql-}Dd712z}5_=4W&Oe!=R5XOaE z8Z%Mfc6bL&htMCP%S%aNE+YL25q$c{%-kaJriv}txC{p=zaZbh(8wv07J~0)i+L9h zOqt!JqFjmyAF`CvUg`W5c%OHXUX zqU|4jI&eOP4F}eL82s)MGkHC97C)Y15Jyj-u3uFXS24oqM$hBl`vVJ){$T7SmakUz zWk71k#ZPXRnzmAtGoRF;zq6aolHMUlH^OyHUv_41?0xXdihQ0jxZI^bG^i_>Dt_oR z#^XkH&5lo&dc)d1hHckS->}C`ost?xXK86jNky?W9+WTTdwZY%0l8{uI7E2|*TvuS z*Ydpk(H7f&so#G(=hc^??)+#Oli+I-sa&K@jZ?`78xcvCVP;pC?Faa*QBT?j^P5R;*Gb&rFP;{%okyDbJWuJxyKZ`#UfieSiDvf*~TzfN)&{ z61U|GJHPwJW?uGFm))d9WGKf`;xI+|j3hc?kP3*a-J9EO3s#|X2sUQ3WV95%xn;)* zCC6@FE733~MU{_Oj%K_VOn2k(@@jbPbxzAMlG1Q9?{=M} z#lx4%@00e!#E8cK4&{8y(;fNu(-US(>0H8*(#C| zm64FKpZK&bSt+H@jT4d$-g!ZNEj}k7jGSxysGL=Wg?&oK{Uci^C)dC77o1L{F)%KZ zy|OXPOZua_{ooT(X-qtsT+*}Wzwtgj{6~ z)u&LGT^*CuJwvEk3_BG(cXx$p1K=o{m^7-j-{PD9){vaMNrPQ9%Y)BEms)WEd(is& z`e=#c?J51;4RaHjr2QolcGstmpof@Iaqk@-9zI%P+*6i_GcYhzeEny1l+SLzTs2RL zSM8N!d0|Rnbo5*(KAmel&Zi&t95gA!Iu95dtuN$>-wAshUv6I^DPt`4#(A7y-sj8F z6ye3pz2reB=F88@;p%R;VcUG|8wj{6w4ebAg!{ydUPhWyo)lfoaA7M- zy1yUII?$_BU&VPke5Gx&>ON5^H=7d+j5Ltk$3XtfZoLdSZEeo&UQcuM&`G?{7c=)y ztR^Tn{|5_r?z}lkf`fCoJ$)g&uk+R0Aq!V>yi)9VB5l*{szc6-F;hrw`vF!-sfCF} zh^NQ#U$>ISWgU}meKW*sY;SItJdQg!t#-Ad8y1Zu76hs=xhKkXywXRV3g_ujYyRsL z!GS-2IQDp8L-YI3$P@(QErsC5Xi?(0vg+4_Y=)!deU`yUY*cF-aj)Bqzvfpk?~JT zCgQd#cAR)5P6-ifAMP5phpRJx_1WJi9C8<#;JF#gi% zwjzyf%3sJ`(=Kxs>>(NYVy{?W5eJWYI4QsP+Wh_Cc)7}V*4h;<??>@*-3=q>HH)r6^=;=nnAbxK#_wOxb^zTQ!_+c0BccpQ9o{_iY&U0y} zw~--Xp$u)FvSomqq0)vX_UZG0eD9oY}r2HR>$I9&}_g?6pcR|mV)IE9bvpId= zb$Fcc!N1{TW!9m2#lOb*F8}?~!_$28)~>33dOA%?XMKC?%H+<(+k7$En%|JE+G@fc z9fQs9b4|rzaL6MPuWsKWndxR;IkF&SV8C$np-6d4(mzXE|=VzKoZdCwn49cx??O8T2v)+Ug$B_zrlU=A*6+{ z^Ch+jh%&*e@&A8ms!TlkwY?8g*l7$7iec;>jiytO}cD z$7J|!IvW%a7*weIypK;yD+vW^({4Pa0yPp#iEhb2ZZ609dyQ4TbWRf8LX(Nt{C;TH~^IK*`-}r?)N9bkT zbEy*f&z$$0-{r;k#RX{9xLd2L4*&abb-zINyVqk?YAssnmgAzUH=^R-s~Tld6!}e% zgAb9lt@_trD}K1n4Hq`#WsZ?4y-L{Jxatlfk28yW_4`nDs$ZQye!I`0VkFzyF|$V4 zXU~2vo%;Fn(VYj21X1AjvLryv>wM>hwjD`8U=|#?PGX|d^`2>2; zKesHn?*>nzDQt1Fk>uH)g*SrVVZKh&-ax?=Y)zvs3e?JK=c|H3B*O@aNFNK?{T-)T zDTL3QDNxpF78SI56GR}IzVlC`8*^yjAw9{>tsB(B!rD$%@!Y6`!@V;<&HjG*H8sJ~ z@2M+wE`=;C^~^Crt79#w%GQn&TBEA7HP6mbE5+)LbV34iv$B$9Z z%S%c`-qC#@|H^HvaO1Ik^tEc)#H6xvtu2M^Ru9iI(f~o{M++xqvtPkc zrU47W{^<+wxW|A7*VfX~#wH*Ic#W+R;l1%(p?}5(?NwC|kBF+0l8GN{%L)Po>#eo5 zv5ifkIfN%D^v5&jCF{8(;Ml_%471z&1n^sKf~O%|aDv5H3OrAo3&UHeG~Zu|ip~eI zVQZIf)jN!(p!rytPv+j`Yb$~+<>BZb6{*`5DnX%<3Q|G%%FB>kx|BD(&GBY+&1V3e zh__IwY!tTt_)Q_f5hC)qBvm%E?didS(Uv4Uj;e1Ii|579F-Z3g*BqD~c-_vK3^WiQ zXEpF2bA~vT@9N922hpU%oMESN2?_WQ2)DXz4Bi;M_c|1urpZ9#}ZI>z7i-lrB(isr@@4Wgo27% z>wWbD@%RGO`qHmY0;>6Vxyzzs1QC2bUWm!8S8YLhk&rQnwh`?T3)v zy>k}{l|U=kDy~rQLPn5Gz?15D6V|nmYn*Aos#EjBF0>NRJQ88IT4e)f$YAr>xlQ!^ zD%i%e?&jZH$IA-CvGOktS+7#Vm7X=j)E9cU$>YR(wX5W_ca}}V%}hg;T3x@4aijf_ zyQ}87UkN4CVvWirzx!zvd#0>=qeq~@H}Lar+ z_6HGIlB#d=Ix044bL9q4^Sf+W4}aUPRg(=54|}Yi7MW0`a3j)suyQb7>82-y0i+a( z)ARGRo1vvV3{pNm_qM2)2c{k#7q3#D%O*Y*%_sFjTJBCRQwenbC~!l7hZhkM_51e~ zQsiP!oZ-m+%VXy?(>|S`6hNfz2J|QgedW$ypR8#OQM1%<@Xk}+gwYR&MHjRCg}=L$ zu=(XGF$fh)>#Q4|MVB@utPM7l#bvgCIxF*G)RQ6JoNMibn=Ik_`=GCp(5ze{L`2a` zaaX`dS0kHs47t)lArXY^p08vKYytJA*mCWqd;Aa{Z+PCdXB^YJ+S-0ijZyJ1rK|2O z)_>}m>O{J!<>56a{ARvzuEwDDLJ~%0iOAHjf7lbe92{lOnZKr));(u--acPh-s0!V z)0lSo_Zwo=Wa8)|t|3R(^Z3%A=RW8tD@p3Ovh}lEA`5eOn!vUy&k1GXJD-!;RJt6b zv9@0$NnW;1Gp>o!*wRalZ_A+oO`++8#z(npm zrK!Wu-xJ^4$6WRl<7{{5@BPs5C05H3lJuTOOWvShAEaF8vI*8Q?M(zX23XnLM@0^n z0zos^Ag`H7kkfj)okYU8a=X9LyIv-gcp=Zr)y41E^x|uJ$t*0T{}|YmUKpTBw?B~6 z4!#0KS_5?C=Him^Og07zl1NCG!P9jo#6O#m(}x?;U}k!``7R#+DFefLjKFM=+3vwD zmi}Br<6o=mTL;pc{jqF@M;38|Y<4}r04PJ&w$^TvvHO_WqyG5QC(vgMP&>wt{N(>n zt&g>U;y+l$#)-2nD9_2w5fmcB$$hgtn+i!eKnQ4UGG)b~*OgkYacp0|bQ8=~EzEX~ z^>h=QY4BTP=eyoy+rAXso`n zeUI&h=jp2SwI}JvOFNN~xBDx-bq-^%^@V+CB?FnZZBE4$L$2qEW17di#u6}fTv%sOX~ z{JOZ^A(zDGaO`P!IxCZ4HCZjP5ODMWgD6~!N-G8ERHHd+UaLWDq49;p9B)G=Pnw6b z)u}xynVu|n|5-s6A`@^Ia6Mi1bUUECpM;L?+@+Hq#U?#MYyWkHRktHbq`8^sdYq!m zAuWBxk{g;j;PTow&o4<~nb^5RMnt3t+LDW^dtLzR#^aboymQ(EW0_eO3m=~rv6Q36 zM^q0cCMHY`;M%XT?~Y8(+1Uke6ZHM+`{Z^jM>Fkj^QTWPKICDvZ;OpjP_Z;s~q6s)Vs#>Gw-@>#vRxpQ_vk6QGyYr+r8}j5DY@Wep?Xvg-Qg{iM`v?xUdux*9XEKL$gnQIe8~ z`5o7^N-UCDrY~xZ`vqKt0?8wh3V_5Hq+6&@DWHV>UC!;ylN6mn!xaY?26 zrlA=fiZS-m7je6JWd%eTh*7S%PdCruCr%~nGch%FadDxerDc9bFG|)_?Sqcw=hrck zZWo+BN=1IvhDOtk@zXe`??cBqoec z0{zg}uV4SGcaxF|0u8cJd3XCpFl|3|Kmf`%0k)-DW%lcCdN~Qm1r!%Q4~CZ0t9@|r z@mh0naWSmX$E!6_9LP1CGd{ii6@o9HKz-oiY7>PxPQ6JH#q|rEBLzvJq2F3}Y7qf; zgGGq0)%<(w4h`a|8DtGBV){=49tC>^j(RP ze>IGmFr!I#4?R!Tk1R7&K&=lj53cupAM4qgjZ`0qWsji_twWS;@!5xPr5oNYj_;Xs znB*S&oSgedSzKOT)tzjr0GtJro6{9J|rGm!0Qmh&Xo+ry+3jDPF}pvH0b9pnxG)qbKd7N$Vd7*ZmpYYK z{`(m>@XN|4@liWRl5&%?u%NfLwYLu>a%dzyl{h>)5L1AN)Wa`)UNq<5d{%4(!T!Mi zTE;&tGE%?B9j#WW%N_0Ox5)pTj{(n~QVk&}rU(&t)f*-MM@zl2EMBn7W?P^!>W?*_ zT$BcayqIK|`~D&Q10r6NzqwqND7Z|&^CY?N$sZAM1xG~0(_j%3|E*X13fWX)YQ=AE zqn?dLB(MF+vi+M)-pCv!>{C}+07X-~!pw#`FcN~hUUk&Rv*>FzXmhz#{emy`%J2X$ z=hAY_+H592xTfYT)|?|ClGxV<5-`a(pC8810yb8w-2O=H0a{y-^^}Wv&=Y*3 zz{g|xI+3^6#|j+whu5T4ex&K-L}m3~@*9pO!Hxl3Iyh-)YOMq1|C^|;q>XrJq%W(tUqXP`O1<9mlp*zJ6EFb4Y9n+8jlIZ^+3CT*aoyszHt8OiG^HvSbQ zLOk8mLumNr%NGgB&c)shyUVt2xOW`Q#wz7D;(?Ido62f?QmFS#vlD#_^ZnbNc}c&I zwF9zAgPR0@EP#;P^g4OHVqM7dP>SKE<;)=zm)XGDTF`C%5Qq!qW~1e*-Jh7J%02e> zaX>Ec!G_<$ z!}}&j7^AxXmU~3t#^Ao0@w)i><%_f-bEU;wxup6(5s-&|Gu>zyB-p3FL|RPBt@3n6`m z!qwDt0{|rS>7VP}ycl0$4*nZl=o~AUeRtjB|9p$zs5fq9OGkk@gANbt@i(2yBp;jU z<<-@wX0_u)btEK@|N3BvY5H7B<{`t{NX7;1)J^)nfG>zzlMM+J2Gn~KQLua?~=s%`?U?l$v%3yL* zlKaW#-s)ZqLD{mAoy*M+H*<#KA1_siz2ROGlk5s1?`q)TXR{VwR>=^-5`dGZ=D1X6Iy70rrI%CQl~Ds3;?4hs+Q2OcQ5be`{UjH9qslh4`XH~;4Nmn;1{_V$)A0btAdua*x$rIO$e!ato z=;+?3yU|fU8oaN7fK}B}w6M28t0~gL?S6gPPOGm!m*ogjFDs80jK!@jU@KXYAbEoy z(1_)jzkYmq@sM}2z4=a8)IRl4DZz&QX{M1>2hG(Vo7!&v;?TpnS8^86TnyoZ;2!Iy z_GFU-_)t;573IWUSG%rFl&vH-hKGb`msrSw&)1LJpf!<^CVf17#5=Z15VSZ-$| zb%rHfS9aXT)7@G$Nul%!hufSO+wozx_oN)R8R1a4cX?|$VQuxY>`6=Kpjc5%cY z<$Q7a0Y@Vy)#v92u|Ohji>H?q0s{L?ub<(Q@L$i6;5->Flhkn3(bPnyhq_;Eai)Bk zcR?pyIzuY#9paT{9BNV<`ROy=h09v{+1}pX_|Ws~l8MphdKm#|m>fpEiN;;uZg=63 z7nHd5KIg9b)gFqgCLHb8#s`YNLbba}ZE2L9@k}};MsuE)mW<^0;i*mhbfs-qBu%8; zC_c2E6xPQR7xG=>KbPSVPM58zDJ|w28dPxiw#lB!o}Nb{+8GayGz#=0t;EdCR-xSJ zH+mYIn5e_ClE{_Is?!LJIBwfnci>%l^n3^0M9Ffr&|`P^G2w>O#%Q5dLn2QOa4}Ma z4p{jTpPQ>z$QYYL=u=}7zYjUz19Z~SN;yVgl2S@Wh7)nflswTWd_8qFF!Sx(Hy}Hl ztj>&pbIjIc_}Az9b>6MNyNYF&WMG#xV%EWFw>3I8FgwHIbz-Bpzt|uCcVXNPn=zKv zW&M!gkY4lKdrc`x$w1g-ye$pMSkT@n#my^zrFnY1H5tpKL@dav*Z8sbC!H7sdb&IB zBtoUNOVo@9lcuTh@x%2&w47pYTR{%f9v;utH;2)=qKUo1FCC+68^C{|*c^0r3pFjlY#%NG6l{(uSP;zvs@jr+)}vd!B4J)YTF7 z?5xkHH$3?0>syikqfn2pPv>c#15SqQN(9{#ihEQJzq4Ei(@#gcx{#;&owxaX<_xTK zt$?4*?_?EefxkHB>#{ZD+xN{e=hG9cKE;uCoW&f5?^*R;Lbxod&sbPqJN+3_O@;7B zLHo_>hGabu*UI9s(x63Bq{$4vwJ|Xe}XJ zQv0-A#d86{S?ftAou<58WFQ^U z0hrCt*4^B?O)fNV5jx%kZ5B`f+hV!y`<2Q(=PvtX`6u^&6r$1P=?AWy2MJ^S1Ff!b$ar2o5ct~aZK4!BY*8C-^Td*-|TP|(tTcTRE8%fpx$7_|*pr;*+l&(T5pETPK zP$umJ~f+8!RH zRIo8G)m(&kS?Nk4S+Q%M$RSG*FEv++4amgx+Hoea4z(xv*3!_g+^f3GOzCYT+T`$_n}-6d$Dc=>4I`^N{F^ZA1x zn`??Cjx0XY5dJWG|7hO<6^jJBBYbTv>jactail%k4JHkeDFPrn2UScb*#8aEk_!nj z@Db7~QAzJF9ck8BaK)Ro6_Yo`(U%!y=IhuUHaTC0|C!4tP#GN7s(MRF$OviB@DD0+ zJ-CvnWQ5q*94^-s=7~GAO=KJv;^&8zpfZv4d;ddGQE@j|C5!F-x^D4lHk~Ry-e^Y$ zAMqC9S%Gfa+qVGwG)q@GWT8VL6!GIVSjF_Crh7<;nH|IHfd7VxvutQ${8vopz@+7i z3yYr5)k1$~{s#*n7rUsmZsQwBWt}}D;)ajI_RTgG)ZpnveTtq=I9rJ-SxPB0f*#)* zD5fXfkJc+}^!Ul;8y%N&T{+U$4GgYWG|Q0~4hFR{bvpr|dH@K(mvo-FvGvj6M3JfkZdcxRz3-OD#+FTBo(AG9 zHj7h5@&0T!Vodkr)c~pevjhB(wGK(g?or7sQes;4_Jm**PXrul&+^ zzgnx-yBt!c;*qVPql#MNd?lef-RkVW^%f?OkC%LdYd$wyg9Rv$oOl1tSvKw89Wlp% zPS$<#uYV|6L;Y_$aUB9{mBZ#>@hGw@5)xwP?aA7wG<8d?0! zo?B+tsdHQhAdJ3?ERsG-cowFoScxzE9sy5<-x@NNs|@aAUQhnJeeANozFrc$5neB8zl&fkC#uc(H*T%q@;W@I8SX$8MZc- zlTX#s(t=TDPWc^A=_ac+v&Q{?TYyvG`dC&1PnbbN&NTZ-{OtlV&S^#58iy74-G6UI zMbqa!qt}BW+S_UFBTDJ*aRUGoLbxb&^qtoRB{YaNw|bQQ)Q`a3?eWjQjSeeoWh-7w zx9`?_ADF#EIbM(s=F}TS$11Bq)Q909_f6;58D&CN85{&DD1bfbqMUtFPHE+vY4lnYkL}|^ z>dK^g=kP;4mp3N}RA>!jZTUEJSnf+m&b-oY?-Heyp;yiR#wk-{-;_ZT8Ad(txriH0 z*Sedlx{l^RmcF)x#<2`I@{57w}A z^|pBBD@ZZh-Q3)QvCFHM@dB{ z3A$VlW=O{4#UHJYG(SZ3f`hu)yOoSQEsdw-p?-?ir_&yNnlER)UR?7JADBvBh90Ls z#kh$wSM|V1qXF$XU~xPAZ=!~gOgnqx7z7|)b2-WFGhrfofi@>M=jG0|KUgOL!XYl8 z(T#Fe6T3Flz3q!N>&ok~eaGCj%{Iir>QC(wwE4doUe*!x5sJ6$%=$znvd(|}ms=1M z!-QNC&0PbtGyoTEw_nN0QD&rnN(%ktsL#&(Irh{nDJLgb^Bk7T^EV*Qh<Tb}LpaIHuQISzL z@8kV_O75Wdm|9OW`6pt(@rK^IRbWcx+K!Vs>5ujZU7g|8Clp3ctr~-ek7>K`dIm7o zC`+<3E-PPc0ja!Aa(R(P^x|c%?B3cRS`j;3(;nB2QH`B4(1Z*_({u0MJ&ON> zx3`R{@@?0CRq8LTba!_n-5^MJD;?6^3ew$3w{&+(OGtNjNq6&J(`P;Feb)Z8#~y3! z`O!IK-t(TWrZ3RQO^NDM9iS*uYm51yFC9v7J7zei zovadxVQu{#9JOlqA_Zq`9-utnt2}32YlvQ|6s85OzbK;9LZd4l@t{^~`d(N#8-7sM zU|huCS2*1TwECb9`T$R-)7-IDckJ}BPbu!{Z3@X@@Sj)h@r-#*UPb(q#SF9oj`#MF zbjW)KtJiBeSWgwX2G19Db*~=TL0@+7%_(bzK?acAZM2Nnyf^F?S+HqMsFt zY`xb#vg7fz_$cBSF)X9@)iuzwg1W|GJ!{?+V~NG57#)q;#lolNo4waje~-tDN`w3kG~O`b6dM%&0+FAf-nKz$wD8^iO2 z-`aIfN3%~U$g)K;Bm&An?Lpl84Ty|}^=->#e$YrFMI+) z{WhG*cBZ%K;vwjmTqwcwqOJ4#Bm=AacTZh#m3Yxqb#yuj_D*(Ximh6CAsEniwG9+q8_ca`8x~^%|G09&$Co$~1l1lRdQ-2ngZ&VC zwd<|=%(2z!08OF%!a)hJE}l(~1wd(#rP&wF8Mq^&7#cl}1%@+04K?5@d;QVG!aNya ze_(L%KE?Zj2DEe<0^EVWlYNjm`lVk$wtMa5m#9gLm??RlIj29sd`Lk~-rd`sluYuW z%JV_v3Kz|86&z&_7kp4Du7N(7-S`faY8>^40CSt7n<^7II!&k&Y)AfkFe+CGXMYCL z#O`&YfjAcV^hEycV&56wCAnC{n>AA$i@LjD>60$D73QFYN4h7QJ)2`yljD zfzV%_gPJL)DL#+4W>c%q%=vboqf*xSsj~-^X3TMC8NKd+BI2*ZL}sooDBp%{WpOPa0fA^lqdhbNjJy!oYwsaj3MRl4yVf1O@ zk+P1FZ+m=o-Wf;27A$r4NNr5+O>mbGDBNBW)DDv7$9$g16P0pMdP=Q}cv`%}%J-{v z+nT=w&iU8-SIR0JMX!Wi0lwVs5*kZwlJMnZCrmRyppt|srb)#Z53a8Js+?4tj#Pfn zV)jLj;p;Px&W39CpD6le>RrY;3bQS$eQgY5bE&KvRn$g-cR-b#;xb z0rs=O+3gpFMx`Ez7#W`*6H5UO>43}T38S}Al}cFb`?3Cb6_xPNXA$EtSD0n71lu~PWay@2rpys0I7 zXZP0>PU~;eYe01ja~rFo;W_0SJQJ*ng~ssXNSC*K>FWi6j zInjqyx?ppi3st$KgyCRet6ZE6Tu+x^%}y?lrgWpW=AMe{tJiaBq4?4 zOp7KOh=OOgg_*ldJV@iI!@A$;PeTZiUmK1ISnidKC?}SNQnV{M8&6%k_xnV5kK)bt)3q1S=S|HwOyCy zYoF$tiF^!R#$8!V8NWt}k=tF;^k z@a6ful808lPL0Ja^ZivoO&4z(1?1Rya07N@>X+HB(yR8wT2Ru00Re-t zz4k?2p(9_+1wVbnM%S1yeAhr8JQ=wDSVj#c!NSFb)#g9nNPf#5rPbgVQam3bKCT4S zR6>akwX_bcny8NdqU(?Sva0R}6)bx{wd4#{89gtHALfOzt-=Edq@*HyjLJRk%1f*q z@h`Kmw63&{GJC^n1m~#~o2z1kTL#MR9Vd?hED&NhJ89id&$d8Cm$$|yR9X}hA@NzA zQM;sRilT9*fFb>e+3Um0h2R^zo+1t@iCU`(`1`bR*v$Jda9HWQ)*$U!(#+nNF1ycq zf2j1)QC1$BSeD&l=mu<1sQIZ2n*96v&ENe~z=*)f0JPu)*T&uIU6SFtwVtmn-sVWr zsgG7<6cL_+$x4M{AUJRQv4UpIn{}K$Bx>@VTx=ZvEX*x!#rUBV#rUHFQya@K*1~vS zr)vUjEOVv(+7}cPk5VQb8og9cO7Do0sHTP=9sAiJrC3pYkRW8PeA-^eDaDo>%%xrav)a^Fb$ zDdX~ntxC|JKD2CVi%QovXU%tdDto+{>ya18xI@AB)j>LgD%Gx&TGq>{b8VVn_nJZy zy2deI=~QkLD;mqpJO}lEieg=OS%-Jt>zgahPr{6Hm$fY5m=+_6J=N$rk)LPGV{xrK zbymRts(>|Wf<4*@oryyt8dApayr&&~REQ*Tnv=ptdO`%#>K(H89_Yu7xnN;qW8-2b zu!sh1>N4IQMZvPLgQoM%@C^MpUrFEWtcIzn=^E9SFl7aWsQK%B)VxpNMnNPueR6U) z=HyIh;(}AsV!gp*#EKRl698l#y#BYvG&lhJpNO3P53dWw+1f;sytmz}$GcR5@bev( zQia}ZJts>@(^ZNKA{0Ru>4^7%_Sj@CRa>_I=)$W`Wk^Q$)!Y2^)VJPdu~l-6YDBVR z5r47SkD*HhBKLs-3YAAz7xAC1ePha!Jm_?0j0##`qXc4$S)MG^E1R4IE!L8M_Kg?@ zTvz^O%hf=-lJ3xBne{dg`QkX(Nco>M8Z~+}#x#~7O0{S;$Yu0&pndvo&;jVCt2 zS7K0NR$^V^`1dl|Kp*JNU~7A|gZ}^j+#jgxw&P3~3Z1{6crzWZz25c84im zAWNi){RZC2g8ZKXGDp528y0x2Zd9GI&vP9--Fb-M0s<*VFsOZi4e9R3QSa zM^|tQq~?YnvmDf+XY;tKYFTvZIT|!b&f}|f5Rv?~uXEm_`5#+uT&?1{Vy2(^uQ&B0)I=AWweS8}N)n&2Cdz2J;aib^I=!j; zpeygm;o%0bZT7=*P9^hJ%VgbJbu0zmfhbJN-F3Tr{^@D3Zjl)qfe}7T;*(a_FS~M1 z?j!w!(Sjqf@)SwnlvRUz^eSnj@Ui=+_$51O*%O>1Qx2)71GqUZx>w?0 zo=#6Q2H%-=QspwTkmtMUJt?0Vn%t%FVMR3cOzL^`27IIZh>fUF_mxUI)a~z`rs)N0 zxwe?$d1ig<>i6dlJEe#X&b%Phs?toj8gV$|m{KTcyeay3h$driFDzO9UG_+dOXXvq z_t`J=Ci6;5KU}p5tXs15{)`27X6mQ4YBNOJO-F8n3QHHGYk$)9f%G2sepX@`9L#jv z8@Amkl=n*DBTq{%XL z(ew0!No)vrBd9%ghs=cWQgS47^;_r+>G?LRF565`$FSMiE6tIwO9#@JEZ4t`o2=U` zx5Ija*fQFJ=IThhs&E*w$|R&uX~C1CC=GO5q{ein%{7+EM>lgpZ8=`F9By2e=0cr` z9<+4vwI%vpxL>6MxAz3x`$(Ygu9b3Y!mJwxiho%co;)xh9`b&}U-F4z2#P}R{?Tg#BT zg6KDw&nB`NCIA-^cxjd>pijv5;AH*%Xf@c@j^0#qLyuq_YrvE<)6%_rMCx_66!u{6 z0JEeT8k(VBRK>ShZW3yB?6$ND_f`H0jV zA=?caE!Mr~@ubLuXKNhbL4_t^7LB853s8w_C7!(KcP&*D*5cwCQm|`iI~^@VV%Ys{KZB!s}QtBB8C*Q@Heyv&&%>UVW$ zxJ+sz`3v*@n;WsyCC<~=zBWR90^0*uw-K7q=2L0(J=Rl2sB;VbA>r`CrzH%6`i^WY z30o+N8M}HFJReV+gyt?bjLF2sC_|Jn10Cb#F@rVp){*wixjsecM}AsPqThEu5DIkU zY{`}c^D|A)6*QRU8VkiOp$xZ1Hs0}q#lt#qa|+DT$pMn=K@Uk6W9OnJ9+a9=esS|T zrYvBTsxVq=)_if3GV5G{6N%;&BbB?6DCUGCNm{IB+_=oqGzoXQ`OH5S z_$dZoCho+khJx~XSSL*A&U(*rr&zKIe=b4uVPI_epO>>KE*U@Y-+cd4lNF^Cafa%0 z1P$ho(?H)fl(qVZjk2UIU;OPMmWV_f2?h-UYRGDkhYeP)JNPqusn>Gp$HyCZkvFC* zl@(wWmv%9vrPZH*1x0*!h7u-d&-2hZC3T8LaJI?J!TR=!2%%VM`Yl1ytC;Y3Z~5V3 z>7L!mp~=<5`&nZ=zwY!#ha@d+oQU+bK--J8iQW7q0qYgKm`#l;m>RYgSAL~1@`<@$ zq%{**WEHvV_qt)>NFc9ZhaLqLj*}hLo9>f#fR;%qyHyucMss~F2P^u%%gt!j5A~NQ%63xVK?o1k zc{9UtaFI13bliD6bmu5t&fPR$nW-$Z0G|9mwa>)AY$B|*W=tOIRzJmhDb^YI4|yP- zm(A_B#`|Zfe8I^{JKJVG99=24+d&Z~IX$Q3HZOwDGZ<{bK(1UrsqTAcJZu)mjXLFY z?|lKLnW}QcXFMglxBw1gLC=+zdm!aAY^twreI{?RICr5Yd?oJr*M_Gw^z-*`S>o)t z%8CkC;NOo*{}Lj|~~1zF_UE)_b4vZBIW^f4zWJyN<@=W?ug(SQC%KE3ba$ZYVhpl{C?DA<>U3%&?`^EYLbpkF|}=#OldPr?MZV`s!r z>((Xo7A*}LayynFUt8Hg5 z@$U$WqrAC?0}eqFuA8oG;jfTO{HO0985slsUjmiEd>K)%xE*3WD1M`GEg*mj-yq{$B6@ zTL(s5rI1*A$?k3v=u(4VF-M@=|GP!LkYNE#xxcrk2Jrd=Pr4vKC`C_qH%Ph-43x|T zzX3Q=1KV&;u+ZPziLNsd84?1t+SeDJKq3rS$R924M7u=lh=aZPg@rqS1xQXV0*B4y zuMT`S(ckiJditi?-p=mo8pZW;KfJhD21sT)BRjuD?PB?niQC#rO_yj!Vf>dp+SazB zzN+f(W{gfifN-f3r6X|w^-($sPmF!{DE<2wM4qcS@5f1~>-$Q!ge~e!aG0DDffszju&Ha$Oy8HYOYF{d|9nGC>>G$B{d-^TURnv(yzp1)RaZuR#Ldnzyt#l} zYV?!P!ZF+;>j3z&GpJZteTjdAZue0B>(AKWQ2hTjK7b46P2L9(DF~=SqhpPR9?Htf zYw8Xl^VZ{<2%S--0;uu+p2P({feGFP*j#*ePu@7{w0n*LAE#6$FggKKOm>cHsEMGw zkSk~#tVTs;i^H1^Bq`nlYHpfdwY3)jK`Aj2d!AjGUurpF+{ZDg*L`|)XV7K`l3jFa zd_qD-uM|2{fMEh|+jol{%X*NRNSdPs5TDvX;6=z7F+Q)ih*Y!5NZLxX%`@=2zZU%3 z-7S_U5TqU$j^FwxgWn?1=V`qM$cF3xjJ~6%|M0KB09kbg_t>7Lmw;N1?g3iGFK;qk zYG5bnfM&75e(x&0crcNE;7>FhQJ-uQIuQ|*SM#T({XiF+G(m?V$@;RJo7J^0pOLh` zHHW`0=*KFT=a&z>jweD79)GUVfEQOv-)VQU*10tRi%}1Fg>xmpcJ2a%At2|sFs?|~ zJ=Q|$UlK4&?N>X@SYLE#NQ=TkLq`yDWqtM^IGS_#^hLFJrbt3lPjC4K-Uo=E%_rK( zwnGi@A7a+fH|q_Y566n7g2$7jLZ_|d(**p|A>==5U|JTvuED7uWneV1wLKY{b2xni z#brHhKUmj}zT@A>q*?cBt3wAC2`8V1quycqu73m=q}|Af z=|diaqg`%?EBdDr&a!fy!gYW|?uI)DF`}T+&Ilki?d|n8gUJ-3iS_l|{=hDtG&_6K za0A9BBH z>bzz9!OTIw1TaYNyNGcYE37Zi`%ow&@aW8(c1PEkLKF1&aWF9ae@@NJV9m*}I5X&% zl|W{_I15O}iwroCy4wMxv!fl*8avy;koCBqMmvpRAF3env)_)QC_%+~Jl#>-+ycSY zN9*e)TiQl27&|~IumO5CsoYLQKpKa|)Sum9ARbB#t%^@+3E&Nh48R58cDs+^+q)X| z5qwu!<$kI#0y2{!$}l27L=vUYwY4`>#cDnJAjsws4uvIJzO8Ch<&;uG90VcswMzwt zP!s|>Pn(Z3$!4sQE%4wE{#pAPk?=c(QI8e@>+#_s4<-;?`>KBTcWiZ?Z$MiLMDl0D zOU(d8h#F|VQic>lZU$)9=!Rq)z(NPy(C9?Ks6)v(vopr)q==6_c6{6(|6dOZlnANU z8vsmKfF}Tcp@-cuvcl&v!#I8&{f0~3ZE*r@PcaTS1(jy`w$Rxtw*!aqh$Ns2# zF|@=`Jqh=zX#E8vV}{RH(Uu8SNY3!7O&t?OG?oOWl%VH@#{NdayXwp-AWeV2BxS>x z$|ZTKjo!b!{Iu33saJI`2dvMlt6$;_+gjXM3crd5 zz$f3{+%z=yvw8?*2&`lQ20oAFu#T8tl6vHkZgo@hbM5&tgLb`n@+)a4z)@#nvMG#w z2@AFuNygFW?gPfJ z)x3-6(>e^iPPQw{f7L_h*`nKKU4)$5&CX3^i544ao(@;45xfY2&kl@v^9ohVX)%!5 zd=|LdtzNyE(0-(pXhZQkg|nj_Q22ySZtrc{X_j4Sny!VM?~U`|w-##6!)s>2R0LhB zR-$*`_~Hy%EXLV+4SEpEUeL1bP7LC-T2!dz6W?5$0~Y?SE;8WXkxzR^ zX68S+LUUW1Wq{68k#S(08)MFA)mA^}!cI&)UVgP2T3`t3(e zNO*6E5{fnQ%%VH7#iRHcXNTqoq(^1-BKg2j)A zfYkc8R-N!kaHo2iisIkZn*h?x@}D>(+O4jtqSdM?FnGSZG-67ctAB2H2_Md2qtl)) zF=(Ok_+|Bk4+RBvxFQWDMKC-(JZ=~WlqSjy@=H8UP0oAYB69j71>GMsJO>LfQ>M$q zgTuwygBDl6czf}>?0-oo3qn zoFRoyy(EbGXtQtvyV$Fl6JV61B@}hxDS&ktBx_jC)FBOg`3G~NW3tX>DU3$O5a*x$ zKGmfByO(WxB<#6#s2kn^egaGlzb6|1_ss zVipbT*1(tpvL6ZBRRK#uKgU_OJ6slzORMH%`gX^ z*8Y2*mL>q3yIo!>JYWU@|9?z=3tYvm63*XkFX{g$L;E-raMglMYe;A)TFjrt+fd7C zo44K#;Xa>%(&gZ}@j8f8>q_Q_8YVA32mXM;gR%_R|tK;(PH-xrqguz!h15?{DP400hA!}{c7 zZY|k?8WNku1myAfM(NOGh*)Sex<7(wB!8Q0*z+fk$i^$-6e4bCAAl&=) z;78Hu@AK#T`UI8!=XbMK%J$w5lu2(e*B%2SweDo_stG}25l9v)N55a)05EOnzgU(F zg!ySUlaY4kjr=GbZkeSv2lbn^e=(KLpEX`Eev+nqWBfEO2VSzFHm-{8RKX7=>kjqBRI8!-1AxFI;nK=oEPHPu2{DZOD&b zfJtBX8%5D$JSXD+y*&nd0~{c1(q_5=KpCP>M2VAoNWb~}TkbJg4Y}{G<<7NDi1A{Se{ zsEC=(=GGgj`=;o3Fv`84j&PhC-KhSKq+O67KgV4bEQ_jICBpYUYTZJe(j z5i)1i2@xpo;x_@pr{1}2<@#l61_8)fC4-M(iJ<8s?x-GYy@b`^`4!Vax_Zt};M9Xh zgcs@iA>X#n3?8;l$L=E#mTlmOC}`4&zLy}bV`j5ZiH8Y)-btE?BH-@cre9+Ob4MM& z4AU@(Ab$5hRsi0Ia1t z@cQFpLUh+Y>8f~3W}c^nQVq0cr#diL@_;>^-}wQ(4w}U$ z&$;Kl%8V;G^fmnWIK6(7%MfS8Gu0zEq1F-SA?hF#VT275Jv&e3os3(A6Y6I zv?^soWJ=A2*=2=m{$zN~mUZ7rIt4eszLMP(9hE#}{K5*fmvBTLmjvG^RFhZrK|nD2 z5OQ;oE0w9EBl{f$;GV(=-{Lu?g-RIyB(e|Ta@|!xP64|hb67`>nseY72&5co$YNx=4SfI4Gkz2@CSz1(T z`}4~7Y7xdALls*MMn)@`E8U|B`vfA=sh5FICY~~{ zrm<-0TU1!57&FWVd{Kiue132H`Js2Sr3wLPKZd20m7707L&Jt}_@$}y(MxPoN8R0ij{)8sVoA7h%IeZ%Ir$gCIg;MDCw&K7wp`l^dx7cVI zX|O~)^#b;%u>I`-$NCr)Ub-u6N1qek6RNzPbfER2B!+Mo4ysI+D{c(z^rZfL63fbE z%2Ri~?~thk5YJ7`%ZZAM=h==yDUX?n}btjOCDFD+J*BlI`wwdHL(US!gl}c zl;_REIHlBIanPk-E5>S6@6J{qf64q_S$Uci-E~F49hT>Mc7X#gXg$dcT70$sGmh*E z7I@T3OF8vVwGIF=w_eZ9^pOd(xiZ`C2iW9^EAwF;lEuEmmm&&@=$VhvgyB zCq@R#?RYcW@@|4E46o5;rQ`A}z*WkO8o8T$vP`ov*L)+ujFEcT%);6_VTNpE%#f-l zk~;|ym_*gY?3@uWnYikiSL)oBDmor#tY%L#7+hb0>i;+=o6nchy zhVv@(Quf}ws*IfhA*%r*t~@wZS|gY6095knnje;k z7-CpN!_5d6&U&`1tt~STqfQH-@g06xMDQv*v*V_Q@bYI|KF<%a5=h8LbEn$hm16UM zi#-mdv%p-=m01<>$IY!oHpZT zgG7JS7`21)@Hj2--J6cIK?i_DGpV8~rp*a=SD|x5kg*)HEJD`lpC=Zi=3V z>jz4^=1%bBIh6i^(`l8wxdpVuV@XMhQ+!D+0k-yoKO7884+E4dc0 z((R*j-JVqsCt9cKhs~3*4Pc7I=P>vM9)}(e^syS?s?2a2k3)?K218lP9+_``4a@i1r*w@*r` z${bp!Z>oJ&^;sLosQexQ#><6R|J$BPHE!6Gv#a16dkxXReXmBD#Bu@GUFvR6dz-gxIA#LklCZ2qXc1tH(r-bZwu?<}Yx<+cz`@BXflb5s@n3L4A*ZeL z6QQY3hjaoq^YRuUe3eC5;SaDSmi=d{)C);(L@O(fmwm7~?Nj&j zNoA$&5Y)A<7F>?+;h?ikc1X8ILxT49 zt-`|V*Qd!v1e4aw^D`x`%YEW>sr38Pg&YpUBHgLJCbOn^TqRtl%h`IZviLC60?z9Opk1wuWXuSsqd1xtW-)ZD8!UQawdy)(M%=T z=SQ_Vv#Pz*=A|7#U{`M#4ca2BDXj{zATB18Dxu*7`^u*IR22^LA8u_jR$))p2A_-% zIJ!P`%2itNA-{swEhsu?-iX3w#|NC44E@TQ{}CV#0uCv`RO)`c8v;@9`}e3fFxyyL zF9Tc{KW}|DD{$=xee56W5K!(#3{h@yehl!-5nWkcQq0W{$0Oe4ems763NijcZ`h z=^?;cwaez<;OOa2!zW;V!E<7oDA39cQ{%!ik>z&>)W?IsZ><9ITd%CN3@kuGka+C% z@Qg4FqbN7;yKKs(MOHf9n5fUoO|6zcuE2EKrN4u0Wk(9|Gh-bcoN3|lwHWzdEXTFf zQl*^2b7+FcvuAaA`o|HZ=@_}m*=c!rC^<1}?Y6r~hQv>`*(p*u%!72_=AaO<+RksD z0&wlRdeGO(>ny~hqwg7lK8278=Vf6FM)7p1ZX@&{>94M8%-^_Eg{n|Qfk=d3q?;YC z+vah*jBmnljPam2NhTxL)y=X$(V%*m4kcxYG_H(o$J*C{j2dCYFQK?w1CQRPRV9TN z$8+aNhOIoc3Uw@J_idB7tOZ2VOxtQ#6RN*v&7RvUG6AN#y-cH8WqY7%FgwEY2Y9EaE*jcnd;)k8{jOk7L?G(YiPv5FSz zityUn>YRgrzWkn=pO;Qfo=3|07wPk7z*x3s>^%x$&I6!S^mW#m&key;n&HhYZ36;^ zBE9Nf3?=DZQKCtQveY>br(@rqKF%+(Y2(zO zdcplUosR(zJ2AVWe!4_Wb?}u%w#p%CZAv}hj9D=Q*hx=xsZ}v1ce=j(emJa`yR&G& zeyjULyN$eXdd|~yr;HU;PrAkRZYK-^Fkg>-{wWUsz~I!>E4%l$`f^{rAo27k~uRr(RiE<@j>gAs`@w32*CH z`e6W{BngdT3w6ZyjP+ubY$CF3K^3hPy^fT2^BT$rq#Y4_BeY5W$8zVkenT5mD(9AH z)2MluBNFfKk}(C4A1oHw+`OH`ElKG6vnj-t2s& z&~{*xod1QBu1rAMyzD@;dUcb*nb&iv6SJqMr&O!@({;KRH5IK|RQ+3M0^-U5&g|Ln z>XH*(lKFP`L-*L;%UFC??Yfd1EUQ;yKcq<4RKn>m;>@cRrp%&(ZT!L6X)4CNTl2Yo zoB{*QFDCV!027w4DgoLLKm`|0$WQS*REV-c@qI`)m8BS~T4#?Y97BiF&8tV3`_62# z7cvF**WwKeRc>hPeyAU%Rs=krvQ^LX4Y;%xLhhp{y+u+4I2q+8e9gXh#uyhHPuSVV zZBN||=6Ra#{JR!_#%)Gp@WcD@%4)51<;oE!=0)`m)7|v}OkreA8tEHa=hf_hBs!0) z^*nY-Wi&K)_$fK%ChAP*_O40jxsYG9S8te9TkaEpA#$sH+We{nR5mBrnd?}lmUI$J zUloR>HD3{b=C#{L)LO&Vu<}QEFC2qO$0d_60!Q~5c0J()z@FZnW06T=Mi#7_yeK=n zdue(bGJWQlkuO^yvvVa(LPF4dCGo7qQG9(krOWcqhnSk>Xv(*n3tb?42I`d`F1tC! zRbN=#(T-TGRuolql;PfFo0ZVV)!z#)Z`iYodU_HgrmW9m<9_@wee$eQmw2BNB4v)C z?(2tg^-m?QM_mbU+Rtp6eTjlvF<`sld*i}Iv%o~qv8d!p4p;`&zm z3s${IV|id;f4>&*Q`TA#;zVBco8uM*{((FsNb?eg6zM^`?cn(4x_&$_e>lmnTcmzC zBctx@@)9jY6Jo2xcbE(@u0- zz0YA8;vd}3rM;dO>&U37|4|Q>Nu`o2&fq$aM7dqSo$90v$GbQtYc2`h zzRVk($^DA7iG_=5MH?WYVOP)5qNJl6RZx6!X3|~N$g z*L9oTl2)?wOW8pH6V#m@x;mN7ug|=g`>Ew7ys3VnyfJ`F zuJdg<43(AZGlaqYU5~EEef#9~)`mxQ>9^AyZ4^a{faO!^g3DMHK9zhRIBYwvGE*(3 z{J4vGUt-4YR_VCjLCZ=z(6@uenWE`{l|2#z<1ospTj{>U^;i(xfXiVe!tE}f#_jx& z^ak{0(|8;h1&|MBw13c8e6f03y1)LT&NRdRLg}>qQSI*FHk8X|NtfMby7`*OcI|Z^ zOYUTMPakP$D3hLy(tzyyxH{WB8#@vqo?pbDg-lcvb6%FUuVzxMyfJdYCzcF%KpQp) z=^}qeP-`m0dmAsX$G&;KrS?hoG4@;97I>;>zoGuzu&2F}oC@ho@ax_N36H3mA(AGt z2xgy+4lr)skq}`Lrf)7zSubl%mqh8n!WXM4ueH~1WtvAaUVD588*M`+Ke&t9sw#W| zcfNI@!)x?hBuM+8X|=%Xxx)||@AA*|+h^Fz<5rhvl09*zb4-RFx9i)`#Nuh|67u#= zs$V0S5L){73^1pGieJD%__)!S36K53CO~O-YvW_|46ek1T-l)NNpOy{Rn@lYP}!kd zR;UMXb^KGiMqTHvOT3lT4A7QMCBdZEJNmN&>ScW|MI}gag^Q}Srldm?Nza@W|e07n;@61kBiP zh21tAkxv&l);Apwdu1!rXoX=f0eaczaMAzGNLqWt@y|~Tdt$;*MNoFWK&k}FX)3&k zjQN1%3HRjb>6MqBClfDrnci&s+R|<0>3LbxclJd*6QwSTonyDpy}TsxOd$E|;ZUUv zFF53^7uQ6z?e}K353WPcJ;5}1o$NO&kXWkWC-wS|!CK7LEO}gjT}8bQpmuR0mU!u^rOtDdVKVC0 zTg>20`C5*^oDZ&BkPo24{e*Ek5Kb)9>6t`51Vw{)T3u7tvIyD6@Me_^scakI0H3nS z#9gRxu3=K%eJjoJM`1rhB&4C?=yEkt z<04YHowg5deLb~1?S_7izVOJqX)_~upHiGJYX(ZtIkT3-pffI;wbPTF=#h#hr8lx)m(sxqicD<$l5BgDgpTI2G6N^y+>G!yVhyo z9sQ8<4kdBFdjXD}fjDLyLi4`sd>hb zJ>uXJZ_xU^qWSW!d-rB^vmC9>ode^Yu%9@38Q&%SZibDsYpL$&^s zgWbS7l2eW(B95RrZt~#n(R}0MCDZY@pH6n0R<@%f=?n*;&I7E0G=GWqU1dKas zFB)%r4$oh4IMv!Ud*r`}8j`u?-W960T5LTAMzC8iJMYxVCaa~A=5dtOh+xpcC6
?#otwuASMdb@jmPF*??A5m0cT3X9w9n_?{^e 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 OfxNT|q+HT8;C}(!u%9mg diff --git a/docs/public/screenshots/stale-site-notice.png b/docs/public/screenshots/stale-site-notice.png index 874ffd827fbef481b571563f4bfe1953bfba806a..7e41547916f37706c91ded87095b46233bbdeab1 100644 GIT binary patch literal 101586 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 W(a%cCtiZoKkra~?trXV({C@#~Kb|fC diff --git a/docs/public/screenshots/trac-ticket-panel.png b/docs/public/screenshots/trac-ticket-panel.png index 2abcba0b476f533c76551970c57e5ef44532eda5..6ca39c782181fbea29e71dd01858ed99ecf3d2f7 100644 GIT binary patch literal 49054 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 z­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 diff --git a/scripts/screenshots/capture.cjs b/scripts/screenshots/capture.cjs index d0df8cb..babc0b6 100644 --- a/scripts/screenshots/capture.cjs +++ b/scripts/screenshots/capture.cjs @@ -1,8 +1,9 @@ // Captures the documentation screenshots in docs/public/screenshots/. // -// npm run shots # fixture tier: fully automatic (builds the renderer first) -// npm run shots -- --tier=live # live tier: pauses per shot, maintainer drives -// npm run shots -- --only=terminal # one shot, by slug +// npm run shots # fixture tier: fully automatic (builds the renderer first) +// npm run shots -- --tier=live # live tier: pauses per shot, maintainer drives +// npm run shots -- --only=terminal # one shot, by slug +// npm run shots -- --tier=live --user-data=~/wpct-docs-profile # live tier, own site list // // Fixture tier launches the repo's own Electron binary through playwright-core's // Electron driver, pointed at a throwaway userData dir (TOOLKIT_USER_DATA_DIR — @@ -10,10 +11,13 @@ // is never touched. One launch per fixture variant, and every shot starts from // a freshly reloaded window, so no shot depends on the one before it. // -// Live tier launches the app against the real registry with no seeding at all: -// the harness prints what to set up, waits for Enter, and takes the picture — -// a camera with a timer, not automation. Screenshots taken this way show real -// paths; review each image before committing it. +// Live tier launches the app with no seeding at all: the harness prints what to +// set up, waits for Enter, and takes the picture — a camera with a timer, not +// automation. Screenshots taken this way show real paths; review each image +// before committing it. It defaults to the maintainer's own registry, and +// --user-data=

{changesNote && changesNote.placement === 'buttons' ? ( Log in with admin / password. diff --git a/test/site-urls.test.cjs b/test/site-urls.test.cjs index 48dfe90..eeedd02 100644 --- a/test/site-urls.test.cjs +++ b/test/site-urls.test.cjs @@ -8,6 +8,8 @@ const { siteUrl, adminUrl, adminerUrl } = require('../src/renderer/site-urls.cjs const INDEX_JSX = path.join(__dirname, '..', 'src', 'renderer', 'index.jsx'); +const ADMINER_LINK = '>DB inspect (Adminer)'; + // The shape server-runner.js actually produces: `http://127.0.0.1:${port}/`. const RUNNING = 'http://127.0.0.1:8881/'; @@ -112,8 +114,44 @@ assert.strictEqual( ); assert.strictEqual( - source.split('adminerUrl(').length - 1, + source.split('href={adminerUrl(').length - 1, + 1, + 'expected the Adminer link to take its href from adminerUrl' + ); + assert.strictEqual( + source.split('e.preventDefault(); window.api.openExternal(adminerUrl(').length - 1, + 1, + 'expected the Adminer link to prevent in-app navigation and open adminerUrl externally' + ); +}); + +// Adminer became an anchor here, so it needs the same preventDefault the other +// two links have — as a Button it could not navigate the window at all. +test('the running site reads as one row of destinations (issue #249)', () => { + const source = fs.readFileSync(INDEX_JSX, 'utf8'); + + assert.strictEqual( + source.split('Open Adminer').length - 1, + 0, + 'Open Adminer is still a button in the action row' + ); + + assert.strictEqual( + source.split(ADMINER_LINK).length - 1, 1, - 'expected exactly one adminerUrl( call: the Open Adminer button' + 'expected exactly one DB inspect (Adminer) link beside the site URL' + ); + + // Placement is the whole point of #249, and the assertions above pin only the + // widget: an anchor rendered back inside the action-button row passes all of + // them. Anchoring it between the site page's wp-admin link and the + // credentials line puts it in the row it was moved into. lastIndexOf, + // because the wizard step has a wp-admin link of its own, earlier. + const wpAdmin = source.lastIndexOf('>wp-admin'); + const adminer = source.indexOf(ADMINER_LINK); + const credentials = source.indexOf('Log in with admin'); + assert.ok( + wpAdmin < adminer && adminer < credentials, + 'expected the Adminer link on the links row, after wp-admin and above the credentials line' ); }); From f284c5a57eabe03b5cf0f37a819591761ef09ac2 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 09:26:39 +0200 Subject: [PATCH 12/53] Bump the Trac scrape generation before the auto-read fires, not after (#300) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Two `useEffect`s in `src/renderer/index.jsx` were both keyed off `tracTicket`: one auto-triggered a Trac scrape right after a ticket was freshly linked, the other bumped `scrapeGenRef` to mark later scrapes as stale. React runs same-component passive effects in declaration order, so the auto-scrape fired *before* the generation bump — `loadTracAttachments` captured the stale generation, and its `finally` guard never matched, leaving the "Reading ticket…" spinner stuck indefinitely. - Merges the two effects and bumps `scrapeGenRef.current` synchronously at the top, before the auto-scrape can fire, so the generation is always current. ## Test plan - [x] Added `test/trac-ticket-scrape-ordering.test.cjs` — a source-scan test (this repo's existing pattern for `index.jsx`, which has no render harness) asserting the generation bump appears in source before the auto-triggered scrape call, and that there's exactly one bump site. Verified it fails against the pre-fix code and passes after. - [x] `npm test` — 673/690 pass, same pre-existing failure count as on `trunk` (17 failures from a missing `fs-extra` dependency in `node_modules`, unrelated to this change). - [ ] Manual: link a Trac ticket to a task, switch away and back, confirm the panel stops showing "Reading ticket…" once the scrape resolves. Fixes #299 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 5 --- src/renderer/index.jsx | 27 +++++++----- test/trac-ticket-scrape-ordering.test.cjs | 53 +++++++++++++++++++++++ 2 files changed, 69 insertions(+), 11 deletions(-) create mode 100644 test/trac-ticket-scrape-ordering.test.cjs diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 502aab2..9132ff3 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -2996,12 +2996,23 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // an already-linked site would open a Trac window nobody asked for (#292). const autoReadTicketRef = useRef(null); const tracScrapeRef = useRef(null); + // A Trac scrape can run up to 90s. Bump a generation on every ticket change so + // a scrape that resolves after the ticket has moved on is dropped, rather than + // shown under the wrong ticket or clearing a newer request's loading flag. Kept + // on its own [tracTicket]-only effect, deliberately not folded into the one + // below: that effect also re-runs on an `isActive` toggle (switching site tabs + // and back), which must not bump the generation of an in-flight scrape that + // has nothing to do with this ticket change (#299 follow-up). Declared first — + // React runs same-component passive effects in declaration order — so the + // bump always lands before the auto-triggered scrape a few lines down (#299). + const scrapeGenRef = useRef(0); + useEffect(() => { scrapeGenRef.current += 1; }, [tracTicket]); useEffect(() => { if (!tracTicket) { setTicketPatches(null); // Attachments are per-ticket and loaded on demand; a stale list from the // previous ticket must not linger, and a scrape dropped by the generation - // bump below must not leave a stuck spinner. + // bump above must not leave a stuck spinner. setTracAttachments(null); setTracAttachmentsLoading(false); loadedTicketRef.current = null; @@ -3010,10 +3021,10 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit if (!isActive || loadedTicketRef.current === tracTicket) return; // A new ticket on the active site: drop any attachments the previous one // loaded (and clear its loading flag, so a scrape dropped by the generation - // bump cannot leave a stuck spinner with no button to recover), then fetch - // its PRs. Marked loaded before the fetch resolves, on purpose: a failed - // initial fetch is not retried on every re-activation (which could keep - // spending a rate-limited quota) — Refresh is the retry. + // bump above cannot leave a stuck spinner with no button to recover), then + // fetch its PRs. Marked loaded before the fetch resolves, on purpose: a + // failed initial fetch is not retried on every re-activation (which could + // keep spending a rate-limited quota) — Refresh is the retry. setTracAttachments(null); setTracAttachmentsLoading(false); loadedTicketRef.current = tracTicket; @@ -3031,12 +3042,6 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit } }, [tracTicket, isActive, loadTicketPatches]); - // A Trac scrape can run up to 90s. Bump a generation on every ticket change so - // a scrape that resolves after the ticket has moved on is dropped, rather than - // shown under the wrong ticket or clearing a newer request's loading flag. - const scrapeGenRef = useRef(0); - useEffect(() => { scrapeGenRef.current += 1; }, [tracTicket]); - // Fetches a PR's diff and drops into the same preview the file picker uses, // so applying a PR and applying a downloaded patch are one path from here on. const previewPr = async (pr) => { diff --git a/test/trac-ticket-scrape-ordering.test.cjs b/test/trac-ticket-scrape-ordering.test.cjs new file mode 100644 index 0000000..f1a3906 --- /dev/null +++ b/test/trac-ticket-scrape-ordering.test.cjs @@ -0,0 +1,53 @@ +'use strict'; +const test = require('node:test'); +const assert = require('node:assert'); +const fs = require('node:fs'); +const path = require('node:path'); + +// #299: the auto-read effect and the scrapeGenRef bump were two separate +// useEffects, both keyed off tracTicket. React runs same-component passive +// effects in declaration order, so the auto-scrape fired before the +// generation bump — loadTracAttachments captured a stale gen, and its +// finally guard (`gen === scrapeGenRef.current`) never matched, leaving the +// "Reading ticket..." spinner stuck. The fix declares the bump effect first, +// so it always runs before the auto-scrape effect a few lines below it. +test('scrape ordering: scrapeGenRef bumps before the auto-triggered scrape fires (issue #299)', () => { + const source = fs.readFileSync(path.join(__dirname, '..', 'src', 'renderer', 'index.jsx'), 'utf8'); + + const genBumpIdx = source.indexOf('scrapeGenRef.current += 1'); + const scrapeCallIdx = source.indexOf('tracScrapeRef.current()'); + + assert.ok(genBumpIdx !== -1, 'expected to find the scrapeGenRef bump in index.jsx'); + assert.ok(scrapeCallIdx !== -1, 'expected to find the auto-triggered tracScrapeRef.current() call in index.jsx'); + assert.ok( + genBumpIdx < scrapeCallIdx, + 'scrapeGenRef must bump before the auto-scrape fires, or loadTracAttachments captures a stale generation and its loading flag never clears (#299)' + ); + + // A second bump site, or the auto-scrape effect declared before this one, + // is exactly the ordering bug: same-component passive effects run in + // declaration order, so a later effect cannot beat an earlier one's body. + assert.strictEqual( + source.split('scrapeGenRef.current += 1').length - 1, + 1, + 'expected exactly one scrapeGenRef bump; a separate effect duplicating it reintroduces the ordering race (#299)' + ); +}); + +// A follow-up to the fix above: the bump effect must stay keyed on +// [tracTicket] alone. Folding it into the wider auto-read effect (deps +// [tracTicket, isActive, loadTicketPatches]) makes it re-run whenever the +// contributor switches site tabs, since every SiteRow stays mounted and +// isActive flips on every switch — bumping the generation of an in-flight +// scrape that has nothing to do with a ticket change, and reproducing the +// #299 spinner through a different trigger (caught in review, not filed as +// its own issue). +test('scrape ordering: the generation bump only depends on tracTicket, not isActive (issue #299 follow-up)', () => { + const source = fs.readFileSync(path.join(__dirname, '..', 'src', 'renderer', 'index.jsx'), 'utf8'); + + const bumpEffect = source.indexOf('useEffect(() => { scrapeGenRef.current += 1; }, [tracTicket]);'); + assert.ok( + bumpEffect !== -1, + 'expected the generation bump on its own effect keyed only on [tracTicket] — an isActive toggle (switching site tabs) must not bump it' + ); +}); From bc52d01f96b90743809d05c5bbbaaaa389e6ad76 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 09:30:02 +0200 Subject: [PATCH 13/53] Measure the patch conflict warning against the ticket's base, not its last save (#302) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Before a patch or PR is applied, the app warns which incoming files collide with work the contributor already did. That warning was measured against HEAD, and under the ticket-as-branch model (#108) HEAD is the ticket's *last saved state* — the parked WIP commit — not the ticket's base. Switching tickets parks the current work automatically, so the two baselines separate the moment a ticket has been left and resumed. From then on the warning is wrong in both directions, and the silent one is the reason to fix it: a resumed ticket has a worktree matching HEAD exactly, which reads as a clean tree, so a PR applied at that point lands on top of the contributor's own work with no warning at all. That is not an edge case — it is the ordinary shape of a ticket someone has come back to. Fixes #301. ## What changes Root cause: `git:preview-patch` fed `planApply` with `collectDirtyFiles(sitePath)`, a `git.statusMatrix` walk with no `ref` — i.e. "what differs from the last commit". It now asks `collectUnsubmittedFiles(sitePath)`, the base-relative measurement everything else in the patch flow already uses (`patchBaseOid` → `collectChangedFiles` → drop the rows the patch would not speak about). No new measurement code: the two questions and their two channels already exist from #239, and this check was simply on the wrong one. `collectDirtyFiles` is unchanged and keeps its callers: `git:worktree-dirty` and the trunk-update guards still need the narrow "what a force checkout would overwrite" answer, where parked work correctly does not count. On trunk `patchBaseOid` answers `null` and the walk falls back to HEAD, so a site that never linked a ticket keeps exactly the answer it had. ## How to test this Platforms: any — no paths, spawning or line endings involved. **Starting state:** a site with a linked ticket, and a second ticket to switch to. 1. On ticket A, edit a file the incoming patch also touches (e.g. `src/wp-login.php`). 2. Switch to ticket B, then back to ticket A. The work is parked; the tree now looks clean. 3. Apply a patch or a PR that touches that same file — Trac attachment, PR diff, or a `.patch` file, all three go through the same preview. **Expected:** the amber block appears — "You have your own edits to `src/wp-login.php`…". Before this change it did not appear at all. 4. Apply a patch touching a file the ticket never touched. **Expected:** no such block. 5. Optional, the other direction: edit a file back to its original content, then preview a patch touching it. **Expected:** no warning — that file holds none of your work, whatever `git status` thinks. **What must not have happened:** - The trunk-update dirty dialog must not start firing on a clean-but-parked tree — it deliberately keeps the narrow reading. Run "Update to latest trunk" on a resumed ticket and confirm it does not now claim uncommitted changes. - No preview should fail with "Could not check your work for conflicts" on a healthy site; that path is the fail-closed branch, not a normal outcome. - The preview must still list every file the patch touches, warning or not. Covered by three new tests in `test/ipc-wiring.test.cjs`, built on the existing real-repo `parkedTicketRepo` harness. Verified the first two fail on the old code — one with `conflicts: []` where the warning should fire, the other with a spurious `['src/wp-login.php']` — and pass after. ## Risks and limitations Self-review: **0 [fix here] · 1 [follow-up]**, and the follow-up predates this PR. - **More warnings than before, by design.** A resumed ticket now warns where it used to stay quiet. The existing copy already reads correctly for parked work. - **A slightly wider scan per preview.** `collectChangedFiles` reads both sides of each changed file, where `collectDirtyFiles` only walked status. It is the same cost the card's unsubmitted-work note already pays on the same repo, on an action that is already a file read. - **Not tested by hand yet** — I have not driven the app through the steps above; the coverage here is the suite plus the reasoning about the two baselines. ## Related Fixes #301. Builds on #300 — this PR targets its branch, so review that one first. Follow-up: #303 — the post-failure narration blames the pull request's author for a collision with the contributor's own work, using the same fact this PR puts at hand. ---
Design decisions and alternatives considered **Why not a union of both readings** (dirty-vs-HEAD ∪ changed-vs-base)? The base-relative walk already contains everything the HEAD-relative one reports on a ticket branch — uncommitted edits differ from the base too. A union would only re-import the false alarm: a file edited back to the base still differs from HEAD, and that is exactly the row #301 says should not be announced. **Why not compute the overlap inside `patch-plan.cjs`?** `planApply` is deliberately baseline-agnostic — it takes `dirtyPaths` and intersects. The bug was in what the handler passed it, so that is where the fix belongs; `test/patch-plan.test.cjs` needed no change at all.
Review outcome (required — see AGENTS.md) `/self-review` per AGENTS.md, judgement pass dispatched to a fresh-context subagent: **0 [fix here] · 1 [follow-up]**. `npm run lint` clean; `npm test` 941/941 pass. The follow-up (🔵, architecture): `patchBaseOid` has two silent fallbacks that this warning now becomes a second consumer of — a ticket branch with no recorded `baseOid` falls back to live `refs/heads/trunk`, which an "Update to latest trunk" can have moved ahead of the branch point (over-warning); and any throw inside it returns `null`, routing the walk back to HEAD with no signal to the renderer. Both predate this PR — `git:unsubmitted-work` and the card's note have ridden on them since #239 — so fixing them is a change to `patchBaseOid`'s contract, not to this handler. Deferred rather than widened into this diff; happy to file it as its own issue.
Implementation notes - `src/main.js` — `git:preview-patch` swaps its source and says which baseline it reads and why. The fail-closed `catch` stays (failing open would promise "no collisions" precisely when the app could not look); its message moves from "your working tree" to "your work", which is what it now failed to read. - `src/main.js` — the comment above `git:worktree-dirty` listed the patch-apply collision scan as a caller of the narrow reading. It was documenting the bug; it now names the checkout guards only. - `test/ipc-wiring.test.cjs` — `parkedTicketRepo` takes an optional `workFile` so the same harness can build the `src/` layout a patch's paths are mapped into by `mapToSrcLayout`. The default is unchanged, so the #239 tests are untouched.
Screenshots or recording Nothing on screen changed: the amber "You have your own edits to …" block at `src/renderer/index.jsx:4722` renders exactly as before. What changed is when it appears.
Co-authored-by: Claude Opus 5 (1M context) --- src/main.js | 19 +++++++--- test/ipc-wiring.test.cjs | 81 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 89 insertions(+), 11 deletions(-) diff --git a/src/main.js b/src/main.js index 2cb85ce..86641ef 100644 --- a/src/main.js +++ b/src/main.js @@ -1134,9 +1134,10 @@ async function collectUnsubmittedFiles(sitePath) { // Two questions, deliberately two channels (#239). This one asks "are there // edits not written down yet" — the narrow reading the checkout guards need: -// the trunk-update dirty dialog and the patch-apply collision scan protect -// exactly the files a force checkout would overwrite, and parked work is not -// among them. The card's note asks `git:unsubmitted-work` instead. +// the trunk-update dirty dialog protects exactly the files a force checkout +// would overwrite, and parked work is not among them. Everything that asks +// what this ticket has done — the card's note, and the patch-apply collision +// scan (#301) — asks `git:unsubmitted-work`'s question instead. ipcMain.handle('git:worktree-dirty', async (_e, sitePath) => { try { const files = await collectDirtyFiles(sitePath); @@ -1433,18 +1434,26 @@ const REVERTABLE_PATCH_LIMIT = 512 * 1024; // Reading a patch without touching the checkout, so the contributor sees which // files it would change — and which of their own edits it collides with — // before deciding. +// +// Measured from the ticket's base, not from HEAD (#301). Under the +// ticket-as-branch model a ticket's work lives in its parked WIP commit, so a +// ticket that has been left and resumed has a worktree matching HEAD exactly: +// HEAD-relative, the warning goes silent on precisely the tree it exists to +// protect, and speaks up about files edited back to what the base holds. This +// is the same measurement the patch itself is taken with, so what the warning +// calls "your own edits" is what the patch modal would show. ipcMain.handle('git:preview-patch', async (_e, sitePath, patchText) => { try { const parsed = parsePatchFiles(patchText); if (!parsed.ok) return { ok: false, error: parsed.error }; let dirtyPaths; try { - dirtyPaths = await collectDirtyFiles(sitePath); + dirtyPaths = await collectUnsubmittedFiles(sitePath); } catch (e) { // Failing open here would promise "no collisions" precisely when the // app could not look — surface the failure instead. logError('git:preview-patch', String(e && e.stack ? e.stack : e)); - return { ok: false, error: 'Could not check your working tree for conflicts, so the preview was not shown.' }; + return { ok: false, error: 'Could not check your work for conflicts, so the preview was not shown.' }; } const plan = planApply({ files: parsed.files, dirtyPaths }); return { ok: true, ...plan, files: parsed.files.map((f) => ({ kind: f.kind, path: f.path })) }; diff --git a/test/ipc-wiring.test.cjs b/test/ipc-wiring.test.cjs index f8e8b98..dbdfc31 100644 --- a/test/ipc-wiring.test.cjs +++ b/test/ipc-wiring.test.cjs @@ -465,24 +465,31 @@ test('git:discard-changes resets through trunk-update and clears the applied-pat // A site the way the ticket-as-branch model leaves it: the contributor's work // parked in the branch's single WIP commit, the worktree clean. `git status` // says nothing; the patch says +1 line. The note has to side with the patch. -async function parkedTicketRepo(t) { +// `workFile` is where the parked edit lands. The default keeps this repo as the +// note's tests have always had it; the patch-preview tests below ask for the +// `src/` layout instead, because a patch's paths are read through +// `mapToSrcLayout` and a collision is a string match on the result. +async function parkedTicketRepo(t, { workFile = 'wp-login.php' } = {}) { const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipc-wiring-parked-')); t.after(() => fs.rmSync(dir, { recursive: true, force: true })); await git.init({ fs, dir, defaultBranch: 'trunk' }); const author = { name: 'test', email: 'test@example.com' }; - fs.writeFileSync(path.join(dir, 'wp-login.php'), ' { assert.deepEqual(result, { ok: false, error: 'unreadable' }); }); +// --- what the collision warning is measured against (#301) ---------------- + +// A patch against `src/wp-login.php`, the file the parked repo's ticket work is +// in. Written the way the app's own reader expects to read it back. +const LOGIN_DIFF = `diff --git a/src/wp-login.php b/src/wp-login.php +index 384bf9e..dbfa038 100644 +--- a/src/wp-login.php ++++ b/src/wp-login.php +@@ -1,2 +1,2 @@ + { + const { dir, baseOid } = await parkedTicketRepo(t, { workFile: 'src/wp-login.php' }); + const main = parkedTicketMain(dir, baseOid); + + const narrow = await main.invoke('git:worktree-dirty', dir); + assert.equal(narrow.dirty, false, 'nothing is uncommitted — the guards keep their answer'); + + const preview = await main.invoke('git:preview-patch', dir, LOGIN_DIFF); + assert.equal(preview.ok, true); + assert.deepEqual(preview.conflicts, ['src/wp-login.php']); +}); + +// The other direction: a file edited back to what the base holds carries none +// of the contributor's work, whatever HEAD says about it. Announcing it sends +// someone looking for changes they never made. +test('git:preview-patch does not warn about a file that matches the base (#301)', async (t) => { + const { dir, baseOid, workFile, baseText } = await parkedTicketRepo(t, { workFile: 'src/wp-login.php' }); + // Differs from HEAD (the parked commit), identical to the branch point. + fs.writeFileSync(path.join(dir, workFile), baseText); + const main = parkedTicketMain(dir, baseOid); + + const narrow = await main.invoke('git:worktree-dirty', dir); + assert.equal(narrow.dirty, true, 'HEAD-relative this file reads as edited'); + + const preview = await main.invoke('git:preview-patch', dir, LOGIN_DIFF); + assert.equal(preview.ok, true); + assert.deepEqual(preview.conflicts, []); +}); + +// And a patch that touches nothing the ticket has worked on still warns about +// nothing — the wider baseline widens what counts as the contributor's work, +// it does not warn about every file in the patch. +test('git:preview-patch stays quiet about files the ticket never touched (#301)', async (t) => { + const { dir, baseOid } = await parkedTicketRepo(t, { workFile: 'src/wp-login.php' }); + const main = parkedTicketMain(dir, baseOid); + + const preview = await main.invoke('git:preview-patch', dir, LOGIN_DIFF.replace(/wp-login\.php/g, 'wp-signup.php')); + assert.equal(preview.ok, true); + assert.deepEqual(preview.paths, ['src/wp-signup.php']); + assert.deepEqual(preview.conflicts, []); +}); + // git:apply-patch reads the store for its guard before delegating, which is the // seam fakeSettingsStore stands in for — so it is a wired handler, not a hole. // It streams, so its result comes back on the :done channel, not the return. From c66e89933f002f0fd7406918c834a5820814f430 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 09:33:37 +0200 Subject: [PATCH 14/53] Keep an empty file in the patch when it is added or deleted (#315) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why A contributor adds a new empty file to their ticket — a placeholder, a fixture, a file they are about to fill in — and the patch modal says the ticket has no changes at all. Deleting a file that was already empty does the same. It is not merely missing from the generated `.diff`: the card's unsubmitted-work note does not count it either, so nothing on screen suggests anything was dropped. Silent today, destructive soon. This is the same classification the planned "bring a ticket up to date" flow (#305) uses to carry a ticket's work onto newer trunk. A file the classification does not mention is a file that flow would not carry — and the force checkout it performs would delete it. A cosmetic omission now is lost work then. ## What changes **Root cause.** `classifyChangedFile` in `src/main.js` compared the two sides' normalized text before consulting the existence flags it already held. For an added empty file `file.base` is null and `file.work` is a zero-length buffer, so both sides render `''`, compare equal, and the row is classified `unchanged` — skipped by `createMinimalPatchForDir` and filtered out of `collectUnsubmittedFiles`. Deleting an already-empty file is the mirror image. Whether a file was added or deleted is not a question about its contents. `collectChangedFiles` already carries the answer: `inHead` and `inWorkdir` come from `statusMatrix` status codes, which is the rule #85 established for whole-file reads — the codes, not the buffers, are what say a file is gone. So `unchanged` now requires the file to exist on both sides. Nothing else about the condition moves: a file that differs only in line endings is still nothing. Three consequences had to be handled, and they are the reason this is not a one-line diff: 1. **The patch has to be emittable.** An empty file has no line to diff, so jsdiff produces a section with no hunk at all — and `git apply` rejects that as `No valid patches in input`, taking the *whole* patch and every unrelated file in it, the same all-or-nothing failure mode the phantom `\ No newline` work was about. Git's own extended header (`diff --git` plus `new file mode` / `deleted file mode`) is how an empty file is carried, so `emptyFileSection` in `src/main.js` emits exactly that, keeping the `---`/`+++` pair because `/dev/null` is what this app's own reader classifies from. Verified against real `git apply`, mixed into a patch alongside an ordinary edit. 2. **The patch has to be readable back.** `parsePatchFiles` in `src/patch-plan.cjs` treated every zero-hunk section as a rename, a binary, or garbage. It now classifies from `/dev/null` on either parsed filename — the same rule `classify()` applies to a hunked section — before falling through to the raw-section checks. It reads the parsed filenames rather than `scanSections`' output on purpose, so it does not depend on the two arrays lining up in a patch that mixes git-style and bare sections. 3. **The applier must not become destructive.** A deletion with no hunk gives `src/patch-apply.js` no pre-image to match, so its existing "did the file move on since the preview" check could not run and the file would be removed whatever was in it. A hunkless deletion *claims* the file was empty, so `planFile` now refuses one whose target has content, routed through the same `conflict()` path as every other mismatch. `git apply` refuses the identical case as `removal patch leaves file contents`. Deliberately not in scope: binary and unreadable handling, file modes (this generator has never recorded them, for empty files or otherwise), and reading empty add/delete sections out of patches written by *real git*, which omits the `---`/`+++` pair entirely — see Risks. ## How to test this **Platforms: any.** Nothing here touches paths, spawning or signing. The generated section is built with `\n` like every other, and `statusMatrix` paths are forward-slash on every OS. **Starting state:** a site with a linked Trac ticket, on its ticket branch, with no other uncommitted work. (Link a ticket from the card if the site is still on trunk.) 1. In the site's folder, create an empty file — `touch src/placeholder.php`, or save a new empty file from your editor. Do not put anything in it. - **Expected:** the site card's note names unsubmitted work and counts **1 file**. 2. Open **Review and submit** (the patch modal). - **Expected:** the diff area is not "No changes." It shows a section for `src/placeholder.php` reading `new file mode 100644`, `--- /dev/null`, `+++ b/src/placeholder.php`. 3. Save the patch to disk with **Save patch**, then in a real `wordpress-develop` clone at the same base run `git apply --check the-file.diff`. - **Expected:** exits 0 and prints nothing. Running `git apply the-file.diff` creates an empty `src/placeholder.php`. 4. Back in the app, edit an ordinary file too (add a line to `src/wp-login.php`) and reopen the modal. - **Expected:** both files are in the one patch, and step 3 still passes on it — the empty section must not break the file next to it. 5. Now the deletion side. Delete `src/placeholder.php` from disk *after* it has been carried into the ticket's parked work — or, more simply on a fresh site: pick any file that is empty in trunk, delete it, and open the modal. - **Expected:** a section reading `deleted file mode 100644`, `--- a/`, `+++ /dev/null`, and the card's note counts it. 6. Apply a patch containing an empty addition into a second site: open the second site's **Apply a patch**, paste the `.diff` from step 3, and confirm. - **Expected:** the preview lists the file as **added**, not modified; applying creates it, empty. 7. The refusal. Take the step-5 deletion patch, but before applying it into the second site, put some text into the file it names. - **Expected:** applying fails with "moved on since the patch was written", and the file — with your text in it — is still there. **What must not have happened:** - No file may be deleted in step 7. A silent deletion there is work destroyed with nothing on screen to say so, and it is a path this PR opens: the applier had no pre-image check that could run on a hunkless deletion. - `git apply` must not fail in steps 3 and 4 with `No valid patches in input` or `corrupt patch at line N`. A malformed empty section takes the whole patch down, including the unrelated file in step 4 — that is the failure this shape was chosen to avoid. - A file whose only change is line endings must still be absent from the patch and from the note's count. Check it: on Windows, or by rewriting a file with CRLF, confirm the modal still says "No changes." Widening the existence test must not have become "stop comparing text". - Nothing may be staged into the contributor's index by generating the patch (#85). **The steps that used to reproduce it:** steps 1 and 2, on `trunk`, produce a card note saying nothing and a modal saying "No changes." **Tests, and which fail on the old code.** Seven of the nine new tests fail without this change, checked by stashing the `src/` edits and re-running: - `test/ipc-wiring.test.cjs` — `an added empty file reaches the patch (#311)`, `a deleted empty file reaches the patch (#311)`, `a generated empty addition parses back as an addition (#311)`, `a generated empty deletion parses back as a deletion (#311)`, `a generated patch carries empty additions and deletions into another checkout (#311)`, `git:unsubmitted-work counts empty files added and deleted (#311, #239)` — all six fail on the old code. - `test/patch-apply.integration.test.cjs` — `an empty-file deletion refuses a file that has content (#311)` fails without the applier guard (checked by stashing only `src/patch-apply.js`). - The remaining two pin the negative and the happy path: `a file that differs only in line endings is still no change (#311, #85)` and `an empty-file deletion removes the empty file (#311)`. `npm test` 950 pass / 0 fail. `npm run lint` clean. ## Risks and limitations Review outcome: **2 [fix here] · 1 [follow-up] — both [fix here] fixed.** One of them found a real regression this PR would have introduced (the applier deleting a file with content), so the collapsed block below is worth reading. - **Empty add/delete sections written by real git are still not read.** `git diff` emits `diff --git` + `new file mode` + `index` and *no* `---`/`+++` pair for an empty file, so jsdiff hands back no filenames and `parsePatchFiles` still rejects — and because it returns a whole-patch error, a Trac attachment or PR `.diff` that happens to add one empty fixture is rejected entirely, unrelated files included. That is the read half of #311 and it predates this change; `scanSections` already captures the paths and would need to record the mode markers. Deferred as a follow-up rather than widened into this PR. - **File modes are not carried.** The emitted section hardcodes `100644`. An empty file with the executable bit set loses it — as every non-empty addition already does, since this generator has never recorded modes. Applying a `deleted file mode 100644` section over a `100755` file makes `git apply` warn and then apply, which is acceptable. - **A hunkless deletion is refused whenever the target is non-empty**, including the case where the contributor emptied the file themselves and would have been happy to see it go. That is the conservative direction, and it matches `git apply`. - **Not tested by hand: step 5's "empty file in trunk" starting state.** `wordpress-develop` has no empty tracked file to delete, so the deletion half was driven through the suite and through real `git apply` against a synthetic repo rather than in the app against a real clone. ## Related Fixes #311. Related to #85 (the codes, not the buffers, say a file is gone), #239 (the unsubmitted-work count reads this same classification) and #305 (the carry-forward flow that would delete anything this classification fails to mention). Stacked on #302 — review that first; this PR targets its branch. ---
Design decisions and alternatives considered **Why not just return a new `kind` from `classifyChangedFile`?** The two consumers ask different questions of it: the generator switches on the kind, the note only asks whether it is `unchanged`. A new kind would have meant touching the note for a case it already handles correctly once the classification is right. Keeping the row as `text` with `a === b` and special-casing the emission keeps the note's filter untouched. **Why emit `diff --git` at all, when nothing else in this generator does?** Because nothing shorter works. Tested against real `git apply`: `--- /dev/null` + `+++ b/foo` with no hunk is "no valid patches in input"; adding `@@ -0,0 +0,0 @@` or `@@ -1,0 +1,0 @@` is "corrupt patch"; `diff --git` without the mode line is "patch with only garbage". `diff --git` plus `new file mode 100644` applies cleanly, and so does the deletion form. The mode line is load-bearing, not decoration. **Why keep the `---`/`+++` pair, which real git omits here?** Two reasons. It is what this app's own reader classifies an add or a delete from (#85) — without it, jsdiff returns a section with no filenames at all and the round trip breaks. And it makes the section look like every other one in the patch, so the renderer's diff highlighting treats its lines as meta the way it does everywhere else. **Why classify from the parsed filenames in `patch-plan.cjs` rather than from `sections[i]`?** `scanSections` pushes an entry only for a line starting `diff --git` or `Index:`. In a patch that mixes the new git-style sections with jsdiff's bare ones — which is exactly what this generator now produces — `sections` is shorter than `parsed` and the indices do not correspond. Reading `file.oldFileName` sidesteps that entirely. The misalignment itself is pre-existing and harmless here (app-generated patches contain no renames or binaries, which are the only things the section lookup is used for), but the new branch deliberately does not depend on it. **Why refuse a hunkless deletion over a non-empty file instead of applying it?** Symmetry with the hunked case, which exists precisely so that "an edit made after the preview fails all-or-nothing rather than being silently deleted with the contributor's changes in it". Without the guard this PR would have made the app *more* destructive than `git apply`, on a code path that did not exist before it.
Review outcome (required — see AGENTS.md) **2 [fix here] · 1 [follow-up] — both [fix here] fixed, the [follow-up] deferred.** The judgement pass ran in a fresh context (a subagent given the diff and `.github/instructions/code-review.instructions.md`), not the session that wrote the change. **Fixed — Architecture 🟡 [fix here], `src/patch-apply.js:288`.** A zero-hunk deletion skipped the pre-image check, so an empty-file deletion removed its target whatever it contained — verified: applying the generated section over a file holding `
Implementation notes **`src/main.js`** - `classifyChangedFile` — `unchanged` now additionally requires `file.inHead === file.inWorkdir`. One conjunct; the comment block above it carries the reasoning. - `createMinimalPatchForDir` — when `a === b` on a row that reached the `text` branch (only possible for an empty add or delete), emits `emptyFileSection` instead of calling `createTwoFilesPatch`, which would produce a hunkless section. - `emptyFileSection` — new. `===` separator (67, matching jsdiff), `diff --git a/

b/

`, the mode marker, then the `---`/`+++` pair. **`src/patch-plan.cjs`** — `parsePatchFiles`, inside the existing `hunks.length === 0` branch, ahead of the rename and binary checks. **`src/patch-apply.js`** — `planFile`'s delete branch gains an `else if (previous.length)` arm. **Verification against real git**, since the suite exercises only this app's own reader: a patch combining the new deletion section, the new addition section, and an ordinary jsdiff edit section applies with `git apply` at exit 0, leaves the deleted file gone, creates the added file at 0 bytes, and updates the edited file. Each rejected alternative shape was tested the same way.

Screenshots or recording No new UI. The visible change is entirely in surfaces that already exist and whose content is text: the patch modal shows a section where it used to say "No changes.", and the site card's note counts a file where it used to count none. Both are stated as expected results in **How to test this**, in the words that appear on screen, which is falsifiable in a way a still frame of a diff pane is not.
Co-authored-by: Claude Fable 5 --- src/main.js | 49 +++++++++++- src/patch-apply.js | 8 ++ src/patch-plan.cjs | 20 +++++ test/ipc-wiring.test.cjs | 108 ++++++++++++++++++++++++++ test/patch-apply.integration.test.cjs | 37 +++++++++ 5 files changed, 220 insertions(+), 2 deletions(-) diff --git a/src/main.js b/src/main.js index 86641ef..02c68c3 100644 --- a/src/main.js +++ b/src/main.js @@ -458,7 +458,13 @@ async function collectChangedFiles(dir, baseOid = null) { // too is named above the diff, and counts. // - 'unchanged': both sides equal once line endings are normalized — the // churn of a CRLF checkout (native git on Windows), which must reach -// neither a Trac patch nor the note's count. +// neither a Trac patch nor the note's count. Only a file that exists on +// both sides can be unchanged: whether one was added or deleted is a +// question about which side it is on, and the status codes are what answer +// it (#85), not the text. An empty file added, and an empty file deleted, +// both render '' on both sides and used to come out 'unchanged' — dropped +// from the patch and uncounted by the note, with nothing on screen to say +// so (#311). // - 'text': a real difference, normalized on both sides for the same reason. function classifyChangedFile(file) { const gone = !file.inWorkdir; @@ -469,7 +475,7 @@ function classifyChangedFile(file) { } const a = file.base ? normalizeEol(file.base.toString('utf8')) : ''; const b = file.work ? normalizeEol(file.work.toString('utf8')) : ''; - if (a === b) return { kind: 'unchanged' }; + if (file.inHead === file.inWorkdir && a === b) return { kind: 'unchanged' }; return { kind: 'text', a, b }; } @@ -501,6 +507,15 @@ async function createMinimalPatchForDir(dir, baseOid = null) { // Which side exists is the walk's answer, not the buffers'. const oldName = file.inHead ? `a/${file.path}` : '/dev/null'; const newName = gone ? '/dev/null' : `b/${file.path}`; + // An empty file added, or an empty file deleted: there is no line on + // either side, so jsdiff emits a section with no hunk at all — which + // `git apply` rejects as "no valid patches in input", taking the whole + // patch and every unrelated file in it. Git's own extended header is + // how an empty file is carried, so that is what this emits (#311). + if (a === b) { + patch += emptyFileSection(file.path, oldName, newName, gone); + continue; + } // No blank line between sections. jsdiff keeps consuming lines past a // `\ No newline at end of file` marker, so a separator becomes a // phantom empty context line and the section stops applying to any @@ -514,6 +529,36 @@ async function createMinimalPatchForDir(dir, baseOid = null) { return skippedNotice(binaries, unreadable) + (patch || 'No changes.'); } +/** + * The section for an empty file that was added or deleted (#311). + * + * A unified diff describes a file by its lines, and an empty file has none — + * so what says this happened at all is the header. `git apply` reads an + * addition or a deletion with no hunk only from the `diff --git` line plus + * `new file mode` / `deleted file mode`; without them it refuses the input as + * garbage. The `---`/`+++` pair is kept alongside because `/dev/null` is what + * this app's own reader classifies from (#85), and it is what makes the + * section look like every other one in the patch. + * + * The mode is the plain-file default, which is what this generator carries for + * every file: it does not record modes, so an executable bit is not preserved + * here any more than it is on a non-empty addition. + * + * @param {string} filepath Repo-relative path. + * @param {string} oldName Old side as the patch names it. + * @param {string} newName New side as the patch names it. + * @param {boolean} gone True when the file is the one being deleted. + * @return {string} One patch section, ending in a newline. + */ +function emptyFileSection(filepath, oldName, newName, gone) { + const mode = gone ? 'deleted file mode 100644' : 'new file mode 100644'; + return `${'='.repeat(67)}\n` + + `diff --git a/${filepath} b/${filepath}\n` + + `${mode}\n` + + `--- ${oldName}\n` + + `+++ ${newName}\n`; +} + /** * Drops the `\ No newline at end of file` marker jsdiff adds to a deletion * whether or not it is true (#85). diff --git a/src/patch-apply.js b/src/patch-apply.js index e222a1a..dc92be8 100644 --- a/src/patch-apply.js +++ b/src/patch-apply.js @@ -294,6 +294,14 @@ function resolveFile(dir, file, { diagnose = true } = {}) { if (file.hunks && file.hunks.length) { const text = normalizeEol(previous.toString('utf8')); if (JsDiff.applyPatch(text, file.patch) === false) return conflict(file.path, text); + } else if (previous.length) { + // A deletion with no hunk is the removal of an *empty* file (#311) — + // there was nothing to describe, which is also the whole claim it + // makes about the old side. A file that has content since is not the + // file the patch described, and removing it would discard work no + // hunk ever mentioned. `git apply` refuses this outright ("removal + // patch leaves file contents"); so does this. + return conflict(file.path, normalizeEol(previous.toString('utf8'))); } return { op: 'delete', abs: target, path: file.path, previous }; } diff --git a/src/patch-plan.cjs b/src/patch-plan.cjs index cf7d47e..2bdbb06 100644 --- a/src/patch-plan.cjs +++ b/src/patch-plan.cjs @@ -168,6 +168,26 @@ function parsePatchFiles(text) { const file = parsed[i]; if (!file.hunks || file.hunks.length === 0) { + // An empty file added or deleted has no line on either side, so its + // section is headers alone (#311). `/dev/null` still says which of + // the two it was — the same rule classify() applies to a hunked + // section — and it comes off the parsed filenames, so it does not + // depend on `sections` lining up with `parsed` (it does not, in a + // patch that mixes git-style and bare sections). + if (file.oldFileName === '/dev/null' || file.newFileName === '/dev/null') { + const empty = stripPathPrefix(file.oldFileName || '', file.newFileName || ''); + const emptyKind = classify(file, empty.oldPath, empty.newPath); + const emptyTarget = emptyKind === 'delete' ? empty.oldPath : empty.newPath; + files.push({ + kind: emptyKind, + oldPath: mapToSrcLayout(empty.oldPath), + newPath: mapToSrcLayout(empty.newPath), + path: mapToSrcLayout(emptyTarget), + hunks: [], + patch: file + }); + continue; + } // jsdiff kept nothing, so the raw section is the only evidence of // what this was. const section = sections[i]; diff --git a/test/ipc-wiring.test.cjs b/test/ipc-wiring.test.cjs index dbdfc31..9bdf1ec 100644 --- a/test/ipc-wiring.test.cjs +++ b/test/ipc-wiring.test.cjs @@ -949,6 +949,114 @@ test('a generated patch applies when the files have no trailing newline (#85)', assert.equal(fs.readFileSync(path.join(target, 'edited.php'), 'utf8'), 'line1\nline2\nline3'); }); +// --- empty files added and deleted (#311) --------------------------------- + +// The generator used to compare the two sides' text before consulting the +// status codes that say which side the file is on. An added empty file renders +// '' on both sides, so it came out "unchanged" and was skipped — a contributor +// adding a placeholder was told their ticket had no changes at all. +test('an added empty file reaches the patch (#311)', async (t) => { + const dir = await patchRepo(t, { 'kept.php': ' { + const dir = await patchRepo(t, { 'placeholder.php': '', 'kept.php': ' { + const dir = await patchRepo(t, { 'kept.php': ' [f.kind, f.path]), [['add', 'placeholder.php']]); +}); + +test('a generated empty deletion parses back as a deletion (#311)', async (t) => { + const dir = await patchRepo(t, { 'placeholder.php': '', 'kept.php': ' [f.kind, f.path]), [['delete', 'placeholder.php']]); +}); + +// And it has to apply, alongside an ordinary edit in the same patch — the +// mixed case is the one that would break everything else if the empty section +// were malformed, since applying is all-or-nothing. +test('a generated patch carries empty additions and deletions into another checkout (#311)', async (t) => { + const { applied, target } = await roundTrip(t, { + 'was-empty.php': '', + 'edited.php': 'line1\nline2\n' + }, (dir) => { + fs.rmSync(path.join(dir, 'was-empty.php')); + fs.writeFileSync(path.join(dir, 'placeholder.php'), ''); + fs.writeFileSync(path.join(dir, 'edited.php'), 'line1\nline2\nline3\n'); + }); + + assert.equal(applied.ok, true, applied.error); + assert.equal(fs.existsSync(path.join(target, 'was-empty.php')), false, 'the empty deletion has to actually delete'); + assert.equal(fs.readFileSync(path.join(target, 'placeholder.php'), 'utf8'), '', 'the empty addition has to actually create'); + assert.equal(fs.readFileSync(path.join(target, 'edited.php'), 'utf8'), 'line1\nline2\nline3\n'); +}); + +// The card's note reads the same classification, so the omission was silent on +// both surfaces: nothing on screen suggested a file had been dropped. +test('git:unsubmitted-work counts empty files added and deleted (#311, #239)', async (t) => { + const dir = await patchRepo(t, { 'was-empty.php': '', 'kept.php': ' { + const dir = await patchRepo(t, { 'text.php': ' { + const dir = await makeRepo(t, { 'src/placeholder.php': '' }); + const deletePatch = `diff --git a/src/placeholder.php b/src/placeholder.php +deleted file mode 100644 +--- a/src/placeholder.php ++++ /dev/null +`; + fs.writeFileSync(path.join(dir, 'src/placeholder.php'), 'my own work\n'); + const before = snapshot(dir); + + const res = await applyPatchToDir({ dir, patchText: deletePatch }); + + assert.strictEqual(res.ok, false); + assert.match(res.error, /moved on since the patch was written/); + assert.deepStrictEqual(snapshot(dir), before, 'the file that grew content must not be deleted'); +}); + +// And it still removes the file it does describe. +test('applyPatchToDir: an empty-file deletion removes the empty file (#311)', async (t) => { + const dir = await makeRepo(t, { 'src/placeholder.php': '' }); + const deletePatch = `diff --git a/src/placeholder.php b/src/placeholder.php +deleted file mode 100644 +--- a/src/placeholder.php ++++ /dev/null +`; + + const res = await applyPatchToDir({ dir, patchText: deletePatch }); + + assert.strictEqual(res.ok, true, res.error); + assert.strictEqual(fs.existsSync(path.join(dir, 'src/placeholder.php')), false); +}); + // A rename that completes and is then undone by a later failure must restore the // source and remove the destination — registering each action before its // mutations is what lets rollback see a half-done one. (Copilot #3.) From 40f6dee2b703772082000acc666b45bee39bd700 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 09:36:35 +0200 Subject: [PATCH 15/53] Read Git empty-file patch sections (#322) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why A Git-authored patch that adds or deletes an empty file omits the `---` / `+++` pair. The reader cannot classify that section today, so one empty file rejects the whole patch, including unrelated valid edits. ## What changes Recognise only Git's unambiguous, text empty-file form and supply the missing headers before the existing parser runs. Binary sections, renames and ambiguous/quoted paths remain untouched rather than guessed. ## How to test this **Platforms:** any. **Starting state:** a site linked to a ticket, plus a patch generated by Git that edits one file, adds an empty file and deletes an empty file. 1. Open the ticket's patch action and select that patch. Expect the preview to list all three paths. 2. Apply it. Expect the ordinary edit, empty creation and empty deletion all to occur. 3. Repeat with content already present at the addition path. Expect the whole apply to fail and every file to remain unchanged. **What must not have happened:** the empty section must not disappear silently, and a failed apply must not partially edit the tree. The regression tests fail on the parent branch and pass here: `node --test test/patch-plan.test.cjs test/patch-apply.integration.test.cjs`. ## Risks and limitations Git-quoted path names (for example names containing tabs, quotes, backslashes or some non-ASCII characters) are still refused. Decoding Git's C-style quoting is deliberately deferred to keep the 1.0 reader narrow. The full desktop flow has not yet been driven by hand; it will be exercised from the integration artifact. ## Related Fixes #316. Follow-up to #311. ---
Design decisions and alternatives considered The implementation normalises the narrow Git form into the header shape already supported by the parser. It does not create a second patch parser or weaken the all-or-nothing guards.
Review outcome 0 [fix here] · 1 [follow-up]. The follow-up is quoted Git paths, documented above. Lint is clean; 957 tests pass; no security, performance or cross-platform findings.
Implementation notes Only three files change: the parser plus unit and integration coverage. There is no UI, IPC or persistence change.
--- src/patch-plan.cjs | 109 +++++++++++++++++++++++++- test/patch-apply.integration.test.cjs | 50 ++++++++++++ test/patch-plan.test.cjs | 94 ++++++++++++++++++++++ 3 files changed, 249 insertions(+), 4 deletions(-) diff --git a/src/patch-plan.cjs b/src/patch-plan.cjs index 2bdbb06..e1cc18c 100644 --- a/src/patch-plan.cjs +++ b/src/patch-plan.cjs @@ -124,6 +124,101 @@ function scanSections(raw) { return sections; } +/** + * The one path named by a `diff --git a/ b/` line whose two sides + * are the same file — the only shape an added or deleted file can have. + * + * The line has no delimiter, so a path containing a space makes it ambiguous in + * general (`git apply` itself refuses such a line without `---`/`+++` to cross- + * check). But when both sides are the same path — and for an add or a delete + * they always are — the split is fixed by the line's length, so even + * `a/new file.php b/new file.php` reads back exactly. Git quotes a path only + * for characters beyond plain spaces; the quoted form carries C-style escapes, + * so it is left unparsed rather than guessed at. + * + * @param {string} line A `diff --git ` line. + * @return {string|null} The repo-relative path, or null when it cannot be read + * with certainty. + */ +function samePathFromGitDiffLine(line) { + const rest = line.slice('diff --git '.length); + if (!rest.startsWith('a/')) return null; + const length = (rest.length - 5) / 2; + if (!Number.isInteger(length) || length < 1) return null; + const filePath = rest.slice(2, 2 + length); + if (rest.slice(2 + length, 5 + length) !== ' b/' || rest.slice(5 + length) !== filePath) return null; + return filePath; +} + +/** + * Rewrites the sections real git emits for an empty file added or deleted into + * the shape the rest of this parser already reads (#311). + * + * An empty file has no line to diff, so git writes its section as headers + * alone and — unlike this app's own generator — omits the `---`/`+++` pair + * entirely; the file's fate is carried by `new file mode` / `deleted file + * mode`. jsdiff cannot see those: such a section comes back as `{hunks: []}` + * with no filenames when it is last in the patch, and is silently swallowed + * when another section follows it. Either way one empty file used to take the + * whole patch down (or vanish from it) — every unrelated file included. + * + * Supplying the pair git left out, before jsdiff parses, is the whole fix: the + * section then parses like the app's own empty-file sections, and everything + * downstream — classification, layout mapping, `planApply`, the applier and + * its guards — treats both origins identically because they are identical. + * + * Deliberately narrow: a section is only rewritten when it carries a + * new/deleted file mode line, has no `---`/`+++`/hunk of its own, is not + * binary and not a rename, and its `diff --git` line names one unambiguous + * path. Anything else is left byte-for-byte alone. + * + * @param {string} text EOL-normalised patch text. + * @return {string} + */ +function supplyEmptyFileHeaders(text) { + const lines = text.split('\n'); + const out = []; + let i = 0; + while (i < lines.length) { + out.push(lines[i]); + if (!lines[i].startsWith('diff --git ')) { i++; continue; } + let mode = ''; + let opaque = false; + let end = i + 1; + while (end < lines.length && !lines[end].startsWith('diff --git ') && !lines[end].startsWith('Index: ')) { + const line = lines[end]; + if (/^new file mode /.test(line)) mode = 'add'; + else if (/^deleted file mode /.test(line)) mode = 'delete'; + else if (/^(--- |\+\+\+ |@@ |GIT binary patch|rename (?:from|to) )/.test(line) || /^Binary files .* differ$/.test(line)) opaque = true; + end++; + } + const section = lines.slice(i + 1, end); + // The injected pair goes at the section's end, where git itself puts + // it — but ahead of any trailing blank line, which jsdiff would read + // as a phantom context line. + let tail = section.length; + while (tail > 0 && section[tail - 1] === '') tail--; + out.push(...section.slice(0, tail)); + const filePath = mode && !opaque ? samePathFromGitDiffLine(lines[i]) : null; + // jsdiff can silently omit a mode-only section it cannot name when a + // normal section follows. Refuse the whole patch instead of reporting a + // partial success. Decoding Git's quoted C-style paths is deliberately + // outside the narrow 1.0 reader (#316). + if (mode && !opaque && !filePath) { + throw new Error('The empty file path is quoted or ambiguous.'); + } + if (filePath) { + out.push( + mode === 'add' ? '--- /dev/null' : `--- a/${filePath}`, + mode === 'add' ? `+++ b/${filePath}` : '+++ /dev/null' + ); + } + out.push(...section.slice(tail)); + i = end; + } + return out.join('\n'); +} + /** * @param {Object} file A jsdiff parsePatch entry. * @param {string} oldPath @@ -148,11 +243,17 @@ function parsePatchFiles(text) { const raw = typeof text === 'string' ? text : ''; if (!raw.trim()) return { ok: false, error: 'The patch is empty.' }; + // Normalise line endings on the way in so hunk context matches what the + // applier reads off disk, which is normalised the same way. + const normalized = normalizeEol(raw); + let parsed; try { - // Normalise line endings on the way in so hunk context matches what the - // applier reads off disk, which is normalised the same way. - parsed = JsDiff.parsePatch(normalizeEol(raw)); + // Real git carries an empty file added or deleted as headers alone, + // with no `---`/`+++` pair for jsdiff to read (#311) — supplying it + // here is what lets the rest of this function see those sections at + // all, instead of one of them rejecting the whole patch. + parsed = JsDiff.parsePatch(supplyEmptyFileHeaders(normalized)); } catch (e) { return { ok: false, error: `Could not read the patch: ${String(e && e.message ? e.message : e)}` }; } @@ -161,7 +262,7 @@ function parsePatchFiles(text) { return { ok: false, error: 'No file changes found in the patch.' }; } - const sections = scanSections(normalizeEol(raw)); + const sections = scanSections(normalized); const files = []; for (let i = 0; i < parsed.length; i++) { diff --git a/test/patch-apply.integration.test.cjs b/test/patch-apply.integration.test.cjs index 4fc00b3..0e86cd0 100644 --- a/test/patch-apply.integration.test.cjs +++ b/test/patch-apply.integration.test.cjs @@ -533,6 +533,56 @@ deleted file mode 100644 assert.strictEqual(fs.existsSync(path.join(dir, 'src/placeholder.php')), false); }); +// The read half of the same story (#316): real git writes an empty file's +// section with no `---`/`+++` pair at all, unlike the #311 sections above. +// Verbatim `git diff` output, inlined so the test does not need a git binary. +// The mix — an ordinary edit alongside the empty add and delete — is the case +// that used to fail whole-patch, so every file's fate is asserted. +test('applyPatchToDir: a git-authored patch with empty adds and deletes applies whole (#316)', async (t) => { + const dir = await makeRepo(t, { 'edited.php': 'line1\nline2\n', 'was-empty.php': '' }); + const gitPatch = `diff --git a/edited.php b/edited.php +index c0d0fb4..83db48f 100644 +--- a/edited.php ++++ b/edited.php +@@ -1,2 +1,3 @@ + line1 + line2 ++line3 +diff --git a/placeholder.php b/placeholder.php +new file mode 100644 +index 0000000..e69de29 +diff --git a/was-empty.php b/was-empty.php +deleted file mode 100644 +index e69de29..0000000 +`; + + const res = await applyPatchToDir({ dir, patchText: gitPatch }); + + assert.strictEqual(res.ok, true, res.error); + assert.deepStrictEqual(res.applied.sort(), ['edited.php', 'placeholder.php', 'was-empty.php']); + assert.strictEqual(fs.readFileSync(path.join(dir, 'edited.php'), 'utf8'), 'line1\nline2\nline3\n'); + assert.strictEqual(fs.readFileSync(path.join(dir, 'placeholder.php'), 'utf8'), '', 'the empty addition has to actually create'); + assert.strictEqual(fs.existsSync(path.join(dir, 'was-empty.php')), false, 'the empty deletion has to actually delete'); +}); + +// The add-side twin of the deletion guard above: a `new file mode` section +// claims the file does not exist yet, so one already in the checkout — with +// whatever content — is refused all-or-nothing, not overwritten or skipped. +test('applyPatchToDir: a git-authored empty addition refuses a file that already exists (#316)', async (t) => { + const dir = await makeRepo(t, { 'placeholder.php': 'my own work\n' }); + const before = snapshot(dir); + const addPatch = `diff --git a/placeholder.php b/placeholder.php +new file mode 100644 +index 0000000..e69de29 +`; + + const res = await applyPatchToDir({ dir, patchText: addPatch }); + + assert.strictEqual(res.ok, false); + assert.match(res.error, /already exists/); + assert.deepStrictEqual(snapshot(dir), before, 'the existing file must not be touched'); +}); + // A rename that completes and is then undone by a later failure must restore the // source and remove the destination — registering each action before its // mutations is what lets rollback see a half-done one. (Copilot #3.) diff --git a/test/patch-plan.test.cjs b/test/patch-plan.test.cjs index c3c9b97..98dde43 100644 --- a/test/patch-plan.test.cjs +++ b/test/patch-plan.test.cjs @@ -109,6 +109,100 @@ test('parsePatchFiles: added and deleted files are classified, not treated as re assert.strictEqual(deleted.path, 'src/old.php'); }); +// --- empty files as real git writes them (#316) ---------------------------- +// +// Real git carries an added or deleted empty file as headers alone: no +// `---`/`+++` pair at all, the fate on the `new file mode` / `deleted file +// mode` line. The fixtures below are verbatim `git diff` output (git 2.x in a +// scratch repo), inlined so the tests do not need a git binary; #311's own +// sections keep the `---`/`+++` pair and are covered in ipc-wiring.test.cjs. +const GIT_EMPTY_ADD_DIFF = `diff --git a/placeholder.php b/placeholder.php +new file mode 100644 +index 0000000..e69de29 +`; + +const GIT_EMPTY_DELETE_NO_INDEX_DIFF = `diff --git a/was-empty.php b/was-empty.php +deleted file mode 100644 +`; + +const GIT_MIXED_EMPTY_DIFF = `diff --git a/edited.php b/edited.php +index c0d0fb4..83db48f 100644 +--- a/edited.php ++++ b/edited.php +@@ -1,2 +1,3 @@ + line1 + line2 ++line3 +diff --git a/new file.php b/new file.php +new file mode 100644 +index 0000000..e69de29 +diff --git a/placeholder.php b/placeholder.php +new file mode 100644 +index 0000000..e69de29 +diff --git a/was-empty.php b/was-empty.php +deleted file mode 100644 +index e69de29..0000000 +`; + +test('parsePatchFiles: a git-authored empty addition parses as an add (#316)', () => { + const res = parsePatchFiles(GIT_EMPTY_ADD_DIFF); + assert.strictEqual(res.ok, true, res.error); + assert.deepStrictEqual(res.files.map((f) => [f.kind, f.path]), [['add', 'placeholder.php']]); +}); + +test('parsePatchFiles: a git-authored empty deletion parses as a delete, with or without an index line (#316)', () => { + const res = parsePatchFiles(GIT_EMPTY_DELETE_NO_INDEX_DIFF); + assert.strictEqual(res.ok, true, res.error); + assert.deepStrictEqual(res.files.map((f) => [f.kind, f.path]), [['delete', 'was-empty.php']]); + + const withIndex = parsePatchFiles('diff --git a/was-empty.php b/was-empty.php\ndeleted file mode 100644\nindex e69de29..0000000\n'); + assert.strictEqual(withIndex.ok, true, withIndex.error); + assert.deepStrictEqual(withIndex.files.map((f) => [f.kind, f.path]), [['delete', 'was-empty.php']]); +}); + +// The whole point of the fix: one empty-file section used to reject the entire +// patch when it came last, and to vanish silently when another section +// followed it — either way the unrelated files went with it. The full list is +// what proves both failure modes gone. +test('parsePatchFiles: one git-authored empty file does not take the rest of the patch down (#316)', () => { + const res = parsePatchFiles(GIT_MIXED_EMPTY_DIFF); + assert.strictEqual(res.ok, true, res.error); + assert.deepStrictEqual(res.files.map((f) => [f.kind, f.path]), [ + ['modify', 'edited.php'], + // A path with a space stays whole: for an add or a delete both sides of + // the `diff --git` line are the same path, so the split is unambiguous. + ['add', 'new file.php'], + ['add', 'placeholder.php'], + ['delete', 'was-empty.php'] + ]); +}); + +test('parsePatchFiles: an empty add ahead of other sections keeps them all (#316)', () => { + const res = parsePatchFiles(GIT_EMPTY_ADD_DIFF + GITHUB_DIFF); + assert.strictEqual(res.ok, true, res.error); + assert.deepStrictEqual(res.files.map((f) => [f.kind, f.path]), [ + ['add', 'placeholder.php'], + ['modify', 'src/wp-includes/foo.php'] + ]); +}); + +// A binary addition carries `new file mode` too. Its fate is the binary +// marker's, not the mode line's — rewriting it as an empty text add would +// report success while silently writing an empty file in an image's place. +test('parsePatchFiles: a binary addition with new file mode stays binary (#316)', () => { + const res = parsePatchFiles('diff --git a/x.png b/x.png\nnew file mode 100644\nindex 0000000..1111111\nBinary files /dev/null and b/x.png differ\n'); + assert.strictEqual(res.ok, true, res.error); + assert.deepStrictEqual(res.files.map((f) => [f.kind, f.path]), [['binary', 'x.png']]); +}); + +test('parsePatchFiles: an undecodable quoted empty-file section rejects the whole mixed patch (#316)', () => { + const quotedEmpty = 'diff --git "a/empty\\303\\251.txt" "b/empty\\303\\251.txt"\nnew file mode 100644\nindex 0000000..e69de29\n'; + const res = parsePatchFiles(quotedEmpty + GITHUB_DIFF); + + assert.strictEqual(res.ok, false); + assert.match(res.error, /empty file path/i); +}); + // jsdiff represents a binary file as an entry with no hunks. Left unchecked // that reads as "a file with no changes", so applying would report success // while silently skipping it. From 37741efb38185b5ba3daba1cf3e12664ba743e76 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 09:39:20 +0200 Subject: [PATCH 16/53] Name the contributor's own work when a patch fails in a file they edited (#313) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why When a pull request fails in a file the ticket has changed, the app used to state that the PR was stale and tell a newcomer to ask its author for a rebase. File overlap does not prove that: the contributor and PR may have changed different regions of the same file. ## What changes The failure copy now preserves what the app actually knows. It names the files containing ticket work, says that work may be part of the failure, and suggests saving a copy or trying from a clean ticket. It only recommends asking the author for an update when failures also occur in files the ticket did not change. No new measurement, IPC or Git operation is introduced. ## How to test this **Platforms:** any. 1. On a linked ticket, edit one region of a file. 2. Apply a PR that fails in a different region of that same file. **Expected:** the notice says your work may be part of the conflict; it does not claim either side is certainly responsible. 3. Apply a PR that fails only in files untouched by the ticket. **Expected:** the existing stale-PR framing and author-update action remain. 4. Try a mixed failure. **Expected:** both facts are named, without assigning the shared file categorically. **What must not have happened:** a failed apply must not alter the checkout, and the link to the PR must remain available. ## Risks and limitations Attribution remains file-level because this two-way apply path does not have the PR’s base. The copy deliberately expresses that uncertainty. The desktop flow remains to be driven from the integration artifact. ## Related Fixes #303. Part of #309. Builds on #302. ---
Review outcome The review found the original categorical same-file attribution unsound. Fixed with a regression covering edits in different regions of the same file. Focused tests and the full integration suite are green.
Implementation notes The decision remains in the pure `apply-conflict.cjs` module; `index.jsx` only passes the existing collision list.
Screenshots or recording No new component or layout; only the existing failure banner’s wording/action changes.
--------- Co-authored-by: Claude Fable 5 --- src/renderer/apply-conflict.cjs | 99 ++++++++++++++++--- src/renderer/index.jsx | 8 +- test/apply-conflict.test.cjs | 169 ++++++++++++++++++++++++++++++++ 3 files changed, 263 insertions(+), 13 deletions(-) diff --git a/src/renderer/apply-conflict.cjs b/src/renderer/apply-conflict.cjs index 05d56d3..0ffb628 100644 --- a/src/renderer/apply-conflict.cjs +++ b/src/renderer/apply-conflict.cjs @@ -106,6 +106,33 @@ function otherPatchCount({ label, prs = [], attachments = [] } = {}) { + attachments.filter((att) => att.filename !== failedLabel).length; } +// How many paths a sentence will name before it starts counting instead. The +// panel already lists every failing file underneath, so the headline's job is +// the attribution, not the inventory — and a pull request failing in a dozen +// files would otherwise open the notice with a paragraph of paths. Same reason +// `REGION_DETAIL_LIMIT` exists in patch-apply.js. +const PATH_NAME_LIMIT = 3; + +/** + * The files on one side of the failure, named for a sentence. + * + * Deduplicated because a concatenated patch can fail the same file twice — the + * same reason `describeApplyFailure` consumes conflicts one by one instead of + * keying them by path. + * + * @param {Array} rows Conflicts. + * @return {{count: number, text: string}} + */ +function namePaths(rows) { + const paths = [...new Set(rows.map((c) => c.path))]; + if (paths.length <= PATH_NAME_LIMIT) return { count: paths.length, text: paths.join(', ') }; + const rest = paths.length - PATH_NAME_LIMIT; + return { + count: paths.length, + text: `${paths.slice(0, PATH_NAME_LIMIT).join(', ')} and ${rest} more file${rest === 1 ? '' : 's'}` + }; +} + /** * The pull-request framing: whose problem this is, and how big. * @@ -127,11 +154,25 @@ function otherPatchCount({ label, prs = [], attachments = [] } = {}) { * merge would settle — close enough to size the problem, not a claim GitHub * will show the identical number. * - * @param {Array} conflicts - * @param {?string} prState 'open' | 'merged' | 'closed' | null when unknown. + * That same missing base is why `ownWorkPaths` is here (#303). Matching two-way + * cannot prove which side a single failed region belongs to, so the framing used + * to answer from the pull request's state alone: open meant stale, always. On a + * ticket someone has come back to, the ordinary reason a change will not fit is + * the contributor's own work sitting in the same file — and sending them to ask + * a stranger for a rebase that would not help is worse than saying nothing. + * + * The app cannot prove the region, but it knows the file: `ownWorkPaths` is the + * preview's own collision list, the files this ticket has work in measured from + * its base (#301). That is evidence the contributor's work may be involved, not + * proof it caused the failed region. The safe route is to try the pull request + * on a clean ticket before asking its author to update it. + * + * @param {Array} conflicts + * @param {?string} prState 'open' | 'merged' | 'closed' | null when unknown. + * @param {string[]} [ownWorkPaths] Files this ticket has its own work in. * @return {{headline: string, advice: string, prButton: ?string}} */ -function prFraming(conflicts, prState) { +function prFraming(conflicts, prState, ownWorkPaths = []) { const failed = conflicts.reduce((sum, c) => sum + c.regions.length, 0); const total = conflicts.reduce((sum, c) => sum + c.total, 0); const allApplied = conflicts.every((c) => c.regions.every((r) => r.status === 'already-applied')); @@ -151,7 +192,10 @@ function prFraming(conflicts, prState) { }; } - const files = conflicts.length; + // Distinct files, not conflict rows: a concatenated patch can fail the same + // file twice, and the sentences below go on to name the files, so counting + // the rows would have the count disagreeing with the list beside it. + const files = new Set(conflicts.map((c) => c.path)).size; const scale = `${failed} of its ${total} change${total === 1 ? '' : 's'}, in ${files} file${files === 1 ? '' : 's'},`; // A closed pull request has no author coming back to it: asking for a @@ -165,9 +209,38 @@ function prFraming(conflicts, prState) { }; } + const own = new Set(ownWorkPaths); + const mine = namePaths(conflicts.filter((c) => own.has(c.path))); + const theirs = namePaths(conflicts.filter((c) => !own.has(c.path))); + const REBASE_IS_THEIRS = 'Bringing it up to date is its author\'s work — a rebase, or merging trunk in. Leaving a comment on the pull request to let them know is a real contribution in itself.'; + // A ticket's changes are cheap to redo and expensive to untangle, so keeping + // a copy and starting clean is a recommended way forward here, not a defeat. + // What must never happen is work going quietly; going on purpose, with the + // copy already saved, is a good outcome. + const YOUR_WORK_WAY_OUT = 'Save a patch of your work first to keep a copy, then try this pull request on a clean ticket. If it still does not fit there, open the pull request and let its author know it may need updating.'; + + // File overlap cannot identify the failing region. Keep the pull request + // reachable, but make the rebase advice conditional on it also failing in a + // clean ticket. + if (!theirs.count) { + return { + headline: `This pull request does not fit your checkout: ${scale} would need rework. Your own work is also in ${mine.text}, so it may be part of why the pull request does not fit.`, + advice: YOUR_WORK_WAY_OUT, + prButton: 'Open the pull request' + }; + } + + if (mine.count) { + return { + headline: `This pull request does not fit your checkout: ${scale} would need rework. Your own work is also in ${mine.text} and may be part of the failure. Other failures are in ${theirs.text}.`, + advice: YOUR_WORK_WAY_OUT, + prButton: 'Open the pull request' + }; + } + return { headline: `This pull request was written against an older trunk and no longer fits it: ${scale} would need rework.`, - advice: 'Bringing it up to date is its author\'s work — a rebase, or merging trunk in. Leaving a comment on the pull request to let them know is a real contribution in itself.', + advice: REBASE_IS_THEIRS, prButton: 'Ask its author for a rebase' }; } @@ -190,14 +263,16 @@ function prFraming(conflicts, prState) { * folder, a file to add that already exists) as well as the conflict that could * not be broken down. * - * @param {Object} result The apply payload from main. - * @param {Object} [options] - * @param {number} [options.otherPatchCount] Other patches on this ticket. - * @param {?string} [options.prUrl] The failing patch's pull request. - * @param {?string} [options.prState] Its state, when known. + * @param {Object} result The apply payload from main. + * @param {Object} [options] + * @param {number} [options.otherPatchCount] Other patches on this ticket. + * @param {?string} [options.prUrl] The failing patch's pull request. + * @param {?string} [options.prState] Its state, when known. + * @param {string[]} [options.ownWorkPaths] Files this ticket has work in, from + * the preview's collision list (#303). * @return {?Object} */ -function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, prUrl = null, prState = null } = {}) { +function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, prUrl = null, prState = null, ownWorkPaths = [] } = {}) { if (!result || result.ok) return null; const failures = Array.isArray(result.failures) ? result.failures : []; @@ -237,7 +312,7 @@ function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, pr let prButton = fromPr ? 'Open the pull request' : null; if (conflicts.length) { const framing = fromPr - ? prFraming(conflicts, prState) + ? prFraming(conflicts, prState, ownWorkPaths) : { headline: headlineFor(conflicts), advice: '', prButton: null }; headline = framing.headline; advice = framing.advice; diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 9132ff3..40215c8 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -3189,7 +3189,13 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit attachments: patchAttachments }), prUrl: preview?.prUrl || null, - prState: preview?.prState || null + prState: preview?.prState || null, + // The preview's own collision list: the files this ticket has work + // in, measured from its base (#301). Without it an open pull request + // is always narrated as stale, so a failure caused by the + // contributor's own edits sends them to ask a stranger for a rebase + // that would not help (#303). + ownWorkPaths: preview?.conflicts || [] })); finishApply(); return; diff --git a/test/apply-conflict.test.cjs b/test/apply-conflict.test.cjs index eb1b823..9e77ac9 100644 --- a/test/apply-conflict.test.cjs +++ b/test/apply-conflict.test.cjs @@ -350,6 +350,175 @@ test('describeApplyFailure: a pull request already in trunk asks for nothing (is assert.equal(result.advice, ''); }); +// --- whose work is actually in the way (#303) ---------------------------- +// +// The framing above answers from the pull request's state alone, so an open one +// is always "stale, ask for a rebase". On a resumed ticket the usual reason a +// change will not fit is the contributor's own work in the same file, and that +// button asks a stranger for work that would not help. The app cannot prove +// which side a single region belongs to — it matches without the PR's base — but +// it knows which files this ticket has work in. That is enough to recommend a +// clean-ticket check, not enough to name which side caused a failed region. + +test('describeApplyFailure: a failure in the contributor\'s own file is not blamed on the author (issue #303)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 4, [{ index: 0, line: 7, status: 'moved' }])] + }, { prUrl: PR_URL, prState: 'open', ownWorkPaths: [FOO] }); + + // The overlap is named without turning file-level evidence into a verdict. + assert.match(result.headline, /Your own work is also in/); + assert.match(result.headline, /may be part of why/); + assert.doesNotMatch(result.headline, /older trunk/); + // The pull request is still reachable — reading it is how the contributor + // decides what to do after the clean-ticket check. The ask is conditional. + assert.equal(result.prButton, 'Open the pull request'); + assert.equal(result.prUrl, PR_URL); + // What actually moves it forward: a copy, then a clean ticket. + assert.match(result.advice, /Save a patch of your work/); + assert.match(result.advice, /try this pull request on a clean ticket/); + assert.match(result.advice, /If it still does not fit/); + // The scale still says how much missed — that decision is unchanged. + assert.match(result.headline, /1 of its 4 changes, in 1 file/); +}); + +// File overlap is evidence that the contributor's work may matter, not proof +// that it caused the failed region. They may have edited one function while an +// old pull request fails against another function in the same file. +test('describeApplyFailure: same-file overlap preserves uncertainty about the failing region (issue #303)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 4, [{ index: 2, line: 240, status: 'moved' }])] + }, { prUrl: PR_URL, prState: 'open', ownWorkPaths: [FOO] }); + + assert.match(result.headline, /may be part of why/); + assert.match(result.advice, /If it still does not fit/); + assert.doesNotMatch(result.advice, /not a pull request that has gone stale/); + assert.equal(result.prButton, 'Open the pull request'); +}); + +test('describeApplyFailure: a failure in files the ticket never touched keeps the stale framing (issue #303)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 4, [{ index: 0, line: 7, status: 'moved' }])] + }, { prUrl: PR_URL, prState: 'open', ownWorkPaths: [BAR] }); + + assert.match(result.headline, /written against an older trunk/); + assert.doesNotMatch(result.headline, /Your own work/); + assert.match(result.advice, /author's work/); + assert.equal(result.prButton, 'Ask its author for a rebase'); +}); + +test('describeApplyFailure: a failure in both kinds of file says both (issue #303)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`, `${BAR} has moved on`], + conflicts: [ + conflict(FOO, 3, [{ index: 0, line: 7, status: 'moved' }]), + conflict(BAR, 2, [{ index: 0, line: 11, status: 'moved' }]) + ] + }, { prUrl: PR_URL, prState: 'open', ownWorkPaths: [FOO] }); + + // The overlap and the other failure are both named without assigning either + // failed region to a side the app cannot prove. + assert.match(result.headline, new RegExp(`Your own work is also in ${FOO}`)); + assert.match(result.headline, new RegExp(`Other failures are in ${BAR}`)); + assert.match(result.advice, /Save a patch of your work/); + assert.equal(result.prButton, 'Open the pull request'); + assert.equal(result.prUrl, PR_URL); +}); + +// The headline names files, so the two things that break a list break it here: +// a patch that fails the same file twice, and a patch that fails more files than +// a sentence can carry. The panel prints every failing file underneath anyway, +// so past a few the headline counts instead of listing. +test('describeApplyFailure: the named files are deduplicated and capped (issue #303)', () => { + const twice = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`, `${FOO} has moved on`], + conflicts: [ + conflict(FOO, 2, [{ index: 0, line: 7, status: 'moved' }]), + conflict(FOO, 2, [{ index: 0, line: 40, status: 'moved' }]) + ] + }, { prUrl: PR_URL, prState: 'open', ownWorkPaths: [FOO] }); + + // A concatenated patch failing the same file twice must not name it twice — + // nor count it twice in the same sentence that goes on to list it. + assert.match(twice.headline, new RegExp(`in ${FOO}, so it may be part`)); + assert.match(twice.headline, /in 1 file,/); + + const many = ['a', 'b', 'c', 'd', 'e'].map((n) => `src/wp-includes/${n}.php`); + const wide = describeApplyFailure({ + ok: false, + failures: many.map((p) => `${p} has moved on`), + conflicts: many.map((p) => conflict(p, 1, [{ index: 0, line: 1, status: 'moved' }])) + }, { prUrl: PR_URL, prState: 'open', ownWorkPaths: many }); + + assert.match(wide.headline, /a\.php, src\/wp-includes\/b\.php, src\/wp-includes\/c\.php and 2 more files/); + assert.doesNotMatch(wide.headline, /e\.php/); +}); + +// Both sides can hold several files, and the sentence has to read as English +// either way — which is why neither list is followed by a verb agreeing with it. +test('describeApplyFailure: the mixed framing reads with several files on each side (issue #303)', () => { + const BAZ = 'src/wp-includes/baz.php'; + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`, `${BAR} has moved on`, `${BAZ} has moved on`], + conflicts: [ + conflict(FOO, 1, [{ index: 0, line: 7, status: 'moved' }]), + conflict(BAR, 1, [{ index: 0, line: 11, status: 'moved' }]), + conflict(BAZ, 1, [{ index: 0, line: 13, status: 'moved' }]) + ] + }, { prUrl: PR_URL, prState: 'open', ownWorkPaths: [FOO] }); + + assert.match(result.headline, new RegExp(`Other failures are in ${BAR}, ${BAZ}\\.$`)); + assert.equal(result.prButton, 'Open the pull request'); +}); + +test('describeApplyFailure: own work does not change the closed or landed framing (issue #303)', () => { + const closed = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 3, [{ index: 0, line: 7, status: 'moved' }])] + }, { prUrl: PR_URL, prState: 'closed', ownWorkPaths: [FOO] }); + + // Nobody is coming back to a closed pull request whatever is in the way, and + // its discussion is still the thing worth reading. + assert.match(closed.headline, /closed and was written against an older trunk/); + assert.equal(closed.prButton, 'See why it was closed'); + + const landed = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 2, [ + { index: 0, line: 4, status: 'already-applied' }, + { index: 1, line: 9, status: 'already-applied' } + ])] + }, { prUrl: PR_URL, prState: 'closed', ownWorkPaths: [FOO] }); + + assert.match(landed.headline, /likely committed to core/); + assert.equal(landed.prButton, null); +}); + +// A patch from disk or a Trac attachment has no author to misblame, so the +// own-work list changes nothing there — the full per-region breakdown is still +// the only way out, and it stays. +test('describeApplyFailure: a loose patch is unaffected by the own-work list (issue #303)', () => { + const result = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [conflict(FOO, 3, [{ index: 0, line: 7, status: 'moved', lines: ['-x', '+y'] }])] + }, { ownWorkPaths: [FOO] }); + + assert.match(result.headline, /1 of this patch's 3 changes/); + assert.equal(result.advice, ''); + assert.equal(result.items[0].regions.length, 1); +}); + test('describeApplyFailure: a loose patch keeps the full breakdown — there is no author to send to (issue #282)', () => { const result = describeApplyFailure({ ok: false, From 116e49a4b6b12d50b4ff7a564d86a426946553e6 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 09:42:22 +0200 Subject: [PATCH 17/53] Say when a ticket's base is unknown instead of guessing at it (#317) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why The ticket base is the reference used to decide what belongs in its patch and what can be discarded. A ticket branch with no recorded base was silently measured against current trunk; a failed base read was silently treated as trunk. Both guesses can misdescribe or discard the wrong work. ## What changes For 1.0 the rule is deliberately narrow: - trunk keeps its existing behavior; - a ticket with a recorded base uses it; - a ticket without a recorded base refuses patch generation, preview, discard and PR opening with one honest error; - a failed probe clears the old changed-file count instead of leaving stale state on screen. The former four-state taxonomy and “approximate” fallback have been removed. There is no base adoption UI in this release. ## How to test this **Platforms:** any. 1. On a normal app-created ticket, edit a file, review/save its patch, and discard to base. **Expected:** all behave as before against the recorded base. 2. In a disposable profile, remove that ticket branch’s `baseOid` from the stored metadata and reopen the app. 3. Try previewing, saving, discarding and opening a PR. **Expected:** each refuses because the starting point is unknown; none falls back to HEAD or current trunk. 4. Trigger the unsubmitted-work probe after previously seeing a count. **Expected:** the stale number disappears when the probe fails. **What must not have happened:** no destructive operation runs after the missing-base refusal. ## Risks and limitations Externally created/adopted ticket branches without recorded base are unsupported in 1.0. That is intentional for an experimental newcomer-oriented app and preferable to presenting an approximate measurement as fact. The desktop flow remains to be driven from the integration artifact. ## Related Fixes #308. Part of #309. Builds on #313. ---
Design decisions and alternatives considered The earlier branch tried to preserve unsupported tickets using current trunk as an approximate base. That added a status taxonomy and hedged copy to every consumer while still being capable of a wrong answer. The simplified branch rejects that state instead.
Review outcome The review found one stale-count failure and the over-broad approximate path. Both are fixed in the rewritten branch. Full suite and lint pass.
Implementation notes The PR is about 173 added lines across seven files after removing the approximate-base module and its tests.
--------- Co-authored-by: Claude Fable 5 --- src/main.js | 60 +++++++------- src/renderer/changes-note.cjs | 18 +++- src/renderer/index.jsx | 12 +-- src/trunk-update.js | 5 +- test/changes-note.test.cjs | 12 +++ test/ipc-wiring.test.cjs | 110 +++++++++++++++++++++++-- test/trunk-update.integration.test.cjs | 3 +- 7 files changed, 173 insertions(+), 47 deletions(-) diff --git a/src/main.js b/src/main.js index 02c68c3..f3a4e9d 100644 --- a/src/main.js +++ b/src/main.js @@ -911,9 +911,9 @@ async function migrateSiteToBranches(sitePath) { const existing = await listTicketBranches(sitePath); // A branch that already exists was not created by this app, so its fork // point is not on record and cannot be recovered on a depth-1 clone. - // Left null deliberately: patchBaseOid has one documented fallback for - // exactly this, and guessing here would put a second, wrong one in the - // codebase. (`trunkOid` is the *current* tip, not the fork point.) + // Left null deliberately: patch operations refuse this branch instead + // of guessing from today's trunk, which is not necessarily its fork + // point (#308). const baseOid = existing.includes(ref) ? null : (await startTicketBranch(sitePath, m.tracTicket)).baseOid; @@ -1105,30 +1105,22 @@ async function mergeBranchMeta(sitePath, ref, patch) { /** * The diff base for whatever is checked out: a ticket branch's recorded branch - * point, or null on trunk — where the patch generator falls back to HEAD, which - * is what it has always diffed against. + * point, or null on trunk — where the patch generator falls back to HEAD. + * + * A ticket branch without a recorded base refuses rather than guessing from + * today's trunk (#308). That state belongs to sites or branches created outside + * the app; 1.0 does not attempt to adopt or repair it. * * @param {string} sitePath + * @return {Promise} */ async function patchBaseOid(sitePath) { - try { - // What is checked out decides this, so ask the worktree before the - // registry: a site on trunk — every site before #108, and every site - // whose owner never linked a ticket — answers without a store read at - // all, and takes exactly the path it always took. - let ref = null; - try { ref = await currentBranchName(sitePath); } catch {} - if (!ref || ref === TRUNK) return null; - - const recorded = ((await readSiteMeta(sitePath)).branches || {})[ref]; - if (recorded && recorded.baseOid) return recorded.baseOid; - // A ticket branch with no recorded base (registry edited by hand, or a - // branch the user made themselves). The live trunk ref is the closest - // honest answer available. - return await git.resolveRef({ fs, dir: sitePath, ref: 'refs/heads/trunk' }); - } catch { - return null; - } + const ref = await currentBranchName(sitePath); + if (!ref || ref === TRUNK) return null; + + const recorded = ((await readSiteMeta(sitePath)).branches || {})[ref]; + if (recorded && recorded.baseOid) return recorded.baseOid; + throw new Error('This ticket has no recorded starting point, so the app cannot safely compare or discard its work.'); } /** @@ -1163,15 +1155,17 @@ async function baseProvenance(dir, baseOid, meta) { * The files standing between where this ticket started and where it is now — * the note's measurement (#239). Same base and same walk as the patch, filtered * to the rows the patch would actually speak about, so the note and the modal - * are two renderings of one answer. On trunk `patchBaseOid` answers null and - * the walk falls back to HEAD, which is what the note has always read there. + * are two renderings of one answer. On trunk `patchBaseOid` answers null and the + * walk falls back to HEAD, which is what the note has always read there. * + * Throws when the base could not be read (#308) rather than measuring against + * HEAD: on a resumed ticket HEAD is the contributor's own parked work, so the + * fallback answers "nothing here" about the very tree this exists to speak for. * @param {string} sitePath * @return {Promise>} Paths, gitignored ones excluded. */ async function collectUnsubmittedFiles(sitePath) { - const baseOid = await patchBaseOid(sitePath); - const { files } = await collectChangedFiles(sitePath, baseOid); + const { files } = await collectChangedFiles(sitePath, await patchBaseOid(sitePath)); return files .filter((file) => classifyChangedFile(file).kind !== 'unchanged') .map((file) => file.path); @@ -1212,8 +1206,13 @@ ipcMain.handle('git:unsubmitted-work', async (_e, sitePath) => { // (#108/#239) and so includes the parked WIP commit. Rewinds to `patchBaseOid` // — the same base the diff was taken against — so the modal ends on "No // changes". The branch survives and the ticket stays linked; only its work is -// gone. On trunk (or a branch with no recorded base) there is nothing past -// HEAD to rewind, so it falls back to the uncommitted-only reset. +// gone. On trunk there is nothing past HEAD to rewind, so it falls back to the +// uncommitted-only reset. +// +// A base the app could not read refuses outright (#308). The uncommitted-only +// reset is not a safe stand-in for it: it looks like a discard, leaves the +// parked WIP commit untouched, and the modal would come back still listing the +// work it just promised to throw away. ipcMain.handle('git:discard-to-base', async (_e, sitePath) => { try { const baseOid = await patchBaseOid(sitePath); @@ -1496,7 +1495,8 @@ ipcMain.handle('git:preview-patch', async (_e, sitePath, patchText) => { dirtyPaths = await collectUnsubmittedFiles(sitePath); } catch (e) { // Failing open here would promise "no collisions" precisely when the - // app could not look — surface the failure instead. + // app could not look — surface the failure instead. An unreadable + // base arrives here as a throw for exactly that reason (#308). logError('git:preview-patch', String(e && e.stack ? e.stack : e)); return { ok: false, error: 'Could not check your work for conflicts, so the preview was not shown.' }; } diff --git a/src/renderer/changes-note.cjs b/src/renderer/changes-note.cjs index 17d9e99..2c20d0a 100644 --- a/src/renderer/changes-note.cjs +++ b/src/renderer/changes-note.cjs @@ -106,6 +106,22 @@ function noteAfterDiscard(outcome) { }; } +/** + * What a completed probe may leave on the card. + * + * A failed measurement clears the previous answer. Keeping an old count would + * present it as current even when the app has just learned that it cannot read + * the ticket's base (#308). + * + * @param {*} _current The note shown while the probe was running. + * @param {*} result A `git:unsubmitted-work` reply. + * @return {{dirty: boolean, changedCount: *}|null} + */ +function noteAfterProbe(_current, result) { + if (!result || !result.ok) return null; + return { dirty: Boolean(result.dirty), changedCount: result.changedCount }; +} + /** * Whether the modal's discard link is inert: while the diff is loading there * is nothing to confirm against, with no changes there is nothing to lose, @@ -133,4 +149,4 @@ function discardBlocked({ isUpdating, installing, building, devServerActive, dis return Boolean(isUpdating || installing || building || devServerActive || discarding); } -module.exports = { changesNoteParts, discardOutcome, noteAfterDiscard, modalDiscardDisabled, discardBlocked, DISCARD_CONFIRM_MESSAGE }; +module.exports = { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, modalDiscardDisabled, discardBlocked, DISCARD_CONFIRM_MESSAGE }; diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 40215c8..f160ec3 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -44,7 +44,7 @@ import { describeSwitchProgress } from '../switch-progress.cjs'; import { highlightDiff, hasDiffLines } from './diff-highlight.cjs'; import { highlightLog } from './log-highlight.cjs'; import { carryTestMode } from './github-account.cjs'; -import { changesNoteParts, discardOutcome, noteAfterDiscard, modalDiscardDisabled, discardBlocked, DISCARD_CONFIRM_MESSAGE } from './changes-note.cjs'; +import { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, modalDiscardDisabled, discardBlocked, DISCARD_CONFIRM_MESSAGE } from './changes-note.cjs'; import { initialConfirmations, confirmationReducer, prConfirmationMessage } from './confirmations.cjs'; const TERMINAL_ALLOWED_SCRIPTS = ['build', 'build:dev', 'dev', 'test', 'watch', 'grunt']; @@ -1656,9 +1656,9 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // checkout guards (startTrunkUpdate) keep asking the narrow question: // parked work survives a force checkout, uncommitted edits do not. // - // A failed probe keeps the last answer rather than reporting: the note is - // advisory, and losing it over a transient git error would read as "your - // changes are gone". + // A failed probe clears the last answer. Once the app knows it could not + // measure this ticket, keeping an earlier count would present stale data as + // current (#308). // // The ref guards two races the probe's cost makes real — it walks the whole // checkout, so it can still be in flight when the next focus fires or when @@ -1693,8 +1693,8 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit const generation = probe.generation; try { const res = await window.api.hasUnsubmittedWork(sitePath); - if (res && res.ok && probe.generation === generation) { - setWorktreeDirty({ dirty: Boolean(res.dirty), changedCount: res.changedCount }); + if (probe.generation === generation) { + setWorktreeDirty((current) => noteAfterProbe(current, res)); } } catch {} } while (probe.again); diff --git a/src/trunk-update.js b/src/trunk-update.js index 1dbe4cc..b4feed7 100644 --- a/src/trunk-update.js +++ b/src/trunk-update.js @@ -169,9 +169,8 @@ async function discardToBase(dir, baseOid) { } const ref = (await git.currentBranch({ fs, dir, fullname: false })) || 'trunk'; // Only rewind the ref when baseOid really is this branch's own history — its - // point off trunk. patchBaseOid falls back to the live `trunk` tip for a - // branch with no recorded base (hand-created, or a hand-edited registry); - // that tip need not be an ancestor of HEAD, and moving the ref onto it would + // point off trunk. A caller can hand over a commit that is not an ancestor of + // HEAD; moving the ref onto it would // orphan the branch's commits and re-point it at unrelated work. When it is // not an ancestor, leave the ref alone and just reset the worktree to HEAD — // the uncommitted-only discard, which never throws away committed work. diff --git a/test/changes-note.test.cjs b/test/changes-note.test.cjs index 19a71b9..bbde59c 100644 --- a/test/changes-note.test.cjs +++ b/test/changes-note.test.cjs @@ -8,6 +8,7 @@ const { changesNoteParts, discardOutcome, noteAfterDiscard, + noteAfterProbe, modalDiscardDisabled, discardBlocked, DISCARD_CONFIRM_MESSAGE @@ -151,6 +152,17 @@ test('noteAfterDiscard falls back to clean when the reply carries no recount (#2 ); }); +test('noteAfterProbe clears an old count when the base cannot be measured (#308)', () => { + assert.deepEqual( + noteAfterProbe({ dirty: true, changedCount: 4 }, { ok: false, error: 'Unknown ticket base' }), + null + ); + assert.deepEqual( + noteAfterProbe(null, { ok: true, dirty: true, changedCount: 2 }), + { dirty: true, changedCount: 2 } + ); +}); + test('modalDiscardDisabled frees the link only for a loaded diff with changes', () => { assert.equal(modalDiscardDisabled({ patchLoading: false, patchHasChanges: true, discarding: false }), false); assert.equal(modalDiscardDisabled({ patchLoading: true, patchHasChanges: true, discarding: false }), true); diff --git a/test/ipc-wiring.test.cjs b/test/ipc-wiring.test.cjs index 9bdf1ec..42d8576 100644 --- a/test/ipc-wiring.test.cjs +++ b/test/ipc-wiring.test.cjs @@ -31,7 +31,6 @@ const os = require('node:os'); const path = require('node:path'); const { EventEmitter } = require('node:events'); const git = require('isomorphic-git'); - const SRC_DIR = path.join(__dirname, '..', 'src'); const MAIN_PATH = path.join(SRC_DIR, 'main.js'); @@ -1097,7 +1096,12 @@ test('a tree whose only change is binary still reports no changes (#85)', async // The other two entry points into the same patch path. They differ only in what // they do with the result — a window, or a save dialog — so what is checked here // is that they go through it at all rather than assembling a diff of their own. -test('git:create-patch and git:save-patch generate the patch the same way', async () => { +// A real repository rather than a path that is not one: reading the ticket's +// base is the handler's first step (#308), and a directory that is not a +// repository now stops there with "the base could not be read" instead of +// reaching the patch path this test is about. +test('git:create-patch and git:save-patch generate the patch the same way', async (t) => { + const dir = await fixtureRepo(t); for (const channel of ['git:create-patch', 'git:save-patch']) { // Throwing ends the handler at its first delegation — which is also what // keeps this test off the network, since the next step fetches @@ -1105,9 +1109,9 @@ test('git:create-patch and git:save-patch generate the patch the same way', asyn const ensureAutocrlf = spy(async () => { throw new Error('not a repository'); }); const main = loadMain({ stubs: { ...silentLogging(), './trunk-update': { ensureAutocrlf } } }); - await main.invoke(channel, '/sites/wp'); + await main.invoke(channel, dir); - assert.deepEqual(ensureAutocrlf.calls, [['/sites/wp']], channel); + assert.deepEqual(ensureAutocrlf.calls, [[dir]], channel); } }); @@ -1929,6 +1933,103 @@ test('git:preview-patch stays quiet about files the ticket never touched (#301)' assert.deepEqual(preview.conflicts, []); }); +// --- what the app says when it does not know the base (#308) -------------- + +// The same repo the tests above use, with trunk moved on after the branch was +// born — the shape "Update to latest trunk" leaves, and the reason substituting +// today's trunk for an unrecorded base is a guess rather than a reading. The +// branch does not carry `src/wp-signup.php`, so measured against today's trunk +// it looks like the contributor deleted a file they have never opened. +async function movedOnTrunkRepo(t) { + const repo = await parkedTicketRepo(t, { workFile: 'src/wp-login.php' }); + const { dir } = repo; + const author = { name: 'test', email: 'test@example.com' }; + await git.checkout({ fs, dir, ref: 'trunk' }); + fs.writeFileSync(path.join(dir, 'src', 'wp-signup.php'), ' { + const { dir } = await movedOnTrunkRepo(t); + const main = parkedTicketMain(dir, null); + + const preview = await main.invoke('git:preview-patch', dir, LOGIN_DIFF); + assert.equal(preview.ok, false); + assert.match(preview.error, /could not check your work/i); + assert.equal(preview.conflicts, undefined); +}); + +// A repo whose `trunk` ref is gone: the base cannot be recorded and cannot be +// worked out either. Before #308 this came back as null, which every caller +// reads as "this site is on trunk" — so the walk fell back to HEAD, a resumed +// ticket matches HEAD exactly, and the preview reported a clean tree over a +// morning's work. It has to fail instead. +async function unreadableBaseRepo(t) { + const repo = await parkedTicketRepo(t, { workFile: 'src/wp-login.php' }); + await git.deleteBranch({ fs, dir: repo.dir, ref: 'trunk' }); + return repo; +} + +test('git:preview-patch also fails honestly when the repository cannot provide a base (#308)', async (t) => { + const { dir } = await unreadableBaseRepo(t); + const main = parkedTicketMain(dir, null); + + const preview = await main.invoke('git:preview-patch', dir, LOGIN_DIFF); + + assert.equal(preview.ok, false, 'an unreadable base must not read as a clean tree'); + assert.match(preview.error, /could not/i); + assert.equal(preview.conflicts, undefined); +}); + +// The same failure on the question the card asks. Answering "nothing here" +// would be the #301 silence again, reached through the failure path. +test('git:unsubmitted-work fails rather than reporting a clean unrecorded ticket (#308)', async (t) => { + const { dir } = await movedOnTrunkRepo(t); + const main = parkedTicketMain(dir, null); + + const res = await main.invoke('git:unsubmitted-work', dir); + + assert.equal(res.ok, false); + assert.match(res.error, /no recorded starting point/); +}); + +// And on the destructive one. The uncommitted-only reset is not a safe stand-in +// for a discard to base: it looks like it worked, leaves the parked WIP commit +// where it was, and the modal comes back listing the work it just promised to +// throw away. +test('git:discard-to-base refuses rather than half-discarding without a recorded base (#308)', async (t) => { + const { dir, workFile } = await movedOnTrunkRepo(t); + fs.writeFileSync(path.join(dir, 'loose.php'), ' { + const { dir } = await movedOnTrunkRepo(t); + const main = parkedTicketMain(dir, null); + + const res = await main.invoke('git:get-patch', dir); + + assert.equal(res.ok, false); + assert.match(res.error, /no recorded starting point/); + assert.equal(res.patch, undefined); +}); + // git:apply-patch reads the store for its guard before delegating, which is the // seam fakeSettingsStore stands in for — so it is a wired handler, not a hole. // It streams, so its result comes back on the :done channel, not the return. @@ -3762,4 +3863,3 @@ test('every IPC channel is classified: wired, or explicitly not', () => { const stale = CLASSIFIED.filter((channel) => !registered.includes(channel)); assert.deepEqual(stale, [], 'Classified channels that main.js no longer registers'); }); - diff --git a/test/trunk-update.integration.test.cjs b/test/trunk-update.integration.test.cjs index 215ea9b..47de700 100644 --- a/test/trunk-update.integration.test.cjs +++ b/test/trunk-update.integration.test.cjs @@ -99,8 +99,7 @@ test('discardToBase: a base that is not an ancestor of HEAD does not rewind the await git.add({ fs, dir, filepath: 'text.txt' }); const wip = await git.commit({ fs, dir, message: 'WIP', author: AUTHOR, parent: [trunkStart] }); // Trunk advances to a commit that is a sibling of the ticket HEAD, not an - // ancestor — the shape patchBaseOid's fallback would hand a branch with no - // recorded base once trunk has moved on. + // ancestor — the shape this guard must refuse. await git.checkout({ fs, dir, ref: 'trunk' }); fs.writeFileSync(path.join(dir, 'other.txt'), 'unrelated trunk work\n'); await git.add({ fs, dir, filepath: 'other.txt' }); From eb8d2fc63a70398d47bc1f1c90f116ef25ab731c Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 10:01:41 +0200 Subject: [PATCH 18/53] Treat an applied patch as a named layer, not an undo blob (#318) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why An applied PR remains part of a ticket’s work, but the app described every touched file as the contributor’s own and a failed Revert could blame the PR author. That attribution is misleading and makes the safe exit hard to find. ## What changes The applied patch is retained as a named layer: - conflict copy says a file includes changes from the named PR and may also contain the contributor’s edits; - Revert remains available whenever the patch text was retained; - pressing Revert performs the existing reverse-apply check and reports overlapping edits there; - a patch too large to retain offers save-a-copy plus discard-to-base; - the one-patch slot remains occupied until Revert or discard clears it. Routine `site:status` no longer reads and diffs patch files synchronously. The proactive “absorbed” classifier/state and categorical “not by you” copy have been removed. ## How to test this **Platforms:** any. 1. Apply a PR on a linked ticket. **Expected:** its named banner appears with **Revert this patch**. 2. Preview another patch touching the same file. **Expected:** the warning says the file includes changes from the applied PR and may also contain your edits; it never says “not by you”. 3. Edit a line brought by the applied PR and press **Revert this patch**. **Expected:** Revert fails without touching anything and explains the overlap, offering save-a-copy/discard rather than asking the author for a rebase. 4. Undo that edit and press Revert again. **Expected:** it succeeds and clears the named layer. **What must not have happened:** routine refreshes must not synchronously scan patch files; a failed Revert must not partially edit the tree or free the one-patch slot. ## Risks and limitations The banner does not predict whether a retained patch is still reversible; it answers only when the user requests Revert. This keeps routine main-process status reads cheap and keeps error details attached to the action they explain. The desktop flow remains to be driven from the integration artifact. ## Related Fixes #306. Part of #309. Builds on #317 and sharpens #313. ---
Design decisions and alternatives considered The previous version diagnosed every applied layer during `site:status`, adding synchronous file reads and an “absorbed” state. The simplified version uses the reverse apply operation as the diagnostic only when Revert is pressed.
Review outcome 2 [fix here] — both fixed: synchronous status-path diagnosis was removed, and same-file ownership now preserves uncertainty. Lint is clean and the branch’s full suite passes 979 tests.
Implementation notes The simplification removed 310 net lines from the reviewed version. Patch text remains in the main process and never crosses IPC.
Screenshots or recording No new layout. The existing applied-layer and failure banners render the revised copy/actions.
--------- Co-authored-by: Claude Fable 5 --- src/main.js | 10 +- src/patch-apply.js | 10 +- src/renderer/applied-layer.cjs | 141 ++++++++++++++++ src/renderer/apply-conflict.cjs | 113 +++++++++++-- src/renderer/index.jsx | 110 +++++++++---- test/applied-layer.test.cjs | 224 ++++++++++++++++++++++++++ test/apply-conflict.test.cjs | 7 +- test/ipc-wiring.test.cjs | 161 ++++++++++++++++++ test/patch-apply.integration.test.cjs | 17 ++ 9 files changed, 742 insertions(+), 51 deletions(-) create mode 100644 src/renderer/applied-layer.cjs create mode 100644 test/applied-layer.test.cjs diff --git a/src/main.js b/src/main.js index f3a4e9d..2f08721 100644 --- a/src/main.js +++ b/src/main.js @@ -1579,7 +1579,7 @@ ipcMain.handle('git:apply-patch', async (event, sitePath, options = {}) => { // site is still stuck, and telling the contributor it is // sorted would send them back to a button that still refuses. try { - await mergeSiteMeta(sitePath, { appliedPatch: null }); + await writeWorkMeta(sitePath, { appliedPatch: null }); recordCleared = true; } catch (e) { logError('git:apply-patch', `clearing stale applied-patch record failed: ${String(e && e.stack ? e.stack : e)}`); @@ -1719,11 +1719,19 @@ ipcMain.handle('site:status', async (_e, sitePath) => { // Summarised rather than passed through: the stored patch text is only // needed by the main process to reverse it, and this is polled. + // + // A routine status read does not open and diff the patch's files. Revert + // performs that check when the contributor asks for it, and its existing + // failure payload explains overlapping edits without freezing every + // status refresh in the main process (#306). const appliedPatch = work.appliedPatch ? { label: work.appliedPatch.label, appliedAt: work.appliedPatch.appliedAt, files: work.appliedPatch.files || [], + // Whether a text was kept at all — the separate reason a patch + // cannot be reverted, and a different sentence from absorption. + kept: Boolean(work.appliedPatch.text), revertable: Boolean(work.appliedPatch.text) } : null; diff --git a/src/patch-apply.js b/src/patch-apply.js index dc92be8..199c864 100644 --- a/src/patch-apply.js +++ b/src/patch-apply.js @@ -458,10 +458,12 @@ async function applyPatchToDir({ dir, patchText, reverse = false, onLog = () => skipped.push(file.path); continue; } - // No diagnosis on a reverse: the panel discards it — the patch being - // reverted came through this app, and the ticket's other patches are no - // answer to a revert that failed. - const resolved = resolveFile(dir, file, { diagnose: !reverse }); + // Diagnosed on a reverse too (#306). The ticket's other patches are still + // no answer to a revert that failed, but the *reason* it failed is: a + // revert only fails because the contributor's own edits are on the + // patch's lines, and naming how many of them, and where, is the whole + // difference between an explanation and a generic error. + const resolved = resolveFile(dir, file); if (resolved.error) { failures.push(resolved.error); if (resolved.conflict) conflicts.push(resolved.conflict); diff --git a/src/renderer/applied-layer.cjs b/src/renderer/applied-layer.cjs new file mode 100644 index 0000000..e031271 --- /dev/null +++ b/src/renderer/applied-layer.cjs @@ -0,0 +1,141 @@ +// What the app says about the one patch a ticket has applied (#306). +// +// A ticket is a branch (#108): trunk, plus at most one applied patch or pull +// request, plus the contributor's own edits. The branch holds that faithfully. +// What the app *said* about it did not — the applied patch was remembered as an +// undo blob, so every file it brought was announced as the contributor's own +// writing, and "can this be reverted" meant no more than "we kept the text". +// +// Two answers live here, both pure: +// +// - `attributeConflicts` names files that include the applied layer without +// claiming the contributor could not also have edited them. +// - `describeAppliedLayer` offers Revert when the text was retained, and the +// copy-and-discard exit when it was too large to keep. +// +// Pure and dependency-free like update-plan.cjs and apply-conflict.cjs, for the +// same reason: the renderer bundle imports it, `node --test` requires it +// directly, and neither needs a DOM. +'use strict'; + +// Saving a copy and then discarding is a recommendable way forward on this +// project, not a defeat: a ticket's changes are one afternoon's work on a +// checkout that gets thrown away, and redoing them is cheaper than untangling +// them. Said once, here, so both faces that offer it say it the same way. +const DISPOSABLE_EXIT = 'Save a copy of your work first and the ticket is safe to discard back to its base — on this project that is a normal way forward, not a lost afternoon.'; + +// A patch that cannot be reverted still holds the slot until the ticket is +// discarded; keeping that explicit prevents the banner implying otherwise. +const SLOT_HELD = 'It still counts as this ticket\'s one applied patch, so another cannot be applied until this ticket is reverted or discarded.'; + +/** + * `a`, `a and b`, `a, b and c` — a list a person reads rather than a join. + * + * @param {string[]} items + * @return {string} + */ +function listOf(items) { + if (items.length <= 1) return items[0] || ''; + return `${items.slice(0, -1).join(', ')} and ${items[items.length - 1]}`; +} + +/** + * Who owns each file a patch about to be applied would land on. + * + * The pre-apply warning exists to say "your work is here, and this could fail + * without touching it". Counting the applied layer's files as the contributor's + * own writing is the kind of wrong that teaches people to ignore the warning — + * so both are named, separately, and neither is dropped. + * + * This is provenance, not exclusive ownership. A routine status read does not + * inspect every line, so a layer file may also contain contributor edits and + * the copy says that explicitly. + * + * @param {Object} root0 + * @param {string[]} [root0.conflicts] Paths from the preview's plan. + * @param {?Object} [root0.appliedPatch] The status record, or null. + * @return {{yours: string[], fromLayer: string[], sentences: string[]}} + */ +function attributeConflicts({ conflicts = [], appliedPatch = null } = {}) { + const paths = Array.isArray(conflicts) ? conflicts.filter(Boolean) : []; + const layerFiles = new Set(appliedPatch && Array.isArray(appliedPatch.files) ? appliedPatch.files : []); + const fromLayer = appliedPatch ? paths.filter((p) => layerFiles.has(p)) : []; + const claimed = new Set(fromLayer); + const yours = paths.filter((p) => !claimed.has(p)); + + const sentences = []; + if (yours.length) { + sentences.push(`You have your own edits to ${listOf(yours)}. Save a patch of your work first if you want a copy.`); + } + if (fromLayer.length) { + const label = appliedPatch.label || 'the patch you applied'; + sentences.push(`${listOf(fromLayer)} ${fromLayer.length === 1 ? 'includes' : 'include'} changes from ${label}, which you applied. The ${fromLayer.length === 1 ? 'file may' : 'files may'} also contain your own edits.`); + } + if (sentences.length) { + sentences.push('The patch is applied on top of those changes: it succeeds if they do not overlap, and fails without touching anything if they do.'); + } + return { yours, fromLayer, sentences }; +} + +/** + * The applied-layer banner, in whichever face the checkout has earned. + * + * The banner only promises an undo when the app retained the patch text. + * + * `when` is passed in already formatted — the locale-dependent part is the + * component's, and keeping it out of here is what lets this be asserted on. + * + * @param {?Object} appliedPatch The `site:status` record, or null. + * @param {Object} [options] + * @param {string} [options.when] Formatted apply time, or '' when unknown. + * @return {?Object} + */ +function describeAppliedLayer(appliedPatch, { when = '' } = {}) { + if (!appliedPatch) return null; + + const label = appliedPatch.label || 'A patch'; + const files = Array.isArray(appliedPatch.files) ? appliedPatch.files : []; + const kept = appliedPatch.kept === undefined ? Boolean(appliedPatch.revertable) : Boolean(appliedPatch.kept); + + const summary = `is applied — ${files.length} file${files.length === 1 ? '' : 's'}${when ? `, ${when}` : ''}.`; + + if (kept) { + return { label, summary, canRevert: true, explanation: '', detail: [], note: '', offerCopy: false }; + } + + // Too large to have kept a copy of. Nothing about the tree changes this one, + // so it says so plainly and goes straight to the exit that always works. + return { + label, + summary, + canRevert: false, + explanation: `${label} was too large to keep a copy of for an undo, so it cannot be lifted back out on its own.`, + detail: [], + note: `${DISPOSABLE_EXIT} ${SLOT_HELD}`, + offerCopy: true + }; +} + +/** + * Whichever of the layer's two safe exits failed, said where they were offered. + * + * Both report through state that belongs to somewhere else on screen — the + * changes note and the patch modal — and the layer banner is neither. A + * refusal that lands there is a button that did nothing, on the one way out + * this banner recommends, so it is repeated here rather than left behind. + * + * The save goes first: it is the step that makes discarding safe, and its + * failure is the one that must not be missed. + * + * @param {Object} root0 + * @param {string} [root0.patchSaveError] + * @param {string} [root0.discardError] + * @return {{message: string}} + */ +function layerExitFailure({ patchSaveError = '', discardError = '' } = {}) { + if (patchSaveError) return { message: `The copy could not be saved: ${patchSaveError}` }; + if (discardError) return { message: discardError }; + return { message: '' }; +} + +module.exports = { attributeConflicts, describeAppliedLayer, layerExitFailure, listOf, DISPOSABLE_EXIT, SLOT_HELD }; diff --git a/src/renderer/apply-conflict.cjs b/src/renderer/apply-conflict.cjs index 0ffb628..65c2bbf 100644 --- a/src/renderer/apply-conflict.cjs +++ b/src/renderer/apply-conflict.cjs @@ -30,17 +30,29 @@ const REASONS = { moved: 'the code around it has changed' }; +// The same two statuses read backwards, for a revert (#306). `already-applied` +// is derived by testing the inverse of what is being applied, so on a reverse it +// means the *forward* hunk fits — that region's change is not in the checkout +// any more. Rendering the forward wording there would put "already in your +// checkout" under a headline saying the contributor has edited over it. +const REVERT_REASONS = { + 'already-applied': 'looks like that change is not in your checkout any more', + moved: 'the code around it has changed' +}; + /** * One failing region, ready to render. * - * @param {Object} region + * @param {Object} region + * @param {boolean} [reversing] Whether the failed run was a revert. * @return {Object} */ -function describeRegion(region) { +function describeRegion(region, reversing = false) { + const reasons = reversing ? REVERT_REASONS : REASONS; return { line: region.line, status: region.status, - reason: REASONS[region.status] || 'it no longer fits', + reason: reasons[region.status] || 'it no longer fits', // A line to search for, not a number to go to: the hunk's line numbers // are in the patched file's coordinates and miss by the drift the patch // failed on. The panel leads with this and keeps `line` as the fallback. @@ -170,19 +182,32 @@ function namePaths(rows) { * @param {Array} conflicts * @param {?string} prState 'open' | 'merged' | 'closed' | null when unknown. * @param {string[]} [ownWorkPaths] Files this ticket has its own work in. + * @param {?Object} [appliedPatch] Named layer whose files are part of that work. * @return {{headline: string, advice: string, prButton: ?string}} */ -function prFraming(conflicts, prState, ownWorkPaths = []) { +function prFraming(conflicts, prState, ownWorkPaths = [], appliedPatch = null) { const failed = conflicts.reduce((sum, c) => sum + c.regions.length, 0); const total = conflicts.reduce((sum, c) => sum + c.total, 0); const allApplied = conflicts.every((c) => c.regions.every((r) => r.status === 'already-applied')); const closed = prState === 'closed' || prState === 'merged'; + const ticketWork = new Set(ownWorkPaths); + const alreadyPresentInTicketWork = conflicts.some((c) => ticketWork.has(c.path)); // A pull request whose changes are all in trunk already needs no rebase and // no message — there is nothing left for anyone to do with it. When it is // also closed, that is core's own way of landing a change: committed via // SVN, pull request closed. if (allApplied && failed === total) { + // Two-way matching only proves that these lines are in the checkout. If + // the ticket also has work in the file, they may come from that work or + // its named layer; claiming trunk would erase the provenance (#306). + if (alreadyPresentInTicketWork) { + return { + headline: `All ${total} of this pull request's change${total === 1 ? '' : 's'} look like they are already in your checkout — there is nothing left to apply.`, + advice: '', + prButton: 'Open the pull request' + }; + } return { headline: closed ? `All ${total} of this pull request's change${total === 1 ? '' : 's'} look like they are already in trunk — it was likely committed to core, which is why it is closed. There is nothing left to apply.` @@ -210,7 +235,9 @@ function prFraming(conflicts, prState, ownWorkPaths = []) { } const own = new Set(ownWorkPaths); - const mine = namePaths(conflicts.filter((c) => own.has(c.path))); + const layerFiles = new Set(appliedPatch && Array.isArray(appliedPatch.files) ? appliedPatch.files : []); + const layered = namePaths(conflicts.filter((c) => own.has(c.path) && layerFiles.has(c.path))); + const mine = namePaths(conflicts.filter((c) => own.has(c.path) && !layerFiles.has(c.path))); const theirs = namePaths(conflicts.filter((c) => !own.has(c.path))); const REBASE_IS_THEIRS = 'Bringing it up to date is its author\'s work — a rebase, or merging trunk in. Leaving a comment on the pull request to let them know is a real contribution in itself.'; // A ticket's changes are cheap to redo and expensive to untangle, so keeping @@ -219,6 +246,23 @@ function prFraming(conflicts, prState, ownWorkPaths = []) { // copy already saved, is a good outcome. const YOUR_WORK_WAY_OUT = 'Save a patch of your work first to keep a copy, then try this pull request on a clean ticket. If it still does not fit there, open the pull request and let its author know it may need updating.'; + // The ticket-base scan sees the named layer as ticket work too. It cannot + // prove whether the contributor edited those files afterwards, so name the + // provenance and preserve the same uncertainty as the preview (#306). + if (layered.count) { + const label = appliedPatch.label || 'the patch you applied'; + const parts = [ + `${layered.text} ${layered.count === 1 ? 'includes' : 'include'} changes from ${label} and may also contain your own edits.` + ]; + if (mine.count) parts.push(`Your own work is also in ${mine.text} and may be part of the failure.`); + if (theirs.count) parts.push(`Other failures are in ${theirs.text}.`); + return { + headline: `This pull request does not fit your checkout: ${scale} would need rework. ${parts.join(' ')}`, + advice: YOUR_WORK_WAY_OUT, + prButton: 'Open the pull request' + }; + } + // File overlap cannot identify the failing region. Keep the pull request // reachable, but make the rebase advice conditional on it also failing in a // clean ticket. @@ -245,6 +289,36 @@ function prFraming(conflicts, prState, ownWorkPaths = []) { }; } +/** + * The framing for a revert that would not come back out (#306). + * + * A revert fails for one reason: the contributor's own edits are on the lines + * the patch brought. There is no third party here and no rebase to ask anyone + * for — the patch and the edits are one body of work now, which is what + * absorption means. So the sentence names that, and the two ways forward are + * undoing the overlapping edits, or saving a copy and discarding the ticket to + * its base, which on this project is a normal step rather than a defeat. + * + * Regions are kept, unlike the pull-request framing: these lines are the + * contributor's own, so pointing at them is pointing at their work. + * + * @param {Array} conflicts + * @param {string} label + * @return {{headline: string, advice: string, prButton: ?string}} + */ +function revertFraming(conflicts, label) { + const failed = conflicts.reduce((sum, c) => sum + c.regions.length, 0); + const total = conflicts.reduce((sum, c) => sum + c.total, 0); + const files = conflicts.length; + const where = files === 1 ? '' : `, across ${files} files`; + + return { + headline: `${label} cannot be lifted back out on its own: your own edits are on ${failed} of its ${total} change${total === 1 ? '' : 's'}${where}.`, + advice: 'It is part of your changes now. Undoing your edits on those lines brings Revert back; otherwise save a copy of your work and discard the ticket to its base — on this project that is a normal way forward, not a lost afternoon.', + prButton: null + }; +} + /** * Everything the panel needs to explain a failed apply, or null when there is * nothing to explain. @@ -270,9 +344,11 @@ function prFraming(conflicts, prState, ownWorkPaths = []) { * @param {?string} [options.prState] Its state, when known. * @param {string[]} [options.ownWorkPaths] Files this ticket has work in, from * the preview's collision list (#303). + * @param {?Object} [options.appliedPatch] Named layer within that work (#306). + * @param {?string} [options.reverting] Label of the layer being reverted. * @return {?Object} */ -function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, prUrl = null, prState = null, ownWorkPaths = [] } = {}) { +function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, prUrl = null, prState = null, ownWorkPaths = [], appliedPatch = null, reverting = null } = {}) { if (!result || result.ok) return null; const failures = Array.isArray(result.failures) ? result.failures : []; @@ -282,7 +358,10 @@ function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, pr // the panel keeps rendering it exactly as it did before. if (!failures.length && !conflicts.length) return null; - const fromPr = Boolean(prUrl); + // A revert is never "someone else's patch does not fit": it is the + // contributor's own edits sitting on lines they applied. The pull-request + // framing would send them to an author who has nothing to do with it. + const fromPr = Boolean(prUrl) && !reverting; // Each conflict is consumed as it is matched, not looked up in a map: a // concatenated patch can fail the same file twice with the identical @@ -301,7 +380,7 @@ function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, pr failed: conflict.regions.length, // For a pull request the regions are the author's problem; the file // row with its counts is the whole story the contributor needs. - regions: fromPr ? [] : conflict.regions.map(describeRegion) + regions: fromPr ? [] : conflict.regions.map((region) => describeRegion(region, Boolean(reverting))) }; }); @@ -311,9 +390,13 @@ function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, pr let advice = ''; let prButton = fromPr ? 'Open the pull request' : null; if (conflicts.length) { - const framing = fromPr - ? prFraming(conflicts, prState, ownWorkPaths) - : { headline: headlineFor(conflicts), advice: '', prButton: null }; + // A failed revert is never the pull request having gone stale, so it is + // asked first: the only thing that stops a layer coming back out is the + // contributor's own work sitting on its lines (#306). + let framing; + if (reverting) framing = revertFraming(conflicts, reverting); + else if (fromPr) framing = prFraming(conflicts, prState, ownWorkPaths, appliedPatch); + else framing = { headline: headlineFor(conflicts), advice: '', prButton: null }; headline = framing.headline; advice = framing.advice; prButton = framing.prButton; @@ -322,13 +405,17 @@ function describeApplyFailure(result, { otherPatchCount: othersAvailable = 0, pr headline, advice, items, + // The safe exit, for the panel to offer alongside the sentence. Only + // a revert has one: every other failure left the checkout untouched, so + // there is nothing to save a copy of that is not already safe. + offerDiscardToBase: Boolean(reverting) && conflicts.length > 0, // Both are offered only when they lead somewhere, the way open-failure.cjs // withholds its picker: a way out that returns to the same dead end is // worse than no button, because it costs a click to find that out. - offerOtherPatches: othersAvailable > 0, + offerOtherPatches: !reverting && othersAvailable > 0, prUrl: prUrl && prButton ? prUrl : null, prButton }; } -module.exports = { describeApplyFailure, headlineFor, otherPatchCount, REASONS }; +module.exports = { describeApplyFailure, headlineFor, otherPatchCount, revertFraming, REASONS, REVERT_REASONS }; diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index f160ec3..0da0d4b 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -30,6 +30,7 @@ import { pathBasename } from './path-basename.cjs'; import { sanitizeSiteFolder, resolveTargetDir, directoryFromFileEntry } from './site-folder.cjs'; import { noticeForOpenResult } from './open-failure.cjs'; import { describeApplyFailure, otherPatchCount } from './apply-conflict.cjs'; +import { describeAppliedLayer, attributeConflicts, layerExitFailure } from './applied-layer.cjs'; import { trunkAgeInfo, planUpdateSteps, updateStepStatuses, SKIP_INSTALL_MESSAGE, planApplySteps, planWatchImpact, APPLY_STATE_TO_STEP, planSetupSteps, SETUP_STATE_TO_STEP, setupOutcome } from './update-plan.cjs'; import { pickLatest } from '../latest-patch.cjs'; import { beginSetup, adoptSetupPath, discardSetup, rowPathAfterStatus } from './pending-setup.cjs'; @@ -2729,6 +2730,21 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit const applySteps = planApplySteps({ needsInstall: applyNeedsInstall, buildByWatcher: applyBuildByWatcher }); const applyStepStates = updateStepStatuses(applySteps, applyState, APPLY_STATE_TO_STEP); + // The applied patch as a layer with a name (#306), not an undo blob. Both + // answers come from the same record: whether it can still be lifted out — + // measured in main on every status read, so it comes back on its own when the + // overlapping edit is undone — and whose changes the next patch would land on. + const appliedLayer = describeAppliedLayer(appliedPatch, { + when: appliedPatch?.appliedAt ? new Date(appliedPatch.appliedAt).toLocaleString() : '' + }); + const previewAttribution = attributeConflicts({ conflicts: applyPreview?.conflicts, appliedPatch }); + // The layer exits reach the same two operations the changes note does, so + // they go through the same guard: a discard is a force checkout, and running + // it under a live dev server or a half-finished install rewrites the tree + // from under it. Not re-derived here — that is how a second answer starts. + const layerExitBlocked = discardBlocked({ isUpdating, installing, building, devServerActive: isDevProcessActive, discarding }); + const layerExit = layerExitFailure({ patchSaveError, discardError }); + // --- Initial setup, as one chain (#246) --- // The third chain, and the only one nobody starts: between the clone, the // install and the build there is no decision to make, so making the @@ -3179,24 +3195,28 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // A conflict is where the panel used to stop: one file named, the // rest of the failures left in the terminal, and no sense of whether // one region of twenty missed or all of them. The breakdown is what - // turns that into a decision (#282). A reverse is left out — the - // patch it names came from this app and the ticket's other patches - // are no help against it. - setApplyConflict(reverse ? null : describeApplyFailure(res, { - otherPatchCount: otherPatchCount({ - label: preview?.label, - prs: ticketPatches?.items, - attachments: patchAttachments - }), - prUrl: preview?.prUrl || null, - prState: preview?.prState || null, - // The preview's own collision list: the files this ticket has work - // in, measured from its base (#301). Without it an open pull request - // is always narrated as stale, so a failure caused by the - // contributor's own edits sends them to ask a stranger for a rebase - // that would not help (#303). - ownWorkPaths: preview?.conflicts || [] - })); + // turns that into a decision (#282). A reverse gets its own framing + // (#306): it fails only because the contributor's own edits are on the + // patch's lines, so the ticket's other patches and the pull request's + // author are both the wrong place to send them. + setApplyConflict(describeApplyFailure(res, reverse + ? { reverting: appliedPatch?.label || 'That patch' } + : { + otherPatchCount: otherPatchCount({ + label: preview?.label, + prs: ticketPatches?.items, + attachments: patchAttachments + }), + prUrl: preview?.prUrl || null, + prState: preview?.prState || null, + appliedPatch, + // The preview's own collision list: the files this ticket has work + // in, measured from its base (#301). Without it an open pull + // request is always narrated as stale, so a failure caused by the + // contributor's own edits sends them to ask a stranger for a + // rebase that would not help (#303). + ownWorkPaths: preview?.conflicts || [] + })); finishApply(); return; } @@ -4701,19 +4721,38 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit
) : null} - {appliedPatch && !isApplying ? ( -
-
- {appliedPatch.label} is applied — {appliedPatch.files.length} file{appliedPatch.files.length === 1 ? '' : 's'} - {appliedPatch.appliedAt ? `, ${new Date(appliedPatch.appliedAt).toLocaleString()}` : ''}. + {appliedLayer && !isApplying ? ( +
+
+ {appliedLayer.label} {appliedLayer.summary}
+ {appliedLayer.explanation ? ( +
{appliedLayer.explanation}
+ ) : null} + {appliedLayer.detail.map((line) => ( +
{line}
+ ))} + {appliedLayer.note ? ( +
{appliedLayer.note}
+ ) : null}
- {appliedPatch.revertable ? ( + {appliedLayer.canRevert ? ( - ) : ( - Too large to undo automatically — use Update to latest trunk to reset. - )} + ) : null} + {appliedLayer.offerCopy ? ( + <> + + + + ) : null}
+ {/* Both exits report failure through state the changes note and the + patch modal own, and neither is on screen here — so a save that + could not write, or a discard that refused, would be a button + that did nothing on the one way out this banner recommends. */} + {layerExit.message ? ( +
{layerExit.message}
+ ) : null}
) : null} @@ -4725,9 +4764,10 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit
{applyPreview.paths.map((p) =>
{p}
)}
- {applyPreview.conflicts.length ? ( + {/* Who the colliding work belongs to (#306) is the sentence. */} + {previewAttribution.sentences.length ? (
- You have your own edits to {applyPreview.conflicts.join(', ')}. The patch is applied on top of them: it succeeds if the changes do not overlap, and fails without touching anything if they do. Save a patch of your work first if you want a copy. + {previewAttribution.sentences.map((sentence) =>
{sentence}
)}
) : null} {applyPreview.unsupported.length ? ( @@ -4825,8 +4865,14 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit
{applyConflict.advice}
) : null} - {applyConflict.offerOtherPatches || applyConflict.prUrl ? ( + {applyConflict.offerOtherPatches || applyConflict.prUrl || applyConflict.offerDiscardToBase ? (
+ {applyConflict.offerDiscardToBase ? ( + <> + + + + ) : null} {applyConflict.offerOtherPatches ? (
) : null}
diff --git a/test/applied-layer.test.cjs b/test/applied-layer.test.cjs new file mode 100644 index 0000000..c9f59b5 --- /dev/null +++ b/test/applied-layer.test.cjs @@ -0,0 +1,224 @@ +'use strict'; + +// The applied patch as a layer with a name (#306): who owns which file, and +// which of the banner's faces the checkout has earned. Pure — the module holds +// the branching so the component does not, which is what makes this reachable. + +const test = require('node:test'); +const assert = require('node:assert'); +const { attributeConflicts, describeAppliedLayer, layerExitFailure, listOf } = require('../src/renderer/applied-layer.cjs'); +const { describeApplyFailure } = require('../src/renderer/apply-conflict.cjs'); + +const FOO = 'src/wp-login.php'; +const BAR = 'src/wp-admin/edit.php'; + +const layer = (over = {}) => ({ + label: 'PR #123', + appliedAt: '2026-08-12T10:00:00.000Z', + files: [FOO], + kept: true, + revertable: true, + ...over +}); + +// --- attribution ---------------------------------------------------------- + +test('attributeConflicts: a layer file is named without excluding later contributor edits (#306)', () => { + const { yours, fromLayer, sentences } = attributeConflicts({ + conflicts: [FOO], + appliedPatch: layer() + }); + + assert.deepStrictEqual(yours, []); + assert.deepStrictEqual(fromLayer, [FOO]); + // The warning does not go quiet — the file is still named, just attributed. + assert.ok(sentences.some((s) => s.includes(FOO) && s.includes('PR #123'))); + assert.ok(sentences.some((s) => /includes changes from/.test(s))); + assert.ok(!sentences.some((s) => /not by you/.test(s))); + assert.ok(!sentences.some((s) => s.startsWith('You have your own edits'))); +}); + +test('attributeConflicts: the two owners are named separately, not merged (#306)', () => { + const { yours, fromLayer, sentences } = attributeConflicts({ + conflicts: [FOO, BAR], + appliedPatch: layer() + }); + + assert.deepStrictEqual(yours, [BAR]); + assert.deepStrictEqual(fromLayer, [FOO]); + assert.strictEqual(sentences.length, 3); + assert.ok(sentences[0].includes(BAR) && !sentences[0].includes(FOO)); + assert.ok(sentences[1].includes(FOO) && !sentences[1].includes(BAR)); +}); + +test('attributeConflicts: with no patch applied every file is the contributor\'s (#306)', () => { + const { yours, fromLayer, sentences } = attributeConflicts({ conflicts: [FOO, BAR], appliedPatch: null }); + + assert.deepStrictEqual(yours, [FOO, BAR]); + assert.deepStrictEqual(fromLayer, []); + assert.ok(sentences[0].startsWith('You have your own edits')); +}); + +test('attributeConflicts: a clean tree says nothing at all (#306)', () => { + assert.deepStrictEqual(attributeConflicts({ conflicts: [], appliedPatch: layer() }).sentences, []); + assert.deepStrictEqual(attributeConflicts().sentences, []); +}); + +test('describeApplyFailure: an applied-layer-only conflict keeps ownership uncertain (#306)', () => { + const notice = describeApplyFailure({ + ok: false, + failures: [`${FOO} has moved on`], + conflicts: [{ path: FOO, total: 1, regions: [{ index: 0, line: 7, status: 'moved' }] }] + }, { + prUrl: 'https://example.invalid/pr/456', + prState: 'open', + ownWorkPaths: [FOO], + appliedPatch: layer() + }); + + assert.match(notice.headline, /includes changes from PR #123/); + assert.match(notice.headline, /may also contain your own edits/); + assert.doesNotMatch(notice.headline, /Your own work is also in/); +}); + +test('describeApplyFailure: already-present layer changes are not claimed as trunk (#306)', () => { + const notice = describeApplyFailure({ + ok: false, + failures: [`${FOO} looks already applied`], + conflicts: [{ path: FOO, total: 1, regions: [{ index: 0, line: 7, status: 'already-applied' }] }] + }, { + prUrl: 'https://example.invalid/pr/456', + prState: 'open', + ownWorkPaths: [FOO], + appliedPatch: layer() + }); + + assert.match(notice.headline, /already in your checkout/); + assert.doesNotMatch(notice.headline, /already in trunk/); + assert.equal(notice.prButton, 'Open the pull request'); +}); + +test('listOf: reads as a sentence rather than a join (#306)', () => { + assert.strictEqual(listOf([]), ''); + assert.strictEqual(listOf(['a']), 'a'); + assert.strictEqual(listOf(['a', 'b']), 'a and b'); + assert.strictEqual(listOf(['a', 'b', 'c']), 'a, b and c'); +}); + +// --- the banner's faces --------------------------------------------------- + +test('describeAppliedLayer: nothing applied, nothing to say (#306)', () => { + assert.strictEqual(describeAppliedLayer(null), null); +}); + +test('describeAppliedLayer: while it still comes out, Revert is the only offer (#306)', () => { + const face = describeAppliedLayer(layer(), { when: '12/08/2026' }); + + assert.strictEqual(face.canRevert, true); + assert.strictEqual(face.offerCopy, false); + assert.strictEqual(face.explanation, ''); + assert.strictEqual(face.summary, 'is applied — 1 file, 12/08/2026.'); +}); + +// Discarding is a recommendable step here, not an admission of failure — the +// wording is the point, so it is asserted rather than left to drift. +test('describeAppliedLayer: the exit is worded as a normal way forward (#306)', () => { + const face = describeAppliedLayer(layer({ kept: false, revertable: false })); + + assert.ok(/not a lost afternoon/.test(face.note)); + assert.ok(/Save a copy of your work/.test(face.note)); +}); + +test('describeAppliedLayer: a patch too large to keep offers the disposable-ticket exit (#306)', () => { + const face = describeAppliedLayer(layer({ kept: false, revertable: false })); + + assert.strictEqual(face.canRevert, false); + assert.strictEqual(face.offerCopy, true); + assert.ok(/too large to keep a copy of/.test(face.explanation)); + assert.deepStrictEqual(face.detail, []); +}); + +// A record written before this change carries `revertable` and no `kept`. +test('describeAppliedLayer: an older record without `kept` still reads correctly (#306)', () => { + assert.strictEqual(describeAppliedLayer({ label: 'x', files: [FOO], revertable: true }).canRevert, true); + assert.strictEqual(describeAppliedLayer({ label: 'x', files: [FOO], revertable: false }).canRevert, false); +}); + +// --- the revert failure's narration --------------------------------------- + +const revertFailure = { + ok: false, + failures: [`${FOO} has moved on since the patch was written, so none of its 3 changes still fits`], + conflicts: [{ + path: FOO, + error: `${FOO} has moved on since the patch was written, so none of its 3 changes still fits`, + total: 3, + regions: [ + { index: 0, line: 10, status: 'moved', anchor: 'a', lines: [] }, + { index: 1, line: 20, status: 'moved', anchor: 'b', lines: [] }, + { index: 2, line: 30, status: 'moved', anchor: 'c', lines: [] } + ] + }] +}; + +test('describeApplyFailure: a failed revert blames the contributor\'s own edits, not the author (#306)', () => { + const notice = describeApplyFailure(revertFailure, { reverting: 'PR #123', prUrl: 'https://example.invalid/pr/1', prState: 'open' }); + + assert.ok(notice.headline.startsWith('PR #123 cannot be lifted back out on its own')); + assert.ok(/your own edits are on 3 of its 3 changes/.test(notice.headline)); + // The pull request's author has nothing to do with a revert. + assert.strictEqual(notice.prUrl, null); + assert.strictEqual(notice.prButton, null); + assert.ok(!/rebase/.test(notice.advice)); +}); + +test('describeApplyFailure: a failed revert offers the copy-and-discard exit, not another patch (#306)', () => { + const notice = describeApplyFailure(revertFailure, { reverting: 'PR #123', otherPatchCount: 4 }); + + assert.strictEqual(notice.offerDiscardToBase, true); + assert.strictEqual(notice.offerOtherPatches, false); + assert.ok(/Undoing your edits on those lines brings Revert back/.test(notice.advice)); + assert.ok(/not a lost afternoon/.test(notice.advice)); + // The contributor owns these lines, so the per-region detail is theirs to see. + assert.strictEqual(notice.items[0].regions.length, 3); +}); + +test('describeApplyFailure: a forward apply is unaffected by the revert framing (#306)', () => { + const notice = describeApplyFailure(revertFailure, { prUrl: 'https://example.invalid/pr/1', prState: 'open', otherPatchCount: 2 }); + + assert.strictEqual(notice.offerDiscardToBase, false); + assert.strictEqual(notice.offerOtherPatches, true); + assert.strictEqual(notice.prUrl, 'https://example.invalid/pr/1'); + assert.ok(/author/.test(notice.advice)); +}); + +// `already-applied` is derived by testing the inverse of what is being applied, +// so on a revert it means the opposite of what it means going forwards. Reading +// the forward wording out loud there contradicts the headline above it. +test('describeApplyFailure: a revert reads `already-applied` backwards (#306)', () => { + const withApplied = { + ...revertFailure, + conflicts: [{ ...revertFailure.conflicts[0], regions: [{ index: 0, line: 10, status: 'already-applied', anchor: 'a', lines: [] }] }] + }; + + const reverting = describeApplyFailure(withApplied, { reverting: 'PR #123' }); + assert.strictEqual(reverting.items[0].regions[0].reason, 'looks like that change is not in your checkout any more'); + + const forward = describeApplyFailure(withApplied, {}); + assert.strictEqual(forward.items[0].regions[0].reason, 'looks like it is already in your checkout'); +}); + +// --- the exits' own failures --------------------------------------------- + +test('layerExitFailure: silence when neither exit has failed (#306)', () => { + assert.strictEqual(layerExitFailure().message, ''); + assert.strictEqual(layerExitFailure({ patchSaveError: '', discardError: '' }).message, ''); +}); + +test('layerExitFailure: the save is the failure that must not be missed (#306)', () => { + const both = layerExitFailure({ patchSaveError: 'EACCES', discardError: 'could not reset' }); + assert.ok(both.message.includes('EACCES')); + assert.ok(!both.message.includes('could not reset')); + + assert.strictEqual(layerExitFailure({ discardError: 'could not reset' }).message, 'could not reset'); +}); diff --git a/test/apply-conflict.test.cjs b/test/apply-conflict.test.cjs index 9e77ac9..0397ac3 100644 --- a/test/apply-conflict.test.cjs +++ b/test/apply-conflict.test.cjs @@ -479,7 +479,7 @@ test('describeApplyFailure: the mixed framing reads with several files on each s assert.equal(result.prButton, 'Open the pull request'); }); -test('describeApplyFailure: own work does not change the closed or landed framing (issue #303)', () => { +test('describeApplyFailure: own work preserves closed framing but prevents a false landed claim (issue #303)', () => { const closed = describeApplyFailure({ ok: false, failures: [`${FOO} has moved on`], @@ -500,8 +500,9 @@ test('describeApplyFailure: own work does not change the closed or landed framin ])] }, { prUrl: PR_URL, prState: 'closed', ownWorkPaths: [FOO] }); - assert.match(landed.headline, /likely committed to core/); - assert.equal(landed.prButton, null); + assert.match(landed.headline, /already in your checkout/); + assert.doesNotMatch(landed.headline, /committed to core|already in trunk/); + assert.equal(landed.prButton, 'Open the pull request'); }); // A patch from disk or a Trac attachment has no author to misblame, so the diff --git a/test/ipc-wiring.test.cjs b/test/ipc-wiring.test.cjs index 42d8576..cb1e773 100644 --- a/test/ipc-wiring.test.cjs +++ b/test/ipc-wiring.test.cjs @@ -31,6 +31,9 @@ const os = require('node:os'); const path = require('node:path'); const { EventEmitter } = require('node:events'); const git = require('isomorphic-git'); +// The applied-layer module turns the handler's measured status into the +// attribution the renderer shows. +const { attributeConflicts } = require('../src/renderer/applied-layer.cjs'); const SRC_DIR = path.join(__dirname, '..', 'src'); const MAIN_PATH = path.join(SRC_DIR, 'main.js'); @@ -2153,6 +2156,35 @@ test('git:apply-patch clears the record when the revert finds no patch to undo', assert.equal(settings.values.siteMeta['/sites/wp'].appliedPatch, null); }); +test('git:apply-patch clears a stale revert record from the active ticket branch (#306)', async () => { + const applyPatchToDir = spy(async () => ({ ok: false, notApplied: true, error: 'That patch is not in this checkout any more.', applied: [], skipped: [] })); + const settings = fakeSettingsStore({ + sites: ['/sites/wp'], + siteMeta: { + '/sites/wp': { + tracTicket: 62281, + currentBranch: 'ticket/62281', + branches: { 'ticket/62281': { baseOid: 'base', appliedPatch: { label: 'L', text: 'STORED' } } } + } + } + }); + const main = loadMain({ + stubs: { + ...silentLogging(), + ...settings.stubs, + './patch-apply': { applyPatchToDir }, + './ticket-branches': { currentBranchName: async () => 'ticket/62281' } + } + }); + + const event = createIpcEvent(); + const { applyId } = await main.invokeWith('git:apply-patch', event, '/sites/wp', { reverse: true }); + const done = await applyDone(event, applyId); + + assert.equal(done.recordCleared, true); + assert.equal(settings.values.siteMeta['/sites/wp'].branches['ticket/62281'].appliedPatch, null); +}); + // The mirror of the above: a real failure must leave the record alone, or the // patch stays in the tree with nothing offering to undo it. test('git:apply-patch keeps the record when a revert fails for any other reason', async () => { @@ -3863,3 +3895,132 @@ test('every IPC channel is classified: wired, or explicitly not', () => { const stale = CLASSIFIED.filter((channel) => !registered.includes(channel)); assert.deepEqual(stale, [], 'Classified channels that main.js no longer registers'); }); +// --- the applied patch as a layer, measured not remembered (#306) --------- +// +// `revertable` used to mean "we kept the text". It now means what the banner +// asks: can this layer still be lifted out of *this* checkout, right now. That +// is a fact about the tree, so these run against a real repo — a stub would +// mock the very thing under test. + +// The parked ticket with LOGIN_DIFF applied on top of it, plus the record the +// app writes when it applies one. `content` is what ends up in the file, so a +// test can hand-edit over the patch's own line and ask again. +async function ticketWithAppliedPatch(t, content) { + const { dir, baseOid, workFile } = await parkedTicketRepo(t, { workFile: 'src/wp-login.php' }); + fs.writeFileSync(path.join(dir, workFile), content); + const settings = fakeSettingsStore({ + sites: [dir], + siteMeta: { + [dir]: { + tracTicket: 62281, + branches: { + 'ticket/62281': { + tracTicket: 62281, + baseOid, + appliedPatch: { + label: 'PR #123', + appliedAt: '2026-08-12T10:00:00.000Z', + files: ['src/wp-login.php'], + text: LOGIN_DIFF + } + } + } + } + } + }); + const main = loadMain({ stubs: { ...silentLogging(), ...settings.stubs } }); + return { dir, main, settings, workFile }; +} + +const PATCH_APPLIED = ' { + const { dir, main } = await ticketWithAppliedPatch(t, PATCH_APPLIED); + + const status = await main.invoke('site:status', dir); + + assert.equal(status.appliedPatch.label, 'PR #123'); + assert.equal(status.appliedPatch.kept, true); + assert.equal(status.appliedPatch.revertable, true); + assert.equal(status.appliedPatch.absorbed, undefined); +}); + +test('site:status does not diagnose patch contents during a routine status read (#306)', async (t) => { + const { dir, main } = await ticketWithAppliedPatch(t, EDITED_OVER); + + const status = await main.invoke('site:status', dir); + + // Revert itself performs the expensive check and reports any overlap. A + // routine status probe only says whether the text needed for that attempt was + // kept; it must not synchronously read and diff the patch's files. + assert.equal(status.appliedPatch.revertable, true); + assert.equal(status.appliedPatch.kept, true); + assert.equal(status.appliedPatch.absorbed, undefined); +}); + +// The slot frees on revert or on discarding to base, never because the stored +// patch stops fitting. The record survives as provenance. +test('site:status: an edited applied patch still holds the one-patch slot (#306)', async (t) => { + const { dir, main } = await ticketWithAppliedPatch(t, EDITED_OVER); + + const status = await main.invoke('site:status', dir); + assert.notEqual(status.appliedPatch, null, 'the record is provenance, not just an undo blob'); + + // And the guard still refuses a second patch on its behalf. + const event = createIpcEvent(); + const { applyId } = await main.invokeWith('git:apply-patch', event, dir, { patchText: LOGIN_DIFF, label: 'PR #456' }); + const done = await applyDone(event, applyId); + assert.equal(done.ok, false); + assert.match(done.error, /PR #123 is already applied/); +}); + +// A patch a trunk update reset away is no longer in the tree: its record is stale, and +// Revert has to stay on screen because pressing it is what clears it. +test('site:status: a patch the tree no longer holds keeps its Revert (#306)', async (t) => { + const { dir, main } = await ticketWithAppliedPatch(t, ' { + const { dir, main, workFile } = await ticketWithAppliedPatch(t, EDITED_OVER); + const before = fs.readFileSync(path.join(dir, workFile), 'utf8'); + + await main.invoke('site:status', dir); + + assert.equal(fs.readFileSync(path.join(dir, workFile), 'utf8'), before); +}); + +// The other half of #306: the pre-apply warning names the files, and the +// renderer's attribution module decides which of them are the contributor's. +// The two have to agree on the same paths, which is what this pins. +test('git:preview-patch and the applied record agree on who owns a file (#306)', async (t) => { + const { dir, main } = await ticketWithAppliedPatch(t, PATCH_APPLIED); + + const preview = await main.invoke('git:preview-patch', dir, LOGIN_DIFF); + const status = await main.invoke('site:status', dir); + + assert.deepEqual(preview.conflicts, ['src/wp-login.php']); + const attributed = attributeConflicts({ conflicts: preview.conflicts, appliedPatch: status.appliedPatch }); + assert.deepEqual(attributed.fromLayer, ['src/wp-login.php']); + assert.deepEqual(attributed.yours, []); +}); + +// A status read deliberately does not inspect every line in the file. The copy +// therefore keeps the layer's provenance without excluding contributor edits. +test('git:preview-patch: a layer file may also contain contributor edits (#306)', async (t) => { + const { dir, main } = await ticketWithAppliedPatch(t, EDITED_OVER); + + const preview = await main.invoke('git:preview-patch', dir, LOGIN_DIFF); + const status = await main.invoke('site:status', dir); + + const attributed = attributeConflicts({ conflicts: preview.conflicts, appliedPatch: status.appliedPatch }); + assert.deepEqual(attributed.yours, []); + assert.deepEqual(attributed.fromLayer, ['src/wp-login.php']); + assert.ok(attributed.sentences.some((sentence) => /may also contain your own edits/.test(sentence))); +}); diff --git a/test/patch-apply.integration.test.cjs b/test/patch-apply.integration.test.cjs index 0e86cd0..d9ac222 100644 --- a/test/patch-apply.integration.test.cjs +++ b/test/patch-apply.integration.test.cjs @@ -879,3 +879,20 @@ test('diagnoseHunks: overlapping hunks that each pass alone yield null, not zero // Sanity: the single hunk applies, so per-hunk diagnosis finds no failures. assert.strictEqual(diagnoseHunks(body, file), null); }); + +// A revert that fails now carries the same per-region breakdown a forward apply +// does, because that is what the panel narrates the absorption from. +test('applyPatchToDir: a failing reverse reports which regions were edited over (issue #306)', async (t) => { + const dir = await makeRepo(t, { [FOO]: FOO_BODY }); + await applyPatchToDir({ dir, patchText: FOO_PATCH }); + fs.writeFileSync(path.join(dir, FOO), 'one\nMY OWN VERSION\nthree\n'); + + const res = await applyPatchToDir({ dir, patchText: FOO_PATCH, reverse: true }); + + assert.strictEqual(res.ok, false); + assert.strictEqual(res.notApplied, undefined); + assert.strictEqual(res.conflicts.length, 1); + assert.strictEqual(res.conflicts[0].path, FOO); + assert.strictEqual(res.conflicts[0].total, 1); + assert.strictEqual(res.conflicts[0].regions.length, 1); +}); From d302c5f9557040ed66e3292e674af7b60da323cc Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 10:17:31 +0200 Subject: [PATCH 19/53] Warn when trunk moved past a ticket base (#323) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why A ticket can remain on the trunk snapshot where it started after the site updates trunk. Newer patches may then fail, but 1.0 should warn without attempting to rewrite a newcomer’s worktree. ## What changes `site:status` compares the ticket’s recorded base OID with the current trunk OID. When they differ, the existing Trac ticket card shows one notice with the deliberately manual exit: save a copy, unlink, delete that ticket’s work, and link it again. There is no carry-forward operation, classifier, patch transport, new persistence, or network request. Missing base metadata stays silent rather than guessed. ## How to test this **Platforms:** any. **Starting state:** a site with ticket A linked and an uncommitted edit on it. 1. Use **Update to latest trunk** after trunk has advanced. Return to ticket A. **Expected:** its card says “Trunk has moved since this ticket started” and gives the save → Unlink → delete → re-link sequence. 2. Save the patch, click **Unlink**, delete ticket A from **Your tickets on this site**, then link A again. **Expected:** the new ticket starts on current trunk and the notice is gone. 3. Switch from an older ticket to a ticket created on current trunk. **Expected:** the old notice never appears with the new ticket number. **What must not have happened:** no branch, file or metadata is changed merely by displaying the notice; work is removed only after the existing explicit delete confirmation. The state/copy tests fail on the parent branch and pass here. Lint, Node tests and Electron-bundled-Node tests are green. ## Risks and limitations OID inequality proves that trunk changed, not whether a particular patch will conflict. The wording therefore says patches “may” fail. Tickets without a recorded base get no notice because the app cannot compare them honestly. The desktop flow remains to be driven from the integration artifact. ## Related Part of #305 and #309. The automatic carry-forward PRs #320 and #321 remain post-1.0. ---
Design decisions and alternatives considered The 1.0 boundary is observation plus an exit made from existing safe operations. Rewriting the ticket onto new trunk introduces conflict classification, recovery state and concurrency hazards that are not needed to ship an honest experimental release.
Review outcome 2 [fix here] · 0 [follow-up] — both fixed. The stale flag is cleared atomically when a switch names the next ticket, and IPC now pins the equal-base case. Final review found no security, performance, compatibility or proportionality findings. `npm run lint` is clean and `npm run test:electron` passes 984 tests.
Implementation notes Five files, 117 added lines including tests. The only new value crossing IPC is `ticketBehindTrunk: boolean`.
Screenshots or recording Not yet captured. The visible notice will be exercised from the signed integration artifact.
--- src/main.js | 8 ++++-- src/renderer/index.jsx | 15 +++++++++++ src/renderer/ticket-trunk-notice.cjs | 21 +++++++++++++++ test/ipc-wiring.test.cjs | 40 ++++++++++++++++++++++++++++ test/ticket-trunk-notice.test.cjs | 35 ++++++++++++++++++++++++ 5 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/renderer/ticket-trunk-notice.cjs create mode 100644 test/ticket-trunk-notice.test.cjs diff --git a/src/main.js b/src/main.js index 2f08721..d94c179 100644 --- a/src/main.js +++ b/src/main.js @@ -1716,6 +1716,10 @@ ipcMain.handle('site:status', async (_e, sitePath) => { // would carry the other one's "patch applied · Revert" banner over, and // Revert would reverse its hunks against this ticket's tree. const work = await readWorkMeta(sitePath); + // A recorded branch point and the current trunk tip are enough to warn + // that the context changed (#305). Missing metadata stays false: 1.0 + // refuses to guess, and deliberately offers no checkout rewrite. + const ticketBehindTrunk = Boolean(m.tracTicket && work.baseOid && trunkOid && work.baseOid !== trunkOid); // Summarised rather than passed through: the stored patch text is only // needed by the main process to reverse it, and this is polled. @@ -1736,9 +1740,9 @@ ipcMain.handle('site:status', async (_e, sitePath) => { } : null; - return { hasNodeModules, hasBuilt, skipInitWizard: Boolean(m.skipInitWizard), initialized: Boolean(m.initialized), installFailed: Boolean(m.installFailed), trunkOid, trunkDate, updateIncomplete: Boolean(work.updateIncomplete), tracTicket: m.tracTicket || null, appliedPatch }; + return { hasNodeModules, hasBuilt, skipInitWizard: Boolean(m.skipInitWizard), initialized: Boolean(m.initialized), installFailed: Boolean(m.installFailed), trunkOid, trunkDate, updateIncomplete: Boolean(work.updateIncomplete), tracTicket: m.tracTicket || null, ticketBehindTrunk, appliedPatch }; } catch { - return { hasNodeModules: false, hasBuilt: false, skipInitWizard: false, initialized: false, installFailed: false, trunkOid: null, trunkDate: null, updateIncomplete: false, tracTicket: null, appliedPatch: null }; + return { hasNodeModules: false, hasBuilt: false, skipInitWizard: false, initialized: false, installFailed: false, trunkOid: null, trunkDate: null, updateIncomplete: false, tracTicket: null, ticketBehindTrunk: false, appliedPatch: null }; } }); diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 0da0d4b..593a73f 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -41,6 +41,7 @@ import { prDateLabel } from './pr-date-label.cjs'; import { ticketUrl, attachUrl } from './trac-ticket.cjs'; import { adminUrl, adminerUrl } from './site-urls.cjs'; import { ticketBranchRows, ticketListCard } from './ticket-branch-list.cjs'; +import { ticketTrunkNotice } from './ticket-trunk-notice.cjs'; import { describeSwitchProgress } from '../switch-progress.cjs'; import { highlightDiff, hasDiffLines } from './diff-highlight.cjs'; import { highlightLog } from './log-highlight.cjs'; @@ -1268,6 +1269,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit const [waitingForWatch, setWaitingForWatch] = useState(false); // Trac ticket association (#109) const [tracTicket, setTracTicket] = useState(null); + const [ticketBehindTrunk, setTicketBehindTrunk] = useState(false); const [ticketInput, setTicketInput] = useState(''); const [ticketError, setTicketError] = useState(''); const [ticketSaving, setTicketSaving] = useState(false); @@ -1619,6 +1621,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit setTrunkDate(s?.trunkDate || null); setUpdateIncomplete(Boolean(s?.updateIncomplete)); setTracTicket(s?.tracTicket || null); + setTicketBehindTrunk(Boolean(s?.ticketBehindTrunk)); setAppliedPatch(s?.appliedPatch || null); if (metaPatchRef.current) { // A null trunkDate here means the git read failed (e.g. clone still @@ -1759,6 +1762,10 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit } return; } + // The status belongs to the branch we just left. Clear it in the same + // render that names the new ticket; loadStatus will restore the new + // branch's answer below (#305). + setTicketBehindTrunk(false); setTracTicket(res.ticket); if (res.ticket) autoReadTicketRef.current = res.ticket; setTicketInput(''); @@ -2662,6 +2669,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // #12345 is news for the ticket card, one that belongs to nothing is news // for the buttons that would give it somewhere to go. const changesNote = changesNoteParts({ ...(worktreeDirty || {}), tracTicket }); + const staleTicketNotice = ticketTrunkNotice({ ticketId: tracTicket, behind: ticketBehindTrunk }); const updateSteps = planUpdateSteps({ lockfileChanged: updateLockfileChanged }); const updateStepStates = updateStepStatuses(updateSteps, updateState); @@ -4466,6 +4474,13 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit
+ {staleTicketNotice ? ( +
+
{staleTicketNotice.title}
+
{staleTicketNotice.body}
+
+ ) : null} + {tracInfo ? (
{tracInfo.summary ? ( diff --git a/src/renderer/ticket-trunk-notice.cjs b/src/renderer/ticket-trunk-notice.cjs new file mode 100644 index 0000000..0f1c589 --- /dev/null +++ b/src/renderer/ticket-trunk-notice.cjs @@ -0,0 +1,21 @@ +'use strict'; + +/** + * The intentionally limited 1.0 answer when a ticket predates current trunk. + * Detection is useful; rewriting a contributor's checkout is not required. + * The main process performs the recorded-base comparison. Unknown stays silent. + * + * @param {Object} root0 + * @param {string|number|null} root0.ticketId Ticket currently linked. + * @param {boolean} root0.behind Whether its base differs from trunk. + * @return {{title: string, body: string}|null} + */ +function ticketTrunkNotice({ ticketId = null, behind = false } = {}) { + if (!ticketId || !behind) return null; + return { + title: 'Trunk has moved since this ticket started.', + body: `Newer patches may not apply cleanly. Save a copy of your work, unlink the ticket, delete its work from the site, then link #${ticketId} again to start from the current trunk.` + }; +} + +module.exports = { ticketTrunkNotice }; diff --git a/test/ipc-wiring.test.cjs b/test/ipc-wiring.test.cjs index cb1e773..890b758 100644 --- a/test/ipc-wiring.test.cjs +++ b/test/ipc-wiring.test.cjs @@ -2733,6 +2733,7 @@ test('the applied patch belongs to the ticket, not the site (issue #108)', async siteMeta: { '/sites/wp': { currentBranch: 'ticket/61002', + tracTicket: 61002, // The site-level value: what a pre-#108 install left behind, and // what the migration copies onto the ticket it belonged to. It // must never be what the panel reads once a ticket is active. @@ -2758,6 +2759,45 @@ test('the applied patch belongs to the ticket, not the site (issue #108)', async // Reading it from the site would show ticket A's patch while on ticket B — // and offer a Revert that reverses A's hunks against B's tree. assert.equal(status.appliedPatch, null, 'the other ticket\'s applied patch must not leak here'); + assert.equal(status.ticketBehindTrunk, true, 'the active ticket started before the current trunk'); +}); + +test('site:status does not guess that a ticket is behind without a recorded base (#305)', async () => { + const settings = fakeSettingsStore({ + sites: ['/sites/wp'], + siteMeta: { '/sites/wp': { tracTicket: 61002, currentBranch: 'ticket/61002', branches: { 'ticket/61002': { baseOid: null } } } } + }); + const main = loadMain({ + stubs: { + ...silentLogging(), + ...settings.stubs, + './trunk-update': { readTrunkInfo: async () => ({ trunkOid: 'new', trunkDate: 'd' }) }, + './ticket-branches': { currentBranchName: async () => 'ticket/61002' } + } + }); + + const status = await main.invoke('site:status', '/sites/wp'); + + assert.equal(status.ticketBehindTrunk, false); +}); + +test('site:status reports a ticket born from current trunk as current (#305)', async () => { + const settings = fakeSettingsStore({ + sites: ['/sites/wp'], + siteMeta: { '/sites/wp': { tracTicket: 61002, currentBranch: 'ticket/61002', branches: { 'ticket/61002': { baseOid: 'same' } } } } + }); + const main = loadMain({ + stubs: { + ...silentLogging(), + ...settings.stubs, + './trunk-update': { readTrunkInfo: async () => ({ trunkOid: 'same', trunkDate: 'd' }) }, + './ticket-branches': { currentBranchName: async () => 'ticket/61002' } + } + }); + + const status = await main.invoke('site:status', '/sites/wp'); + + assert.equal(status.ticketBehindTrunk, false); }); test('a checkout that died mid-switch blocks further switching (issue #108)', async () => { diff --git a/test/ticket-trunk-notice.test.cjs b/test/ticket-trunk-notice.test.cjs new file mode 100644 index 0000000..0db1b39 --- /dev/null +++ b/test/ticket-trunk-notice.test.cjs @@ -0,0 +1,35 @@ +'use strict'; + +const test = require('node:test'); +const assert = require('node:assert'); +const fs = require('node:fs'); +const path = require('node:path'); +const { ticketTrunkNotice } = require('../src/renderer/ticket-trunk-notice.cjs'); + +test('ticketTrunkNotice says what changed and gives the deliberately manual exit (#305)', () => { + assert.deepStrictEqual(ticketTrunkNotice({ ticketId: 123, behind: true }), { + title: 'Trunk has moved since this ticket started.', + body: 'Newer patches may not apply cleanly. Save a copy of your work, unlink the ticket, delete its work from the site, then link #123 again to start from the current trunk.' + }); +}); + +test('ticketTrunkNotice stays silent without a ticket or a known move (#305)', () => { + for (const state of [ + { ticketId: null, behind: true }, + { ticketId: 123, behind: false }, + { ticketId: 123 } + ]) assert.equal(ticketTrunkNotice(state), null); +}); + +test('the ticket card renders the stale-ticket notice returned by status (#305)', () => { + const source = fs.readFileSync(path.join(__dirname, '..', 'src', 'renderer', 'index.jsx'), 'utf8'); + assert.match(source, /setTicketBehindTrunk\(Boolean\(s\?\.ticketBehindTrunk\)\)/); + assert.match(source, /ticketTrunkNotice\(\{ ticketId: tracTicket, behind: ticketBehindTrunk \}\)/); + assert.match(source, /staleTicketNotice\.title/); + assert.match(source, /staleTicketNotice\.body/); + assert.match( + source, + /setTicketBehindTrunk\(false\);\s+setTracTicket\(res\.ticket\);/, + 'a switched ticket must not render with the previous ticket\'s stale flag' + ); +}); From 87b957ee602c5adfeff6d69ed355b5cc4302f19b Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 10:34:36 +0200 Subject: [PATCH 20/53] Explain why discard is unavailable (#330) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why PR #324 was marked merged by GitHub's stacked-PR endpoint, but its squash commit was attached to the old stacked base rather than to `trunk`. The tested discard explanation is therefore absent from `trunk`, despite #324 appearing merged. ## What changes This lands the exact #324 patch directly on current `trunk`. It adds the same disabled-link explanation beside both “Discard all changes” entry points; there is no new behavior beyond the version already approved on macOS and Windows. ## How to test this **Platforms:** macOS and Windows. **Starting state:** a linked ticket with one local edit and the dev server running. 1. Open **Review & submit changes** and hover **Discard all changes**. It must explain that the dev server must be stopped first. 2. Close the dialog and hover **discard your changes** in the ticket summary. It must show the same explanation. 3. Stop the dev server. Both discard actions must become available. **What must not have happened:** - Merely hovering or opening the explanation must not discard work. - The explanation must not remain after the dev server stops. These steps were completed against the approved integration artifact at commit `012d7df` on macOS and Windows. ## Risks and limitations This recovery commit has the exact same Git tree as the reviewed #324 head. Self-review: 0 [fix here] · 0 [follow-up]. ## Related Replacement landing for #324. Follow-up to #323. ---
Design decisions and alternatives considered A standalone PR is necessary because merging the old stacked PR again is impossible and reusing its stale stack base could repeat the topology error. The patch itself is unchanged.
Review outcome (required — see AGENTS.md) 0 [fix here] · 0 [follow-up]. The recovery commit and #324 resolve to the same Git tree. Lint, 1008 Node tests, 1008 Electron tests, `build:once`, and `git diff --check` all pass.
Implementation notes Recovery head before squash: `752a79a`. Tree: `f7048eb8ca9606b998c81ebaaf1a3868695e4d38`.
Screenshots or recording The visible behavior is unchanged from #324 and was manually validated in the approved integration artifact on both target platforms.
--- src/renderer/changes-note.cjs | 38 +++++++++++++------- src/renderer/index.jsx | 68 ++++++++++++++++++++++++++++++----- test/changes-note.test.cjs | 39 ++++++++++++++------ 3 files changed, 112 insertions(+), 33 deletions(-) diff --git a/src/renderer/changes-note.cjs b/src/renderer/changes-note.cjs index 2c20d0a..cc2dbeb 100644 --- a/src/renderer/changes-note.cjs +++ b/src/renderer/changes-note.cjs @@ -122,18 +122,6 @@ function noteAfterProbe(_current, result) { return { dirty: Boolean(result.dirty), changedCount: result.changedCount }; } -/** - * Whether the modal's discard link is inert: while the diff is loading there - * is nothing to confirm against, with no changes there is nothing to lose, - * and mid-discard a second click would race the first. - * - * @param {{patchLoading?: boolean, patchHasChanges?: boolean, discarding?: boolean}} state - * @return {boolean} - */ -function modalDiscardDisabled({ patchLoading, patchHasChanges, discarding } = {}) { - return Boolean(patchLoading || discarding || !patchHasChanges); -} - /** * Whether a discard may run at all right now. The same states that block * starting a trunk update block a discard, and for the same reason: both @@ -149,4 +137,28 @@ function discardBlocked({ isUpdating, installing, building, devServerActive, dis return Boolean(isUpdating || installing || building || devServerActive || discarding); } -module.exports = { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, modalDiscardDisabled, discardBlocked, DISCARD_CONFIRM_MESSAGE }; +/** + * The explanation shown when the modal's discard action is unavailable. + * + * One operation can leave several guards true while state settles. Report the + * action already underway first, then the transient patch state, and finally + * the process the contributor can stop or wait for. + * + * @param {{patchLoading?: boolean, patchLoadFailed?: boolean, patchHasChanges?: boolean, + * isUpdating?: boolean, installing?: boolean, building?: boolean, + * devServerActive?: boolean, discarding?: boolean}} state + * @return {string|null} + */ +function discardDisabledReason({ patchLoading, patchLoadFailed, patchHasChanges, isUpdating, installing, building, devServerActive, discarding } = {}) { + if (discarding) return 'Changes are already being discarded.'; + if (patchLoading) return 'Wait for your changes to finish loading.'; + if (patchLoadFailed) return 'Changes could not be loaded.'; + if (!patchHasChanges) return 'There are no changes to discard.'; + if (isUpdating) return 'Wait for the trunk update to finish before discarding changes.'; + if (installing) return 'Wait for the installation to finish before discarding changes.'; + if (building) return 'Wait for the build to finish before discarding changes.'; + if (devServerActive) return 'Stop the dev server before discarding changes.'; + return null; +} + +module.exports = { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, discardBlocked, discardDisabledReason, DISCARD_CONFIRM_MESSAGE }; diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 593a73f..71fb6dc 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -15,7 +15,8 @@ import { SnackbarList, TextControl, TextareaControl, - Spinner + Spinner, + Tooltip } from '@wordpress/components'; import { plus, chevronLeft, chevronRight, chevronDown, copy as copyIcon, check as checkIcon, edit, download, comment } from '@wordpress/icons'; import '@wordpress/components/build-style/style.css'; @@ -46,7 +47,7 @@ import { describeSwitchProgress } from '../switch-progress.cjs'; import { highlightDiff, hasDiffLines } from './diff-highlight.cjs'; import { highlightLog } from './log-highlight.cjs'; import { carryTestMode } from './github-account.cjs'; -import { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, modalDiscardDisabled, discardBlocked, DISCARD_CONFIRM_MESSAGE } from './changes-note.cjs'; +import { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, discardBlocked, discardDisabledReason, DISCARD_CONFIRM_MESSAGE } from './changes-note.cjs'; import { initialConfirmations, confirmationReducer, prConfirmationMessage } from './confirmations.cjs'; const TERMINAL_ALLOWED_SCRIPTS = ['build', 'build:dev', 'dev', 'test', 'watch', 'grunt']; @@ -69,6 +70,28 @@ const COPY_BUTTON_LABELS = { copied: 'Copied', failed: 'Could not copy' }; + +// One discard action, wherever it is offered. Keeping the disabled rendering +// here means the ticket note cannot lose the explanation while the review +// modal keeps it (or vice versa). +function DiscardChangesLink({ label, onClick, reason, style }) { + if (!reason) { + return ; + } + return ( + + + + ); +} // What the app is doing while a pull request is being opened (#167). Each step // is named because they take visibly different amounts of time — forking is the // slow one, and an unlabelled spinner there reads as a hang. @@ -1212,6 +1235,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit const [isPatchOpen, setIsPatchOpen] = useState(false); const [patchText, setPatchText] = useState(''); const [patchLoading, setPatchLoading] = useState(false); + const [patchLoadFailed, setPatchLoadFailed] = useState(false); // What the last save did, reported in the modal rather than in an alert: // the destination panel is where the contributor is looking, and the path // matters — it is the file they are about to upload or hand over (#166). @@ -3369,11 +3393,16 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // after a discard is the "nothing to send" banner. const loadPatchText = async () => { setPatchLoading(true); + setPatchLoadFailed(false); try { const res = await window.api.getPatch(sitePath); if (res && res.ok) setPatchText((res.patch && res.patch.trim().length) ? res.patch : 'No changes.'); - else setPatchText(res && res.error ? `Error: ${res.error}` : 'Failed to generate patch'); + else { + setPatchLoadFailed(true); + setPatchText(res && res.error ? `Error: ${res.error}` : 'Failed to generate patch'); + } } catch (e) { + setPatchLoadFailed(true); setPatchText(`Error: ${e && e.message ? e.message : String(e)}`); } finally { setPatchLoading(false); @@ -3383,6 +3412,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit const openPatchModal = async ()=>{ setIsPatchOpen(true); setPatchText(''); + setPatchLoadFailed(false); // Last time's outcome belongs to last time's patch. setPatchSaved(null); setPatchSaveError(''); @@ -3441,7 +3471,18 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit {changesNote.lead} {changesNote.middle} - + {changesNote.end} {discardError ?
{discardError}
: null} @@ -3480,6 +3521,16 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit const patchHasChanges = Boolean(patchText) && hasDiffLines(patchText) && !patchText.startsWith('Error'); + const modalDiscardReason = discardDisabledReason({ + patchLoading, + patchLoadFailed, + patchHasChanges, + isUpdating, + installing, + building, + devServerActive: isDevProcessActive, + discarding + }); // Saving the file, for every destination that needs one (#166). `handoff` // asks the main process for the provenance header and the name that carries @@ -5212,13 +5263,12 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit {tracTicket ? `Your changes for ticket #${tracTicket}` : 'Your changes'} {'('} - + /> {')'}
diff --git a/test/changes-note.test.cjs b/test/changes-note.test.cjs index bbde59c..2c2c614 100644 --- a/test/changes-note.test.cjs +++ b/test/changes-note.test.cjs @@ -3,14 +3,16 @@ // DOM; index.jsx only interleaves the parts with its two link buttons. const test = require('node:test'); const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); const { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, - modalDiscardDisabled, discardBlocked, + discardDisabledReason, DISCARD_CONFIRM_MESSAGE } = require('../src/renderer/changes-note.cjs'); @@ -162,16 +164,6 @@ test('noteAfterProbe clears an old count when the base cannot be measured (#308) { dirty: true, changedCount: 2 } ); }); - -test('modalDiscardDisabled frees the link only for a loaded diff with changes', () => { - assert.equal(modalDiscardDisabled({ patchLoading: false, patchHasChanges: true, discarding: false }), false); - assert.equal(modalDiscardDisabled({ patchLoading: true, patchHasChanges: true, discarding: false }), true); - assert.equal(modalDiscardDisabled({ patchLoading: false, patchHasChanges: false, discarding: false }), true); - assert.equal(modalDiscardDisabled({ patchLoading: false, patchHasChanges: true, discarding: true }), true); - assert.equal(modalDiscardDisabled({}), true); - assert.equal(modalDiscardDisabled(), true); -}); - test('discardBlocked holds the discard while anything is rewriting the tree', () => { // The same states that block starting a trunk update: a force checkout // under a running install, build or dev server corrupts both. @@ -181,3 +173,28 @@ test('discardBlocked holds the discard while anything is rewriting the tree', () assert.equal(discardBlocked({ [flag]: true }), true, flag); } }); + +test('discardDisabledReason explains every state that makes discard unavailable', () => { + assert.equal(discardDisabledReason({ patchLoading: true, patchHasChanges: true }), 'Wait for your changes to finish loading.'); + assert.equal(discardDisabledReason({ patchLoadFailed: true, patchHasChanges: false }), 'Changes could not be loaded.'); + assert.equal(discardDisabledReason({ patchHasChanges: false }), 'There are no changes to discard.'); + assert.equal(discardDisabledReason({ patchHasChanges: true, discarding: true }), 'Changes are already being discarded.'); + assert.equal(discardDisabledReason({ patchHasChanges: true, isUpdating: true }), 'Wait for the trunk update to finish before discarding changes.'); + assert.equal(discardDisabledReason({ patchHasChanges: true, installing: true }), 'Wait for the installation to finish before discarding changes.'); + assert.equal(discardDisabledReason({ patchHasChanges: true, building: true }), 'Wait for the build to finish before discarding changes.'); + assert.equal(discardDisabledReason({ patchHasChanges: true, devServerActive: true }), 'Stop the dev server before discarding changes.'); + assert.equal(discardDisabledReason({ patchHasChanges: true }), null); +}); + +test('discardDisabledReason reports the operation in progress before secondary blockers', () => { + assert.equal( + discardDisabledReason({ patchLoading: true, patchHasChanges: false, discarding: true, devServerActive: true }), + 'Changes are already being discarded.' + ); +}); + +test('both visible discard links use the shared explanatory control', () => { + const source = fs.readFileSync(path.join(__dirname, '..', 'src', 'renderer', 'index.jsx'), 'utf8'); + const uses = source.match(/ Date: Thu, 13 Aug 2026 10:42:02 +0200 Subject: [PATCH 21/53] Clear resolved patch errors after discard (#331) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why After a contributor chooses **Discard this ticket to its base** from a failed Revert, the discard succeeds but the old red patch error remains on screen. The checkout is clean, yet the interface still claims the operation failed. The original #325 belonged to the stale stack that GitHub closed while #324 was being recovered, so this PR lands the already approved fix directly on `trunk`. ## What changes After a successful discard, clear the stale apply error and related preview state. If discard fails, retain all of that state so the contributor can still understand and recover from the failure. ## How to test this **Platforms:** macOS and Windows. **Starting state:** ticket #65819 linked, PR #13017 applied, with this contributor edit on an applied line in `tests/phpunit/tests/customize/widgets.php`: ```php $this->assertIsCallable( $args['sanitize_callback'], 'sanitize_callback is callable' ); // Mi cambio. ``` 1. Click **Revert this patch**. Revert must be rejected, the checkout must remain unchanged, and the red error must offer **Save a copy of your work** and **Discard this ticket to its base**. 2. Click **Discard this ticket to its base**. 3. The applied PR, contributor edit, applied-layer card, and red error must all disappear. Ticket #65819 must remain linked. **What must not have happened:** - A failed discard must not clear the error or preview state. - The ticket itself must not be unlinked. - No unrelated ticket work may be removed. This flow passed in the approved integration artifact at commit `012d7df` on macOS and Windows. ## Risks and limitations The final Git tree is exactly the tree manually approved for the release candidate. Self-review: 0 [fix here] · 0 [follow-up]. ## Related Replacement landing for #325. Follow-up to #318 and #330. ---
Design decisions and alternatives considered The cleanup is derived in the existing pure reducer and only committed after `outcome.ok`. Keeping failure state unchanged avoids hiding recovery information after an unsuccessful destructive operation. A standalone PR avoids reusing the closed stack topology that caused #324 not to land on `trunk`.
Review outcome (required — see AGENTS.md) 0 [fix here] · 0 [follow-up]. Lint, 1010/1010 tests, and `git diff --check` pass. The branch resolves to approved tree `d3904782d5e434df8591e99d3ccf2a49a52ebcc9`.
Implementation notes Recovery head before squash: `6a88a26`. It contains one commit directly on #330's squash commit.
Screenshots or recording The user-visible flow was manually validated on both target platforms in the approved integration artifact.
--- src/renderer/changes-note.cjs | 16 +++++++++++++++- src/renderer/index.jsx | 8 ++++++-- test/discard-apply-state.test.cjs | 29 +++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 test/discard-apply-state.test.cjs diff --git a/src/renderer/changes-note.cjs b/src/renderer/changes-note.cjs index cc2dbeb..c0179a2 100644 --- a/src/renderer/changes-note.cjs +++ b/src/renderer/changes-note.cjs @@ -83,6 +83,20 @@ function discardOutcome(res) { return { ok: false, message: `Failed to discard changes: ${res && res.error ? res.error : 'Unknown error'}` }; } +/** + * Apply-related feedback after attempting the destructive exit from a ticket. + * A failure preserves the layer and the error that explains why it remains; + * success clears both because the ticket is back at its base. + * + * @param {{ok?: boolean}} outcome The discard result. + * @param {*} current The apply feedback currently on screen. + * @return {*} + */ +function applyFeedbackAfterDiscard(outcome, current) { + if (!outcome || !outcome.ok) return current; + return { appliedPatch: null, applyError: '', applyConflict: null, applyNotice: '' }; +} + /** * What the note shows in the frame straight after a discard, before any probe * has walked the checkout again. @@ -161,4 +175,4 @@ function discardDisabledReason({ patchLoading, patchLoadFailed, patchHasChanges, return null; } -module.exports = { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, discardBlocked, discardDisabledReason, DISCARD_CONFIRM_MESSAGE }; +module.exports = { changesNoteParts, discardOutcome, applyFeedbackAfterDiscard, noteAfterDiscard, noteAfterProbe, discardBlocked, discardDisabledReason, DISCARD_CONFIRM_MESSAGE }; diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 71fb6dc..39c5b08 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -47,7 +47,7 @@ import { describeSwitchProgress } from '../switch-progress.cjs'; import { highlightDiff, hasDiffLines } from './diff-highlight.cjs'; import { highlightLog } from './log-highlight.cjs'; import { carryTestMode } from './github-account.cjs'; -import { changesNoteParts, discardOutcome, noteAfterDiscard, noteAfterProbe, discardBlocked, discardDisabledReason, DISCARD_CONFIRM_MESSAGE } from './changes-note.cjs'; +import { changesNoteParts, discardOutcome, applyFeedbackAfterDiscard, noteAfterDiscard, noteAfterProbe, discardBlocked, discardDisabledReason, DISCARD_CONFIRM_MESSAGE } from './changes-note.cjs'; import { initialConfirmations, confirmationReducer, prConfirmationMessage } from './confirmations.cjs'; const TERMINAL_ALLOWED_SCRIPTS = ['build', 'build:dev', 'dev', 'test', 'watch', 'grunt']; @@ -3456,7 +3456,11 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit return; } applyDiscardToNote(outcome); - setAppliedPatch(null); + const feedback = applyFeedbackAfterDiscard(outcome); + setAppliedPatch(feedback.appliedPatch); + setApplyError(feedback.applyError); + setApplyConflict(feedback.applyConflict); + setApplyNotice(feedback.applyNotice); writeToTerminal('\nDiscarded local changes.\n'); confirm('All changes discarded.'); if (isPatchOpen) await loadPatchText(); diff --git a/test/discard-apply-state.test.cjs b/test/discard-apply-state.test.cjs new file mode 100644 index 0000000..a347957 --- /dev/null +++ b/test/discard-apply-state.test.cjs @@ -0,0 +1,29 @@ +'use strict'; + +const test = require('node:test'); +const assert = require('node:assert/strict'); +const { applyFeedbackAfterDiscard } = require('../src/renderer/changes-note.cjs'); + +test('a successful discard clears the apply failure it resolved', () => { + assert.deepEqual(applyFeedbackAfterDiscard({ ok: true }, { + appliedPatch: { label: 'PR #13017' }, + applyError: 'The patch could not be lifted back out.', + applyConflict: { headline: '1 change needs rework' }, + applyNotice: 'Older notice' + }), { + appliedPatch: null, + applyError: '', + applyConflict: null, + applyNotice: '' + }); +}); + +test('a failed discard preserves the failure the contributor still needs', () => { + const current = { + appliedPatch: { label: 'PR #13017' }, + applyError: 'The patch could not be lifted back out.', + applyConflict: { headline: '1 change needs rework' }, + applyNotice: '' + }; + assert.strictEqual(applyFeedbackAfterDiscard({ ok: false }, current), current); +}); From ecb929fdac95dbb75a08889dd731aafd3fd8ac82 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 12:22:41 +0200 Subject: [PATCH 22/53] Clarify Codex review instructions --- AGENTS.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 389de3e..1349b01 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -30,6 +30,11 @@ convention), add a wrapper there or skip it entirely and follow the instructions where all the content lives. The wrapper only adds two things: run the judgement pass in a fresh context, and report without touching GitHub. +In Codex, `/review` is the built-in user-facing review command. Whenever `/review` runs, read and +follow [`.github/instructions/code-review.instructions.md`](.github/instructions/code-review.instructions.md) +in full as the review standard. `self-review` is the local skill name, not a Codex command; do not +tell users to invoke `self-review`. + There is deliberately no per-tool copy of the *standard*. A wrapper is a few lines that defer to it; duplicating the standard itself is the thing to avoid — if you find yourself doing that, fix the pointer, not the number of copies. From 4454a14269214e563f693f8c9a407f5085dad732 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 12:26:23 +0200 Subject: [PATCH 23/53] Preserve requested issue closure outcomes --- AGENTS.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 1349b01..56988ff 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -53,6 +53,10 @@ Run the review in `.github/instructions/code-review.instructions.md` against the consciously defer every finding. Summarise the outcome in the pull request description — counts, what was fixed, what was left as a follow-up and why. +When a user explicitly asks to close an issue as solved by a pull request, preserve that requested +classification and close it as completed. Do not silently reinterpret it as “not planned” based on +whether the pull request was merged; raise that concern before changing the requested outcome. + Nothing enforces this. There is no automated review on pull requests, by design: it would mean storing an AI provider credential as a secret in a public repository. This pass is what stands in its place, so skipping it means a human reviewer is the first reader of the diff. From 1ea9206f389acb0075ae6823764dfbe2fbdad95f Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 12:30:08 +0200 Subject: [PATCH 24/53] Remove issue closure instruction --- AGENTS.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 56988ff..1349b01 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -53,10 +53,6 @@ Run the review in `.github/instructions/code-review.instructions.md` against the consciously defer every finding. Summarise the outcome in the pull request description — counts, what was fixed, what was left as a follow-up and why. -When a user explicitly asks to close an issue as solved by a pull request, preserve that requested -classification and close it as completed. Do not silently reinterpret it as “not planned” based on -whether the pull request was merged; raise that concern before changing the requested outcome. - Nothing enforces this. There is no automated review on pull requests, by design: it would mean storing an AI provider credential as a secret in a public repository. This pass is what stands in its place, so skipping it means a human reviewer is the first reader of the diff. From 608391742ee81800c6194bb0157f3a0fd4925f7e Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 12:30:30 +0200 Subject: [PATCH 25/53] Prevent submitting an applied patch as your own work (#332) Block attributed or published submission while another patch or pull request remains applied, while preserving an unattributed backup Save.\n\nFixes #328. --- src/main.js | 39 +++++++++++++++++++++++-- src/renderer/index.jsx | 29 +++++++++++++++---- test/ipc-wiring.test.cjs | 61 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 9 deletions(-) diff --git a/src/main.js b/src/main.js index d94c179..8357f49 100644 --- a/src/main.js +++ b/src/main.js @@ -651,12 +651,17 @@ ipcMain.handle('git:create-patch', async (_e, sitePath) => { // `{ handoff: true }` is the only difference: the file gets the header from // patch-provenance.cjs and a name that says whose work it is, so someone else // can push it and the props still land on the person who wrote it. Every other -// caller — the Trac destination, the save-before-update prompt — passes nothing -// and gets the bare diff under the name it has always had, because that is what -// gets attached to a ticket. +// Trac names its destination so the ownership guard can distinguish a file for +// submission from an ordinary backup. Both it and the save-before-update path +// still get the bare diff under the name it has always had. ipcMain.handle('git:save-patch', async (_e, sitePath, options) => { try { const handoff = Boolean(options && options.handoff); + const submission = handoff || (options && options.destination === 'trac'); + if (submission) { + const refusal = await appliedPatchSubmissionRefusal(sitePath); + if (refusal) return refusal; + } const baseOid = await patchBaseOid(sitePath); const patch = await createMinimalPatchForDir(sitePath, baseOid); @@ -820,6 +825,8 @@ ipcMain.handle('github:open-pr', async (event, sitePath, options = {}) => { if (!ticketId) { return { ok: false, reason: 'no-ticket', error: 'Link a Trac ticket to this site first.', stage: 'auth' }; } + const ownershipRefusal = await appliedPatchSubmissionRefusal(sitePath); + if (ownershipRefusal) return { ...ownershipRefusal, stage: 'ownership' }; const { wporgHandle: handle = null, contributionEvent = null } = s.get('preferences') || {}; let collected; @@ -1090,6 +1097,32 @@ async function readWorkMeta(sitePath) { return ref === TRUNK || !meta ? site : meta; } +/** + * Refuse to publish a checkout that still contains a named patch layer (#328). + * + * The diff against the ticket's base contains both that layer and any edits + * made after it. There is no honest single owner for that combined diff, and + * the app cannot separate the two safely. An ordinary, unattributed Save is + * deliberately not routed through this guard: it remains available as the + * backup contributors are told to make before reverting or discarding work. + * + * @param {string} sitePath + * @return {Promise} + */ +async function appliedPatchSubmissionRefusal(sitePath) { + const appliedPatch = (await readWorkMeta(sitePath)).appliedPatch; + if (!appliedPatch) return null; + + const label = typeof appliedPatch.label === 'string' && appliedPatch.label.trim() + ? appliedPatch.label.trim() + : 'The patch you applied'; + return { + ok: false, + reason: 'applied-patch', + error: `${label} is applied. Revert it before submitting this checkout as your own work.` + }; +} + async function writeWorkMeta(sitePath, patch) { const { ref, meta } = await activeBranch(sitePath); if (ref === TRUNK || !meta) return mergeSiteMeta(sitePath, patch); diff --git a/src/renderer/index.jsx b/src/renderer/index.jsx index 39c5b08..646491c 100644 --- a/src/renderer/index.jsx +++ b/src/renderer/index.jsx @@ -2769,6 +2769,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit const appliedLayer = describeAppliedLayer(appliedPatch, { when: appliedPatch?.appliedAt ? new Date(appliedPatch.appliedAt).toLocaleString() : '' }); + const appliedPatchLabel = appliedPatch?.label || 'The patch you applied'; const previewAttribution = attributeConflicts({ conflicts: applyPreview?.conflicts, appliedPatch }); // The layer exits reach the same two operations the changes note does, so // they go through the same guard: a discard is a force checkout, and running @@ -3538,9 +3539,10 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // Saving the file, for every destination that needs one (#166). `handoff` // asks the main process for the provenance header and the name that carries - // the handle; without it this is the plain diff the Save button has always - // produced. Returns the path so a caller can say what it did next — the Trac - // route saves and then opens the attach page. + // the handle; `destination: 'trac'` keeps the diff plain but lets main enforce + // the same applied-layer guard as the UI. With no options this is the backup + // the Save button has always produced. Returns the path so a caller can say + // what it did next — the Trac route saves and then opens the attach page. const savePatchFile = async (options) => { setPatchSaved(null); setPatchSaveError(''); @@ -3570,7 +3572,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // The page is opened only after a file exists, so the browser never lands on // an attach form with nothing to attach. const saveForTrac = async () => { - const filePath = await savePatchFile(); + const filePath = await savePatchFile({ destination: 'trac' }); if (filePath && tracTicket) window.api.openExternal(attachUrl(tracTicket)); }; @@ -3684,6 +3686,14 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit // deep and unreadable at the point where the wording matters most, so the // states get early returns and the card body gets one call. const renderPullRequestBody = () => { + if (appliedPatch) { + return ( +
+ Revert {appliedPatchLabel} before opening a pull request from this checkout. +
+ ); + } + if (prResult) { return ( <> @@ -5353,6 +5363,13 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit
The pull request is the one the app sends for you. The other two save a file for you to send.
+ {appliedPatch ? ( +
+ {appliedPatchLabel} is part of this checkout.{' '} + The app cannot safely separate its author’s changes from edits made afterward, so this combined patch cannot be submitted as your work. You can still use Save to keep an unattributed copy; revert the applied patch before submitting. +
+ ) : null} + {/* Alone in its own group, because it is the one destination that acts for the contributor: it signs them in, forks, and @@ -5409,7 +5426,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit after="No automated checks. Often followed by a request to open a pull request." > {tracTicket ? ( - ) : ( @@ -5447,7 +5464,7 @@ function SiteRow({ sitePath, initialized, createdAt, label, onInitialized, onSit > {wporg?.handle && !editingHandle ? ( <> - {/* diff --git a/test/ipc-wiring.test.cjs b/test/ipc-wiring.test.cjs index 890b758..5602d62 100644 --- a/test/ipc-wiring.test.cjs +++ b/test/ipc-wiring.test.cjs @@ -1287,6 +1287,35 @@ test('git:save-patch with handoff writes the header above the diff, and it still assert.deepEqual(parsed.files.map((f) => f.path), ['text.txt']); }); +// An applied pull request is a named layer, not the current contributor's +// work. The app cannot split later edits out of that layer reliably, so it may +// save the combined checkout as an unattributed backup but must not prepare it +// for submission under a new owner (#328). +test('git:save-patch refuses submission destinations while a patch is applied, but still saves a copy (#328)', async (t) => { + const dir = await fixtureRepo(t); + const settings = fakeSettingsStore({ + sites: [dir], + siteMeta: { [dir]: { tracTicket: 62281, appliedPatch: { label: 'PR #6717', text: 'STORED' } } }, + preferences: { wporgHandle: 'janedoe' } + }); + const main = loadMain({ stubs: { ...silentLogging(), ...settings.stubs } }); + + const handoff = await main.invoke('git:save-patch', dir, { handoff: true }); + const trac = await main.invoke('git:save-patch', dir, { destination: 'trac' }); + + assert.deepEqual(handoff, { + ok: false, + reason: 'applied-patch', + error: 'PR #6717 is applied. Revert it before submitting this checkout as your own work.' + }); + assert.deepEqual(trac, handoff); + assert.deepEqual(main.calls.showSaveDialog, [], 'a refused submission must not create a file'); + + const copy = await main.invoke('git:save-patch', dir); + assert.equal(copy.canceled, true); + assert.equal(main.calls.showSaveDialog.length, 1, 'an unattributed backup remains available'); +}); + // --- provenance:* -> src/wporg-handle.cjs + src/patch-provenance.cjs (#166) --- // The handle becomes a filename and a line in a file other people read, so it @@ -3773,6 +3802,38 @@ test('github:open-pr refuses before it reaches GitHub when nothing is signed in, assert.deepEqual(openPullRequest.calls, []); }); +test('github:open-pr refuses another author\'s applied patch before it reaches GitHub (#328)', async (t) => { + const dir = await fixtureRepo(t); + const auth = fakeGithubAuth({ login: 'janedoe' }); + const openPullRequest = spy(async () => ({ ok: true })); + const settings = fakeSettingsStore({ + sites: [dir], + siteMeta: { [dir]: { tracTicket: 62281, appliedPatch: { label: 'PR #6717', text: 'STORED' } } } + }); + const main = loadMain({ + stubs: { + ...silentLogging(), + ...settings.stubs, + './github-auth.cjs': auth, + './github-pr.cjs': { openPullRequest, buildPullRequestBody: () => '' } + } + }); + + await main.invokeWith('github:sign-in', createIpcEvent()); + await settle(); + await settle(); + + const result = await main.invoke('github:open-pr', dir, {}); + + assert.deepEqual(result, { + ok: false, + reason: 'applied-patch', + error: 'PR #6717 is applied. Revert it before submitting this checkout as your own work.', + stage: 'ownership' + }); + assert.deepEqual(openPullRequest.calls, []); +}); + test('github:open-pr forgets a revoked authorization rather than keep offering it', async (t) => { const dir = await fixtureRepo(t); const auth = fakeGithubAuth(); From 25bf3065dc8fbbffabe82cb5d984b0d820eb0cb2 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 12:30:58 +0200 Subject: [PATCH 26/53] Verify final GitHub workflow states --- AGENTS.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index 1349b01..4dedb4f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -53,6 +53,10 @@ Run the review in `.github/instructions/code-review.instructions.md` against the consciously defer every finding. Summarise the outcome in the pull request description — counts, what was fixed, what was left as a follow-up and why. +Before reporting a GitHub workflow complete, verify every requested final state on GitHub — for +example, distinguish a merged pull request from one that is merely closed, and confirm that an +issue was closed by the intended pull request rather than only by a comment. + Nothing enforces this. There is no automated review on pull requests, by design: it would mean storing an AI provider credential as a secret in a public repository. This pass is what stands in its place, so skipping it means a human reviewer is the first reader of the diff. From bf0eea9e27827cd694e5109199db595986c8dece Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 12:36:46 +0200 Subject: [PATCH 27/53] Fix missing linked PRs and stalled Trac loads (#333) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Ticket #56320 has an open WordPress/wordpress-develop pull request, but the toolkit reports that no pull requests cite it. The same ticket can also leave the automatic Trac patch load spinning indefinitely, making existing work look absent to a contributor. ## What changes The GitHub result filter now accepts the historical, explicitly labelled `Trac ticket: 56320` citation format as well as the current full Trac URL, while continuing to reject incidental number mentions and longer ticket numbers. The existing 90-second Trac deadline now covers the initial Electron navigation as well as the human-check polling. A navigation that never finishes therefore reaches the existing timeout state and cleans up its hidden window instead of leaving the renderer waiting forever. ## How to test this Platforms: macOS was tested manually. Windows should also be checked because #327 was reported on Windows 11 and the timeout symptom occurred there. **Starting state:** A configured site on the site view, with no Trac ticket linked. 1. Enter `56320` in **Trac ticket** and click **Link ticket**. The app automatically starts both the GitHub and Trac checks. 2. Confirm **Linked pull requests** shows **#3139 — Updated mediaelement.js to 5.0.5** instead of “No pull requests cite this ticket yet.” 3. Confirm the automatic **Opening the ticket on Trac…** operation completes and the spinner disappears. Complete the Trac human-check if it appears. 4. As a control, unlink the ticket, link `61330`, and confirm its two full-URL-citing pull requests still appear. 5. Run `npm test` and `npm run lint`. The regression tests for the historical citation and stalled navigation pass; the full suite reports 1,014 passing tests. **What must not have happened:** An unrelated mention of `56320` must not be treated as a citation, ticket `563200` must not match, the Trac spinner must not remain indefinitely, and no site work or dependencies should be changed by linking either ticket. ## Risks and limitations The exact never-settling navigation could not be staged manually; it is covered by a BrowserWindow regression test that fails against the old implementation. The shared 90-second budget now includes initial navigation, so an unusually slow navigation leaves less time for the subsequent human-check. No UI layout changed, so there are no before/after screenshots. ## Related Fixes #327 ---
Design decisions and alternatives considered The matcher was not broadened to accept any bare occurrence of the ticket number because GitHub search can return incidental mentions. Only a line explicitly labelled `Trac ticket:` is accepted. The timeout retains the existing `challenge-timeout` result and UI instead of adding a second navigation-specific state. From the contributor's perspective the recovery is the same: retry the Trac load and complete the human-check if necessary.
Review outcome (required — see AGENTS.md) 0 [fix here] · 0 [follow-up]. No findings across architecture, security, performance, cross-platform, or tests. `npm run lint`, `npm test` (1,014 tests), and `git diff --check` all passed.
Implementation notes The Trac timeout uses one absolute deadline across `loadURL()` and the existing DOM poll. The test injects a short timeout and a BrowserWindow whose navigation promise never settles, then verifies both the timeout result and window cleanup. The repository's manual-testing guidance was also clarified after testing confirmed that Trac patch loading starts automatically when a ticket is linked; the button is a retry/refresh path rather than the initial action.
--- AGENTS.md | 4 +++ src/patch-sources.cjs | 13 ++++++--- src/trac-view.js | 33 ++++++++++++++++++++--- test/patch-sources.test.cjs | 12 ++++++++- test/trac-view.test.cjs | 53 +++++++++++++++++++++++++++++++++++++ 5 files changed, 107 insertions(+), 8 deletions(-) create mode 100644 test/trac-view.test.cjs diff --git a/AGENTS.md b/AGENTS.md index 4dedb4f..f3c6712 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -127,6 +127,10 @@ see [`CONTRIBUTING.md`](CONTRIBUTING.md). It points back here; it does not resta See `package.json` scripts. To run a single test file (not exposed as a script): `node --test test/azure-sign.test.cjs`. +When writing manual test instructions, inspect the current renderer flow first and distinguish +actions that happen automatically after linking a ticket from controls used only to retry or +refresh them. Do not tell a tester to click a control when the app already starts that operation. + ## Architecture notes (non-obvious) - **Child processes run on Electron's own Node, not the system Node.** `npm install`, diff --git a/src/patch-sources.cjs b/src/patch-sources.cjs index 6e6eb6e..e934f58 100644 --- a/src/patch-sources.cjs +++ b/src/patch-sources.cjs @@ -55,9 +55,13 @@ function parsePrRef(input) { } /** - * True when a PR body cites this exact ticket. The negative lookahead stops - * `/ticket/6582` from matching inside `/ticket/65820`, and the host is required - * so a bare "#65822" in prose does not count. + * True when a PR body cites this exact ticket. Current pull request templates + * use the full Trac URL; older ones used a labelled bare number (#327), so that + * explicitly labelled form counts too. An unlabelled number still does not: + * GitHub search can surface it from unrelated prose or comments. + * + * The negative lookaheads stop either accepted form from matching a longer + * ticket number that merely starts with the requested digits. * * @param {string} body * @param {number|string} ticketId @@ -68,7 +72,8 @@ function bodyCitesTicket(body, ticketId) { const id = String(ticketId).replace(/[^0-9]/g, ''); if (!id) return false; const re = new RegExp(`${TICKET_HOST.replace(/\./g, '\\.')}/ticket/${id}(?![0-9])`); - return re.test(body); + const labelledNumber = new RegExp(`(?:^|[\\r\\n])[ \\t]*Trac[ \\t]+ticket[ \\t]*:[ \\t]*#?${id}(?![0-9])`, 'i'); + return re.test(body) || labelledNumber.test(body); } /** diff --git a/src/trac-view.js b/src/trac-view.js index 72d3696..4298d29 100644 --- a/src/trac-view.js +++ b/src/trac-view.js @@ -32,6 +32,25 @@ const USER_AGENT = 'WordPress-Contributor-Toolkit (+https://github.com/WordPress const READY_TIMEOUT_MS = 90000; const POLL_MS = 800; +/** + * Whether a promise resolves before an absolute deadline. Rejections remain + * rejections so the caller can report navigation failures separately from a + * page that simply never finishes loading. + * + * @param {Promise} promise + * @param {number} deadline Unix time in milliseconds. + * @return {Promise} + */ +function resolvesBy(promise, deadline) { + let timer; + return Promise.race([ + Promise.resolve(promise).then(() => true), + new Promise((resolve) => { + timer = setTimeout(() => resolve(false), Math.max(0, deadline - Date.now())); + }) + ]).finally(() => clearTimeout(timer)); +} + function ticketUrl(id) { return `https://${TRAC_HOST}/ticket/${id}`; } @@ -61,11 +80,14 @@ function pinToTrac(wc) { * challenge needs the user), scrapes the attachment list, and closes. * * @param {number|string} ticketId + * @param {Object} [deps] + * @param {number} [deps.readyTimeoutMs] Override for tests. * @return {Promise<{status: string, items: Array, error?: string}>} */ -async function openAndScrape(ticketId) { +async function openAndScrape(ticketId, deps = {}) { const id = String(ticketId).replace(/[^0-9]/g, ''); if (!id) return { status: 'error', items: [], error: 'No ticket number' }; + const readyTimeoutMs = Number.isFinite(deps.readyTimeoutMs) ? Math.max(0, deps.readyTimeoutMs) : READY_TIMEOUT_MS; const tracSession = session.fromPartition(TRAC_PARTITION); const win = new BrowserWindow({ @@ -91,12 +113,17 @@ async function openAndScrape(ticketId) { }; try { - await win.loadURL(ticketUrl(id)); + // The deadline covers navigation as well as the challenge poll. Electron's + // loadURL promise resolves only after the page finishes loading, so putting + // the deadline after this await left a stalled navigation spinning forever + // (#327). + const deadline = Date.now() + readyTimeoutMs; + const loaded = await resolvesBy(win.loadURL(ticketUrl(id)), deadline); + if (!loaded) return { status: 'challenge-timeout', items: [] }; // Poll until the real ticket page is present. The challenge page has no // #ticket; when the hashcash (or the user) clears it, Trac reloads to // the real page and #ticket appears. - const deadline = Date.now() + READY_TIMEOUT_MS; let ready = false; while (Date.now() < deadline) { if (win.isDestroyed()) return { status: 'closed', items: [] }; diff --git a/test/patch-sources.test.cjs b/test/patch-sources.test.cjs index 49f2902..394b463 100644 --- a/test/patch-sources.test.cjs +++ b/test/patch-sources.test.cjs @@ -18,13 +18,23 @@ function item(number, overrides = {}) { }; } -test('bodyCitesTicket: the full ticket URL counts, a bare number does not (issue #11)', () => { +test('bodyCitesTicket: the full ticket URL counts, an unlabelled bare number does not (issue #11)', () => { assert.strictEqual(bodyCitesTicket('see https://core.trac.wordpress.org/ticket/62281 for context', 62281), true); assert.strictEqual(bodyCitesTicket('this is about #62281 somewhere', 62281), false); assert.strictEqual(bodyCitesTicket('', 62281), false); assert.strictEqual(bodyCitesTicket(null, 62281), false); }); +// Older wordpress-develop pull request templates asked for a ticket number, +// not its full URL. PR #3139 still follows that format and must not disappear +// from ticket #56320 merely because today's template is stricter. +test('bodyCitesTicket: a labelled bare ticket number counts (issue #327)', () => { + assert.strictEqual(bodyCitesTicket('Updated mediaelement.js\nTrac ticket: 56320', 56320), true); + assert.strictEqual(bodyCitesTicket('Trac ticket: #56320', 56320), true); + assert.strictEqual(bodyCitesTicket('unrelated work mentions 56320 in passing', 56320), false); + assert.strictEqual(bodyCitesTicket('Trac ticket: 563200', 56320), false); +}); + // The precision bug the URL check exists to prevent: GitHub's tokeniser can // surface a PR for a longer number that starts with the same digits. test('bodyCitesTicket: a longer ticket number is not a match (issue #11)', () => { diff --git a/test/trac-view.test.cjs b/test/trac-view.test.cjs new file mode 100644 index 0000000..a7a9745 --- /dev/null +++ b/test/trac-view.test.cjs @@ -0,0 +1,53 @@ +'use strict'; + +const test = require('node:test'); +const assert = require('node:assert/strict'); +const Module = require('node:module'); + +function loadTracView(electron) { + const originalLoad = Module._load; + Module._load = function (request, parent, isMain) { + if (request === 'electron') return electron; + return originalLoad.call(this, request, parent, isMain); + }; + try { + delete require.cache[require.resolve('../src/trac-view.js')]; + return require('../src/trac-view.js'); + } finally { + Module._load = originalLoad; + } +} + +test('openAndScrape: a navigation that never finishes still reaches the ready timeout (issue #327)', async () => { + let destroyed = false; + class BrowserWindowStub { + constructor() { + this.webContents = { + setWindowOpenHandler() {}, + on() {}, + executeJavaScript() { return Promise.resolve(false); } + }; + } + loadURL() { return new Promise(() => {}); } + isDestroyed() { return destroyed; } + destroy() { destroyed = true; } + show() {} + } + + const electron = { + BrowserWindow: BrowserWindowStub, + session: { fromPartition: () => ({ setUserAgent() {} }) } + }; + const { openAndScrape } = loadTracView(electron); + const harnessTimeout = new Promise((resolve) => { + setTimeout(() => resolve({ status: 'test-harness-timeout' }), 50); + }); + + const result = await Promise.race([ + openAndScrape(56320, { readyTimeoutMs: 5 }), + harnessTimeout + ]); + + assert.equal(result.status, 'challenge-timeout'); + assert.equal(destroyed, true, 'the hidden Trac window is cleaned up after timing out'); +}); From 14f461065b8e1191b87ec4c8fea8366e86be55f9 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 12:49:04 +0200 Subject: [PATCH 28/53] Update the guide for current ticket work (#334) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why The ticket-work batch changed how the app explains ticket bases, applied patches, pull request conflicts, and trunk updates. The guide still described the earlier behavior, which could send a contributor to ask a pull request author for a rebase when their own ticket work was in the way, or imply that updating trunk also refreshed an existing ticket. Fixes #314. ## What changes The guide now distinguishes conflicts involving a contributor's ticket work from pull requests that no longer fit clean trunk. It also describes applied patches as named ticket layers, explains Revert and copy-and-discard recovery, and documents that trunk updates leave existing ticket bases unchanged until the contributor explicitly saves, unlinks, deletes, and relinks the ticket. The troubleshooting page now gives the matching recovery steps for failed applies and work that appears to vanish after a switch or update. No application behavior or visible UI changed. ## How to test this Platforms: any; these are documentation-only changes and the described behavior is platform-independent. **Starting state:** A built site with two linked tickets, work on one ticket, and an open pull request that touches the same file. 1. Follow issue #309's ticket switch, patch preview, apply, Revert, and trunk update flow. Confirm each guide section describes the wording and next action shown by the app. 2. Preview a pull request against a file containing ticket work. Confirm the guide directs the contributor to save a copy and retry on a clean ticket before asking the author to update it. 3. Update trunk while an older ticket is linked. Confirm the guide explains that the ticket keeps its original base and documents the save → unlink → delete → relink path. 4. Run `npm run lint`, `npm test`, and `npm run docs:build`. **What must not have happened:** No guide page should imply that switching loses ticket work, that updating trunk rebases ticket branches, or that every failed pull request needs action from its author. ## Risks and limitations The wording was verified against the current source and behavior-defining tests, but the complete desktop workflow was not driven by hand against a signed artifact in this worktree. Existing screenshots were not retaken because none show the notices or recovery controls whose descriptions changed. `npm ci` currently fails on `trunk` because `package.json` requests esbuild 0.27.7 while the root lockfile does not contain it. Validation used an untracked dependency install without rewriting the lockfile; the mismatch is outside this documentation change. ## Related Fixes #314 ---
Design decisions and alternatives considered This updates only the four pages named in the issue. Existing correct material was retained, and screenshots were left alone where the visible surface did not change.
Review outcome (required — see AGENTS.md) 0 [fix here] · 0 [follow-up]. No findings across architecture, security, performance, cross-platform, or tests. Deterministic checks: ESLint passed; 1,010 tests passed; VitePress built successfully; `git diff --check` passed.
Implementation notes The documentation was checked against the renderer decision modules and tests for issues #301, #303, #305, #306, and #308.
--- docs/guide/applying-patches.md | 20 ++++++++++++++------ docs/guide/ticket-branches.md | 28 +++++++++++++++++++++++++--- docs/guide/troubleshooting.md | 30 ++++++++++++++++++++++++++++++ docs/guide/trunk-updates.md | 8 +++++++- 4 files changed, 76 insertions(+), 10 deletions(-) diff --git a/docs/guide/applying-patches.md b/docs/guide/applying-patches.md index 57b56dc..da3c458 100644 --- a/docs/guide/applying-patches.md +++ b/docs/guide/applying-patches.md @@ -17,7 +17,7 @@ There are three ways to get a patch into the panel: Nothing is changed yet. The panel first shows what the patch would do: - The list of files it changes. -- A warning if you have your own edits to any of those files. The patch is applied on top of them: it succeeds if the changes do not overlap, and fails without touching anything if they do. Save a patch of your work first if you want a copy — see [Submitting your changes](submitting-changes). +- A warning if this ticket already has work in any of those files, measured from the trunk snapshot the ticket started on. The warning names your own edits and changes from an applied patch separately; a file from an applied patch may contain your edits too. The new patch is applied on top of that work: it succeeds if the changes do not overlap, and fails without touching anything if they do. Save a patch of your work first if you want a copy — see [Submitting your changes](submitting-changes). - Which files are binary and will be skipped. - Whether it changes `package-lock.json`, in which case dependencies will be installed before the rebuild. @@ -46,7 +46,11 @@ Every region carries an **anchor line taken from your own file** to search for. ### For a pull request -The regions belong to whoever updates the pull request, and that is its author, not you. So the notice names the situation and its scale — *this pull request was written against an older trunk and no longer fits it: 4 of its 20 changes, in 3 files, would need rework* — without the line-level detail, and points at the one act that is genuinely yours: telling the author. Leaving a comment asking for a rebase is a real contribution. +The panel first separates two situations that need different next steps. + +If the failures are only in files this ticket has not changed, the pull request was written against an older trunk. The notice names the situation and its scale — *this pull request was written against an older trunk and no longer fits it: 4 of its 20 changes, in 3 files, would need rework* — without the line-level detail. Bringing it up to date is its author's work, so the useful contribution is to leave a comment asking for a rebase or for trunk to be merged in. + +If your ticket already has work in a failing file, the app does not blame the pull request's author. A file-level overlap cannot prove which exact lines caused the failure, so the notice says your work *may* be involved. Save a patch of your work, try the pull request on a clean ticket, and ask its author to update it only if it still fails there. When the file includes changes from a patch you already applied, the notice names that patch too rather than calling all of the file your own writing. A **closed** pull request is read differently, because on `wordpress-develop` "closed" is also what landing looks like — core commits go through SVN and the pull request is closed, never merged. If all its changes read back as already in trunk, the panel says it was likely committed to core and there is nothing left to apply. Otherwise it says nobody is coming back to update it, and offers **See why it was closed**. @@ -56,15 +60,19 @@ When the ticket has other patches on it — another pull request, another attach ## Applied patches belong to a ticket -What is applied is recorded against the ticket you are on, not against the site. Switch to another ticket and the green "applied" box goes with the first one; switch back and it is there again, describing the patch you actually applied on that ticket. See [Working on several tickets](ticket-branches). +What is applied is recorded as a named layer on the ticket you are on, separate from your own edits. Switch to another ticket and the green "applied" box goes with the first one; switch back and it is there again, naming the patch, how many files it changed, and when it was applied. The preview and failure notices continue to distinguish that layer from your writing. + +A ticket holds one applied patch or pull request at a time. Revert it, or discard the ticket back to its base, before applying another. See [Working on several tickets](ticket-branches). ## Reverting an applied patch -While a patch is applied, the panel shows it in a green box with a **Revert this patch** button. Reverting removes the patch's changes and rebuilds, again leaving your own edits alone. +While the saved patch can still be removed cleanly, the panel shows it in a green box with a **Revert this patch** button. Reverting removes the patch's changes and rebuilds, again leaving your own edits alone. + +If you edit lines the patch brought in, it can no longer be lifted back out without also disturbing your work. A failed Revert changes the explanation accordingly: the patch is part of your changes now. Undo your edits on the named regions to make **Revert this patch** work again, or **Save a copy of your work** and **Discard this ticket to its base**. -Very large patches cannot be undone automatically. The panel says so; use **Update to latest trunk** to reset the checkout instead — see [Staying up to date with trunk](trunk-updates). +For very large patches, the app does not keep the copy it would need for an undo, so they never offer Revert. The amber box says so and offers the same copy-and-discard route. Until the ticket is reverted or discarded, the patch still occupies its one applied-patch slot. -That escape hatch only resets a site sitting on trunk. On a ticket, an update parks your branch before it resets trunk and checks the branch back out afterwards — applied patch and all — so it leaves you where you were. On a ticket, the way to be rid of both the patch and the work under it is [deleting that ticket's work](ticket-branches). +**Update to latest trunk** is not an escape hatch for a patch on a ticket. It parks the ticket branch, updates trunk, and checks the same branch back out afterwards — applied patch and all — so it leaves you where you were. See [Staying up to date with trunk](trunk-updates). ## Your own changes diff --git a/docs/guide/ticket-branches.md b/docs/guide/ticket-branches.md index ab5ac77..46f02c5 100644 --- a/docs/guide/ticket-branches.md +++ b/docs/guide/ticket-branches.md @@ -85,13 +85,35 @@ This counts the ticket's whole work — including everything parked when you las Under it is the reassurance that matters here: unlinking the ticket does not touch those changes. They stay attached to the ticket in this site, ready for when you link it again. +Returning to a ticket does not make it clean or measure it from wherever trunk happens to be now. +The same count and the same files return because the ticket is still measured from the trunk +snapshot where its branch started. That baseline also drives the warning before applying another +patch: work committed when you switched away is still named as work on this ticket. + +## When trunk has moved since the ticket started + +Updating the site moves its copy of trunk, but deliberately does not move existing ticket branches. +When the app can see that the linked ticket started on an older trunk, the **Trac ticket** card says: + +> **Trunk has moved since this ticket started.** Newer patches may not apply cleanly. + +Nothing moves automatically. To start the ticket again from current trunk: + +1. Use **Review & submit changes** to save a patch of the ticket's work. +2. Click **Unlink** so the ticket appears under **Your tickets on this site**. +3. Click **Delete this ticket's work** on its row. This deletes the branch, not the patch you saved + outside the site. +4. Link the same ticket again. Its new branch starts from current trunk. +5. Apply the saved patch and check that the work still fits. + +The app stays silent when it cannot identify a ticket's original base; it does not substitute the +current trunk and pretend the ticket is current. + ## What a patch contains A patch is everything on the ticket's branch since the point it was created — only that ticket's work, never another's, and never a change that arrived from a trunk update. -That last point has a consequence worth knowing. A ticket branch keeps the snapshot of trunk it was born on, even after you [update the site to the latest trunk](./trunk-updates). The patch stays correct against that snapshot, which is what keeps it free of upstream changes you did not write — but a branch you started weeks ago produces a patch that may no longer apply to today's trunk. - -The app has no way to replay an old ticket branch onto a newer trunk. Doing it by hand means, in order: [update the site to the latest trunk](./trunk-updates) so there is a newer snapshot to branch from; save the ticket's patch from **Review & submit changes**; **Unlink** the ticket, so its row appears on the tickets card and **Delete this ticket's work** becomes available for it — the card never offers to delete the ticket you are on; link the ticket again, which creates a fresh branch on the updated trunk; and [apply the saved patch](./applying-patches) to it. +That last point has a consequence worth knowing. A ticket branch keeps the snapshot of trunk it was born on, even after you [update the site to the latest trunk](./trunk-updates). The patch stays correct against that snapshot, which is what keeps it free of upstream changes you did not write — but a branch you started weeks ago produces a patch that may no longer apply to today's trunk. Use the copy-and-restart path above when you need a fresh base; the app does not replay the branch onto it silently. ## Next steps diff --git a/docs/guide/troubleshooting.md b/docs/guide/troubleshooting.md index b3edbad..67ecece 100644 --- a/docs/guide/troubleshooting.md +++ b/docs/guide/troubleshooting.md @@ -29,6 +29,36 @@ branch before any file moved. See [Working on several tickets](./ticket-branches The usual cause is a file held open by an editor or an antivirus scanner during the swap. Closing whatever had the checkout open before retrying makes a repeat less likely. +## A patch or pull request will not apply + +An apply is all-or-nothing: if any part fails, the checkout is unchanged. The panel names how many +changes failed and which files they are in. + +For a pull request, check whether the notice names work already on your ticket: + +- If it does, save a patch of your work and try the pull request on a clean ticket. The app knows + that both sets of work touch the file, but it cannot prove which exact lines caused the failure. + Ask the pull request's author for an update only if it still fails on the clean ticket. +- If it does not, the pull request was written against an older trunk. Open it and let its author + know that it needs a rebase or trunk merged in. + +For a patch file or Trac attachment, there is no author the app can send you to. Expand the failing +files in the panel: each region gives a line from your checkout to search for and says whether the +surrounding code changed or the change appears to be present already. See +[Applying patches and PRs](./applying-patches#when-a-patch-will-not-apply). + +## Work seems to have vanished after changing tickets or updating trunk + +Ticket work belongs to its ticket branch, not to the whole site. If the files look clean after you +click **Unlink** or switch tickets, return to the original ticket under **Your tickets on this +site**. Its edits and its applied patch return with it. + +A trunk update also leaves ticket branches on the trunk snapshot where they started. When you run +one while a ticket is linked, the app parks the ticket, updates trunk, and checks the same ticket +back out. If its work is missing after the update rather than merely hidden on another ticket, stop +editing and report a problem with the app; an update must not discard it. See +[Keeping a site up to date with trunk](./trunk-updates#updating-while-you-are-on-a-ticket). + ## The dev server won't start Starting the server can legitimately take a while — booting WASM PHP on a slow machine can take diff --git a/docs/guide/trunk-updates.md b/docs/guide/trunk-updates.md index 1454d44..31adb98 100644 --- a/docs/guide/trunk-updates.md +++ b/docs/guide/trunk-updates.md @@ -37,7 +37,13 @@ An update moves trunk, and your ticket's work is not on trunk — so the app ste The dialog in step 1 only ever concerns edits that are loose in the working tree. Work already parked on a ticket branch is never what it is offering to save or discard. -What an update does not move is the snapshot your ticket branch was created on. That is deliberate — it is what keeps your patch free of the upstream changes the update just brought in — but it means an old ticket's patch does not get any newer by updating the site. See [Working on several tickets](./ticket-branches#what-a-patch-contains). +What an update does not move is the snapshot your ticket branch was created on. That is deliberate — it is what keeps your patch free of the upstream changes the update just brought in — but it means an old ticket's patch does not get any newer by updating the site. The same is true for every other ticket stored on the site: updating trunk does not rebase any of them. + +After the update, the **Trac ticket** card may say **Trunk has moved since this ticket started**. +That is not an incomplete update: trunk is current and the ticket is still safely on its original +base. To move the work forward, save its patch, unlink it, delete its branch, link the ticket again, +and apply the saved patch. The app never changes a ticket's base without that explicit sequence. +See [When trunk has moved since the ticket started](./ticket-branches#when-trunk-has-moved-since-the-ticket-started). ## Staleness dots and notices From f3f0e968984234b7a5a700feceb0163adfd5f7f9 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 14:53:42 +0200 Subject: [PATCH 29/53] Exclude coding-agent directories from generated patches (#36) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Coding agents create workspace directories such as `.claude/` inside the managed `wordpress-develop` checkout. Because these files are untracked and not ignored by that repository, the Toolkit includes them in patches and pull requests even though they are unrelated to the contributor's WordPress change. ## What changes The Toolkit seeds a marked block in each managed site's `.git/info/exclude` for the project directories used by Claude Code, Codex, Cursor, Windsurf, Gemini CLI, and Cline: - `/.claude/` - `/.codex/` - `/.agents/` - `/.cursor/` - `/.windsurf/` - `/.gemini/` - `/.cline/` - `/.clinerules/` The rules are installed after cloning or adopting a site. Existing registered sites receive them during their normal status read. Existing exclude rules are preserved, the block is written only once, and the marker lets advanced users take ownership of later edits. Generic dotfiles are deliberately not excluded. ## How to test this Platforms: any. The behavior uses Git ignore semantics and platform-safe filesystem paths. **Starting state:** A Toolkit-managed site linked to a Trac ticket, with an ordinary uncommitted WordPress change. 1. Start the Toolkit with `npm start` and open the managed site. - Expected: the site loads normally. 2. In the managed site's directory, modify a tracked WordPress file such as `README.md`. - Expected: the Toolkit reports an unsubmitted change. 3. Create representative local agent files, for example `.claude/settings.local.json`, `.codex/config.toml`, `.agents/skills/local/SKILL.md`, and `.cursor/rules/local.mdc`. 4. Click **Review & submit changes**. - Expected: the patch contains the `README.md` change. - Expected: none of the agent directories appears in the patch. 5. Inspect `/.git/info/exclude`. - Expected: existing rules remain and the eight agent-directory exclusions appear under `# WordPress Contributor Toolkit local excludes`. 6. Close and reopen **Review & submit changes**, then inspect the exclude file again. - Expected: the marked block appears exactly once. **What must not have happened:** - The agent files must still exist on disk; they are ignored, not deleted. - The contributor's WordPress edit must not disappear from the patch. - Unrelated dotfiles must not be excluded. - A repository not registered with the Toolkit must not have its `.git/info/exclude` changed. ## Risks and limitations No open review findings. A contributor who intentionally wants to add a new project configuration under one of these agent directories must edit the marked per-site exclude block first. Tracked upstream files remain visible under normal Git ignore semantics. ## Related Fixes #19 ---
Design decisions and alternatives considered A broad `.*` rule was rejected because it would hide unrelated dotfiles. Filtering paths in patch-rendering code was also rejected because pull requests and other status consumers use the same Git walk. Per-repository excludes let isomorphic-git apply one consistent rule without changing the managed repository's tracked `.gitignore`.
Review outcome (required — see AGENTS.md) 0 [fix here] · 0 [follow-up]. The fresh review initially found two instances where renderer-controlled paths could write exclusions outside the registered-site boundary. Both were fixed: `site:status` validates exact registry membership, patch collection performs no writes, and negative regression tests cover both entry points. Deterministic checks: `npm run lint` passed; `npm test` passed 1,017/1,017; `git diff --check` passed.
Implementation notes The exclusion helper uses asynchronous filesystem operations so routine status checks do not block Electron's main process. The regression test also verifies preservation of existing rules and idempotent block creation.
Screenshots or recording No UI changed. The behavior is visible in the existing **Review & submit changes** patch pane.
--- src/main.js | 52 ++++++++++++++++++++++ test/ipc-wiring.test.cjs | 95 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) diff --git a/src/main.js b/src/main.js index 8357f49..fe8eba3 100644 --- a/src/main.js +++ b/src/main.js @@ -71,6 +71,55 @@ const { parseEventName, buildProvenanceHeader, handoffFilename } = require('./pa const { describeRefused } = require('./safe-log'); const { detectEditors, matchDetectedEditor, openSiteInEditor, REFUSAL_REASONS } = require('./editor-launch'); +const LOCAL_EXCLUDES_MARKER = '# WordPress Contributor Toolkit local excludes'; +const LOCAL_EXCLUDES = [ + '/.claude/', + '/.codex/', + '/.agents/', + '/.cursor/', + '/.windsurf/', + '/.gemini/', + '/.cline/', + '/.clinerules/' +]; + +/** + * Seeds per-site ignores for machine-local files that must never become part + * of a contribution. This lives in `.git/info/exclude`, not the repository's + * `.gitignore`: the checkout stays unchanged and isomorphic-git reads these + * rules when it builds a status matrix (issue #19). + * + * The marker is the ownership boundary. Once present, the contributor may + * edit or remove the rules below it and the app will not restore them. + * Existing rules above or below the block are never rewritten. + * + * @param {string} dir Repository working directory. + * @return {Promise} Whether the default block was appended. + */ +async function ensureLocalExcludes(dir) { + const gitDir = path.join(dir, '.git'); + try { + if (!(await fs.promises.stat(gitDir)).isDirectory()) return false; + } catch { + return false; + } + + const infoDir = path.join(gitDir, 'info'); + const excludePath = path.join(infoDir, 'exclude'); + let existing = ''; + try { + existing = await fs.promises.readFile(excludePath, 'utf8'); + } catch (error) { + if (!error || error.code !== 'ENOENT') throw error; + } + if (existing.split(/\r?\n/).includes(LOCAL_EXCLUDES_MARKER)) return false; + + await fs.promises.mkdir(infoDir, { recursive: true }); + const separator = existing && !existing.endsWith('\n') ? '\n' : ''; + await fs.promises.appendFile(excludePath, `${separator}${LOCAL_EXCLUDES_MARKER}\n${LOCAL_EXCLUDES.join('\n')}\n`); + return true; +} + // Screenshot harness only (scripts/screenshots/): point userData at a throwaway // directory so a seeded settings.json is read instead of the contributor's real // site registry. Must run before `ready` — electron-store resolves its file path @@ -1727,6 +1776,7 @@ ipcMain.handle('site:status', async (_e, sitePath) => { const hasBuilt = fs.existsSync(distDir); const s = await getStore(); + if ((s.get('sites') || []).includes(sitePath)) await ensureLocalExcludes(sitePath); const meta = s.get('siteMeta') || {}; const m = meta[sitePath] || {}; @@ -1791,6 +1841,7 @@ ipcMain.handle('sites:add', async (_e, sitePath) => { // A pre-existing dir was likely cloned by native git — exactly the case // where CRLF checkouts break status/patch generation (see ensureAutocrlf). await ensureAutocrlf(sitePath); + await ensureLocalExcludes(sitePath); const s = await getStore(); const sites = s.get('sites'); if (!sites.includes(sitePath)) { @@ -1851,6 +1902,7 @@ ipcMain.handle('wordpress:setup', async (event, destDir, options = {}) => { } }); await ensureAutocrlf(siteDir); + await ensureLocalExcludes(siteDir); const s = await getStore(); const sites = s.get('sites'); diff --git a/test/ipc-wiring.test.cjs b/test/ipc-wiring.test.cjs index 5602d62..0968748 100644 --- a/test/ipc-wiring.test.cjs +++ b/test/ipc-wiring.test.cjs @@ -433,6 +433,44 @@ test('site:status reports the trunk snapshot trunk-update read, not its own gues assert.equal(settings.values.siteMeta['/sites/wp'].trunkOid, 'abc123'); }); +test('site:status does not seed excludes in an unregistered repository (issue #19)', async (t) => { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipc-wiring-unregistered-exclude-')); + t.after(() => fs.rmSync(dir, { recursive: true, force: true })); + await git.init({ fs, dir, defaultBranch: 'trunk' }); + const excludePath = path.join(dir, '.git', 'info', 'exclude'); + fs.writeFileSync(excludePath, 'existing-rule/\n'); + const settings = fakeSettingsStore({ sites: [], siteMeta: {} }); + const main = loadMain({ + stubs: { + ...silentLogging(), + ...settings.stubs, + './trunk-update': { readTrunkInfo: async () => { throw new Error('not registered'); } } + } + }); + + await main.invoke('site:status', dir); + + assert.equal(fs.readFileSync(excludePath, 'utf8'), 'existing-rule/\n'); +}); + +test('git:get-patch does not seed excludes in an unregistered repository (issue #19)', async (t) => { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipc-wiring-unregistered-patch-exclude-')); + t.after(() => fs.rmSync(dir, { recursive: true, force: true })); + await git.init({ fs, dir, defaultBranch: 'trunk' }); + fs.writeFileSync(path.join(dir, 'README.md'), 'base\n'); + await git.add({ fs, dir, filepath: 'README.md' }); + await git.commit({ fs, dir, message: 'init', author: { name: 'test', email: 'test@example.com' } }); + fs.appendFileSync(path.join(dir, 'README.md'), 'edit\n'); + const excludePath = path.join(dir, '.git', 'info', 'exclude'); + fs.writeFileSync(excludePath, 'existing-rule/\n'); + const main = patchMain(); + + const result = await main.invoke('git:get-patch', dir); + + assert.equal(result.ok, true); + assert.equal(fs.readFileSync(excludePath, 'utf8'), 'existing-rule/\n'); +}); + // --- git:* -> src/trunk-update.js ---------------------------------------- test('git:worktree-dirty reports what trunk-update found, not its own guess', async () => { @@ -810,6 +848,63 @@ test('git:get-patch includes an untracked file without staging it (issues #108, ); }); +test('git:get-patch excludes local coding-agent directories from a managed site (issue #19)', async (t) => { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'ipc-wiring-agent-exclude-')); + t.after(() => fs.rmSync(dir, { recursive: true, force: true })); + await git.init({ fs, dir, defaultBranch: 'trunk' }); + fs.writeFileSync(path.join(dir, 'README.md'), 'managed wordpress-develop site\n'); + await git.add({ fs, dir, filepath: 'README.md' }); + await git.commit({ fs, dir, message: 'init', author: { name: 'test', email: 'test@example.com' } }); + fs.writeFileSync(path.join(dir, '.git', 'info', 'exclude'), 'build/\n'); + + const agentArtifacts = [ + '.claude/settings.local.json', + '.codex/config.toml', + '.agents/skills/local/SKILL.md', + '.cursor/rules/local.mdc', + '.windsurf/rules/local.md', + '.gemini/settings.json', + '.cline/rules/local.md', + '.clinerules/local.md' + ]; + for (const filepath of agentArtifacts) { + fs.mkdirSync(path.dirname(path.join(dir, filepath)), { recursive: true }); + fs.writeFileSync(path.join(dir, filepath), 'local agent configuration\n'); + } + fs.appendFileSync(path.join(dir, 'README.md'), 'real contributor edit\n'); + + const main = loadMain({ + stubs: { + ...silentLogging(), + ...fakeSettingsStore({ sites: [dir], siteMeta: { [dir]: {} } }).stubs, + './trunk-update': { ensureAutocrlf: async () => {} } + } + }); + await main.invoke('site:status', dir); + const seededExclude = fs.readFileSync(path.join(dir, '.git', 'info', 'exclude'), 'utf8'); + for (const directory of ['.claude', '.codex', '.agents', '.cursor', '.windsurf', '.gemini', '.cline', '.clinerules']) { + assert.match(seededExclude, new RegExp(`^/${directory.replace('.', '\\.')}/$`, 'm')); + } + + const result = await main.invoke('git:get-patch', dir); + + assert.equal(result.ok, true); + assert.match(result.patch, /README\.md/, 'the contributor\'s WordPress change stays visible'); + for (const filepath of agentArtifacts) { + assert.doesNotMatch(result.patch, new RegExp(filepath.split('/')[0].replace('.', '\\.'))); + } + const exclude = fs.readFileSync(path.join(dir, '.git', 'info', 'exclude'), 'utf8'); + assert.match(exclude, /^build\/$/m, 'existing per-site excludes survive'); + + await main.invoke('git:get-patch', dir); + const afterSecondPatch = fs.readFileSync(path.join(dir, '.git', 'info', 'exclude'), 'utf8'); + assert.equal( + afterSecondPatch.split('# WordPress Contributor Toolkit local excludes').length - 1, + 1, + 'the managed block is added only once' + ); +}); + // --- what the patch says about deletions, additions and binaries (#85) --- // A repository with a committed base, for the generation tests below. Returns From f70c6b4a188c2e6f488ee4af966e5a3334cedeba Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 15:38:01 +0200 Subject: [PATCH 30/53] Bump version to 1.0.0-rc.2 (#335) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why `v1.0.0-rc.1` shipped on 12 August. Twenty changes have since landed on `trunk`, including safer applied-patch handling, clearer stale-ticket guidance, fixes for missing linked pull requests and stalled Trac loads, and exclusion of local coding-agent files from generated patches. This second release candidate carries those fixes, so the package version must move to `1.0.0-rc.2` before its tag and artifacts are created. ## What changes Only `package.json` and `package-lock.json`: all three package-version fields move together from `1.0.0-rc.1` to `1.0.0-rc.2`. No dependency versions or application behavior change. `electron-builder` derives artifact names from `package.json`, producing: - `wordpress-contributor-toolkit-1.0.0-rc.2-mac-arm64.dmg` - `wordpress-contributor-toolkit-1.0.0-rc.2-win-x64.exe` - `wordpress-contributor-toolkit-1.0.0-rc.2-linux-x86_64.AppImage` ## How to test this Platforms: any; this is package metadata and is platform-independent. **Starting state:** this branch checked out with dependencies installed. 1. Run `node -p "require('./package.json').version"`. - Expected: `1.0.0-rc.2`. 2. Run `node -e "const p=require('./package-lock.json'); console.log(p.version, p.packages[''].version)"`. - Expected: `1.0.0-rc.2 1.0.0-rc.2`. 3. Run `npm run lint` and `npm test`. - Expected: lint succeeds and all 1,017 tests pass. **What must not have happened:** dependency versions and resolved packages must remain unchanged; no source, documentation, workflow, or build configuration file should be in the diff. ## Risks and limitations No user-visible behavior changed, so there is no desktop flow or screenshot to test by hand. The signed artifacts will only exist after this PR lands and the release build runs. ## Related Follow-up to #296. ---
Design decisions and alternatives considered The version remains SemVer-shaped as `1.0.0-rc.2`, matching `1.0.0-rc.1` and keeping artifact names in one series. The release tag will add the conventional `v` prefix; package metadata does not.
Review outcome (required — see AGENTS.md) `0 [fix here] · 0 [follow-up]`. No findings across architecture, security, performance, cross-platform, or tests. `npm run lint`, `npm test` (1,017/1,017), and `git diff --check` pass.
Implementation notes npm's documented versioning behavior keeps `package.json`, the lockfile root version, and `packages[""]` synchronized. The diff was checked to confirm those are the only changed values.
--- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1131ba0..8593271 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "electron-setup-wordpress-core", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "electron-setup-wordpress-core", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "hasInstallScript": true, "license": "GPL-2.0-or-later", "dependencies": { diff --git a/package.json b/package.json index df9e929..0bc304e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "electron-setup-wordpress-core", "author": "WordPress.org", - "version": "1.0.0-rc.1", + "version": "1.0.0-rc.2", "private": true, "license": "GPL-2.0-or-later", "description": "Electron app to setup WordPress develop structure and run npm install", From 2d70278c87110ca0e4ae31a9e25b63d77301e373 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 17:04:54 +0200 Subject: [PATCH 31/53] [Add] submission workflow screenshots to the guide (#336) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why The submission and trunk-update guides describe visual, multi-step interfaces but previously showed no corresponding screenshots. Contributors had to translate terms such as “Your changes,” destination cards, GitHub device flow, and “step N of 3” into an unfamiliar UI on their own. ## What changes Adds four focused screenshots for the existing live-tier capture definitions: the highlighted diff, all three submission destinations, GitHub's device-code state, and trunk-update progress. The capture targets now crop the relevant panel and use the current **Review & submit changes** label, and the guide places each image next to the text it explains. ## How to test this **Starting state:** Any platform, with this branch checked out and dependencies installed. 1. Run `npm run docs:build`. Expect VitePress to render every guide page without missing-image or Markdown errors. 2. Run `npm run docs:dev`, open **Submitting your changes**, and confirm the diff image appears under **Your changes** and shows readable highlighted PHP. 3. Continue to **Where this patch goes**. Confirm the image shows **Open a pull request**, **Attach to Trac**, and **Hand it to a mentor**, including their primary actions. 4. Open **Opening a pull request**. Confirm the device-code screenshot includes **Copy the code**, its waiting state, and **Cancel**. 5. Open **Keeping a site up to date with trunk**. Confirm the progress screenshot shows step 1 of 3 and the three update stages. **What must not have happened:** No screenshot should expose a personal filesystem path or active credential. The GitHub device code was canceled immediately after capture and cannot authorize an account. ## Risks and limitations The images document the current 1.0 UI and will need recapturing if those labels or layouts change. The live tier still requires a prepared site and a maintainer at the keyboard; this PR makes its output focused and reproducible but does not automate the underlying app states. ## Related Follow-up to #310. ---
Design decisions and alternatives considered The screenshots are cropped to the UI they explain rather than publishing a full Electron window. This keeps text readable at documentation width and prevents local site paths from entering published images. The three destinations remain one screenshot because their comparison is the useful relationship.
Review outcome (required — see AGENTS.md) 0 `[fix here]` · 0 `[follow-up]`. No findings across architecture, security, performance, cross-platform, or tests. Deterministic checks: `npm run lint` passed; `npm test` passed 1,017/1,017; `npm run docs:build` passed.
Implementation notes The screenshots were captured from an isolated local clone and a throwaway Electron profile. The GitHub device flow was canceled immediately after capture without authorizing an account.
Screenshots or recording Four screenshots are included directly in the relevant guide pages: submission diff, submission destinations, GitHub sign-in, and trunk-update progress.
--- docs/guide/submit-github-pr.md | 2 ++ docs/guide/submitting-changes.md | 4 ++++ docs/guide/trunk-updates.md | 2 ++ docs/public/screenshots/github-sign-in.png | Bin 0 -> 32475 bytes docs/public/screenshots/submit-changes-diff.png | Bin 0 -> 41568 bytes docs/public/screenshots/submit-destinations.png | Bin 0 -> 81396 bytes .../screenshots/trunk-update-progress.png | Bin 0 -> 10482 bytes scripts/screenshots/shots.cjs | 10 +++++++--- 8 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 docs/public/screenshots/github-sign-in.png create mode 100644 docs/public/screenshots/submit-changes-diff.png create mode 100644 docs/public/screenshots/submit-destinations.png create mode 100644 docs/public/screenshots/trunk-update-progress.png diff --git a/docs/guide/submit-github-pr.md b/docs/guide/submit-github-pr.md index 3608731..da183cf 100644 --- a/docs/guide/submit-github-pr.md +++ b/docs/guide/submit-github-pr.md @@ -12,6 +12,8 @@ Click **Sign in with GitHub**. The app signs you in through your browser, using 2. Enter the code there — **Copy the code** puts it on your clipboard — and confirm the authorization on GitHub. 3. The app waits until GitHub reports the sign-in went through. +![The Open a pull request card showing a GitHub device code, Copy the code, the waiting state, and Cancel](/screenshots/github-sign-in.png) + You never type a password into the app, and no credential is written to disk: the authorization is held in memory and forgotten when you quit. Click **Cancel** to abandon the sign-in, or **Not now** to decline it — the patch file is still yours to save, and the other two destinations are unchanged. Once signed in, the card says which account you are on and where the fork and branch will go: **your-username/wordpress-develop**. **Sign out** discards the authorization. diff --git a/docs/guide/submitting-changes.md b/docs/guide/submitting-changes.md index da2a365..9d57434 100644 --- a/docs/guide/submitting-changes.md +++ b/docs/guide/submitting-changes.md @@ -6,6 +6,8 @@ When your change works and you want to contribute it, open the **Review & submit The left side of the screen is the diff, titled **Your changes**. This is exactly what will be submitted, so read it before choosing a destination. +![The Your changes pane showing a new PHP file as a highlighted diff, with Save and Copy controls above it](/screenshots/submit-changes-diff.png) + What it contains is the work on the ticket you are on, and only that: everything the ticket's branch has gained since it was created, including whatever was parked the last time you switched away from it. Another ticket's work is never in it, and neither is a change that arrived from a [trunk update](trunk-updates). On a site with no ticket linked, it is simply everything the checkout has that its copy of trunk does not. Two buttons sit above the diff: @@ -42,6 +44,8 @@ The one gap left: adding or deleting an empty file is still not represented in t The right side lists three destinations. The pull request is the one the app sends for you; the other two save a file for you to send. Each card states what it costs to use and what happens afterwards, so you can choose with the trade-offs in front of you. +![The Where this patch goes pane showing Open a pull request, Attach to Trac, and Hand it to a mentor](/screenshots/submit-destinations.png) + - **Open a pull request** — needs a GitHub account. The app forks `wordpress-develop` to your account, pushes your change to a branch, and opens the pull request. Automated checks run on it. [Opening a pull request](submit-github-pr) - **Attach to Trac** — needs a WordPress.org account, which you need anyway for props and to comment. The app saves the patch file and opens the ticket's attach page; you upload it yourself. No automated checks run. [Attaching a patch to Trac](submit-trac) - **Hand it to a mentor** — needs no accounts at all. The app saves a patch file carrying your WordPress.org username and the event you are at; someone else pushes it, and the props still land on you. [Handing a patch to a mentor](submit-mentor) diff --git a/docs/guide/trunk-updates.md b/docs/guide/trunk-updates.md index 31adb98..1ded368 100644 --- a/docs/guide/trunk-updates.md +++ b/docs/guide/trunk-updates.md @@ -29,6 +29,8 @@ The update always shows the same three steps in a progress card, with a "step N 2. **Install dependencies** — runs only if `package-lock.json` changed between the old and new trunk; otherwise the step is shown as "Dependencies unchanged — skipping npm install". When it does run, most packages are already cached, so it downloads the difference, not the whole tree. 3. **Rebuild** — rebuild the `build/` directory so it matches the new source. +![The Updating to latest trunk card at step 1 of 3, fetching and resetting to trunk before install and rebuild](/screenshots/trunk-update-progress.png) + When the chain finishes, a green summary reads **Up to date with trunk as of today.**, along with whether dependencies changed, how long the rebuild took, and the path of any saved patch. Updating typically takes a few minutes. ## Updating while you are on a ticket diff --git a/docs/public/screenshots/github-sign-in.png b/docs/public/screenshots/github-sign-in.png new file mode 100644 index 0000000000000000000000000000000000000000..551a4bba542035246935515a1f1215e3975112c6 GIT binary patch literal 32475 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

L9AXl1RNkL8vSr!<0d5wio6O6BP!kV~< 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 A-2eap literal 0 HcmV?d00001 diff --git a/docs/public/screenshots/submit-changes-diff.png b/docs/public/screenshots/submit-changes-diff.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c3ce63a696fd00a8d596c0aa3e68f2659f7700 GIT binary patch literal 41568 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 b4$qQde^7ZQ{PlEpqL+fO1 literal 0 HcmV?d00001 diff --git a/docs/public/screenshots/submit-destinations.png b/docs/public/screenshots/submit-destinations.png new file mode 100644 index 0000000000000000000000000000000000000000..e8fe26027f856bf9c923eec1940fbffc227c019f GIT binary patch literal 81396 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 literal 0 HcmV?d00001 diff --git a/docs/public/screenshots/trunk-update-progress.png b/docs/public/screenshots/trunk-update-progress.png new file mode 100644 index 0000000000000000000000000000000000000000..7890c9b8e06e56b9755d88bb137f76ceeb9d6803 GIT binary patch literal 10482 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 Bh?@Wa literal 0 HcmV?d00001 diff --git a/scripts/screenshots/shots.cjs b/scripts/screenshots/shots.cjs index 2e3f88b..8de9333 100644 --- a/scripts/screenshots/shots.cjs +++ b/scripts/screenshots/shots.cjs @@ -169,24 +169,28 @@ const shots = [ { slug: 'submit-changes-diff', tier: 'live', + target: (page) => page.locator('.patch-diff'), instructions: - 'On a site with edited files, click "Submit changes" and wait for the diff to finish generating.' + 'On a site with edited files, click "Review & submit changes" and wait for the diff to finish generating.' }, { slug: 'submit-destinations', tier: 'live', + target: (page) => page.locator('.patch-destinations'), instructions: - 'In the "Submit changes" modal, continue past the diff until the three destination cards (pull request / Trac / mentor) are visible.' + 'In the "Review & submit changes" modal, wait until the three destination cards (pull request / Trac / mentor) are visible.' }, { slug: 'github-sign-in', tier: 'live', + target: (page) => page.getByText('Open a pull request', { exact: true }).locator('../..'), instructions: - 'Choose "Open a pull request" while signed out, so the GitHub sign-in screen is visible. Stop before entering the device code.' + 'In the "Open a pull request" destination, click "Sign in with GitHub" while signed out. Capture the card while it shows the device code; do not authorize it.' }, { slug: 'trunk-update-progress', tier: 'live', + target: (page) => page.getByText('Updating to latest trunk', { exact: true }).locator('../..'), instructions: 'Start "Update to latest trunk" on a site and wait until the step list is mid-run.' } From 8617df11397c6e6c3d5f5a892a59c44f323024a8 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 17:04:55 +0200 Subject: [PATCH 32/53] [Document] recovery states and captured mail (#337) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Several recovery paths were described only in prose, which made contributors translate an unfamiliar warning or failed apply into the words in the guide. The Mail guide also claimed to show a captured message while its screenshot showed the empty state. ## What changes - Adds screenshots for an incomplete trunk update and a pull request that cannot be applied without changing the checkout. - Replaces the empty Mail screenshot with a deterministic captured-message row. - Extends the screenshot fixtures and catalogue so the Mail and update-warning images can be regenerated. - Pins the screenshot harness locale and timezone, and excludes the ephemeral SMTP port from the Mail crop. Adminer is deliberately not added here: its UI exists only while a real WordPress Playground server is running, so a fixture would not be representative. That remains a live-capture follow-up. ## How to test this Platforms: any. The fixture screenshots should render identically across supported platforms. **Starting state:** this branch checked out with the root and `docs/` dependencies installed. 1. Run `npm run shots -- --only=mail-panel`. Expect `mail-panel.png` to show one row with time, sender, and subject, without the SMTP port. 2. Run `npm run shots -- --only=update-incomplete`. Expect `update-incomplete.png` to show the red notice and **Retry install & build** button. 3. Run `npm run docs:dev`, then open **Mail**, **Applying patches and PRs**, **Keeping a site up to date with trunk**, and **Troubleshooting**. Expect each screenshot to sit next to the state it explains and remain legible at the documentation width. 4. Run `npm run lint`, `npm test`, and `npm run docs:build`. Expect all commands to pass. **What must not have happened:** the fixture must not use the contributor's real site registry, send mail externally, expose a personal path, or include a changing SMTP port. The failed-apply screenshot must clearly say that the checkout was not changed. The conflict image cannot be recreated fully automatically: it needs an isolated real checkout and a deliberately incompatible patch or pull request. Its live-tier instructions record that setup. ## Risks and limitations The conflict capture remains maintainer-driven because fake repository state would not prove the app's all-or-nothing behavior. Adminer still needs a separate live capture against a running Playground site. Self-review: 0 `[fix here]` · 0 `[follow-up]` after fixing two low-severity determinism findings. ## Related Stacked on #336. ---

Design decisions and alternatives considered Persisted fixture mail is loaded when the dev server starts, so the harness starts the fixture server instead of injecting renderer state. The committed crop is limited to the message list: it teaches sender, subject, and time while omitting the server's intentionally ephemeral port. The update warning is fixture-tier because `updateIncomplete` is persisted site metadata. The failed apply remains live-tier because its credibility depends on a real checkout and patch diagnosis.
Review outcome (required — see AGENTS.md) 0 `[fix here]` · 0 `[follow-up]` after fixes. The independent pass initially found that the Mail timestamp inherited the host locale/timezone and that the card included a changing SMTP port. The harness now pins `en-GB`/UTC and crops the deterministic email list. Captures made under the default environment and under `TZ=America/New_York LANG=es_ES.UTF-8` had zero differing pixels. No findings remain across architecture, security, performance, cross-platform, or tests.
Implementation notes Verification passed: both fixture captures, ESLint, 1,017 Node tests, VitePress production build, and `git diff --check`.
Screenshots or recording ![A captured email with its time, sender, and subject](https://raw.githubusercontent.com/WordPress/contributor-toolkit/juanmaguitar/document-diagnostic-states/docs/public/screenshots/mail-panel.png) ![The Update incomplete notice](https://raw.githubusercontent.com/WordPress/contributor-toolkit/juanmaguitar/document-diagnostic-states/docs/public/screenshots/update-incomplete.png) ![A pull request that does not fit the checkout](https://raw.githubusercontent.com/WordPress/contributor-toolkit/juanmaguitar/document-diagnostic-states/docs/public/screenshots/apply-patch-conflict.png)
--- docs/guide/applying-patches.md | 2 ++ docs/guide/mail.md | 2 +- docs/guide/troubleshooting.md | 2 ++ docs/guide/trunk-updates.md | 2 ++ .../screenshots/apply-patch-conflict.png | Bin 0 -> 30196 bytes docs/public/screenshots/mail-panel.png | Bin 7315 -> 9640 bytes docs/public/screenshots/update-incomplete.png | Bin 0 -> 11968 bytes scripts/screenshots/capture.cjs | 6 ++-- scripts/screenshots/fixtures.cjs | 30 ++++++++++++++++-- scripts/screenshots/shots.cjs | 22 +++++++++++-- 10 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 docs/public/screenshots/apply-patch-conflict.png create mode 100644 docs/public/screenshots/update-incomplete.png diff --git a/docs/guide/applying-patches.md b/docs/guide/applying-patches.md index da3c458..8f6f165 100644 --- a/docs/guide/applying-patches.md +++ b/docs/guide/applying-patches.md @@ -33,6 +33,8 @@ If the [build watch](running-the-site#the-build-watch) is running and the patch The apply is all-or-nothing. If anything fails, nothing is written to your checkout — but the panel now tells you *how much* failed, because one region of twenty missing and all twenty missing are opposite decisions for you. +![A pull request that does not fit this checkout, with the affected file named and confirmation that the checkout was not changed](/screenshots/apply-patch-conflict.png) + The headline is a count, not an adjective: *4 of this patch's 20 changes across 3 files no longer fit — the other 16 do.* When every change is already in your checkout — which is what a patch that has since been committed to core looks like — it says that instead, rather than reporting the patch as dead. ### For a patch file or a Trac attachment diff --git a/docs/guide/mail.md b/docs/guide/mail.md index 3a87381..3237667 100644 --- a/docs/guide/mail.md +++ b/docs/guide/mail.md @@ -6,7 +6,7 @@ each site gets its own built-in SMTP catcher, listening only on `127.0.0.1`. Wor `wp_mail()` is pointed at it, so every email the site sends lands in the **Mail** panel instead of leaving your machine. -![The Mail panel with a captured email](/screenshots/mail-panel.png) +![A captured email with its time, sender, and subject](/screenshots/mail-panel.png) ## How it works diff --git a/docs/guide/troubleshooting.md b/docs/guide/troubleshooting.md index 67ecece..9fb9122 100644 --- a/docs/guide/troubleshooting.md +++ b/docs/guide/troubleshooting.md @@ -15,6 +15,8 @@ the site may not run correctly until install and build succeed. Click **Retry in in the notice. If it fails again, the reason is in the [Terminal](./terminal) output — a network drop during `npm install` is the most common cause. +![The Update incomplete notice with its Retry install and build button](/screenshots/update-incomplete.png) + ## "A previous switch … did not finish" A ticket switch whose file swap died part-way leaves the checkout half of one ticket and half of diff --git a/docs/guide/trunk-updates.md b/docs/guide/trunk-updates.md index 1ded368..ea2b06a 100644 --- a/docs/guide/trunk-updates.md +++ b/docs/guide/trunk-updates.md @@ -60,6 +60,8 @@ The app flags sites that have fallen behind with a coloured dot next to the site If the fetch succeeds but install or build fails, the site view shows a red banner: **Update incomplete** — the code is new but the built assets are old, and the site may not run correctly until install and build succeed. Click **Retry install & build** to run only the missing steps; the fetch is not repeated. The sidebar dot stays red until this succeeds. +![The Update incomplete notice with its Retry install and build button](/screenshots/update-incomplete.png) + ## Staleness is judged locally Staleness is judged locally, from the date of the commit your site is sitting on, and never by asking GitHub what the tip of trunk is. That keeps the app working offline and stops it from making a network request every time it launches. Two consequences worth knowing: diff --git a/docs/public/screenshots/apply-patch-conflict.png b/docs/public/screenshots/apply-patch-conflict.png new file mode 100644 index 0000000000000000000000000000000000000000..a47b5f996cf998981addc6bcbc0a8942506ffbbc GIT binary patch literal 30196 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 wrxHjA7 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 Ee*))NzW@LL literal 0 HcmV?d00001 diff --git a/scripts/screenshots/capture.cjs b/scripts/screenshots/capture.cjs index babc0b6..cfff67f 100644 --- a/scripts/screenshots/capture.cjs +++ b/scripts/screenshots/capture.cjs @@ -42,7 +42,7 @@ const outDir = path.join(repoRoot, 'docs', 'public', 'screenshots'); // scale-factor switch a retina display doubles the pixel size of half the // screenshots and the docs pages render them inconsistently. const WINDOW = { width: 1200, height: 800 }; -const ELECTRON_SWITCHES = ['--force-device-scale-factor=1']; +const ELECTRON_SWITCHES = ['--force-device-scale-factor=1', '--lang=en-GB']; function parseArgs(argv) { const args = { tier: 'fixture', only: null, userData: null }; @@ -84,7 +84,9 @@ async function launchApp(env) { // the same trick scripts/run-tests-electron.cjs uses. executablePath: require('electron'), args: [...ELECTRON_SWITCHES, repoRoot], - env: { ...process.env, ...env } + // Dates rendered by the app must not rewrite screenshots according to the + // maintainer's locale or timezone. + env: { ...process.env, TZ: 'UTC', ...env } }); const page = await app.firstWindow(); await app.evaluate(({ BrowserWindow }, bounds) => { diff --git a/scripts/screenshots/fixtures.cjs b/scripts/screenshots/fixtures.cjs index e1b63c2..77237b1 100644 --- a/scripts/screenshots/fixtures.cjs +++ b/scripts/screenshots/fixtures.cjs @@ -49,10 +49,12 @@ function buildFixture(variant) { const wizardSite = path.join(FIXTURE_ROOT, 'wordpress-develop'); const readySite = path.join(FIXTURE_ROOT, 'my-first-patch'); const staleSite = path.join(FIXTURE_ROOT, 'older-site'); + const incompleteSite = path.join(FIXTURE_ROOT, 'needs-rebuild'); - for (const site of [wizardSite, readySite, staleSite]) { + for (const site of [wizardSite, readySite, staleSite, incompleteSite]) { fs.mkdirSync(path.join(site, 'wp-content'), { recursive: true }); } + fs.mkdirSync(path.join(readySite, 'build', 'wp-includes', 'js', 'dist'), { recursive: true }); fs.writeFileSync(path.join(readySite, 'wp-content', 'debug.log'), DEBUG_LOG_LINES); // Dates are fixed, not computed from "now": the amber staleness dot needs @@ -60,7 +62,7 @@ function buildFixture(variant) { // enough not to be flagged. Retaking the screenshots years from now flips // the fresh sites amber too — bump these dates when that happens. writeSettings(userDataDir, { - sites: [wizardSite, readySite, staleSite], + sites: [wizardSite, readySite, staleSite, incompleteSite], siteMeta: { [wizardSite]: { initialized: true, @@ -82,15 +84,37 @@ function buildFixture(variant) { label: 'older-site', trunkDate: '2026-06-01T09:00:00.000Z', skipInitWizard: true + }, + [incompleteSite]: { + initialized: true, + createdAt: '2026-08-09T10:00:00.000Z', + label: 'needs-rebuild', + trunkDate: '2026-08-09T09:00:00.000Z', + skipInitWizard: true, + updateIncomplete: true } }, + [`siteMail:${readySite}`]: [ + { + id: 'docs-welcome', + subject: 'Welcome to WordPress Contributor Day', + from: 'WordPress ', + to: 'contributor@example.test', + date: '2026-08-10T09:30:00.000Z', + sentAt: '2026-08-10T09:30:00.000Z', + text: 'Your local WordPress site can send mail safely.', + html: '

Your local WordPress site can send mail safely.

', + headers: {}, + raw: 'Subject: Welcome to WordPress Contributor Day\n\nYour local WordPress site can send mail safely.' + } + ], preferences: { wporgHandle: 'contributor', contributionEvent: 'WordCamp Example 2026' } }); - return { userDataDir, sites: { wizardSite, readySite, staleSite } }; + return { userDataDir, sites: { wizardSite, readySite, staleSite, incompleteSite } }; } function writeSettings(userDataDir, settings) { diff --git a/scripts/screenshots/shots.cjs b/scripts/screenshots/shots.cjs index 8de9333..a688879 100644 --- a/scripts/screenshots/shots.cjs +++ b/scripts/screenshots/shots.cjs @@ -125,10 +125,21 @@ const shots = [ slug: 'mail-panel', tier: 'fixture', variant: 'seeded', - target: (page) => card(page, 'Mail'), + target: (page) => page.getByText('Welcome to WordPress Contributor Day').locator('../..'), prepare: async (page) => { await selectSite(page, 'my-first-patch'); - await page.getByText('No emails yet.').filter({ visible: true }).waitFor(); + await page.getByRole('button', { name: 'Start dev server' }).click(); + await page.getByText('Welcome to WordPress Contributor Day').filter({ visible: true }).waitFor(); + } + }, + { + slug: 'update-incomplete', + tier: 'fixture', + variant: 'seeded', + target: (page) => page.getByText('Update incomplete', { exact: true }).locator('../..'), + prepare: async (page) => { + await selectSite(page, 'needs-rebuild'); + await page.getByRole('button', { name: 'Retry install & build' }).waitFor(); } }, @@ -193,6 +204,13 @@ const shots = [ target: (page) => page.getByText('Updating to latest trunk', { exact: true }).locator('../..'), instructions: 'Start "Update to latest trunk" on a site and wait until the step list is mid-run.' + }, + { + slug: 'apply-patch-conflict', + tier: 'live', + target: (page) => card(page, 'Apply a patch or PR'), + instructions: + 'On an isolated site, preview a patch or pull request that does not fit the checkout, click "Apply and rebuild", and wait until the panel confirms that the checkout was not changed.' } ]; From 88154a445ff770959f0f351cd8dbbddd16fe45f8 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 17:04:55 +0200 Subject: [PATCH 33/53] [Recommend] preparing sites before Contributor Day (#339) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Creating a WordPress core development site downloads the repository, installs its dependencies, and runs a full build. Doing that for every participant at the start of a Contributor Day puts unnecessary pressure on the venue's shared connection and delays contributions. ## What changes The landing page now recommends creating the first site at home before the event and links directly to **Update to latest trunk**. The Getting Started guide explains why the initial setup downloads many files and how arriving with one prepared site lets contributors fetch only recent changes, reusing cached packages where possible. ## How to test this Platforms: any. This changes only the documentation site. **Starting state:** this branch checked out with the `docs/` dependencies installed. 1. Run `npm run docs:dev` and open the landing page. 2. Find **Made for Contributor Days**. Expect it to recommend creating a site before the event. 3. Click **Update to latest trunk**. Expect the trunk-update guide to open. 4. Open **Getting started**. Expect a **Prepare at home before Contributor Day** tip before **Install the app**. 5. Follow the link in that tip. Expect the same trunk-update guide to open. 6. Run `npm run docs:build`. Expect the production build to finish without errors. **What must not have happened:** the landing page must not display Markdown brackets as literal text, and the copy must not claim that a trunk update can never reinstall dependencies. ## Risks and limitations The exact download savings depend on how much trunk and `package-lock.json` changed since setup. The copy says dependencies are reinstalled when needed and packages are generally reused from the cache; it does not promise a fixed download size. Self-review: 0 `[fix here]` · 0 `[follow-up]`. ## Related Stacked on #337, with #336 as the first PR in the stack. ---
Design decisions and alternatives considered The recommendation appears as a short linked feature on the landing page and a fuller tip in Getting Started. VitePress does not parse Markdown inside a home feature's `details` field, so the feature uses the supported `link` and `linkText` fields instead.
Review outcome (required — see AGENTS.md) 0 `[fix here]` · 0 `[follow-up]`. No findings across architecture, security, performance, cross-platform, or tests. The reviewer also verified that the wording matches the app's shallow clone, conditional dependency installation, package cache, and trunk-update behavior.
Implementation notes Verification passed: ESLint, 1,017 Node tests, VitePress production build, `git diff --check`, and inspection of the generated internal links.
--- AGENTS.md | 4 ++++ docs/guide/getting-started.md | 6 ++++++ docs/index.md | 4 +++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index f3c6712..4b50177 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -131,6 +131,10 @@ When writing manual test instructions, inspect the current renderer flow first a actions that happen automatically after linking a ticket from controls used only to retry or refresh them. Do not tell a tester to click a control when the app already starts that operation. +When asked to add an existing pull request to an existing stack, preserve its commits and change +its base to the head branch of the current top PR. Do not move commits into an earlier PR unless +the user explicitly asks to rewrite the stack. + ## Architecture notes (non-obvious) - **Child processes run on Electron's own Node, not the system Node.** `npm install`, diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md index 17d09f3..57730e4 100644 --- a/docs/guide/getting-started.md +++ b/docs/guide/getting-started.md @@ -10,6 +10,12 @@ You install it, choose a directory for `wordpress-develop`, click a button, and No Git, no Node.js, no npm, no Docker needed. Everything is bundled inside the application as JavaScript/WASM, powered by [WordPress Playground](https://wordpress.github.io/wordpress-playground/). +::: tip Prepare at home before Contributor Day +Creating your first site downloads the full `wordpress-develop` repository, installs its dependencies, and runs the first build. That means downloading a lot of files, so we recommend having at least one site fully set up a day or a few days before the event. + +On Contributor Day, open that site and run [**Update to latest trunk**](./trunk-updates). The app fetches the changes made since your initial setup and only reinstalls dependencies if they changed. Most packages will already be cached, which uses far less of the venue's shared bandwidth than starting from scratch. +::: + ## Install the app diff --git a/docs/index.md b/docs/index.md index 7b61bf9..2001d09 100644 --- a/docs/index.md +++ b/docs/index.md @@ -16,7 +16,9 @@ features: - title: A full core environment in one click details: The app clones wordpress-develop, installs dependencies, builds, and starts a dev server — the whole toolchain ships inside the app as JavaScript and WASM. - title: Made for Contributor Days - details: First-time contributors often spend a whole session fighting their local setup. The Toolkit removes that step so the day is spent contributing. + details: Create your first site at home a day or two before the event. On Contributor Day, update it to download the recent changes instead of the full repository and all its dependencies. + link: /guide/trunk-updates + linkText: Update to latest trunk - title: From code change to contribution details: Link a Trac ticket, apply an existing patch or PR, and submit your own changes as a pull request, a Trac attachment, or a patch for your mentor. - title: One site, as many tickets as you like From 5df2e48761f72abd741ce0f2c19d2447bdfdddf0 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Thu, 13 Aug 2026 17:28:52 +0200 Subject: [PATCH 34/53] Remove test mode from pull request docs --- docs/guide/submit-github-pr.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/guide/submit-github-pr.md b/docs/guide/submit-github-pr.md index da183cf..2945e40 100644 --- a/docs/guide/submit-github-pr.md +++ b/docs/guide/submit-github-pr.md @@ -33,9 +33,3 @@ Two things a first-timer has no way to know, stated on the card before the butto - Nothing is merged on GitHub. A committer applies the change themselves, and the ticket is where they decide to. The card links to [the core handbook page on pull requests](https://make.wordpress.org/core/handbook/contribute/git/github-pull-requests-for-code-review/). - -## Test mode - -Developers of the app itself can point this flow at a sandbox repository, or make it a dry run that pushes a branch without opening a pull request. When either switch is set, a **Test mode** banner appears on the card saying exactly what will happen, and the dry-run button reads **Push branch (dry run)** instead of **Open pull request**. In a normal build you will never see this banner. - -If a build has no GitHub application configured, the card says so — it cannot open a pull request, but the other destinations still work. From 9f1a3f15d2f6939e3d9b57974ba8c7872da1033c Mon Sep 17 00:00:00 2001 From: JuanMa Date: Fri, 14 Aug 2026 14:52:43 +0200 Subject: [PATCH 35/53] Fix line-ending compatibility without changing repository config (#342) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why WordPress Contributor Toolkit RC2 writes `core.autocrlf=true` into every managed repository's local Git configuration, including on macOS/Linux and when a contributor explicitly chose `false` or `input`. The compatibility workaround is needed for native-Git CRLF checkouts on Windows, but it must not silently change persistent repository policy. ## What changes `isomorphic-git` now receives a Windows-only, in-memory view of `core.autocrlf=true` when the local value is unset. Explicit local values pass through unchanged, non-Windows platforms use the original filesystem, and config-read failures emit a diagnostic instead of being swallowed. Status, patch generation, ticket parking, discard, and trunk-update operations use that scoped filesystem view. Nothing writes `.git/config`. ## How to test this **Platform: Windows 11.** Use the signed Buildkite artifact for the current PR head commit. The procedure uses only PowerShell and tools bundled with the app; Git, Node, npm, and Docker are not required on the host. **Starting state:** A disposable site created by the toolkit with setup complete. From **Open directory in → File Explorer**, open PowerShell in the site's root. Confirm `Test-Path ".git\config"` and `Test-Path "src\wp-login.php"` both return `True`. 1. Back up `.git/config`, then remove only `autocrlf` from its `[core]` section: ```powershell $configPath = Join-Path $PWD ".git\config" $configBackup = Join-Path $env:TEMP "toolkit-git-config.backup" Copy-Item $configPath $configBackup -Force $lines = [IO.File]::ReadAllLines($configPath) $inCore = $false $filtered = foreach ($line in $lines) { if ($line -match '^\s*\[([^\]]+)\]\s*$') { $inCore = $Matches[1] -ieq 'core' } if ($inCore -and $line -match '^\s*autocrlf\s*=') { continue } $line } $utf8NoBom = New-Object System.Text.UTF8Encoding($false) [IO.File]::WriteAllLines($configPath, $filtered, $utf8NoBom) Select-String -Path $configPath -Pattern '^\s*autocrlf\s*=' ``` Expected: `Select-String` prints nothing. 2. Convert one tracked WordPress file to CRLF without Git and record the configuration hash: ```powershell $target = Join-Path $PWD "src\wp-login.php" $targetBackup = Join-Path $env:TEMP "toolkit-wp-login.php.backup" Copy-Item $target $targetBackup -Force $content = [IO.File]::ReadAllText($target) $content = $content.Replace("`r`n", "`n").Replace("`n", "`r`n") [IO.File]::WriteAllText($target, $content, $utf8NoBom) ([IO.File]::ReadAllText($target)).Contains("`r`n") $configBefore = (Get-FileHash $configPath -Algorithm SHA256).Hash ``` Expected: the line-ending check returns `True`. 3. Return focus to the toolkit and wait for status to refresh. Expected: the site remains clean. No unassigned-changes notice appears and there are no phantom modifications. Back in PowerShell, `(Get-FileHash $configPath -Algorithm SHA256).Hash -eq $configBefore` returns `True`. 4. Create one real file: ```powershell $testFile = Join-Path $PWD "src\autocrlf-toolkit-test.txt" [IO.File]::WriteAllText($testFile, "toolkit autocrlf test`r`n", $utf8NoBom) ``` 5. Return focus to the toolkit and click **create and save a patch** in the one-change notice. Expected: **Review & submit changes** contains only `src/autocrlf-toolkit-test.txt` and `+toolkit autocrlf test`. `src/wp-login.php` and other CRLF-only files do not appear. Close the modal; the `.git/config` hash must still equal `$configBefore`. 6. Delete the real change with `Remove-Item $testFile`, return focus to the toolkit, and confirm the site becomes clean again. Keep `wp-login.php` in CRLF. Choose **More → Update to latest trunk**. Expected: the update starts without a dirty-tree warning and completes successfully. Dependencies remain unchanged; a rebuild may run if trunk changed. 7. Verify the final state: ```powershell $configAfterUpdate = (Get-FileHash $configPath -Algorithm SHA256).Hash $configBefore -eq $configAfterUpdate ([IO.File]::ReadAllText($target)).Contains("`r`n") ``` Expected: both expressions return `True`. Do not restore the old `wp-login.php` backup after updating trunk because it may contain an earlier revision. Delete the disposable site through the app when finished. **What must not have happened:** `.git/config` must not change; the patch must not contain CRLF-only WordPress files; status and patch checks must not remove or rebuild `node_modules`; the trunk update must not reinstall unchanged dependencies. Automated checks: - `npm run lint` - `npm test` — 1,027 passed - `npm run test:electron` — 1,027 passed The automated suite also covers explicit `core.autocrlf` values `true`, `false`, and `input`, non-Windows behavior, config-read failures, and worktree-style `.git` files. ## Risks and limitations Repositories already modified by RC2 retain `core.autocrlf=true`. The app cannot safely distinguish its historical write from a contributor's intentional value, so automatic cleanup is deliberately out of scope. There is no visible UI change. The signed Windows artifact for commit `1957967` was tested manually on Windows 11. Status, patch generation, and trunk update all handled the CRLF fixture correctly; `.git/config` remained byte-for-byte unchanged and the update kept dependencies unchanged. ## Related Fixes #341 ---
Design decisions and alternatives considered Temporarily writing and restoring `.git/config` was rejected because a crash or concurrent operation could leave the temporary value behind. The filesystem wrapper instead changes only what `isomorphic-git` sees for the duration of an operation. Explicit `false` and `input` values are honored rather than virtually overridden. A checkout inconsistent with its explicit local policy may therefore appear dirty; preserving that policy is preferable to silently second-guessing it.
Review outcome (required — see AGENTS.md) 0 `[fix here]` · 1 `[follow-up]`. The follow-up is the known RC2 residue described under Risks and limitations. It is deferred because removing an existing `true` value could erase an intentional contributor setting. No new findings across architecture, security, performance, cross-platform, or tests.
Implementation notes The wrapper supports both ordinary `.git/config` directories and worktree-style `.git` files. Tests inject Windows and non-Windows platforms from one machine and cover unset, `true`, `false`, `input`, config-read failures, and a worktree file named `config`.
--- src/main.js | 10 +- src/ticket-branches.js | 13 ++- src/trunk-update.js | 130 +++++++++++++++++-------- test/trunk-update.integration.test.cjs | 101 ++++++++++++++++++- 4 files changed, 203 insertions(+), 51 deletions(-) diff --git a/src/main.js b/src/main.js index fe8eba3..9d1a272 100644 --- a/src/main.js +++ b/src/main.js @@ -431,7 +431,7 @@ function buildPatchHtml(content) { // Returns the base commit alongside the files because the pull request needs it // as the commit's parent, and it is the same oid the diff was taken against. async function collectChangedFiles(dir, baseOid = null) { - await ensureAutocrlf(dir); + const gitFs = await ensureAutocrlf(dir) || fs; // The diff base is the branch point of whatever ticket is being worked on // (#108) — the trunk snapshot this branch was created from, passed in by the // caller from the site's registry entry. @@ -455,9 +455,9 @@ async function collectChangedFiles(dir, baseOid = null) { // No branch point on record: a site still on trunk, or one adopted from // disk. HEAD is the trunk snapshot there, which is what this always used // to diff against. - try { base = await git.resolveRef({ fs, dir, ref: 'HEAD' }); } catch {} + try { base = await git.resolveRef({ fs: gitFs, dir, ref: 'HEAD' }); } catch {} if (!base) { - try { base = await git.resolveRef({ fs, dir, ref: 'refs/heads/trunk' }); } catch {} + try { base = await git.resolveRef({ fs: gitFs, dir, ref: 'refs/heads/trunk' }); } catch {} } } @@ -468,13 +468,13 @@ async function collectChangedFiles(dir, baseOid = null) { // and never unstaged it (#85) — with the branch point as the base it earns // nothing, so it is gone. (`staleStagedPaths` in trunk-update.js stays: it // still has to clean up residue left in indexes by earlier versions.) - const matrix = await git.statusMatrix({ fs, dir, ref: base }); + const matrix = await git.statusMatrix({ fs: gitFs, dir, ref: base }); const changed = matrix.filter(([, head, workdir]) => head !== workdir); const files = []; for (const [filepath, head, workdir] of changed) { const abs = path.join(dir, filepath); const workBuf = workdir ? await fs.promises.readFile(abs).catch(() => null) : null; - const baseBlob = head && base ? await git.readBlob({ fs, dir, oid: base, filepath }).catch(() => null) : null; + const baseBlob = head && base ? await git.readBlob({ fs: gitFs, dir, oid: base, filepath }).catch(() => null) : null; files.push({ path: filepath, // The status codes, not the buffers, are what say whether a file is diff --git a/src/ticket-branches.js b/src/ticket-branches.js index 19b104e..2acc9c8 100644 --- a/src/ticket-branches.js +++ b/src/ticket-branches.js @@ -106,11 +106,12 @@ async function listTicketBranches(dir) { * @param {Function} [onProgress] told how far the staging has got (#173) */ async function stageWorktree(dir, matrix = null, onProgress = null) { + const gitFs = await ensureAutocrlf(dir); // The caller has usually just scanned the worktree to decide whether there // was anything to park. On wordpress-develop that scan hashes thousands of // files on the main process's event loop, so it is passed in and reused // rather than repeated. - if (!matrix) matrix = await git.statusMatrix({ fs, dir }); + if (!matrix) matrix = await git.statusMatrix({ fs: gitFs, dir }); // The one stage of a park with a real total, and it comes free: the rows // worth staging are known before any of them is written. const pending = matrix.filter(([, head, workdir, stage]) => !(head === workdir && workdir === stage)); @@ -118,9 +119,9 @@ async function stageWorktree(dir, matrix = null, onProgress = null) { for (const [filepath, , workdir] of pending) { if (workdir === 0) { // Gone from disk: drop it from the index, and from the next commit. - try { await git.remove({ fs, dir, filepath }); staged += 1; } catch {} + try { await git.remove({ fs: gitFs, dir, filepath }); staged += 1; } catch {} } else { - try { await git.add({ fs, dir, filepath }); staged += 1; } catch {} + try { await git.add({ fs: gitFs, dir, filepath }); staged += 1; } catch {} } if (onProgress) onProgress({ stage: 'stage', loaded: staged, total: pending.length }); } @@ -166,7 +167,8 @@ async function countChangesAgainst(dir, ref = 'HEAD') { * @param {string} [ref] */ async function scanWorktree(dir, ref = 'HEAD') { - const matrix = await git.statusMatrix({ fs, dir, ref }); + const gitFs = await ensureAutocrlf(dir); + const matrix = await git.statusMatrix({ fs: gitFs, dir, ref }); return { matrix, changed: matrix.some(([, head, workdir]) => head !== workdir) }; } @@ -186,7 +188,6 @@ async function scanWorktree(dir, ref = 'HEAD') { * @param {Function} [root0.onProgress] told which stage of the park is running (#173) */ async function parkCurrentWork(dir, { baseOid, author = WIP_AUTHOR, onProgress = null } = {}) { - await ensureAutocrlf(dir); const branch = await currentBranchName(dir); if (!branch || branch === TRUNK) { const error = new Error('Refusing to commit on trunk — it is the diff base for every ticket'); @@ -230,7 +231,6 @@ async function parkCurrentWork(dir, { baseOid, author = WIP_AUTHOR, onProgress = * @param {number|string} ticketId */ async function startTicketBranch(dir, ticketId) { - await ensureAutocrlf(dir); const ref = ticketBranchRef(ticketId); const existing = await git.listBranches({ fs, dir }); if (existing.includes(ref)) { @@ -269,7 +269,6 @@ async function startTicketBranch(dir, ticketId) { * @param {Function} [root0.onProgress] told which stage is running (#173) */ async function switchToBranch(dir, ref, { baseOid, author = WIP_AUTHOR, onProgress = null } = {}) { - await ensureAutocrlf(dir); const from = await currentBranchName(dir); if (from === ref) return { switched: false, from, to: ref, parked: false }; diff --git a/src/trunk-update.js b/src/trunk-update.js index b4feed7..a08a5dc 100644 --- a/src/trunk-update.js +++ b/src/trunk-update.js @@ -22,24 +22,77 @@ const { } = require('./git-update.cjs'); /** - * A site checked out by native git on Windows (default core.autocrlf=true, - * set globally — which isomorphic-git never reads) has CRLF on disk while - * wordpress-develop's blobs are LF-only. Without this, statusMatrix hashes - * the raw CRLF bytes and reports every text file as modified (~5k phantom - * changes; isomorphic-git#1275). Writing core.autocrlf into the site's LOCAL - * config makes isomorphic-git strip CRLF before hashing workdir files. LF - * checkouts are unaffected. Called before every status/patch/update git op - * so pre-existing sites are covered, not just new clones. + * Give isomorphic-git a Windows-only, in-memory view of core.autocrlf=true + * when the repository has no explicit local value. Native Git may have + * checked the worktree out as CRLF because of the contributor's global config, + * which isomorphic-git does not read; without this view, statusMatrix reports + * roughly 5,000 phantom modifications (isomorphic-git#1275). * - * @param {string} dir + * The wrapper intercepts only reads of Git's config file. It never writes the + * repository, and explicit local values (true, false, or input) pass through + * unchanged. Non-Windows platforms use the original filesystem untouched. + * + * @param {string} dir + * @param {Object} [options] + * @param {string} [options.platform] + * @param {typeof fs} [options.fileSystem] + * @param {Function} [options.onError] + * @return {typeof fs} */ -async function ensureAutocrlf(dir) { - try { - const current = await git.getConfig({ fs, dir, path: 'core.autocrlf' }); - if (current !== 'true') { - await git.setConfig({ fs, dir, path: 'core.autocrlf', value: 'true' }); +function createCrlfCompatibleFs(dir, { + platform = process.platform, + fileSystem = fs, + onError = (error) => process.emitWarning( + `Could not provide CRLF compatibility for ${dir}: ${String(error && error.message ? error.message : error)}`, + { code: 'WCT_CRLF_CONFIG' } + ) +} = {}) { + if (platform !== 'win32') return fileSystem; + + const dotGitPath = path.resolve(dir, '.git'); + let configPath = path.join(dotGitPath, 'config'); + const promises = Object.create(fileSystem.promises); + Object.defineProperty(promises, 'readFile', { + enumerable: true, + value: async (filepath, options) => { + let content; + try { + content = await fileSystem.promises.readFile(filepath, options); + } catch (error) { + if (path.resolve(String(filepath)) === configPath) onError(error); + throw error; + } + const resolvedPath = path.resolve(String(filepath)); + if (resolvedPath === dotGitPath) { + const gitdir = String(content).match(/^gitdir:\s*(.+)\s*$/im); + if (gitdir) configPath = path.resolve(dir, gitdir[1].trim(), 'config'); + return content; + } + if (resolvedPath !== configPath) return content; + + const text = Buffer.isBuffer(content) ? content.toString('utf8') : String(content); + let inCore = false; + const hasAutocrlf = text.split(/\r?\n/).some((line) => { + const section = line.match(/^\s*\[([^\]]+)\]\s*(?:[#;].*)?$/); + if (section) { + inCore = section[1].trim().toLowerCase() === 'core'; + return false; + } + return inCore && /^\s*autocrlf\s*=/.test(line.toLowerCase()); + }); + if (hasAutocrlf) return content; + + const compatible = `${text.replace(/\s*$/, '')}\n[core]\n\tautocrlf = true\n`; + return Buffer.isBuffer(content) ? Buffer.from(compatible, 'utf8') : compatible; } - } catch {} + }); + const compatibleFs = Object.create(fileSystem); + Object.defineProperty(compatibleFs, 'promises', { enumerable: true, value: promises }); + return compatibleFs; +} + +async function ensureAutocrlf(dir, options) { + return createCrlfCompatibleFs(dir, options); } /** @@ -97,8 +150,8 @@ async function isCrlfOnlyChange(dir, headOid, filepath) { * @param {string} dir */ async function collectDirtyFiles(dir) { - await ensureAutocrlf(dir); - const matrix = await git.statusMatrix({ fs, dir }); + const gitFs = await ensureAutocrlf(dir); + const matrix = await git.statusMatrix({ fs: gitFs, dir }); let headOid = null; try { headOid = await git.resolveRef({ fs, dir, ref: 'HEAD' }); } catch {} const files = []; @@ -123,18 +176,18 @@ async function collectDirtyFiles(dir) { * @param {string} dir */ async function discardChanges(dir) { - await ensureAutocrlf(dir); - const matrix = await git.statusMatrix({ fs, dir }); + const gitFs = await ensureAutocrlf(dir); + const matrix = await git.statusMatrix({ fs: gitFs, dir }); for (const [filepath, head, workdir] of matrix) { if (head === 0) { - try { await git.remove({ fs, dir, filepath }); } catch {} + try { await git.remove({ fs: gitFs, dir, filepath }); } catch {} if (workdir !== 0) { try { await fs.promises.unlink(path.join(dir, filepath)); } catch {} } } } - const ref = (await git.currentBranch({ fs, dir, fullname: false })) || 'trunk'; - await git.checkout({ fs, dir, ref, force: true }); + const ref = (await git.currentBranch({ fs: gitFs, dir, fullname: false })) || 'trunk'; + await git.checkout({ fs: gitFs, dir, ref, force: true }); } /** @@ -157,32 +210,32 @@ async function discardChanges(dir) { * @param {string} baseOid The commit the modal diffed against — the branch point. */ async function discardToBase(dir, baseOid) { - await ensureAutocrlf(dir); - const matrix = await git.statusMatrix({ fs, dir }); + const gitFs = await ensureAutocrlf(dir); + const matrix = await git.statusMatrix({ fs: gitFs, dir }); for (const [filepath, head, workdir] of matrix) { if (head === 0) { - try { await git.remove({ fs, dir, filepath }); } catch {} + try { await git.remove({ fs: gitFs, dir, filepath }); } catch {} if (workdir !== 0) { try { await fs.promises.unlink(path.join(dir, filepath)); } catch {} } } } - const ref = (await git.currentBranch({ fs, dir, fullname: false })) || 'trunk'; + const ref = (await git.currentBranch({ fs: gitFs, dir, fullname: false })) || 'trunk'; // Only rewind the ref when baseOid really is this branch's own history — its // point off trunk. A caller can hand over a commit that is not an ancestor of // HEAD; moving the ref onto it would // orphan the branch's commits and re-point it at unrelated work. When it is // not an ancestor, leave the ref alone and just reset the worktree to HEAD — // the uncommitted-only discard, which never throws away committed work. - const head = await git.resolveRef({ fs, dir, ref: 'HEAD' }); + const head = await git.resolveRef({ fs: gitFs, dir, ref: 'HEAD' }); let rewind = false; if (baseOid !== head) { - try { rewind = await git.isDescendent({ fs, dir, oid: head, ancestor: baseOid }); } catch { rewind = false; } + try { rewind = await git.isDescendent({ fs: gitFs, dir, oid: head, ancestor: baseOid }); } catch { rewind = false; } } if (rewind) { - await git.writeRef({ fs, dir, ref: `refs/heads/${ref}`, value: baseOid, force: true }); + await git.writeRef({ fs: gitFs, dir, ref: `refs/heads/${ref}`, value: baseOid, force: true }); } - await git.checkout({ fs, dir, ref, force: true }); + await git.checkout({ fs: gitFs, dir, ref, force: true }); } /** @@ -207,14 +260,14 @@ async function discardToBase(dir, baseOid) { * @param {Function} [root0.onLog] */ async function updateToLatestTrunk({ dir, url, onLog = () => {} }) { - await ensureAutocrlf(dir); + const gitFs = await ensureAutocrlf(dir); let stage = 'fetch'; let worktreeReset = false; try { - const oldOid = await git.resolveRef({ fs, dir, ref: 'HEAD' }); + const oldOid = await git.resolveRef({ fs: gitFs, dir, ref: 'HEAD' }); onLog('Fetching latest trunk…\n'); const fetchResult = await git.fetch({ - fs, http, dir, url, + fs: gitFs, http, dir, url, ref: 'trunk', singleBranch: true, depth: 1, @@ -222,7 +275,7 @@ async function updateToLatestTrunk({ dir, url, onLog = () => {} }) { onProgress: (evt) => onLog(`${evt.phase || 'fetch'} ${evt.loaded || 0}/${evt.total || 0}\r`) }); let newOid = fetchResult && fetchResult.fetchHead; - if (!newOid) newOid = await git.resolveRef({ fs, dir, ref: 'refs/remotes/origin/trunk' }); + if (!newOid) newOid = await git.resolveRef({ fs: gitFs, dir, ref: 'refs/remotes/origin/trunk' }); if (newOid === oldOid) { const { trunkDate } = await readTrunkInfo(dir); @@ -241,19 +294,19 @@ async function updateToLatestTrunk({ dir, url, onLog = () => {} }) { // checkout({force}) deletes workdir files that are in the index but // absent from the target tree, so drop those index entries first // (index-only — the workdir files survive). - const matrix = await git.statusMatrix({ fs, dir }); + const matrix = await git.statusMatrix({ fs: gitFs, dir }); for (const filepath of staleStagedPaths(matrix)) { - try { await git.remove({ fs, dir, filepath }); } catch {} + try { await git.remove({ fs: gitFs, dir, filepath }); } catch {} } onLog(`\nResetting to latest trunk (${newOid.slice(0, 7)})…\n`); - await git.writeRef({ fs, dir, ref: 'refs/heads/trunk', value: newOid, force: true }); + await git.writeRef({ fs: gitFs, dir, ref: 'refs/heads/trunk', value: newOid, force: true }); // Everything above this line can fail with the working tree untouched — // statusMatrix walks a 5k-file checkout and writeRef only moves a ref. // From here on, files are being overwritten, so anything the tree used to // hold (an applied patch) has to be assumed gone even if the call throws. worktreeReset = true; await git.checkout({ - fs, dir, ref: 'trunk', force: true, + fs: gitFs, dir, ref: 'trunk', force: true, onProgress: (evt) => onLog(`${evt.phase || 'checkout'} ${evt.loaded || 0}/${evt.total || 0}\r`) }); @@ -271,6 +324,7 @@ async function updateToLatestTrunk({ dir, url, onLog = () => {} }) { module.exports = { ensureAutocrlf, + createCrlfCompatibleFs, readTrunkInfo, collectDirtyFiles, discardChanges, diff --git a/test/trunk-update.integration.test.cjs b/test/trunk-update.integration.test.cjs index 47de700..e2270a2 100644 --- a/test/trunk-update.integration.test.cjs +++ b/test/trunk-update.integration.test.cjs @@ -13,7 +13,13 @@ const fs = require('node:fs'); const os = require('node:os'); const path = require('node:path'); const git = require('isomorphic-git'); -const { collectDirtyFiles, discardChanges, discardToBase, readTrunkInfo } = require('../src/trunk-update.js'); +const { + collectDirtyFiles, + createCrlfCompatibleFs, + discardChanges, + discardToBase, + readTrunkInfo +} = require('../src/trunk-update.js'); const AUTHOR = { name: 'test', email: 'test@example.com' }; @@ -42,6 +48,99 @@ test('collectDirtyFiles: CRLF-smudged files, UTF-8 or not, are not dirty (issue assert.deepStrictEqual(await collectDirtyFiles(dir), []); }); +for (const platform of ['darwin', 'linux']) { + test(`CRLF compatibility: ${platform} leaves an unset local core.autocrlf untouched (issue #341)`, async (t) => { + const dir = await makeRepo(t); + const compatibleFs = createCrlfCompatibleFs(dir, { platform }); + + assert.strictEqual(await git.getConfig({ fs: compatibleFs, dir, path: 'core.autocrlf' }), undefined); + assert.strictEqual(await git.getConfig({ fs, dir, path: 'core.autocrlf' }), undefined); + }); +} + +for (const value of [undefined, 'true', 'false', 'input']) { + test(`CRLF compatibility: Windows preserves local core.autocrlf=${value ?? 'unset'} (issue #341)`, async (t) => { + const dir = await makeRepo(t); + if (value !== undefined) { + await git.setConfig({ fs, dir, path: 'core.autocrlf', value }); + } + + const compatibleFs = createCrlfCompatibleFs(dir, { platform: 'win32' }); + const visibleValue = await git.getConfig({ fs: compatibleFs, dir, path: 'core.autocrlf' }); + + assert.strictEqual(visibleValue, value ?? 'true'); + assert.strictEqual(await git.getConfig({ fs, dir, path: 'core.autocrlf' }), value); + }); +} + +test('CRLF compatibility: Windows normalizes a CRLF checkout without persisting config (issue #341)', async (t) => { + const dir = await makeRepo(t); + fs.writeFileSync(path.join(dir, 'text.txt'), 'line1\r\nline2\r\n'); + const compatibleFs = createCrlfCompatibleFs(dir, { platform: 'win32' }); + + const matrix = await git.statusMatrix({ fs: compatibleFs, dir }); + + assert.deepStrictEqual(matrix.find(([filepath]) => filepath === 'text.txt'), ['text.txt', 1, 1, 1]); + assert.strictEqual(await git.getConfig({ fs, dir, path: 'core.autocrlf' }), undefined); +}); + +test('CRLF compatibility: a worktree file named config is not altered in memory (issue #341)', async (t) => { + const dir = await makeRepo(t); + fs.writeFileSync(path.join(dir, 'config'), 'ordinary worktree content\n'); + const compatibleFs = createCrlfCompatibleFs(dir, { platform: 'win32' }); + + assert.strictEqual( + await compatibleFs.promises.readFile(path.join(dir, 'config'), 'utf8'), + 'ordinary worktree content\n' + ); +}); + +test('CRLF compatibility: a gitdir file receives the same non-persistent view (issue #341)', async (t) => { + const root = fs.mkdtempSync(path.join(os.tmpdir(), 'autocrlf-gitdir-test-')); + t.after(() => fs.rmSync(root, { recursive: true, force: true })); + const dir = path.join(root, 'worktree'); + const gitdir = path.join(root, 'actual-git'); + fs.mkdirSync(dir); + fs.mkdirSync(gitdir); + fs.writeFileSync(path.join(dir, '.git'), 'gitdir: ../actual-git\n'); + fs.writeFileSync(path.join(gitdir, 'config'), '[core]\n\trepositoryformatversion = 0\n'); + const compatibleFs = createCrlfCompatibleFs(dir, { platform: 'win32' }); + + await compatibleFs.promises.readFile(path.join(dir, '.git'), 'utf8'); + const visibleConfig = await compatibleFs.promises.readFile(path.join(gitdir, 'config'), 'utf8'); + + assert.match(visibleConfig, /autocrlf = true/); + assert.doesNotMatch(fs.readFileSync(path.join(gitdir, 'config'), 'utf8'), /autocrlf/); +}); + +test('CRLF compatibility: config read failures are logged and remain failures (issue #341)', async (t) => { + const dir = await makeRepo(t); + const errors = []; + const failingFs = Object.create(fs); + const promises = Object.create(fs.promises); + promises.readFile = async (filepath, options) => { + if (path.resolve(filepath) === path.resolve(dir, '.git', 'config')) { + const error = new Error('config is unreadable'); + error.code = 'EACCES'; + throw error; + } + return fs.promises.readFile(filepath, options); + }; + Object.defineProperty(failingFs, 'promises', { enumerable: true, value: promises }); + const compatibleFs = createCrlfCompatibleFs(dir, { + platform: 'win32', + fileSystem: failingFs, + onError: (error) => errors.push(error) + }); + + await assert.rejects( + compatibleFs.promises.readFile(path.join(dir, '.git', 'config'), 'utf8'), + { code: 'EACCES' } + ); + assert.strictEqual(errors.length, 1); + assert.match(errors[0].message, /config is unreadable/); +}); + test('collectDirtyFiles: real edits and untracked files are detected (issue #94)', async (t) => { const dir = await makeRepo(t); fs.appendFileSync(path.join(dir, 'text.txt'), 'line3\n'); From a006f59ec681fa25eec4fcb51f2de37783d3b067 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Fri, 14 Aug 2026 15:26:02 +0200 Subject: [PATCH 36/53] Bump version to 1.0.0 and point homepage at the docs site (#343) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why `v1.0.0-rc.2` shipped on 13 August as the second release candidate. Testing it on Windows found one behaviour bug, now fixed on `trunk` (#342: the CRLF workaround wrote `core.autocrlf` into every managed repository's config, on every platform). The other four commits since that tag are documentation and guide screenshots (#336, #337, #339). Nothing else is outstanding, so the next version is the stable `1.0.0`. The package version must move before its tag and artifacts are created, because `electron-builder` derives artifact names from `package.json`. Two metadata corrections, no application behavior change. ## What changes **The version.** All three package-version fields in `package.json` and `package-lock.json` move together from `1.0.0-rc.2` to `1.0.0`. No dependency versions change. **`homepage`.** It still pointed at `https://github.com/WordPress/experimental-wp-dev-env`, the repository's name before the rename, and it pointed at a repository rather than at a place a contributor would want to land. It now points at the documentation site, `https://wordpress.github.io/contributor-toolkit/` — the Pages deployment `docs/.vitepress/config.mjs` builds with `base: '/contributor-toolkit/'`. Shipping a 1.0 whose package metadata names the old repository is the reason to fix it now rather than later. **`repository` and `bugs`, which did not exist.** `homepage` was the only field naming the repository, so pointing it at the documentation site would have left the package metadata with no reference to the repository at all. Both fields are now present and name `contributor-toolkit`, which is where that information belongs. `electron-builder` derives artifact names from `package.json`, producing: - `wordpress-contributor-toolkit-1.0.0-mac-arm64.dmg` - `wordpress-contributor-toolkit-1.0.0-win-x64.exe` - `wordpress-contributor-toolkit-1.0.0-linux-x86_64.AppImage` ## How to test this Platforms: any; this is package metadata and is platform-independent. **Starting state:** this branch checked out with dependencies installed. 1. Run `node -p "require('./package.json').version"`. - Expected: `1.0.0`. 2. Run `node -e "const p=require('./package-lock.json'); console.log(p.version, p.packages[''].version)"`. - Expected: `1.0.0 1.0.0`. 3. Run `node -p "require('./package.json').homepage"`. - Expected: `https://wordpress.github.io/contributor-toolkit/`, and opening it in a browser reaches the toolkit's documentation site rather than a 404. 4. Run `npm run lint` and `npm test`. - Expected: lint succeeds and all 1,027 tests pass. **What must not have happened:** dependency versions and resolved packages must remain unchanged; no source, documentation, workflow, or build configuration file should be in the diff. ## Risks and limitations No user-visible behavior changed, so there is no desktop flow or screenshot to test by hand. The signed artifacts will only exist after this PR lands and the release build runs. Dropping the pre-release suffix means the resulting GitHub release is the first one to take the **Latest** badge from `v0.1.2`. ## Related Follow-up to #335. Ships the fixes in #342, #336, #337 and #339 as the stable 1.0. ---
Design decisions and alternatives considered The version goes straight to `1.0.0` rather than to a third release candidate: the only behaviour change since rc.2 is #342, which was itself the finding rc.2 existed to surface, and it has been verified on Windows. The release tag will add the conventional `v` prefix; package metadata does not.
Review outcome (required — see AGENTS.md) `0 [fix here] · 0 [follow-up]`. No findings across architecture, security, performance, cross-platform, or tests. `npm run lint`, `npm test` (1,027/1,027), and `git diff --check` pass. The stale `homepage` was itself the review's one observation, and is fixed in this PR. Nothing reads `homepage` at runtime, and `electron-builder` has no `publish` block that would derive an update feed from it, so the change is metadata only. Verified as part of the review: no source, script, docs, `.buildkite/` or workflow file embeds the app version (`src/logging.js:78` reads it via `app.getVersion()`); the lockfile diff carries no dependency or integrity churn; `electron-builder` is prerelease-agnostic — the artifact template at `package.json:30` is `…-${version}-${os}-${arch}.${ext}` and the repo has no `publish` block, no channel and no auto-updater, so dropping the suffix only shortens the filenames; and nothing in CI keys off a tag or version pattern. One consequence worth stating: `docs/.vitepress/theme/DownloadButton.vue` resolves `releases/latest`, which the GitHub API defines as excluding pre-releases. Since `v0.1.2` the button has been falling back to the Releases page for everyone. Publishing 1.0.0 as a non-prerelease is what makes it resolve a real asset again.
Implementation notes `npm version 1.0.0 --no-git-tag-version` keeps `package.json`, the lockfile root `version` and `packages[""].version` synchronized. The diff was checked to confirm those are the only changed values.
--- package-lock.json | 4 ++-- package.json | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8593271..9e15ff3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "electron-setup-wordpress-core", - "version": "1.0.0-rc.2", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "electron-setup-wordpress-core", - "version": "1.0.0-rc.2", + "version": "1.0.0", "hasInstallScript": true, "license": "GPL-2.0-or-later", "dependencies": { diff --git a/package.json b/package.json index 0bc304e..f08f67e 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,18 @@ { "name": "electron-setup-wordpress-core", "author": "WordPress.org", - "version": "1.0.0-rc.2", + "version": "1.0.0", "private": true, "license": "GPL-2.0-or-later", "description": "Electron app to setup WordPress develop structure and run npm install", - "homepage": "https://github.com/WordPress/experimental-wp-dev-env", + "homepage": "https://wordpress.github.io/contributor-toolkit/", + "repository": { + "type": "git", + "url": "git+https://github.com/WordPress/contributor-toolkit.git" + }, + "bugs": { + "url": "https://github.com/WordPress/contributor-toolkit/issues" + }, "main": "src/main.js", "scripts": { "start": "npm run build:once && concurrently -k \"npm:build:watch\" \"electron .\"", From eb3acb36f7a417d6de7f3d328d89e51d87cf12d2 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Fri, 14 Aug 2026 15:26:02 +0200 Subject: [PATCH 37/53] Update the repository name in user-facing links and user agents (#344) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > **Stacked on #343.** Base branch is `juanmaguitar/Release-v1.0`, not `trunk`. Merge #343 first. ## Why The repository was renamed from `experimental-wp-dev-env` to `contributor-toolkit`. GitHub redirects the old URLs, so nothing is broken — which is exactly why the stale references survived. But they are user-facing, and 1.0 is the release that gets read: the README badges are the first thing on the repository page, and two of them are shields.io images built from the repository name rather than plain links. #343 fixed `package.json`. This is the rest of it. ## What changes Nine occurrences across six files, all of them `WordPress/experimental-wp-dev-env` → `WordPress/contributor-toolkit`: - `README.md` — the unit-tests, latest-release and downloads badges (image source and link target). - `STATS.md` — the two links to the `metrics` orphan branch and to `downloads.csv` on it. - `.github/ISSUE_TEMPLATE/Bug_report.yml` — the "search existing issues" URL shown to a reporter. - `.github/ISSUE_TEMPLATE/installation-bug.yml` — the download-source placeholder. - `src/trac-view.js` and `src/github-http.cjs` — the `+https://…` project URL inside the `WordPress-Contributor-Toolkit` user agent sent to Trac and to the GitHub API. The identifying prefix is unchanged; only the URL a server operator would follow moves. **Deliberately kept:** the old name in the comments at `docs/.vitepress/config.mjs:9` and `.github/workflows/docs.yml:14`. Both describe the rename itself and explain why the Pages base path is derived at run time rather than hardcoded, so the old name is the point of the sentence. The workflow comment did still say the repository "is being renamed"; it now matches the VitePress one and says the rename has already happened, which is also the accurate reason to keep deriving the path — the next rename, not this one. ## How to test this Platforms: any; this is text and metadata. **Starting state:** this branch checked out with dependencies installed. 1. Run `grep -rn "experimental-wp-dev-env" . | grep -v node_modules | grep -v "^./.git"`. - Expected: exactly two hits, the two explanatory comments named above. 2. Open the rendered `README.md` on this branch and confirm all three badges load an image rather than a broken-image icon, and that clicking each lands on the `contributor-toolkit` repository. 3. Follow both links in `STATS.md` and confirm they reach the `metrics` branch and `downloads.csv`. 4. Open **New issue** on this branch's fork and confirm both templates render, with the corrected URL in the bug-report description and the corrected placeholder in the installation-bug form. 5. Run `npm run lint` and `npm test`. - Expected: lint succeeds and all 1,027 tests pass. **What must not have happened:** the `WordPress-Contributor-Toolkit` prefix of either user agent must be unchanged — `test/github-http.test.cjs:56` asserts on it, and Trac's proof-of-work session is identified by it. ## Risks and limitations The user-agent change is the only line that leaves the machine. Its value is not persisted, not used as a cache key and not part of the Trac session partition (`persist:trac`), so an existing site's cleared proof-of-work challenge survives the change. Nothing here can be verified from the diff alone for the badges: shields.io builds them server-side from the repository name, so they can only be confirmed on the rendered page. ## Related Stacked on #343, which fixed the same stale name in `package.json` and added the missing `repository` and `bugs` fields. ---
Review outcome (required — see AGENTS.md) `0 [fix here] · 1 [follow-up, fixed here]`. No findings across architecture, security, performance, cross-platform or tests. `npm run lint` and `npm test` (1,027/1,027) pass. The follow-up was the tense of the `docs.yml` comment, which is in this PR's own subject matter and so was fixed here rather than deferred. Verified as part of the review: no test, fixture or snapshot pins the old user-agent string — the only assertion is `test/github-http.test.cjs:56` on the `WordPress-Contributor-Toolkit` prefix, and `test/trac-view.test.cjs:39` stubs `setUserAgent()` without inspecting its argument. Neither constant is value-sensitive: `src/github-http.cjs:91` only sets a request header, and the Trac partition is the literal `'persist:trac'` (`src/trac-view.js:27`), not derived from the user agent, so no cleared proof-of-work session is orphaned. `download-stats.yml:68` already uses `$GITHUB_REPOSITORY`, so the metrics branch keeps writing under whatever the repository is called.
--- .github/ISSUE_TEMPLATE/Bug_report.yml | 2 +- .github/ISSUE_TEMPLATE/installation-bug.yml | 2 +- .github/workflows/docs.yml | 6 +++--- README.md | 6 +++--- STATS.md | 4 ++-- src/github-http.cjs | 2 +- src/trac-view.js | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.yml b/.github/ISSUE_TEMPLATE/Bug_report.yml index 3c4722a..40053a8 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.yml +++ b/.github/ISSUE_TEMPLATE/Bug_report.yml @@ -64,7 +64,7 @@ body: id: existing attributes: label: Please confirm that you have searched existing issues in the repo. - description: You can do this by searching https://github.com/WordPress/experimental-wp-dev-env/issues + description: You can do this by searching https://github.com/WordPress/contributor-toolkit/issues options: - label: "Yes" required: true diff --git a/.github/ISSUE_TEMPLATE/installation-bug.yml b/.github/ISSUE_TEMPLATE/installation-bug.yml index 0fbbff8..6a5f2a7 100644 --- a/.github/ISSUE_TEMPLATE/installation-bug.yml +++ b/.github/ISSUE_TEMPLATE/installation-bug.yml @@ -40,7 +40,7 @@ body: attributes: label: Where did you download the app from? description: Please provide the exact URL or describe where you got it (e.g. GitHub Releases page, a blog post link, etc.). - placeholder: "e.g. https://github.com/WordPress/experimental-wp-dev-env/releases/tag/v1.0.0" + placeholder: "e.g. https://github.com/WordPress/contributor-toolkit/releases/tag/v1.0.0" validations: required: true diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3dd293a..d65f85c 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -11,9 +11,9 @@ # site, with a maintainer at the keyboard. shots.cjs says which ones and why. # # The site base path is derived from the repository name at run time rather than hardcoded, -# because a project Pages site lives under // and this repository is being renamed -# (experimental-wp-dev-env → contributor-toolkit). Deriving it means the rename cannot break -# every asset URL. +# because a project Pages site lives under // and this repository has already been +# renamed once (experimental-wp-dev-env → contributor-toolkit). Deriving it means another rename +# cannot break every asset URL. # # Pull requests get a build-only job: a broken link or bad markdown fails before merge, and # the deploy job (which holds the OIDC token) never runs on PR code. diff --git a/README.md b/README.md index 55e4184..359c2f2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ ## WordPress Contributor Toolkit (Electron) -[![Unit tests](https://github.com/WordPress/experimental-wp-dev-env/actions/workflows/unit-tests.yml/badge.svg?branch=trunk)](https://github.com/WordPress/experimental-wp-dev-env/actions/workflows/unit-tests.yml) -[![Latest release](https://img.shields.io/github/v/release/WordPress/experimental-wp-dev-env)](https://github.com/WordPress/experimental-wp-dev-env/releases/latest) -[![Downloads](https://img.shields.io/github/downloads/WordPress/experimental-wp-dev-env/total)](https://github.com/WordPress/experimental-wp-dev-env/releases) +[![Unit tests](https://github.com/WordPress/contributor-toolkit/actions/workflows/unit-tests.yml/badge.svg?branch=trunk)](https://github.com/WordPress/contributor-toolkit/actions/workflows/unit-tests.yml) +[![Latest release](https://img.shields.io/github/v/release/WordPress/contributor-toolkit)](https://github.com/WordPress/contributor-toolkit/releases/latest) +[![Downloads](https://img.shields.io/github/downloads/WordPress/contributor-toolkit/total)](https://github.com/WordPress/contributor-toolkit/releases) The [WordPress Contributor Toolkit](https://make.wordpress.org/core/2026/04/16/wordpress-core-dev-environment-toolkit-a-faster-path-to-your-first-core-contribution/) is a desktop Electron application (macOS on Apple Silicon, Windows, and Linux) that sets up a full WordPress core development environment with zero prerequisites — no Git, Node.js, npm or Docker on the host. diff --git a/STATS.md b/STATS.md index 6634920..b5fe09f 100644 --- a/STATS.md +++ b/STATS.md @@ -6,13 +6,13 @@ there is no npm install count, no Docker pull count, no telemetry in the app. GitHub reports a running total per release asset and keeps **no history**: the API returns the number as it stands today and nothing about how it got there. So a [weekly workflow](.github/workflows/download-stats.yml) records that total and commits it to -[`metrics`](https://github.com/WordPress/experimental-wp-dev-env/tree/metrics), an orphan branch +[`metrics`](https://github.com/WordPress/contributor-toolkit/tree/metrics), an orphan branch that shares no history with `trunk` and holds nothing but the data files. ### Reading the data In the browser: -[downloads.csv](https://github.com/WordPress/experimental-wp-dev-env/blob/metrics/downloads.csv). +[downloads.csv](https://github.com/WordPress/contributor-toolkit/blob/metrics/downloads.csv). Locally, without switching branches: diff --git a/src/github-http.cjs b/src/github-http.cjs index 9349b5c..087770b 100644 --- a/src/github-http.cjs +++ b/src/github-http.cjs @@ -28,7 +28,7 @@ // GitHub rejects API requests with no User-Agent; an identifying one is also // the honest thing to send. -const USER_AGENT = 'WordPress-Contributor-Toolkit (+https://github.com/WordPress/experimental-wp-dev-env)'; +const USER_AGENT = 'WordPress-Contributor-Toolkit (+https://github.com/WordPress/contributor-toolkit)'; const REQUEST_TIMEOUT_MS = 15000; /** diff --git a/src/trac-view.js b/src/trac-view.js index 4298d29..82934d6 100644 --- a/src/trac-view.js +++ b/src/trac-view.js @@ -25,7 +25,7 @@ const { httpGet } = require('./github-prs'); const TRAC_HOST = 'core.trac.wordpress.org'; const TRAC_PARTITION = 'persist:trac'; -const USER_AGENT = 'WordPress-Contributor-Toolkit (+https://github.com/WordPress/experimental-wp-dev-env)'; +const USER_AGENT = 'WordPress-Contributor-Toolkit (+https://github.com/WordPress/contributor-toolkit)'; // How long to wait for the ticket page to appear. The hashcash runs // automatically in a few seconds; the extra headroom covers the escalated // "I am human" checkbox, which needs a human click. From 659cb736185b97cc21a25684b87e8d1949b48eac Mon Sep 17 00:00:00 2001 From: JuanMa Date: Fri, 14 Aug 2026 16:00:45 +0200 Subject: [PATCH 38/53] Describe what the toolkit does at 1.0 in the README (#346) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why `v1.0.0` is published, but the repository's front page still describes the app as it was at `v0.1.x`: a thing that sets up a development environment with no prerequisites, full stop. Nothing that 1.0 is actually about appears on it — linking a Trac ticket, reading its facts, applying the pull requests and patches already on it, holding work for several tickets in one site, debugging, or sending a change back as a pull request, a Trac attachment or a mentor handoff. `### Why` had the same problem in argument form: it makes the case against setup friction, which is the wall `v0.1.x` removed, and stops there. Someone arriving from the Make announcement or from the release page reads this file first. It was underselling the release they had just heard about. ## What changes **`README.md`.** The top of the file only; every section about contributing to *this repository* — `Build from source`, `App icon`, `Why Electron?`, `Ideas and future work`, `Download stats`, `Contributing`, `License` — is current and untouched. - The description paragraph now covers the whole loop rather than only setup, including the two guarantees that are easy to miss and hard to re-derive: nothing installed on the host, and no push credential written to disk. - `### Why` keeps the Contributor-Day setup argument as it was and adds the second wall: a newcomer with a running environment still has to find the existing patch, get it into the checkout, understand a failed apply, and work out that WordPress reviews on Trac but takes pull requests on GitHub. - A new **What you can do with it** section: seven capabilities, each linking the guide page that already documents it, so the README stays a map and the guide stays the manual. - Both YouTube blocks are removed. They show the pre-1.0 interface, and the second one demonstrates the patch screen that 1.0 reworked. Their thumbnails, `docs/setup-start.png` and `docs/create-patch.png`, are deleted with them — the README was their only reference. - One current screenshot near the top, `site-view.png`, served from the docs site. **This was not asked for:** removing two images and adding none leaves the page worse, and this is the image the release notes and the announcement both open with. Say so if you would rather the README carried no image. **`package.json`.** `description` was `Electron app to setup WordPress develop structure and run npm install`. electron-builder carries this into the packaged application's metadata, so it is user-visible, and it described a subset of `v0.1.x`. It now describes the app. No other field changes. **Not in this PR, for JuanMa to apply in Settings:** the GitHub repository description is still "An experiment to explore an easy to install core WordPress development environment app". Proposed replacement, same sentence as the new `package.json` description: > Desktop app that sets up a WordPress core development environment with no prerequisites, applies > the work already on a Trac ticket, and submits a contribution back. ## How to test this Platforms: any; this is documentation and package metadata. 1. Run `npm run lint` and `npm test`. - Expected: lint succeeds and all 1,027 tests pass. 2. Run `npm run docs:build`. - Expected: the VitePress build completes, confirming nothing under `docs/` referenced the two deleted images. It does **not** validate the README's links: `README.md` is not part of the docs source tree, and the links are absolute external URLs, which `ignoreDeadLinks` does not reach. Step 3 is what checks those. 3. From the repository root, confirm every guide page the README links actually exists: ```bash for p in $(grep -o 'contributor-toolkit/guide/[a-z-]*' README.md | sed 's|.*/guide/||' | sort -u); do test -f "docs/guide/$p.md" && echo "ok $p" || echo "MISSING $p" done ``` - Expected: 16 lines, all `ok`. 4. View `README.md` rendered on this branch on GitHub. - Expected: the three badges load, the screenshot loads, and every link in **What you can do with it** opens a real guide page rather than a 404. 5. Run `node -p "require('./package.json').description"`. - Expected: the new sentence. **What must not have happened:** no source file, workflow or build configuration in the diff; the version and every dependency unchanged. ## Risks and limitations The main risk in a change like this is a claim that reads well and is not true. Every capability listed was checked against the guide page it links and against the shipped behaviour rather than against memory; the review below covers that specifically. The screenshot is hotlinked from the docs site rather than committed, so it tracks whatever the shots harness last published. That keeps it from going stale silently, at the cost of depending on Pages being up — the same trade the release notes make. The new `description` is 163 characters. It reaches the AppImage and deb `.desktop` `Comment`, the deb control `Description` and the snap `description`; no length ceiling is hit and no build breaks. Snap's 78-character limit applies to `summary`, which electron-builder fills from `productName`. One cosmetic consequence: Debian's `lintian` warns `description-too-long` on a synopsis over 80 characters, so the `.deb` picks up a warning it did not have before. Not a build failure, not user-visible. ## Related Follows `v1.0.0` (#343, #344). ---
Review outcome (required — see AGENTS.md) `0 [fix here] · 0 [follow-up]`. No findings across architecture, security, performance, cross-platform or tests. `npm run lint`, `npm test` (1,027/1,027) and `npm run docs:build` pass. Because the risk in this change is a claim that reads well and is false, the review was pointed at the claims themselves. Each was traced to code, not to memory: - *no push credential written to disk* — the token exists only as `githubToken` in `src/main.js:775`, cleared at `:783`, passed by value into `src/github-pr.cjs`. No `store.set`, no keychain, no file write. - *says which regions failed and why, and leaves the checkout untouched* — `src/patch-apply.js` validates before writing. The one path that does write is a rollback after a disk error mid-write (`src/patch-apply.js:526-530`), which is a write failure rather than a patch that will not apply; the guide draws the line in the same place. - *each ticket gets its own branch inside the site* — `src/ticket-branches.js:4-23`. - *fatals surfaced instead of hidden behind the recovery screen* — `src/wp-debug-constants.js:47` sets `WP_DISABLE_FATAL_ERROR_HANDLER: true`. - *a terminal using the Node.js runtime the app bundles* — `src/script-runner.js:26,36` spawn `process.execPath`; `src/npm-runner.js:88` sets `ELECTRON_RUN_AS_NODE=1`. - *keeps your name on the work* — `src/patch-provenance.cjs`. - *fetching only what changed* — `src/trunk-update.js:269-273`, `depth: 1`. - *with a rebuild when one is needed* — conditional rather than decorative: `src/renderer/update-plan.cjs:144` skips the build when the watcher is live. - The Trac field list maps 1:1 onto `src/trac-ticket-info.cjs:133-142`. Also verified: no doc page, workflow, issue template or `scripts/screenshots/` entry referenced either deleted PNG or either YouTube URL; every guide target exists; and the extensionless link form is what the file already used on `trunk` and what Pages resolves through its `.html` fallback. The review corrected one claim in this PR's own test plan: `npm run docs:build` does not validate the README's links, because `README.md` is not in the docs source tree and the links are absolute external URLs. Step 2 above has been rewritten to say so, and step 3 is what actually checks them.
--- README.md | 32 ++++++++++++++++++-------------- docs/create-patch.png | Bin 468289 -> 0 bytes docs/setup-start.png | Bin 338064 -> 0 bytes package.json | 2 +- 4 files changed, 19 insertions(+), 15 deletions(-) delete mode 100644 docs/create-patch.png delete mode 100644 docs/setup-start.png diff --git a/README.md b/README.md index 359c2f2..1894320 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ [![Latest release](https://img.shields.io/github/v/release/WordPress/contributor-toolkit)](https://github.com/WordPress/contributor-toolkit/releases/latest) [![Downloads](https://img.shields.io/github/downloads/WordPress/contributor-toolkit/total)](https://github.com/WordPress/contributor-toolkit/releases) -The [WordPress Contributor Toolkit](https://make.wordpress.org/core/2026/04/16/wordpress-core-dev-environment-toolkit-a-faster-path-to-your-first-core-contribution/) is a desktop Electron application (macOS on Apple Silicon, Windows, and Linux) that sets up a full WordPress core development environment with zero prerequisites — no Git, Node.js, npm or Docker on the host. +The [WordPress Contributor Toolkit](https://make.wordpress.org/core/2026/04/16/wordpress-core-dev-environment-toolkit-a-faster-path-to-your-first-core-contribution/) is a desktop Electron application (macOS on Apple Silicon, Windows, and Linux) that takes a contributor from nothing to a working WordPress core development environment, lets them try the work that already exists on a Trac ticket, and lets them send their own change back — as a pull request, a Trac attachment, or a patch for a mentor. No Git, Node.js, npm or Docker on the host, and no push credential written to disk. + +![A site ready for work: Start dev server, Start build watch, Review & submit changes, the Trac ticket panel and the patch panel](https://wordpress.github.io/contributor-toolkit/screenshots/site-view.png) ### Why @@ -12,7 +14,21 @@ One of the most common complaints from Contributor Day facilitators is this: par Before writing a single line of code, a first-time WordPress core contributor typically needs to install Git, Node.js, npm, Docker, configure everything correctly, and troubleshoot whatever breaks along the way. At in-person events, this alone can take hours — sometimes the full day. -The **WordPress Core Dev Environment Toolkit** aims to eliminate this friction entirely. +Setup is the first wall, not the only one. A newcomer with a running environment still has to find whether somebody already wrote a patch for the ticket, get that patch into their checkout, understand why it does not apply when it does not, and work out how to send a change back to a project that reviews on Trac but takes pull requests on GitHub. Each of those steps has its own tooling and its own way to fail quietly. + +The toolkit aims to remove that whole path, not just its first step. + +## What you can do with it + +Each of these has a page in the user guide. + +- **[Create a WordPress core development site](https://wordpress.github.io/contributor-toolkit/guide/creating-a-site)** with nothing installed on the host. The clone, the dependency install and the first build run as [one continuous chain](https://wordpress.github.io/contributor-toolkit/guide/setup-wizard) rather than four clicks. +- **[Link a Trac ticket](https://wordpress.github.io/contributor-toolkit/guide/trac-tickets)** and read its facts in the app — summary, status and resolution, type, milestone, component, keywords, age. +- **[Try the work that already exists on it](https://wordpress.github.io/contributor-toolkit/guide/applying-patches)**: the pull requests that reference the ticket and the patches attached to it, previewed and applied into the checkout, with a rebuild when one is needed. When a patch will not apply, the app says which regions failed and why, and leaves the checkout untouched. +- **[Hold work for several tickets in one site](https://wordpress.github.io/contributor-toolkit/guide/ticket-branches)**. Each ticket gets its own branch inside the site, so moving between them is a file swap of seconds instead of another clone and another install. +- **[Run the site](https://wordpress.github.io/contributor-toolkit/guide/running-the-site)** and debug it: a [debug log tab](https://wordpress.github.io/contributor-toolkit/guide/logs-and-debugging) with fatals surfaced instead of hidden behind the recovery screen, [the database](https://wordpress.github.io/contributor-toolkit/guide/database), [captured mail](https://wordpress.github.io/contributor-toolkit/guide/mail), and [a terminal](https://wordpress.github.io/contributor-toolkit/guide/terminal) using the Node.js runtime the app bundles. +- **[Send the change back](https://wordpress.github.io/contributor-toolkit/guide/submitting-changes)** — [a GitHub pull request](https://wordpress.github.io/contributor-toolkit/guide/submit-github-pr) opened through device sign-in with no credential on disk, [a patch attached to Trac](https://wordpress.github.io/contributor-toolkit/guide/submit-trac), or [a patch handed to a mentor](https://wordpress.github.io/contributor-toolkit/guide/submit-mentor) that keeps your name on the work. +- **[Keep the site current with trunk](https://wordpress.github.io/contributor-toolkit/guide/trunk-updates)** without recreating it, fetching only what changed. ## Documentation @@ -21,18 +37,6 @@ the app, creating a site, working on a Trac ticket, applying patches and PRs, an changes as a pull request, a Trac attachment, or a patch for a mentor. What follows here is only what a contributor to *this repository* needs. -Here’s the full setup flow — from a fresh install to a running WordPress development environment: - -[![](./docs/setup-start.png)](https://www.youtube.com/watch?v=e00PAh8WNOI) - -[_Watch Video_](https://www.youtube.com/watch?v=e00PAh8WNOI) - -Once your environment is running, generating a patch to submit to Trac takes just a few clicks: - -[![](./docs/create-patch.png)](https://youtu.be/yodwdm7Z9vo?si=2Wk7Wuc6lTuaSeSf) - -[_Watch Video_](https://youtu.be/yodwdm7Z9vo?si=2Wk7Wuc6lTuaSeSf) - ## Getting started ### Just using the app diff --git a/docs/create-patch.png b/docs/create-patch.png deleted file mode 100644 index 5ac4580355f01e681cd14a9f5f208606daed1b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 468289 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
#TGMULtS~IOt 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

%rBTxw+=K^ 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

-n&x_5EX1-eWrP$msUdJ^pA zffaQ4hk1(eQa5^%$^MZm>WB+tQ3oaRsw1bj@wulBd1n2@CYwkIRgsQ)i{9qstE0ze zMO5usv!6UZ|A(!RU8>X=8}DwzMkA!9GbbYr^CK`t!KoNbJEYU} zZsR{;_Zd!*hC%{tWJVz21dt7?!Ria79reFU{|@-KC2<={#R*d>`>H~3q{IuGV3inF z7DgSLAU`J~G=r=osVy_%uYFB#W&T)K(tOJAZp%Le1xLz_td;Lhevfr`OMH^2FIBu9rXQtOqA!g&SQ)+Z1+e4o=~~ucS{-5%^8Z8- zG)=nnyn3t9K05bsyy8$%$=TJvT3Y1oRH@ePbidf_d|lu4u!-dkgMk~8M9!5{Rg~tj z-Tfv=G>E~YZ71Zt1~qYVs#RlYr_;f~W;jscCk%K_;-3aP4ncsoaPr!N1^rOckr$u_PUYnhjGtFW2 z$I!amzc_2nSLblIX!ndrc|~?g%ePdkK!W*&*==w3ye$%zysaX5Do}Si5auKDlW2TX zKxJ22Dq!+kI0`w*1~Wr@PkNioGInhwMH3_u2rI){?#vY zAzufO0g{;V`MIjN^a53feLhGvnVoupxHVW6Ua1B#5fyYvbp{S(rjy32C!I?jYU@{~u9KImFNNyjdj1%Nn*wEVPq&XKnd!K znk{d_LT8`Jp=p9l1n3JEj0zX?rI$YTY2mSl+mSlYec$V5mN96>Di;D=GpSg}aR-cU z4Cz@&N%ABcDZkk%VV3^{=`gHa9QIBW|2CvztGoKy6&Q|A&&MzWfS`tMdpzHyhOVh3 zI*0|*3^1h+W{<@-?zEUiH7Sx}Mse^lwN5&hJf2=c;+CCP;X7-5boDI<%o#>&%PQXg zj1Lmyq4Cmy(6on@SLF9(BsdCl)gU*K@jEG#83bDZI4o<~ka$-g0*aG#o%LXaKN3 zObjE#qx?*cAr)a;pzwkslWx2WDiBEmJp3M&SRa!sbuRP~;WSI}W>lbttc>LtJ0bD$ zo>RIWuG7AoUu#rugfNHhsH4&4&z|uQ5Ua_Z76NTh?+lPQF!TSL>cp~F9kP0GIE!RD zcc<79rubeNtIW43kxeR-qZtJ@2{EQPHXZjz9vEUpmOvB+z8E~PD_in?;p74mB%&Kd z|L5)?-yazt_=poXRs4V&cBtED1e+bA^)S79&ni_q5semGM*OTXgg8V|VUV7bgWKzx zMcooeq^1%vtR-m zvvX2QMKmjrZu1HzQE`a}hgM`Iz%%x_sG_i5jK>tGrGnj%-$Te`-P-_acDX;Z+m;G5 zhI&8Jh?SlMD~_KjeXMB*n_%K#)zjA#$Jtwv1ii~mi!TqU9!Q1M3nwSGI@}B#oM37I z)+62fwC#=9t23J*PAQ^jDW{o7vGRPWWrkc1mS&Z+h{O#n0vD@_w5JW-y3{_e;UeM9 z(QF#te!Ymx8W6H_JcR^RT+kBCc!Fs&C03f|sOlZ4TgLrS(`Ir2rIk;po z%kNl%l$dK!y)pM@h_C%Uar{_z&=J>_WBQUZDWW;fJ2?;^yyz^9hmac6AKzuWll5sE z&NsS!zP5zJzbDaX9}0`1**9CRa{uB5%W^AJp6FrQG`INc)~kzh9ZE6wCc@wK3%?>x zh*4KI2lZiXY5cWXa%p~ZeRXYu`N~g;+)rR(b{Xi1oTe!Q&h+=QX z&h@KFeqq+iqvgo{_Wt$fM;1QZ-);N*7yOy(>f+_H+1@VU(vbzZ231^H z;ZRG5pLHZEXSei(B@~P))=<3|#8+eL981j!08`?NJ3llA2 z5=wAZFf8)mC^tP$lx8(h#d(&tx}ut8cgsBhR{lEDZbXF4;~d9u|CU)yHrj-r2dgi! zuZUX!qL`wTZk#y&RiFj5lx;LI7lf$XXZB&C=)`Jqcjp3BJL60$-HZ$jCizMj*?if4 z?8F`k8R1kO`BIh9X(|#g<1JVn{>zG&37GgF@*wHT5Z8gJ8;;;85bxJ`|fp^RqZ{Az0vp$oy`FZme2 z`<&m@w=N&f*fgD2&z!GTynrTwD0tW>y2qFNEQoKNc#uiZhjpqKj5{mw(4TZEnhR&O zyQ=n zhP|CPvDq(})gr&$9#>6_?g`76J1?DzGwKe5u&Y%5&S_~>WA+mmkQ>zr-4bfLD5=T8 zS{&pk6;$L8$nsA#hW;pIlEj2(LpQ>Dx%)2lXkT$m+tAaN*&nf>`7o)`jYa1? zrBjT<2fYCD{Jh$wFq&p&W|I~*)q0vj|Rox}E*^+X|~Fvj=~ z;jg+x1Ri0;xyOcH5|0{SB6jD^XaEgo1DtTWWG|@uI5tYT(w@Y?c$5(Cy5F^#Qc7V) zMJca(63!mGGSd;ANfOba-dwarCotpHBJtl+avfCbVc^M>gu8c2kqgeJzbTP)k6a?g zm}!ctQvse};60T{OdiFRWxQYu%AYg?W_^_O6aG9QeKBC=Vrs2g_dxaJBhQuFbYZgg z>D>u1EMwWGW%oPG{_iG#R-Wxmo|kABjR3=aXR6C`&@`eJrNBP)$OZhaxNgC9B4#wyX2_8aVFmVCz_VprC1c2Xi#K|M^b71E7Tn_g)|&i0KNpA*K7jC_M5@@ z-m02q)OFq;ugx6?(sH%qF1p*G{pEq*BvFrk*+O)Zda8$378@Op`7$O5!7HSBQQ)I9 zQdP~^80VU^I$NPKB`>7DS0BOhlJEOA4*AovIPu`pQX=3FQ2Em0ldW2~;zvfc zF`z{${(isDPGP_={VC(`F+w7fryx3QVo1oeR}Do1Dolwvz?=g;us4Ck7?Yhq<$)Tj zKByzJFE;uoJUM@;V={eNAMIhzH<$%LcrYP9pcxm{^e)4RQ*F<6qA+g(Jz)ZU4Ur|# z`152$w1+Sw!S4+S5|h6uBOm=4;YY_yOTs%!<6stm3eQ2waM#s9Ts@%Shtp~dy~82> zXC8>T(LpFG`7(~Sf$Z?2_%Af0GYXXZu^LIi|D?PilUY~OB_cT^+$t*`26m6 zM~}!V)nIcKYSy0i#O;-;tx};vz;`NbH^W=_u3EMS2pG=x%=HHh$^#%s|(1-3J8ZIS+@oQ@G7XvVFejybrz{Wtvc~ zd+)JYEO(twFnhI+rU16yF5gaEx*V1-H{p4JQKF>DnzsXo#W|C#Ac&-@#Ic_0JvhlleeAPa?$<5-S0B@r>oAx75O}owe%r&6##Q?juai!_@gz_) z1enwKVJuY&;8^dB2`48E+cP@_pPtEbGYnu(e_nS0+D+Z!uUyf|{V(K@1ko z;S4wtA5e@p=HCI`Xq3ireHa1!SC`Jaysxv-@9W(k>FEPQepRE|;$>!kf3Ywf6Hm$v z>!Ez{8o7*Cn-u+%EmWV8lUl_~D0IQAUI@IDV3_RauHlG8t*fo)^!`iFjY^u9R63 zM!-hLoK{XFr-|RnPo)mx{(WeG z(^C|VbaFmnr(cz>G&QfG8XFzsPN&m2XWAp*bTC<7-2uhKr*}|hrIEefXmA9y z>m1%qZC*#YXto>f=26r8eEcik4%1$&jhlE^o^M*C%(A1N|~vB&cgEI@yi z6z+R{S>=ct0?E0N;y)W!k1mKtE=B^}b$pCQ5#$86w!nAhu?xqy*wQ~OuP~Qjdc=`U zp~2$$&V2^<4EZIvUiLVNtC`Mm`1k&T4xr@2;kBe~Fr@J-amg75;Cgk(mPzwTKE;iT zrX5XV_Oq%g&cIC~Kc@9`pj)oRU_4YheGHR-A9p$EO@{B?Os2;rq}j*lIzS z39^P2hg!DHSjE$#i1ir0BbG*CBFfgLx~$bAX$TiF;*2ZkiWJhogQ<)`@B*!v{WNB& zWoVitB*wEgIUXl+F4I3Vnl1Q7Ty$;mYwAsFpOEl5@LXiCOD~Tzx0n6Fg@@F+E@`m8!W>fL2AZt@V{>Gn;rz!atMBh@_jx7YVrnG zMDe}u9e~Cq{Eu0Dpl9VnL&x(oP>aj?YV%u<<>uo%vMdj98Uv4sL!(jaufxZ{;<}F8 zoNd2Wimu~%Gct1>XC(Q@GWAk}eTTYd=IS<)n%!MTa_zORNhQ18`>hFGd!rTb8I1Sd zOUsts@mf$wo%A)R^FjYSuLUYqHwy3b+#l_EZ$eY6zUm2N+rrCkJ@n&i*^df0dw%_R zqU}5?E3f*l#^Wue2ZDO6G(7G7SdZo>pa6aN^?CJm2?u&Y>&RSc1T>F5bxMJ1r;&ju zNF#$xEcH}2whganqTNB$7`U`$o)WoADXH$DHY>~0tgC;>5KQU|wWb-v;@pTS;h3c; z6iF|z*m$I4YUXma$={lj-L~a~IoRZY3|&H@hp;wTZyK$Efpi`GXa<`KVWMh?zow|Q z#LfbBgzkh)FBEy}yY4zmocDxIR%4X<*sZV73m%O8Gq_ zsECNMs;a-EkssDK`mWGS*mxeBSg4E?cf*@1d0zR-GHI40!B|Cjjfq&sAjNr&QssyH z9aoQg;q#0<#A!X)L9g!Y>FN%g{Gr$(o@sb13>B6Q@dEByxYLcF;`kd!ok-h*jQ+eF zvjTHFody9dCW4;@QzRq~v!LHS6muXrsbj_O|1Q&xIGP@d<6Y#sIgO)fHITNw#N`sA zRxmQkOhL|{#mBBcOFd)QIh*&`nH9lIM2wm6vBRiTO&j?*1d?$p8L$xw?-k_}F^6T= zF4miAFY&k5J59FzI(65BV9&_OM0q~W3g!CyodxK1S_*vL9&tm>RA_XJ*yveICm*48 zp26e{X%T4}z|9j=@KyHOw;t%)Jq36nay3|#DMBE)zkv4Lj?JcjuIyX^Jp8d+iYqnJ zo@_Lke_#Dm0XT1!^_h11dPL2EE@^sO4m+#~E!IpfVXCyHpE$CTGLNNHFGFpCs95LPu`&`kpv z{t7kU4v$T|;zXArZlvR>Ldrr*^ZFpYiDX)CU^duSq0ec2h6|hr+V=;gQxk z^tg%$u{fkig>nR#_3|5cmoEC7tpw8-_ZFUO7|$*FOugB(v;^j)U^W^rzmo4;?iS{`>h+cM9P{l(qg)SA`?#dc(n@DBDtNbXlqb15|ssI9b7ki@n*4!xRIm zBOLt=NJwzy!t1~g-Vy=|MRFOM-BNzhScPAgBl6@6XeIyGEA({K`S!X$-Zdam20W|w zfqBEc;%X4f-$)+#g1eFhbi}cT-=iy$Y{nOu2?*4QNh>JEa%aB99`)hi)#|$1sX`Fg zttpF*ozF?aGE{Z!joEnJr2{>3olY{OWovCtXTBy??@DJ&TAs6m;pns~1vcMg?dARVXR#dL7~SCa~z;$NDKwN$sMMUfC_wy+zW?%g|jkTS=yk@pGu#L)z)T z;S`+A@~?jEGFG6>z4r5XS$G;MV1dIzPFK~M@nzpAJ98RMmtKcF>Yy+ znkOun9!jr1T-7%5kF#+ z$=)VC?+VyN2Jn26k-rX+C2c(H+#w@VlLvKB)vQa_w4tAGvbC6PZ%Id6cUa}Ptf&Cc zU61xkS|3BVvRoY!oizKSD+JGC%jcob*eUam7I7sP?atgDYTke3?S{a~WGKg}*Q?yf zb!x>h{$RNcoBwMl=-HZU=9_}f52;UCm5IS)>+xchYN7w%vt{B3v@O0SBz=y@G;B6E zTytDoA)sXAhs^yLD~sm-K1qxmjz0T*Scu>u;h8EVIwkSL@52;*G4H~VlAn+)pv`6W z3a&~*!r4fF^fOvCTYFL0_HBW%dC0u$`Uq0aEJOn!d=L5!{bIe-2AKci>$^--A9}S1 z#`y8g>(_CWdSl;Osb-fTNjsoSi5zPd#2X>ONpNNyZdW?}7pOhTH)-0JI&Q=9+iSdi z5m4wp454e)QSkK~UVg;90H;4WG>9q^TbW!sibPZMQ|upXK6h-DTGS&{r0=Z_zCDIR z4i{Wo-luExpYPM3l&!2f@DeAcg#Fl>+Wzv)SR9olqsOeKSLhL5lJ=Jm zj!2_@x~|e+PtJ5@g0K%Gf!O516n|LEcr22DNfK&k`(IM_W&VGW^HAI{kpr+01-sIS z@^%n!_sC+B_7`RRsmICW8rs8oDpTVRL2WDz=Y&Lt+&<1GIXaduEp!Z&?QHy<3sHpn zRt8GwiCv^0BUK+%YYb237Rf6)yjI1@Gu*dQ4ZMt6TiBL-#%ojvq1)a-B*)7cmrjHF z09wjH14F||ti^(&jQkoqW!AcG3w;U(TLtw- zCV6-S>_;9vz6Z2pfZjtty+V7%n)u>YQFv%pj;#`6YuW{Ey)0xb2Ua)h#z?#mXG+lD zle{CKg4-#dQ`5R9*1PQi#$6kEsO?v$;p5@zEWR?X<6eQ0$)sD%Z-VL_%$?j^y{w|s z59wEjhDglL6C=gPtSq_g<^LWb?+qZ^0*q0_?Ot8{B+;d|oMU5JMFArP7`be~foX9V zpO$=Q{qUF^y=Vj8D$bqCAX|;cs=2@A+M2W~1X~uWAm5nv5I!u}aze=Vw=| zpL!F|wa8R1|wa8y+9N|DY~j+Cznt2;U;%??lKJ9*=isg_bLO^gCSn zZyA**U2I^=qI<|cuhLEnOuao`!ZurNtGhf=t-A*Y>8i`cU%y>;J}Hu3Zg-#D3|oyV zF9BqEoaWNv+dba8?mDlm-A_k>SyQyy9gct@(dqRX&=qDTMy%CZucNzZtNi}8_+=Vx ztnh}@@wkdI90sl**uGU*2buXaEhvVlx!vq|wriy{BsK8NVeCdwD&W|uMN}z*PAh+n zuCd8>8RJGxiVujOx&^|+1%FQ@#WIeFF{0%-I2nwuW9^fsO1(><+nIB`u31zY<^8~O z^~JjN|In^;0$wqrqKD`ECamFxVRJM|l`Hd=ZZ`m{f@$B@TaPSkhhkcsG?&EXpk*Z+ zC<`JQ;&~I@XUZ64`cGu$;59Bd`)6zT-;8SW|H#wUR{~3N##sG#EUEm-_q}3XT64N_ zPqk+Q+rdbBnobAn{A%0#pVYH>Y>ag{&Zki9`|?9!x2K&Xx+e+ z)S~&|y~Xv@u7|!h`>q)p%Itx8TdE9!J{32ocH!DoeZiyDUXtu(jx5_-@gp7AS&p-1 zdY#rWlk{`dTee@h_OgtU>UIOdO2Il~3|V&mle?FVjATMZZH`Re|?C!@aU*T_<#6Ra1hWA#JjwjzNKsXLY(PHs5BGU^JPxqA z^0Q(@t4j3gy3%;-f4fUSTDm;hou?HDA1P#?z=#MpG?6+^K5Gtwbk7CYNvvgU-n>>Z z%W{3xMq>AJ7l)(K?S)wlkvSJsMADz*ukg9*ZeQ|rSvHvJbr_|&hkcXd!GZRO7pEqT zgCw0>`r|xUsq=Mu)WmBdR%7$UTeQ;pAl1G?8UXTh;6C|O<%yl>`?qPm+m`JU>W9Z`o$9%ck?n2Q;*@z@^fsfH+ zL(j{j1TNts%k-1utrOBn7bwLg*MK7MNgWOaUB0vydDNwQ!)S8Np?-$V8yZ%?4?;4L zdSdo6C0fi3^2Z}gayIC$dkdyG=B$pjS|r1r&|yeW@n0SAUQ#oe-3PkSH~|s!iVja% zA6+S|+$?=rb@#CM?HXg3?9qd*UJ;9Ev|4rgx}mf)<7Dnb=hnY=A_tf2N;yR2x@iB- zCWimf8?Xu@%Y|w8Z>+d=H>bM=FUF(*0Fc<`gm2g`clYq9dqxdlF=yd;e9GKr@bStA zjApO^ZE?a?AwoETT6uoo88O7N!Hc*l^-$Y}FNbHmJso>=T|D>RbUyQJh@1u${C-&Z zMeV*$6sami`g!4jMx7@rDJ=z~Lq1_KDHh5#s?5VT%%80@# zo8$FEqNA(-p?X~zF)dPlXGc}JuEeAF-@6T|dZK0-VEkmcw)%ThYd1aSogY7-1*MOs z*XYdGQJ+zI4G&@s6IX}pKn$?`g#su)m%g?7zDW&pPK%r6x~p?y5+{!dGg98TZ!M(s z+*3loJ=}cq%sfFH5D=b3qvJ5PRv4Zfp?Z-S(rKRkx={SNi~qTsYLd-!(ZDRD>U0}N zD*1J`-Tk=a(lw7$Jk5OkA>B@=(`Nbc`mn()`#$3Jl;OX;%!yq8@DfD?NBw@xoBkLN(I z5Aoq|A~3&0d&UM@Z1x)t*er+5JaKpIGm;~T!;nmFr}gn9Bqj~$UT=Is*VE`7_i-5a z{|I@tdN`rzr~GN+8l~&w$OFmSi%KCR6`~H4LrCSuy`rSkuP=ueR=}?t>Z`j~?_`q2g--*>J=t4_QoyrmmO7c;1hJ_ywibbHqQc}8#P0Sxsz z$&Q5Y{5hd;P}S(=fbg>7x?JORuLYf4d0lznL@le`dAPv}=&Wt!#|{_H-fCIuDR?7{ zsiU2|`E{~#dS0jwYVk%>!5~xs!6I@(=_0rzUrtdgHRozMV;)A+`7NH8SW})cWZyNN zl4#(qe9R`I)&SbOg0qEWQ!1{@;!lg_I-2wFAungYpdImgdV5V@d7=)6Bwm7|PJf{6$Ew+=L0?o!QjO~+~>gSq$# zGU9UaLH_JK@qMX%+i1f2Zppx5^3j|_f7jyMq_L2o1#O zvKJ%z;8gwrL(!sWTulh65Z=agg%nyMcCEhJD3*Io{6`9P`?~x;$`Z5GIi`3h^syXn z<`kI0=H)R>ut;U+$tuMug9j0)&q=ZZ@^K7F*|WwOmyp&26Zp^}N15-!n&UZzC4qMw z)$NfH8o>=1S4}wd*#{%-<)5)a_~x809}rg`J#Y9ePXf?`bY3))_qdKnMRpsvwQE?! zgEuS*yY!Gozyw^Y%3M9nW(k%S67r#>RX8KM-`hA3M8!KjQyd_XnV5Ab`9xs}gic9C z1ugyQDztm4e3Dk0t4#ilZOn=02$cmh$i`Ekj>P%6>Gc@2gG<8zQ$H*ad{F@Ye4eC5 zG?}LG+7NT&LyCISA!m`h3q^&!nDdW9t_gA<$6mz)xmH=N=$2ThqcyXhT908FcuLrH z&qmACXgc4nXr8W7tlKJdmsj`xAW5CzTi{Ua=tLAx4LBtWN2hyTr+L~vaBWkCRbd!&Du1*a|S z|L1)jC<>89^KAj!OJbwFVbu)vO5cF$A%?^Iu|j>7TeD#P?ym_XDP`|9h0D zvW9outauecaLbIiw+3N7vbbar)t;hLj+#28XCZNMs6QMCc~-7GRkR{tjAB<2yCFr)0&T-rX7r1$rIr=>T*C!-zGJh5!jW z>3kEttt1IO)ZWC5`tZ_%%;Wh$^~Tb{5diuunXh7ypv+ z=RDaC<$F+Ri-=N63B;FmA`}9bXfuD>a+>D+kUE!Q z-nXj|Q3+O@$!rWxY|~OFQuAS&y9xLTeRMO(fmCLsu-pTQTuoGYPgRj%?|_7cRyIes?wy5De%94UtVrv_Wh~WPE#;(SB4YE2Vh!Xd3yOm;gcJs*tG( z`BBJF(usXH4iqBhw+1n)B9R3^t1BZOtciI#bpv;47zl&BT2DRS^WcksrRzYe))v}j zpbby2q-9t1w>>2bH^zbhGFm+bJj7NEs@+;yQn$E}Y^4lhRw;+O6A3#-1W0?tpUlM) zp+F0BQQ2Wbfy}*`WiWT)5KC4AJ?yLwFGv<8U%2GUd|1{&LwtsenmjLcVQ!fix%cwm zLHu|m;ocm@pLRPnbb5`w*oJiLHZxC>EY|*$M+_@Z-un2C+Z-M4Kxm~TBc%xFHh`ZV zqABb5Y(M+oJW{QXP=5U_wXYV{xzZ6>S{*FpXg+%LViXS{K^O)qGrR?_qK0OhM3pxn zEA#UH_16i`ij9SF)ca(rbb|xABT-2@OpC#8Ccu3?-7aZgfEwmjF{hTWl;vRjM`X(M zmwSR~`6L|(OcWV*dyaIX(Z(Mf){vLwu%zgQso{^!! zg4(CX;E+T6d3w z*`Ez{o{K%iQonjKv1|$o_@7cuGA{E2B|G%=O|N4`@gL7ayS?7Nzo9pO<#=isng8$o z2*(8)W7q*-H_;&KT$nvPwDvg;J|l^`{1-$Xm=F_NgQFa+}qKGa~(5t-mnG~u_r2)BltM#W~0xDJxL0vu{TA{c1( z{CF~PG^IlmVM7$gACptJX~fsPguZHVNTj1Bau6KSqLU$VG>L=OX#Q?^|=SJCHE?#RLFF$lO1HBwQsrAvMc&^ERTTAWMf89ySOd*F@;;} zG|s}=0p)STfyRB=vPMJIFa8ReW>-nvt*TEmGplN#Q6Apf1r z34Mq^Nva#cf%_LucdZESTUGrI#`2Jm66Ur@E2uYfHzfI}=xoJysPcxv>#=`^<9@dW9kj)uQ}Q8&Cz$c?KI*XH=W zHkm>{{^NvJ78cHZ#dW^_X=|L(Lm-e=m6tABW7)=Qg%YC4X7ebU}cyNU?G{3@YG+O1Uv~uBk-! znTxLsYc}$R99Y_QMMX!{*Q)X)CI_VoY?X0x+!qmUVRix)Iw4!cVbL)wME~twg{F}z zpq)705!WKjL<{21!C-vWCUNsfW3TEfm6PlyJh!8ZB>k*#ttvp4R*MLxGb+aTR+wlJ z-q<<+XrgEArjgH;>R)CRZ)hobB~+ljULa#1x1}yZyd_~yZD&0obKpF-ISQBgOr4U3 zS$dm$s_4MY(6lhPM$?FnQXwzSipl{uo$a4Qv!fM7R2p$p*jYn~B;1_GDzdqVY_qn~ zIrG>mHJT>2nly%fA=^G?kD{lzE3tUL%GD^dnph`&KHdsd)vGUbORaU@?kF1cD&CN(tc@}@R+D4*17yy|~noFSSvC;o^RoY)4G3ZR+8Yc2)P--d)E2|^We_{CzcM;69 zaV)bmS<`+LIPc|QfBcs|AWI06SCK37PmZVk)V6$6(7f&4KB)a}TWy1`<@51CWE?!Z z{W9f}R?K^p;qXtO^ZjMxh}rb4conWfrFoglg&6(+t9Q?ELkRjnqx>F|fjjO@-> zwypy|)7w%!ntl&C-o_1%KjN-*A0{ZU8x+P^ma9xjrT08ubdDM&{Y|#m`WFs{mme{$9YJ0;TCW>Y<_jpa*(9)%Vw*BoqCAHOyjJ>nK}Me zeWJi+@5=D2L%Y)cw(amk!8*fOzgI9AI)wA&q>bfZ>cpietKLNNWf3>UC7&h}#CD7O zGG^jDJPNj7V#(A$hQ9*=d0JD)rhbw)zYCz<_g3|Gnprx<%!T6STA2Ja({q1XY|GT5 zB&JmyBp=SBHKE29;tZ%{PhdkYb^}l`z$;igc2Wijm2j!)Az&N| z<1CZsaP#k?R^-;o!rY#=c-ov&(2C*Qx3|9Wo^tVGX>=%Vo$(G00S;hO+dPiKvpmsgr0?SJ^o0EX55mF>!&}!JC~XM|*?NUX-m?t*pSw+J6?*VKIaw zAn1xW!0?!UN+2R?81GQ{8}!Rhk8p4qLWS90VM~8kCloWU*C8`yWxB4>KZsErXwwmt z2-wE=5r!heFqLQuX%UJ@EqwaI$3Z{+wLXrf4w~Ud_C!{eKmtq`OQB|i)fIdmFOM39H!f#`2h8eiEo4S z-ZxF_*1(Xsw|aWdUFe3_MV${NPN061=eCZUdl!#b3ioer)hzDzfl@YH} zf|1d;@Tj42TX#xIxYRg4GG24H(I4mL`&{J5(jO^Y?bLr~6ZKu2(~^4pk{;`Pe}7|8 zfC8}*C+XpuI_ZS2DXPo+9!_+W(u*!tbp`%Dm=gDrakCZk`G}&oVwtr|QNF|`=;3kN z_=qq4)8ZD(NET1K_+6(Hz&9`)>uQU@!R@6iw__GCEC~sKtfj%N9lWLN;{D$(f_eh% zUHJaXnGNs#mZ~^Tm&5i?;(r+Hy|gwC+RIh#Y|ep$Gz(CZoe+uq5svn4buoF1!SR#Y;%L2NKUZfnqK@O25l0-T#q6zIK zN{3caHA)mR7h>IP{`He@l8)?9MSuw$Qr^T?i87)&FjQZ%}J9APHyll0=n*dM#1EtN1QIwQeiiNa*TfxUk+i2DhY z#2|^{7_RUmhJ6zJ1>}#_GBOneh8zt$ausrTez7Dj+wCT#jhUdKz$H+KEyh(_DP(mt zIxJcc81+gmCQSFMXF>eauwSkDkwPy+4l|A5x@>@MfRz9@vQP9Rc*8l`Us^+1ku*0 zslP~WP`7uJkrELyVwvVF&n1m9S(_;g6wcP51ep{3(gp>XU3psD%UlFrQWhjA;Oij% z+n1i*QnQDw$Hs3JL{<+=W${s!Co~V_h@!IkBJxv?pSCx!y{HZrLn3S3&*H(u)bsP~ zzUfC0((n#R8{c~^0-T_C3nVdDZU;DUBQ~DkmRK_W*Duc2cV?SxUJQ}P~Py!a>!j7vv!ff z8O6rNz-~`4_^K~LPcQrS;lFhALfn5+sz!1VXv?Nu!vb=b067|lryGVa%WVS}Up#lZ zLOlz{3X;{WB0WF8q=G9<<+~<+Wf(=K1<{_CzxbmtOh^SecfwOVd_g2h1e!i!$yHCR zX~_W5VFLbS?-JiS~Zj}E=)H$%%8Lizq zwr$(CZJUj4t3hMiwvEQNZQE|#oYlRrZ=b)g-nr&{FvdNevR3TRxl}XWwf^^+cR`f! z$R{(C5PGVs{{$E9JIxsl>nYLavLb9jdV~AX@^H~8WRi_W=O1O$)g?2~P0$cq{2*5O zJcx}@kncK>1B%u@hYo1Fj%xcc1=dIAVnD>)iY6X=RSBfbyAX`@su7GxE}X3qt4A%s9`_b7;s^qkiv2Vo0mG_riQo_7q zkaip7CfIWbbA~=EU08b!E%dp#wrpGf%kz;XA6NO;{>|PBLnn+{EU`_r)>nsM&TmTN zJT_=yhN4}(6mYQE^n-c{l|jdYW8%IOFQ6N9C_X$R2s7&#Eo*E@jGlL_y@Pdc(_m zvY8LS@;pYMxeHT_(lU}C65FoD41dSfmIVSk9UhZU%T`3cRub@%1ScsxI3vJLiVha( z{hnT)Ol9Q$xN5RR1g)P2pm+v~>CI;eSgxzZ5+w50TVFH(|0kUV*#a(c9;2O!a83J~ zu~9StZF1uLL9h!*-LU}&9w20h!MSmM~;!L(cQ?nNc_F3NW+0zqGZNA{8)VAyjl|oPS&Mm{QaY7B>ztQN z8%302)|4RB`2rkoo_`HQ?HC8~ba78?rz)2?c4V%GR5M63s!YW5C=-BckNbwEaiUWs&@Q7LfL^7`VBflR(hU!vqN<(#PLk@Y18e$l1M!h@aR!5@jfK=c35V@*M2g3%wzE!+2;NA+=9bw$wr`)P zjWSDqME#N+&xNPq^(YQvZa|%s4U?YKA5CvnLHr}b8Yr7~0=5cBXW=L%gsnp1Jl|ab zJu^HLjE{;;X)Td%KeE078!>E>D3U0Z*PVtplI)KC9OGvR2tYoKOsr)yY`W1WC%tf{ z*i+O9WG;Osh8(Uy+d&L6B~!rE3UjxZt%0>5^L(FT56tOd@57*o)|bhQe0YH?hrNTb zhy5t6(44Wh4F@Kf6Vq~#GuNOH|pF`SvLdf6B5<{6>`fH91|4VcZ=Ft@nw7rt5kTBn;8^BfQ5sG7DoM39gg zKXUCfaV30@J`*#>m}W)U$LlJrPy(rypA1ncIq~S0#aysGfiyYi7+L5Bo1^^-AsEY; zp^+(wAgVm2)>rBJWnfuhncXwg$2lpj9-EYQj03#-xi#Sbwd%jlJWTDJl+8>SA#bUR z^5T_$Wiet7y8;k#j2G^2V${pJLdfh@kIEcM10g>roSOAPF<)L6J00s}bDL=ef?jK`!n z4m*>J$^n{7WNZ=$h#+`KuFDMfPTS{_s^WS-SU5^CMQmiC6(k~_lFWsuqIQ6R78^6S ze^|MzI90f#IFSlgb}NL<^(yr&RHsTbRW9rD3ETM|Ex=NnT1n^HH07?@K)Kl8F_EI5 z{a0I9`_(vcUAPu(kcB4UQ%zz%8Ex)3)1knvT0LG(v|r<$FAjHPjwx=Mzb}k~_2+ZU z?M*7N1@@e)Zgfgh^q`bA+!%~5Q<)=Bi;we`GIhs;>LMg{awg3Hcqo+n1=$~v+lV6g+@yrG2@J<`^R=#lbaV2pP z>y0EG0dv8H^WJ`YOk;1>vbhV=PnfV0W_J%>;v)noFhe7Wg+}5}Gl$fR2oTVNO^3;N=7Jcr(!t;htMpiY)7ty6+H|+u7*(4E@X#`P!9nrg_4(BHewdd z_p>?2TcKV}uLKSbJ{CTXOmc!+U!J5xE-pSX7bh2PQj;P!K|TJ%g?cf$V>au41c48y z-_AVux43+JB!8Y>;BPi>sbU8}&b!zn4!Utmnj&=5*uCGqt&ZEBFmSO6RYw616F`Q| z1TQlWN4;l)Px>=Wjz#LthFSL!IqS{aPVRleywPs5d&0*D8}Gw?Jwa{;inYwYDT3rU zNX!iP$f$P~6xI7tLV*!-tPtjO8I(E-;Sn2aXp*d^=8REOtE+RO0kg%(=Yf5Sns_8h z!T3}kC6$WdkpByP^z8N}f3hrb{TxKuUvXIe0Gr$wdWX)FDYv=@oJ#sx!PPd;f?P;8 z{g!vJT(i^M?P4&3QbEu4#la@;E-f?Y@rCnj4@Nq ze1Z*Y{Wiv+uF?o085I`EBwy+sT?ACH0=X-76S>xo=+r#Z3szu}k>+^?aslG3h%%cd zT=guN8qVX{UXNH@9qk+ui51Jtk?ETr0l54MUP-CH^%7cad6}O}X^g=r1nKgpvnSY_D3Th^pJl{8_q4x0k}R za|5x6X7q8YZD59>*hW(-@qQJv^!jKy^Q1soFq|6MEw6MsE|I z4GO%$8jGAIISpScs0nQWEYbxVFqH0B@!n)Bce7F10Aqg&CrAfDt3+>zIC+U_d9Hi)Q+^48e|L-x(6G z2-PVkitL!A#cL#~a}DisE49xz_tQDA%m4ksRrkAS@{}j2l;IM9R<=if$s!Nq|9HWU zqu1`4`iftUksm8bJk&>xi6~?-ev+^_oM+KnmO|ly2&MCnJh0wQygy@<#Je1~S9X$g zh7Vy~U_00QIT_y}MfI*m8foRVEDH|XFioFXoB^FdJnsbVktOf11O0s7RsU}@K5WJn zBxBj8!x*Se7NS|EUTjy8vEg0a7}fj)8?)6UYoj}aOiYu8SF0)Zec3=lh#y9nOR*Zo zba)U;k%)L>CP`#cu|zEV=&zz+ZVWbFT@7KU<$SSX74tt`H5ErtBXZ_Q55tsn*&m>~ z>j>DKN6z|slIWvy6ptN=`8w^+12tLMn5~1mLZ%>x7GMlo$TX6 zMg)Dn$qaYaeuY_4S~fS$3yce0xFOrWxPbsJ#G{GtUliU&9zX+z2Lwm&L4%N$D^J4# z7^JfL@yLB)bzFtBDZ<`$(bS5Sk#IdH!JtRruYx~Cib`ThVf+qN5MO=X=VPVDK-t2rWrw(iG&JdMW-Cp%uxhR>H}>qoCe~3}->IfgDalTSV@)>% z3H+>_HYW>_D+;FG;D1okfN1dJ6pDtLTgC#?jGfl2?FF;9cg)vN7)` zB?+G@rYuRyp3=Q9j*o2Tv5OJop7}caEmHsp8$R3cAWErE!`dHi-}f~QXI%lORXc?R zy$o?#=CtV-h4tJ>4Hn=bFu`fB5BwebmaH6^LRMIZ>7*7++8Zk`hUp+>>X`rHK--Jj z&_RMVv}jDiy_(xMRYAf+g&$|l7TWqmS8kUG9Fs}25ifqdln{bGpW2Sf z+>%mBghC~q#N>=Bq%gTAt@s3Y6h4+xw%FKvr0Q0T{v3=KJg?-Z-diL0EW@sn#0DD~ zn1hapE$&<{S>4}YqRTCvtS=QvW`S=-B9d$}0^QFMmCaM}Z%$rh6lj~JV+`Y=!>&@J zLMo3*ntR=5oP{w@*{q^M7r7&`xUv~;Iwp{Jbd=|=Ho-P=RW=c_&?LBD{2Se-w=tkc zkJ6&7cVo3ha=yc_ET=fZgkZ6$lYm&E?o`=8frGzJFH-3AZ@5eo5si+XgftiQyfn$h z%F@PDLpYAn+0w52LRkk%4wm)%e5=q-q!)3e`N5?6NibTs?Q*5(l%4Uwu$zsS5)?BB z2Oh0Wgl582p31%4Ja2T-MjB>1zbV@V z(XH%qQ}<`4cQHNFCe^i6n))O!AFO5YIzm;^*wu9d6Pu1F$1`0cYIlvu$e|cku1yzq z909RUOk%QYw-im%MM?RCo+J@Q0x4_Cw#INRgHM%f<0q9v<~BU!)OKcYX`EBUA|5ai z&+xiNqFQYx*n*g|P#>*@fot-Vln6OwlP884aM@9FiXd;oXR`r1u?)t5vd*J-K{y%D z9DT-HflQvpOd5u!N2cld0a;R=N>g;q28P%m-WQVbUdkhg)l}e03%3N|_%!G`v}OO1(>TJ><%iISCrvf7Njt%7h^{=^^V~_R4{y6~+VQ$ygNa=$Jy+6H1c{up%Jz=lj#aHx zFkw~Kk;Z2~MJJw#Lh+^xU|2+6A*KY4+BTw_?{WgN)df-`V@Zli_S%<9PBJtx9MfQG ze+xA{nN9lmtmOLC;*JkR^8eW?;XMkenSFUl4ePu23aDrbskq$Lc($1_3 z3X(Cc?E7^dLm`;L7p5g;Y2-rFjC67K+4%2*UVTnqC_Q&dQpvm&&h?CJ!k$b`^+VNZ zy<1s~6t*riKQH0kv5qIH>Y}b;_hC_U%|1Q`At18PKL`ybkyboatn&Z^4gMjQ|G0d5 z0@_zv;^iukUKL8B!l{t9vGhxNBQ=)W`-BB!KiBRarEUb$`TkOdSZu4DBoKz=TORU; z4_}DVrHGVvDDEBa7pBXrSbd1_6sCb^fko7-hAKpU0uPOH&2h>8l!!$Em2v74&$*>;pW7_S zf^@roGkDu#io@>-c5$?yo~t>yoc3bL)_f6yc}PqlMao{(8rl?gMB<*z#E1QT^Ig$x zRRB3--vU;a`X!h2wrTox+Fvi&76}$nAMd7~Cg_?4ndJqsl!D439u~xZ(=snlWgHr- zcRvCg2<Z-Oot`AicLD?#0D>SuWQ>ReE6Ian`tjYe*Y_3naB>+N;{fMU4 zh(=8^L4H};CPn9Y@Ss9nBGDfQ88k0t0RLHJeKGRVXhVbMxLMv>c8S^vd!72+nkpYH zCl?XS+mQe3nf}+{Jq|2itX&8Zf>#zqbFbsRRast-$*F>DTa^Nr(YCe)@Sp?`#l;_V zhu4eeOGAJH!wWS`#bB%9kpI@NPJfZbz&&pFdP}x+q&-~vcgndKs$SGcK(4UEb{#R3?lL$nd|yIjQg~XmgSlV?%`1| zfWY}ASVKF%*_9LSaXo5+0wHfPmUs`DFIJIIlPkzpr!efaMkmj4KsSWb6y0+#btJ`S z{)D3g91D{lM`^lZ92}AbqCU20%2*rCYXD7Ord17#qKQ2}dS0s8iPdmjR1n3pUrkn9 z>=I9Xtwvs!f<7J|KR`R;T=*VAnL9^~YlH>7Hx4`@$Df3<=El{Ui(?dDYLTW1wkMpd zDYca{2vydY?Q_$PsplA|s1Z)9kAXYIgU$@w-BKmbfkq0!f^N;R9o>0LtHU4^)+S$$ ztJNo^@J8^_jVd{Gw29V-d#-b$B*N9o5emA!OiKv4X zSqE@QTG7a2i;_!ft7XVQ*oD!SsXFyl;x9*~(VIx{4Y5!Zn#HtgD{vp95p3g^NL-u= zI0dr2{>9MU_W%A8NIUk9P*qRaoNy{iEaI`kexU>hhgj7UCr99D5OaUs{rv)}f7*mq~UZI1$soPbq%OszB`MO{zqOz_DB{e5f7>%MxJoR3%lo+z|%0n0W}z`yJoodoe3?Fd41 zRJ}L+Y$*t`2%Hi8_AN7)-a>E4t1VC8#gX!*wl~EZO-(3ROjR~!AA2%5<0#VpHIb(6 zl&MMIp{_>hO*?Be42_0BD?9B=NAKwQp%`0YF4%9zzVU4V$eFv3kPtn#ooam`Y+yZd z401PMf2I);vT5R@%EeW2Mar}zI0r%>?Xb@XsY;wc%kC-(u&-;0n%13oJy>-31?vl0+XdWPW?}1VJUbV!eQ4new~V=KtTUSyddTb0^F(U$ zar4Ut5)BxIC`NFF)Ma)KR?+voB<+2vAV4+@MEeVGyJIO>$b6Bp=hawhlNu7JW3LQ)Zvqm_s4uWeqc*w2Wi(c^M)&j( z$rS^jS11IelPv@Qog_~>8ht#@Zh~ZC2C)Q*j4R6*G9}S{0AvfsV4~!pP`G2ZV;E(L zSCrKTF_wfl;7Abw0}|`bQz<7iY=;V!qKgxSis~O_2J(~;FMzp)!hZU)sZ2#}bW&l4 z=d!xf|EVZxrP|0yGs7&}=gLl%bb?CL-N_i8W?*2c2LMCU1Ca(Qh;dO%)UR>rE9MF2 zVzK%j2nkgZA|)>{)A4&MB6PD(Cs#1?s@S)Fk3Ej4(yYRa0vs~w33k*1v=Z1fefJCz z>_}rd%G{6%5sK}zI1xq6*iTdiKBrBW+4eu}MYnbUv`5!J0z)PZ2`;R#1HHbmpnQ^2rx3HjG%R`Z3%c-7n=jk^D+-=^k4GPT@6 z))6f&y%A$%M@z`96Fa~QUB$RsdccA+T{!x#)Sf%Aknq6^gVAJhyhG*O$l}?yGmC14 zz{Ka*jxvi*#zXTEB9ruyoNx@`N+lFs?T=ob!CV#nBtnZ`V&9v=z}mUE@RPmI^ZRhi zPb$iC3k4f!q&PYDHNd(_Jn5pabx~UY9q2ni#AGY^wD>uZO5ed=Iw+AjGhLw&M^WME zmz{?(2FrHM(r)p<;MU~%+%!Mnb(%M-TE~5y%-Q=k-L~r#=23I6t=aQ8(xdATzbyCX z#)hhbpYLOm&!21k24`-<4&UL20#FP}2w#-non`)oRSu1v4sR1lzpr=1zmmEeCd1AC-U4`eV_LHg|oQS=^_#EgmFd3RWKlaF?j_s$vh#1;)px1GI~ zYzw0*RS+=7;9^;fk(A5PnWLQp35?n7et?-L%j=nB?twBOk*xeV^2Ns$Hj#C~5F=>c z^Je~Ym4|7!S~S?pwWX^XD!5OPP-A|JFPhl#)UhRghCqQdTZl+L8`l4>A2J3gUs82@ z0>o`k{e}>UMZtTo=L4Q-=Q|Klieypb0P*J?s7_$`6L7ZcMEzX18NxC{BS8BNjjxPc zc@mQ|5#sxgAtCtodRW(cQJLJg9$>Kh{rAO;8I84aFF0ULG?iMD1V|upWU7A$|>blwH-1w z5&Vx+tjb5z4LQ!|rAkkm4!t?+s9ue51d4SHpt(M`-DyHvoRnzw_xE&luC`cG`2;_W z;lUOy83Jvl(HPj!t~-8H9vc^$CWSoQ#K-wvnUHz9P9(;Z>nJ1Bf5rdAYb-o-kL z*_2V(#!Uy@u4%%+bf`eeZqF$D!D#X-v&$33Y>5)8F`O_h-=;AAue{l_=Yd`gf}x)> zRVn0RXKB*%dGWN>tzS;Ll1|p`I}$Iw3-0cS6${zM2n$ePhPERZR=5b%>lg} z<01OoA}lq$uP{F->mq|7b21Ll_mJL2yE>a=r8es*hz;&21-W7gg=lUnp6UWFN}(aO zs=H*_FJMqElb>iCNuE8(vZ&K_ZeALfpr`9D84cR3JVXFPg9`3IOn zkwamb;^>I*>LoJ+sIdH%L?g&R`&JOmfY+F`K8pkTA%$L7+IrA)#lZBwpA^5Jwr_v7 zIjwbjY(MXnq~RoQc^<|n)NrZ{#)BgUGSQ4f=th=i1!)2H>ocsyq)OCq}qUAEEvC4q?W9-)73IpI|NK4BW=5rS*?Y6BDYk?AC% zqJZx_w!KcN%W~iMKoO~UEMOG4zg#EF{)K~E#oqx$%0d~Gxt<~suBCT?vn(JBPjf({ zBwgu^Oit>zg=i0lo(7&UHS7QP(Hx0Lnx+D0oJ5V~K3~Z=hXp(ft3ey(doE1CQ~?;Y z;fBgGLw*W8{n=4g2^UPA-31<~_sX=9Aiq{6ou6@8np>J`E+=5>r{sjIH5yw>; zg^YTQuc@03pb=iuT9%HcS{RIBj;5*m4a%+?A5ku$?}`dC?`p1^HUgYED8ulOd+v*C8IQQ>~3d3aDi=6bHLhiU$?*3W!7 z7Elgo4s7yXhbW2QN#O?3;Nl}1hW9bLZHHkNcgP$UI^0n5ahyO<-z$SkM3BJ2e~LC+ zhoMSZ<(Zpu1qR^C^rXX z+%GG@B}6197EXr&N*z$k)j~m7+M-m!)ov+^RujEek8BT&;T$?qJfQ&mVAfBnmECok z>(j?XlmRkMxPptfrGmk<&r^m(p~~7btg@b>K#oyr=O(WYUP2q9tp;Y^6dj#`Yze|I z(B#Fcj5Zb>kll451&@Zzp&ZFsx8?G(J!fKIX-o|f)yPU(RXPy~)VD_n_K^_h3s#EW z-|jPtV6RoMH27nue+DipgJor@Bu#tvZVU5K!6;#Z zO-Y{N@`1_G%9_oXKOW2KN9!ygQ;?;Fz%JdScHeeeO)$w8_A&>1cgu6c(<(+|4=S6)o5Od#Pon1=vI7EZF&?TC%STX4Lv19L)o(l1um z9)fm?Y$qX@47aAyfvmEoxl9&LEId#Em&puTqP|a<)T~LYTpX-cUA7bWyc_i9SY9G@ zmawioOk6GAxvyMmVB3q+)~@~AjC0(sY3XRxm15)fkeJlaZgB<4ds_&*YUsOPh(3Aa z|73(p7?s9IfQ@I+Wqba5_oS%ENtyl0p=>`oyi)XsAkx^e}qk{xB?= zdl;#UQNN9v+wDs0UkJnK#Dd_>@lj^Ii9424rN=yOG67kk0zw&U#`ce5V8oFxB4A0I zCm>HOp#anHdYJs6QLK>D5$qB|1tOSN;%N?(Untt>M{IuFR@t26@rbJk$jU%q6Wv4k z)VBzqeHrG|@ZkAqG|1t3c%Sa$Dp+fquV+Q6rUD7RTHcij3DVj8B z1Pb8E;G3IS_!zG{FUe=)2JZDKn$#o}1eBw#p_Z@WaP~{IPSw_xEVR-f?CbLAOjN@$ z#N*U*Gf-;Agsmij^8r)vn0h~sOfj?zR>bu|Fya#&MX8{e;A>;UlM_M&Fx>8|5`-yj z$Z*u;+t;)i0=P%36(A>!1-{hhek_Ub<9PFBga69*c()YVF&CWs2O2mW7gdAjg3xTXJ5`QACx6kxYZ6jP(@KmQn#$oTk#WPQE=8>2&}$My@(-7Orm3c-C8e==;}Y9U zfK=qhO7#|R&X)}K0sBl8NnDgf9je+&^+!(+;VHl!bWAj7)v9!BMYJ2ldb{m-83W(! z;2)g*VS+i>@a$vMe>u+k-W50uT$AJ!=y5xZl2z1WpId$W?6L6aaxcE}ZGBshulHuQ zE;~LZHIS4sZ=y*cW$3|pjcgFw{+Jq+T@J9$d%OMKE-kk$kKHo4kCil^j88RO?qWx% zFQha(VNRN3g(elW>tQhP7q3fA`?0=>uEk~WL`luj>AAV&x!U(Qo%Umx&rmJ{KpMLx zz}xzZVh}W3gA?x9_DS^(Qy3rz1Z@i>(C?fWE&i$x7pv~4ORBti^4WcZD?^-`)9zb~ z&jKu!PmRKL>v}Y?(Axxb8bgIH2n9K#4HO*01$2yq)F(w*twTPJVoZYVs+G(_L>_E@ z_5-)M!f6TuCXzJC6m9~BHVrvZ8GKlU)25zd6a~a^9zJW?L{k`J3Py$ahayVO@ILb( zT4*EDr3pF&IRULYJNB|tN@zEs&6~5j5L&VbWPrScTfv>GqTqCWG4P+tQo02uC4%1H zT{nu^rjbq1sKBW-u?jfb#T!h~RLfNjUEHE(tguUI=4$eTq#-&Bz5p)9>~?)1f~Tow z2ef%836i&kONpw41dvwyLu0FRf!Q(6k9k#^ETu$*RDXR#Rk+$}x=LvfZjvJtb8?BI z099hW*INC2O5DnxNsB+iW=GJg+ zpw-x?SQY~RqOs-#8cMi&YN5cZN=v3B2HOFI+7|->5ZFF1SNHCk?Hv5~VlW9+2>%Rl zU3jpTCp_?hNHw}*mn%Kl)?JyDg{kFX^CQfcF>XXbt<_Bn3nkWjIF{nVV#1j2-nfrD zo;BTYNVOwINr$`J{>pJ%t1 zdC_sC&vGMsX8R8*RUep)*Sd}MRdJ$^Uwb#uE|NE6S}3u+At=ZATG=_gRb51|Ei3TLXqu5?BElcDFF-k2l6a@)YJURR*6Eq(EmaD;OKi+h7c8|Dv z4SK6Fw{@P(6FZlv6{x0eDpwk|yk&Ez*>;JubuZ5}4L~Uj4Y3n(#nN8VoU^aKS z^L$n8?`r(Ejd;t$)Ya@`E4^wOhcF!I4kNK|H$v#|IZEI*g_Exny+1VxhDO#PP|SfMixhWFjDyP52kdpI}j75 zD8nHv+*zcbx#hG2g|ZQ;_V2e76nkfM;ZhzeRd=T{Ot zbT7m&YF6HI_+I`YB^@d%)wk8@{nnSgX4AYLj>eNF$CEM)f4cISq9Wj|3fX!K-);cO ziJCFso3wdk!_`U6um9m&r+H%IE}GInwro>E&!_gvR5$KtDS6#lhJMi&00JbJ zfL3nx+$+xU7&kQ%2F|0_N>(S&Or&B5`gX>oBD>5v{~VZPNP<038Q<`Q#lcH1xF=U5 zIn6U_EJvSU0YjL7DW~HWr{!@DAg-w;*R(bz^n2ZRnc>Hzn9#ocL?Z$#HqA^N;&>Um z*{9Nd-aJiIpcMsH{1>&lia#*U-L=Tlq$!!B0H6>Udtc78s#eyuW>#|Bgb?APy5|{HH%aDU|8@}#VA}c3X`kA zCBsEm_3g`F2#jEgVKMzld)!#KTur@=r{CE@dz!esd?)8kzIVU>=z<D8_(!J4EGVc4g^#%l64%=$%K39v4YIRR;9Grv7%T*?}-3Pw}Sx zn(4#YiKKDuyFU{ZhZb{?d+!k-TTC@P1JnCU6!565)NUexF+sN?p8RcwUo%%=qCKQc zLMlrwZji5@3o9{KOT*ol=)@piW+*!ky_a@Vyq(ipxB(x&vWJg-tlGgwI~Wi$zJN5~ zETvnXH1Nr^te`#_G{M;wBrl^SW{U`|oK&Ru=W55#oLOOy)m)2_0*o6k3!dpB{i#%b zfV==*D*%ecR;krx%wmu#Dn~bS5Lu&vMFbnU!5l8~(0v#F*hR9F&^!Ftya+`woT|rn zzsUCIiLw#7k!67u2?-dE#=V@3yCgK3d?OtQ?t*cRa|5W03W>&wRcw&cjQ<(nh2*=W z+gv*H5o?d+S5wZ&8<%AuNKnC}AWV&Cc}_@EiT|}__x)a*Xv{-8Iy9UjTdx+cW^@%3 zjTAoZsJ*5~p~B7bO*Tufli*-LDM2@|V+^G(s zThS;)nDcSdvq`|EJca{EN*!wIx?`j#=G#ZVtkFF#H~df_U|r8G7fJWSNrA7-`1^k)F_ zvQ+|QpCATt88Zlq4FQ}1_$kCEm}p37NbsIzN?QBbs_dK>(uRUaEmRB!ES@i>0qZv)l(SZdeg~N%;n6s^9?zs-P-TBv3rxls+H;;*OiX@3Ta$kW@0uo zx~6WHQ#Pw7PWCe~BVSKe1=JH6`3&e^llHfGpy>GPkO)@?WyqT>PO$TEh{3M&?QFdd zbHYrh66Jl_jU&YzjU)1ZY1hY?2F&+<5RWx9yM2jpqL3W*?xq8s8b;6>flowl1Ww;l zrwQ4imhqiZ40@60`~L)hw@a9OTNojN_nE?|63<^H>=Dzxv`0_GGy^zfu5fmqsrcA6 z#K)RJ7MDlC7P6(b@fe9P{1gv2fm79o8p|NpVoWgN+9Sq=dHW7g>0Z>6RB`>CR||?p zR}kfD2-ER$vvCLsyf4;XK|gYT+l=}NYIR%trnCn&Egtq{aI{#jN$(Xf8>-tduDW4t z`hxg0qOK84k_e(At0FlU=`EHP7SoDQf-_0)Z%{Lq!h()t>$H+TM@!UV!AfAhCY~2W0)Ax0 zJWyOuP`wDx=u#*A&I=lZea=X@$bgp0crpu5Cgo{856*3BuSxEVG-`^9`jo|Z+Jpbi`svpTln zUMmX5nsH|T`-wti0Cf(kXICKsgkhm(I2Bq7xmv6H{fXJ*IN5%x?{qBt)B7|h?|b01 zE%&?2(DM+NBd_zgq^@Uw?zLgi1XYx@N+YkqJ%w{WmXG~zDT(l#(Eo8r6fut9&D7NL z>$Pt~{jycB{#x8Z|EWveB9GY-LUqF~dGN%XIjs5X@?+U(TmrKxnat3BNG+j+r;!Fx zDry2z4-sy-c4u!+if;FZfVXvnbQ3x0vVzhCIva2aZ}WR~HVL?)n3L$@jEQ2%t`Qz2 z-oDW>hG1eHJ`OjJfV^k#$dNcWIs7O^U`k~Pr|e}3CXOVX zbvD5=J&w>9wqa1GzTkPJ27buRvdJ~D|dEabu(2ZEP%)u=>lx_l)m^hHerD8MNIP4%D z1tsf+OgDI|011%)9x+c2>HOG7HRurIzd4%)dvp|4aPgUi?;>XjVnPL|@p@7`-Y|V( zd*xDv_uv|y(1EQqKPAXgXfZ?9%S}aC8>3$3lRJ-l{`(eR&mJi}%hiyWu)U67CNRi6UjFE_pDL@d<*h*x3$rb-7^Tfk3 z4i?R?UffbQ+{+s^Nj zRsD~5&hF!R{*PEiIEA=szt@It#mc7sefX?dzQgJmK#n&ykI5H6FuTM4U_?)EL}cKJ z>ooNPPo2>;<1+PYVJx5DCi?uAjg=LC5#w;4cjBty3a!dcx4$&1!D$K@CRfr*R%$ZW zPM(_Fg1OCdSP^jt9 zTNjEY+}?4Df6@oEOy3l#M9aa2SU>7Dl}vcSdY|m(F&bGJCO>PEwLMo#G(rvy414TE zu^6(PDRD+Uh)V<;@&E3DcbR;I+Z>^dpD^Mz#U`p|*ijPJ)M$=4It!8Vy@h5{6qqRt z@P|X^GAf{&Abn#`2(mXVEE-lLzM3IFn{O-8fQBvd2c!>^B+T#D4okEa0R`f;yP3G^ zqQQvKH>>eJEZ}RlEo`M=u5G8zDc#va{mM8C$CMu@hJ88-54QcWzf*UQQ>iJ70x5`x znwf2;d}%`t^~iQ$^zR(`res^L z%b&ZkyHZvTIfOcQ@#u~3@vK9PSY|js>x4 z<6HnBgRGqM= z1W&LIr%w|RwEq&j5F+HAKSdfu7K1cq? z3ETX-){GCNS+dWJvG!h3QIXX>%WPt)B3XUpqCyg5>e`@lnl*Nb$A&rnZHQGN0(nwB z?EIwlu<~vB@H@WmuPBR^=W{w69}Gjp$0fwo zV!sYOYKU+uE#y4Zj-#;DW~WZwcm?)SVG3|OKpiV%@*`~)%b$ydwMNeUDZLCs4d%K0 zBLoArPlVXT5Qfm}#L3-AD6FCjZ3!1gmMU-r$Uwx1qgWvath^!Ht5_hZ0Xc)?nOv)K z3DYCk6U`}LjHQN<6sjgVE6^~|E1XmLe`kL~8gTZ} zrT9gt(~rw8_F18AWohu)YEko3Sja%Dz?^9t^V={SD{vcI;aSR)zg@#=kx0@YeYs)7Ev~@IW-p z9u^FGrgloE9erQa{jK!j@3{+M+zULW!0;i94om(clXNk0Dyiy$*py{Cfg+LZDfrVi zy4)}4UK|kGx8rq6$m6*eyXikLx83D+I3h3b)%lhH8b`?M?D;%)H;gIZU~0Ly)=wFG zvwNt2Kn+W^QeaQY|iY} zi%%16Nu2I+(euP<*b;;PV*wm5@1md>A?t2f>z*uAF+3Sfxw&vU`&_;JVf8pgS=#*| zo}KQ5=B7qTpQYiV#^w;ig{BJuTTqGFueJTow9raAxdLj^gkLP2_<_&Cbma9=-GCkt z4V9^&o>7s0skBDHucxz(G^hB9C;c&hi@BMh+1o7dNgDXyhbP+`+7)o09r|9NnKL!T z7=}4ngCwbx2!IqfQNu|6G}?*Guh!=M6t8@)0`(yY{Iot^ zYH!EJ?v})+rje}ZznE-z-(gWTY_Gus9FdWvoWSK9ykTKXnr%T&S8RlZIzBNH+S;Oy z$?M(A#meJkm3aHn4>e8#Zt5haO9glLht|`l7p4E*gL!BT9Ab(YV9{Am*y`3H>9J2R z@eL_Or+0m1rQat;6c9ZtpT!~Sqmq<$wZ9J{0of?L?#HV9XukFotMg4Dk8=)%|E)*o zr1qMVgz$H0^Py_vpS6STBPt@snLRibS@6(B=Y3xa_8mulGbkd-n%HR9t#AT&~k$j4or(UDqR{00&2p z$!M+5&HMV!Hexg(cmB7h*AG)qGI#q?{0ahhJe(FZg{yOkc?a;~ayRETiGOrglW-#s{F5=N(lj4k6k&I@hhFE#o&QXsY&$!j_4K`tr zVeW#TcWZq|CLb^QpFx1EjlX6#E7|vBHrJ}WPn!>SMNuWukCT7Xa%CATWo2m z(s6bKC=}2k5bz}PP)&gl#xPEVb5Ewah-}~{%9LdlPbOZ_asM>0LniMGK3^X~hAOwE zQ~yq6%+yM)|?_oomkJw#d)r04tVw)ds`*3CPk&I?v+qN6qHYRG+*tTt(jqS#o*tQ!rY0@~q>AlZ=pZ8yw z@0_#G-g~X}Q8)lHcTfH5V}5l+z}MC`bi=~6fM0dkIC>pA0b9GrzunyZaEH42`RQNU zw08o(chvJ6hYB1BJ4Q2le<*U*hOeEi_ zfdc&_m!IwVWVyt5LA1u&*=h|@6I>xD{zyI*KXG{A?Kqa-@?GIMv0N4;dy3gvMOwPA zi=XvmHi8#JoJ0S@3I8r+3`1LqwEGZsa&~6JUMyeni<>D9b)-=-Ppz5&p*uz*1KxP$ zGlLxxo`lx8pU=_weMaXnir@`Wp+wFS zF`HrCu7bwq@j|CG@nEjUpzs+(?&>_F6E;!Zt~RVGPnhoShvhlnoBXGTEm(buR^6G^ zxx-GTjiU2$9lEc$y+C>@5;J)YC%lQXU8gZ30GbmFLBGW3%j(Z~SoL6bw8%VnbRTZ` zHx2GUR?1g}LxmfiLUm+%+e>I#m@0}fbuHI}N+)7tWJu4+XOp0}{``0cbk!X&?(Zw{ zliB*rt=u%e=?eup=J|;WFrcm5P^8-9xGgatPc_=Y7T-+N%n~J2mFVD?tLn?lDU9&L zzpGZA<^Fi0F&hd?2b1Jo?Ksg~L!oeiF@d9AXX&;KqK4$ucaU``s1|=A#%KjvJsnpD za?Pwu(jxE2>z~S&Gx?m9On-^Ohu8~rdF9+iHpkA%GVBu^oYAH}de*Q07@PlXFrei~ z$Go~zrvza=zDPf!>wfnt#Y+;*hANEJ>6S(o()~URe^*o)U478Ko=H+P;x>5Iuy~gt zf|=vE)@Y{YVnv>to(5gveK-vEeW0XTYyORN)zdFSJk~9;(zrF8)X^A(p z3T^6(V1D|bA)126uiXZ-A#+CZT52PhC=xIhF-+`q(VWwU{ZM zq08gWvF!nA7+PgmFMEUkTjpcMSWBquVIQC;F2U zZ6g28sYk)^$|VlR(JHDnnLA3=fMECXF%(mD z>I6_S?;XfF0%IKiOz~MMioLSy(q(pO1m`)DVs2b@Do(VdxyWvVxAWPkP8T@$@pr(F z9+bgAGg^xw#py@=I~r*^4DvJTSEpFKL5y7sE7D*YF{bdRBJ&8$;v(Uv-y9)yXBEZh z)a)>8pF>q+0EcH9E{O3TDWUNSJUq{f;VK0S#j$$$vsHmr3;EVDpr;~dkUSlD>s(5% z4SF56TDxW;jWfpDe@_TTBG}<1*VjkX0)AiD-9x7VbjY>B;Xb`)_w5Z1>ao#L6d|v* z??=N&uE3Q%n_h1{%T*_xDs^4+J$T0^_7qg;W8j}MAtvw!yY)(LpR|o~W?e()^D-pu zle&=U&M+W7HL5HrqG?lcq7CR)VyZ6{Q%fsJK=#Qbr#>3{d+D{)W)FJT*qNxRkukHB zH-(DLrKZa}f$zCa23SP@ZaJ)OMadndCFtNyzxuPc)G$jvLR`0P*j?K={R_zzc&3T* z7+B%ksy$_*p}^*|iG?Z9RWxVj4Nv=1RM+0plYu1rCzQJ|wZR*&kAcFmZ#J9Jd{oqr z%jmRteFY4rbE?kcWk3Ez=KHE$Cd zM~D^)U@bt%)zKYf2`l*hQdnI|iO#drN0oEkem_({V7q0IgD z{my>yU)|8@fXXxjn&mWlUYOl@tWKsY zzk)3+l+5=*Kg$U$Er=^5j)bg5NB5f@zj;XBFXV)9UGXvtV8IPNbk!Y%Zt=H@!QupJ$}DHWutnM2%cD0kp2p_HpMd=Qc@7 zkfnpba&6?kf_)ycQ73|9Vi^z0J;5t7A`Z;8K}YtWGp~CijQzcH&@TdP4GQG2x_CZ*ZtK>#MXTw%d|Lj%nV80-x9Ak z3VWZ1({g&I`9Z>O!6w%Vf63Y5LXU-LBvRb~f?WtaETfGXfzTo=I%RjZaB@q3N(k2f zMU%=YZ)xF2u>YUN)K2X}5=)Go|DB6Kv{97;pENKn>^RVKckkGSG5eB}K7^XzpHWz$ zVe%9ZEl&hq0IU&^1}Z&4;p&sgrp}|*GQyb7=!snaU8q3PJE>&)v(*zOU}Fj6VLFJ{H+TF?2A7xuoP_=Nzp_VQb!*}X|Fgw$@~tJ*MZvQr=Tu%l4l88 zLAD{Y!^V{k%IXH^g%B!T{t?YC|EK!9<`LNWT|JI`w)&TF{Y9)F9ivclcmg3SQOQ@* zGWJ-&`fI3AzZ-pk*`BR<~R?#AWU6K6Ygv3PIe8kP!m6wO3?k0r3>@r?iXsh$qu5@~MY#yCnQqre)fb zj5Fh`Ko72I>8mUoLSbjm?Jm$I!^6wBJU&o|lhtQx$&rPPHvAkpW#;!FfUlVJce*4> zrw3|Da#o^TU~tpEiAL^!_mCAOc$cN`!BY?DFo)_PwNW zV9G)|3MC~1!v?Etf-v;vjoStu1gJ2F^!PN);aGfu5LHE8o23mDKRJfORU^z6)5wwy zMwpaDKo<^r?mstTsfZ2W=-fg;=EKRfu%*V~5$A|9E8w9HMLY1WnHZ3TEg*_Yk6hO+ z4>FaA_)W-&=ornCPd+&rz2r_-6Fl@c-~I^IvoY`TP#%1cuHBYuj#>{eh?u+|5vH$Y ztp^?!&#hj8O0y=Ddn%PpQh@?a)qdgihvwI9$i1&a*CqIpq0v@mBt!B zHf0$4JuGJ>DI*(sY`bxK+t|YKY&nL65*xZlm1~&bzko8DF{mYp80CmWgX%P#V5YD# z>V1zH*zC^r=vYmtosQGA5t0b;p{)9KUSZ|*$SesAoSCsW5wDumQ76JmSXeBEldZ=< z-7xa5jDn3)M(?#-eF|DAWWv|$*Ju!6LZAqgNnB7MCIVX^Q&jZ?)+v9@N^o#=NDxc% zwg+4A`F1+yF6|^k24@^~gu8XU%YqYYiUrMqo|_^C5sJ+*?Cjw&6Dk4UVz`GEuR%v; zJ#8JDNkhc%*biGTI4Q3un_Kf*X8c0Ml01MThCi{85`jzy;_qq>4xpcqL4a}A00@01 zqWIL)wHZZ{rzC%48IW?03?z4ENIUmKs(Qvc6A8kl69t2+9X^czoJKPkX5{-nKazsb z;FxkE(*h~8HQJv@cBrMqG#qY0IVy=%t+6rUndN!?-4`tkr`Dly{Wh_Vq|1NKImrR2~cspPpXDp`5;yHk5 z^gCKRu@*l`>)N-psbL*GQI5DF6-i{qnwdNi3l9at@ckwKZ;y0|nwqba*WVi&FWyL0 zXs~hv6=WMp73U?rQmjma0Wt(dLretU_5Jj%xdHvi;z+g;#Pse_Fj#2ae|UTLx&_&p zD4Q)8ZHV%VW0%qupTqFe66MYjtA}hf;jC|!qg2xiItSj-ia9e|&etm(D-L?LTLNa= z7hJa5qK3x~T)PUJ1ry%y_xR=pDVy$eM|N&BbGIkd5;|78)m=aSfRA6~k8)m6j1ii} zBpK5*+2`afu?~u2jMs3csBLWh~9_U3T3F_X*@)y$`ZA^y2_fH$R^a=SUX= zVZciT@4kRRJe*-_q;taKLrKWy;8hWAP0E-YVlxD>S^!B3b#mBt%`Tn^5|m#y3|B|D zyt#zg-0e&NAcnylD+AAo+ad;J3Wl(n?0i%MnP7|F+;Aq#X|~6gXPxWeep1B*DiS>6 zrSc7b#JS$`UImjpftuYr9)LCGCwK5+($Pt7{`JYe}CC%VC+LxM9;r|ni?YYW&FUJYT*^uw2PpMu21 zW$Ng?pAk@0B=$NZYs4K50rWjwIYbP3V>+*_TXB4o6^R#~@O;+PmW6vB(qH8^!xL523FToXgH6ZjpS^I5 zD)|M2C!%wwe~fFL&+K%i)s_|8Gj4hRstxr5(F@I{5dEXWN%)d07M!S+p&|oPng#q{ z7G2uDk5Fo9k^~)!Qm7)%`JSn1(mxRFK1m6Z0$nBWMB9r1A*LtyY34tc<|3E8quISB z)H~rY2-p|U&67Cf*(KiY80tt-?a_%4h0H%d)-f$Fj~$v{?GCIuG-G+HyUJe;JNcIr-Y?rRR=IH=9oPU4L?NnP>z_)DSb zSYhcsKA0?gwkCI3vqJejea0-27v~XvUZJYa0{-0hkH_}Q&&PZ66R+x%_JO7i*HIc@vA>M}(nAF+oRfi2Me=u0u!!WwIiW|}az)htP# z*y}LWgXFs(*x@RF2i_`9_sQ+M5&hloQ{! zV#n_c(SJQXl9;h)`Z@u|PmKHsh?cW^em#OSc#lzPh_Bs#87#iU83q&eV71?cP(IWo zRij6Bo8t&w&h?O;9*fEzK|@3z>W(G)#lg~Hom^jLK@V#>Jq!z%Z;P&vVCoX?b}%mA zz<`Te8#Q|InZI?#!oQ^J)H;K>IB+fuKjDwG83hQ^E#KfiwoMa>xcK-%*wpp4JzJxD{PK7O#pBtHCTPfS0RNkk zglr*`sihz^cK1J(H9YxV)IQ-+2T6J1snu5Lg;RQFpMh+T4xf(>k61}*EQir$16vk0 z(Q1SwJ{rF4WXw}PL7PJjov9-OSh{=S%)60*Xfe9AT*k7SfWO^H+}6iHRQ5Dc1N2~W zA+B*tNDiM&X4wMshJlv!2bQ-%78yiQJytU{r%>^JN6ZF0VZ;m~SY2m9lW<(Dpx@$J zjGS$W(HuTQka*}-(9n`fA;ye#DR#6q1}(l&PGLQcrZcNx%w%H+P1B5@)L z!E91{?c44-~?7 z9>)_!spD=??!uao4jpOFlZ8c&AuLsS0D%zZ`Oe2i-ojzX<9*+g`>%mIPW>3XpD~(B zP*>MVd+Dg#$*I~~`OX5B+jomV**i1F+@T!a985LQXB4QbD*s_JBL`gYy<@NEdSZu1 zCf@pKIc;OJu#`S8=9i5+6x5?bWDS+EqTuc7x)htm6e>KT-~x=1EAOGR9_sB`;2wf$ z4&v(g*m9vVMQ^T|I{Zxs&nY)3$Niujmb1=5Jk^juBHZ(RkvhoPJm&jP%D%IH2~+R+ zm*mW|X6%o{uOEL%9${P{L`%CzmGV?+Hkns7GfF#2mTLpiZm{ip>MY95ja0y=4k0PwwSwk02i1vIv zw&60vrU)*;_?@1Dg1W$L=XN6Eb*V!5q3>@m%Lvu&Wz7kvsP!8Uack_oz&PBE)2;2uOiFjgT#0_Oa@CmJM6 z`KK6A^=oR|{u}4uD?VK;8<_iIL3ibUE1I)a`}oNN|>^2#Xk=2*ZV&MYuvXb;!Vg$+PFmkp&{Z(W)lE#FdFoll37#$230XTQ z5`*-k72ICd9U(Z9@PRZ_LX?{KEx%{d7E|nYwqArtm80Qz0R{S;ASXwhT*)!PmMd(W z=~cEHWnq*J4JIQln3uB~ZZzvNa)ga_u7=qda2wUa(jXZM)4pbVs_Uq8VS_*`O{{?G zi&D|$3cfuOK8$RyvUb@C+;F7*A66q(b14)=<$vXcjtKLQIz`|>O8Fwg;^(-uaB;}z zJjpv+a60=j0IHDoVddY{om$dLr?mApy2;lCzDC|)`j9R?uuF@MADWcL(jR8j;5D`&y1N^pJd&6}5xzVzVk!&g;91~o3!*IyY5dT*&3Dt~s^2Ng(URhodBg}pE4aJ24@ zfA+Oj6>|ZqWBl$6QHumoc=gN*t$?y<1^ErntfDus*hQKFQ%btJekZwObAcBwmoh+= zegoa*d`WznV$WUpFKhKjn3QGAEfKpuf|C_Mu2b%g#cP&+3DPYsYFzFdscm6JK3jiK zn7HEyo&)tuOGj5=`u@qT<+I7mRV7E`E;Fl=({l%)EE#hHj)AT8VHu?la*AE ztVR10oksxwSzmS(6RezpW~JS?6CQo7G1kU$PT(}P=_?y6;}=#{#}2>O$NGTxU%X?K zgckcHv8gRGY=)`Zf+4N_gP4PFLm`*ANAaCa1XSzy;}ns!$n%-+=6KJRGytriB+Ku^ z*J@BmKk(D5FA2ZSbot!v4IJ98vUkl5gHc5I>acL9V1YwpPy_Ky8tE9+4w9{W`e+ep z8e_x4sf7J|%1bX5yr+1JXr;Yn!l zaiOMw(6h-dV1wGaw-ceAIX_r!M7NzzQf=gzV~v^>N;Tr>Iq0;d?m{VQ-GeXrPV;To z#kjIW4^;A+uE8dY4_wWhXAV#?Ep?XgW7p}Yd~Uj8B5`M(hjD%XOdIF1o8+NOj(eGa z6~c*)&#?y~0LpD7X%B0c*1RXMCS$ddenST3hV9{<;;IlP@OA&D#cEoE!5}qPlqtjx z!<%9-aTI1JPt=eNG)Y4wB2zO}SO)up$)r_-Fv8k|xP zQY9%BLh(+~z$ogi=p20_7!Ja27%|+rnCE-;pZS2DbGue!@%Y!4g&8m z5@ekKgVsz}J_^Djp`k)sd3DrewM9_Wli4+|3&1cD9(T zdo|wuD||6#nfDC43By?1l!L*06D__7Es#}?jD%D(X^34%Hh`N=jfZl%A^8nN1L<~V z76Z&F=uX{F={a7{H|pPRH-X%*q_P=^s~j@7?!)F*wFPuLelCV88S zNF3Bu2w$lm>ru<>pcOy}Qs2p-zTav}DbW!KEtf`s0Qb{9MdtQVSceDKww_=ubCg`# z1mZcjO`n}r$`_>?#@l)4q6T+XP&DWTD_qr78y{dP0T38+hs`I^YJw9JYMry_aUgX% zGnK0eAn^DbB216f)PlpN2HOMTy{yqd&PA*=PPFkYS4AQJD_diX9|m`lsAv;T-&T`E z#?vEF$(YNA$m&`UQo~Xptr@BkTaFuGrLQTD9V2Kb8iNDD^|G?`&4%AnTw zC%@O4ZR(xt@4RSH|DZOv()8(XR@D3Em@3KCb9M&|V`$JDdg+ok_Obrv{V8Tr?39q4iN@WqHgErrmuBnOA zV??;Fn#^7Z#DbDvKaA8SNK`Rm>3!7uGjZhydJ23n$(kr&ObQ3b8-=9a6~BSlc5g2} zI}`%)g304`$V6B$<3GZA`dy?UuA7}v;w{U`jx(i7Y-r5J%*bRpC=k-?rDo0p`Dj+` zxj6o+LNpyOQ7^%V;tFi&S7>PK`3$wyMT?iD0MH|^E&r^@x=}f+sKqOopoisKP^mg_ zaq?wQ=3;zPc>R|&(Ltdc5;Fhv`Rwqim>^~Fm-7ylU4avRjx;12wQH&=TQp}fMD`v~ zsBZAZH=3%@uUe7f=i~y>5}HnLw}Go_uDQS|Y+`@~Sp3){u|w3KHF5)$p_y2oh-o(p zylx)h0gV)q>3A4Ze}DAa0~~-M9Y39GKb5|egJ}_MB%F2Dz;-z24u7({#hhS1J3M2Z zTRwYRzC51A*ZggQN!iNX_iYq?7G{1fMx6^N#_|HkJ#!7{6Jd8Lsx3ZpxN~2HOcsM{ z*=e(`yR{9dl|@rJasS1wJSdFxVY6EimBN^hSot@ugey1Q@rxkq04W54DQrI!kc{*u zipD(wNwG_U6@9qOcX224ZY5QBC>LFtEv^|xw|bS=*3qmO({=zR^?k@;u>_zPpw6>c zFLiqKb8}W7Ych!WY00blim{~A=QOfGG8BN)xjz62Di-ae* zs0H`mY7t7JieWaXo5NY3nxG?>pn)=mBy^MPr>|TZdQ8wuG$O7vNccnXI4GMLru1#-R*Wy0>Ew0l-6?L*O<{ANA%-#Q)3jJ z(^~F65Renm0zf|g zkUPh(}e}|A+yEN0S>KKS~YVVb;Asy2#1TR#Z(nG1Hx9^=*1|f4!(mwr3(pi z3i%>-dE!V@9c&CuM+SI#uz1~Xkw`iC#?66v0s`voG$qs_WrUZTYK7>?2>CrvsDE9u z)Rk(9GYvT0FUO2O4*F9yO>hi7rYxr&tuo;*;shShY2yx-tTvB$DS~u3Ecs@j0*lpA zww!?;=ZamFU5d{t(QH)LeL1Uc7p##FPRxmogH=|-G@uT73?I3C6ruzQ!9luHOn4@& z$y||_ro5cyAg0r9Wx@=^K^0x4F^9_TMp06(%g^0-N+}=`^tOBNU-IVJSMFl*f2wLc zM7i1wIPLwr(`0FGx13mCrmU2}*T&xI{msS`>(!H7n%SV$APEe(8akxHAP}N@#4qIc zG@cR;YT6SJQ!e4=Gpa;EJS(NI_XN=Kv&~~BlE950obp;~(OZ-`%1^pF!Unqiu4;>& z7DK(gblEzCAffcmd6QgQ5J3YW8FNlAXOM3JzoW_Gx>XLVtnFz33P6bb*HXE*c_P+< zYTpT}vtY+(AbhBZ@Z@AB2RyXut5~6|guqbjFSNt=Va1REN+gpKWwa?I z|30$_2FGLM6ouP_FXkZ;&b;Xb>ZrTSch}`DYkTs*QPyl*43L9tzXav$Woi97Jn`O* z*B{jiuq1L=&Mf{3;wIeNc?zG}L3_ka+xKA_VN=*Sp&nkVF1Rri1>H<(dQvb8ccq?* zPH!%u$z&e=L3rR%(d&&izb}1KvZa(W8ZdmGlV})ACLH3*t($8@D`aS=eb+rF-u3qx zZPsQ+3v-+cpO}_FqT)~UX$9vG9j7MODQm08r?!BiqJmBaUSC08I|UW=?EWe`D7GlC z+L>d0y(H~zOcmb7O1evH__bym(kOgN&Km+_kj?;CouwF+2K#bC6&o%&?Wj%dS)z1L zwaaX*Y=jY`+65v ztYzP$!iH>ts;!5VkRIvWo+b&MEV*sgcjlb?6^jGx=bW}MOee4*?dCP! za+t~`=_ZO~{9Jo1FS68UA{_bRo5{)O$@$`h7gJL{li;tR=eGZ~W0KI+-6=T%z}FZ( zL{@z2?2V^3_(h_N7&m)s_cojd?s@I=tsoVR40my^=qK3d5NyDQOTudJ0oDvvQUCd1 z!TY6ElA;?ttYQV!NK#%r+qbebk+zgSs#-Zh=ZkVipIV6NTD2CH zHJM$6B+b-NyN1)kVwe;9?IIk`6;k0^M1S#0_ub6YZ6j9fdOTmTtPG!eiki6+2M2d?FK|)yjA?Uwtom**riI~2wH~qrQ1Y{P&t-dN@i9ju zZs5E({dqw#;DmUt!{KOxg2Fa(EWH!&;y*Bgp;3{3di%mFT!6LPJK z_z`Y6v)jXAE8TQ#;-LEhZ~zcy!*XsDO;hW2GXNe`D3hnK@s6!92W3v{C~>PNp+Xq5 zRXJK87pLyUqW@}q39KwX=o-9dEAf7r(6P8#=IKGm9=o_xmF4KXRVoa(GI?+^+E*g| z)y_e=Uz##(i(SmW-&uuCyr7IMFB!0(OL-!9Xw~@kcj!jD&i_fC>T|07#3;!B%D(ZL z8S3W&*vqj#$j_Bn=g2bQ5yqJ?3k|YVIm2L~;<4N4Xl%I|2uk8*bo9M@>OV@YRX(w=02l1=9-_)H@;bR^ z&Kv`?JR9wEJi@KV+XTiX79};<*~8-Ca64v2mF?3<$KV+`k;N79w$H*>3KzEhsJksP zeQK`RS~+A~Y!{-+A=VKhI(eBV>+VevPdUtqpq>%*zIFJ#`83;mI*bD+bT&4v^MdsZ z(;TO>l8&g)3)s(USD$X%#L54_Gt17~3lih%VHc*;;NJxxAxWA{@o)QrywD)osG(Xog z^N@HRI1v=)NluIw^vNj~ViaL0g?=L_0}h*A{s>=mC9H-EY0vd?C*_;@8})4jrxdx~ z*obJKqqdP^`^}^?4TwwX5UFtNN%RbLHdP>x(GB%)vQCA1a4tV6f^jJ0ly|#@&g5v9 zopVbWhU;}0tC&Ti6FRE~7h9`$W0-1dT}zI5YKJ_ei%EmYVUuOBKJcs)rQxJmC?$j; z62-na#pXwrW~miA1~o-*qd`MzdTJIXAiFFgg0qg_v=$bkls#+FF?o-PSY-VEXl7RR zRP*c({?Hf`G;*?uLh_EU3GVd(Y&Z7A@p+iP(+wlo>!bibB*rRi%{(SZ;j4|QHw6dq zU%95A{{C$yEe5>wW4sRuh?LM5h^VVuz!X*7-| zVbuPE54!AU{la4LU55sV^-M2eZq{1AFG{ft5(@jTc|AN>)x`bP;n zE+}Y2g{CtI+~x>|8kXtxl84tjPog*R9xG2R>5&Jc9kCF zz#Cn<@XB6JcN1qN1)GvunKKvES2x}%!{`+`4&(txY#{j1Lc@2*+5P+kI5jrd$)HxG zT|Qy0AV%(t&Zic*Y!@O+biVs)zQ;|x{#%0sF_mk)os^D#e;9WQ6Jnb@)%PdWguHJR zNW$xHj9S9-nz#PP7t#UN$Hw~F(AYrbufner930h+Sd~bwXqPxUVOk_OF~%6&{nkuD zoNLa}vpiF3JS&gi5v_)4?{cQ&Rc% zJMW0X6gL3qFPeGR8?C^w;8jDHE5ym=-LEgd?b~*OGW&@-5B5EoCLI zq#?(DE~rCr*lo7Rlq98|dQMTNJe|YpMJ1HX7nZ7&ccATX_mEkwfYoX9x{#<%#APtw z+kTyX`4Vm>jPY~8<`+voK|49s9Bw~DlirD0b-QVadWM9zo_m`T>BRD_uig1E;NJ36 zITY#Cr>2kcH;6puNr7s2IW9_3m1nc-T59Rgnh$l*fB=?e>I0jOFML~C5K&*dr zwNNEt5QBIh?4G-zu+Rk+GT<_vv&~-0^eo`GS)=S4RJ8smhrcz)mF+rQom+33ehtsL zm4c`cf#B<0^{xf8G;S-laa)M4WF9IDi^X6e5-Vrq@A73#_AX^4k}hT$aJ&SAT#&6p z^n}e+29~lc&o{2LckH_$!SqqSk3OrDMpI1;cFSCMPaZNl%&8K!UR<+_(BJb~3^J zn`|n98zrnPZZI5UhVO}(1t+B=bS^FT>-)KKJfYvDVRt$52?Jk96xP^d89t)?H{_IaR_Eiur>qa%Xuls+2#UvjFN+&4i(g7bDikHo@5bNoG zFlV$|=!oQtVT{5V-r3m+3vl#$`I&XF0bm}k{Mt%Pgq<3Gh zo9>TFZL9_OffF0s0V{vZ?!DeFTxoJMP+OdExpM{7toPey$;{76TTfX7X?zlHwp~uj zJ4TJCOH$mj{p}&akBqwqw|6$@o$l*hlIHV8@Slw%cz$kf68{bQS`K-_4)%Y$dZ<+?=KiE^%lhT&h{jc zNpXs!GdcI<34Z^N*>89YR|*F>)WH?4Q-&XQzh-gpaK&76QA&M~;4$B^)NH%!00=XQ z2(DzD2^DG(RXojg8U|e4kSXnw>^}dJp3Trn0ZQZ-nb#zwh>KQ%;`ueD=Io zplk(vW`D6=eq9@li_sgSU6%xn<~6(^Y5jF7g4cQn$%Vc3A0*2hE(^Ew zNGY_m#$aUP8}9c+H^A?w7CJj6q=nH$OtKf}`BA7WImP;?1&*WAzLNSJ>IEa>ejTy}EiLDio*J=_ zLg_f+m8Ie57}vQtP0UEG-YULn)kb5?Lk!(9F@K#t_~sg(Q3<*YOQ>e}PcNg+;YpgU z;FaS?u9?-?@-wXYTM53{In(!zS~q(H`0ohIB?$X5XunAq*>PIeJ^S@@OSFEbViAMdOzgM{1TO(Em|J#J z02qpKl@dH1sJbRrft(6ZXwU)+&FoA(aT4gKbO)Dgu|aoedz1;0l(HnbK^$aEIow?a zDhw;G0~4E@L3OU90G-|)lf*nheqXPdP|w}9o(5L32{^WqJ=9+&3mFVWDJm0%3Yntz zd@T?;1?vC&9KvM>MjDn?63>m%1`4E`nd%tURTmT9N*VPzzpnUoff3@HQnPU)U~gxy zY)en^dPo!>ysS70Lqqe1W^X~OkMee<3a5=G*xrtK0SaX$^a|exaRy4G$+h7dBfRakeT#hvlO3q<`^Wp|5H*#bbgU?3B}T*?wBT- z)T2tgB&>ydJ}+kVcFqzMb(mZQDRYQ4mRh_wPs+z-^Q`da+kM`O`zRJe6;Id@8TmeT z{J-#fW4C3^fJdtUOXML1=gMf-D@bvzBZBW81Bk`ME&}t#&G%XwZDSE6{+YxcK3dFD zyKbw7#idFM$2W(GQtR z$VwNei_}dDo0)vb5vI0&!@1_Pi~uhD6{jj4>G;D#fMqmW5R^ReUn7gV@s33L=GkPC zz;z=^=3b^3ot1?>6SlCmp?Rzjt?)5}uA$*P#AaJX^N__R6E0pZwkv}Eq3;m-LdR|} z857E}Mf;30n02TQ>PGm}Yvn6%`H@igkWUh&Z8g@_qRIV>FV?ICJa+dN0k@|w2&wz< zj2%|tae7;%z&171Ow6aN{w=8QrnB#|{I_4s-)4?nk|>5zr9O#-+&zaz-K+{+PV##b zu3w(x<)zwn8E^C9Uu@uUn|JM`mQXms7zc-H&v9;E&juKPEy4hG_4YL5^4bOQ_)eNB~T;^+fZhQeEk`){mTd^11TY)x&8x`FR?}AzVkfe(G;pV#?-zQ z{1J__)*LE&wG|8$YZC8x-uyrNiFp#)*?N66@c77E^3OwZPB^11KG z#U!?PZ6*6`YUJ`5WdoV4v15z!OS;^ms`$B1>=Nu-3z$HeD)nO?cm=ot<7dYc{(b5G zu@Qvn8>`|oCfk+lr=?d^m?B79=l>VTvm>LmgZ%#W^H+cy;l^gsqd#8bj`l(K$WW{7 zBl_o&^2ad!V}k!53V~5!*4MW7-YbyVBV{%Fy6^QmhPg`y8^mV8`}MN>`Myh)%9T|B zL++#1P^rYE=E(in3a+FW)M_J7%xKDhgHXK#4&X{~)qQ!iYqYup5{Z)5vQtdY@DGP zXTAfAI>>TQ#}un+=@Qo|F;+>(z^3NUt9e>?y&ri2GcRn%%yM0Yyi@S+Q7zz<@5bt$ zyx&5{Km5g+*eL5z=E4Zln#AzYP-0hQt_&lrca^geWF^1=vkEKhjgfXRI@xMS;a>vF zED?Oe?ph<^u^3QAq)NvQvkY|-jG!JmZHz9*#f4$(l?7 zagLEN26$;Cmww}>Qju!^*#&70Qc52ke&Zyf=N=jPOV2^3vOYOgp_8Q$s{@;(YKG2{ zKV*Yotr&zt!cVz!(X0uhM@)CpxP0~Xeevr*>E4;4dRq%*yPe6!M@!=7`Aq2sna#s@ zy|U=#!ih9L69NdS`dO=o+3i+_=tfm#68A!M#*P>POaAB0V2K zQhP&))$FlJ4Gkwz1py~!e&@YO#Y3uQ&l!;?JaXZ^M}>|DT!Z1Fv!(|EgY>`y*gu>c zx)Kmp;gsHt?X5dWgmDUE zY*KLAAsVVmcs8k8p(H9FxW*8(rkpLl6`dJHz0*28VR{2CVxp9d{0*i{og4&qTFgA+o2up$@#g|JhNQv7w7+m;N)|mH?+&r&9VDNm!IWnrVi>nV;cL6Zf2JVoO#;C z?nLdep7Xo6(6X?jx0ak#a(*;~d@x^GNmB;sl8Fk32dG^){o;6^0dt+pA4$G_^j zuN^*49LQx4m7<`gf{)DnN7{=As<;vy=# z8vfdGyhPec_h8r94m0$A#EE=KVHZ&QKc?P+yV9CV~D_kL%b^AGkI_gb}URn2+L?KAv55e^@XoXnu%X)keZgXvSs8F3wopQ)RT zrN5kRh@tTwYV^<9+h5Ccsyd@Xbqq5*JjI~FSG;Vxy&QT6s&k`GGk~}nCQrn?ldo#b zUFN^DHq-U05Tk#7w$EqTwzU%~MlbhTH|hj)2F0*a>vD2puB@ThTrDiS$UOW8GzEl*8io#riSS8-T)9p|Mw^&h{T^s6 zFvqMLo#oo|Ds{iY(hunN6k{6va>+ogeKTkB#eqEWKluDTSeWj6#&f>o_cWK_)|{dJ zYfq$QWk$h5#CI^-oT3qkP>H|z0$zvIMhw6Ysu|kEbD1+raSg_)!bZRiV-?ChP!ywc zuh9{DjmcE!oRzy-`>M?Z%wl&98D>%)-ypfAVSQ;FD9t>@Rj~tO(8$-d5np*hdrfjafTJTRhpRAd5S zM8OS&lqq5f(ljckXOZRgz75O2N3~R)Dkhpo-In%XRj$(W<)p^@S0(h3vS#*x8+%$v zW<9}}K~Qa$T*1U^G}@!AK4l`!@&DC!`Xmt7g#O8fQeyNUOwkD^9a5>6(n{Lvqv9P4#ctg&V zTQ|xT!|zo?`=8%_iR@k5W%&gJ1O$J#GzVO!%QH)Um(W`li%b7|UkKc@_`N4d^n4y5 z6WM~y|2+anJI9{{!FYSfl2@ zdQ-kOD}6vW5uUnb*yEy!a=bIf}K34^(h@3IDpu<+!FAo=i+s|^_5DgHp>`?bIRY1MVqVFkvuO~^Gf6L44*sInk z_|!sgMgZ>2Di1x3q-3Z3K3UgCPoTRL%mA(< zYbz@T(j~BFWlCUAIzPUosCjmocp&VEc%2SDGzU;oddBp#&+RrJ-v<2mqI!(BIa?#y z*6KLQmGHYwq2lP60ag_t@+dF2o38U~^%XzvV7&bn3S61GhA?u@AY8`oi~oK~uGI}g z!9f>#ks7ybdH?RWwBJ0slke0WJfUDBp`PWdJn@j0^833`YvyW-z3ds3GNzXQ|-q zu-|!@>0lP%WFu8Fe-SZAz>ku!1TRu!QIIkQ|A8SAmR1S9FHSbynsrIWf*6BT5f!;0 zfKwBxwi7Htf)1hXCdYHh#Iji&a|uGW-At++AW>Z$K~ZGG3mBJ{OTiHLrf`DmF$ZL*`nD*43d`amq+MDDN6xr$ zzr?IejBBO*5ad3|YfPA0Q;m3jhPNi-=R{BQ;NakCuVL>&URs{>{XE+j%logFcncd_ zBiC_&E&DjZi$!d4!`A)L1oY#9J0pmir~ix?OgMcBca2AXwzg6L-_}YLXz%~MB*~TM zeYQ7A*!u^P>0VxBi(qR~;Dv>W73WU7%piIgVSCw1Ay$?&udsuK7wSWnu{&&G=fAMY ze9+#L`o-5i`#4E{PKz?e!>$w7q z#~_6zw(6D1&o`)JQKX+^0Rvw(wI`ovT!Y!uG3qcUPeA6*KQv&%k-z7Dzr9;pGQx1J z9)wh|uuvX{aNW9(aulB=sI&^Vh{vS`ssYhyv*&&XD z7Pk=bAC$+6Z)pjE5m{w&Qjarl))B}yg0J5<+HJfs&B)RZ{8b^WA?ed_N{-?EHfMi1 zzzn|NUq5!@LQGN>>V$ysgMly{iUQ>3Nh&{ zgHQGs1DvXaO=Q@#1}eH0BZ;&mOn?~!1BCTba4A%(XqvH#&2*xW(8o_6AVx14q}#kV zAG*>qEi5}j84spM*87qRq{Dur*IcnH&-mp)%*~H2%U;*RfwVsU=n=}9oau826djAx z)i{nxND#j0B(=NUZht;fpu<+hYRUc^-Nx7)e8j`B=ype8@2kM)zfx44>79CvDiu^v zx0hjftaBU`uzLC-0BOrtMV&nj?R*YdGZ8_^!i)c;E^yrS)pzV|;L z2(bJx$Zo_zxA5`rM7#lco~kfrBw6o=NP*nEyjLsXm^C;he83gJCGnU)Sn_Z9#{{SI zYLf7+cGGi?b-hw6Fn_rb@k~tv?{a-@ygr9@x6!aifPQfk=xq#8n@-_*h@ke_3VLEyC8Z+Fn-zXxA)$?;-0`siHPS@t5 zC9cE9tW&5xEj(YcBK`(Y+3>J(Ul5S6U?d%PqK0AF#d-4KRjAcqB2!)#ab!;O+k{OW zxsDcna_gj04qcKvKiym!2M%SM4IWi$mcC2UB`IdeTo@XZnpGrJ0x6|ivL{Y98n&~O zo>rOy((Z)pIT9x;dR8)tCqBxiUctbqjQoV_&YD7~kES`vmFU`;kTjWgfb1m7#BS)( z6b+MLcjWJ)N9b|70hYjIN6mScLC+T!k*1KOetKuru<;RQo3TX#40XV=8>6S#Ifd5J z;>KcfOS>dKGM2oP4Xd?p+NQ zkZ!P?HeBw*<(@2U_AP_qy8h8hMT1;Aq$zbJK+{ItVr>g<0;5!|&X!HSjNEL0>kMOL zf)d|q-a4>&N9?GJm1gtz-yvv$pr8ASXKd@Ye|dk{znm#E0;aw+;7XMI_Kn0;8BN4l z<^w-g3W3t5XF%ovx*#w`hNU)3vP@p>f4zxRoUH4?zqg%syS7&4F z*q8xSMpND+StOfD%6Yv(N=NbW>kqd42Iv5%#nHL(*(Aa$`{qA%E@%UBs8$|9naXce zIquhQlQ$=9@G3kA?NFs_A)5FTRfiZt#bMCHU$&-m75!j^7vwq9PN_b0?Zl&TtTUc5 zVn0Ru$Ky^~ZrW(F$^n(0*}Vw*D+D&H8Px>Jz3p!IWJm&1>n%p73ZE_Hp0``#l_Nl! z^Fp|#Z#VL6(t#a5fjPo|!$mhXz9(@eAC&KZh2J}qgxJd$xr#%t1F0z$q?H92Xpqu* zei@kBY^^}P=kZ+ZK!QElQC_Q198b32eD`^ak^Fo|8k0ClEcd$~@Jn*K`(7OkyPM-} z#>vx0G%xM^NifArrP9TkL-M~6ef(Ho2sDVYx8dXoxa&IpkxkkTRIv`h+0i1({;!SD zLWK=`(DC3#9K2xxuMRWz*@Ds9EoQsBkVg>UQ9bJ`2(a(I>;Lp9A5J(YnH&#Cgvk_?U11)Q(+&AMJ%YgF`~ZpZXTjA|CH!+QA>};tzH=-T^6Pt` z4dU6Mdl2-45J!m56AZNwExvPi3KTbFMDI;|wY|E}GCz*}(pE_NdCA)f$`^5bBRrwz zN32Ubdz|^a$Fm6xe)x>tA4Y_Fy_d9ma54X6IkiePT3>^YvqgYHmcC{B49c>Xp&2zyuLVFIQZ8&Ookk>Ev+d7#ACAyGbfYcJ{0MsiuGlvw=u4Bm zt-m#lv%=#fdV6EYnW)M)`?H!UWI_cJ=waerq07%;nl^xB6DQ+HI6_yU;Vj7(W~d>)_1{kdUaZ zg#X_6d+I^N>nQLn(3?VI15&D6j^gX+T~eBXX8fI3utKNVW&94zZ~^O53*FBuU+x7S zXx33Jsbs_dlcxdX)NWFO>P&z*V9TK;NZh{@9s}WBSa{7mFsGsr%?y|MD|40(7OG1> zCKmKK%bAKc!^#X@+Sp%~;hnVHLd03V5i0*clA7>+vG=IFiMW59j874AsKF=3s8#g@liXmF<&Dg+TqilP2`D_JIdp_b7`J}gcB zTA43_KqUx@Af1p?uvgCKmiBWSdknv)(N2syKn(Jl@R?Pa61l^8dCPMFH1u79e@qK| zjaLUrB-L{!qGZP7v5gatrakj2THB>GwN~K3GR4=qfba{95}`>|sTW zQ#03uR?#ar$JKVZoMOLk z_OrJnicEEKO@ZKjvvZJ_`4qJ)3pI1I7aVffokof4^z2yy+d%N2e| ziH0hc2(wyr{a0mCP1gs`&_xkYW){-IKqLO+?=1R(T`Mf&c2)$#F3Ih8+GYo{vsd{&II%OLZXX*$# z8BH$UV!WXQu*)mz>ji$!kSJgt5MA;_%8oLLk9qrndWwa`!!F+*8$ zq1eo^C>U5QExL$j60)NQd;OmYgaQb+8%tz(+m7Kh)qxn=OX!6IrNZd(|70|J z{Y-?(!znQ$VGL2}U<_uHl?<#!=m=KHFa@qXUqg{vbPZm6)|E@sO7XSFFDzZA@OcTH zNy*YqpTAo@nS=^7SNktMcUPXwEV7`VjCx2ysG@O&{y?FIgNDPz?4`X@8Z^2CbSwF( zDqLLZQ&VlPD(2%gcGXhQ>U~u!XmxfK);!8T|u#%CXE!zOFO} z;R@8z@%LO8eu`*lYS!z2E)V#x`#q@{o01Q4oF*evKa^c=cK39O56- zghEjW09_c`78!Ye_13nvR>ey700^wv<%P67?#%mAU@9QWUP!#p`8o$Ji@!WcjZX)^ zW(H?BXd1zmU^m>wig>@mH9+PoYF>ffm?c&mio8W9S%C?}SO- zv7zS1F0m2-ea7Qa2&u{OJ)u60EyjbrC8ODsXAq0~c!(oHh!$2t#8+DiT)qakiTsp_ zQ{JQ(P2UY!9BYCldqY6CS!NrII^HR`PE@JNk2YlDzpC9SAy@$HhRAZQs2sUDfs}o* zm<%&^Wd=fM2F`F*+kWXE?helEN{t{)346La9K=8H&{*cT1zwuJ>-$F^E1Eg+x2d+o zu_Wr0)Bf-7Ch0-qS~I2oWSB*gu##lo^?-qX>AJQ^8MNPzEiw|P$FXp8p}4K}+$ z&enEoADn5t{UcQs+Ss^6%>-M{9gdzs?U7u}9}tXrA%3H>x;ZOX;1MA$2L3W+23Bw< zEXlv3ElrsX%rI~e_Ot;T^8EWY8KRhZGM);i29gMy_S{V0yJ=Lf`m-6m$^2Tw@vwvh z=^wTKEF5jAvJ?~r^bbO8JR;rBfZc+A-@BgAhWUcKhPwt)0iS9~{Rdbv$(_6$HKjX` zU?;GH>BFQ>{$%0CyW=XMp0)g~?zh;;TeShbZPTGdhtm0C3C_S_WM^{C)1KNL75&mX-r)49i0 z#XGY=RCpy=b!OMhcZBQI#M|3>s^D72kMQfrnnn)~Ep2XhjPNQ$l8D z+K-inDz7PH*w|i+WN5lhI>~t)fFZCjmSAp@$vWy63^EqY{RlCHzixJ?743%pLVG$! z^4{cIR~4r2GNaL=?2%5c?wVaqU75b%pEJRkyxwLV7&y4@WXCiO-x;EQcPD185)VI?V6Hiuop1hR+8$R=R_(|%9q`U0N-@6L({W7y?`w-+%rHKS2S@Z{B1 zyz7B)2$zm8``yx%BIo398a20sL^Lzv&sJ#?6|*l#qer4+QBA$9uStJ|$11b{8@(k1 zvQm>z2&$>drX-9KCx`Y?)A+R#m{GICI8y@=%isnC(WGxux7S2p2gBhi=Y8|ZU_&;- zOG2U>oK4UD!Mz>MfFM!bFP{*YELmzI`Cry79QV8gtFhIO?``@}fWR+BB8-pmkIOeH zg>-k1Qw@Vm*OOTvdMG;RCQ}?c)zK+H2?|xcC_w$xoOMo{@WIB3SrxNFJcc_n+XNcd zZ@lTa;_^uT;Gtvhr($B9{2y;YPdNgYcigF|r_s>`!Ot60f?G0U;heMLP-FU#1#A#- zwYM@XBc@>*{)FV@xHMKT(PP?3vfbDlDG$GvPXx_wA-9K=t7%NdYOQCQ3<9nt^h8M- zpC9qqv*cV+yu8xPs6B!5{kq`$#JBy+_ZZ)dm>;;V_A8_4JZ{+EQ=reI5r+5o612mPYk{8coL;( zp%FbJHBhQzvy8wTV_c*SL`^jPN$?JnQL>n|P;$dyb|5R^IIg0iRmW;fLm2+`h>Fyc zB~`1|2kU^hLnY{dM-!i7Q;$1ZYH8tNQikeb&UO^+y|K9Sxlp2ApM)*tHeWjRC0d*0 zJ(!+ni%o8NwPtwJTw0Rxnef=kQEi!&ziK<*-k9}QiyYKML!iqup9z$Dt*UE!UrU1A zENfflrwf`5S;d9{FH%Fd#D%P8lF0br-|fM2gDeX6@XCPRf*(MEm!A*~;lT5nE>r&> zm3F^IWso`^u91@#u5`6#6dh_hKsy7xQiJ~BUL>>7-h4hE1I-LF_C?>{TgUJJw8m(J zTNrtw#{Qt~C!YK!`-Z6y3=7_W96Kh#wQWlnr&GQG7>5h@u#%IK5#V{={>@m15Imd$ z%f>Q;{v&)tySufTjhoAzF1y7n0}eg@C?^^B9BY~^OqGXhF@>fWUEIR}^AN@_2|V%{ zZ&+h^^CXOKu5TUniDL8&W0dk~ej84`VW@>Z4FKCVb>ar!)&vn9L#EucZZl@Yr~A>o zc@^*Eq+ReG!G7TWU_h_^O%h1gFe~KLKZ5IrJ-d>Bd`yVHbc@c*E5xZ{hP9J!qEgh- z)S-CsO3Qr^b}R&LM4L(Aa9&v}O3MHSjGU517X=%+jW~=^`u6n2oT~_ zeh~p-TxLq}!ATUlRg9F>lRR*o@I|bjc4rVpV`8y5H#FxE#AGTiuG0dRvH)y>?^(70 zf2@L3PbYp-gUek8JtkB~Ksp{ITQvq1sdOx|Ck+|ag;p6d8&!XXOrvJT z)uF9QAIvm?jlvf9CoVpHm(gK?T$X8dPL5O$L>~ zzcDz__+k|J5m3<^-E;#BUHF=LDNJb*kO+49i#Yt0y5|(sRbAPHEXCZ}doU&ojWWOq z>$3uZF(MeN7McWj(3c2kR5L#vySl^k^M8Q|;bZ7l%Ig(1e82ltk!4ZuV}c^8Khjhc zoIj=-^k4IR8}^lkHo2Jgfci60Q0((a5Qg&)RB~(KEanZJHtH>P;pa)gf6n`HW1Dcy zUSOL-Mo*(vS2$Xz282R_d(tA>`6YZt!6*&0;4s0=|4QQKie06 zq;qp~a&wK$VWx+d;*gE2PAW1#Ck>nP2d|0frK5e7Oljyb{)*{>6gC8ej}*L9=QgF$ zx4T1$>J+DTk>nzfYy~pd(1fZL+{K+8Y!4V@3RlO~NXwE`jU8*j_uZubIJC504 zg+r+-caT_u@Zfbj2m;YH;D>!n*IK3kXZ<6?X}5Pn8?gf;>9tTxY#9-vLymMtBbY4m zHY{9pk`lu%0fIx)sD+}4b`=$V1aq$$F2gb@Rl4cmp@F5A*2N*SXuG~Wzb816diGFE z+JLkWdMu(zPLh~HTiOF+&>O`Orag>zlPoG9oMK@i?9g9f%_;fP8HP2lPQ*6 z6l9jS|4ZWhpvaz*u|Chw1jls7XkH6m-uAt1Wlh%g{1B3@mPE>oAf0e5`$$nkho_4K zwv~QV@4s}8&&a^H$lYGgPvVSKqhflp-%n^~?Da<<2@%-XXn!_jx}INOE4{z#_dn|Y z8#})U1_C2IT0(P@*WpGR8hnQjz=`Yi{*y0adtkWr@EN6na4G~Ip%pUc<^?y)dYFh( z7zIxZSoyHw)naNOt9qW@x%;>KOqdCI>@^n5Hw^!Ue)Hwz-^R9ws_-wV?JXS}dFXS7 zAt2+Xf2fS}zNeleR$IhFauT+ICW6#7P@m@VwwH1c>n8LPBn_caQ3J}E4)3}uX0}Jo z>4~FYG+eH#E>#G9tDYz&ygT@wE1;6~r4(vt>HjRqzK}qfQ1%3DhLoZN z)i9wdg(=!KG$|#4?}3zQ+6&V(Sw<~Q(W8$B8G?0_7384lNhb^o%fU| z%0=r?6zk*!{7LC~@o?PiK)f4KzK;V}F0NZ2mrD}t_58hsh^OY3E*exBg@UsKdEx-a zG8^~=`wMI%>rWsvU$~iS8bibOeU&wT@MsjBU4gDkcS|sc)|9T`xKph z(Ch6GZLJYYD%7uj5l@2_HNrt!1c5P1_RZ)z3MzOH1u1Z=2>P@u-*Xsp4@W`>O7*uH zS>oC*1Q)rn}@-iX$tiht6B}aAch=-Jlg#IUuR<@rB z1b$>H$tUxV11!z3q3J!iDvWGi7s%%poiN>%mW52&^}3ZL?3<0p?;Gp(|25qAI;$Yp zb7L$)c52)Y6vCAQ7y;HEG9YnsCMyQY>Q;rxX>CVU;xEi>t?jWB<;V@$+3_xSE)zu1 z6&r0dp9@)Z#%-H608r=#)-!>?amrj6khOiF(vp6<<+~|#vombw07zW?egUd3O&~XP z$7*s@(*uE~p)7~}-66vfL&XQbyUR)-eD7OX%>OLgk`zrX6dX+I@87?i{GqfAI!+TS zA8ZjRe;2UyoPzJPgeGDTwjf#7f=N)^L4`drh0p@-4AwQPW3N<@9Ga>8+U%WHV@?GO zj@|bUn_KSb!0vR`wpV`gb3Z-pBLw|y!-2I7%B$=KyOtP}TFFZ{P%~gku){y{*RQR2 zuBN}5Fhp_<>+OcShJ6hN8jEbWm#LrJP1U6Z47exuiKF-gF0-Is*Phn!2;IxyconqE z6RdbOi)WNbhi+nrwA%$36QHg@yqy0Cd}|;oPfx`r>kZkhDQ}Ql6(fuuqDRu(xlnr; z{}Y)N&vtdmH%W`BUxZ^pkNCQ2iu#-X+m9+j1J()i$YvfqD2Pv7oZLD+oCn0`rvTepjDH+P0@j#0D#9)h@mmxh!NTGm`}jD+)TueOKo@u+O7w^a z$H`gPWsRnxsplO2IQtD$SQZxqiMU=KW3}fM)+Ku-+B3`M^L=3$Ae7X{o9yQa@6d_^5^T>;_Kz>@%gw3 zdkIO+UEa-8oN641;t!8|4B#UdP*z_y#HjRDQU=*_3yKMlgI&@!cdS1h$(AVX(;(4ByaUTy0 z2-S>x-6nb?8g5?R<82Wl=Di!f{qJa5}QEWST@ z&WTs@B-+C(c^;Ac4!}p0ZN{>{jWM<)Wgtd5rBZ{32GCPJP$p|)dBmgR2fxahw6*rS zU8y=p&BAEBGYPwX4YkW;+Qh|yj7h4K1}p-GPzgmO7{L2%IfTBAfIO}FTC#2uqLGwF3daB$9jt2{=_ zrt8%J9o`4q=IFoIoekn_F{noE2<~=ac8iD|8@nSn2sJ3(@CEg~RYHYjUs<$Wc)2)n zqxD(Z-@N#N_P$>cpYRHsGOPIcQ=q6TpXej9xJTErBfjNTQ^pCvYA*~yRfwH z{2We@t}S5rri&s^E%HjYAX%q86pnC=5(&aLkFRaPyG1 zW1tk-<_4yX_1C{xia6});~<*Bl)I=~9-&Y!Ftn%N9H0R}!-{b17_!00F5g{ODF2a! zOH2}M2T&eV$qnzY`gkalOn6p?VLW1uO+U7pG;Qr|Vl~o;NQLH)9x00t4?-rE_P+Nz zaDGnYhMAOm@}fJY)lJSVmffIrgvK((B&W_8_4DbbHQg0uNYF8K+3X8Ix;d6asUyG6>4Z1RjaXwULaTaq`M9cEiO4ePhPz;XRX|h@KNOy>NGtYu` zNp@7&5;SiBm*Ve*(sY*<9T)XI>+Ti*6>lAICP{FkDD`A)_8Cd7W|2iN?f`Ui)(`Os zC+VB>8S6XhE1Mi4SZG&Gs=XZuSG{sjso@usku6&Vfm}wo=mifUWX{bS@-E}%z<)#F z0hxq)BTQYR2jEJ<)Ot=BPSn7>Y(VQaGm2l3yWcFOX)UG{B%MxVs1o>cu^V73bu1Yh z@Sq%PbYZN$7VcRzR!ylFqWXBIyGsT(Bx98#Fo93d$fTT{E3*Ad>OF03d)NCP-@@+G zSSb=PmtA#%-+tRw)6&pa_lvibst$)o=j{~q5gzZlqX1}YV<`|7wz;85hzo^pUST%b zpcbwmC)9vk3(X&AG5Cr%RE)0sJ3nGhHx^Jq9tH1TUF;$@+U$xONMhU5vcxXqE*eoZ zi*7q|+Li`gDHV^+D~*p=JAkv_q0va4gX3`Trr70O{m=J{T?u+i=; z4=Cs?INEvkMz6i+gHTeI ze2VmV-FxhvEd~U0lnWS`>7nIB7G#-N4`op|GvqC`PH{Ek!v_6cKeDk1miDsBmz!p( zS`3HaD~MwuD=-(jwBZ=RVAwoDa-H-BCJ+wh=;pvyS{w~MD!h2C7!&zFs38b{S*~>$31;)O65sY21fQX(Ei$%&ZjCI>ZzlDOLX8dRztS!8D`Inb9XhAN>dsKa?Pp$jvGv zeL3}4oq*y-o#kFxSz28eAiE1ihn0HURTxZDeGkh#w?aPu<(B}Vl&Pl8@@~nbrkQoB zUNMCew_3wES6OV$ZlY}8JdG+#_bYjNO|^V>po8_pd{%rUx5G~OxTf?9<`*f?y^3(|%>sOTv&CgO105xRT~sC28X0!Lc7A5{BLqS2JvHD%@(m50`pSWxE8H_#K~Ww_zT`AAjr;l6uAYiKZsq)4UtZQ2&9Yr%xzVKuFOr{6^yfDzofz4NK2M;nAS;NaA=EC zikLG9>)|7+Tz*CYGIGRXzd39yNNfV?5}vV3=oi(Nnz-j!32zB9UAT=oLiOFFxqsz% zZ=hxMibz#j0+`zZb@J@kqCbv~%Ehl-O)zb2s4aqrHcb0?O;2X@9UB&oX?J3EH5%8$ z9%6_6r?+E;{g;l;VyZYOY6w?cCBm({E0?h~+hGxnE!UbEA2S@iXy)xNUZPV(M=x+t zh!cp6PIM4qf0SQ&BWQzf;R|lj+44AVLRD9!-u*dJ&*z`{b23>f(76akU7w zDQQvKV(%#xyi@9PkIn&>)5WwNTia~o6r*Oi^5T8$Y`jQf2c@v8-WD2ICxKjDnmoGvtZV0lCEFHtH82zSO7z6bnD4hr zE{ogv{^R>iGQ>fd?0?$jyh@mW*@M%{^O$pt{?6w59It?S9A%Wh4fjMlIC^Bj6HGcn#{0+nlJ`EY&7 z@V@z^vcRXT)PHQOAmKyuDuFZA!z(SGF48?sJ2K%vr6n+W@rUgSLTv3Zn>p@H2`VV$W+wV&}qM`)HlP=q7m($dCzJt!z4Va0t zXO-R=nrSo!-ps7E2uY57oQEKu2rNB{OGP4|!Ou~^eB@gZD=;f@ESGSNVh}}i=xA3G zTwS`(TrT?#RNLE3ax-E=Vo9=*lb;t}7hPl;#%xCE5|CNkIKP?n{`lzN2F}n z&65NjgmoU6f5Pqst!OvWiYphShrGz-g4+9kCx2PW;B^#q>7OjbsEYm~seb3AIqwL&NCmy-}QqErzu9uyz+D1r>CO86x2 z-fh!Ld=y#&6`n8`Q^rO?FIWd)MaoHyWn5?MCh0yqJnFSOU&@O^6K}nbGWY*fFl;LV zecO{40q-&D0q9w7$`7TqRuR~)(@8V&vd-=Op6A3=xBu#%?4Y4tNZ!kJ;E zBr;(+<$cJJl^5&+zwyJzUBxle%-g#bp(!LN*cr@F)XAt7Je;V%+I2|xpm40=s|0ael)qY$G! zRnm_T`UlW^H3{sHx$A}xxkmIqN%AQng;2?~ENJTtW!O>dDt?{rg!T#%pcB%ra%&nim#H0Idn|dbZ?QeRe&g~9s)3TcMdUH+o`S7aN>-Aw~~U7$`?S>w!53vlp;&E z{Ko4|s{wfhyCco95KkFLD{%-#fyRBOf&Ei!!$au(FNnWV6?l(#Mcp4YwTozb@%P}^ zX`#6;R`u@sviZLz|JUuvt$@%Khn>nD<0z|TC%6HsSSe9)r)O(YykMKt(&&^?!>vq7 zy--o8bZIPbxG<}E0b`Q>F}w3?EYq`Q;}nH#pVfE>^y)#V1P}lf(iYVmF%UQ$Cl73o3QQBH_MOFr@n07vugv zBeD7Z{+|Zii>)n|CB2@{H5@Y<4c;%w{rxkV?)CRiF(s0$e4JGN+=&BV1T2l>Tl1(f z6C_Y2BIe`&GD>UKk%wi;_W0KO@nFsj;L-Q{J$ydVZLo~G7Q zDWQWHK8ef`rd-l12KbGPAml32AnC9kvra##TV||dm#EkCONE$_bCm#TqI$c_83=Bc zcZcOnDq#AW!BuZ7tC60+?{o*g{usWe?^woSOO=wxfxL}l85n5@SJRf5%ju2F=T(b! zbH7Ye6=+@3t=X>OZ~W%ih{_h`=8hcWJ)&k_Lq0bKu}{_v-eu7x2lcEvq~eXLX)hjdWubTgiK&Y!%~U8-HS=Z;sxHjeLgpec?4xO(^B=mw7nt(BKcEWv+v9eNAPat<^{E7wWz!09)Ntg-uDQz}|8qIQCN6KUouAONrPC6vvK_ z*<_RkM|%(6eHauB`0U6Tf(z~!Tm4`Gc7twA(TYj3APmv0Y z4Xss+*iFX?m0pn&*Y_Q(Xna1T&HXKr&YAW-SDWZRgHr0!J^ta7J=1H%wdZoZcV2j{ z-+wm}JI}|?|8m)T0q}Oqst+Y4dn^dGp zR`g&EC$}g2t_eA&R44MdxmE5_72q52(&Vu?0&r?4TTxtyp0{05akH!rSeWe zL19WpMwLeNsH}{3zgKb>oy#TIYMEGi)>hsWH?xgsZ-U&g(iB4sS^tDz#ITH#gwH%)F20~!4K zQ#<2tDKuCXT-+7a9A!GXie<5Gh3Q5TiZB!sx(Cq&H#%MlSZ^=R8nlJvycZ>uXy&rz zwiw*y1`be7|FsbUDiYk}CfSV|>b^;Nk_a=^e7nbl0yKz^T%?JRg2(`B;-YIFs$iHoM7Vi^LjOZSlho{F=qkRi6Yc%^=ZpkG8n<`uQRwo zszhAf*TaR4dYwMH-_@P_5B=wb8!KzAN9Ds<>y84}Ce);>n3^4jM7Urs5C0k#bi}P_ zMdW`k=}5+L!uO(VWMrdPqEJE?V%MWs`RMQSPkq zn$~lx{E{IFF_f06amGs1b_Q5Eq*#P|g)Sh$)RK$u&Yq8dbV2-|$KZVhzH(W2=rn%O zDzp6PZ5wSPD=y&iid);HZ<5%75UF&QHoa=PmDhiqjh=wnG(F4Ii9#tX!H%UX#NKJC zS_zt$bp^H`J_XjVL{XPWqPvVeYTNV1Y4wH!G%G+JO^6N`vSGl61BlVpY6xpA!mW_8 z%3G$AmQqmo974Z)0!P~Jgog+1P!y*Lrri)h@oJP;XZ=ur6L~K$Uu!p6K{CR`}M%B4y2nW&#qfwte9NHrj zUz56W%!)% zMRZ@>U+eXvy{+8$1t=^^cPUFyk+}TJ5cyN1kN^LNQ>%=8XA35b z0FOW|B?H=yRj($tAfr)lNoOf>U>LOg z$LFVV%)uwk&u-2fo=>LxzpKXl_Zdf@>(JNluSl*v4=bmxPICca&dfk} zvLgw2>Qg>-FwM{*8L>DHx|$A}^BCt|bEN-=rgLDA>w&g@Y};utF(+u$*tTukX>8kR zY}>YNn{AvlY4pzj-uHfmdCr`(_g-uL)~hoCX}L{|s7{%TBT;%`?y}J?!WvaL4XVfZ z9C_&EWbWl?lA{*=YE)~r46NMywNe4{qTwoDJih98qTTnUb0nqU+Mo4R!@cMZyr?j4 z+DQcEJ^cVT9i-yb{Z*Ry71bhvUQ-JqwTv#oiVfTc{S|bHS3Y_AF;9YPdEQ@}K&y}F zJ>6)pU@O9U5`Hgzde_{c~;e`Y!C%Aj}dNDM2(F%#?7tVtqRc1f1 zf;fW)wVSmni_@R^uXIW*d4P$G|~eC zyxN6O!Al1vO61yl9#$8e<#|yBOQoYpZiE(N%@_k5M+`)U6Ar2+;fSQhwFZWx+p`kZ zw5B^KbkTYot=$dAIHL5&DzfP2_Z4RzZB!?_j*?m(aS|u5h`~0un*ax@eE00YIAAhN8kjHTVw?hA6B1OeEOwqGKFe3Yl+sZ%!>y5-yOm{Y}I?Z zr|gTsz|cs3m5;NZ+4e_%Qo0R)kLVFLxO_0iEo zvh_sY-=3S59J@}#pg}XRWMQWkyme&kWO|Krex8{v?VZv!yVL%H;Om=pNrqw{NjukD zn=o@{S&{WW{)3&EMpvH)iK$hqF)bc?K1&{c7mOA}m*+f|#Gk{l#J}_$bbD%jU$cDt zUXB(DM0ThCL?MrJ3lkg-n~?h1dwsgVneyx3Vc)?tc>Ls!KKU*d(#WD&b!U$&?G1OgZz>bYsxTTEI3E%)UlR!ET6cQiB32xKF5%I#_7F(Rs`NL>jh45 zL&}TY?I7p_j^sM_(&C6LVw!RZt@Tb{7UnfC!wtmEqTghc_)+V%HGn}e}!VN+L8Syz)CAJvG2??8Uj45FGJbca!dH2n(rPhpkS zG^3!1Q(`Ydoi=;uKx+%Uw5~)g>vSq?MlD$t>UpbA*ni+QOfI`YnoMsowDp}xaFFaZ=KE~^=`M1{*Hjz zl6^4s5d|W%4puivDc>ZNQsdWJvTw*y=|Xu0}U*&{#p~D z9HNff_kFn6@P2^gHduAhHIP4`hOlhd0X7MWDS%TtKy>)?KP~w)-uJi3L^}y;|P(vr=tZyH8>ku6s%MJU<$1b0gze zKg|_9x~Ih1;;^>xP-n-Ce`(ZD0qpob`4r}A3KSn_F)z;}`#ER13e9FHd;by9cjz75 zbSf&}DX58`tVyCBuNk4W9|kXX>&B`b3*q;EuWNnJf+z7}w9lg}rlD6;BB9+QQvWS7 zNB$HSS%B{RcQPI|)*Z#gbW5BZYxTPf|Amo)dsBTmYINa$8!J}J+^S_v4N#p>$?{dU z3$H3>#uJyEiJ8Xiv0UAph)rP2NoYEmi`!xs=n!?yUM(j%E37qUzuzX%JD)yme0}`xb>)7HH=yS2;^S5@d zo-A0T7bRD7BI0mb(}c$VAQV^o_lffF%@)KI{^#4FG+g{!i(EhNKb>yXUZWF+ZjN7{ zJtt?@LUrfShybu7WXrsVVki+n?PbuD!gXSp?xN7SJ&$g|G5wNaj;hUCoy3t%Mt?S) zXg!_J#|q%S-?rLyJB9n?g$T~7hFU z4h~J?=k*ymUlw&vKO35UoF{SHIa!qp)=%Itdq{ukP=N#?r+xF4?6AD>rVQyquA{(1 zmC80sE<(@iPT2!WQYIm<$Xz`m9wXetCl)slE(*^Sqtb6zhwX@8#cc881AoCjj^fAHAqQ z`*%$Ouf5KGSxm8-Hc-Fbd|uz2r?rF!TyDlrFSDJ}tJjr^RGK`@a2y$S;%oc9ACcl> z&}&40XfQ$UloKS-jv>UMg&BGV(P0+x6H3vgf8!dTukAXTEnLHSAB-|Y*f9nG>vpr9 zkpMTpAE9p=P;L(0t0}Uw?d*dE-rEG-x&7`Dgd>i+(Le zHYTs#?#jx+TSUX4O)I|OBluU3UA6+T=JSyoCNn?v@5lT1@!RtB(}xX7rPzGyfZ}*O zAsZ)L3Jh!rLcpNh*!bA&8Ag+MN|p|6&Eu#{zr0EQNuvWpKb3*0Q%$ie_v^^H2@Jij z?My28q+5&kP_msOEV7hx7RExDW^7Eg8j0-i6V!9GIq+cFT#>X|#CQZ>Kmv21LO#0m zzyAmO${KQ?EOLZfLCU)9J#QzP{4jL6{EsJ9!pwcrrD@JUb}2uhnMjtE!}Ev@u+|RK zEniOi-JDruq*huPN4Q96zYN47TR*C>LApuk{`ys@duGt6+mC$=T97pYj!PSA9-~%> z^#(VN+cK@3t#Pjpi{c?9(Tm`1jlrDP--nChouNT9^1y2)Hoe*!jkMe?_PDq+AP0eQW*ovoY4Xn4H>!5>n&dCgN`}yoF@VBWFV5_LPQZq{c6O&jm3`bZ#5+9)S0_ zn(jwqn_OK5{Y|xucQ{+cxw@wUUSg9twsJ)gN#^EXmUVRrF`(XEPwAUgQMnOSI;onj?}l%l))UJ0oBIkm z>3ugBEQxdRlCFSMB4IKhTF*}GGj{I!6g0cW$2-c+alD zxC^R0iK6dbeOvSYSaS>s4PSPgQTq$=et`4RZk<|$Y`_d_?K@lWY2Z69red;ZP#B^V(p#XHme7zZ28Sbi?8S-ieUY3ELol2;(zd) z5wammUq9_as#s}4k{e=K%+rmDxEa|bg&0!HadO7=N0J_Q*i<0a;2frI=njgCe_J%m z6*&&kW~9QcLZ<*oLl>k|j%pVcGc;S8bJKNamehYF_c9=#aVC7Dfv?i|Tdi(GYGCrp z1LhaIGcWc#uBCceOXcmT_ z@3HBBUyv72x;|z%?<(E{F$~42>{a0gg*aZJ!zsrY;|I0vggnq`Z(D<97)kxzpSE4* zPH1wPt=K%NawQ1?u)avoOaNI|ToAUe)@5(2Zr;JbEZB{>I?k z;*VuKIiA@8skFUZcF=+n%_qH>Iy#q^6){X@#`JhoQBMv3`zDrH2J0F~su#9W(B#JF zoK(`o5#Mc)&hhaIWr(NfN`bOfUF1ECq++X`?Dob~L6tCsJ*s2gJz8;c$4gO!?m3YK zcgwUgn=`ZTz7vNM9Ee9eb|?AvRKn~F-xGlwwEs;=L6TZt{XZ6)zP=<9nwlsoddg1_ ziy4b0n2c-i)WBtigDZfVrkYWukmd1lNdY%A7}ciF;AIdOltm+g17N_=`+uJK$8m#^ z!>4%Q_Wu|k8jkgQ+D$Q`>G<>6dJ3-Wu;e||+SQfr?EP>0v$+d>XUgQN&cY`&PfxS; zJ~Q#4_QWQ4>+fN*fpCwxD{yrQrO}I%AM*@6LWuQ}csqvBq@jfXWqnlI zArkOJez<~1D|fcY{6%07&_@=;^&3T005)V@Q70Y#5Vj(BRw9u~zT2!zzduY;t(9-p zoRro%|A^+$A+54%vyQI0F;8WT^@^F#&?%S>YW#~ir7p2JChamFVMBS~*{r*6R?5$W zj=Wst9l0Ix8kHFA*}FUzIeW{$tD+l2wG7qv8xbtHJzuFC>P(O!f5oj88-d(#38xYs z+sGP}8oZs}tRPkaQx*yM>FVgXv|3X;_<}T=0x7wk=@Y;K8*>0o#VKH;?dZ9t=dls> z`ysUwl$aOzdYR?b<2h+w3Q1Jw0*^cmfK~qoeJ?fJ%ez8rL^38EK@)&=Z4Ku_fQN@y zk5MIN3vbwxCJ;#CtP=5}#myXYCdM7)J_|m3NxsU%y+obtG_gQGd}$2`Z78QV#!`B~ zGhK8j+NH1Sz6TLl+m?D1_y*3%d2o2TZ{-Ikxdiniu1|E|Ui7PF5(>G;)E4Ntx9&dH7-UQwAjxMs)l02JI&D zm~ev(<^t&4sgU{T5#0C|m?;pd%#V|Tf;fcA=Uoaq;J9JGM%UfJ4k9qv`-RHEA^K@j z24EY%K{gVUjOul{vwj8)9kNk20;{3u)wcP|MOj#kcC}KXv5hF5A$U(T!94&_-zs^b zJ@iZ3jxwVEFs*O$vYL0br~4c&k=RFJxU9m4g{9Z=8#VXXJhb|O*L&E7^K_y7gSwbM zF9?Q>jX#-6^Qb1e;bCXx!+V=}2#hxgi8g7dv`Z z(VU#T2gs_2=$=Q5AvNRKWQfNQKHiVoGU)Nf?p>zZs>px-tihWl(@5zefox#Fc_Z97 z6?pv?UGydViN-j%OB3IQBSPS>86odW*5Us@=N-s>fR~Owhj1t+OXhm|M9bbPYkal$ ztAEn_$uSTosBV=+C|yg3G$AC8{JW50NX5y{CepJZ8KsV*O8}Z<zg`$!8xI#Yb6K|A0XZv&69n!2U+$wnF* z*qj*HEu~Ohnk<48$!7@4B|k);h7%|asB~}Fwv*NvSxXBGUUSK;1djxx`uBo`-F)LC z0$Snx)WP3pNs5{lJqtrbB!^HgyZ%fJqHac~m4>qQ?P<_uE^^^%s-_sN33ojUh}MI+ z6S~14QDb1wYD@sjoS%-wQ+T6lM9qosx)c)hW?YiBuASZ(4CG@0rOVHa$|G(5CpRw$ zi6l8%ZuPuj5$ctqqzP~rH?Cg%U7iuis9YFTRXMJKUsm@#d>lkA5%#MF#@%Q-I?6Rq z%A&ABGBQr47J`72R96^>#qJKrHgiK%gw5P!01XOU7K9asfztAk?LRz8H$VYJxyB(- zGJFxnq}|#p$nn9Ta5Z$L1T6w6q6&hbE|;Vl+slIeUjbz@G0+>2s~{B;C)fXI^uQ@4AJ8#9vgB&8K}x)Q_KkrF0bdo%U6E^L@5>#r1h!&V#$co_mg? zYo|85ct*qj{`mX;GHl5edQ_wrF&U$5g5ECLXNKDhj$zYbyrk(6cbBAZ_RTYARR0_< zYpN(jUg-VUAqA1A=RwCkv{aLcE`Y^?5?EH6AtiL=wqLsg5OL*-;hS`hVY%R)YvhNnw>k-^m zaZe-0SSTiw_Mw@Uv;u{KeF0bxSSnUfNk$ydi> zY-12&H(0NH;=M{piUV|Dt5EAO(_mbX+AecJ>ik@;}bgn|Fn;raJ!% zX5&AX4E{k#Ibc5(lM*Q3!DjkB?>d;RN?a1uBL3q@MPYa$c2E{5&p1iT(u`|%jV5@? zL+8AR5LdORn>-B~w-fK{k`B~d|K9FU(PY||H5lG(j7yNiBtrSIh=w}RbCl8^fBpyQ zYh%Ylg~E!_I9PPS!QWrtHPH$Yv+(d}H9@-k_v(3LSDgohvtHA=U2Z^5h(_VR?|rXw zWhtc+8Rx&c_HoYZ?*DJX{Uk7yS|@Us#eNPcfo6|^w>cdjXJP)G8Z$h3qBd;hs5{fD zIxTA!0W6YE>ywUWU~`p8!2*rb@dD55t$()261(L~V9FylG$5ohT@$H`6=mutT~(-d zl%W~TMoZW?;ZGh>5iOBo)$7H=#NiHFFq((NVNF-Lx7#9)#fh+Y%KrSh zmW6^X?-TNrSfB|pY@YXZuSFi=Pw&0T-c;Sev%mZw%a{t@iJJLV8Lm(4*SIs$ZYE#O z!)^GD;*VF)*5Aq1zK`KV!l@-w1?^*8lhc0TTfAy;_cQAxA1Mg=1Tu9tT6JnE`w`LB zY7;Zb`l1sAzu?Y@|JLPOALQ6nC9t!hRtTbtY_VKeM;tSIP45@u+$ubB2sUDg&F3Dr zTBZ|wGD>7eqXKPW6@e2*-*CH_CbyMh+Vj7aGhIegqqqq$_B#ijN=fzq}y6 zJ^%Pz?ERr%7Q188Yd$AhVQ4%%y7t1|B1PO{4OSnxA}XhdAVJK?f3oP-1hb1FAK>wJ*l`=TgxM~IzVsm$O z^R&bx%@I4&9vB0BU?cpKjQ*CXU5>7^)Wl=Cm!4kt;>faFcy);>KOdFC7-d^wf4e`> z3!2c8DKG-vZfi+D#&5JQTkH>INu>L?6W=TMOR>o(j)j|}yu*{$e-fNrDl^YionI>^ z(w)LRjstxdQe9oqz*zZD35JI_*{>+{5)U%VayJ+Dm@(UR{Bl{%6bI!Npd|)1HSf%< z1Zb>;hpk!iMw=ocwX>3iXp0>0@hvCR%2$=uE&lhtjz(bkBLjsqR?JKXk5oNz#kg0~ z^Hd|OMr8C~LAnGpaV>wS<>bi3wC%G+>;2HitX_};Af|g5@6_o!>Y-a2vQW!B&m1bP zKC*UklN#1eh*cXxJdSAqI$(sq$aJylJf&td5P~dUW>_8fN4c`*$f&j~7n>SFoEmx~ zhMkv?+MMQR7VR_&XI%GE z+-z>IeXWj$M%hH}uGx=+IoE&RT-!!Audhk!CYTI*o%8an9(6MGc5K${8j;(VaOa;% zHCL9pj7BaKai0Yo*LD>6Tn#j~G{0LYuCFg_t@KzwP0CfN=e3`8oQ)Zux$q?y47H!3 z7qiD*kd49S${<*5DBH^V7yA$~e-tXIP990a>kUOBW!)=S9a%#yX)O$uq;;C*;|TC= z+AT`#VxK@o{UnLbDYi*@&^|g^V$!A}b+}3+6j|tU#&YI$vV6yo!0BT*+%nYdK|8VVO&Pl*wc*@ zRwsU?>K%iX-IJ;(*huvFjD0?7fE6WfFd9Ax_>}Jo9|2i)5C~elqv8eaRhUJeh=QoxV%oD{e1t3cbs;)!65*Zb%SXQP%tAXV#O^j=Ux2K}kj9FayF83K$ zCcu*)1_!6yGLXo$ep>=aoWmUv*Z2$DAc?sOx2uDqRA+R1S!8N%1f|@vZbS#(X>Gey zfSO0Cgt3h79NH5*XGB#>wouQWv_kv#gD^^k&-=`YRf|J*myPDjl?s6FC#;wgLTHzL zAYVq-iAWmy_IGE3sBe&mPPA``z$t-$LSc>=Y@N6 z*tL#(Ri8s64hBFFCS33b1E_2FTCz}}9R;WXr&7&0u9!+$posjTLBbiIgAuP1rYvh9 zjQT)RB9~?~ypQ;Bz9Dk-s+tjB6~)9&J}W~osE8>I1i+q*FUHX(&a2|fnlBfr>nh`# zwbJJSqzvvd8~&jq(gs#|P+HI41}Wv6^9`OOxgrZHm50Gm3{ahC?i4ezmibi(3rxh4 zB$#1`a#4hJ59(z}1!7-9w@WRHe=CJPM_3}@G9Ry5gAzd<;P|5o<09A3FrNFDl@St% zL`LwIKm~#6JCFnBX?-5S13HPz4(%PznT2ziC;zayi8-5*soSQVBG{HkKhe~=>A$eZ zsdqYBP5xe^Z$s;Md?(@GaP_GNI+u^E7vQG3#k#d3$HqD;fiCCUy?=@gboyS?ue<&K zT80~FTSN8VJyqOB8*A?0s4~^j&8bUcZN`{{HY+obzfr2qk5%-UA+o2-JZX9yV87|? zvbry07E!k<7e!~ZOJRPB-*q10wNT`u#BbI`J@Rx`7SD_FtNZkj{$R>C;NWCm=U{EF z26;S#fs7CLH?+;AnK>(A zcfyLF5}~WuUvy1q8)t1m$%r1eOZ{4MS=tgWlsm4t}b{8~huP z_N=WADY%@#wH?pEy}G&C17$X-Qw$axI|5K=(q~{>LY;oqaIgf!KsiWf&NSzc^vMRX zqkYReNIpYmlANUPR#f6{LXzc+r2(j=c*2=E_T%`vsfra)CL>Sy)EB*C2u@nOHd9bl z5`7IXM;l6ae(yUBfj!nGtQ5QUhO&IzJ6-fB<5?*#hAiVkUw0x;ERScMF~9aY!T z5MU0J$%ykv+aeo@WDlw^HXmc-$vk!tPtc-Ne1FWal+gpys751Af*kBDLKS2Y71)6d z_uUuxgf@r@VWGi^e@|ZMz2KXm_4b&1Wi0aav@9ZOSn7YbaaYY;1m%$XBMWZ}Ed-EF+}g*{j1dc2nMFt3 zbJ|vzgLEZAnbo743AC{zrdBpgl(s(va9*MO;D&v`G&D=w3K%EU+Dlj<*N{?iml*bNi+7mMqe%gP>J%4IdpEe z3s@&3Gx6Kd0RXW8G-}smrU@GsbGhLxO5%|*A;3Sam*;?Vtf&p;l}Q~o`I1Wb%#j`n z9!bB-dATE*d77IiqWi1H-h_G87PRyn$~6vlaVEQQ!bo`|`c$4vKWmJJP8izLeG-vJ zzj;YK2J#VndZ-9iC5@#)Rk`RuwkY?B9?bS6QL?ZMOi0o^6tbGC_CUsy+R7@%HtdHG zA7MI=_=JNZiVeBYx-xdqcv?S3L03SG%B&z0gU4E*gi?19hZ5W4c>anjLDAnVyS>s> z-Q+Ps*BA4WG;%mvC>8zh&_zvMD!NFGe080JNTG!k7`6D0OF^e@E8|(Q^THe!>c~EL znSTf+Pfu;MQAFfK8_ynQN`a(~)>6EmkXIo%hW+?eOIk>05Jp+0R)U`gZ8RBnhm6K`%a zOE^U*&TGO*+oN6;Ls(f!JokRvEaB54sieX0b97-dL0%uB3hF+VV8wwyGC(pA7v8TKFLoi9$ z2pEFV?dln3c2|@cIgmZeGl2R1rCzpt&Pjsf_ByBqGFDbvdU%QSX-N5Hs*%)k#w2>m z#J=iEGJ{Kyna|v>MM_H2C{hY!5lWqx=U(#Iw9_(iG)=cJq*5|;gK+3pR8NK}w6b^O zR7u6)Tk*c@5OhjKlsKWp=Pm@%F!M{TGWUx!Dh7%wWom-` z^Hg^9M7wUC)4)gKMl-)74@z-CPsv|)M|x&Pu3QkJ52VO-6G>LpiP}7jpT_*t?ceTn z)6cj&zQ>7+4(FpMSK|1ikHOK9{-Q1LOsUd3m-aGAq}t_1X+5AEg_32_APYmHcC+rF z1C%4XBvRq+J-6H0t_DBQR6~ z1G>ICFkH-iRENU#>!E1smV?a$f^uuMOnl90Emi1Fo}fN`$5c3lRrU zJf?mKnE%Klr2sEbRJTyzKEc`xX5j>AR&f3}M@JWnFD+wk-w)by=-Y`|xeh1U^uC{% z6dO6M8Ln+^JG&e6?NTm4;VA)md0>4VZI7g=7g{_0Z06NbmNYeuEOm9piD`T?9&}>T zW?M3Jidy0#>($4jQa7T;NPU;38{mP3ji|7`YbHnH@4l_k&DR%mq@IE`GdgXZW~Upz zchj7h0}WjwU_q>0k2ja^SP$BThrdfq@W(Lh{%tvOn3PZ`FT(kurluw&#?7)eRI;p# z5K$H$W3X~oNqpd-F4BmI&hYK-6ZxbJ1u}dsC&s_5OiFX7Rl-T@sv2kI|HF-`q z@Dn-XkXMa4aWI8Y6M#D=cDL~11AG%l$&@7z2@MkIzp^qhU?sS!qa zj^LC71>HDL7D+gry?-yCzd%u?5mcks`zYU#qA{m+M z&BmiCS4RF*RmOCsxS>+#-F$2{IZfJXz|g7R)UNK z#>?_aogK2{qg)7nOy`8l6RYdOjlt)N|5viW=MkvS(Q8%9;$tK4Lu;>bmpXU*;SE$^ zXYh6pTFJGa4iVq@?;;g+-7iY`Z1t<>#Zm?Xx?8c;{$6KTexpWPLTGT~-W%)phQsF} z!(j*zB9RG=Ad9e)NJ$u1vkZ+f!}(2yhL#jnA!{=sc}M|+lL~mWgzIsZ635Q8)x*xL zG$ykmijz`^kApv8oVfgzzhG`IFd=Wd_u9sp?OTB9U9atPQId|arogGG_>>IZ_nO^D z`?z9r(zfk9HTJcS8Y9hhRrZObjLzKJzXoW(q5fMQls5nKsmkETf9wYAtKPF8H?Pla zeKk8Cy$`>%MQ@+#{CDCxB0TR7$i@jT`~v33rrH0reT>tJ%(Bh#ElD%WIIpB?^d7`I zyzhNY`8#F5_YNV0G?fdpbi0j4F~?d8kSNVDa~|Cm`V@*MQC6;DQG>xd%j7NIH}l;m zSaVsYa9D}%sLNd(X%m1!M1+NCH1OcATPj+(`!R zq_y<2Gh>iex^zt?pSm4eOx(R8Q!x{hS`0p0LFiob{eHTwbZSa*!W8F=XsR;@TM6ue zcVu9qsO8L8T$=gwUSs@|Q^S98?C6qLiZ&f_Riq}_l?qvoci<8wx4gegdAiAviA%2hbmzGmy7R;WY7zZZ zGO45qN$I3NcYSKZ^Ubr`Hc!E~AjtHVoHDg;sdI#=-%bI(gwlywy52KLzVriy3I|pD zK0ZNZfpU9+)inP=67YzeqmA_z>eP^j5u>1n2I+s?P9E&Kf8fHyuC?2BkD1TTyyXiH zzqOFXm-hDjXV!Y%NAWG-0$yR_$aS{Hw)rbZqej5~a!p0pf|dr?VUPO%65+OcPqiMI z%Zi^@eVEBU2E2cN|>7FAkGC zL&YeiQDwzo1GLfWlNhC71uLGjtVX`Hh-_|TEQnMf<}%ZpKw9CHb2EsvtaXkb-(dCC zOo>_iKY~#iAnn+WR(Pc6PAK3$DX_uPFtrPNh&F7SPdVl?!$ifYcdS$?EA#F5pVMG0 zWmX7zA|r1{S{w;2%`g^}Kt-$h&gQx-(N54G<|HhE&@)7T#&t{T>KnQNC=T*l)h6y5r!9R>0QlH%d9U?X}E zg@z7_<#{h!YHR1 zeEqM`(sx1L>P14}Ut)c7Ez<5AsM&gwzOGrc`ki<0HSUspYl^u~SESEZ#(wtYeN+<)ae78k|0}ws$GPeyDsqp`PDj7VA&OqYt6S2M>EO57ZaZg?H<8l%u*J96)0ah8H!OO6%YRcQA9J>QdrKHMg z`w}tJ$_J(8<98oDAn5MSp~zbr{S(sMx)-VwM)jTYMsw?>93A_HZg}35ieO#+Gz;kp zuR4)x%qfk15;_x|p~{Axo?b*irt;o!k-@Wr=bjN;=>G1FjS;;?38z`@cU)P@$d zb)PV9XI<6x<&tnDYPP!%!640i-*SfrGXALGp!n+WO|*3#jndMz*Eh8&$q^HHhiO@K zk;Xq}6IRr3KwgzdEuBzdb){Fq_EOM!K(sD1&S)v+X#1wlac83mIaI{DGH8rhyQJ};_Ur6@w&puHNHBZV4pY_{ zeJtzowh|aVBpZ1?o+M++=9Ha-%3kG?SG+|t2QW;|Suv^EMh-qvQ8k3HsK(LSkH0w|x^2JQgC!Zo=7+meMwA*OYRIJYbPeDgh`VgEZ+M5l87)Xyf$sjDNW)&6PyHz%Az z`&usDpkmBn1?1>B14Un|P=$V~1fF%=jDL_kL+o>eB6YmdV3=q} zmfyE-Bd*e>oD05V_@m^tLlr;PNjZlmmyP(BACKZDX6WsQh3yMv%Dm%+_C;B2eW#;I z7<9~P*la`l!px2U*;FiHDwS@Z=WC7vltN8*_D%qJrPazqiuK@WYH1m|V)cfHMAM)l zo;8oY;{fzN(f5-~mUJmuR&+LiKXsKd;AZSsqVx$tq*Eo zii6v4)YK3OGBRkxkg>UQ$$KNp-NnbD&L+hr?4nS=fIcgwRE+9TYu>b-;DImK*0i_! z^=>(Q&;hL84&habOmrdb6v;ixUn$uWeNt_Un(T=>iM?$cBxLxs)kQ6zkPT!Va6`)b?z?a4+3ix;FcIgV#oc-F zic{f;STIO$8&jRIePj)+G;QR%mosSLAZ4-t1UrUtP0>n4Nnb_xh$1pbp;^{Z|azv{D~D%p9mjwhb?{h>9>M@6_^3mGHZLGrBg}ct}2&zCQ=@EHRslEUyMz)ql`+aDwt_ zJ#+c(`h)n-^Z3tnR9{O&!~QqF(Z&@v0jOyKam72k8I4d7yQ!ZD^sX5Qp{5SzNtu@@ zNTL%8ISwf8EJhPrt)Y3qYQTV!*U5IT+;+=gag;g&Uw|HmR%nEqW!-dxW1fG9lIT40wsAIZ04GRJZS|ZM`RMW}%065ODSW zPa6KIn~Y!1)c;8|DWpHXi*#kVR2S`C8WkM-);F@#gZBTU6-aG6(&K3`0-(bk3@Vp{A-C0(y-)W>>tQ zG;@7*(&`}GO2>PZr)eSrdzwwISDTqMp9uXOaa}X{!Yri0R$^8=S`0=E@PKJgHzrZrEvcY$m8nkbX*KQI=2sqVuqwIkvh&e^^~QN?X(7Eh7R4;6DbzD8DR2 zo@2ozOQ=>1gE}BoUhhz{*ee*pw+S7(S<%(Wsx>0w4KwbIdOlX-`R~U;?t`A{=y*JA zoz4~$e8;MD6*W5PjzybDJWSiW1$O?(ow)y|^ppfqEID&i0`eq{ln3$XgjYPz$zyR3 zFTEw&_ZFXR*RB-8EG5+EPw(d+k#~6mN^!u2MB3d|)458af^zRLv#j`c%9Dl}j#1U9 zRSZbX=4O&Z^~{ZI6wXg(THXEe>D85uj%AIwY?#XhpKVoN2ExiP<5a2Z6{}S4w3^vL z86BhTNv?DcjG|9$`5>LG%;AzWQ|Nx}sU2y0^;-7GD=hCon*4EgNV;~eBGD0Hxvb4% zB}>2t3e7u*>FZi^Lx(Bf!$;w7!_l6FlXJiSiI{5=A>##bQ<_lX98s`o_YRK^nUmtd z+S3bkCZPtZ{#wlh?Oh9ky}+ykOigqKug;L4{lZT_;dIz6lWM}{QlQnB)s*cZYim!J zBKUKs(o&#quN+UMlXMoFNvhm+5aUJkZ57DOVQHlORrqKa?kO=uTeqdH#7orFO*tjs z>~Rd$lt`g7ZwY>Tui?UCGaeIk(2>LRW<<*qD{MB3bRM%EjmPZ61C(T;_%0;)? zL<&`R)@hN%>uJl(sl3AYOsX+uLhs+9EQ>i-H!NZ94Ctfa#->v`;VOSrTNsY1%@=V+MjwhQ;1#y0suk%Ot zh}a5Jq<*slY}YVx$CQ)!T5mbv>&ltjzOsif2gVr4Ryg_-l_OpP$ZbvXcubhH}gl}ni+dLh68M!40z5ED#=e-PiX z7XzFD!^#jv1$5qe`Qm}K!b+?s8BXF>)0I_eosTfrVl}FP`jj!^9p`K3qoOVuT!nKO z+aS4=51XelS6T^Iq&k7t>5XMM$9*DS^or>qGAW0ylVXx}A!Li1k>kW-4d*07exbRv z2F!;ed(-*P_xNeMgqcHz(xiuoO4Fd;*JX(n4f2lE4NIF+_GPr?mF^uib1GIe*wn8Q zPxC_=gC~Xw*-C8!Gtl{r{d!2axLn*Ybz&3r^lQPbnFv!?UpNR24!YdNIoKq0P`9=k%>DK`mRk>AWt# z{+E-~S3(XMpbge2C5Rlg<(%|Nb&90Wi9}b+s^HjTsQOwZ$k2j3WY0fheF!MI!=)G? zHax(ZgiD~*0GKKcEwI5v=3{6MXi!12sZjzZ0XYM5PlD>(rp40vmt+dFYOl)U=fds+ zW~*Hg1v{!xJZ?F{L}audidp)+V&-X?R15pxwo`8l0H&Hog&yR}MO+&3eS)A_X9vL_&};<0227I6B^7}%|f|M-1u$cLWsaJ?Iv{{bnJ?R&c`i&?Jb1kl1YPkfuIc8Hepj2RYxn&XCiv!M4c2mHFwImgZ5TsS4 zItzO>ytEuu!wI;Esydl2u*4FS69X9h>kg&uOX-PK&D7w{svaX{H8Wa|hvz5(jQ5pv zEiMv(W~`yc=ESS1s%7?c?ewJS(;;wbdg#}-V=!1C`LV2`zU)Y~Qk=ekTqPS$JUlpmNVa)d zxLgF3cf51-{u#b+!uq)^tvc8>j_~uiKUr$idyR6(Kn;QUHegLE7krJ6M08=J2W#*w z7jU2090jn0vd6Z}KglZ0(u;)l%j%-@y@e_T=`Y%t5`!QI0DbZd$mEG5*vEsB;Fw7q zx%+qm*29d?G{(;T7!AYsDzEw}>JN+)IBm`VN0|T;m@q1sgTKOcf(PXy|@f4CKy{hLdPoRcBUWU_20i2qgnf z(E=%IlrDu60R3I+(uBz`@HjV(8fR&VFbC~5rZRB7W@6r^On06quVpq|G6wG9Eg&69fRXZZ~{B z57`Du;$S1^zF{LWx{UPBZQ!wJkx}wF*pGe_sv%<#v>&ekJSCf!P80G6@$IZ($`Toq zGc&CQF(gB2quc`Fd)5B1C4)Ulalg6-4ujm#=7Vmppw6*PEq0rJlcJ(h6OIgPxm7BP zv|+ZYdbLhK;D3KGOR4>o1TfghRl|9k8us7}5-HqfYXO^fV8l(w8Hu|9aY`v07xXaw z(TLhhY-E@J`w>et{*+lNr%6c^xE?PA!SWRuF%tW$l`hwdF8cd=l`Uo0?+aJ6k)RrF zh+}1IDCk%t;4&IK+TkJs2ISp8v+T}*W^SU~rcx(MyUTmGfw>=lb$eNjFzU#2yJme2 zEuTlpirc39PJCRZ6`TCz2=Ed{bW~_z34y3Mv_2gnQkzh45|W4mjnL#odL@qJIE`eM z_m9h=c2DGSm?`Ocr_@Q{i{FemItz*=sE#iHyMK2)@^nPFhG`^+Z!@2`Csvq2%!pE| zS-<_jx9wF(SaJ6scf%JJzufS0Q&Z_@6^%NlAIT!$4IM^H1Vi&gE8Cs2sc2PQ38I@9 z%ToUPp=sT^6mmziB5I!gAq4$DqP~GUvnE=zqmFIc?${mMww-ir+qP}nwr$(C@B7_Z zGxHbDs z=QmFiQJ-A$F?|v8lA5)#;0Br`Z312;^GtX`Zj>4hYo424s&jI2jj{ar{OSN7{2DNj9X}ae-7h+HFz%CJ zhOcUER+}>WZ89hc!g`+>Jm$PLc+o(vDNK+PfdT%{&xaXu&wmUAEoj9Xe(4{;gl!54 z#VlZ*ei3_mf1@l?VuR|bu+{_vC9P(3Q+$1hhB_{t;$Y_Nj3INZoIDJ6nys z*ZdW3p-G(miREig>6X{Xy2gp?1#tLs23B^Z2aI~#%wS>6s?i>~ z*>hDn>N>9(hZ9W0)M87`DSmbSX|p9LMe*u?Nz-My-fFU3I$t6l7(fRUHEX+UiziMu z<+x3AWNtT1b52Ba?q@b`9r0UEx5J)%Tz7Yra34s=W8iIfq})^!GQu~#GTZ4+tB zKZa>MjE&a=*R}Eo?#jeP@@9sG>x1-v_h^@)`45R_gAYSkcUlz5vO?0# z(74r$*DYlu(*d0%N);&O1}GHsI8+qrD%Lt0OQniSFQ8GD4Qqk$?pZZcS^akl{5MEk zlf`}U^w%OdxUF2wHFX52(7UxzOY#0DcVS>f5d)>dCjVQ%FTx?G!~CQntww?{Alnk4 zX;UJe91^w7W2w3u{I!(54L95v$2C51NamLSL(pb^FodrAS?$tw0S*AVTe_cUtvvw^ z4%KbPSY|F;PAd~S&-FK+CtP$nFP$e_o)1&a2w_?HO~w;w;Hf-207M3T%XR=3imG}P z-se>?7C`bP@C7FZl6$`m02B8CZT**ofx|lWlhN~rjdx$6^K}kruuSgxg8#XN5BIzc zz;BHF-ue0PIT7mt6hVz#0Z`DNq?eEQl%CHLpZ5~PJ;{ijhwK-u}OD0I*ukb9t#GN3}3{@#oNOMy9JsLYC6q{S9b3`T%}E`lyD z`gb#vA;&8R!pp%^EGCdYt_;&GO^WV++RB+9p76f3Wg|8z!Iq-#c8X%DU-r#aX|}k} zz5tM5r}zl$Nf)rXQfv5UK&H;2|M%C<4^QAq_j8l(`+Q1u&-eR`=P^^;-N)CB5B{Im z7Qknw)oeDa$uc$W>*_!6y78(}T(D>qo`mc|7Tn<+>@Ia>qYb6rf^=jI7-Nq9wd`?()D-fe19 za4qv@C^FT~QS~I!FJx+6L$bV&BMQA>_196}Go90L1`l_x8TJDy|Nf>V2(~Pc%_Yp5 z(eyN{>tEEV{BiDow3aW|2}reF3@oc{rrN5|Pe)U9`)IiOVhvcz;{@8Qa%exgSknDy zCu4Fub&B;9lUnu<==_pFJU4|m%XeMHd};T`GSRzEg_Eti5au%{MCy>N{-I_hn)4#q zQmx^LKH<0w zjN{g9J07%`vuQg*la00Kt?7QZ*k3Y&%4(4+*%)nlvdCE;rioiG{CeQ~U^3eCxw6!4 zfc*fl=vjcCf|MHfrHa>5Zq1D0!SA&h&)?}ShMb~VrWwjFF+Z;{uC5Ci+krgUtE%1i zsIm|n_{|u;;Lbe%zVMr9+5A0W5a}ImBn!KE!n=cNL@!0d+Javkv!Cl0BdEB!kb>% zWryd*#mVvI`B_$KMrukbIx@0ar)4=o(-2(rUX!vv!)ipq_$+V+nh5TuMA zm~1EpVlPcj8UF z-MesATduc!xGB!zA@O6XhvNLAh6Ydb$0F3mFOLs+AG41YvRd$%tL6KUH4rT76*yX{ z?LVA!jDpjjbRPY&Jfq`0&J(*2A#S^A7xDB_$Y!xgP0&^FV$hq~qgeG`AI?__pdOnC z$dud0H50gtwi!^@U~jD?Iz$pTD^+$5jN*|qKHm>D?sH2WE>}F(3-7owQGgux?|8}V z7SoyTk!Fux&6*`AbybD8lGwI1VlG_oDtQEUzq##YOgoqe+fL~2t_?9EKVNe1F_@56 z2Ue*$S78+({!yXa@$xr1gOrgCPS~!lyBco$aqS`Oxxi|Z1owi&d z;>lo5jmJwZCCntu!Ch;IS)z%3hge8v$)yH|yWo#eQxX*52DFkXZ`_5nicaa3)WT0Y zck7|yMkBHZjH$l3wC3pPv^5UoEx);d3sx9dnCd?j(^HevdPRxWA-l%0a5K!^rFz+4 zuTVJ-iU#e{L$9{k=e@Um*Ui%`mdiKTYkZCRTdR{&H|1UG7WieO_EHFV2r@ z961@;@)jnX%XVB`jVAwovb}JpZyKEpoRoLUak)H`^bZav9YsH^N@{qW9cTAEzqY@X znHsK^lR|=je}KD>jCfg@7x&mCt;9LHJOOgr>8^sVGX}pvwklKrs`;2l=NI`#BNSMg zkbTb+zv~v1UcG!pbGh+UP`GFXB+C&|k)}T`Rp#izjWU%*k-s&5$YXfdJ1kJ4W{o(& zM-G8Sb97ed;%i`5a; zV#dH|nIBBJGS;ivkms3cNW1?=nx#%$E(i>doG$)>DAx5FE{bL6xC=+-7l=Jlurm`c zlt`T{Dx>xLAy_sCGb)naFMdlRi!W&i0>s-S3H646zt(fWOW(-Q2?&#^U&;ju4Oju2t$Ta_xhKW7-^Ge3p{`|%wB)%+% z;(x{JQoC9^wUl40(iCtM1fj0HgUQlr^|KZ>ad1pa)JOg1)z&u5dg%QRE6@r{w$RZQ&+3&m9@SW7x#nWxktZp*wxv}D1&u)25&1$QeKmM5tHWbB|2lL`hkufy8siM_KtdxuC(h&X8S(1dL zct{5yRbuE<>Z#`%+RFeljS0E+U>oq z)|O3w0qYnY7%1rCu?nsB`|hj0j^5i-r}s6p!OzM}PtA%pO{g`^;QUfJ_fu!Gw{`pq zhDCC;_Amu!Q**cHWY>?L?Mv;;Se|1xSN8RIHrXnMO=JUuNvIqiCR6{Jtt}%O7cbLm zLj@pXU?jEPQ|q{fTrjYLR*pu8n-9}W(Q1m#X5Vk3dHlqc%+a+@^EBE=^%|YV4X-VMa@E@v#r6PC~!uV!R7=jIyjn_UM1^>6I8yZ@X+ak~^3)2D`cec`D8Swk+KCu03wrcl#gk zwz{p&%wQdc9Ue_H?UuJ(eq5Kzzt^0}i7lGdX!UKHx6Gg$#--5%Lm^ z55d)H4meK@q))}WkDFGirm7yQrlO`T8ndEpB`vz{E7v?a$36f@div3+>qaMyIrZxm zZUb(Xr#Uif7eWHz2@CgXTlL=89hd+Xk21UGTI}m-V-VI6kuVSw%5Egg$aA7(8^h9c z0o`CnQJIcS`Yj>kM5&nhW#1mis$gv14DxjNDiD%1_6A@lvHc_7s}Q$mxQd1K&e!nN zdwUxkg}v6HIm5SO#$o{@QVs~7jDl%p4||MDoAOktdsE3mrqvf(N`T^l^^jDbfiA}^lA*KTua@Acow3A|# zKL<6e%lkxoO_f;OICJyQ!L64?B;2t~9oZD9U`v6jc0ua=Xe0^*EP8U(G^nhJQ?xN>0u|7IY_jCSkbRW?jX~~e?upRFP{`5OvTkTCP$aV2obKRZKsa5UEV;t zM~NTtmtKL-oJY>%F@N_=H@mjw<^^^Q7q+CqwDtydXr`bqN1(qk@${R_) zW59@q0pWL@KSd>SV}Z=OAdNw{S>Gx9Q72 zCi1|txmUTsDZMIW1*O?>{?4_f3h*q-^i-UJ6*yv+)ddPA#Cj_)U~ytWqKW4H zWKbCc$kQv4sBD|n`e4lNl9Z7LHM~h(WRRLwOvRJCOO!jmsEbGa)U6Na8&(y}kz??H zYm#Jz3iA;OU>qfpPR#6ju@Yt!S<#SdB{mn!n5T9nbHg49&%cmZ{F(32GGu=pkA*SbO$62Is5)^lL3DyHhGVfr5C)(d{qVMr0$0Pmi)cD*0N#oq{lGMvZ+me4kG4c_N;Hhar;7qi z-y7!l+HQbRZ$)jX9CWP$Nv#l@7UgBrs~U;ly-b;~oG(VN-Day4#*@&Ux0|6|)9m=ah~)=ntc$-6G4HUd&rFEU@{a4#DqXcxpCij953%2Vs4cR@=zD zH6)XTg`MtnOGk^3;66f@D+QBI!lxwAnr?cB8Y%H=FsSFq*g&RBx~`Az`B+@<@8v!G=0A z1Qdu6(S8CjMg~~66a$ao!`?lmK%^Amh_%t8 za%o0u3TP~Ke%pyff!f)54$SqsB z@1UJH!wI~*dId2Bfrl-Ke*Gx5W`e(c4LjKj!G>RPgP!i;fn#n{=TF9#|x>f z#0MYA1~gorgHQa3WG1bhLvqIJfe~qj(A6tSJto^3o0tX5IO{VL)nE z3qtK^=_yl_mxgH~w6D-;{(gF`ppcs((wk7!vj08ekG2vFN8?;(hv05I1vNyh2I80e z+wEJPL%}WG*0kMX?zyx6#3W9*LgkB`+a`>9&J~EyML4FWz#ccl!x~%go@bYqe z%|?sj=rr?g@Ge{l6FHu6Tg%uqab?*|v)9fHwpf_i{`duWI1fcs(z*3PFI%s=URbwm z?C?HRI+#!G#m&J*U!RV)3TibV^K|KaxZO4~Eq8z6+BkupKI6O3j40X2vNc@+p-C)C zN&)tgb3+)P=Mo?H?;!N<`=pviGwHB&BwX)eE|2#Q3{VuN{cT_27zL_m$Sc=HkSK>5 zw<*ihrwp6#?a9l<&BMjn+48%vITlM5zWdz*`p)~e6y5L6n9sQ%9E~j|F19XH`rr*U z33#wKeQfi6oc(bFh|T`!sPQ?Xj%3ml7s3CC+%oyY(FVF;F=ZF`H??6X%=qiU ze~=Eyi92lka0)bZn{+zX!G0K3ASo%q`JgikfiY9WHA?GE9V)vBi&0i8{kkF<q4<7`8N*1!8nl zx^ot0vRpT zsh-Umz7~>^>LXvQr4k0EV_$!?cd`CaHN7PgL~4}ZUdf+x7ZaprF+Vm8z(zgKBz5x> zCabWQt+n_Xm-$b!z+a?f8}T!tg(dl`)mu1q)8v#RX3m4uOcd6m1xVAGra3M3Y)^;i zz0XEp2VHu;vZDQzE!nI#`Tp>>yW|Y0ZDV)XZLP0~Kiod9_Kiu>drTLl=zK2Kc#jqI zP~D64W9I0j-vQ6OniLQ#10-= z7;>tj9Sfljh(eA*^f1`c`t0vd?QdT0Ph{?&f| z!9J=Y0*pAy;Jgt;j)h2wkrr8ykemuIC@|ZkF_Nm&eJ+|~uY(f|77;<94Hbj-Z1Y{H zkXuJ#l_W21wN`$b(NcyB6gRbW2o3=09NU2Ep&W_jc?o408Vs#G`c?Na;Z7)iPcGu$ zw0YxY0yhj>d5(vP|FH*u{kdn&myQtu-kqq;vdXrw{Q2k_S?J15>umu?`@p0v!Lo!8 zLKi@-!-6Vev0Czr#Z&F5--aY2iqi&;LtMK-3|fOftPeZ6R_?bwNx3a(az%AKSVCAO z-~7{Tpp|e>l9~!+BhIcd>W^JD_ir07MK+N$e*|^ZTGv{}w8O-`d1j@d<+dX9;XTe7 zWXhQDa-vVun-%EsAon!&d{_Nr2(rXp&vLzEmXl-q0^}GZ6=zZSXzhpo3bq`(_9Zt_ zN1UAWv<7G#524c|rrtWsD@Emo|=*AI8)E%>aE-M72OuM1$A_7=QGuw=cwsE zkhD=c^^gWJo{gy^c)7= zxSx2ezF0x9FEUlhQd@p2hSetR#P>Gn0RQgRH@=gURGWYQ@p*;+8R_|O>ABm3_X;(g z^mx76dCU5bH)=W|(EGFQ{l(^U@Zxjh!rzHCk~mt*vW#InJl&v!R`nal2QpP#x{6ck zsIT7si6~3XWuMDRxrt5 zxihjj5cbez^GZou$kgG=V9QF$^LXST(Q+B1-bp5Dq%*EODMO+ov|H67lAB_7kR$HK zA>(UIBin;?yu(O!t>lVfBj1o=B{|Ag2_|R+TnK`3GMm<_YyW*#hC5$;E3W+rSeTm0 z4%^RGA~s7{ym>NkwuviZHei?UX<9Nm0mI=`E65+so%iKkxts01uY>}J3>mJ0>;Nv0 z-g@h46^*aw=ZD(*kXZYhsmWf4JOtG9I zOZYsdXL{sO{{eQe; z4Da*v&02sm9FtG#`t{{i(P*6TC!i~-mNv3AMa1(4kR>`|DLs$8POsqH!QZs2&nYgJNpvgqRLZ=SC_M(dHg+{J^Ov>8U_tqz*|Qn@J4tT*ovDL7r#QXsSp7|Li-inFdn3AtdP*v zHt_Pt&ehc@t{Trnsua9>48yF3_P(f15AS;E}moSnzwN};2f zB6P`+bRJbWLJ%McD}K^Z;sCo=?p`+3!HgR-Q%se-d(gUjP923Z}o$=>X@ z%h49SvrdG{d ztC}rxHs4lz&vl?|935A&D^+T)a}K;b@E~}lIzFsik+`5f1h+^zUSwaDc2-D zv&;k3+;>br7d~H?0B>4-O4nr#-`mO)Ws}sW%;g|3Sd6>gO!iiQpcnYF%=LO(2TiMU zRE+e06lBLo^~b`8F?X4OHkodEtHpgBN&Wm#>Z=wEH&86f`hIwHvvve!CQhuPG_T~- zO!qck*H*S*(5)Y!O5Mfh#RZV9?6dXYwQcmm)$_o`yY;pQ5C>@AxUYEZcm#y$om6k( z|GbXy(6Gz-d^1>IBor7nYS>AUAaGj84L}<38m*u~^Xc3auAmOSu6B5rp6^2px>Ii% zu{Ns?qyO=UC?lMpgxs8e;7Oropx8Vt8FLT->1YS zHM$*^D+yOj-3gC@rs89hqG4P?oZ zq9Vl;86<@szroFS7Fcca&92Bx&S@2(rl{gJZiT3!gUZI*7G`*-R-|2S)(5Dwv#mOg zi&VRgrff`SJ=x+m?}T=+I@Gt}N{5$j>W2S9{0z<;?fx zaL)(V;=BpVuPC_(am9Dq-7-p`ZfTY!CCL2Qokuin8I7Dnmoz6>k(j+iaW+=kzBhAs z6y0b6eyDCt9reGw7)gbCq^pIxOTfBz$bUG;L==2=_mm)!y@g8{^QzD5?f&UnY?sF7 z=o6)h2KrbsShT_}IijdAD6ZaGI@gFmjQo_@YE0N%RLBho}rDa{y3< zDqARHzBc^@=%&c87P@6cm=Q#LI*8#Jw&yUNKr?Du{B@FLAIVYFsSdhD2HB+f=VQz; zrb@d9PxZ87{c0dXwm|!3n2qQ{llNa55snFjX0w%e&x#4XTRC*JiyOs0!tHK4i*KkN zWW5B-52nQZB8^NWDGGK1y?IPd(lHg@%adM~Q6QGgXK;|ly9YF$^sggXQNeEh92x()*mm&=ScU-xNzM0NLlcnE&yO;e2<%h5|6;I;2C z!}qdO<9;-`_^R!)^L_ek&F1yu0r+BVhw&#-IGx7-nj5S>hbtwLi`Q0#Oi7#uk7?iJ z_CkGI3yHgK(?oJ`Fx5T2-)>w-xG0o7zTKX0X$ALA%bLJP4 zsT`sDWL4g1oP5-irEjX`XH<@5ZZRXt>o9luymmqU^EC6YaJa1(OaI2jMqk6tI*pAB$}hWs z`b4pnQ~(`vL3%uQX6{cnZalvxC+4plG7|_FDb_A~MqMnrMR7Y!bc@|k&P+5L7kLTkRB#4n!WSvXW% znE9NXd3EgnPph=?uOlkIh4XT+7+@a_&~<-WQWZRgv5fGz`!D~zGI4NY=ME0JKLAkK zev;*4@0e9eH0JX;;zPptdti!f#}gn>OT+&MP~Y4XDh)}qZ5_TYp{i;TuHX*#0wQC) zI<*0fOawXaizTNjWI%AJgn~_n4zkKJkUfT+sl^KAy@{z8j@qLa27!|CP0E2W%az1Q8naaeAs?yQ2=+wCgQ$Qy zZhvV(yS3%&{eKE!E)ZEzax^l2R|zwAifzQgY>1KtR_U;?pNSS|){_Wsr}e!72@L}b zk|Dgm?8~@~Qy^d2?$xbG>#9UYnp+4*b8wG(B-t!?h|W&QOUge;Z9E?G0!V{1<~rjzDESqIK01gFmFj&#N_S1n`bc^6~@-{Ubi2JIPs z*2oJa0RL+?WI4P0ErQK^+x=VpBTy;m++u@&kKCHYUA(Sj>kB*oa z9;|NrRP!BB^Wvk@#_H)|%=PQtVBc9cY=xC6;VZh&9Xd^9!wgqU(UIjq#svBsmJ3F- z(5}3ELu{~8L*@arWPrIH?!?fHflM;Gef{{z-+xrAMKE5?^zcG6D}L6W>Bw5ulqd30 zWCa1Zk-1=Gn!KUCI2s+x|KNWD1@pP`2$T-0&94BXoDAqo?nIq|+W(ZnVBR-(BXxf2 zYQ7yAHlD6pfkWC)6{QetKqXcTolV?06De5*R6s`pT3tJcKpwS>fvF|Dflm~3%2LpBSxir-NODT`)hcK}l7Q98@TA4H=ZIWt z$yOLdsX2hKwKA;_h_21aX2F;-p+K&W5>4qzPh(#+j=?U+yYy6vL<+_?DsNgLXkMa{ z=0Bt($%zlEEsxwjP-R{6-!BJVGoh(F9}1Eh`1s_~-7mDY4BZEG-P|P3(usoy`gG6;4wz zUzUQpzrCeYSWxjZ-QqlYtrZ*W*lC{_Iib>f5L(Ehj;2hrWU}C&UY@HonK(OZyiCq7 znWk^gv_*nqST5JxZl5=9ly2UgN~9w#iGX}uq6`si!D+=U@F!%+OD>0ACCuv!d z%%Ctv2mP%MF;VC>;^-UIchYbLVH_2?TF7GVJrheaIYZjFg(h2(=~okwCF#zOvR~4^ z1aL))+qI>ZXL|4Yc+?Cn6H6VZh<`^h3;X1!)!l*YZ2zG~k%>JFnh~+Tmpcv#CixcR zL}dJ~JYQO!Ab`z3VH4(6`TH0}uNC(TH*r9bx)&^^5MUuJs(S6}RFAoE2+-Epdy-1% zS_Z(O>`_C;q|{tptKaV{J^zT&v38cStE#kZ_WzErfb#qr5`3l{1jteEok%-(vkZd~@UK5Ptv$O)|6b~l&dP*Jn)M2y zAz=ti<4bj6r3&s@`9*bw3ptn9 z=Xh8c=@*ym?5G!a4a5W1AYN99VP#?O1H{mlx;%}?cO!T+w8YcIBI>k{o8}j6kus6a z&W%q`&cviT4eql?)7r9+kB)Bu8ff!zH(i-$%Zq8jdO>mdd5jg;yXURe4o9ZItIBO5 zG?6;sZ$EWi6>^1t{h>C9KrVktcoh>DVvPdIWJYS(S_604{L3GUNtL8Y@v!;$MkUoZYDgIC! zGFSO6^A;@5jg7-a`_R$HP+&EcEnZQK7LZ5La1647d+AHEmMw(UGDmx2>sJ1Be}X@LDxEm=CBR=T@N zb0+r?WqpfR5|7B3nHK#D?ZOBJYH$!3Cj`v5j%2sT`3oAjAo&?;rLiVvU;LxhCiiF8 zFF>1Ti>W~|Yb(pz>kIdb=e#5eK~XVktlz@(h?0AGtuK!s%E{<(*HZUGgSrC{v_xGL z+M?|Bh4&P`RagyY*_GwFSQe)I<#mhYp;nKzc6caJGrN5m`t@lMg?u6IZ<;cE|@P-LiMS5DMQ#~2}DXJ(q!ku=xfGUKgW zgLi&~b4dXDu33F#U9KTqnFF@(K0Z-t%!n0?4kG)@h*I;)oOw#xg)Lgt6Zo)J33Wt{ zS5mo-=C)`Z6{Jdi7vuC+B#_a#^iO3Jan`cdkSmMuDscUVp&15oD14O;@kB0DB7jgf z0CV~-diQDI)T~X=1#TB*Rj`R0RU>lI(!Tc}bWcioZ10DN&%*<*c{gR-EpMeo+r8>kw>d|@~}sh(1E!?-`Q zAz!5?Twf?p$J)zjAQ6wL=2v4o4ME_8? zfi4~0O+DC0fBI_rP+$GC1M)*t)FT5cu#t90MwkI+s<2h}u^ubA$G7x1C8<*N8Vew5 z(0&A(<@6hvHr-pbHmRE0{e6ER&F)O4d7Zg%nc*X7va;`h-|RLVlmvKTzc+GcH4so$ zESPkhjoR@%AqkZc7t^ufdl zZbT=cvaDM+@2jSx*P^GN^DPg?FdNPvrPwQy8azsoadKXP5NBSa9GPiFw9Ev&O#!TZ zJ?vE4{a-p7b>S%R=n7!)RQO##q_;a2Q|K{QioVzEEWD^q%!?`OXMrq=WDq+OXU^wv z)8k@OE|cP~H*SrS#mRSkzC~8vHgA*i6`;DavAOE&y0x?sz$`e8P*$y_tn zIfwYqyVc)ePb7Y%Ur&P&7K=JcJD5gs^(7nw%@Da@3xsFjfLIWFC1ytY=lbWhi`<#_ zEyU-xFQCKO#ho(w1ypAGsnJCf@5bULHM1_$O1j-^=Q_*hu1wbJeIe)h$@yKm08IsR zr3tcHT!rIUTa5?B^xqzq;$*`5Qf>XJnxaRgBr~KWhc{yvEA(~0fo*Aa^Q+Fnel5xu znGzcMKVKAH(E=lmV!T{OQf-{a_6gGnfbVadp#{FrFtN+=?0s+scV1e!V} zAG7rx0ba?+nW9~3a4t^CIX;zr?ev^u793h{2P)cAiKM^Nd?vKxs=Ir(8=zluXiLPY zOim!NLdd2X8Aklb_}<$Sn<6+x2xGo*@1YQsCFLv1kew{3`a!h>=tm+7s2bNC6B?8A zz)&GQhx+SPOHdtU43x&dLA=i0K%I(CX%KGlhKxq*PI9S8gJt`<)fiXM{Yigq)5s=i zj1aaYpogb-8Jl%#ndZ@Ia-mEC9Ty+>CyV+VX~2Q(`E?w|7Q}?AVGTZXVF;>gS3>Y( zfr6Q)GS+ZTN)Ly4Ukz~oaUrnVqvU5ZbIv{T1=hATyd~(ZL@7`qoUQq z;_>vDAsj0(LJwpxcdl=ErjE~hN`EDJV+AA-&0)g~YnZzu4?Y6pP&9c`T z>rHAZ>X$4+uESZJ~+wAnS zk_7UXPQ{?iFP5uRweCK%xN=_4S9;v9F-x4DUoPLrqN|+(lv28K36PKtX<&}Ci{Frh zXh{>-=o3OBB0STH%(Map&n9Jar6-ty6so0jk62lP@KNO=xGb-D%I&Ek+$i60ws*}i zSelgc41vpBvQbHL42Q-Q?4$iQXlRTvSO%>7G?3KJki@!3;UqcH91lj}odRqi@ygUV z9ql29CE zkJIY|^;rB`#%31L%(UcUg$|V46EB3AA>!<%^ZZ&#K+Czcb$J`I)H?cP_;=oAe-4k( zAvj_M}-!zwxl zl@&Q5xt$DL7{Dl|<%Gsl%^O1tvFR6f14k>7`a7eluRKKW6rJS_3kaGWQ|XxW&x0|^ z1H9HTyN$qOY5EwVGIQ}yZXy!^`NzMlaa>`>p!Cuj z80Z`X4}WJp=7Jy#?gLk%atD@2n6{xd*K*8kUnGNc?q6%e)U(eZ5+!vu-+f_XGR4Mi(0%m}#%XQ49VOELL zcvQ&}XDYl&Pg2a+twl)2!4?C3N?=l=Y8F5=O9MZmqZ%$B`J1Fy3}o1wn?bbct8w(6 zJslM_)7fgFx9~2y%U{=%An^m^3jHC$EhI1;HcqyXGU`i0PJnq)n3Nt$I<}S2wh*qT zU7obk>(?%3K&F$a1EG@ap+?edJZeOzU%{*N;3x10cSOX*z*0cOmy!boF=(^;RcO%A z-MIn+_E(**$QUxTB=7+VHy9KLr+te`09meD!9Z(oR@|ztk|rWFcJWV@E167O>MVqi z;m|`^$uhYxKUr z6*)cHpho)AB2tj20GeJiooexagxGi|JsDEukXqE$qS{3~-Guh%r0+c+|B2y+G-Mjz zH}?r>C=eE16@rjNsH1BY7#0WOc}g+fhKAiFr`Fo~&L)i3nXP>QthY@b3Pb}-NqR~J z=Sj9IdQtF8G*@89VkAO{yP}SC67iYI?@nk8nlV72}xbFotVqF^~w+25VeB-N-oTS zJ=oTv`^MpIrGCk$hk~TFx^q=g%^QVR0HIZMt9fgh1v<}Dz`JQV;FrAj9J?P| zFdil_2Y#{SM1OeEB?FHh3To(TGz7EtpeU(anpP{R(eVjI60$Ta$~YBBtUPbmAF-iW zgGfy+dPIbu3AL~scM%|A6%A&)GapJdSz^RCmdIY{z+cI7^ZYfy%ZyAN!AX1(hO|}k zrR4r;%$vrEj&EhkEvW*~_5bS-pYVpB57c4TUiaBEPB)2KW(^9Xt+y}>Q z_WVkc)=sG_!wyjf9;Jmd;x`-@v9qE;pNvlH-9tL@yV~8w{Eant@b`SZ)2(4_g^={3 zi8avYEM@y)Rkm4CBf&wj-~fCj%WW9oCOKR+%2tUo!3o$+KGOCWcipr08XsREP>Xaf zr(7ID5({N3m1vD=H#59kd$Lz6$FZ5ukgQglh1@DRKqQwWH||v8n?zisc#}Gr_Dqr_ zOLK;fc8AGK1h!^5S10w$9}&=G(0Aif-u0DdYm{{tU22s22;8Tpt5CS*&>IJ4wRWkC zAubUZ1+{_of>V3fqeF&M(^mndCPFn@Lw=PCvqNVTBmmB3{w``Ng`x|S&r~1dp3D0i z5Fi=RCoSp*jpOG`hRLv{B#>OhZs*q@>?R?NJLm`+X0g_Wg*V|nHLY%d=4>c}VYjRyA)N$Wb z%a}zPR0h)N-h7CZM${5E&-@NbZLW*}I+!yMt5C- znyU+(k$Wyd^^3!t_NLF|G9@DQElLAA=9wc_N!@RRAG}hU0&ckV^R;lpWd;m`GV`BJ zn5@sUyF{U?bT($v#1|eNMOWm-HWh7ncxpeVT;+A*;U{9i)3(q`u9{l{)cmV>l_|OB zBK}cBLWfoCzE_o14Ty{6=hx>(M4UrB!?z67YqJ~B>*-OJul~?t937@m$8VjKsnz91 zC7)|m8xw0?q_NCq_Frt`H%Jx8g_F`i8!=8LrvZl*O&FBbmmZPk#4|B=_s9U2>o1TG zK>S!>9ZC54SeND$LjD(?8``Z*{MABQv*IGHiNXZy_@B6ND9KRU+#eS-Te)`jzDSl| z$A(3Un#timIKH#`S$`o|5^6J_jf@)6;9H6YkaN$&+kdyQVoeL*Cnpj4DdC!(k!;_a zqV=ECHw_@H?mvQ4iqwI_ebZNlBT~DEm(k#e@QS(-;XPI2vOgH5c$l;1ny11VXgDcH zeZalK42kROtd5ENm9j(=WB*#ERQ-#ASt*4A3)z!KdAEtN=N4Nk%M4pXOKrU%1FH95xHI_5sXu?cl3` zE|nH1{Y0Zj@8E)7VwF$xaR9Na)nmsSjpG)c1{DZeQN>uD@+d@EGvUI?U?wP?x%H$m z_=t(rXsW6oAiM`RRIihClra)X;5-I{#`nc9e(7%D?C(m849*{@ZwNBy*8P%FmtZap z7a52S?+AkD$1;A3CofMiZ$p=X7U~NQ#HviF(u3~xlH7$Nr(c43vB0A?lp`=CpRwd8)*thz*O8z>qyMKV?c%`ZudFd;Sv-HRQe(s)RVeN2G zbOjl{u)Kf)U6 zf8i*zDj+(f>5Dr$P&X3bKjERM)Qg-c!C^6#<0;Zx&{H|h+l6U=B`_n@{nXbgB>(59 zaIJpjLy1e(;d4e3p9~#v&KetD^m8#;u(HDCZ#Bh?XOV&Xm#n)?sO!9jRg zS+nxp=x_)@wfqh~aq&a@G|jex^1IKsD_<{C;;&*aL3@?@sNbpWo-3ewV93_sBI{BN zD|HotX#gfbv)F2chh3}sQql6v`i0^@Xw?hhf|RCXBAySO*wFgATvOgBZ#%u*;0?Y- z3?DB~31$V^D8Wr0+xHedEmP8zCRjv5WNWV)GoO?TBNGlx3-E=Kw>nF^{Mgp64hoyK zu+T~7`y|L|$KP7G3b&fayEu?gzPfTRx(?e7o;20gzMil?DRr< zH$1@SnvDASyfl6s;~{q6e_V251)WGqDUj13sp?4ZWmIAA&pnVVmS42i)y3^XN;C@xHtYgSRNI+}RKxt8N=3O^FQOQjZP5~e1qg1&1 z1CaLkAPVGlBVz6b00kfNjhWKvKu$F?txQQMU9=pW20vM^>v)N<-ShL9;WT7IelQ~P zeMKSo;_Zc&D}jN2nQhEg<+z~bDMnpz?K}05GCSX=r>E9mNzn?J)>f?570MBR>h+yq zphTqc%Bf}gVTbF-b){3G|H{Q&ez#$6)Y8Xm=Gmk29SGs|CXwZ)F67x&UayD8nM#fM zXFnW6AUORe@UYO43<)=DUl$F00759Yj{DbPP?)i90>huscK0}61iD$_1cd<+Rd%0i zVdd}R(rJeH#ZCVtMo7_#$$w$amHn>3q;$*=DutuMgNBg960|s3q)wc_X;OYx?Gooy zuU3rI7tek<_{KrGu4SSg(IpK%Ld*yaSN6RJ0~ZaRBVrL*MFKrk_>mM}s!bdLDiOgL z2AW@nj9KSFPPo@b^lck{To4oVAn;TD3pibkqNc0@15o=!OWi>KbzQyZVy`%|>5RPq>$3)sFU2QkXXXm0_dJe6ifA zD-5- zz~4Rfl;9g1JSeV-Xq(zq;qRq=TmYPhdz$BuC*W1cbi}?YzFz`Q%qUK6Fw;Eb2e$b`t!au?4O-*D=GLw%Ju2Hc zDz0ObE)7Y-3ERr8)B4;bHjV325QS15bA{4^4K=zLjq4Vkflyv=a?3XUxBD0-u)`ys z#!(U9`ppg1fR?R6kq5a+sANNHjXdfcNrvH~r(vG~11)8+(4hZxVFDzR>CD>&IU%{7NT<@} zCteRLe@;F;df^elO|3C0=)zjoBbAg3A;&^#5RgX7S$jM0OTZ|&$3D!8bAI0B0%T#~ z?S);+j{8Fizf-u}_2-O0`)68K$hf(V*pUC-KSW5G`FOF!dFBR7*NjPZ&9G;)Xzf|u*?R8or zFU0l|F{G_ncgJWGSnBLmq+!t5?-+A~>TvvAu{XNtV_Kj{1A{{?%~?w&s4dW<2T4p* z&ryzuRi8j3x@^}aEv-l#=qMvF{9i=9(BL8+rO+`eMQsD8qM1n>&?oeSHu`L}Wee+@ zCIl8fF1Dt&s%`CD>9*T+>j!1c?$+jO2^fYW&gP-Hx7lS7CNu0r;=JA!P1{0%9A(V} zL0EUvK36fh8`1%Bg-?pog5ta;{YCjYOPmM zuk-t93h`_G_<5%sZcrTb4m)L3d@y+pE#lv6Syd~%GPDw_HV8%&Qdo|X*`Ds_-AGUi z!p<;}e2#2Kf#j=^&iy%s{<&+ZNcRN23yEMJ`~WGO(rBJ_TxyL0hO132n##rwgEPcu2oj z@-tm;x@)pe4k;&y6>wW>Ju-%wZjtz*VUABbItoWVkDe@>!(i&3>;skzWeHce_gPx(U0A19W1G;3UM_4 zZ?{#b=!orTy1k^<*J&vi^*rR9Vh>Z%+E~7(?^}mLfU{xMJ#^45Z*byt8$1cmHSH_& zq}Txq8`kMqy>2jRMk(y*lcs3Iy4q#SkCJVvKERrBgBiE7C^9ZjTQ4=Vg@+aC>G{^3 zT8S&1XTtlKiaTBVEo#|P3EuIcApP+R~ zuZn}m;1%N>!bLY|O1>5M2a#5lo*23NY}iN_TZDIZ7L+qIwegvoOTD()tT*Xp3DkZ} zSJNqIP&wYDH-0?-z>mF>tisb}mz{(+3bbNxvApBdo(>bt_@Ard3m?ZeCus;eRO%+ z8Do$X?~D}Fu*k$|aO+*Z&|!;vE-)z&5c8cowru1JQLwbEIz3y~3&*Q|MF;dS{7p&E zoI!u;W1tQb%!IYNyBFbCK=WlHESg8a{Ihv0+JF^(sV`rJW8x$ng-wc3o5UvyM$oVf8A0kWtFjOREwGoL;iL;PrX8WTM_r$ujmTiz9H^pUpHlSaRpO&Kkzt3 zZaw*8`|JQlT&(rG9vVH^L%al8Jf5dgb&R-a&&Uv77xYaVIv3&iRy zCg~fCzrJK#!?|pQ!C1esUwas4wBMEbVV%j+kDldLDwA8Z&4Pn5q+UXW+;iK zv807x9=3_=L*Y>0lh)1D*#Z3)UrMid|>1ImBi1n&)M)H`$jPC{8+tm1=L5b@l`WP#1@pDt>;g?`0!r`Zb}R z*VfNMaI;nFmhreQdjhy6C3@6AHZewc(bDUHfecF zvmcawTb*x9RR^%4)4#>E;Ea`NCP$^?Cx1JKr*Wqf%2Sd;q+3ngP}S47gQwGD{&9bp zLFLYsNghj3hu-=9(-O{+B+>9hW^%nM*@PfnUwbi7WP5ljF>g~^XzTaz?C%d$t@;pWUAP!oSNtS

i) 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

Hya^VJ-JCq9lfg8UNb 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%0Daocyn^3cgBINN_DBA60%ccigKOcd@27qRNgA~u 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

)?dphe2_zxMay7Y$6n-EZ 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 diff --git a/package.json b/package.json index f08f67e..322b3de 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "1.0.0", "private": true, "license": "GPL-2.0-or-later", - "description": "Electron app to setup WordPress develop structure and run npm install", + "description": "Desktop app that sets up a WordPress core development environment with no prerequisites, applies the work already on a Trac ticket, and submits a contribution back", "homepage": "https://wordpress.github.io/contributor-toolkit/", "repository": { "type": "git", From 87ab72754332cb8afe7b46ed1e6688929d56330a Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 19 Aug 2026 14:58:37 +0200 Subject: [PATCH 39/53] Add an end-to-end engine that drives the app against throwaway state (#362) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Nothing in the suite has ever launched the app. The Git modules are covered against real repositories and the IPC handlers against a loaded main process, but the flows a contributor actually performs — linking a ticket, applying a patch, moving between branches — are verified only by a person following a **How to test this** section by hand. That matters now because of #350. The git-native refactor moves ticket branches, applied patches, conflicts and trunk updates all at once, and a characterisation suite written afterwards can only record the refactor. Written first, it says which of the old guarantees were quietly dropped — which is the failure mode here, since nearly every regression in this area is silent: work parked and never restored, a patch quietly missing a file, a ticket that forgets its base. This PR is the engine. The journeys themselves are #361. ## What changes Two suites, because there are two different apps under test and they answer different questions. **`npm run test:e2e` — the journeys.** Drives the app built from the source tree and writes real state. Everything a journey needs before it can assert anything lives in one session helper, so no spec has to remember it: - **It cannot reach your own sites.** Every launch goes through the development-only data-directory redirect, and then reads back the path the app actually chose and refuses to continue if it is any other one. The env var is set last and is not overridable by the ambient environment. - **Teardown always terminates.** `close()` is raced against a timeout and the process killed after it — closing is known to hang on Windows in apps that keep child processes alive, which this one does constantly. - **A failure leaves evidence.** The trace is Playwright's; the screen and the state the app had persisted are attached here, because the interesting half of a failure in this app is on disk rather than on screen. - **It can relaunch against the same profile.** This is not a convenience. It is the only way to tell "the app persisted this" from "the app still had it in memory", and it is exactly what a change to the storage layer breaks without any other test noticing. **`npm run test:e2e:packaged` — the packaged smoke test.** Launches an unsigned `--dir` build and asks only whether packaging worked. This is the test from the now-closed #70, **rebuilt rather than rebased** — see below. Both run on macOS and Windows for every non-draft pull request, as two separate jobs so a five-second suite is not waiting behind a fifteen-minute one. Neither downloads a browser: the only thing launched is the Electron already in the tree, so there is no `playwright install` step anywhere. **Deliberately not in this PR:** any journey. `e2e/journeys/engine.spec.js` asserts nothing about ticket branches or patches — it asserts that the four things every journey will depend on actually work, so that when a journey fails it is about the flow and not about the harness. ## How to test this Platforms: **any** for the journeys. The packaged half is macOS or Windows only, and the point of the CI matrix is that Windows is the half nobody can check locally. **Starting state:** a clean checkout of this branch, `npm ci` done. Note the modification time of your real settings file before you start — on macOS, `~/Library/Application Support/electron-setup-wordpress-core/settings.json`. 1. `npm run build:once && npm run test:e2e` - Expected: 4 passed, in a few seconds. A real Electron window opens and closes four times. 2. `npm test` - Expected: **1027 passed** — the same count as on `trunk`. The unit runner only collects `test/`, so it must not pick up anything added here. 3. `npm run lint` - Expected: clean. It is repo-wide. 4. `CSC_IDENTITY_AUTO_DISCOVERY=false npm run pack:dir && npm run test:e2e:packaged` - Expected: 4 passed. Skip this if you would rather read the CI result — it takes several minutes. 5. Break the guard on purpose: in `e2e/helpers/app.cjs`, change `TOOLKIT_USER_DATA_DIR: this.userDataDir` to `TOOLKIT_USER_DATA_DIR: undefined`, then `npm run test:e2e`. - Expected: all four tests fail, each saying the app is using your real profile and that it refuses to run. Put the line back. 6. Break an assertion on purpose: in `e2e/packaged/smoke.spec.js`, delete any one entry from `EXPECTED_API_KEYS`, then `npm run test:e2e:packaged`. - Expected: the bridge test fails and names the missing key. Put it back. **What must not have happened:** - **Your real settings file must not have been touched.** Compare its modification time with what you noted in the starting state. This is the whole reason step 5 exists: the guard is the only thing standing between a future change to the redirect hook and a suite that silently edits the site list you actually work on. - **`npm test` must not have grown.** If the count moved off 1027, the unit runner started collecting end-to-end specs, and `npm test` stops being something you run without thinking. - **No Electron processes left running** after any of the above. `ps aux | grep -i electron` on macOS, Task Manager on Windows. ## Risks and limitations - **Windows is unverified by hand.** Everything above was run on macOS. Two of the four fixes in this branch are specifically about Windows behaviour I could not reproduce locally — path shapes and file handles — so the CI run on this PR is the first real evidence either way. That is the honest state of it. - **CI time.** The packaged job packages on both platforms for every non-draft PR: roughly ten to fifteen minutes per platform. The journeys job takes seconds. If the feedback loop gets annoying, the packaging job is what to trim, not the journeys. - **The trunk update cannot be driven from a journey at all**, on any platform. It reaches for a hardcoded clone URL rather than the checkout's own remote, so exercising it means cloning from the network — unacceptable in CI. Its two interesting cases stay in the integration suite, against a local server. Making the update read the remote is worth doing on its own merits and belongs in #350; I left a note there. - The teardown's last-resort kill is a bare `kill()` rather than `src/kill-tree.js`. It only runs after `close()` has already had its timeout, and it is test code, but if orphaned Electron processes ever show up on the runners, that is where to look. ## Related Part of #359. Closes #360. **Closes #67** — its three assertions ship here as the `packaged` project, on both platforms, documented in `CONTRIBUTING.md`, with Buildkite untouched. Replaces #70, which is closed. Unblocks #361, and #350 after it. ---

Design decisions and alternatives considered **`@playwright/test` rather than `node --test` with `playwright-core`.** The first draft went the other way, to keep one runner in the repo and add no dependency. Requiring the suite to run in CI on two platforms for every pull request inverted that: retries, per-test timeouts, traces, the HTML report and the reporting artifacts are all things I would otherwise have written and then maintained, badly. Two runners is not a defect here — `npm test` stays the fast offline suite and `npm run test:e2e` is the one that launches an app, and they are meant to be told apart. The dependency cost turned out to be smaller than assumed: `@playwright/test` at this version has no install script and downloads no browser. I checked the published tarball rather than trusting the recollection — an older version of Playwright did download browsers on install, which is why `scripts/screenshots/capture.cjs` depends on `playwright-core` directly and says so in its header. **A session object rather than a `page` fixture.** A journey has to build its Git fixture *before* the app opens, because the site list has to name directories that already exist, and it needs the profile path to write that list. A fixture that launches the app for you takes that away. So the profile directory exists from construction and the spec decides when to start. **Rebuilt #70 rather than rebasing it.** Two of its three assertions had gone stale in ways that would fail on first run: the list of bridged keys had roughly half the entries the app exposes today, and the native module it probes is no longer optional and no longer absent on Windows — it is a hard dependency of the bundled PHP runtime with a Windows-specific file-lock path — so its documented Windows exclusion had turned from a decision into a hole. Its structure, its comments and its reasoning are otherwise carried over almost verbatim; the closing comment on #70 lists what came across. **Not adding `data-testid` anywhere.** The selectors use the text and roles already on screen, which also pins the visible copy as a contract. Where a name appears twice — the sidebar entry and the heading of the open site — roles tell them apart, and the assertion says which half of the app it is about.
Review outcome (required — see AGENTS.md) `2 [fix here] · 2 [follow-up]` — both `[fix here]` fixed before this was pushed. **🔴 cross-platform · `[fix here]` — fixed.** The launch guard compared `path.resolve(a) !== path.resolve(b)`. That would have aborted every test on Windows, and possibly on macOS, for reasons unrelated to what it guards: macOS returns `/var/folders/…` from `os.tmpdir()` and `/private/var/…` from the app, since the first is a symlink to the second, and Windows returns short `RUNNER~1` names in some environments and long ones in others, on a case-insensitive filesystem. Replaced with a `samePath()` that resolves through `realpath` and lowercases off POSIX. **🔴 cross-platform · `[fix here]` — fixed.** The fake site directories were removed in an `afterEach`, which Playwright runs *before* fixture teardown — with the app still alive and holding handles on them. On Windows that is `EPERM`, and a failure that is not the test's. Cleanup moved onto the session, which removes them after `close()`. **🟡 tests · `[follow-up]`.** The teardown's last-resort `kill()` is not `src/kill-tree.js`. Noted in **Risks** above. **🔵 performance · `[follow-up]`.** The packaging job's cost per pull request. Noted in **Risks** above. No findings in architecture (nothing under `src/` changes), security (the file-dialog stub is installed at runtime from the test, so nothing test-shaped ships in the app), or the new-dependency rule (devDependency, no install script — verified against the published tarball — no native compilation, so no `allowScripts` entry is needed and the zero-prerequisite promise is untouched). **One caveat.** The standard asks for this pass to run in fresh context rather than in the session that wrote the code. It did not: the session that wrote this reviewed it. Worth a second pass by someone who has not already decided it is correct.
Implementation notes Two things surfaced only by running this against the current tree, neither of which #70 could have seen: **`process.mainModule.filename` is not stable in Electron.** The module-resolution assertions anchored a `createRequire` there. Partway through a run it reads back as the bare string `'electron'`, so the first module checked failed and the same test passed when run alone — a packaging test going red for a reason that has nothing to do with packaging. Now anchored at `join(app.getAppPath(), 'package.json')`, which is deterministic and is inside the asar either way. **Two bridged keys cannot be found by reading `src/preload.js`.** `signInToGithub` and `cancelGithubSignIn` are spread in from an immediately invoked function that closes over a listener, so they exist only once the file has run. Any attempt to derive the expected-keys list by grepping the object literal misses them — which is the same class of gap the assertion itself exists to close, one level up. There is a comment in the file saying so, because the next person to regenerate that list will otherwise reintroduce the same two-key error. The `react-hooks/rules-of-hooks` override for `e2e/` is not a suppression of a real problem: Playwright's fixture API is `async ({ deps }, use) => {}`, and the rule reads a bare `use(...)` as React's `use` hook outside a component. There is no React in that directory; the app under test is a separate process.
Co-authored-by: Claude Opus 5 --- .github/workflows/e2e.yml | 124 +++++++++++++++++ .gitignore | 5 + CONTRIBUTING.md | 35 +++++ e2e/helpers/app.cjs | 256 ++++++++++++++++++++++++++++++++++++ e2e/journeys/engine.spec.js | 137 +++++++++++++++++++ e2e/packaged/smoke.spec.js | 234 ++++++++++++++++++++++++++++++++ eslint.config.mjs | 15 +++ package-lock.json | 51 +++++++ package.json | 4 + playwright.config.js | 45 +++++++ 10 files changed, 906 insertions(+) create mode 100644 .github/workflows/e2e.yml create mode 100644 e2e/helpers/app.cjs create mode 100644 e2e/journeys/engine.spec.js create mode 100644 e2e/packaged/smoke.spec.js create mode 100644 playwright.config.js diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 0000000..dbd2b1e --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,124 @@ +# Launches the app on the two platforms it ships to. +# +# Two jobs, because there are two different apps under test and they cost very +# different amounts: +# +# journeys drives the source tree through the flows a contributor performs by +# hand. No packaging, so it is quick, and it is the one that fails when +# a change loses somebody's work. +# packaged builds an unsigned artifact and asks whether packaging worked at all. +# Several minutes per platform, and it catches failures — asar layout, +# native module rebuilds, bundled CLI resolution — that cannot happen +# from source. +# +# Neither needs a secret: nothing here is signed. Buildkite still owns the signed +# builds (.buildkite/pipeline.yml). +# +# No `playwright install` step in either job. These tests launch Electron; no +# browser is ever downloaded. + +name: E2E + +on: + pull_request: + # `ready_for_review` is not in the default set. Without it, a PR opened as a draft + # and later marked ready never runs this workflow at all — the draft guard below + # would skip the only run it ever gets. + types: [opened, synchronize, reopened, ready_for_review] + push: + branches: [trunk] + +permissions: + contents: read + +# A new push supersedes the previous run on the same ref. +concurrency: + group: e2e-${{ github.ref }} + cancel-in-progress: true + +jobs: + journeys: + name: Journeys (${{ matrix.os }}) + if: github.event_name != 'pull_request' || github.event.pull_request.draft == false + runs-on: ${{ matrix.os }} + timeout-minutes: 20 + strategy: + fail-fast: false + matrix: + os: [macos-latest, windows-latest] + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: npm + + - run: npm ci + + # The journeys read the renderer the app actually loads, so it has to exist. + # `postinstall` builds it too; this is here so a change to that never leaves + # the suite asserting against a stale bundle. + - name: Build the renderer bundle + run: npm run build:once + + - name: Run the journeys + run: npm run test:e2e + + - name: Upload Playwright report + if: failure() + uses: actions/upload-artifact@v4 + with: + name: playwright-journeys-${{ matrix.os }} + path: | + playwright-report + test-results + retention-days: 7 + + packaged: + name: Packaged smoke (${{ matrix.os }}) + # Packaging takes several minutes per platform; don't spend it on drafts. + if: github.event_name != 'pull_request' || github.event.pull_request.draft == false + runs-on: ${{ matrix.os }} + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + os: [macos-latest, windows-latest] + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: npm + + # `postinstall` runs `electron-builder install-app-deps`, which is what + # rebuilds the native file-locking module against Electron's ABI. + - run: npm ci + + - name: Build the renderer bundle + run: npm run build:once + + - name: Package (unsigned, --dir) + # Mandatory on macOS: electron-builder signs during `--dir` otherwise. + # Harmless elsewhere. Windows signing already no-ops without the Azure + # env vars (scripts/azure-sign.cjs). + env: + CSC_IDENTITY_AUTO_DISCOVERY: 'false' + run: npm run pack:dir + + - name: Run the packaged smoke test + run: npm run test:e2e:packaged + + - name: Upload Playwright report + if: failure() + uses: actions/upload-artifact@v4 + with: + name: playwright-packaged-${{ matrix.os }} + path: | + playwright-report + test-results + retention-days: 7 diff --git a/.gitignore b/.gitignore index 6cbee22..0e17eee 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,11 @@ docs/.vitepress/cache src/renderer/index.js src/renderer/index.css +# Playwright output. Traces, screenshots and the HTML report are written per run and +# uploaded as CI artifacts on failure; none of it is worth committing. +playwright-report +test-results + # Files with potential secrets .env .codesigning/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 457c9c6..a98e5ba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -39,6 +39,41 @@ system Node, and the two versions are set independently and have drifted before both is how a drift gets caught before it ships. The matrix uses `fail-fast: false`, so a Windows failure never hides the macOS result — you always see both. +### End-to-end tests — [`.github/workflows/e2e.yml`](.github/workflows/e2e.yml) + +Two suites, both launching a real app on macOS and Windows for every pull request that is not a +draft. They answer different questions, so they are separate jobs and separate commands. + +- `npm run test:e2e` — **the journeys**. Drives the app built from the source tree through the flows + a contributor performs by hand: linking a ticket, applying and reverting a patch, moving between + ticket branches. Each test gets its own throwaway application-data directory and its own Git + fixture, so nothing it does can reach the sites you actually work on — and the harness refuses to + start at all if it ever finds the app using a different profile. Nothing here touches the network. + Seconds to run. +- `npm run test:e2e:packaged` — **the packaged smoke test**. Launches an unsigned + `electron-builder --dir` build and asks only whether packaging worked: it boots, the whole preload + bridge is exposed, and the modules that exist only if packaging succeeded do resolve. Build it + first, or the test will tell you to: + + ``` + npm run build:once && CSC_IDENTITY_AUTO_DISCOVERY=false npm run pack:dir + ``` + + That environment variable is mandatory on macOS — electron-builder signs during `--dir` without + it — and harmless everywhere else. + +Neither downloads a browser. The only thing they launch is the Electron already in the tree, so +there is no `playwright install` step anywhere. + +When one fails, the run keeps the trace, and the journeys additionally attach the screen and the +state the app had persisted at the moment it failed — the interesting half of a failure in this app +is usually on disk rather than on screen. Locally, `npx playwright show-trace test-results//trace.zip` replays it. + +`npm test` does not pick these up and never will: the unit runner only collects `test/`, and these +live in `e2e/`. Keeping them out of `npm test` is deliberate — they need a built renderer and cost +seconds each, and the unit suite has to stay something you run without thinking about it. + ## The review standard, and who reads it There is **one** source of truth for how a change is reviewed: diff --git a/e2e/helpers/app.cjs b/e2e/helpers/app.cjs new file mode 100644 index 0000000..47a996d --- /dev/null +++ b/e2e/helpers/app.cjs @@ -0,0 +1,256 @@ +'use strict'; + +// The engine the journey specs are built on: launch the app from source against a +// profile that is thrown away afterwards, drive it, and read back the state it +// actually persisted. +// +// Three things this exists to guarantee, none of which a spec should have to +// remember: +// +// 1. The app never touches the contributor's real site registry. Every launch +// goes through TOOLKIT_USER_DATA_DIR — the `!app.isPackaged` hook in +// src/main.js:137 — and `start()` refuses to launch without one. +// 2. Teardown always terminates. `close()` is known to hang on Windows in +// Electron apps that keep child processes alive, which this one does. +// 3. A failure leaves evidence. The trace is Playwright's; the screenshot and +// the persisted settings.json are attached here, because the interesting +// half of a failure in this app is what ended up on disk. +// +// The packaged smoke test does not use this: it launches a different binary and +// deliberately writes no state at all. + +const fs = require( 'node:fs' ); +const os = require( 'node:os' ); +const path = require( 'node:path' ); +const { test: base, _electron: electron } = require( '@playwright/test' ); + +const REPO_ROOT = path.join( __dirname, '..', '..' ); + +// DPR 1 and a fixed locale and timezone: selectors read the text the app renders, +// and some of that text is dates. Without these, a retina laptop and a CI runner +// disagree about what is on screen. +const ELECTRON_SWITCHES = [ '--force-device-scale-factor=1', '--lang=en-GB' ]; + +/** + * Whether two paths name the same directory. + * + * Not `path.resolve(a) === path.resolve(b)`, which is wrong on both platforms this + * app ships to and would fail the launch guard for a reason that has nothing to do + * with what it is guarding: + * + * - macOS hands back `/var/folders/...` from `os.tmpdir()` and `/private/var/...` + * from the app, because the first is a symlink to the second. + * - Windows hands back a short `RUNNER~1`-style path in some environments and the + * long one in others, and its filesystem is case-insensitive besides. + * + * `realpath` settles the first two; lowercasing settles the third, and only off + * POSIX, where two names differing in case really are two directories. + * + * @param {string} a + * @param {string} b + * @return {boolean} + */ +function samePath( a, b ) { + const real = ( p ) => { + try { + return fs.realpathSync.native( p ); + } catch { + return path.resolve( p ); + } + }; + const normalise = ( p ) => ( process.platform === 'linux' ? real( p ) : real( p ).toLowerCase() ); + return normalise( a ) === normalise( b ); +} + +const EMPTY_SETTINGS = Object.freeze( { sites: [], siteMeta: {}, preferences: {} } ); + +/** + * A session of the app under test: one throwaway profile, one app at a time. + * + * Split into `new Session()` and `start()` on purpose. A spec usually has to build + * its Git fixture *before* the app opens — the site list in settings.json has to + * name directories that already exist — and it needs to know the profile path to + * write that settings.json. So the directory exists from construction; the app + * starts when the spec says so. + */ +class Session { + constructor() { + this.userDataDir = fs.mkdtempSync( path.join( os.tmpdir(), 'wpct-e2e-profile-' ) ); + this.app = null; + this.page = null; + this.scratch = []; + } + + /** + * Registers a directory to delete once the app has stopped. + * + * Deleting it any earlier is a Windows problem waiting to happen: a test's + * fake site is open in a process that is still running, and Windows refuses + * to remove a directory something holds a handle on — so the cleanup fails + * with EPERM rather than the test failing on its own merits. Teardown here + * runs after `close()`. + * + * @param {string} dir + * @return {string} The same path, so this can wrap a mkdtemp call. + */ + track( dir ) { + this.scratch.push( dir ); + return dir; + } + + /** + * Seeds settings.json and launches the app. + * + * @param {Object} settings Initial electron-store contents. Defaults to a + * first-launch app with no sites. + * @return {Promise<{app: Object, page: Object}>} The Electron app and its first window. + */ + async start( settings = EMPTY_SETTINGS ) { + if ( this.app ) throw new Error( 'This session already has an app running; call restart() instead.' ); + this.writeSettings( settings ); + return this.#launch(); + } + + /** + * Closes the app and opens it again against the same profile, untouched. + * + * This is the only way to prove the app *persisted* something rather than + * merely holding it in memory, which is what a change to the storage layer + * can break without any test noticing. + * + * @return {Promise<{app: Object, page: Object}>} The relaunched app and its first window. + */ + async restart() { + await this.close(); + return this.#launch(); + } + + async #launch() { + this.app = await electron.launch( { + // From plain Node, require('electron') resolves to the binary's path — + // the same trick scripts/run-tests-electron.cjs and the screenshot + // harness use. + executablePath: require( 'electron' ), + args: [ ...ELECTRON_SWITCHES, REPO_ROOT ], + env: { + ...process.env, + TZ: 'UTC', + // Last, and not overridable by the ambient environment: a + // TOOLKIT_USER_DATA_DIR exported in the shell must never be able to + // point a test at a profile somebody cares about. + TOOLKIT_USER_DATA_DIR: this.userDataDir, + }, + } ); + this.page = await this.app.firstWindow(); + + // Belt and braces over the env var above. If the redirect hook ever stops + // firing — it is guarded by `!app.isPackaged` — every journey would start + // editing the contributor's real site registry, silently and permanently. + const inUse = await this.app.evaluate( ( { app } ) => app.getPath( 'userData' ) ); + if ( ! samePath( inUse, this.userDataDir ) ) { + await this.close(); + throw new Error( + `The app is using ${ inUse } as its profile, not the throwaway ${ this.userDataDir }. ` + + 'Refusing to run a test that would write to a real site registry.' + ); + } + + return { app: this.app, page: this.page }; + } + + /** + * Replaces the persisted settings wholesale. Only meaningful before a launch. + * + * @param {Object} settings + */ + writeSettings( settings ) { + fs.writeFileSync( + path.join( this.userDataDir, 'settings.json' ), + JSON.stringify( settings, null, '\t' ) + ); + } + + /** + * Reads back what the app persisted. + * + * electron-store writes on a debounce, so call this after the app has closed + * when the assertion is about persistence; mid-run it answers with whatever + * has been flushed so far. + * + * @return {Object} The parsed settings.json, or an empty object if there is none. + */ + readSettings() { + const file = path.join( this.userDataDir, 'settings.json' ); + if ( ! fs.existsSync( file ) ) return {}; + return JSON.parse( fs.readFileSync( file, 'utf8' ) ); + } + + /** + * Makes the next "choose a file" dialog answer with these paths, without a human. + * + * Stubbed at invoke time in the main process rather than built into the app: + * main.js calls `dialog.showOpenDialog` when the handler runs, so replacing the + * method afterwards is enough and nothing test-shaped ships in the app. + * + * @param {string[]} filePaths + */ + async answerFileDialog( filePaths ) { + await this.app.evaluate( ( { dialog }, paths ) => { + dialog.showOpenDialog = async () => ( { canceled: false, filePaths: paths } ); + dialog.showOpenDialogSync = () => paths; + }, filePaths ); + } + + async close() { + if ( ! this.app ) return; + const app = this.app; + this.app = null; + this.page = null; + + // Grab the handle before closing — `process()` throws once the connection + // to the app is gone. + const proc = app.process(); + await Promise.race( [ + app.close().catch( () => {} ), + new Promise( ( resolve ) => setTimeout( resolve, 5_000 ) ), + ] ); + if ( proc && proc.exitCode === null ) proc.kill(); + } + + dispose() { + for ( const dir of this.scratch.splice( 0 ) ) { + fs.rmSync( dir, { recursive: true, force: true } ); + } + fs.rmSync( this.userDataDir, { recursive: true, force: true } ); + } +} + +/** + * `test` with a `session` fixture. Import this instead of @playwright/test in a journey. + */ +const test = base.extend( { + session: async ( {}, use, testInfo ) => { + const session = new Session(); + await use( session ); + + if ( testInfo.status !== testInfo.expectedStatus && session.page ) { + // Attached before the app closes, because closing it is also how a + // hung app gets killed — and then there is nothing left to photograph. + await testInfo.attach( 'screen', { + body: await session.page.screenshot().catch( () => Buffer.alloc( 0 ) ), + contentType: 'image/png', + } ); + await testInfo.attach( 'settings.json', { + body: JSON.stringify( session.readSettings(), null, '\t' ), + contentType: 'application/json', + } ); + } + + await session.close(); + session.dispose(); + }, +} ); + +const { expect } = base; + +module.exports = { test, expect, Session, EMPTY_SETTINGS, REPO_ROOT }; diff --git a/e2e/journeys/engine.spec.js b/e2e/journeys/engine.spec.js new file mode 100644 index 0000000..501faa0 --- /dev/null +++ b/e2e/journeys/engine.spec.js @@ -0,0 +1,137 @@ +/** + * The engine's own test (#360). + * + * Not a journey: it asserts nothing about ticket branches or patches. It asserts + * that the four things every journey depends on actually work, so that when a + * journey fails it is about the flow and not about the harness. + * + * 1. The app launches from the source tree and paints. + * 2. It uses the throwaway profile, and nothing else. + * 3. What it persists survives closing and reopening it. + * 4. A native file dialog can be answered from the test. + * + * If this file is red, no other journey's result means anything. + */ + +const fs = require( 'node:fs' ); +const os = require( 'node:os' ); +const path = require( 'node:path' ); +const { test, expect } = require( '../helpers/app.cjs' ); + +// Directories made during a test, removed after it. The profile is the session +// fixture's problem; these are the fake sites and patch files pointed at from it. +// The site's name is on screen twice — the sidebar entry and the heading of the +// open site — so neither can be reached by text alone. Roles tell them apart, and +// say which half of the app the assertion is about. +const sidebarEntry = ( page, label ) => page.getByRole( 'button', { name: label, exact: true } ); +const openSiteHeading = ( page, label ) => page.getByRole( 'heading', { name: label, exact: true } ); + +const scratch = []; +test.afterEach( () => { + while ( scratch.length ) fs.rmSync( scratch.pop(), { recursive: true, force: true } ); +} ); + +/** + * A site directory the app can list without being able to read Git metadata from + * it. The renderer tolerates that — it shows the site with no snapshot date + * rather than crashing — which is enough for everything below. Journeys build a + * real repository instead. + * + * @param {Object} session The session that will list it, and clean it up. + * @param {string} label + * @return {{dir: string, settings: Object}} The directory, and settings that list it. + */ +function makeListedSite( session, label ) { + const yesterday = new Date( Date.now() - 24 * 60 * 60 * 1000 ).toISOString(); + const dir = session.track( fs.mkdtempSync( path.join( os.tmpdir(), 'wpct-e2e-site-' ) ) ); + fs.mkdirSync( path.join( dir, 'wp-content' ), { recursive: true } ); + return { + dir, + settings: { + sites: [ dir ], + siteMeta: { + [ dir ]: { + initialized: true, + createdAt: yesterday, + label, + // Relative to now, not a fixed date. The staleness dot appears + // once a snapshot is a fortnight old, and it joins the sidebar + // entry's accessible name when it does — so a hardcoded date + // would quietly change what the selectors below match, months + // after anyone touched this file. + trunkDate: yesterday, + skipInitWizard: true, + }, + }, + preferences: {}, + }, + }; +} + +test( 'the app launches from source and lists the site it was seeded with', async ( { session } ) => { + const site = makeListedSite( session, 'engine-check' ); + const { page } = await session.start( site.settings ); + + await expect( page ).toHaveTitle( 'WordPress Contributor Toolkit' ); + // #root is in the static HTML, so its presence proves nothing — its children do. + await expect( page.locator( '#root > *' ) ).not.toHaveCount( 0 ); + + // `exact`, because the sidebar heading "WordPress Core" is a substring of + // several button labels further down the page. + await expect( sidebarEntry( page, 'engine-check' ) ).toBeVisible(); + await expect( page.getByText( 'No sites yet.', { exact: true } ) ).toHaveCount( 0 ); +} ); + +test( 'the app writes to the throwaway profile and not to the real one', async ( { session } ) => { + const { app } = await session.start(); + + // The launch guard already refuses to proceed otherwise, so this is here to + // make the guarantee visible as a test rather than only as a helper's + // precondition — the whole suite is unsafe to run the day it stops holding. + const inUse = await app.evaluate( ( { app: electronApp } ) => electronApp.getPath( 'userData' ) ); + expect( path.resolve( inUse ) ).toBe( path.resolve( session.userDataDir ) ); + + // And it is genuinely this app's store: the seeded file is the one it read. + expect( session.readSettings() ).toHaveProperty( 'sites' ); +} ); + +test( 'state written by the app survives closing and reopening it', async ( { session } ) => { + const site = makeListedSite( session, 'before-restart' ); + const { page } = await session.start( site.settings ); + await expect( sidebarEntry( page, 'before-restart' ) ).toBeVisible(); + + // Renaming goes through the app's own persistence path, so this proves the + // round trip the journeys rely on: the app wrote it, the app read it back. + // Anything asserted only within one launch could be memory, not storage. + await page.evaluate( + ( [ sitePath, label ] ) => window.api.setSiteLabel( sitePath, label ), + [ site.dir, 'after-restart' ] + ); + // No assertion on the sidebar here, deliberately. The rename went straight to + // the main process, which does not push an update back to a renderer that did + // not ask for one — so the old name stays on screen until something reloads. + // That is the app's business; what this test is about is the write reaching + // disk, and the reader for that is the relaunch below. + + const { page: reopened } = await session.restart(); + await expect( sidebarEntry( reopened, 'after-restart' ) ).toBeVisible(); + await expect( openSiteHeading( reopened, 'after-restart' ) ).toBeVisible(); + expect( session.readSettings().siteMeta[ site.dir ].label ).toBe( 'after-restart' ); +} ); + +test( 'a native file dialog can be answered from the test', async ( { session } ) => { + const patchDir = session.track( fs.mkdtempSync( path.join( os.tmpdir(), 'wpct-e2e-patch-' ) ) ); + const patchFile = path.join( patchDir, 'engine.patch' ); + fs.writeFileSync( patchFile, '--- a/wp-login.php\n+++ b/wp-login.php\n' ); + + const { page } = await session.start(); + await session.answerFileDialog( [ patchFile ] ); + + // Straight through the app's real handler, which opens the dialog, reads the + // file and returns its text — so this covers the whole path a journey uses to + // bring a patch in, not just that the stub was installed. + const chosen = await page.evaluate( () => window.api.choosePatchFile() ); + expect( chosen.filePath ).toBe( patchFile ); + expect( chosen.name ).toBe( 'engine.patch' ); + expect( chosen.text ).toContain( 'wp-login.php' ); +} ); diff --git a/e2e/packaged/smoke.spec.js b/e2e/packaged/smoke.spec.js new file mode 100644 index 0000000..50c8e08 --- /dev/null +++ b/e2e/packaged/smoke.spec.js @@ -0,0 +1,234 @@ +/** + * Smoke test for the packaged app. + * + * Runs against an unsigned `electron-builder --dir` build, not the source tree. + * The failures it exists to catch — asar layout, native module rebuilds, bundled + * CLI resolution — do not reproduce under `npm start`. + * + * Build it first (see docs/testing.md): + * npm run build:once && CSC_IDENTITY_AUTO_DISCOVERY=false npm run pack:dir + * + * It writes no state, so it deliberately does not use the session helper the + * journeys are built on: there is no profile to seed and nothing to read back. + */ + +const fs = require( 'node:fs' ); +const path = require( 'node:path' ); +const { test, expect, _electron: electron } = require( '@playwright/test' ); + +const REPO_ROOT = path.join( __dirname, '..', '..' ); +const DIST = path.join( REPO_ROOT, 'dist' ); + +/** + * Every key exposed through `contextBridge` in src/preload.js. + * + * This repo has no typecheck, so nothing else catches an `ipcMain.handle` added + * in src/main.js and never bridged to the renderer. Adding an API means adding it + * here too — that is the point, the list is meant to be edited deliberately. + * + * Do not try to derive it by reading src/preload.js. Two of these keys + * (`signInToGithub`, `cancelGithubSignIn`) are spread in from an immediately + * invoked function that closes over a listener, so they exist only once the file + * has run. Anything that greps for the object's literal keys silently misses + * them — which is the same class of gap this assertion exists to close, one + * level up. + */ +const EXPECTED_API_KEYS = [ + 'addSite', + 'applyPatch', + 'cancelGithubSignIn', + 'chooseDirectory', + 'choosePatchFile', + 'clearEmails', + 'clearWpDebug', + 'createPatchWindow', + 'deleteBranch', + 'deleteSite', + 'discardChanges', + 'discardToBase', + 'fetchPrDiff', + 'fetchTracAttachment', + 'getEmails', + 'getGithubAccount', + 'getPatch', + 'getProvenance', + 'getSiteStatus', + 'getSites', + 'getSitesWithMeta', + 'hasUnsubmittedWork', + 'isWorktreeDirty', + 'listBranches', + 'listEditors', + 'listTicketPatches', + 'listTracAttachments', + 'markSiteInitialized', + 'markUpdateComplete', + 'npmKill', + 'onNewEmail', + 'onSmtpStarted', + 'openExternal', + 'openInEditor', + 'openPullRequest', + 'platform', + 'playgroundWebAvailable', + 'previewPatch', + 'revealWpDebug', + 'runNpmInstall', + 'runNpmScript', + 'savePatch', + 'setContributionEvent', + 'setSiteLabel', + 'setSiteTicket', + 'setSkipInitWizard', + 'setWporgHandle', + 'setupWordPress', + 'showSiteInFileManager', + 'signInToGithub', + 'signOutOfGithub', + 'startPlaygroundWeb', + 'startServer', + 'startSmtp', + 'startWpDebug', + 'stopPlaygroundWeb', + 'stopServer', + 'stopSmtp', + 'stopWpDebug', + 'subscribeCarriedWork', + 'subscribePullRequestProgress', + 'subscribeSetupProgress', + 'subscribeSetupStatus', + 'subscribeSwitchProgress', + 'switchBranch', + 'updateTrunk', +]; + +/** + * Modules the app resolves at runtime that only exist if packaging worked. + * + * `fs-ext-extra-prebuilt` is the interesting one. It is a native module that the + * bundled PHP runtime requires for file locking, it ships prebuilt binaries, and + * it is listed in `allowScripts` because it still runs an install script to pick + * one. A binary that is missing or built against the wrong ABI surfaces here and + * nowhere else: `npm ci` exits 0 and packaging succeeds regardless. + * + * Asserted on both platforms, deliberately. An earlier draft of this test + * excluded Windows on the grounds that the Playground CLI guarded the import + * with a `win32` check — that guard is gone, the dependency is no longer + * optional, and the runtime now carries a Windows-specific file-lock path that + * requires it. Excluding Windows today would skip the one failure this + * assertion exists to catch, on the platform where it is most likely. + */ +const REQUIRED_MODULES = [ '@wp-playground/cli', 'fs-ext-extra-prebuilt' ]; + +/** + * electron-builder names the output directory after the platform *and* arch, so + * the path differs between a CI runner and a contributor's laptop: + * macos-latest is arm64 (`dist/mac-arm64`), an Intel Mac is `dist/mac`. + */ +function findPackagedBinary() { + if ( ! fs.existsSync( DIST ) ) { + throw new Error( `No ${ DIST } directory. Run \`npm run pack:dir\` first — see docs/testing.md.` ); + } + + if ( process.platform === 'darwin' ) { + const macDirs = fs.readdirSync( DIST ).filter( ( d ) => d === 'mac' || d.startsWith( 'mac-' ) ); + for ( const dir of macDirs ) { + const appDir = path.join( DIST, dir ); + const app = fs.readdirSync( appDir ).find( ( d ) => d.endsWith( '.app' ) ); + if ( ! app ) continue; + const macOsDir = path.join( appDir, app, 'Contents', 'MacOS' ); + const [ binary ] = fs.readdirSync( macOsDir ); + if ( binary ) return path.join( macOsDir, binary ); + } + throw new Error( `No packaged .app under ${ DIST }. Looked in: ${ macDirs.join( ', ' ) || '(nothing)' }` ); + } + + if ( process.platform === 'win32' ) { + const unpacked = path.join( DIST, 'win-unpacked' ); + if ( ! fs.existsSync( unpacked ) ) { + throw new Error( `No ${ unpacked }. Run \`npm run pack:dir\` first — see docs/testing.md.` ); + } + const exe = fs.readdirSync( unpacked ).find( ( f ) => f.endsWith( '.exe' ) ); + if ( ! exe ) throw new Error( `No .exe in ${ unpacked }.` ); + return path.join( unpacked, exe ); + } + + throw new Error( `This smoke test only covers macOS and Windows, not ${ process.platform }.` ); +} + +let electronApp; +let firstWindow; + +test.beforeAll( async () => { + electronApp = await electron.launch( { executablePath: findPackagedBinary() } ); + firstWindow = await electronApp.firstWindow(); +} ); + +test.afterAll( async () => { + if ( ! electronApp ) return; + + // Grab the handle before closing — `process()` throws once the connection to + // the app is gone. + const proc = electronApp.process(); + + // `close()` is known to hang on Windows when the app keeps child processes + // alive, which this one does. Never let teardown wedge the run. + await Promise.race( [ + electronApp.close().catch( () => {} ), + new Promise( ( resolve ) => setTimeout( resolve, 5_000 ) ), + ] ); + + if ( proc && proc.exitCode === null ) proc.kill(); +} ); + +test( 'the packaged app boots and paints its first window', async () => { + // Deliberately not asserting "no uncaught renderer errors": index.html installs + // its own error handlers, and a `pageerror` listener attaches too late to be + // reliable. A painted window covers the same failure class positively. + await expect( firstWindow ).toHaveTitle( 'WordPress Contributor Toolkit' ); + + // #root is in the static HTML, so its presence proves nothing — its children do. + await expect( firstWindow.locator( '#root > *' ) ).not.toHaveCount( 0 ); + // `exact` matters: "WordPress Core" is also a substring of button labels and + // step descriptions further down the page. + await expect( firstWindow.getByText( 'WordPress Core', { exact: true } ) ).toBeVisible(); +} ); + +test( 'the preload bridge exposes every expected key', async () => { + const exposed = await firstWindow.evaluate( () => + ( window.api ? Object.keys( window.api ) : [] ).sort() + ); + + expect( exposed ).toEqual( EXPECTED_API_KEYS ); +} ); + +for ( const moduleName of REQUIRED_MODULES ) { + test( `the packaged app can resolve ${ moduleName }`, async () => { + const resolved = await electronApp.evaluate( ( { app }, name ) => { + // The `require` in scope here carries no `.resolve` — only a per-module + // require wrapper does. Build one anchored at the app's own package.json, + // inside app.asar, so resolution happens exactly where src/main.js would + // do it. + // + // Anchored there rather than at `process.mainModule.filename`, which is + // what an earlier draft used: Electron does not keep that pointed at the + // entry script, and partway through a run it reads back as the bare + // string 'electron'. The test then fails on the *first* module it checks + // and passes when run alone — a packaging test going red for a reason + // that has nothing to do with packaging, which is the worst kind. + const nodeRequire = process.mainModule ? process.mainModule.require : require; + const { createRequire } = nodeRequire( 'module' ); + const { join } = nodeRequire( 'path' ); + const req = createRequire( join( app.getAppPath(), 'package.json' ) ); + try { + return { ok: true, path: req.resolve( name ), appPath: app.getAppPath() }; + } catch ( error ) { + return { ok: false, error: String( error && error.message ), appPath: app.getAppPath() }; + } + }, moduleName ); + + expect( resolved, `${ moduleName } failed to resolve from ${ resolved.appPath }: ${ resolved.error }` ) + .toHaveProperty( 'ok', true ); + expect( resolved.path ).toBeTruthy(); + } ); +} diff --git a/eslint.config.mjs b/eslint.config.mjs index d86d1e7..7184bec 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -99,6 +99,21 @@ export default [ }, }, + { + // End-to-end suite. Playwright's fixture API is `async ({ deps }, use) => {}` + // — the test framework calls `use()` to hand the fixture to the test and + // resumes afterwards for teardown. The React hooks rule sees a bare `use(...)` + // and reads it as React's `use` hook called outside a component. There is no + // React in this directory at all; the app under test is a separate process. + files: [ 'e2e/**/*.{js,cjs,mjs}' ], + languageOptions: { + globals: { ...globals.node }, + }, + rules: { + 'react-hooks/rules-of-hooks': 'off', + }, + }, + { // Files whose stdout *is* their interface, so `no-console` is simply wrong // there. The runners are spawned as child processes (process.execPath + diff --git a/package-lock.json b/package-lock.json index 9e15ff3..f2b47b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "xterm": "^5.3.0" }, "devDependencies": { + "@playwright/test": "^1.62.1", "@wordpress/eslint-plugin": "^25.7.0", "concurrently": "^8.2.2", "electron": "^43.2.0", @@ -4226,6 +4227,22 @@ "url": "https://opencollective.com/pkgr" } }, + "node_modules/@playwright/test": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.1.tgz", + "integrity": "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.62.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -10039,6 +10056,21 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -15200,6 +15232,25 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/playwright": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.62.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, "node_modules/playwright-core": { "version": "1.62.1", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", diff --git a/package.json b/package.json index 322b3de..1b5e914 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,11 @@ "dist:win": "npm run build:once && electron-builder --win --publish never", "dist:win:arm64": "npm run build:once && electron-builder --win --arm64 --publish never", "dist": "npm run build:once && electron-builder --publish never", + "pack:dir": "electron-builder --dir --publish never", "test": "node --test", "test:electron": "node scripts/run-tests-electron.cjs", + "test:e2e": "playwright test --project=journeys", + "test:e2e:packaged": "playwright test --project=packaged", "lint": "eslint .", "lint:fix": "eslint . --fix", "shots": "npm run build:once && node scripts/screenshots/capture.cjs", @@ -94,6 +97,7 @@ "xterm": "^5.3.0" }, "devDependencies": { + "@playwright/test": "^1.62.1", "@wordpress/eslint-plugin": "^25.7.0", "concurrently": "^8.2.2", "electron": "^43.2.0", diff --git a/playwright.config.js b/playwright.config.js new file mode 100644 index 0000000..6a35202 --- /dev/null +++ b/playwright.config.js @@ -0,0 +1,45 @@ +const { defineConfig } = require('@playwright/test'); + +// Electron only — no browsers are downloaded or launched, so there is no +// `projects` entry for a browser and no `npx playwright install` step anywhere. +// +// Two projects, because there are two different apps under test: +// +// journeys drives the *source tree* through the flows a contributor performs by +// hand — link a ticket, apply a patch, switch branches. Fast, offline, +// and it writes real state to a throwaway profile. +// packaged launches the *packaged artifact* (`electron-builder --dir`) and only +// asks whether packaging worked. It writes no state. +// +// They are not interchangeable: the journeys mutate real Git repositories and need +// to be quick enough to run in a loop, and the packaging failures — asar layout, +// native module rebuilds, bundled CLI resolution — do not reproduce from source. +module.exports = defineConfig({ + testDir: 'e2e', + // Launching Electron is not safe to parallelise: workers would race over the + // same packaged binary and, in the journeys, over the same fixture roots. + workers: 1, + fullyParallel: false, + // Locally a retry hides a flake you want to see; in CI it stops one flake from + // blocking somebody else's pull request. + retries: process.env.CI ? 1 : 0, + timeout: 60_000, + expect: { timeout: 15_000 }, + reporter: process.env.CI ? [ [ 'list' ], [ 'html', { open: 'never' } ] ] : 'list', + use: { + trace: 'retain-on-failure', + }, + projects: [ + { + name: 'journeys', + testDir: 'e2e/journeys', + }, + { + name: 'packaged', + testDir: 'e2e/packaged', + // Cold-starting a packaged app on a Windows runner is slow enough to + // trip the default on its own, before any assertion runs. + timeout: 120_000, + }, + ], +}); From ade2f445a91ca7273fc50a520469c3b27086a758 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 19 Aug 2026 14:58:47 +0200 Subject: [PATCH 40/53] Cover ticket branches end to end, through the app (#363) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Stacked on #362.** Review that one first; this diff is only the three files under `e2e/` that this PR adds. ## Why #362 built an engine and proved it works. This is the first thing it was built for: the ticket-branch flow, driven through the app rather than through a module. That flow is what a contributor spends a Contributor Day inside — link a ticket, edit a file, realise it belongs to another ticket, come back later — and it is the flow #350 moves wholesale. Today it is verified by a person following a **How to test this** section. After this, it is verified on macOS and Windows on every pull request. It is also the flow whose failures are silent. Work that is not restored produces no error; the app shows a clean tree and the contributor discovers the loss when a reviewer asks where the change went. ## What changes Four journeys, and one addition to the engine. - **Linking a ticket** creates its branch, checks it out, and leaves the gitignored substrate alone. - **Unlinking parks the work**, and the next ticket starts from trunk with none of the first one's edits. - **Switching back restores the work byte for byte** — the edit *and* the deletion. An edit that returns while a deletion does not is a half-restored tree, which is worse than an obvious failure. - **Deleting a ticket's work** removes that branch and only that branch, after asking. **Every assertion is marked `INVARIANT` or `CHARACTERISATION`,** and that is the point of the file rather than decoration. An invariant must hold under any model of how work is stored; a characterisation is true because of how the app stores things today. During #350, a red invariant is a bug and a red characterisation is a prompt to read it, decide whether the new model is what you meant, and update it on purpose. Without the distinction every failure looks the same, and the suite becomes noise at exactly the moment it is supposed to be useful. **Two things the app does turned out not to match how the flow reads from the outside.** The tests follow the app: - Linking a second ticket means unlinking the first. Once a ticket is linked, its card shows that ticket's pull requests and attachments and the ticket-number field is not on screen at all. Unlinking is not throwing the ticket away — it parks the work on its branch and returns the checkout to trunk — but it is a step, and a test that skipped it would exercise a path no contributor can take. - A ticket cannot be deleted while it is the linked one, because the list of a site's tickets deliberately leaves out the current one. So the `wasActive` branch in the delete handler — the one that returns the checkout to trunk and clears the link — appears to be unreachable from the interface. Left alone here; noting it because it is the kind of thing worth knowing before #350 rewrites around it. **The engine grows one thing: answering `window.confirm`.** Electron implements the JavaScript dialogs natively and blocks the renderer on them, so Playwright's `dialog` event never arrives — a test relying on it clicks "Delete this ticket's work" and watches nothing happen. Replacing `window.confirm` in the page works, and counting the calls lets a test assert that the app *asked* before it deleted anything. **Deliberately not in this PR:** applying and reverting patches, and what survives a restart. Those are the next two in the stack. ## How to test this Platforms: **any**. Windows is covered by CI, which is where the interesting half is. **Starting state:** this branch, `npm ci` done, `npm run build:once` run once. 1. `npm run test:e2e` - Expected: 8 passed in under ten seconds — the four from #362 and the four here. Electron windows open and close as it goes. 2. Watch one of them rather than trusting the count: `npx playwright test --project=journeys -g "switching back" --headed` - Expected: the app opens, a ticket is linked, another, and the panel switches back. Nothing is typed by a human. 3. Break an invariant on purpose. In `e2e/journeys/ticket-branches.spec.js`, change `expect( read( site.dir, 'wp-login.php' ) ).toBe( MY_EDIT )` to any other string, then rerun. - Expected: "switching back to a ticket restores its work byte for byte" goes red on that line. Put it back. 4. Break the substrate on purpose. In `e2e/helpers/git-site.cjs`, delete the line that writes `SUBSTRATE_CONTENT`, then rerun. - Expected: every ticket-branch journey goes red. Put it back. This is the assertion that stands in for "a switch did not silently wipe `node_modules`". 5. `npm test` and `npm run lint`. - Expected: 1027 passed, and clean. **What must not have happened:** - **Your real settings file must not have been touched** — the guard from #362 covers this, and it is worth confirming once more now that the journeys write far more state than the engine test did. - **No leftover directories.** Each journey builds a real repository under the system temp directory and removes it after the app stops. After a run, nothing matching `wpct-e2e-*` should remain. - **No Electron processes still running.** ## Risks and limitations - **Linking a ticket reaches the network, twice.** The app starts a GitHub lookup for the ticket's pull requests, and — because the ticket was linked by hand rather than restored on mount — it also auto-reads the ticket's own facts from Trac (#292). Nothing here asserts on either, and no journey waits for them, so an offline or rate-limited runner does not fail these tests. But both calls happen, and on a machine where Trac's human-check appears a window may open. An earlier version of this section said Trac is only read on request; that is true on mount and re-activation, and not true of a hand-linked ticket, which is what every journey here does. - **Selectors read the visible copy.** Renaming "Link ticket" or "Delete this ticket's work" breaks these tests. That is deliberate — it makes the copy a contract — but it is a maintenance cost, and worth saying out loud rather than discovering in a rename. - **Timing is waited for, never slept through.** Every step waits on something the app renders or on the state of the repository on disk. There is no `waitForTimeout` in the journeys, because a sleep tuned on a laptop is a flake on a Windows runner. - The row for a ticket is addressed by the ticket it names, not by position: the list is ordered by how recently each ticket was used, so `.first()` picks a different branch depending on how far the render has got. That cost a wrong-branch deletion during development, which is why it is called out in a comment in the file. ## Related Part of #359 and #361. Stacked on #362, which closes #360. ---
Design decisions and alternatives considered **A real repository per test, built from scratch.** These are Git operations; a stub would only prove the app can talk to a stub. The fixture mirrors the one the integration suite already uses one level down — same trunk branch, same three tracked files, same gitignored `node_modules` — so the two levels describe the same site and a failure at one level can be read against the other. **Nothing is shared between tests.** Each builds its own repository and its own profile, so no journey can be affected by the order it runs in. It costs about a second per test, which is the right trade at this size. **Assertions read the repository, not the app.** Whether a branch exists is asked of `isomorphic-git` against the directory on disk, not of the app that just claimed to have made it. An assertion that asks the app to confirm its own work is the "mocking the thing under test" shape from the review standard, one level up. **Marking assertions rather than splitting the files.** An alternative was two files per flow, invariants in one and characterisations in the other. Rejected because the reason a characterisation exists is the invariant next to it — reading "the applied patch is a record in the store" is only useful beside "the contributor's edit comes back". Splitting them would put the two halves of one argument in different files.
Review outcome (required — see AGENTS.md) `0 [fix here] · 1 [follow-up]`. **🔵 architecture · `[follow-up]` — not this PR's to fix.** The `wasActive` branch of `branches:delete` in `src/main.js` returns the checkout to trunk and clears the link when the deleted ticket is the current one. The panel excludes the current ticket from the list it offers delete controls for, so that branch appears unreachable from the interface. Not touched here; worth confirming before #350 rewrites around it. No findings in architecture (nothing under `src/` changes), security, performance, or cross-platform. The two cross-platform traps in this diff — path comparison and deleting directories the app still holds open — were fixed in #362 and are reused here rather than re-solved. **Tests:** every invariant in this PR was verified by mutating it and confirming the test goes red. Seven mutations, seven reds: | Mutated assertion | Result | | --- | --- | | the store records the linked ticket | red | | the second ticket is the one checked out | red | | the edit comes back on switch | red | | the deletion comes back on switch | red | | delete leaves the other ticket alone | red | | delete asked for confirmation | red | | the substrate survives a switch | red | **Same caveat as #362:** this pass ran in the session that wrote the code, not in fresh context as the standard asks for.
Co-authored-by: Claude Opus 5 --- e2e/helpers/app.cjs | 28 ++++ e2e/helpers/git-site.cjs | 149 ++++++++++++++++++ e2e/journeys/ticket-branches.spec.js | 217 +++++++++++++++++++++++++++ 3 files changed, 394 insertions(+) create mode 100644 e2e/helpers/git-site.cjs create mode 100644 e2e/journeys/ticket-branches.spec.js diff --git a/e2e/helpers/app.cjs b/e2e/helpers/app.cjs index 47a996d..1521533 100644 --- a/e2e/helpers/app.cjs +++ b/e2e/helpers/app.cjs @@ -201,6 +201,34 @@ class Session { }, filePaths ); } + /** + * Answers yes to every `window.confirm` the app raises, for the life of this + * window. Returns the number of prompts answered so far, so a test can assert + * that a destructive action did ask before doing anything. + * + * Replaces `window.confirm` in the page rather than handling Playwright's + * `dialog` event. Electron implements the JavaScript dialogs natively and + * blocks the renderer on them, so the `dialog` event a browser would emit + * does not arrive — a test relying on it clicks "Delete this ticket's work", + * watches nothing happen, and fails on an assertion that had nothing to do + * with the bug. (Confirmed the hard way; the listener is kept alongside for + * anything that does surface as a real dialog.) + * + * @return {Promise<() => Promise>} Reads back how many confirmations + * have been answered. + */ + async acceptConfirms() { + this.page.on( 'dialog', ( dialog ) => dialog.accept() ); + await this.page.evaluate( () => { + window.__e2eConfirmCount = 0; + window.confirm = () => { + window.__e2eConfirmCount += 1; + return true; + }; + } ); + return () => this.page.evaluate( () => window.__e2eConfirmCount ); + } + async close() { if ( ! this.app ) return; const app = this.app; diff --git a/e2e/helpers/git-site.cjs b/e2e/helpers/git-site.cjs new file mode 100644 index 0000000..ed106f1 --- /dev/null +++ b/e2e/helpers/git-site.cjs @@ -0,0 +1,149 @@ +'use strict'; + +// A site the app will treat as a finished, working checkout — built as a real Git +// repository on disk, because the flows these journeys cover are Git operations +// and a stub would only prove the app can talk to a stub. +// +// The shape mirrors the fixture the integration suite uses +// (test/ticket-branches.integration.test.cjs), one level up: same trunk branch, +// same three tracked files, and the same gitignored `node_modules` standing in for +// the expensive substrate. That substrate is the point of half these assertions — +// reinstalling it costs a contributor minutes, so a ticket switch that quietly +// removes it is a regression the app would never report. +// +// Small enough that every test builds its own from scratch: nothing here is shared +// between tests, so no journey can be affected by the order it runs in. + +const fs = require( 'node:fs' ); +const os = require( 'node:os' ); +const path = require( 'node:path' ); +const git = require( 'isomorphic-git' ); + +const TRUNK = 'trunk'; +const AUTHOR = { name: 'e2e', email: 'e2e@example.test' }; + +/** + * The substrate: gitignored, expensive to rebuild, and must survive everything. + * A journey asserts on this file's contents, not merely on the directory existing, + * so a checkout that deletes and recreates it still counts as a loss. + */ +const SUBSTRATE = path.join( 'node_modules', 'react', 'index.js' ); +const SUBSTRATE_CONTENT = 'expensive to reinstall\n'; + +const TRUNK_FILES = { + '.gitignore': 'node_modules/\nbuild/\n', + 'wp-login.php': '} + */ +async function makeSite( session, { label = 'e2e-site' } = {} ) { + const dir = session.track( fs.mkdtempSync( path.join( os.tmpdir(), 'wpct-e2e-site-' ) ) ); + + await git.init( { fs, dir, defaultBranch: TRUNK } ); + for ( const [ file, content ] of Object.entries( TRUNK_FILES ) ) { + fs.writeFileSync( path.join( dir, file ), content ); + } + await git.add( { fs, dir, filepath: Object.keys( TRUNK_FILES ) } ); + const baseOid = await git.commit( { fs, dir, message: 'trunk', author: AUTHOR } ); + + fs.mkdirSync( path.join( dir, 'node_modules', 'react' ), { recursive: true } ); + fs.writeFileSync( path.join( dir, SUBSTRATE ), SUBSTRATE_CONTENT ); + + // What `site:status` reads to decide the site is installed and built, so the + // app opens the working views instead of the setup wizard. The directory is + // what is checked, not its contents. + fs.mkdirSync( path.join( dir, 'build', 'wp-includes', 'js', 'dist' ), { recursive: true } ); + + return { dir, baseOid, settings: settingsFor( dir, label ) }; +} + +/** + * The store contents that make the app open on this site with nothing in the way. + * + * Dates are relative to now rather than fixed: the staleness dot appears once a + * snapshot is a fortnight old and joins the sidebar entry's accessible name when + * it does, so a hardcoded date would quietly change what the selectors match, + * months after anyone last read this file. + * + * @param {string} dir + * @param {string} label + * @return {Object} + */ +function settingsFor( dir, label ) { + const yesterday = new Date( Date.now() - 24 * 60 * 60 * 1000 ).toISOString(); + return { + sites: [ dir ], + siteMeta: { + [ dir ]: { + initialized: true, + createdAt: yesterday, + label, + trunkDate: yesterday, + skipInitWizard: true, + }, + }, + preferences: {}, + }; +} + +/** + * @param {string} dir + * @param {string} file + * @return {string} + */ +const read = ( dir, file ) => fs.readFileSync( path.join( dir, file ), 'utf8' ); + +/** + * @param {string} dir + * @param {string} file + * @return {boolean} + */ +const exists = ( dir, file ) => fs.existsSync( path.join( dir, file ) ); + +/** + * @param {string} dir + * @param {string} file + * @param {string} content + */ +const write = ( dir, file, content ) => fs.writeFileSync( path.join( dir, file ), content ); + +/** + * The branches that exist in the repository, read from disk rather than from the + * app — so an assertion about a branch is about Git, not about what the app + * believes. + * + * @param {string} dir + * @return {Promise} + */ +const branches = ( dir ) => git.listBranches( { fs, dir } ); + +/** + * @param {string} dir + * @return {Promise} + */ +const currentBranch = ( dir ) => git.currentBranch( { fs, dir, fullname: false } ); + +module.exports = { + makeSite, + settingsFor, + read, + write, + exists, + branches, + currentBranch, + TRUNK, + SUBSTRATE, + SUBSTRATE_CONTENT, +}; diff --git a/e2e/journeys/ticket-branches.spec.js b/e2e/journeys/ticket-branches.spec.js new file mode 100644 index 0000000..44e55eb --- /dev/null +++ b/e2e/journeys/ticket-branches.spec.js @@ -0,0 +1,217 @@ +/** + * Ticket branches, driven through the app (#361). + * + * The flow a contributor performs by hand at a Contributor Day: link a ticket, + * edit something, link a second ticket, come back to the first. It is the flow + * #350 moves wholesale, and the one whose failures are silent — the app does not + * report work it quietly failed to restore. + * + * Assertions are marked as one of two kinds, and the distinction is the point of + * the file: + * + * INVARIANT must hold under any model of how the app stores work. If one + * of these goes red during #350, something is broken. + * CHARACTERISATION true because of how the app stores things today. If one of + * these goes red during #350, read it, decide whether the new + * model is what you meant, and update it deliberately. + * + * Nothing here asserts on the ticket's Trac or pull-request panels. Linking a + * ticket does start a GitHub lookup for its pull requests, so the app really + * does reach the network at that moment — but an assertion that depends on a + * third party being reachable is a flake waiting for a Monday morning, and none + * of these need one. Trac itself is only read when the contributor asks for it. + */ + +const fs = require( 'node:fs' ); +const path = require( 'node:path' ); +const { test, expect } = require( '../helpers/app.cjs' ); +const { + makeSite, + read, + write, + exists, + branches, + currentBranch, + TRUNK, + SUBSTRATE, + SUBSTRATE_CONTENT, +} = require( '../helpers/git-site.cjs' ); + +const MY_EDIT = ' fs.unlinkSync( path.join( dir, file ) ); + +/** + * The panel row for one ticket, in the list of a site's tickets. + * + * Addressed by the ticket it offers to continue rather than by position. Every + * row carries an identically labelled delete control, and the list is ordered by + * how recently each ticket was used — so `.first()` picks whichever ticket the + * app most recently touched, which is a different one depending on how far the + * render has got. That is a test that deletes the wrong branch and then fails + * somewhere else entirely. + * + * @param {Object} page + * @param {string} ticket + * @return {Object} The row locator. + */ +const ticketRow = ( page, ticket ) => + page + .locator( 'div' ) + .filter( { has: page.getByRole( 'button', { name: `Continue working on #${ ticket }`, exact: true } ) } ) + .filter( { has: page.getByRole( 'button', { name: "Delete this ticket's work", exact: true } ) } ) + .last(); + +/** + * Links a ticket through the panel, the way a contributor does. + * + * Unlinks first when something is already linked, because that is the only route + * the app offers: once a ticket is linked its card shows that ticket's pull + * requests and attachments, and the "Trac ticket number or URL" field is not on + * screen at all. Unlinking is not throwing the ticket away — it parks the work + * on its branch and returns the checkout to trunk — but it is a step, and a test + * that skipped it would be testing a path no contributor can take. + * + * @param {Object} page + * @param {string} ticket + */ +async function linkTicket( page, ticket ) { + const unlink = page.getByRole( 'button', { name: 'Unlink', exact: true } ); + if ( await unlink.isVisible().catch( () => false ) ) { + await unlink.click(); + await expect( page.getByLabel( 'Trac ticket number or URL' ).first() ).toBeVisible(); + } + await page.getByLabel( 'Trac ticket number or URL' ).first().fill( ticket ); + await page.getByRole( 'button', { name: 'Link ticket', exact: true } ).first().click(); + // The ticket number rendered as the panel's subject is the app saying it + // finished. Waiting on it rather than on a timeout is what keeps this honest + // on a Windows runner, where the checkout takes noticeably longer. + await expect( page.getByText( `#${ ticket }`, { exact: true } ).first() ).toBeVisible( { timeout: 30_000 } ); +} + +test( 'linking a ticket creates its branch and leaves trunk alone', async ( { session } ) => { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + + await linkTicket( page, '60001' ); + + // INVARIANT — the ticket is a branch in the repository, and it is the one + // checked out. Whatever the app records about it is secondary to this. + expect( await branches( site.dir ) ).toContain( 'ticket/60001' ); + expect( await currentBranch( site.dir ) ).toBe( 'ticket/60001' ); + + // INVARIANT — the substrate survives. Reinstalling it costs a contributor + // minutes, and nothing in the app would report that it had gone. + expect( read( site.dir, SUBSTRATE ) ).toBe( SUBSTRATE_CONTENT ); + + // CHARACTERISATION — the linked ticket and the branch it maps to are held in + // the store, per site. + const meta = session.readSettings().siteMeta[ site.dir ]; + expect( meta.tracTicket ).toBe( 60001 ); + expect( meta.currentBranch ).toBe( 'ticket/60001' ); +} ); + +test( 'unlinking parks a ticket, and the next one starts from trunk', async ( { session } ) => { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + + await linkTicket( page, '60001' ); + write( site.dir, 'wp-login.php', MY_EDIT ); + + await linkTicket( page, '60002' ); + + // INVARIANT — the second ticket starts from trunk. Seeing the first ticket's + // edit here would mean two tickets' work ending up in one patch, which is + // the failure a contributor discovers only when a reviewer asks about it. + expect( read( site.dir, 'wp-login.php' ) ).toBe( ' { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + + await linkTicket( page, '60001' ); + write( site.dir, 'wp-login.php', MY_EDIT ); + // A deletion too: an edit that comes back while a deletion does not is a + // partially restored tree, which is worse than an obvious failure. + remove( site.dir, 'doomed.php' ); + + await linkTicket( page, '60002' ); + expect( exists( site.dir, 'doomed.php' ) ).toBe( true ); + + // Back to the first ticket, through the row the panel offers for it. + await page.getByRole( 'button', { name: 'switch', exact: true } ).click(); + await expect + .poll( () => currentBranch( site.dir ), { timeout: 20_000 } ) + .toBe( 'ticket/60001' ); + + // INVARIANT — both halves of the work return: the edit and the deletion. + expect( read( site.dir, 'wp-login.php' ) ).toBe( MY_EDIT ); + expect( exists( site.dir, 'doomed.php' ) ).toBe( false ); + expect( read( site.dir, SUBSTRATE ) ).toBe( SUBSTRATE_CONTENT ); +} ); + +test( "deleting a ticket's work removes only that ticket", async ( { session } ) => { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + const confirmsAnswered = await session.acceptConfirms(); + + await linkTicket( page, '60001' ); + write( site.dir, 'wp-login.php', MY_EDIT ); + await linkTicket( page, '60002' ); + + // Unlink first: the list of a site's tickets deliberately leaves out the one + // currently linked — its card is the panel above — so the delete control for + // a ticket only exists once you are not on it. A contributor deleting the + // ticket they are working on takes this same route. + await page.getByRole( 'button', { name: 'Unlink', exact: true } ).click(); + + const row = ticketRow( page, '60002' ); + await expect( row ).toBeVisible(); + await row.getByRole( 'button', { name: "Delete this ticket's work", exact: true } ).click(); + + await expect + .poll( () => branches( site.dir ), { timeout: 30_000 } ) + .not.toContain( 'ticket/60002' ); + + // INVARIANT — it deletes only what was asked for. The other ticket's work is + // untouched, the checkout is on trunk, and the substrate is still there. + expect( await branches( site.dir ) ).toContain( 'ticket/60001' ); + expect( await currentBranch( site.dir ) ).toBe( TRUNK ); + expect( read( site.dir, SUBSTRATE ) ).toBe( SUBSTRATE_CONTENT ); + + // INVARIANT — and the deleted ticket is gone from the panel, not merely from + // the repository. A row still offering to continue work that no longer + // exists is a dead end. + await expect( + page.getByRole( 'button', { name: 'Continue working on #60002', exact: true } ) + ).toHaveCount( 0 ); + await expect( + page.getByRole( 'button', { name: 'Continue working on #60001', exact: true } ) + ).toBeVisible(); + + // INVARIANT — it asked first. A destructive action that skips the + // confirmation is a bug even when it deletes the right thing. + expect( await confirmsAnswered() ).toBe( 1 ); + + // CHARACTERISATION — the store drops the branch's record with it, and keeps + // the other one, including the base commit its patch is measured against. + const meta = session.readSettings().siteMeta[ site.dir ]; + expect( Object.keys( meta.branches ) ).toEqual( [ 'ticket/60001' ] ); + expect( meta.branches[ 'ticket/60001' ].baseOid ).toBe( site.baseOid ); +} ); From 094a1e64fb8ecc1b288ae52bafb4d87ea4ebb461 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 19 Aug 2026 15:00:26 +0200 Subject: [PATCH 41/53] Move the testing detail out of CONTRIBUTING.md into TESTING.md (#365) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Stacked on #363.** Review that one first; this diff is `TESTING.md`, plus a much shorter testing section in `CONTRIBUTING.md`. ## Why CONTRIBUTING.md is the map of this project's guardrails. Testing had grown to half of it — 134 of 271 lines describing five layers, two containers and a constraint in the packaged app — so a contributor arriving to ask "what will fail on my PR" had to read all of that first. The detail is worth having. It just is not what belongs on that page. The need for it surfaced in a plain question there was no good answer to: *shouldn't the unit tests cover the code, and the end-to-end tests cover the artifact built from it?* It is the natural reading, and answering it properly needs the whole map — which lived in nobody's head but the person who had just built the last two layers. ## What changes **New `TESTING.md`** — the canonical description of the suite: - **What to run.** Three commands at the top, then the two you need less often, then how to run a single file or a single journey. - **The five layers**, cheapest first, each leading with **what it is blind to** — the fact that actually sends a test one layer up or down. Unit, integration against real Git repositories, IPC wiring with a stubbed Electron, journeys through the whole app, and the packaged smoke test. - **Where a new test belongs**, by kind of change, with the rule the ordering implies: write it at the highest layer that can still see the failure. - **Why the two end-to-end layers are separate.** They run the same source in two containers, and each container has failures the other cannot have. - **How to read a failure**, what CI runs, and the conventions a new test is expected to follow. **`CONTRIBUTING.md` keeps only what a reader needs at that point** — both platforms, the fast suite run twice per platform and why, the end-to-end suites as two jobs — and links to `TESTING.md` for the rest. It goes back to roughly the length it was before this stack started: 150 lines on `trunk`, 153 now, with the third workflow properly represented. **`AGENTS.md` gets the same pointer.** An agent adding a test is exactly who needs to know which layer it belongs in. This follows the rule the repository already uses for the review standard: one source of truth, everything else pointing at it rather than restating it, so nothing can drift. Two things `TESTING.md` says out loud rather than implying: **The end-to-end split is forced, not preferred.** The packaged app ignores a redirected application-data directory — `!app.isPackaged` in `src/main.js` — so it always writes to the real site registry of whoever runs it. A test that drives a flow therefore cannot run against the artifact without writing to somebody's actual sites. That constraint is why the packaged smoke test writes no state, and reading it as minimalism leads to the wrong conclusion about what belongs where. **The gap that leaves.** A flow that behaves differently *because* of packaging is caught by neither layer. The page names it, says what closing it would cost — a test-only seam in shipped software — and says it is not worth opening until a failure of that shape actually escapes. It also fixes the opening paragraph of the checks section, which said "Neither needs secrets" while listing three workflows. ## How to test this Platforms: **any**. This is documentation; there is no user-visible surface. 1. Read `TESTING.md` top to bottom. - Expected: it answers "what do I run?" in the first ten lines and "where does my new test go?" without needing anything else open. 2. Read the `### Tests` section of `CONTRIBUTING.md`. - Expected: it tells you what CI will run against your PR and nothing more, and points at `TESTING.md` for the rest. 3. Check every number and command, because they date fast: ``` ls test/*.test.cjs | grep -vc integration # 63 unit files ls test/*.integration.test.cjs | wc -l # 6 integration files for f in test/*.integration.test.cjs; do grep -cE '^(test|it)\(' $f; done | paste -sd+ - | bc # 89 grep -cE '^(test|it)\(' test/ipc-wiring.test.cjs # 151 grep -c "ipcMain.handle(" src/main.js # 58 npm test # 1027, ~2.7s ``` 4. Follow the links. Every relative link in `TESTING.md`, `CONTRIBUTING.md` and `AGENTS.md` should resolve to a file that exists, and every `npm run …` it mentions should be a real script in `package.json`. 5. `npm run lint`. - Expected: clean. **What must not have happened:** no code changed. `git diff --stat` against the base should show three Markdown files and nothing else. ## Risks and limitations - **The counts go stale.** Six numbers in this section describe the repository as it is today, and nothing checks them. They are there because "63 files" and "8 tests" say something about proportion that "several" does not, and the proportion is the point of the section. The commands above regenerate all of them in a few seconds. - **The five-layer count is a description, not a rule.** If a sixth kind of test earns its place, the section is where that argument gets made — it should not become a reason to squeeze a test into a layer it does not fit. - This is one long section on a page that is already long. It sits after the CI checks because the first question a contributor has is "what will fail on my PR"; the second is "where does my test go". - **Written as prose, not as a table.** The first draft used one, and it was wrong for this repository: no document here has a single Markdown table, every page is hard-wrapped at around 100 columns, and the table's rows ran to 236 characters — three times the width of anything else in the file. Rewritten as one paragraph per layer, wrapped like its neighbours. The longest line in the section is now 107, which is exactly the longest line already on the page. ## Related Part of #359. Stacked on #363. --------- Co-authored-by: Claude Opus 5 --- AGENTS.md | 4 ++ CONTRIBUTING.md | 58 ++++------------ TESTING.md | 173 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 190 insertions(+), 45 deletions(-) create mode 100644 TESTING.md diff --git a/AGENTS.md b/AGENTS.md index 4b50177..c79b537 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -127,6 +127,10 @@ see [`CONTRIBUTING.md`](CONTRIBUTING.md). It points back here; it does not resta See `package.json` scripts. To run a single test file (not exposed as a script): `node --test test/azure-sign.test.cjs`. +**[TESTING.md](TESTING.md) is the canonical description of the suite** — the five layers it is made +of, which one a new test belongs in, what each layer is blind to, and how to read a failure. Read it +before adding or moving a test; do not restate it elsewhere. + When writing manual test instructions, inspect the current renderer flow first and distinguish actions that happen automatically after linking a ticket from controls used only to retry or refresh them. Do not tell a tester to click a control when the app already starts that operation. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a98e5ba..9fe74c9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,8 +11,8 @@ expected to do before opening a PR. ## Checks that run on every pull request -Two GitHub Actions workflows run on every PR, and also on push to `trunk` so the default branch -carries a status a branch-protection rule can require. Neither needs secrets, and neither is +Three GitHub Actions workflows run on every PR, and also on push to `trunk` so the default branch +carries a status a branch-protection rule can require. None needs a secret, and none is credential-gated — everything here is safe to run on a public repository. ### Lint — [`.github/workflows/lint.yml`](.github/workflows/lint.yml) @@ -26,53 +26,21 @@ executes the PR's code** (this repo's `postinstall` would otherwise pull the Ele the linter does not need). If ESLint flags something mechanical, `npm run lint:fix` handles it; check what it rewrote before committing, since it too is repo-wide. -### Unit tests — [`.github/workflows/unit-tests.yml`](.github/workflows/unit-tests.yml) +### Tests — [`unit-tests.yml`](.github/workflows/unit-tests.yml) and [`e2e.yml`](.github/workflows/e2e.yml) -The unit suite runs on the **two platforms the app ships to — macOS and Windows** — and on each -platform it runs **twice**: +Everything runs on the **two platforms the app ships to, macOS and Windows**: -- `npm test` — on the system Node pinned in `.nvmrc`. -- `npm run test:electron` — on the Node that Electron bundles. +- **The fast suite** (`npm test`) — and on each platform it runs **twice**, once on the system Node + pinned in `.nvmrc` and once on the Node that Electron bundles. That second pass is not redundant: + child processes in this app run on Electron's own Node, and the two versions are set independently + and have drifted before (#37/#46). +- **The end-to-end suites** (`npm run test:e2e`, and the packaged one) — on every pull request that + is not a draft, as two jobs, because one takes seconds and the other packages the app first. -That second pass is not redundant. Child processes in this app run on Electron's own Node, not the -system Node, and the two versions are set independently and have drifted before (#37/#46). Running -both is how a drift gets caught before it ships. The matrix uses `fail-fast: false`, so a Windows -failure never hides the macOS result — you always see both. +Every matrix uses `fail-fast: false`, so a Windows failure never hides the macOS result. -### End-to-end tests — [`.github/workflows/e2e.yml`](.github/workflows/e2e.yml) - -Two suites, both launching a real app on macOS and Windows for every pull request that is not a -draft. They answer different questions, so they are separate jobs and separate commands. - -- `npm run test:e2e` — **the journeys**. Drives the app built from the source tree through the flows - a contributor performs by hand: linking a ticket, applying and reverting a patch, moving between - ticket branches. Each test gets its own throwaway application-data directory and its own Git - fixture, so nothing it does can reach the sites you actually work on — and the harness refuses to - start at all if it ever finds the app using a different profile. Nothing here touches the network. - Seconds to run. -- `npm run test:e2e:packaged` — **the packaged smoke test**. Launches an unsigned - `electron-builder --dir` build and asks only whether packaging worked: it boots, the whole preload - bridge is exposed, and the modules that exist only if packaging succeeded do resolve. Build it - first, or the test will tell you to: - - ``` - npm run build:once && CSC_IDENTITY_AUTO_DISCOVERY=false npm run pack:dir - ``` - - That environment variable is mandatory on macOS — electron-builder signs during `--dir` without - it — and harmless everywhere else. - -Neither downloads a browser. The only thing they launch is the Electron already in the tree, so -there is no `playwright install` step anywhere. - -When one fails, the run keeps the trace, and the journeys additionally attach the screen and the -state the app had persisted at the moment it failed — the interesting half of a failure in this app -is usually on disk rather than on screen. Locally, `npx playwright show-trace test-results//trace.zip` replays it. - -`npm test` does not pick these up and never will: the unit runner only collects `test/`, and these -live in `e2e/`. Keeping them out of `npm test` is deliberate — they need a built renderer and cost -seconds each, and the unit suite has to stay something you run without thinking about it. +**[TESTING.md](TESTING.md) is the full picture** — what to run locally, the five layers the suite is +made of, where a new test belongs, and how to read a failure. Read it before adding a test. ## The review standard, and who reads it diff --git a/TESTING.md b/TESTING.md new file mode 100644 index 0000000..2f37fed --- /dev/null +++ b/TESTING.md @@ -0,0 +1,173 @@ +# Testing + +Everything about tests in this repository: what to run, what the suite is made of, and where a new +test belongs. [CONTRIBUTING.md](CONTRIBUTING.md) points here rather than repeating any of it. + +## What to run + +``` +npm test # the fast suite — 1,027 tests, under three seconds +npm run test:e2e # the app, driven — 8 tests, seconds +npm run lint # ESLint over the whole repo +``` + +`npm test` is the one to run without thinking about it. It touches no network: the single suite +that needs a Git remote starts a loopback server and serves the repository to itself. + +Two more, for when you need them: + +``` +npm run test:electron # the fast suite again, on the Node that Electron bundles +npm run test:e2e:packaged # the built artifact — needs a build first, see below +``` + +To run one file: `node --test test/azure-sign.test.cjs`. To run one journey: +`npx playwright test --project=journeys -g "switching back"`, and add `--headed` to watch it happen. + +## The five layers + +"Add a test" is not a single instruction here. There are five places a test can go, and putting one +in the wrong place is how a suite gets slow without getting better. + +They are listed cheapest first, and that ordering is the rule: **write a test at the highest layer +that can still see the failure.** What each layer is blind to is the part worth reading — it is what +sends a test one layer up, or down. + +**1. Unit** — 63 files in `test/`. Starts nothing; calls plain functions. Pure logic: parsing a +ticket reference, deriving a status, building a command line. Blind to anything touching disk, a +process or a window. + +**2. Integration** — 6 files, 89 tests, named `*.integration.test.cjs`. Runs the real modules +against real Git repositories in a temporary directory. Proves Git does what the code assumes when +it switches a branch, applies a patch or updates trunk. Blind to everything above the module +boundary. + +**3. IPC wiring** — one file, `test/ipc-wiring.test.cjs`, 151 tests. Loads the real `src/main.js` +with `electron` replaced by a double, and exercises the ~58 handlers: what each returns, what it +rejects, what error it gives. Blind to the window, and its store is a stand-in rather than the real +one. + +**4. Journeys** — `e2e/journeys/`, 8 tests. Starts the whole app, built from the source tree, and +drives it. Asks the only question the other three cannot: can a contributor do their work without +losing it. Blind to anything about packaging. + +**5. Packaged smoke** — `e2e/packaged/`, 4 tests. Starts the built artifact — the `.app` or `.exe` +a user downloads — and asks whether it is whole. Blind to behaviour: it never gets as far as a flow. + +Layers 1–3 are `npm test`. Layers 4 and 5 are the two `test:e2e` commands. That proportion, a +thousand cheap tests to a dozen expensive ones, is the shape to keep. + +## Where to put a new test + +- **A pure function, a derived string, a decision with branches** → layer 1. If it lives inside + `src/renderer/index.jsx` today, move it to a `src/renderer/*.cjs` module first: that component + mounts at module scope and nothing in the suite can load it, so a decision made there is + untestable by construction. +- **Anything that asks Git a question** → layer 2, against a real repository. There is a local Git + server fixture in `test/trunk-update-fetch.integration.test.cjs` for cases that need a remote, + because `isomorphic-git` has no `file://` transport. +- **A new IPC handler** → layer 3, plus the `contextBridge` entry in `src/preload.js`, which layer 5 + checks is actually exposed. +- **A flow that spans the interface, the main process, Git and the store at once** → layer 4. +- **Something that can only break during packaging** → layer 5. + +Keep layer 4 small on purpose. Every test there costs an app launch, and any assertion that does not +need a window belongs one layer down. + +The failures worth layer 4 are the ones that fall *between* the other layers, where every piece works +and the whole does not. One example, found while writing the first journeys: the integration tests +prove branch switching restores work correctly, and the wiring tests prove the delete handler returns +the checkout to trunk when the deleted branch was the current one — but the interface leaves the +currently linked ticket out of the list it offers delete controls for, so that branch of the handler +cannot be reached by a contributor at all. Three layers passing, one path dead. + +## The two end-to-end layers, and why they are separate + +They run **the same source code in two different containers**, and each container has failures the +other cannot have. + +Layer 4 runs the code the way `npm start` does: `src/main.js` on disk, `node_modules` beside it. +Layer 5 runs what `electron-builder` produces, where all of `src/` and every production dependency is +compressed into a single `app.asar`, and native modules are pulled back out beside it because the +operating system cannot load a binary from inside an archive. A path that resolves from a directory +may not resolve from inside that archive; a native binary can be selected for the wrong runtime while +`npm ci` and the packaging both exit 0 and the app still starts. Those failures do not exist in the +source tree, because there is nothing packaged to get wrong. + +So layer 5 asks only whether the container is intact, and **writes no state at all**. + +That last part is a constraint, not minimalism. The app only honours a redirected application-data +directory in development builds (`!app.isPackaged` in `src/main.js`); the packaged app always writes +to the real site registry of whoever runs it. So a test that drives a flow cannot run against the +artifact without writing to somebody's actual sites. + +Layer 4 gets a throwaway application-data directory per test, and the harness reads back the path the +app chose and **refuses to run** if it is not the throwaway one. Nothing a journey does can reach the +sites you work on. + +**The gap this leaves**, stated plainly: a flow that behaves differently *because* of packaging is +caught by neither layer. Layer 5 covers it only indirectly — if the container is intact, the code +inside it is the same code. Closing it properly would mean letting the packaged app accept a +redirected data directory under a test-only condition, which is a seam in shipped software and is not +worth opening until a failure of that shape actually escapes. + +## Running the packaged smoke test + +It needs an artifact, so build one first: + +``` +npm run build:once && CSC_IDENTITY_AUTO_DISCOVERY=false npm run pack:dir +npm run test:e2e:packaged +``` + +`CSC_IDENTITY_AUTO_DISCOVERY=false` is mandatory on macOS — electron-builder signs during `--dir` +without it — and harmless everywhere else. The test tells you if you forgot the build. + +Neither end-to-end command downloads a browser. The only thing they launch is the Electron already in +the tree, so there is no `playwright install` step anywhere. + +## Reading a failure + +Every end-to-end failure keeps a Playwright trace. Replay it with: + +``` +npx playwright show-trace test-results//trace.zip +``` + +A failing journey also attaches the screen and the state the app had persisted at that moment, +because the interesting half of a failure in this app is usually on disk rather than on screen. In +CI both come back as a workflow artifact. + +## What CI runs + +Three workflows, on every pull request and on push to `trunk`. None needs a secret. + +**[`lint.yml`](.github/workflows/lint.yml)** — `eslint . --max-warnings=0` over the whole repo. It +installs with `npm ci --ignore-scripts`, so linting never executes the pull request's code. + +**[`unit-tests.yml`](.github/workflows/unit-tests.yml)** — layers 1–3 on macOS and Windows, and on +each platform **twice**: once on the system Node pinned in `.nvmrc`, once on the Node that Electron +bundles. That second pass is not redundant. Child processes in this app run on Electron's own Node, +and the two versions are set independently and have drifted before (#37/#46). + +**[`e2e.yml`](.github/workflows/e2e.yml)** — layers 4 and 5 on macOS and Windows, as two jobs for +every pull request that is not a draft. They are separate because they cost very different amounts: +the journeys take seconds, and packaging takes several minutes per platform. + +Every matrix uses `fail-fast: false`, so a Windows failure never hides the macOS result. + +## Conventions + +- `npm test` collects `test/` only, and never picks up `e2e/`. That is deliberate: end-to-end tests + need a built renderer and cost seconds each, and the fast suite has to stay something you run + without thinking. +- End-to-end selectors read the text and roles already on screen. No `data-testid` — the visible copy + is the contract, and renaming a button is a change worth noticing. +- Journeys mark each assertion as an **invariant** (must hold under any model of how work is stored) + or a **characterisation** (true because of how the app stores things today). A red invariant is a + bug; a red characterisation is a prompt to read it and update it deliberately. +- A bugfix's test must fail on the old code. A test written after the fix pins whatever the current + behaviour is, rather than the correction. + +The full review standard, including what counts as a test-shaped finding, is in +[`.github/instructions/code-review.instructions.md`](.github/instructions/code-review.instructions.md). From 012f48a7f2855a366b77afbb5c445b9a3f181c5a Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 19 Aug 2026 15:00:36 +0200 Subject: [PATCH 42/53] Let a journey be watched, and say what its trace really holds (#368) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Stacked on #365.** Review that one first; this diff is one line of code and a section of `TESTING.md`. ## Why The journeys are over in eight seconds. That is what makes them worth running on every pull request, and it is useless when the question is the one that matters for a suite of tests: **is this driving the app, or passing through a shell that happens to satisfy its assertions?** A green run looks identical either way. There was no way to look. This adds one, and corrects something the guide said about the other. ## What changes **`E2E_VIDEO= npm run test:e2e` records every window**, and each recording is saved under the name of the test it came from: ``` E2E_VIDEO=/tmp/e2e-video npm run test:e2e open /tmp/e2e-video/switching-back-to-a-ticket-restores-its-work-byte-for-byte.webm ``` Inert unless the variable is set — nothing changes for CI, or for anyone not asking to watch. The naming is not a nicety. Playwright names a recording after the page that produced it, an opaque hash, and writes a file for every window the run opened — a full run left twenty of them, most empty or a fraction of a second long, three worth opening. The first person to try it opened a zero-byte one and got an error from their video player, which is the whole feature failing at the last step. Recordings are now saved by test name once the app has closed, and everything else the recorder left is cleared away. A test that closes and reopens the app keeps both launches, as `-1` and `-2`. **The guide no longer claims the trace replays a failing run.** It does not, for an Electron test. Playwright collects screenshots and DOM snapshots through a browser context, and an Electron window is not one, so the trace carries the actions, their timings and their source lines — and no pictures at all. `TESTING.md` now says what is actually in there and points at the recording for the rest. **`slowMo` is recorded as a trap, in the code rather than the guide.** This PR started as an attempt to add it. `_electron.launch` does not accept it, and Playwright drops launch options it does not recognise without a word — so a `slowMo` added there leaves the tests running at full speed while looking like it worked. That belongs beside the launch, where somebody would try to add it, and not in a guide for contributors. `--headed` is not mentioned anywhere: it is simply not applicable, with no silent failure to warn about. ## How to test this Platforms: **any**. **Starting state:** this branch, `npm ci` and `npm run build:once` done. 1. `E2E_VIDEO=/tmp/e2e-video npm run test:e2e` - Expected: 8 passed, and **9** `.webm` files in `/tmp/e2e-video`, every one named after its test. Nine rather than eight because the restart test records both launches. No file is empty, and nothing is left called `page@…`. 2. Open `switching-back-to-a-ticket-restores-its-work-byte-for-byte.webm`. - Expected: the app, being driven. A ticket number typed into the field, **Link ticket** clicked, the panel changing. This is the check the video exists for — if it did not look like the app doing the work, the test would be worth nothing and would still be green. 3. `npm run test:e2e` with no variable set. - Expected: 8 passed, and **no** video directory created anywhere. The option must be inert by default. 4. Read `## Reading a failure` in `TESTING.md`, then confirm it for yourself: ``` npx playwright test --project=journeys -g "switching back" --trace on unzip -l test-results/*/trace.zip ``` - Expected: three files, about 12 KB, and no images — exactly what the page now says. Before this PR it said the trace replays the run. 5. `npm run lint`. - Expected: clean. **What must not have happened:** - **No behaviour change with the variable unset.** That is step 3, and it is the one that matters: a recording option that quietly slowed or altered a CI run would be worse than no option. - **No video files committed.** `test-results/` and `playwright-report/` are already ignored; a directory chosen with `E2E_VIDEO` is wherever you point it, so point it outside the repository. ## Risks and limitations - **The video directory is not emptied between runs**, and a rerun overwrites a recording of the same name. Deliberate — the point is to keep them and watch them — but worth knowing before pointing it somewhere you forget about. - **The cleanup removes every `page@*.webm` in that directory**, not only the ones this run wrote. That is safe because the journeys run on a single worker and each test tidies up after itself, and it is the reason to point `E2E_VIDEO` at a directory kept for the purpose rather than at somewhere with other files in it. - **Some recordings are only a second long and a few kilobytes.** Those are tests that assert on state rather than on the screen, so there is genuinely little to see. They are kept rather than filtered by size, because "too small to matter" is a guess and a missing file is confusing. - **Not wired into CI.** A failing journey already comes back with a screenshot and the persisted state attached, which has been enough so far. Recording every window on every run would upload a few hundred kilobytes per job for something nobody looks at when the run is green. - **`PWDEBUG=1` needs a browser this repository otherwise never installs.** The Inspector is a Chromium window, and nothing else here downloads one — the suites and CI launch only the Electron already in the tree. It worked on the first machine it was tried on purely because that machine had a Playwright browser cached from another project. Pointed at an empty `PLAYWRIGHT_BROWSERS_PATH` it does not error: the run pauses and no window opens, which reads as a hang. `TESTING.md` states the one-time `npx playwright install chromium` and says what skipping it looks like. ## Related Part of #359. Stacked on #365. Co-authored-by: Claude Opus 5 --- TESTING.md | 74 +++++++++++++++++++++++++++++++++++++++++---- e2e/helpers/app.cjs | 62 +++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 6 deletions(-) diff --git a/TESTING.md b/TESTING.md index 2f37fed..26f0aff 100644 --- a/TESTING.md +++ b/TESTING.md @@ -22,7 +22,8 @@ npm run test:e2e:packaged # the built artifact — needs a build first, see be ``` To run one file: `node --test test/azure-sign.test.cjs`. To run one journey: -`npx playwright test --project=journeys -g "switching back"`, and add `--headed` to watch it happen. +`npx playwright test --project=journeys -g "switching back"`. A journey opens and closes the app as +it goes; there is no headless mode and nothing to turn off. ## The five layers @@ -124,19 +125,80 @@ npm run test:e2e:packaged without it — and harmless everywhere else. The test tells you if you forgot the build. Neither end-to-end command downloads a browser. The only thing they launch is the Electron already in -the tree, so there is no `playwright install` step anywhere. +the tree, which is why CI has no `playwright install` step. The one exception is the Inspector, and +it is opt-in — see above. + +## Auditing an end-to-end test + +A test that asserts nothing passes. For a suite whose entire content is tests, that is the risk that +matters, and neither a green run nor a recording of one will tell you: both look identical whether +the assertion is load-bearing or decorative. + +**The way to audit a journey is to break what it claims and confirm it goes red.** One assertion at +a time. Worked example — "switching back to a ticket restores its work byte for byte" says the +contributor's edit comes back, so make that false and see whether the test notices: + +``` +# in e2e/journeys/ticket-branches.spec.js, find the line asserting the edit came +# back — it ends `.toBe( MY_EDIT );` — and swap MY_EDIT for any other string: +# .toBe( 'anything else' ); + +npx playwright test --project=journeys -g "switching back" # must FAIL, on that line +git checkout e2e/journeys/ticket-branches.spec.js # put it back +``` + +If it stays green, the assertion is not reaching what it says it is, and the test is decoration. +Every invariant in these journeys was checked this way before its pull request was opened; each is +worth rechecking after a change to the code beneath it. + +Two mistakes to avoid when doing this. Break **one** assertion per run, or a failure tells you +nothing about which. And run the **single** test by name — the same expression often appears in more +than one journey, and a mutation applied to the first occurrence while running a different test +reports a green that means nothing. + +**The second half of an audit is reading the test.** Roughly half of each journey happens on disk +with no interface: the test edits a file, deletes another, and then reads the working tree back. +None of that is on screen, and none of it can be watched. The twenty lines of the test are the +description of what it does; there is no substitute for them. + +
+Watching one run, and when that helps + +Recording a run answers one narrow question — **is this driving the app, or passing through a shell +that happens to satisfy its assertions?** — and helps with a CI failure on a platform you cannot +reach. It does not tell you what a test does, for the reason above. + +``` +E2E_VIDEO=/tmp/e2e-video npm run test:e2e +open /tmp/e2e-video/switching-back-to-a-ticket-restores-its-work-byte-for-byte.webm +``` + +One `.webm` per test, named after it; a test that closes and reopens the app records both launches +as `-1` and `-2`. They run about a second and a half at 25 frames per second, so step through them +rather than pressing play. + +`PWDEBUG=1` pauses before each action instead, and lets you advance the run yourself. It opens the +Playwright Inspector, which is a browser window, so it needs `npx playwright install chromium` once +— the only browser this repository ever wants, and nothing else here uses it. Without it the run +pauses with no window to drive it from, which reads as a hang. The Inspector knows Playwright's +actions and not the filesystem steps between them, so it has the same blind spot as the recording. + +
## Reading a failure -Every end-to-end failure keeps a Playwright trace. Replay it with: +Every end-to-end failure keeps a Playwright trace: ``` npx playwright show-trace test-results//trace.zip ``` -A failing journey also attaches the screen and the state the app had persisted at that moment, -because the interesting half of a failure in this app is usually on disk rather than on screen. In -CI both come back as a workflow artifact. +For an Electron test that trace is an action log rather than a replay: each step, its timing and the +line of source it came from. + +A failing journey also attaches the screen at the moment it failed and the state the app had +persisted, because the interesting half of a failure in this app is usually on disk rather than on +screen. In CI both come back as a workflow artifact. ## What CI runs diff --git a/e2e/helpers/app.cjs b/e2e/helpers/app.cjs index 1521533..df79459 100644 --- a/e2e/helpers/app.cjs +++ b/e2e/helpers/app.cjs @@ -64,6 +64,13 @@ function samePath( a, b ) { const EMPTY_SETTINGS = Object.freeze( { sites: [], siteMeta: {}, preferences: {} } ); +/** + * Where to record each journey, so a person can watch what the test did: + * `E2E_VIDEO=/tmp/e2e-video npm run test:e2e`. Unset, nothing is recorded and + * the launch is exactly what it would otherwise be. + */ +const VIDEO_DIR = process.env.E2E_VIDEO || ''; + /** * A session of the app under test: one throwaway profile, one app at a time. * @@ -79,6 +86,7 @@ class Session { this.app = null; this.page = null; this.scratch = []; + this.videos = []; } /** @@ -132,6 +140,11 @@ class Session { // harness use. executablePath: require( 'electron' ), args: [ ...ELECTRON_SWITCHES, REPO_ROOT ], + // Watching a run is only ever a question of recording it. `_electron.launch` + // takes `recordVideo` but not `slowMo`, and Playwright drops launch options it + // does not recognise without a word — so a `slowMo` added here would leave the + // tests passing at full speed and look like it had worked. + ...( VIDEO_DIR ? { recordVideo: { dir: VIDEO_DIR } } : {} ), env: { ...process.env, TZ: 'UTC', @@ -142,6 +155,10 @@ class Session { }, } ); this.page = await this.app.firstWindow(); + if ( VIDEO_DIR ) { + const video = this.page.video(); + if ( video ) this.videos.push( video ); + } // Belt and braces over the env var above. If the redirect hook ever stops // firing — it is guarded by `!app.isPackaged` — every journey would start @@ -245,6 +262,50 @@ class Session { if ( proc && proc.exitCode === null ) proc.kill(); } + /** + * Saves each recording under a name that says which test it came from, and + * clears away everything else the recorder left behind. + * + * Playwright names a recording after the page that produced it — an opaque + * hash — and writes one for every window the run opened, most of which are + * empty or a fraction of a second long. A directory of twenty files called + * `page@24b3324…webm`, three of which are worth opening, is not something to + * hand a contributor and call a feature. + * + * Call after `close()`: the recording is only finished once the app is gone. + * + * @param {string} name Slug for the test, used as the file name. + * @return {Promise} The paths written. + */ + async saveVideos( name ) { + if ( ! VIDEO_DIR || ! this.videos.length ) return []; + + const written = []; + for ( const [ i, video ] of this.videos.entries() ) { + // One per launch: a journey that closes and reopens the app to prove + // something persisted has two, and both are worth keeping. + const suffix = this.videos.length > 1 ? `-${ i + 1 }` : ''; + const file = path.join( VIDEO_DIR, `${ name }${ suffix }.webm` ); + try { + await video.saveAs( file ); + written.push( file ); + } catch { + // A window that closed before a single frame was captured has + // nothing to save. Not worth failing a passing test over. + } + } + this.videos = []; + + // Whatever the recorder wrote under its own names is now duplicated under + // the names above, or was empty to begin with. + for ( const left of fs.readdirSync( VIDEO_DIR ) ) { + if ( left.startsWith( 'page@' ) && left.endsWith( '.webm' ) ) { + fs.rmSync( path.join( VIDEO_DIR, left ), { force: true } ); + } + } + return written; + } + dispose() { for ( const dir of this.scratch.splice( 0 ) ) { fs.rmSync( dir, { recursive: true, force: true } ); @@ -275,6 +336,7 @@ const test = base.extend( { } await session.close(); + await session.saveVideos( testInfo.title.replace( /[^a-z0-9]+/gi, '-' ).toLowerCase() ); session.dispose(); }, } ); From ee9c1340884a7e9ceb05d046b38c4349cad73bd8 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 19 Aug 2026 15:00:42 +0200 Subject: [PATCH 43/53] Cover applying and reverting a patch, through the app (#369) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Stacked on #368.** Review the ones below it first; this diff is one new journey file, plus the seed repository it needed. ## Why The other half of a contributor's day, and the half #350 changes most. Someone else's work arrives as a patch file or a pull request, goes onto the checkout, and has to come off again without taking anything of theirs with it. Today "applied" is a layer the app holds. After #350 it is a commit. So what these journeys pin is the part that has to survive either model — and the part whose failure is silent, because a patch that half-applied or a revert that ate an unrelated edit produces no error at all. ## What changes Three journeys. - **A patch applies.** The file changes on disk, the gitignored substrate and the untouched files are left alone, and the app records what it applied. - **A revert puts the checkout back**, byte for byte — and the contributor's own work in a file the patch never touched survives both directions. - **A patch that does not fit is refused.** This is the one worth having. The app warns *before* writing that the patch is about to land on the contributor's own edits, while they can still stop; then it refuses, says the checkout was not changed, names the file, and says how much of the patch failed. Nothing is written and nothing is offered to undo. **Two things about the app the fixture had wrong**, both found by running it rather than by reading: - **Patches are rewritten onto core's modern layout.** A patch naming `wp-login.php`, which is how Trac patches are written, is applied to `src/wp-login.php` — see `src/patch-plan.cjs`, which exists because core moved everything under `src/` and old patches predate it. A fixture with its files at the repository root sends every patch somewhere the test never looks, and the test then fails for a reason that is not a bug. The seed repository now mirrors a real checkout. - **Applying ends by rebuilding the site.** Without a `build` script the chain fails *after* the patch is already on disk, so the journey would be asserting on a half-finished flow. The seed repository has a `package.json` whose build does nothing and exits. **One assertion is deliberately narrow.** The conflict is asserted against the alert, not the page. When an apply fails the preview stays on screen and already names the file, so `getByText('src/wp-login.php')` passes whether or not the app reported anything — green, and proving nothing. ## How to test this Platforms: **any**. Windows is covered by CI. **Starting state:** this branch, `npm ci` and `npm run build:once` done. 1. `npm run test:e2e` - Expected: **11 passed** — four from #362, four from #363, three here. 2. Watch the interesting one: ``` E2E_VIDEO=/tmp/e2e-video npx playwright test --project=journeys -g "does not fit" open /tmp/e2e-video/a-patch-that-does-not-fit-is-refused-and-writes-nothing.webm ``` - Expected: the app opens, a ticket is linked, a patch file is chosen, the preview lists `src/wp-login.php`, a warning appears about your own edits, **Apply and rebuild** is clicked, and the refusal appears. Nothing in the file changes. 3. Break the all-or-nothing invariant. In `e2e/journeys/patch-apply.spec.js`, change `expect( read( site.dir, LOGIN ) ).toBe( mine )` to any other string, then rerun. - Expected: "a patch that does not fit is refused, and writes nothing" goes red on that line. Put it back. 4. Break the path rewrite. In `e2e/helpers/git-site.cjs`, change `LOGIN` from `src/wp-login.php` to `wp-login.php`, then rerun. - Expected: the patch journeys go red — the patch is applied where the fixture is not looking. This is the trap the fixture layout exists to avoid. Put it back. 5. `npm test` and `npm run lint`. - Expected: 1027 passed, and clean. **What must not have happened:** - **The ticket-branch journeys must still pass.** This PR moves their fixture's files under `src/`, so all four are re-exercised by step 1. If only the patch journeys were run, that move would go unchecked. - **No leftover directories.** Nothing matching `wpct-e2e-*` should remain in the system temp directory after a run. - **Your real settings file must not have been touched.** ## Risks and limitations - **Linking a ticket reads Trac.** Correcting something I wrote on #363: linking a ticket *by hand* auto-reads the ticket's own facts (#292), so these journeys do reach the network at that point, and on a machine where Trac's human-check appears a window may open. Nothing here asserts on it and no journey waits for it, so an offline or blocked runner does not fail these tests — but it happens, and #363 said it did not. - **The patches are hand-written unified diffs**, one whole-line replacement per file. That is deliberate — generating them with the same code the app reads back would prove less than it looks — but it means the shapes core actually produces (renames, binary files, empty additions) are not exercised here. Those are covered a layer down, in `test/patch-apply.integration.test.cjs`. - **The rebuild is a no-op.** The seed repository's `build` script exits immediately, so what these journeys prove about the rebuild is that the chain reaches it and survives it, not that a real build works. - **Applying a pull request is not covered**, only a patch file. Fetching a PR puts GitHub in the path of a test about the checkout. The app treats both identically once the patch text is in hand, which is the point where these journeys join the flow. ## Related Part of #359 and #361. Stacked on #368. --------- Co-authored-by: Claude Opus 5 --- e2e/helpers/app.cjs | 29 ++++- e2e/helpers/git-site.cjs | 56 ++++++++- e2e/journeys/patch-apply.spec.js | 170 +++++++++++++++++++++++++++ e2e/journeys/ticket-branches.spec.js | 18 +-- 4 files changed, 261 insertions(+), 12 deletions(-) create mode 100644 e2e/journeys/patch-apply.spec.js diff --git a/e2e/helpers/app.cjs b/e2e/helpers/app.cjs index df79459..102e91d 100644 --- a/e2e/helpers/app.cjs +++ b/e2e/helpers/app.cjs @@ -308,9 +308,34 @@ class Session { dispose() { for ( const dir of this.scratch.splice( 0 ) ) { - fs.rmSync( dir, { recursive: true, force: true } ); + discard( dir ); } - fs.rmSync( this.userDataDir, { recursive: true, force: true } ); + discard( this.userDataDir ); + } +} + +/** + * Removes a directory the app was using, without ever failing a passing test. + * + * `force: true` covers a directory that is already gone; it does nothing for one + * that is still being written to, which is what a just-closed app does to its + * profile — the process is gone, its last flush is not. That surfaces as + * `ENOTEMPTY` from `rmSync`, in teardown, on a test that passed. It appeared on + * a macOS CI runner and never once locally, which is the worst way to find out. + * + * `maxRetries` is the documented answer: Node retries `ENOTEMPTY`, `EBUSY` and + * `EPERM` on a backoff. The `catch` behind it is deliberate all the same. These + * live under the system temp directory, the operating system reaps them, and a + * suite that goes red because it could not tidy up is reporting on itself rather + * than on the app. + * + * @param {string} dir + */ +function discard( dir ) { + try { + fs.rmSync( dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 } ); + } catch { + // Left for the operating system. } } diff --git a/e2e/helpers/git-site.cjs b/e2e/helpers/git-site.cjs index ed106f1..378d47b 100644 --- a/e2e/helpers/git-site.cjs +++ b/e2e/helpers/git-site.cjs @@ -30,10 +30,31 @@ const AUTHOR = { name: 'e2e', email: 'e2e@example.test' }; const SUBSTRATE = path.join( 'node_modules', 'react', 'index.js' ); const SUBSTRATE_CONTENT = 'expensive to reinstall\n'; +/** + * Where WordPress's own source lives in a `wordpress-develop` checkout. + * + * Not cosmetic. Patches from Trac are often written against the layout core had + * before everything moved under `src/`, so the app rewrites a path like + * `wp-login.php` to `src/wp-login.php` on the way in (see `src/patch-plan.cjs`). + * A fixture with its files at the root would have every patch land somewhere the + * test never looks, and the test would fail for a reason that is not a bug. + */ +const LOGIN = path.join( 'src', 'wp-login.php' ); +const DOOMED = path.join( 'src', 'doomed.php' ); + const TRUNK_FILES = { '.gitignore': 'node_modules/\nbuild/\n', - 'wp-login.php': ' git.listBranches( { fs, dir } ); */ const currentBranch = ( dir ) => git.currentBranch( { fs, dir, fullname: false } ); +/** + * Writes a unified diff to a file the app's dialog can be pointed at. + * + * Hand-written rather than produced by a Git library: what the app parses is a + * patch file as it arrives from Trac or a pull request, and generating one with + * the same code the app reads back would prove less than it looks. + * + * @param {Object} session The session that will clean the file up. + * @param {string} name File name, e.g. 'ticket-60001.patch'. + * @param {Array<{file: string, from: string, to: string}>} hunks One whole-line replacement per + * file: the line to find, and what + * replaces it. + * @return {string} The path written. + */ +function makePatchFile( session, name, hunks ) { + const dir = session.track( fs.mkdtempSync( path.join( os.tmpdir(), 'wpct-e2e-patch-' ) ) ); + const body = hunks + .map( + ( { file, from, to } ) => + `--- a/${ file }\n+++ b/${ file }\n@@ -1 +1 @@\n-${ from }\n+${ to }\n` + ) + .join( '' ); + const file = path.join( dir, name ); + fs.writeFileSync( file, body ); + return file; +} + module.exports = { makeSite, + makePatchFile, settingsFor, read, write, @@ -146,4 +196,6 @@ module.exports = { TRUNK, SUBSTRATE, SUBSTRATE_CONTENT, + LOGIN, + DOOMED, }; diff --git a/e2e/journeys/patch-apply.spec.js b/e2e/journeys/patch-apply.spec.js new file mode 100644 index 0000000..d61a96f --- /dev/null +++ b/e2e/journeys/patch-apply.spec.js @@ -0,0 +1,170 @@ +/** + * Applying and reverting a patch, driven through the app (#361). + * + * The other half of a contributor's day: someone else's work arrives as a patch + * file or a pull request, and it has to go onto the checkout and come off again + * without taking anything of theirs with it. #350 changes what "applied" means — + * today it is a layer the app holds, afterwards it is a commit — so what is + * pinned here is the part that must survive either model. + * + * Assertions are marked INVARIANT or CHARACTERISATION; see ticket-branches.spec.js + * for what the distinction buys during that refactor. + * + * The patch arrives from a local file through the app's own file dialog, answered + * from the test. Nothing here fetches a pull request: that would put a third + * party in the path of a test that is about the checkout. + */ + +const { test, expect } = require( '../helpers/app.cjs' ); +const { + makeSite, + makePatchFile, + read, + write, + SUBSTRATE, + SUBSTRATE_CONTENT, + LOGIN, + DOOMED, +} = require( '../helpers/git-site.cjs' ); + +const TRUNK_LOGIN = ' { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + await linkTicket( page, '60001' ); + + const patch = makePatchFile( session, 'ticket-60001.patch', [ + { file: 'wp-login.php', from: TRUNK_LOGIN, to: PATCHED_LOGIN }, + ] ); + await applyPatchFile( session, patch ); + + // The offer to undo is the app saying the apply finished, and it is on the + // same card. Waiting for it beats waiting for a rebuild that a slower runner + // may still be finishing. + await expect( page.getByRole( 'button', { name: 'Revert this patch', exact: true } ) ).toBeVisible( { + timeout: 60_000, + } ); + + // INVARIANT — the patch is on disk, in the working tree, not merely recorded. + expect( read( site.dir, LOGIN ) ).toBe( `${ PATCHED_LOGIN }\n` ); + + // INVARIANT — and it wrote nothing else. The substrate is what a rebuild + // would be most likely to take with it. + expect( read( site.dir, SUBSTRATE ) ).toBe( SUBSTRATE_CONTENT ); + expect( read( site.dir, DOOMED ) ).toBe( ' { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + await linkTicket( page, '60001' ); + + // The contributor's own work, in a file the patch does not touch. Reverting + // somebody else's patch must not reach it. + write( site.dir, DOOMED, ' { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + await linkTicket( page, '60001' ); + + // The contributor has already edited the line the patch expects to find. + const mine = ' Date: Wed, 19 Aug 2026 15:05:10 +0200 Subject: [PATCH 44/53] Cover what survives closing the app (#370) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Stacked on #369.** Review the ones below it first; this diff is one new journey file. ## Why This is the only test in the repository that exercises the real persistence layer. Everywhere else `electron-store` is a stand-in. The wiring tests load the real `src/main.js` but hand it a fake store; the integration tests never reach it at all. So nothing today can tell **"the app persisted this"** from **"the app still had it in memory"** — and that is precisely the distinction a change to how state is stored breaks while every other test stays green. #350 changes what is stored and where. This is the test that notices. ## What changes Three journeys. Each acts, **closes the app**, opens it again against the same profile untouched, and asks what came back. - **The linked ticket and the work on it.** The app opens where the contributor left it, and the checkout is untouched on the way past — a restart is not a switch. - **An applied patch, still applied and still revertable.** The revert is *performed* after the restart rather than merely offered, because a button that renders and does nothing is the failure worth catching. Forgetting an applied patch leaves a contributor unable to tell their own changes from somebody else's, about to submit both as theirs. - **Every ticket on the site, including the parked one**, each keeping the commit its patch is measured from. Losing that is what #317 was: a ticket whose base is unknown can no longer say what the contributor changed. With this, the baseline battery #361 asked for is complete: ticket branches (#363), applying and reverting a patch (#369), and what survives a restart. ## How to test this Platforms: **any**. **Starting state:** this branch, `npm ci` and `npm run build:once` done. 1. `npm run test:e2e` - Expected: **14 passed**, in under twenty seconds. Windows open and close more often than in the other journeys — each of these launches the app twice. 2. Watch the one that matters most: ``` E2E_VIDEO=/tmp/e2e-video npx playwright test --project=journeys -g "still applied after a restart" open /tmp/e2e-video/ ``` - Expected: two recordings, `-1` and `-2`. In the first the patch is applied; in the second the app has reopened, still offers **Revert this patch**, and the revert is carried out. 3. Break the persistence invariant. In `e2e/journeys/store-persistence.spec.js`, change `expect( read( site.dir, LOGIN ) ).toBe( \`${ PATCHED_LOGIN }\n\` )` to any other string, then rerun. - Expected: "an applied patch is still applied after a restart" goes red. Put it back. 4. Prove the restart is real, not a reload. In `e2e/helpers/app.cjs`, make `restart()` return without closing anything — replace its body with `return { app: this.app, page: this.page }`. - Expected: the persistence journeys still pass, because nothing was ever persisted or re-read. That is the shape of the vacuous test this file exists to avoid, and it is worth seeing once. Put it back. 5. `npm test` and `npm run lint`. - Expected: 1027 passed, and clean. **What must not have happened:** - **Your real settings file must not have been touched.** These journeys write more to the store than any other, so if the guard were going to fail anywhere it would be here. - **No Electron processes left running.** Twice the launches means twice the chances to leak one. ## Risks and limitations - **Step 4 above is a real gap, and it is not automated.** Nothing in the suite proves `restart()` genuinely restarts; a change that turned it into a no-op would leave these three tests passing and meaningless. The check exists as a manual step because asserting on it would mean asserting on the harness rather than on the app, and the honest place for that is a reviewer's eyes. - **Slower than the rest.** Two app launches each, so these three take about as long as the other eleven together. Worth it for the only coverage of the real store, but it is why the layer stays small. - **The store is read as a file, not through the app.** The characterisation assertions parse the profile's `settings.json` directly. That is the point — it is what actually survived — but it means a change to the file's shape shows up here as a failure to interpret rather than as a clean statement of what moved. ## Related Part of #359. **Closes #361.** Stacked on #369. --------- Co-authored-by: Claude Opus 5 --- TESTING.md | 41 ++++---- e2e/journeys/store-persistence.spec.js | 129 +++++++++++++++++++++++++ e2e/packaged/smoke.spec.js | 6 +- 3 files changed, 154 insertions(+), 22 deletions(-) create mode 100644 e2e/journeys/store-persistence.spec.js diff --git a/TESTING.md b/TESTING.md index 26f0aff..db66a38 100644 --- a/TESTING.md +++ b/TESTING.md @@ -6,8 +6,8 @@ test belongs. [CONTRIBUTING.md](CONTRIBUTING.md) points here rather than repeati ## What to run ``` -npm test # the fast suite — 1,027 tests, under three seconds -npm run test:e2e # the app, driven — 8 tests, seconds +npm test # the fast suite — layers 1–3, under three seconds +npm run test:e2e # the app, driven — layer 4, seconds npm run lint # ESLint over the whole repo ``` @@ -34,29 +34,28 @@ They are listed cheapest first, and that ordering is the rule: **write a test at that can still see the failure.** What each layer is blind to is the part worth reading — it is what sends a test one layer up, or down. -**1. Unit** — 63 files in `test/`. Starts nothing; calls plain functions. Pure logic: parsing a -ticket reference, deriving a status, building a command line. Blind to anything touching disk, a -process or a window. +**1. Unit** — `test/`. Starts nothing; calls plain functions. Pure logic: parsing a ticket +reference, deriving a status, building a command line. Blind to anything touching disk, a process +or a window. -**2. Integration** — 6 files, 89 tests, named `*.integration.test.cjs`. Runs the real modules -against real Git repositories in a temporary directory. Proves Git does what the code assumes when -it switches a branch, applies a patch or updates trunk. Blind to everything above the module -boundary. +**2. Integration** — the files named `*.integration.test.cjs`. Runs the real modules against real +Git repositories in a temporary directory. Proves Git does what the code assumes when it switches a +branch, applies a patch or updates trunk. Blind to everything above the module boundary. -**3. IPC wiring** — one file, `test/ipc-wiring.test.cjs`, 151 tests. Loads the real `src/main.js` -with `electron` replaced by a double, and exercises the ~58 handlers: what each returns, what it -rejects, what error it gives. Blind to the window, and its store is a stand-in rather than the real -one. +**3. IPC wiring** — one file, `test/ipc-wiring.test.cjs`. Loads the real `src/main.js` with +`electron` replaced by a double, and exercises every handler: what each returns, what it rejects, +what error it gives. Blind to the window, and its store is a stand-in rather than the real one. -**4. Journeys** — `e2e/journeys/`, 8 tests. Starts the whole app, built from the source tree, and -drives it. Asks the only question the other three cannot: can a contributor do their work without -losing it. Blind to anything about packaging. +**4. Journeys** — `e2e/journeys/`. Starts the whole app, built from the source tree, and drives +it. Asks the only question the other three cannot: can a contributor do their work without losing +it. Blind to anything about packaging. -**5. Packaged smoke** — `e2e/packaged/`, 4 tests. Starts the built artifact — the `.app` or `.exe` +**5. Packaged smoke** — `e2e/packaged/`. Starts the built artifact — the `.app` or `.exe` a user downloads — and asks whether it is whole. Blind to behaviour: it never gets as far as a flow. -Layers 1–3 are `npm test`. Layers 4 and 5 are the two `test:e2e` commands. That proportion, a -thousand cheap tests to a dozen expensive ones, is the shape to keep. +Layers 1–3 are `npm test`. Layers 4 and 5 are the two `test:e2e` commands. That proportion — a +great many cheap tests to a handful of expensive ones, orders of magnitude apart in what each +costs — is the shape to keep. ## Where to put a new test @@ -230,6 +229,10 @@ Every matrix uses `fail-fast: false`, so a Windows failure never hides the macOS bug; a red characterisation is a prompt to read it and update it deliberately. - A bugfix's test must fail on the old code. A test written after the fix pins whatever the current behaviour is, rather than the correction. +- No test counts in this document. A number here is wrong the moment somebody adds a test, and + nothing makes it go red — this file already carried a stale one. Say what a layer covers and + roughly what it costs; `npm test` prints the total, and it is the only place that can be trusted + to. The full review standard, including what counts as a test-shaped finding, is in [`.github/instructions/code-review.instructions.md`](.github/instructions/code-review.instructions.md). diff --git a/e2e/journeys/store-persistence.spec.js b/e2e/journeys/store-persistence.spec.js new file mode 100644 index 0000000..5375544 --- /dev/null +++ b/e2e/journeys/store-persistence.spec.js @@ -0,0 +1,129 @@ +/** + * What survives closing the app (#361). + * + * The only test in the repository that exercises the real persistence layer. + * Everywhere else `electron-store` is a stand-in: the wiring tests hand the main + * process a fake, and the integration tests never reach it at all. So this is the + * only place that can tell "the app persisted this" from "the app still had it in + * memory", which is exactly the distinction a change to how state is stored + * breaks without anything else noticing. + * + * Each test does its work, closes the app, opens it again against the same + * profile untouched, and asks what came back. Assertions are marked INVARIANT or + * CHARACTERISATION; see ticket-branches.spec.js for why. + */ + +const { test, expect } = require( '../helpers/app.cjs' ); +const { + makeSite, + makePatchFile, + read, + write, + currentBranch, + SUBSTRATE, + SUBSTRATE_CONTENT, + LOGIN, +} = require( '../helpers/git-site.cjs' ); + +const TRUNK_LOGIN = ' { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + + await linkTicket( page, '60001' ); + write( site.dir, LOGIN, MY_EDIT ); + + const { page: reopened } = await session.restart(); + + // INVARIANT — the app opens where the contributor left it. Coming back to a + // site that has forgotten which ticket it was on is the cheapest possible way + // to lose somebody's afternoon. + await expect( reopened.getByText( '#60001', { exact: true } ).first() ).toBeVisible( { timeout: 30_000 } ); + + // INVARIANT — and it did not touch the checkout on the way past. A restart is + // not a switch. + expect( await currentBranch( site.dir ) ).toBe( 'ticket/60001' ); + expect( read( site.dir, LOGIN ) ).toBe( MY_EDIT ); + expect( read( site.dir, SUBSTRATE ) ).toBe( SUBSTRATE_CONTENT ); +} ); + +test( 'an applied patch is still applied after a restart, and still revertable', async ( { session } ) => { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + await linkTicket( page, '60001' ); + + const patch = makePatchFile( session, 'ticket-60001.patch', [ + { file: 'wp-login.php', from: TRUNK_LOGIN, to: PATCHED_LOGIN }, + ] ); + await session.answerFileDialog( [ patch ] ); + await page.getByRole( 'button', { name: 'or choose a .diff / .patch file…', exact: true } ).click(); + await expect( page.getByText( 'src/wp-login.php', { exact: true } ) ).toBeVisible( { timeout: 30_000 } ); + await page.getByRole( 'button', { name: 'Apply and rebuild', exact: true } ).click(); + await expect( page.getByRole( 'button', { name: 'Revert this patch', exact: true } ) ).toBeVisible( { + timeout: 60_000, + } ); + + const { page: reopened } = await session.restart(); + + // INVARIANT — the app still knows somebody else's work is on this checkout, + // and still offers to take it off. Forgetting that leaves a contributor + // unable to tell their own changes from the patch's, and about to submit + // both as theirs. + await expect( reopened.getByRole( 'button', { name: 'Revert this patch', exact: true } ) ).toBeVisible( { + timeout: 30_000, + } ); + expect( read( site.dir, LOGIN ) ).toBe( `${ PATCHED_LOGIN }\n` ); + + // INVARIANT — and the offer is real, not just rendered. Reverting after a + // restart puts the checkout back. + await reopened.getByRole( 'button', { name: 'Revert this patch', exact: true } ).click(); + await expect( reopened.getByRole( 'button', { name: 'Revert this patch', exact: true } ) ).toHaveCount( 0, { + timeout: 60_000, + } ); + expect( read( site.dir, LOGIN ) ).toBe( `${ TRUNK_LOGIN }\n` ); +} ); + +test( "a site's tickets survive a restart, with the base each patch is measured against", async ( { session } ) => { + const site = await makeSite( session ); + const { page } = await session.start( site.settings ); + + await linkTicket( page, '60001' ); + write( site.dir, LOGIN, MY_EDIT ); + await page.getByRole( 'button', { name: 'Unlink', exact: true } ).click(); + await expect( page.getByLabel( 'Trac ticket number or URL' ).first() ).toBeVisible(); + await linkTicket( page, '60002' ); + + const { page: reopened } = await session.restart(); + + // INVARIANT — both tickets come back, and the parked one is still offered. + // A ticket that survives in Git but not in the app is work a contributor + // cannot reach from the interface. + await expect( reopened.getByText( '#60002', { exact: true } ).first() ).toBeVisible( { timeout: 30_000 } ); + // Matched on the sentence rather than on a button label: the row for another + // ticket reads "Continue working on #N" when nothing is linked and "You also + // have work on #N — switch" when something is, and after this restart + // something is. + await expect( reopened.getByText( /You also have work on #60001/ ).first() ).toBeVisible( { + timeout: 30_000, + } ); + + // CHARACTERISATION — and each branch keeps the commit its patch is measured + // from. Losing this is what #317 was: a ticket whose base is unknown can no + // longer say what the contributor changed. + const meta = session.readSettings().siteMeta[ site.dir ]; + expect( meta.branches[ 'ticket/60001' ].baseOid ).toBe( site.baseOid ); + expect( meta.branches[ 'ticket/60002' ].baseOid ).toBe( site.baseOid ); +} ); diff --git a/e2e/packaged/smoke.spec.js b/e2e/packaged/smoke.spec.js index 50c8e08..8c3a0a7 100644 --- a/e2e/packaged/smoke.spec.js +++ b/e2e/packaged/smoke.spec.js @@ -5,7 +5,7 @@ * The failures it exists to catch — asar layout, native module rebuilds, bundled * CLI resolution — do not reproduce under `npm start`. * - * Build it first (see docs/testing.md): + * Build it first (see TESTING.md): * npm run build:once && CSC_IDENTITY_AUTO_DISCOVERY=false npm run pack:dir * * It writes no state, so it deliberately does not use the session helper the @@ -127,7 +127,7 @@ const REQUIRED_MODULES = [ '@wp-playground/cli', 'fs-ext-extra-prebuilt' ]; */ function findPackagedBinary() { if ( ! fs.existsSync( DIST ) ) { - throw new Error( `No ${ DIST } directory. Run \`npm run pack:dir\` first — see docs/testing.md.` ); + throw new Error( `No ${ DIST } directory. Run \`npm run pack:dir\` first — see TESTING.md.` ); } if ( process.platform === 'darwin' ) { @@ -146,7 +146,7 @@ function findPackagedBinary() { if ( process.platform === 'win32' ) { const unpacked = path.join( DIST, 'win-unpacked' ); if ( ! fs.existsSync( unpacked ) ) { - throw new Error( `No ${ unpacked }. Run \`npm run pack:dir\` first — see docs/testing.md.` ); + throw new Error( `No ${ unpacked }. Run \`npm run pack:dir\` first — see TESTING.md.` ); } const exe = fs.readdirSync( unpacked ).find( ( f ) => f.endsWith( '.exe' ) ); if ( ! exe ) throw new Error( `No .exe in ${ unpacked }.` ); From 855bfcca6a1f28e6c26fbb7610c55e50a4c55428 Mon Sep 17 00:00:00 2001 From: JuanMa Date: Wed, 19 Aug 2026 16:08:36 +0200 Subject: [PATCH 45/53] Stop hard-wrapping prose in Markdown (#371) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Why Every `.md` file that carries repository instructions was hard-wrapped at roughly 100 columns, while `README.md` and the whole of `docs/` were not. Nothing wrote either convention down, so each new paragraph was a guess, and the guess kept landing on the wrapped side. Markdown imposes no line limit — a wrapped paragraph and a single long line render identically — so this was never a rule, only a habit that half the tree had. The habit has a cost the other half does not pay: text arrives pre-chopped when it is pasted into an issue or a chat, it does not reflow to the reader's width, and a one-word edit reshuffles every line beneath it into a diff that claims they changed. ## What changes Prose is no longer wrapped anywhere: one paragraph is one line, however long. That is the convention `README.md` and `docs/` already followed, now applied to the remaining 18 files, and written down in `AGENTS.md` so it stops being a guess. Line breaks that mean something are untouched — list items, table rows, headings, fenced code, VitePress `:::` containers, YAML frontmatter, and the body of an HTML comment all keep their shape. `.editorconfig` gains `max_line_length = off` for `[*.md]`, so an editor configured from it does not re-wrap on save. No prose was rewritten. The only content change in the whole diff is that a blockquote spanning several wrapped lines now carries one `>` instead of one per line. ## How to test this Platforms: any — nothing here is platform-specific, and no shipped code changed. **Starting state:** trunk checked out, `npm ci` done. 1. `npm run docs:build` — the user guide builds. Compare against a build of trunk: the rendered HTML is byte-identical on all 21 pages once VitePress's content hashes are normalised away. 2. Open any changed file and confirm no paragraph is split across lines, and that tables, lists, code blocks and the `:::` blocks in `docs/guide/getting-started.md` and `docs/guide/terminal.md` are intact. 3. `npm test` and `npm run lint` — both green, and both untouched by this. **What must not have happened:** a word lost, gained or reordered anywhere. That is the whole risk of a mechanical rewrite, and it is silent: nothing fails, the text is just quietly wrong. Verified by comparing every file against its `HEAD` version with all whitespace collapsed — identical, except the blockquote markers noted above — and by counting headings, list markers, table rows, code fences and `:::` lines per file before and after: unchanged in every file. Also: no VitePress container left broken. An earlier pass of this change joined a closing `:::` into the paragraph above it, which silently swallowed the title of four tips and a warning. The rendered-HTML comparison in step 1 is what caught it. ## Risks and limitations Diffs on documentation get coarser: change one word and GitHub marks the paragraph. `git diff --word-diff`, and GitHub's own intra-line highlighting, narrow it back down. This is the trade the convention accepts, and it is stated in `AGENTS.md`. The README's three release badges are now on one line rather than three. They render the same — they were always one paragraph — but adding a fourth badge means editing a long line. Nothing enforces the convention automatically. `.editorconfig` steers editors and `AGENTS.md` states the rule; neither fails CI. A markdownlint rule would, and is not worth a CI job for this. ## Related Follow-up to a review comment rather than an issue: the convention was noticed by its absence, not filed. ---
Design decisions and alternatives considered **Wrap at a fixed width instead.** The obvious reading of the problem was "TESTING.md exceeds 100 columns in 16 places", and the obvious fix was to re-wrap it to 100. That takes the habit as given. Since Markdown does not care, the question is which convention serves editing better, and the unwrapped half of the tree was already the answer. **Semantic line breaks** (one line per sentence or clause) keeps diffs narrow and lines short. It also asks every author to make a judgement call on every sentence, which is exactly the kind of rule that decays — and it still chops text on paste. **Leave `AGENTS.md` and `CONTRIBUTING.md` wrapped**, as the files most often reviewed line by line. Rejected: two conventions in one repository is what produced this in the first place. **A markdownlint check in CI.** It is the only thing that would actually enforce this, but it means a workflow, a config, and an exception list for long link targets — for a rule that costs nothing when it is broken.
Review outcome (required — see AGENTS.md) 1 `[fix here]` — found and fixed before this PR existed. The finding: closing `:::` lines of VitePress containers were being joined into the paragraph above, breaking four tips in `docs/guide/getting-started.md` and one warning in `docs/guide/terminal.md`. The containers still rendered, so the page did not error — the title line was simply absorbed into the body text. Fixed by treating `:::` as a block boundary, and confirmed by the rendered-HTML comparison, which now reports zero differing pages. Two smaller ones caught the same way, in the same pass: empty numbered list items (`1.` with nothing after it, in the PR template) were treated as prose and merged onto one line, and HTML comment bodies were being re-flowed, which mangled the templates a contributor reads while filling them in. Both fixed — empty list markers are list items, comment bodies are verbatim. The judgement pass was run in this session rather than dispatched to a subagent. For a mechanical rewrite whose correctness is decided by a byte-for-byte comparison of the rendered output, the check that matters is the comparison, and it is reproducible from step 1 above.
Implementation notes The rewrite was done by a throwaway script, not by hand, so that the transformation was uniform and could be re-run after each fix. It is not checked in: it has served its purpose, and a one-shot migration tool in the repository invites someone to run it again. What it treats as verbatim, and therefore never joins: YAML frontmatter, fenced code, table rows, headings, thematic breaks, HTML blocks, HTML comment bodies, link reference definitions, `:::` container markers, and any line ending in a hard break (two trailing spaces or a backslash — this tree has none). List items start a new line, including empty ones; a list item's continuation lines join into it. Consecutive blockquote lines join into a single `>` line. Three checks were run over every tracked `.md`, before and after: - whitespace-collapsed content identical (ignoring `>` markers), - per-file counts of headings, list markers, table rows, code fences and `:::` lines identical, - for `docs/`, a full VitePress build compared page by page against a build of `HEAD`, with content hashes normalised — 21 pages, zero differences.
Co-authored-by: Claude Opus 5 (1M context) --- .agents/skills/self-review/SKILL.md | 33 +-- .claude/skills/self-review/SKILL.md | 29 +- .editorconfig | 2 + .../instructions/code-review.instructions.md | 274 +++++------------- AGENTS.md | 170 ++++------- CLAUDE.md | 8 +- CONTRIBUTING.md | 126 ++------ README.md | 29 +- STATS.md | 33 +-- TESTING.md | 174 +++-------- docs/guide/creating-a-site.md | 4 +- docs/guide/database.md | 30 +- docs/guide/logs-and-debugging.md | 41 +-- docs/guide/mail.md | 28 +- docs/guide/managing-sites.md | 44 +-- docs/guide/terminal.md | 26 +- docs/guide/ticket-branches.md | 14 +- docs/guide/troubleshooting.md | 71 ++--- docs/guide/trunk-updates.md | 15 +- 19 files changed, 292 insertions(+), 859 deletions(-) diff --git a/.agents/skills/self-review/SKILL.md b/.agents/skills/self-review/SKILL.md index 396b85c..7d526d8 100644 --- a/.agents/skills/self-review/SKILL.md +++ b/.agents/skills/self-review/SKILL.md @@ -7,39 +7,22 @@ description: Review the current branch against this repo's architecture, securit Run the repo's review standard against the working branch, **before** the PR exists. -Nothing runs this in CI. It is the only review a change gets before a human reads it, which is why -it happens now rather than after: a finding fixed here costs one message, the same finding on the PR -costs a review cycle. +Nothing runs this in CI. It is the only review a change gets before a human reads it, which is why it happens now rather than after: a finding fixed here costs one message, the same finding on the PR costs a review cycle. ## Procedure -**Read [`.github/instructions/code-review.instructions.md`](../../../.github/instructions/code-review.instructions.md) -and follow it.** It is the specification for this task, not background reading — it carries the -procedure (establish the diff, run `npm run lint` and `npm test`, then the five dimensions) as well -as the invariants and the reporting bar. Do not restate it here; run it. +**Read [`.github/instructions/code-review.instructions.md`](../../../.github/instructions/code-review.instructions.md) and follow it.** It is the specification for this task, not background reading — it carries the procedure (establish the diff, run `npm run lint` and `npm test`, then the five dimensions) as well as the invariants and the reporting bar. Do not restate it here; run it. -That file is the single copy of the standard. It lives under `.github/instructions/` so Copilot code -review picks it up natively; every other agent, this one included, reaches it from here. Changes to -how reviews work go there, not into this wrapper. +That file is the single copy of the standard. It lives under `.github/instructions/` so Copilot code review picks it up natively; every other agent, this one included, reaches it from here. Changes to how reviews work go there, not into this wrapper. Two things this skill adds on top, both agent-neutral — apply whichever your agent can: -**Run the judgement pass in a fresh context.** The diff and the deterministic layer -(`npm run lint`, `npm test`) run inline. The five dimensions should be reviewed by a context that -did not write the change — a subagent, or a separate pass given only the diff and the instructions -file. If the session that wrote the code also grades it, it reviews its own reasoning and finds it -sound. +**Run the judgement pass in a fresh context.** The diff and the deterministic layer (`npm run lint`, `npm test`) run inline. The five dimensions should be reviewed by a context that did not write the change — a subagent, or a separate pass given only the diff and the instructions file. If the session that wrote the code also grades it, it reviews its own reasoning and finds it sound. -**Report, don't apply.** Surface findings in the chat. No GitHub comments, no files written — the PR -does not exist yet. Then offer; the author decides what is a real finding. +**Report, don't apply.** Surface findings in the chat. No GitHub comments, no files written — the PR does not exist yet. Then offer; the author decides what is a real finding. ## Notes -- This is the same skill as [`.claude/skills/self-review/`](../../../.claude/skills/self-review/), - placed here because agents built on the Agent Skills open standard (Command Code and others) - discover skills under `.agents/skills/` rather than `.claude/skills/`. Both are thin wrappers over - the one instructions file — neither is a second copy of the standard. -- The repo-specific knowledge this adds over a generic review: Electron's bundled Node, - `isomorphic-git`, `electron-store`, loopback binding, the Windows spawn shims. -- If a finding reveals a rule the instructions file does not yet cover, say so. It is meant to - accumulate what the project learns. +- This is the same skill as [`.claude/skills/self-review/`](../../../.claude/skills/self-review/), placed here because agents built on the Agent Skills open standard (Command Code and others) discover skills under `.agents/skills/` rather than `.claude/skills/`. Both are thin wrappers over the one instructions file — neither is a second copy of the standard. +- The repo-specific knowledge this adds over a generic review: Electron's bundled Node, `isomorphic-git`, `electron-store`, loopback binding, the Windows spawn shims. +- If a finding reveals a rule the instructions file does not yet cover, say so. It is meant to accumulate what the project learns. diff --git a/.claude/skills/self-review/SKILL.md b/.claude/skills/self-review/SKILL.md index 2c003a6..f00a443 100644 --- a/.claude/skills/self-review/SKILL.md +++ b/.claude/skills/self-review/SKILL.md @@ -7,36 +7,21 @@ description: Review the current branch against this repo's architecture, securit Run the repo's review standard against the working branch, **before** the PR exists. -Nothing runs this in CI. It is the only automated pass a change gets before a human reads it, which -is why it happens now rather than after: a finding fixed here costs one message, the same finding on -the PR costs a review cycle. +Nothing runs this in CI. It is the only automated pass a change gets before a human reads it, which is why it happens now rather than after: a finding fixed here costs one message, the same finding on the PR costs a review cycle. ## Procedure -**Read `.github/instructions/code-review.instructions.md` and follow it.** It is the specification -for this task, not background reading — it carries the procedure (establish the diff, run -`npm run lint` and `npm test`, then the five dimensions) as well as the invariants and the -reporting bar. Do not restate it here; run it. +**Read `.github/instructions/code-review.instructions.md` and follow it.** It is the specification for this task, not background reading — it carries the procedure (establish the diff, run `npm run lint` and `npm test`, then the five dimensions) as well as the invariants and the reporting bar. Do not restate it here; run it. -That file sits under `.github/instructions/` so Copilot code review picks it up natively rather -than needing a condensed second copy. It is the only copy of the standard; changes to how reviews -work go there, not here. +That file sits under `.github/instructions/` so Copilot code review picks it up natively rather than needing a condensed second copy. It is the only copy of the standard; changes to how reviews work go there, not here. Two things this skill adds on top: -**Dispatch the judgement pass to a subagent.** Steps 1-2 of the procedure — the diff and the -deterministic layer — run inline. Step 3, the five dimensions, goes to an `Explore` subagent given -the diff and the instructions file, and nothing else from this conversation. If the session that -wrote the code also reviews it, it reviews its own reasoning and finds it sound. Collect the -subagent's findings and report them. +**Dispatch the judgement pass to a subagent.** Steps 1-2 of the procedure — the diff and the deterministic layer — run inline. Step 3, the five dimensions, goes to an `Explore` subagent given the diff and the instructions file, and nothing else from this conversation. If the session that wrote the code also reviews it, it reviews its own reasoning and finds it sound. Collect the subagent's findings and report them. -**Report in the chat and stop there.** No GitHub comments, no files written — the PR does not exist -yet. Then offer; do not apply. The author decides what is a real finding. +**Report in the chat and stop there.** No GitHub comments, no files written — the PR does not exist yet. Then offer; do not apply. The author decides what is a real finding. ## Notes -- Complements the built-in `/code-review` and `/security-review`. What this adds is the - repo-specific knowledge: Electron's bundled Node, `isomorphic-git`, `electron-store`, loopback - binding, the Windows spawn shims. -- If a finding reveals a rule the instructions file does not yet cover, say so. It is meant to - accumulate what the project learns. +- Complements the built-in `/code-review` and `/security-review`. What this adds is the repo-specific knowledge: Electron's bundled Node, `isomorphic-git`, `electron-store`, loopback binding, the Windows spawn shims. +- If a finding reveals a rule the instructions file does not yet cover, say so. It is meant to accumulate what the project learns. diff --git a/.editorconfig b/.editorconfig index 7511ffa..1cb8aae 100644 --- a/.editorconfig +++ b/.editorconfig @@ -26,3 +26,5 @@ indent_size = 2 [*.md] trim_trailing_whitespace = false +# Prose is not wrapped here — one paragraph is one line. See AGENTS.md. +max_line_length = off diff --git a/.github/instructions/code-review.instructions.md b/.github/instructions/code-review.instructions.md index 7cdb0e4..9259b91 100644 --- a/.github/instructions/code-review.instructions.md +++ b/.github/instructions/code-review.instructions.md @@ -4,23 +4,13 @@ applyTo: "**" # Automated review rules -What an automated reviewer should look for in this repo, and how to run that review. Written to be -read by any agent, not one in particular — this is the single source of truth for the review -standard, and it is deliberately the only copy of it. +What an automated reviewer should look for in this repo, and how to run that review. Written to be read by any agent, not one in particular — this is the single source of truth for the review standard, and it is deliberately the only copy of it. -`AGENTS.md` and `.claude/skills/self-review/SKILL.md` point here rather than restate it. Copilot -needs no pointer: it reads `.github/instructions/*.instructions.md` natively, selecting them by -matching the `applyTo` glob above against the files in a pull request, so `**` means every PR gets -this. That is the whole reason the file lives at this path and not somewhere better-named — a -pointer would not have reached it, and a second condensed copy would have drifted. +`AGENTS.md` and `.claude/skills/self-review/SKILL.md` point here rather than restate it. Copilot needs no pointer: it reads `.github/instructions/*.instructions.md` natively, selecting them by matching the `applyTo` glob above against the files in a pull request, so `**` means every PR gets this. That is the whole reason the file lives at this path and not somewhere better-named — a pointer would not have reached it, and a second condensed copy would have drifted. -The procedure below assumes an agent that can run commands. Copilot cannot; it should skip to -**Scope** and treat the rest as the standard to review against. +The procedure below assumes an agent that can run commands. Copilot cannot; it should skip to **Scope** and treat the rest as the standard to review against. -Nothing runs this automatically. It is the author's pass, before a human reads the diff — which is -the point: a finding fixed now costs one message, the same finding on the PR costs a review cycle. -The producer is responsible for handing over a reviewable change, not the reviewer for -reconstructing the context. +Nothing runs this automatically. It is the author's pass, before a human reads the diff — which is the point: a finding fixed now costs one message, the same finding on the PR costs a review cycle. The producer is responsible for handing over a reviewable change, not the reviewer for reconstructing the context. ## Running the review @@ -32,8 +22,7 @@ git diff --stat origin/trunk...HEAD git diff origin/trunk...HEAD ``` -Include uncommitted work if there is any (`git status --short`, `git diff`) — the author is about -to commit it, so it is in scope. +Include uncommitted work if there is any (`git status --short`, `git diff`) — the author is about to commit it, so it is in scope. **2. Run the deterministic layer first**, so mechanical findings never reach the judgement pass: @@ -42,229 +31,113 @@ npm run lint npm test ``` -Both are repo-wide and both are clean on `trunk` — the lint backlog was cleared in #117, which is -why `lint.yml` runs `eslint .` rather than linting only the changed files. So any failure here -belongs to the branch. Report both results plainly. +Both are repo-wide and both are clean on `trunk` — the lint backlog was cleared in #117, which is why `lint.yml` runs `eslint .` rather than linting only the changed files. So any failure here belongs to the branch. Report both results plainly. -If ESLint fails, `npm run lint:fix` handles the mechanical part. Check what it rewrote before -committing: it is also repo-wide, so a rule that starts flagging untouched files would pull them -into the diff. Do not hand-fix what the fixer handles. +If ESLint fails, `npm run lint:fix` handles the mechanical part. Check what it rewrote before committing: it is also repo-wide, so a rule that starts flagging untouched files would pull them into the diff. Do not hand-fix what the fixer handles. -**3. Review the five dimensions below.** Read the surrounding files, not just the diff — a diff -rarely shows that a helper already handles the case, and the reporting bar requires verifying a -finding before asserting it. +**3. Review the five dimensions below.** Read the surrounding files, not just the diff — a diff rarely shows that a helper already handles the case, and the reporting bar requires verifying a finding before asserting it. -Where the tool allows it, run this pass with fresh context — a subagent given the diff and this -file, rather than the session that wrote the code. Nothing runs this review independently any more, -so a reviewer that already believes the change is correct is the main way it stops working. +Where the tool allows it, run this pass with fresh context — a subagent given the diff and this file, rather than the session that wrote the code. Nothing runs this review independently any more, so a reviewer that already believes the change is correct is the main way it stops working. -**4. Report, then offer.** Format below. Ask before changing anything: the author decides what is a -real finding, which is the whole reason this happens before the PR rather than after. +**4. Report, then offer.** Format below. Ask before changing anything: the author decides what is a real finding, which is the whole reason this happens before the PR rather than after. ## Scope -Review **judgement**, not style. ESLint (`eslint.config.mjs`, `npm run lint`) already covers -formatting, unused variables, JSDoc, React hooks and the rest of the mechanical layer. Repeating -those here buries the findings that matter. When style and process nits share space with -substantive findings, authors learn to skim past them — and the substantive findings go with -them. +Review **judgement**, not style. ESLint (`eslint.config.mjs`, `npm run lint`) already covers formatting, unused variables, JSDoc, React hooks and the rest of the mechanical layer. Repeating those here buries the findings that matter. When style and process nits share space with substantive findings, authors learn to skim past them — and the substantive findings go with them. -Five dimensions, in priority order: **architecture · security · performance · cross-platform · -tests**. +Five dimensions, in priority order: **architecture · security · performance · cross-platform · tests**. ## What this app is -An Electron app that sets up a `wordpress-develop` environment with **zero prerequisites** — no -Git, Node, npm or Docker on the host. Everything runs as JS/WASM inside the Electron process. Its -users are Contributor Day newcomers on macOS and Windows, often on locked-down machines. +An Electron app that sets up a `wordpress-develop` environment with **zero prerequisites** — no Git, Node, npm or Docker on the host. Everything runs as JS/WASM inside the Electron process. Its users are Contributor Day newcomers on macOS and Windows, often on locked-down machines. -That premise is what most of the rules below protect. A change that quietly reintroduces a host -dependency defeats the entire point of the project. +That premise is what most of the rules below protect. A change that quietly reintroduces a host dependency defeats the entire point of the project. --- ## 1. Architecture -Invariants. Breaking one is a `[fix here]` finding even when the code works on the author's -machine. - -**Child processes run on Electron's bundled Node, never the host's.** Spawns go through -`process.execPath` with `ELECTRON_RUN_AS_NODE=1` in the environment (see `runNpmWithEngineRetry` -and the `playground:start` handler in `src/main.js`, and `buildChildEnv`). A bare `spawn('node')` -or `spawn('npm')` assumes a host toolchain that is not there. On Windows child `npm` processes -find a `node` at all only because of the `PATH` shim built by `ensureNodeShimDir` — new spawns -must inherit that environment rather than build their own. - -**Git never shells out.** All Git operations go through `isomorphic-git`. Patch and diff -generation is hand-rolled in `src/main.js` (stage untracked files, diff working tree against -`origin/trunk`) precisely because there is no `git` binary to call. Any `spawn('git')` or -`exec('git ...')` is a regression. - -**`electron-store` is the only persistence layer.** No database, no sidecar JSON. It holds the -site registry and per-site metadata and is the single source of truth for "known sites". A second -store, a cache file, or state parked in a module-level variable that outlives a handler is -architectural drift — flag it. - -**Long-running output streams; it is not returned.** Installs, scripts and the Playground server -push output to the renderer through correlated IDs (`installId`, `runId`, `sitePath`) over -dedicated channels. See the handler pairs in `src/preload.js`. A new long-running operation that -resolves its `invoke()` with accumulated output instead of streaming will look fine on a fast -machine and hang the UI on a slow one. - -**The renderer↔main boundary is fixed.** New surface means a `contextBridge` entry in -`src/preload.js` plus an `ipcMain.handle` in `src/main.js`. `contextIsolation: true` and -`nodeIntegration: false` are set on every `BrowserWindow` — the main window and both patch -windows — and are not negotiable. Flag any window created without them, and any attempt to widen -the bridge by exposing `ipcRenderer` itself rather than named functions. - -**Failure paths are part of the architecture.** The users cannot debug: a swallowed error is -"the button did nothing" at a Contributor Day, with nobody able to diagnose it. Every spawn -handles both `error` and `close` — Node documents that exit events "may or may not" follow a -spawn failure, and `runNpmWithEngineRetry` in `src/main.js` shows the expected shape. No silent -`catch`: an error that never reaches the renderer's log stream did not happen, from the user's -chair. And a setup that dies halfway must leave the site registry consistent — no phantom site -in `electron-store` for a directory that was never finished. - -**Renderer decisions live in modules, not in `index.jsx`.** `src/renderer/index.jsx` mounts itself -at module scope and cannot be loaded without a DOM, so nothing in the suite can reach it: a -decision made there is untestable by construction. Anything with more than one branch — a string -the user reads, a path joined, a status derived, a command parsed — belongs in a -`src/renderer/*.cjs` module with its own test, leaving the component holding JSX, state -assignments and the call. `site-folder.cjs` and `open-failure.cjs` are the shape. - -This is the direction chosen in #216 over building a DOM harness, which was judged too much setup -for the coverage it buys against a 4000-line component. The consequence is that it is enforced -here, by review, and nowhere else — `no-unused-vars` catches a module whose last call site is -deleted, but nothing catches a second code path that answers the same question inline. That is -exactly what #180 was. Reopen the harness question if a bug ever lands in the assignments the -modules cannot absorb. - -**New dependencies are findings by default.** Native compilation or a host binary breaks the -zero-prerequisite promise on user machines. A dependency with lifecycle scripts also needs an -`allowScripts` entry in `package.json` — the mechanism already exists, and a missing entry means -its install scripts silently don't run. - -**Changing the shape of what `electron-store` holds needs a migration path.** Existing users -have site registries on disk; a renamed or restructured key silently orphans their sites. +Invariants. Breaking one is a `[fix here]` finding even when the code works on the author's machine. + +**Child processes run on Electron's bundled Node, never the host's.** Spawns go through `process.execPath` with `ELECTRON_RUN_AS_NODE=1` in the environment (see `runNpmWithEngineRetry` and the `playground:start` handler in `src/main.js`, and `buildChildEnv`). A bare `spawn('node')` or `spawn('npm')` assumes a host toolchain that is not there. On Windows child `npm` processes find a `node` at all only because of the `PATH` shim built by `ensureNodeShimDir` — new spawns must inherit that environment rather than build their own. + +**Git never shells out.** All Git operations go through `isomorphic-git`. Patch and diff generation is hand-rolled in `src/main.js` (stage untracked files, diff working tree against `origin/trunk`) precisely because there is no `git` binary to call. Any `spawn('git')` or `exec('git ...')` is a regression. + +**`electron-store` is the only persistence layer.** No database, no sidecar JSON. It holds the site registry and per-site metadata and is the single source of truth for "known sites". A second store, a cache file, or state parked in a module-level variable that outlives a handler is architectural drift — flag it. + +**Long-running output streams; it is not returned.** Installs, scripts and the Playground server push output to the renderer through correlated IDs (`installId`, `runId`, `sitePath`) over dedicated channels. See the handler pairs in `src/preload.js`. A new long-running operation that resolves its `invoke()` with accumulated output instead of streaming will look fine on a fast machine and hang the UI on a slow one. + +**The renderer↔main boundary is fixed.** New surface means a `contextBridge` entry in `src/preload.js` plus an `ipcMain.handle` in `src/main.js`. `contextIsolation: true` and `nodeIntegration: false` are set on every `BrowserWindow` — the main window and both patch windows — and are not negotiable. Flag any window created without them, and any attempt to widen the bridge by exposing `ipcRenderer` itself rather than named functions. + +**Failure paths are part of the architecture.** The users cannot debug: a swallowed error is "the button did nothing" at a Contributor Day, with nobody able to diagnose it. Every spawn handles both `error` and `close` — Node documents that exit events "may or may not" follow a spawn failure, and `runNpmWithEngineRetry` in `src/main.js` shows the expected shape. No silent `catch`: an error that never reaches the renderer's log stream did not happen, from the user's chair. And a setup that dies halfway must leave the site registry consistent — no phantom site in `electron-store` for a directory that was never finished. + +**Renderer decisions live in modules, not in `index.jsx`.** `src/renderer/index.jsx` mounts itself at module scope and cannot be loaded without a DOM, so nothing in the suite can reach it: a decision made there is untestable by construction. Anything with more than one branch — a string the user reads, a path joined, a status derived, a command parsed — belongs in a `src/renderer/*.cjs` module with its own test, leaving the component holding JSX, state assignments and the call. `site-folder.cjs` and `open-failure.cjs` are the shape. + +This is the direction chosen in #216 over building a DOM harness, which was judged too much setup for the coverage it buys against a 4000-line component. The consequence is that it is enforced here, by review, and nowhere else — `no-unused-vars` catches a module whose last call site is deleted, but nothing catches a second code path that answers the same question inline. That is exactly what #180 was. Reopen the harness question if a bug ever lands in the assignments the modules cannot absorb. + +**New dependencies are findings by default.** Native compilation or a host binary breaks the zero-prerequisite promise on user machines. A dependency with lifecycle scripts also needs an `allowScripts` entry in `package.json` — the mechanism already exists, and a missing entry means its install scripts silently don't run. + +**Changing the shape of what `electron-store` holds needs a migration path.** Existing users have site registries on disk; a renamed or restructured key silently orphans their sites. ## 2. Security -The threat model is not a hostile user — it is a contributor's laptop on a conference or café -network, running a WordPress with `admin`/`admin`. +The threat model is not a hostile user — it is a contributor's laptop on a conference or café network, running a WordPress with `admin`/`admin`. -**Validate what crosses IPC.** Every `ipcMain.handle` argument comes from the renderer and is -untrusted input. Paths get used for file operations, URLs get opened. +**Validate what crosses IPC.** Every `ipcMain.handle` argument comes from the renderer and is untrusted input. Paths get used for file operations, URLs get opened. -> Worked example, kept because it shows the shape rather than a single bug: `url:open` in -> `src/main.js` used to pass its argument straight to `shell.openExternal()`, so `file://` and -> `javascript:` got through to the OS handler. It now goes through `src/external-url.js`, which -> refuses anything outside an http/https allow-list and — the part that is easy to miss — hands -> the OS the *parsed* address rather than the caller's string, because the URL parser strips -> control characters and a validator that checks one string while the caller opens another has -> not checked anything. Look for both halves in any new handler that takes a URL or a path. +> Worked example, kept because it shows the shape rather than a single bug: `url:open` in `src/main.js` used to pass its argument straight to `shell.openExternal()`, so `file://` and `javascript:` got through to the OS handler. It now goes through `src/external-url.js`, which refuses anything outside an http/https allow-list and — the part that is easy to miss — hands the OS the *parsed* address rather than the caller's string, because the URL parser strips control characters and a validator that checks one string while the caller opens another has not checked anything. Look for both halves in any new handler that takes a URL or a path. -**Servers stay on loopback.** `src/bind-loopback.js` patches `net.Server.prototype.listen` so -Playground's servers bind to `127.0.0.1` instead of every interface. Any new listener that is -created before that patch is applied, or that passes an explicit non-loopback host, exposes the -contributor's site to the local network. This is what the file exists to prevent — read its -header comment before deciding a change is safe. +**Servers stay on loopback.** `src/bind-loopback.js` patches `net.Server.prototype.listen` so Playground's servers bind to `127.0.0.1` instead of every interface. Any new listener that is created before that patch is applied, or that passes an explicit non-loopback host, exposes the contributor's site to the local network. This is what the file exists to prevent — read its header comment before deciding a change is safe. -**Never `shell: true`.** Existing spawns pass `shell: false` deliberately. A shell turns any -path containing a space or a quote into a command-injection vector, and contributor directory -names are user-chosen. The Windows `.cmd` shim path in `src/win-spawn-patch.js` is the one -audited exception; new code should not add another. +**Never `shell: true`.** Existing spawns pass `shell: false` deliberately. A shell turns any path containing a space or a quote into a command-injection vector, and contributor directory names are user-chosen. The Windows `.cmd` shim path in `src/win-spawn-patch.js` is the one audited exception; new code should not add another. -**No secrets in the repo, and none in logs.** Pay particular attention to -`scripts/azure-sign.cjs` and `fastlane/`. Signing credentials arrive as environment variables and -must not be echoed into child-process output, which is streamed to the renderer and written to -disk by `electron-log`. +**No secrets in the repo, and none in logs.** Pay particular attention to `scripts/azure-sign.cjs` and `fastlane/`. Signing credentials arrive as environment variables and must not be echoed into child-process output, which is streamed to the renderer and written to disk by `electron-log`. -**Untrusted archives and downloads.** Anything unzipped or fetched into a user directory should -be checked for path traversal (`../` in archive entries) before extraction. +**Untrusted archives and downloads.** Anything unzipped or fetched into a user directory should be checked for path traversal (`../` in archive entries) before extraction. ## 3. Performance -**The main process must not block.** It runs the UI. Synchronous filesystem calls, large -`JSON.parse`, or hashing on a path that a handler can reach will freeze the whole window. `fs` -sync calls during startup or inside an `ipcMain.handle` deserve a flag; the same call in a -one-shot build script does not. +**The main process must not block.** It runs the UI. Synchronous filesystem calls, large `JSON.parse`, or hashing on a path that a handler can reach will freeze the whole window. `fs` sync calls during startup or inside an `ipcMain.handle` deserve a flag; the same call in a one-shot build script does not. -**Log output is unbounded by nature.** `npm install` on `wordpress-develop` produces a lot of it. -Watch for per-chunk work that is quadratic, and for buffers that accumulate the full output with -no ceiling — see `src/log-lines.js` for how line splitting is done today. +**Log output is unbounded by nature.** `npm install` on `wordpress-develop` produces a lot of it. Watch for per-chunk work that is quadratic, and for buffers that accumulate the full output with no ceiling — see `src/log-lines.js` for how line splitting is done today. -**Work should not scale with the site registry.** Anything that walks every known site, or stats -every directory, on each render or each IPC call will degrade as a contributor accumulates sites. +**Work should not scale with the site registry.** Anything that walks every known site, or stats every directory, on each render or each IPC call will degrade as a contributor accumulates sites. -Flag performance only where there is a plausible path to a user noticing it. Speculative -micro-optimisation is noise. +Flag performance only where there is a plausible path to a user noticing it. Speculative micro-optimisation is noise. ## 4. Cross-platform -macOS and Windows are the primary targets; Linux artifacts are published too. CI runs the unit -suite on macOS and Windows, but plenty gets past it. +macOS and Windows are the primary targets; Linux artifacts are published too. CI runs the unit suite on macOS and Windows, but plenty gets past it. -**Paths.** Compose with `path.join` / `path.resolve`, never string concatenation with `/`. Do not -compare paths case-sensitively — Windows and default macOS filesystems are case-insensitive. Do -not assume a path has no spaces; contributors pick their own directories. +**Paths.** Compose with `path.join` / `path.resolve`, never string concatenation with `/`. Do not compare paths case-sensitively — Windows and default macOS filesystems are case-insensitive. Do not assume a path has no spaces; contributors pick their own directories. -**Killing processes is platform-split.** POSIX relies on the child being a process-group leader -(`detached: true`) so the whole tree can be signalled; Windows uses `taskkill /T`. Both live in -`src/kill-tree.js`. A new spawn that does not set `detached` correctly, or that is terminated with -a bare `child.kill()`, will leave orphaned processes on one platform or the other. +**Killing processes is platform-split.** POSIX relies on the child being a process-group leader (`detached: true`) so the whole tree can be signalled; Windows uses `taskkill /T`. Both live in `src/kill-tree.js`. A new spawn that does not set `detached` correctly, or that is terminated with a bare `child.kill()`, will leave orphaned processes on one platform or the other. -**Windows specifics.** Executables need their extension (`.cmd`, `.bat`, `.exe`) resolved; `EPERM` -and `EINVAL` have Windows-specific causes. `src/win-spawn-patch.js` documents the traps that have -already bitten — consult it rather than re-deriving them. +**Windows specifics.** Executables need their extension (`.cmd`, `.bat`, `.exe`) resolved; `EPERM` and `EINVAL` have Windows-specific causes. `src/win-spawn-patch.js` documents the traps that have already bitten — consult it rather than re-deriving them. -**`windowsHide: true` turns on the child's subsystem, not on whether anyone reads its output.** -Node sets `CREATE_NO_WINDOW` and STARTUPINFO's "start hidden" together; which of the two the child -honors is what differs. A console application takes the first and gets a console that is never -displayed — the flashing fix, and why `src/kill-tree.js` sets it on `taskkill` even though nothing -reads that output. A GUI application takes the second, and one that passes it through to its first -window — Chromium does, so VS Code and Cursor both — launches invisible while the spawn still -reports success (#181). So: set it on a console child; leave it off a child whose window is the -point. `src/editor-launch.js` is the only case of the second kind. +**`windowsHide: true` turns on the child's subsystem, not on whether anyone reads its output.** Node sets `CREATE_NO_WINDOW` and STARTUPINFO's "start hidden" together; which of the two the child honors is what differs. A console application takes the first and gets a console that is never displayed — the flashing fix, and why `src/kill-tree.js` sets it on `taskkill` even though nothing reads that output. A GUI application takes the second, and one that passes it through to its first window — Chromium does, so VS Code and Cursor both — launches invisible while the spawn still reports success (#181). So: set it on a console child; leave it off a child whose window is the point. `src/editor-launch.js` is the only case of the second kind. **Line endings** matter when generating patches, which are destined for Trac. -**Electron's Node version is a real constraint.** It is set independently of `.nvmrc` and the two -have drifted before (issues #37 / #46), which is why the suite runs twice. A change that depends -on a newer Node API needs to hold on whichever of the two is older. +**Electron's Node version is a real constraint.** It is set independently of `.nvmrc` and the two have drifted before (issues #37 / #46), which is why the suite runs twice. A change that depends on a newer Node API needs to hold on whichever of the two is older. ## 5. Tests -**A new feature or bugfix without a test is a finding.** Not a suggestion in a footer — a -finding, with the same severity-and-scope labelling as everything else. The suite is -`node --test` over `test/*.test.cjs`; new tests follow the patterns already there. +**A new feature or bugfix without a test is a finding.** Not a suggestion in a footer — a finding, with the same severity-and-scope labelling as everything else. The suite is `node --test` over `test/*.test.cjs`; new tests follow the patterns already there. -**A bugfix's test must reproduce the bug**: fail on the old code, pass on the new. A test -written after the fix that never saw the bug proves far less — it pins the current behaviour, -whatever that is, rather than the correction. When reviewing a bugfix, check whether the test -would actually have caught it. +**A bugfix's test must reproduce the bug**: fail on the old code, pass on the new. A test written after the fix that never saw the bug proves far less — it pins the current behaviour, whatever that is, rather than the correction. When reviewing a bugfix, check whether the test would actually have caught it. **Watch for tests that are green while proving nothing.** The known shapes in this repo: - Mocking the very thing the test claims to verify. -- Asserting implementation details — exact log strings, call order of internals — instead of - observable behaviour. These break on harmless refactors and survive real bugs. -- Passing on only one of the two Node runtimes. CI runs the suite on `.nvmrc`'s Node *and* on - Electron's bundled Node because the two are set independently and have drifted; a test (or the - code under it) that assumes the newer of the two is broken on the other. - -**Platform-conditional code needs both branches tested — from one machine.** The house pattern -is dependency injection, not skipping: `test/win-spawn-patch.test.cjs` exercises the Windows -paths from macOS by injecting `platform`, lookup and env rather than reading `process.platform`. -A new platform split tested with `it.skip` on the other OS is a coverage hole CI will never -close, since the suite runs on both platforms but each skips the other's branch. - -**Renderer logic is tested through its module, so check it has one.** A PR that puts a branch -inside `src/renderer/index.jsx` has written code the suite cannot reach — see the invariant in §1. -The finding is the missing module, not the missing test. - -**Scope stays proportional.** Missing tests on a touched line of legacy code is `[follow-up]`, -not `[fix here]` — the strong rule applies to what the PR introduces, not to everything it -brushes against. +- Asserting implementation details — exact log strings, call order of internals — instead of observable behaviour. These break on harmless refactors and survive real bugs. +- Passing on only one of the two Node runtimes. CI runs the suite on `.nvmrc`'s Node *and* on Electron's bundled Node because the two are set independently and have drifted; a test (or the code under it) that assumes the newer of the two is broken on the other. + +**Platform-conditional code needs both branches tested — from one machine.** The house pattern is dependency injection, not skipping: `test/win-spawn-patch.test.cjs` exercises the Windows paths from macOS by injecting `platform`, lookup and env rather than reading `process.platform`. A new platform split tested with `it.skip` on the other OS is a coverage hole CI will never close, since the suite runs on both platforms but each skips the other's branch. + +**Renderer logic is tested through its module, so check it has one.** A PR that puts a branch inside `src/renderer/index.jsx` has written code the suite cannot reach — see the invariant in §1. The finding is the missing module, not the missing test. + +**Scope stays proportional.** Missing tests on a touched line of legacy code is `[follow-up]`, not `[fix here]` — the strong rule applies to what the PR introduces, not to everything it brushes against. --- @@ -272,28 +145,17 @@ brushes against. **Every finding carries a dimension, a severity and a scope.** -- Scope is `[fix here]` or `[follow-up]`. Use `[follow-up]` for cross-cutting refactors and - anything the PR did not introduce. This gives the author a defensible "noted, separate PR" - rather than a finding that looks ignored. +- Scope is `[fix here]` or `[follow-up]`. Use `[follow-up]` for cross-cutting refactors and anything the PR did not introduce. This gives the author a defensible "noted, separate PR" rather than a finding that looks ignored. - Severity: 🔴 high, 🟡 medium, 🔵 low. -**Structure**: counts first (`2 [fix here] · 1 [follow-up]`), then one finding per entry carrying -its dimension, severity, scope, `file:line`, and what actually goes wrong. Style and process -observations go last, grouped and brief — never mixed in among the findings. +**Structure**: counts first (`2 [fix here] · 1 [follow-up]`), then one finding per entry carrying its dimension, severity, scope, `file:line`, and what actually goes wrong. Style and process observations go last, grouped and brief — never mixed in among the findings. -Where this runs before the PR exists, that report goes in the chat: no GitHub comments, no files -written. Where it runs on a PR, `[fix here]` findings become inline comments on the exact lines and -the counts go in a single summary comment, with the style notes in a collapsed `
` block. +Where this runs before the PR exists, that report goes in the chat: no GitHub comments, no files written. Where it runs on a PR, `[fix here]` findings become inline comments on the exact lines and the counts go in a single summary comment, with the style notes in a collapsed `
` block. -**On a re-run, reconcile — do not re-review from scratch.** Mark each earlier finding resolved, -still open, or obsolete. Re-asserting a fixed finding is the fastest way to get the whole review -ignored. +**On a re-run, reconcile — do not re-review from scratch.** Mark each earlier finding resolved, still open, or obsolete. Re-asserting a fixed finding is the fastest way to get the whole review ignored. -**Say when there is nothing.** "No findings across the five dimensions" in one line is a good -review. Do not pad. Do not restate what the PR does — the author knows. +**Say when there is nothing.** "No findings across the five dimensions" in one line is a good review. Do not pad. Do not restate what the PR does — the author knows. -**Verify before claiming.** Read the surrounding file before asserting an invariant is broken; -the diff alone often does not show that a helper already handles the case. A confident wrong -finding costs more than a missed one. +**Verify before claiming.** Read the surrounding file before asserting an invariant is broken; the diff alone often does not show that a helper already handles the case. A confident wrong finding costs more than a missed one. **Never approve, request changes, or merge.** Post comments only. The human decides. diff --git a/AGENTS.md b/AGENTS.md index c79b537..c727421 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,170 +1,98 @@ # AGENTS.md -Instructions for AI coding agents working in this repository. Tool-neutral and canonical — -`CLAUDE.md` points here rather than repeating it. +Instructions for AI coding agents working in this repository. Tool-neutral and canonical — `CLAUDE.md` points here rather than repeating it. ## Where things are, whatever agent you use Two files, and neither is specific to one tool despite what their paths suggest: -**The review standard** — -[`.github/instructions/code-review.instructions.md`](.github/instructions/code-review.instructions.md). -The five dimensions, this project's invariants, the procedure to run them, and the reporting -format. Read it directly if your agent has not already. +**The review standard** — [`.github/instructions/code-review.instructions.md`](.github/instructions/code-review.instructions.md). The five dimensions, this project's invariants, the procedure to run them, and the reporting format. Read it directly if your agent has not already. -It sits under `.github/instructions/` because Copilot code review reads that directory natively and -follows no links out of it. Anywhere better-named would have meant maintaining a condensed second -copy for Copilot, which would drift. Every other agent reaches it from here. +It sits under `.github/instructions/` because Copilot code review reads that directory natively and follows no links out of it. Anywhere better-named would have meant maintaining a condensed second copy for Copilot, which would drift. Every other agent reaches it from here. -**The review as a skill** — a thin `SKILL.md` wrapper over the file above, in two locations because -no single skills directory is read by every agent: +**The review as a skill** — a thin `SKILL.md` wrapper over the file above, in two locations because no single skills directory is read by every agent: -- [`.claude/skills/self-review/`](.claude/skills/self-review/) — Claude Code and Copilot. In Claude - Code it is `/self-review`. -- [`.agents/skills/self-review/`](.agents/skills/self-review/) — the Agent Skills open-standard path - that Command Code and others scan. +- [`.claude/skills/self-review/`](.claude/skills/self-review/) — Claude Code and Copilot. In Claude Code it is `/self-review`. +- [`.agents/skills/self-review/`](.agents/skills/self-review/) — the Agent Skills open-standard path that Command Code and others scan. -Both are pointers to the one instructions file, not copies of the standard. If your agent looks -somewhere else again (`.github/skills/`, `.cursor/skills/`, `.codex/skills/`, or its own -convention), add a wrapper there or skip it entirely and follow the instructions file — that is -where all the content lives. The wrapper only adds two things: run the judgement pass in a fresh -context, and report without touching GitHub. +Both are pointers to the one instructions file, not copies of the standard. If your agent looks somewhere else again (`.github/skills/`, `.cursor/skills/`, `.codex/skills/`, or its own convention), add a wrapper there or skip it entirely and follow the instructions file — that is where all the content lives. The wrapper only adds two things: run the judgement pass in a fresh context, and report without touching GitHub. -In Codex, `/review` is the built-in user-facing review command. Whenever `/review` runs, read and -follow [`.github/instructions/code-review.instructions.md`](.github/instructions/code-review.instructions.md) -in full as the review standard. `self-review` is the local skill name, not a Codex command; do not -tell users to invoke `self-review`. +In Codex, `/review` is the built-in user-facing review command. Whenever `/review` runs, read and follow [`.github/instructions/code-review.instructions.md`](.github/instructions/code-review.instructions.md) in full as the review standard. `self-review` is the local skill name, not a Codex command; do not tell users to invoke `self-review`. -There is deliberately no per-tool copy of the *standard*. A wrapper is a few lines that defer to it; -duplicating the standard itself is the thing to avoid — if you find yourself doing that, fix the -pointer, not the number of copies. +There is deliberately no per-tool copy of the *standard*. A wrapper is a few lines that defer to it; duplicating the standard itself is the thing to avoid — if you find yourself doing that, fix the pointer, not the number of copies. ## What this is -An Electron desktop app ("WordPress Contributor Toolkit") that sets up a full WordPress core -(`wordpress-develop`) dev environment with zero prerequisites — no Git, Node, npm, or Docker -required on the host. Everything is bundled and run as JS/WASM inside the Electron process. Built -to fix a Contributor Day problem: newcomers burning the whole session on local setup instead of -contributing. Still labeled "experimental." +An Electron desktop app ("WordPress Contributor Toolkit") that sets up a full WordPress core (`wordpress-develop`) dev environment with zero prerequisites — no Git, Node, npm, or Docker required on the host. Everything is bundled and run as JS/WASM inside the Electron process. Built to fix a Contributor Day problem: newcomers burning the whole session on local setup instead of contributing. Still labeled "experimental." ## Before opening a pull request -Run the review in `.github/instructions/code-review.instructions.md` against the branch, and fix or -consciously defer every finding. Summarise the outcome in the pull request description — counts, -what was fixed, what was left as a follow-up and why. +Run the review in `.github/instructions/code-review.instructions.md` against the branch, and fix or consciously defer every finding. Summarise the outcome in the pull request description — counts, what was fixed, what was left as a follow-up and why. -Before reporting a GitHub workflow complete, verify every requested final state on GitHub — for -example, distinguish a merged pull request from one that is merely closed, and confirm that an -issue was closed by the intended pull request rather than only by a comment. +Before reporting a GitHub workflow complete, verify every requested final state on GitHub — for example, distinguish a merged pull request from one that is merely closed, and confirm that an issue was closed by the intended pull request rather than only by a comment. -Nothing enforces this. There is no automated review on pull requests, by design: it would mean -storing an AI provider credential as a secret in a public repository. This pass is what stands in -its place, so skipping it means a human reviewer is the first reader of the diff. +Nothing enforces this. There is no automated review on pull requests, by design: it would mean storing an AI provider credential as a secret in a public repository. This pass is what stands in its place, so skipping it means a human reviewer is the first reader of the diff. -That file carries the procedure as well as the standard. Follow it rather than improvising a -review. +That file carries the procedure as well as the standard. Follow it rather than improvising a review. ### The pull request description follows the template -[`.github/pull_request_template.md`](.github/pull_request_template.md) is the shape, and GitHub -loads it into every new pull request automatically — including ones opened with `gh pr create`, as -long as you do not pass a `--body` that replaces it. Fill it in rather than writing your own -structure. +[`.github/pull_request_template.md`](.github/pull_request_template.md) is the shape, and GitHub loads it into every new pull request automatically — including ones opened with `gh pr create`, as long as you do not pass a `--body` that replaces it. Fill it in rather than writing your own structure. -The rule it is built around: **a reviewer understands the change in five minutes.** So what stays -visible is Why, What changes, How to test this, Risks, Related — and everything else goes in a -`
` block, collapsed by default. Depth is not the enemy of a readable PR; depth *in the way* -is. Do not delete detail to hit the five minutes, move it. +The rule it is built around: **a reviewer understands the change in five minutes.** So what stays visible is Why, What changes, How to test this, Risks, Related — and everything else goes in a `
` block, collapsed by default. Depth is not the enemy of a readable PR; depth *in the way* is. Do not delete detail to hit the five minutes, move it. -**One template, not one per kind of change.** GitHub shows no picker when a pull request is opened — -selecting among several requires appending `?template=name.md` to the URL, which nobody remembers, -so the default loads anyway. The template is written to serve a fix, a feature and a process change -equally, and calls out the three places where they genuinely differ: a fix names its root cause and -the test that fails without it, a feature names what it deliberately leaves out and shows its -surface, and either way the testing steps follow the path a contributor actually takes. +**One template, not one per kind of change.** GitHub shows no picker when a pull request is opened — selecting among several requires appending `?template=name.md` to the URL, which nobody remembers, so the default loads anyway. The template is written to serve a fix, a feature and a process change equally, and calls out the three places where they genuinely differ: a fix names its root cause and the test that fails without it, a feature names what it deliberately leaves out and shows its surface, and either way the testing steps follow the path a contributor actually takes. -That includes the review outcome AGENTS.md requires below: it lives in a collapsed block, with the -headline count surfaced in **Risks and limitations** when it changes how the PR should be read. +That includes the review outcome AGENTS.md requires below: it lives in a collapsed block, with the headline count surfaced in **Risks and limitations** when it changes how the PR should be read. -Titles are `[Action] [what] [where or why]` — "Fix the patch panel's empty diff after a trunk -update", not "Fix bug". +Titles are `[Action] [what] [where or why]` — "Fix the patch panel's empty diff after a trunk update", not "Fix bug". -If the diff is over ~800 lines, the first question is whether it should be two pull requests. A -stacked pair reviews faster than one that nobody wants to start. +If the diff is over ~800 lines, the first question is whether it should be two pull requests. A stacked pair reviews faster than one that nobody wants to start. ### Every pull request says how to test it by hand -A **How to test this** section is required, not optional, and a green test suite does not replace -it. This app's failures live where the unit tests cannot go: a real clone of `wordpress-develop`, a -`node_modules` that takes minutes to install, an OS file dialog, a Windows path with a space in it. -The suite proves the logic; only a person driving the app proves the feature. +A **How to test this** section is required, not optional, and a green test suite does not replace it. This app's failures live where the unit tests cannot go: a real clone of `wordpress-develop`, a `node_modules` that takes minutes to install, an OS file dialog, a Windows path with a space in it. The suite proves the logic; only a person driving the app proves the feature. Write it for someone who did not write the change and does not know where the button is. That means: -- **A starting state.** "A site with a linked ticket and an uncommitted edit", not "a site". Say how - to reach it if it is not the state the app opens in. +- **A starting state.** "A site with a linked ticket and an uncommitted edit", not "a site". Say how to reach it if it is not the state the app opens in. - **Numbered steps naming what to click**, in the words on screen. -- **The expected result after each step that has one**, stated so it can come out false. "The patch - contains only `wp-login.php`" — not "the patch looks right". -- **What must NOT have happened.** Most of this project's regressions are silent: work quietly - discarded, `node_modules` quietly rebuilt, a patch quietly missing a file. Name the thing that - would be easy not to notice. -- **The platforms it needs.** Default to "any" and say so; call out macOS or Windows explicitly when - the change touches paths, spawning, line endings, or signing. Buildkite builds signed artifacts - for every branch with an open PR, so a reviewer can test on a real machine without building — - check the build matches the current head commit, since force-pushing invalidates earlier ones. -- **What cannot be tested by hand, and why.** An honest "the mid-switch recovery needs a checkout to - fail part-way, which I could not stage" is worth more than silence. - -If a change genuinely has no user-visible surface — a refactor, a CI fix — say that, and give the -command that demonstrates it instead. The section is never simply absent. - -For the human-facing version of all this — the CI checks each PR runs and the guardrails in prose — -see [`CONTRIBUTING.md`](CONTRIBUTING.md). It points back here; it does not restate the standard. +- **The expected result after each step that has one**, stated so it can come out false. "The patch contains only `wp-login.php`" — not "the patch looks right". +- **What must NOT have happened.** Most of this project's regressions are silent: work quietly discarded, `node_modules` quietly rebuilt, a patch quietly missing a file. Name the thing that would be easy not to notice. +- **The platforms it needs.** Default to "any" and say so; call out macOS or Windows explicitly when the change touches paths, spawning, line endings, or signing. Buildkite builds signed artifacts for every branch with an open PR, so a reviewer can test on a real machine without building — check the build matches the current head commit, since force-pushing invalidates earlier ones. +- **What cannot be tested by hand, and why.** An honest "the mid-switch recovery needs a checkout to fail part-way, which I could not stage" is worth more than silence. + +If a change genuinely has no user-visible surface — a refactor, a CI fix — say that, and give the command that demonstrates it instead. The section is never simply absent. + +For the human-facing version of all this — the CI checks each PR runs and the guardrails in prose — see [`CONTRIBUTING.md`](CONTRIBUTING.md). It points back here; it does not restate the standard. + +## Markdown in this repository + +**Do not hard-wrap prose. One paragraph is one line, however long.** Markdown imposes no line limit — a wrapped paragraph and a single long line render identically — so the wrapping is a convention, and this repository's convention is not to. Every `.md` here follows it: `README.md`, `docs/`, this file, `TESTING.md`, `CONTRIBUTING.md`, the review instructions and the templates. + +The reasons are editing, not rendering. A long line reflows to whatever width the reader's editor or screen has, it pastes into an issue or a chat without arriving pre-chopped, and a one-word edit does not reshuffle the six lines beneath it into a diff that claims they changed. The cost is a diff that marks the whole paragraph as changed; `git diff --word-diff`, and GitHub's own intra-line highlighting, both narrow that back down to the words. + +Line breaks still mean something everywhere else, and none of this touches them: list items, table rows, headings, fenced code, VitePress `:::` containers, YAML frontmatter and the body of an HTML comment all keep the shape they have. ## Commands -See `package.json` scripts. To run a single test file (not exposed as a script): -`node --test test/azure-sign.test.cjs`. +See `package.json` scripts. To run a single test file (not exposed as a script): `node --test test/azure-sign.test.cjs`. -**[TESTING.md](TESTING.md) is the canonical description of the suite** — the five layers it is made -of, which one a new test belongs in, what each layer is blind to, and how to read a failure. Read it -before adding or moving a test; do not restate it elsewhere. +**[TESTING.md](TESTING.md) is the canonical description of the suite** — the five layers it is made of, which one a new test belongs in, what each layer is blind to, and how to read a failure. Read it before adding or moving a test; do not restate it elsewhere. -When writing manual test instructions, inspect the current renderer flow first and distinguish -actions that happen automatically after linking a ticket from controls used only to retry or -refresh them. Do not tell a tester to click a control when the app already starts that operation. +When writing manual test instructions, inspect the current renderer flow first and distinguish actions that happen automatically after linking a ticket from controls used only to retry or refresh them. Do not tell a tester to click a control when the app already starts that operation. -When asked to add an existing pull request to an existing stack, preserve its commits and change -its base to the head branch of the current top PR. Do not move commits into an earlier PR unless -the user explicitly asks to rewrite the stack. +When asked to add an existing pull request to an existing stack, preserve its commits and change its base to the head branch of the current top PR. Do not move commits into an earlier PR unless the user explicitly asks to rewrite the stack. ## Architecture notes (non-obvious) -- **Child processes run on Electron's own Node, not the system Node.** `npm install`, - `npm run