Fix inconsistent card widths, rename Dashboard to My repos
form.card's blanket max-width: 480px (meant for the login form) was also squeezing the wider repo-settings/settings forms next to full-width list cards, producing a jagged layout. Scoped the cap to a new .narrow modifier, applied only to the login form.
5 files changed
+15 −9
M
CHANGELOG.md
+5 −0
M
cmd/gitfed-web/handlers_auth.go
+1 −1
M
cmd/gitfed-web/render.go
+3 −2
M
internal/i18n/strings_en.go
+3 −3
M
internal/i18n/strings_fr.go
+3 −3
CHANGELOG.md
@@ -1,5 +1,10 @@
# Changelog
+## 0.9.3
+
+- Fixed inconsistent card widths on repo settings and account settings: forms (visibility/topics, grant collaborator, add SSH key, change password) were capped at 480px while list cards next to them weren't, making the layout look jagged. Only the login form keeps the narrow width now.
+- Renamed "Dashboard"/"Tableau de bord" to "My repos"/"Mes repos" in the nav.
+
## 0.9.2
Follow-up security audit on everything added since the pre-prod one (`docs/security/AUDIT-2026-07-29.md`) — the anonymous HTTPS clone, federated notifications, pinned repos. No critical findings; three real gaps fixed:
cmd/gitfed-web/handlers_auth.go
@@ -12,7 +12,7 @@ import (
var loginTpl = newTpl("login", `
{{.Flash}}
-<form class="card" method="post" action="/login">
+<form class="card narrow" method="post" action="/login">
<strong>{{t .Lang "auth.login"}}</strong>
<input type="hidden" name="next" value="{{.Next}}">
<label>{{t .Lang "auth.username"}}</label>
cmd/gitfed-web/render.go
@@ -437,7 +437,8 @@ const shellHeadSrc = `<!doctype html>
/* ---------- forms & buttons ---------- */
form.inline { display: inline; }
- form.card { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 1.1rem; margin: 1rem 0; max-width: 480px; }
+ form.card { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 1.1rem; margin: 1rem 0; }
+ form.card.narrow { max-width: 480px; }
form.card label { display: block; font-size: 0.85rem; color: var(--text-dim); margin-top: 0.6rem; }
input, select { width: 100%; box-sizing: border-box; padding: 0.45rem 0.6rem; margin-top: 0.25rem; background: var(--canvas); border: 1px solid var(--border-strong); color: var(--text); border-radius: 6px; font-size: 0.9rem; font-family: inherit; }
input:focus, select:focus { outline: none; border-color: var(--accent); }
@@ -487,7 +488,7 @@ const shellHeadSrc = `<!doctype html>
@media (max-width: 480px) {
main { padding: 1rem 0.85rem; }
- form.card { max-width: none; }
+ form.card.narrow { max-width: none; }
}
</style>
</head>
internal/i18n/strings_en.go
@@ -5,7 +5,7 @@ var en = map[string]string{
"nav.home": "Home",
"nav.explore": "Explore",
"nav.security": "Security",
- "nav.dashboard": "Dashboard",
+ "nav.dashboard": "My repos",
"nav.search_placeholder": "Search repos…",
"nav.login": "Log in",
"nav.signed_in_as": "Signed in as",
@@ -50,7 +50,7 @@ var en = map[string]string{
"landing.diagram_no_account2": "on alice's instance",
"landing.cta_band_h": "Ready to take back control of your code?",
"landing.cta_band_p": "gitfed is open-source and self-hosted — one Go binary, one embedded database, no external dependencies.",
- "landing.cta_band_dashboard": "Go to your dashboard",
+ "landing.cta_band_dashboard": "Go to your repos",
// ---------- security ----------
"security.title": "Security — gitfed",
@@ -150,7 +150,7 @@ var en = map[string]string{
"notif.status_accepted": "accepted",
"notif.status_dismissed": "dismissed",
"notif.empty": "No notifications.",
- "notif.msg_accepted": "pinned to your dashboard",
+ "notif.msg_accepted": "pinned to My repos",
// ---------- settings ----------
"settings.title": "Settings",
internal/i18n/strings_fr.go
@@ -5,7 +5,7 @@ var fr = map[string]string{
"nav.home": "Accueil",
"nav.explore": "Explorer",
"nav.security": "Sécurité",
- "nav.dashboard": "Tableau de bord",
+ "nav.dashboard": "Mes repos",
"nav.search_placeholder": "Rechercher un dépôt…",
"nav.login": "Se connecter",
"nav.signed_in_as": "Connecté en tant que",
@@ -50,7 +50,7 @@ var fr = map[string]string{
"landing.diagram_no_account2": "chez alice",
"landing.cta_band_h": "Envie de reprendre la main sur votre code ?",
"landing.cta_band_p": "gitfed est open-source et auto-hébergé — un binaire Go, une base embarquée, aucune dépendance externe.",
- "landing.cta_band_dashboard": "Aller au tableau de bord",
+ "landing.cta_band_dashboard": "Aller à mes dépôts",
// ---------- security ----------
"security.title": "Sécurité — gitfed",
@@ -150,7 +150,7 @@ var fr = map[string]string{
"notif.status_accepted": "accepté",
"notif.status_dismissed": "ignoré",
"notif.empty": "Aucune notification.",
- "notif.msg_accepted": "épinglé sur votre tableau de bord",
+ "notif.msg_accepted": "épinglé dans Mes repos",
// ---------- settings ----------
"settings.title": "Paramètres",