Forgejo currently lives on pinix; a full pinix outage (8h on 2026-07-31)
takes git.0ff.space down with it. This wires up the blunix side of the
move (docs/roadmap.md, docs/intent/forgejo-umzug-blunix.md): revives the
long-stalled blunix forgejo.nix draft with the full pinix feature set
(branding, DISABLE_ORGANIZATION_CREATION, webhook allowlist), points
Traefik at it locally instead of over the Tailnet, drops the now-unneeded
SSH TCP passthrough (Forgejo binds tailnetIPs.blunix:2222 directly), and
enables the already-prepared AdGuard rewrite for git.${domain}.
Actual data cutover (stop pinix's forgejo, rsync /var/lib/forgejo, fix
webhook target URLs and git remotes) happens next as a separate step
with a short maintenance window.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WhZjZY1sbjyRaMKAL3ekt1
132 lines
5.1 KiB
CSS
132 lines
5.1 KiB
CSS
/* Forgejo's own theme switcher sets data-theme (forgejo-auto/-light/-dark,
|
|
persisted per-account) independent of prefers-color-scheme. "-auto"
|
|
already matches the OS preference the shared stylesheet reacts to, so
|
|
only the explicit -light/-dark overrides need a rule here -- same fix
|
|
as LLDAP's html.dark/html.light override in
|
|
hosts/blunix/localServices/lldap.nix. */
|
|
html[data-theme*="dark"],
|
|
html[data-theme*="dark"] body {
|
|
background-color: hsl(0 0% 10%) !important;
|
|
background-image: radial-gradient(circle, hsl(0 0% 14%) 1px, hsl(0 0% 10%) 1px) !important;
|
|
}
|
|
|
|
html[data-theme*="light"],
|
|
html[data-theme*="light"] body {
|
|
background-color: ghostwhite !important;
|
|
background-image: radial-gradient(circle, lightsteelblue 1px, ghostwhite 1px) !important;
|
|
}
|
|
|
|
/* Launcher palette's primary/hover pair (palette-2 resting, palette-1
|
|
hover) -- same convention as the guide tile on 0ff.space and LLDAP's
|
|
button override. Only --color-primary itself, not the derived
|
|
-dark-N/-light-N/-alpha-N/-hover/-active shades Forgejo computes from
|
|
it at build time (those stay Forgejo's own, so contrast against its
|
|
own surface colors is preserved in both light and dark). Unconditional
|
|
(not wrapped in the data-theme selectors above): forgejo redefines the
|
|
entire :root block per theme, so a plain :root override here, loaded
|
|
after forgejo's own stylesheet, wins in both regardless. */
|
|
:root {
|
|
--color-primary: #d91e4d;
|
|
--color-primary-hover: #ff0026;
|
|
--color-primary-active: #ff0026;
|
|
--color-accent: #d91e4d;
|
|
}
|
|
|
|
/* Dark mode's box/card/nav backgrounds (--color-body, --color-box-header,
|
|
--color-box-body, --color-card, --color-menu, --color-input-background,
|
|
etc.) all derive from this one --steel-* scale, which is blue-tinted,
|
|
not neutral. Replacing it with true grays at roughly the same
|
|
lightness steps -- --steel-700 (--color-box-header/--color-card) lands
|
|
on hsl(0 0% 18%), the same tone as the resting dark tile background on
|
|
0ff.space (see .box in launcher/style.css), so cards read as the same
|
|
material as the launcher tiles instead of Forgejo's own blue-gray.
|
|
|
|
Two rules, not one: html[data-theme*="dark"] only matches the
|
|
*explicit* forgejo-dark/gitea-dark theme choice, never the default
|
|
"forgejo-auto" -- that string never contains "dark" even while it's
|
|
visually rendering dark via the OS preference. Missed this the first
|
|
time around: only the explicit rule existed, so this only ever took
|
|
effect for someone who'd manually switched off "auto". */
|
|
html[data-theme*="dark"] {
|
|
--steel-900: hsl(0 0% 8%);
|
|
--steel-850: hsl(0 0% 10%);
|
|
--steel-800: hsl(0 0% 12%);
|
|
--steel-750: hsl(0 0% 15%);
|
|
--steel-700: hsl(0 0% 18%);
|
|
--steel-650: hsl(0 0% 24%);
|
|
--steel-600: hsl(0 0% 25%);
|
|
--steel-550: hsl(0 0% 30%);
|
|
--steel-500: hsl(0 0% 35%);
|
|
--steel-450: hsl(0 0% 41%);
|
|
--steel-400: hsl(0 0% 47%);
|
|
--steel-350: hsl(0 0% 54%);
|
|
--steel-300: hsl(0 0% 61%);
|
|
--steel-250: hsl(0 0% 68%);
|
|
--steel-200: hsl(0 0% 74%);
|
|
--steel-150: hsl(0 0% 81%);
|
|
--steel-100: hsl(0 0% 88%);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
html[data-theme="forgejo-auto"] {
|
|
--steel-900: hsl(0 0% 8%);
|
|
--steel-850: hsl(0 0% 10%);
|
|
--steel-800: hsl(0 0% 12%);
|
|
--steel-750: hsl(0 0% 15%);
|
|
--steel-700: hsl(0 0% 18%);
|
|
--steel-650: hsl(0 0% 24%);
|
|
--steel-600: hsl(0 0% 25%);
|
|
--steel-550: hsl(0 0% 30%);
|
|
--steel-500: hsl(0 0% 35%);
|
|
--steel-450: hsl(0 0% 41%);
|
|
--steel-400: hsl(0 0% 47%);
|
|
--steel-350: hsl(0 0% 54%);
|
|
--steel-300: hsl(0 0% 61%);
|
|
--steel-250: hsl(0 0% 68%);
|
|
--steel-200: hsl(0 0% 74%);
|
|
--steel-150: hsl(0 0% 81%);
|
|
--steel-100: hsl(0 0% 88%);
|
|
}
|
|
}
|
|
|
|
/* .flex-item-trailing.muted-links wraps exactly the language dot,
|
|
star count, and fork count on repo list rows (explore, user profile,
|
|
org pages) -- nothing else, confirmed against /explore/repos'
|
|
rendered HTML. */
|
|
.flex-item-trailing.muted-links {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Explore: center repo names instead of left-aligned. */
|
|
.page-content.explore .flex-item-header {
|
|
justify-content: center;
|
|
}
|
|
|
|
/* Wiki pages: content (+ its TOC sidebar) directly after the site
|
|
navbar, everything else -- the lukas/nixos-config breadcrumb, watch/
|
|
star/fork buttons, and the Code/Issues/Pulls/.../Wiki tab bar (all
|
|
inside .secondary-nav), the page title/revision-count/"edited this
|
|
page" line (.ui.dividing.header), and the page-picker/clone-panel
|
|
button row -- pushed below it instead of above. Confirmed working
|
|
live on /wiki/userguide across three iterations: the reorder itself,
|
|
then the breadcrumb+tabs (.secondary-nav wasn't reordered the first
|
|
time), then the title/revision header (a third direct child of
|
|
.ui.container.file-content the first two passes didn't touch). */
|
|
.page-content.repository.wiki {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
.page-content.repository.wiki > .secondary-nav {
|
|
order: 2;
|
|
}
|
|
.page-content.repository.wiki .ui.container.file-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
order: 1;
|
|
}
|
|
.page-content.repository.wiki .repo-button-row {
|
|
order: 1;
|
|
}
|
|
.page-content.repository.wiki .ui.container.file-content > .ui.dividing.header {
|
|
order: 1;
|
|
}
|