From bb9f0a44df1610d980a59928f2f8a114eac75373 Mon Sep 17 00:00:00 2001 From: whereareiam Date: Sun, 4 Oct 2026 15:50:57 +0200 Subject: [PATCH] Pull request: Show a scheduled merge as a merge box section When a merge is scheduled for when checks succeed, Forgejo prints a blue notice above the merge button. In the themed merge box it sat half-width beside the instructions link, with the buttons loosely below it. The notice is now one more section of the box, like the rows above it: a round clock icon and the sentence, with the merge button and "Cancel" in the bar underneath, 8px apart. The rules live in a new page stylesheet because the theme files are at their size limit. Co-Authored-By: Claude Opus 5.5 --- scripts/assembleForgejo.ts | 8 +++- styles/pages/pull-request.css | 56 ++++++++++++++++++++++++++++ templates/base/component_assets.tmpl | 1 + 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 styles/pages/pull-request.css diff --git a/scripts/assembleForgejo.ts b/scripts/assembleForgejo.ts index 616ded8..cfc95f8 100644 --- a/scripts/assembleForgejo.ts +++ b/scripts/assembleForgejo.ts @@ -43,7 +43,13 @@ for (const directory of ["common", "repository"]) { } } -for (const file of ["dashboard-lists.css", "organization.css", "profile-subpages.css", "user-profile.css"]) { +for (const file of [ + "dashboard-lists.css", + "organization.css", + "profile-subpages.css", + "pull-request.css", + "user-profile.css", +]) { cpSync(join(root, "styles", "pages", file), join(css, "components", "pages", file)); } for (const file of readdirSync(join(root, "public"))) { diff --git a/styles/pages/pull-request.css b/styles/pages/pull-request.css new file mode 100644 index 0000000..e670fe3 --- /dev/null +++ b/styles/pages/pull-request.css @@ -0,0 +1,56 @@ +/* Pull request page rules kept out of the theme files, which are at their size limit. */ + +/* + * A merge scheduled for when checks succeed. Forgejo prints a blue notice above the merge button; + * here it is one more section of the merge box, like the rows above it: a round status icon, the + * sentence, and the bar with the merge button and "Cancel" below. + */ +.github-pull-review .pull-merge-actions > #pull-request-merge-form:has(.ui.info.message) { + flex: 0 0 100%; +} + +.github-pull-review .pull-merge-actions .ui.info.message { + position: relative; + display: block; + min-height: 64px; + margin: -16px -16px 16px; + padding: 20px 16px 20px 56px; + border: 0; + border-bottom: 1px solid color-mix(in srgb, var(--color-light-border) 70%, transparent); + border-radius: 0; + background: var(--color-body); + box-shadow: none; + color: var(--color-text); + font-size: 16px; + font-weight: 600; + line-height: 24px; +} + +/* The status icon: a white clock on the accent colour. The notice itself carries no icon element. */ +.github-pull-review .pull-merge-actions .ui.info.message::before { + content: ""; + position: absolute; + top: 16px; + left: 16px; + width: 32px; + height: 32px; + border-radius: 50%; + background: var(--github-bgColor-accent-emphasis) + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7-3.25v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5a.75.75 0 0 1 1.5 0Z'/%3E%3C/svg%3E") + center / 16px no-repeat; +} + +.github-pull-review .pull-merge-actions .ui.info.message relative-time { + color: var(--color-text-light-1); + font-weight: 400; +} + +/* The buttons under the notice sit 8px apart. */ +.github-pull-review .pull-merge-actions .tw-flex { + align-items: center; + gap: 8px; +} + +.github-pull-review .pull-merge-actions .tw-flex > form { + margin: 0 !important; +} diff --git a/templates/base/component_assets.tmpl b/templates/base/component_assets.tmpl index 702cf65..a158ae2 100644 --- a/templates/base/component_assets.tmpl +++ b/templates/base/component_assets.tmpl @@ -14,4 +14,5 @@ +