A CLI-first git forge.

cli forge git self-hosted

https://gitbay.org

Commit 7ad3de789e

7ad3de789eb7388381be33637ec3854cc4c7885b

parent: 728618a5da

Verified · cmc ci/build: success

cmc <hello@cleberg.net> · 2026-08-26T02:23:15Z

web: configurable instance title, footer aligned with content

[web] title sets the display name in the header and page titles; the
site host remains the fallback. The footer sits in the pane beside the
rail, so it takes the content's horizontal padding rather than none.
internal/config/config.go +3
@@ -64,6 +64,9 @@ type GitDaemon struct {
6464 type Web struct {
6565 Mode string `toml:"mode"` // view_only | accounts
6666 PasswordAuth bool `toml:"password_auth"`
67 // Title is the instance's display name in the header and page titles.
68 // Empty falls back to the site host.
69 Title string `toml:"title"`
6770 // PrivacyNotice is operator-provided text shown on /privacy under the
6871 // fixed project-level statement. Plain text; blank paragraphs split.
6972 PrivacyNotice string `toml:"privacy_notice"`
internal/httpd/web.go +5
@@ -47,7 +47,12 @@ func (s *Server) render(w http.ResponseWriter, page string, data any) {
4747 buf.WriteTo(w)
4848 }
4949
50// siteName is the instance's display name: the operator's [web] title,
51// or the site host when they have not set one.
5052 func (s *Server) siteName() string {
53 if t := strings.TrimSpace(s.cfg.Web.Title); t != "" {
54 return t
55 }
5156 h := strings.TrimPrefix(strings.TrimPrefix(s.cfg.Server.SiteURL, "https://"), "http://")
5257 return strings.TrimSuffix(h, "/")
5358 }
internal/web/static/style.css +3 −1
@@ -1063,7 +1063,9 @@ button:hover { filter: brightness(1.15); }
10631063 /* footer */
10641064 footer {
10651065 border-top: 1px solid var(--faint);
1066 padding: var(--sp-4) 0;
1066 padding: var(--sp-4) var(--sp-5) var(--sp-5);
1067 max-width: 78rem;
1068 width: 100%;
10671069 color: var(--muted);
10681070 font-size: var(--fs-1);
10691071 }