Compare commits
7 Commits
7f0a7db812
...
0e5e7b03ab
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e5e7b03ab | |||
| a3b699bc70 | |||
| c498ee9b9c | |||
| a36bddc1c2 | |||
| c57da3e249 | |||
| d931966231 | |||
| 64f260a06d |
@@ -838,3 +838,25 @@ History search guidance:
|
||||
169 - [2026-05-21 01:18:41] - v1.27.0-dev-180-gb1db0705d8 - Type: Modified - [locale] [i18n] Synchronized the locale files with the current installer and sticky-layout strings.
|
||||
- 1 - I updated all translated `options/locale/locale_*.json` files so `install.install_btn_confirm` now accepts a `%s` site-name placeholder instead of hardcoding `Gitea`, matching the current installer button behavior.
|
||||
- 2 - I added the missing `footer.show`, `footer.hide`, `install.smtp_from_name_placeholder`, and `install.smtp_from_address_placeholder` keys across the locale files, using the current English fallback text where no localized variant was available in this change.
|
||||
|
||||
170 - [2026-05-21 04:51:22] - v1.27.0-dev-181-g7f0a7db812 - Type: Modified - [migrate] [lfs] [ui] Refined the advanced LFS migration option layout on the repository migrate form.
|
||||
- 1 - I updated `templates/repo/migrate/options.tmpl` and `web_src/css/modules/form.css` so the advanced LFS endpoint block now uses dedicated `lfs` layout hooks, giving the help text and inline input row a cleaner alignment on `/repo/migrate?service_type=2&org=&mirror=`.
|
||||
|
||||
171 - [2026-05-22 03:45:09] - v1.27.0-dev-182-g64f260a06d - Type: Modified - [commit] [diff] [ui] Refined the sticky commit and diff panel spacing on the repository commit view.
|
||||
- 1 - I updated `web_src/css/repo.css` so the sticky `.repository .diff-detail-box` gets extra top padding, the sticky `#diff-file-tree` sits 1px lower under the persistent navbar offset, and the sticky second-row `.diff-file-header` is pushed further down to visually clear the adjusted top panel on `/user/repo/commit/xxxx`.
|
||||
|
||||
172 - [2026-05-22 03:49:04] - v1.27.0-dev-183-gd931966231 - Type: Modified - [locale] [ro] Adjusted the Romanian repo visibility badge labels to use concise badge-friendly wording.
|
||||
- 1 - I updated `options/locale/locale_ro-RO.json` so `settings.visibility.public`, `settings.visibility.limited`, and `settings.visibility.private` now read `Public`, `Limitat`, and `Privat`, matching the compact badge style used in the repository UI.
|
||||
|
||||
173 - [2026-05-22 04:05:32] - v1.27.0-dev-184-gc57da3e249 - Type: Modified - [commit] [segment] [ui] Tightened the attached segment spacing in the repository commit view.
|
||||
- 1 - I updated `web_src/css/modules/segment.css` so bottom-attached segments no longer keep the extra `1rem` bottom margin, helping the stacked commit-panel blocks on `/user/repo/commit/xxxx` sit more tightly together.
|
||||
|
||||
174 - [2026-05-22 19:36:16] - v1.27.0-dev-185-ga36bddc1c2 - Type: Modified - [badge] [label] [repo] [repo-explore] [visibility-badge] [admin] Refined the repo visibility badges (`Public` / `Privat`) and the small `by ...` labels, and kept long admin badge slugs on a single line.
|
||||
- 1 - I updated `web_src/css/modules/label.css` so the repo visibility badges and the small attribution labels such as `by ...` now use a pill-style border radius with tighter horizontal padding, giving both label families a more compact visual treatment.
|
||||
- 2 - I updated `templates/admin/badge/list.tmpl` to keep badge slug cells on a single line with `tw-whitespace-nowrap`, preventing awkward wrapping in the admin badge list.
|
||||
|
||||
175 - [2026-05-22 20:53:37] - v1.27.0-dev-186-gc498ee9b9c - Type: Fixed - [install] [app-ini-import] [mailer] Corrected installer `app.ini` import so imported mailer sender details and `Site Title` branding fully replace the current form state.
|
||||
- 1 - I updated `routers/install/install.go`, `routers/install/routes_test.go`, and `templates/install.tmpl` so importing `app.ini` now replaces stale split mailer sender fields with the imported `FROM = site_name <email@example.com>` value and immediately refreshes the derived `Install %s` button label from the imported `APP_NAME`.
|
||||
|
||||
176 - [2026-05-22 21:27:38] - v1.27.0-dev-187-ga3b699bc70 - Type: Modified - [install] [repository-release] [ui] Added release attachment limits to the installer under "Server and Third-Party Service Settings".
|
||||
- 1 - I updated `services/forms/user_form.go`, `routers/install/install.go`, `templates/install.tmpl`, and the EN/RO locale files so the installer now exposes `[repository.release] MAX_FILES` and `FILE_MAX_SIZE`, preloads them from the current settings or imported `app.ini`, and persists them back into the generated configuration with inline help text.
|
||||
|
||||
@@ -358,6 +358,11 @@
|
||||
"install.register_manual_confirm_helper": "New accounts stay pending until an administrator reviews and approves the request.",
|
||||
"install.mail_notify": "Enable Email Notifications",
|
||||
"install.mail_notify_helper": "Controls routine notification emails such as watches, mentions, and administrative notices. Activation and invitation emails still use the SMTP configuration above.",
|
||||
"install.repository_options_title": "Repository Options",
|
||||
"install.release_max_files": "Release Attachment Limit",
|
||||
"install.release_max_files_helper": "Maximum number of attachment files allowed on each release.",
|
||||
"install.release_file_max_size": "Release Attachment File Size (KiB)",
|
||||
"install.release_file_max_size_helper": "Maximum size in KiB for each individual release attachment file. 2048 KiB equals 2 MiB.",
|
||||
"install.server_service_title": "Server and Third-Party Service Settings",
|
||||
"install.disable_registration": "Disable Self-Registration",
|
||||
"install.disable_registration_popup": "Disable user self-registration. Only administrators will be able to create new user accounts.",
|
||||
@@ -1251,7 +1256,7 @@
|
||||
"repo.migrate_options_lfs_endpoint.label": "LFS Endpoint",
|
||||
"repo.migrate_options_lfs_endpoint.description": "Migration will attempt to use your Git remote to <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">determine the LFS server</a>. You can also specify a custom endpoint if the repository LFS data is stored somewhere else.",
|
||||
"repo.migrate_options_lfs_endpoint.description.local": "A local server path is supported too.",
|
||||
"repo.migrate_options_lfs_endpoint.placeholder": "If left blank, the endpoint will be derived from the clone URL.",
|
||||
"repo.migrate_options_lfs_endpoint.placeholder": "Blank = autodetect from clone URL.",
|
||||
"repo.migrate_items": "Migration Items",
|
||||
"repo.migrate_items_wiki": "Wiki",
|
||||
"repo.migrate_items_milestones": "Milestones",
|
||||
|
||||
@@ -358,6 +358,11 @@
|
||||
"install.register_manual_confirm_helper": "Conturile noi rămân în așteptare până când un administrator revizuiește și aprobă cererea.",
|
||||
"install.mail_notify": "Activează notificările prin email",
|
||||
"install.mail_notify_helper": "Controlează emailurile de notificare uzuale, precum urmăriri, mențiuni și notificări administrative. Emailurile de activare și invitație folosesc în continuare configurația SMTP de mai sus.",
|
||||
"install.repository_options_title": "Opțiuni repo",
|
||||
"install.release_max_files": "Limita atașamentelor la lansare",
|
||||
"install.release_max_files_helper": "Numărul maxim de fișiere atașate permis pentru fiecare lansare.",
|
||||
"install.release_file_max_size": "Dimensiunea fișierului atașat la lansare (KiB)",
|
||||
"install.release_file_max_size_helper": "Dimensiunea maximă în KiB pentru fiecare fișier atașat individual la o lansare. 2048 KiB înseamnă 2 MiB.",
|
||||
"install.server_service_title": "Setări server și servicii terță parte",
|
||||
"install.disable_registration": "Dezactivare înregistrarea automată",
|
||||
"install.disable_registration_popup": "Dezactivează autoînregistrarea utilizatorului. Doar administratorii vor putea crea noi conturi de utilizator.",
|
||||
@@ -1102,11 +1107,11 @@
|
||||
"settings.email_notifications.actions.desc": "Notificările pentru fluxul de lucru rulează pe proiectele configurate cu <a target=\"_blank\" href=\"%s\">Gitea Acțiuni</a>.",
|
||||
"settings.email_notifications.actions.failure_only": "Notifică numai pentru rulările eșuate ale fluxului de lucru",
|
||||
"settings.visibility": "Vizibilitatea utilizatorului",
|
||||
"settings.visibility.public": "Publică",
|
||||
"settings.visibility.public": "Public",
|
||||
"settings.visibility.public_tooltip": "Vizibil pentru toată lumea",
|
||||
"settings.visibility.limited": "Limitată",
|
||||
"settings.visibility.limited": "Limitat",
|
||||
"settings.visibility.limited_tooltip": "Vizibil numai pentru utilizatorii autentificați",
|
||||
"settings.visibility.private": "Privată",
|
||||
"settings.visibility.private": "Privat",
|
||||
"settings.visibility.private_tooltip": "Vizibil numai pentru membrii organizațiilor la care te=ai alăturat",
|
||||
"repo.new_repo_helper": "Un proiect conține toate fișierele de proiect, inclusiv istoricul revizuirilor. Găzduiești deja unul în altă parte? <a href=\"%s\">Migrează proiectul.</a>",
|
||||
"repo.owner": "Proprietar",
|
||||
@@ -1251,7 +1256,7 @@
|
||||
"repo.migrate_options_lfs_endpoint.label": "Punct final LFS",
|
||||
"repo.migrate_options_lfs_endpoint.description": "Migrarea va încerca să utilizeze sursa Git pentru a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\"> determina serverul LFS </a>. De asemenea, poți specifica un punct final personalizat dacă datele LFS din repozitoriu sunt stocate în altă parte.",
|
||||
"repo.migrate_options_lfs_endpoint.description.local": "Este acceptată și o cale de server local.",
|
||||
"repo.migrate_options_lfs_endpoint.placeholder": "Dacă este lăsat necompletat, punctul final va fi derivat din URL-ul clonării.",
|
||||
"repo.migrate_options_lfs_endpoint.placeholder": "Necompletat = autodetectat din URL.",
|
||||
"repo.migrate_items": "Elemente de migrare",
|
||||
"repo.migrate_items_wiki": "Wiki",
|
||||
"repo.migrate_items_milestones": "Repere",
|
||||
|
||||
@@ -365,6 +365,8 @@ func newInstallFormFromSettings() (forms.InstallForm, string) {
|
||||
form.NoReplyAddress = setting.Service.NoReplyAddress
|
||||
form.PasswordAlgorithm = hash.ConfigHashAlgorithm(setting.PasswordHashAlgo)
|
||||
form.AdminManagementPolicy = setting.Admin.AdminManagementPolicy
|
||||
form.ReleaseMaxFiles = setting.Repository.Release.MaxFiles
|
||||
form.ReleaseFileMaxSize = setting.Repository.Release.FileMaxSize
|
||||
normalizeInstallRegistrationOptions(&form)
|
||||
|
||||
return form, curDBType
|
||||
@@ -397,6 +399,14 @@ func importedInt(sec setting.ConfigSection, key string, fallback int) int {
|
||||
return cfgKey.MustInt(fallback)
|
||||
}
|
||||
|
||||
func importedInt64(sec setting.ConfigSection, key string, fallback int64) int64 {
|
||||
cfgKey := setting.ConfigSectionKey(sec, key)
|
||||
if cfgKey == nil {
|
||||
return fallback
|
||||
}
|
||||
return cfgKey.MustInt64(fallback)
|
||||
}
|
||||
|
||||
func importedFirstLang(value string, fallback string) string {
|
||||
for _, lang := range strings.Split(value, ",") {
|
||||
lang = strings.TrimSpace(lang)
|
||||
@@ -420,6 +430,7 @@ func populateInstallFormFromConfig(form *forms.InstallForm, cfg setting.ConfigPr
|
||||
securitySec := cfg.Section("security")
|
||||
adminSec := cfg.Section("admin")
|
||||
i18nSec := cfg.Section("i18n")
|
||||
repoReleaseSec := cfg.Section("repository.release")
|
||||
|
||||
form.AppName = setting.ConfigSectionKeyString(rootSec, "APP_NAME", form.AppName)
|
||||
form.RunUser = setting.ConfigSectionKeyString(rootSec, "RUN_USER", form.RunUser)
|
||||
@@ -445,6 +456,14 @@ func populateInstallFormFromConfig(form *forms.InstallForm, cfg setting.ConfigPr
|
||||
form.AppURL = setting.ConfigSectionKeyString(serverSec, "ROOT_URL", form.AppURL)
|
||||
form.LogRootPath = setting.ConfigSectionKeyString(logSec, "ROOT_PATH", form.LogRootPath)
|
||||
|
||||
form.SMTPAddr = ""
|
||||
form.SMTPPort = ""
|
||||
form.SMTPFrom = ""
|
||||
form.SMTPFromName = ""
|
||||
form.SMTPFromAddress = ""
|
||||
form.SMTPUser = ""
|
||||
form.SMTPPasswd = ""
|
||||
|
||||
if setting.ConfigSectionKeyBool(mailerSec, "ENABLED") {
|
||||
form.SMTPAddr = setting.ConfigSectionKeyString(mailerSec, "SMTP_ADDR", form.SMTPAddr)
|
||||
form.SMTPPort = setting.ConfigSectionKeyString(mailerSec, "SMTP_PORT", form.SMTPPort)
|
||||
@@ -474,6 +493,8 @@ func populateInstallFormFromConfig(form *forms.InstallForm, cfg setting.ConfigPr
|
||||
form.EnableUpdateChecker = setting.ConfigSectionKeyBool(securitySec, "ENABLE_UPDATE_CHECKER", form.EnableUpdateChecker)
|
||||
form.PasswordAlgorithm = setting.ConfigSectionKeyString(securitySec, "PASSWORD_HASH_ALGO", form.PasswordAlgorithm)
|
||||
form.AdminManagementPolicy = setting.ConfigSectionKeyString(adminSec, "ADMIN_MANAGEMENT_POLICY", form.AdminManagementPolicy)
|
||||
form.ReleaseMaxFiles = importedInt64(repoReleaseSec, "MAX_FILES", form.ReleaseMaxFiles)
|
||||
form.ReleaseFileMaxSize = importedInt64(repoReleaseSec, "FILE_MAX_SIZE", form.ReleaseFileMaxSize)
|
||||
if form.ImportSensitiveSecrets {
|
||||
form.ImportedLFSJWTSecret = readImportedSecretValue(serverSec, "LFS_JWT_SECRET_URI", "LFS_JWT_SECRET")
|
||||
form.ImportedInternalToken = readImportedSecretValue(securitySec, "INTERNAL_TOKEN_URI", "INTERNAL_TOKEN")
|
||||
@@ -1059,6 +1080,8 @@ func SubmitInstall(ctx *context.Context) {
|
||||
cfg.Section("database").Key("LOG_SQL").SetValue("false") // LOG_SQL is rarely helpful
|
||||
|
||||
cfg.Section("repository").Key("ROOT").SetValue(form.RepoRootPath)
|
||||
cfg.Section("repository.release").Key("MAX_FILES").SetValue(strconv.FormatInt(form.ReleaseMaxFiles, 10))
|
||||
cfg.Section("repository.release").Key("FILE_MAX_SIZE").SetValue(strconv.FormatInt(form.ReleaseFileMaxSize, 10))
|
||||
cfg.Section("server").Key("SSH_DOMAIN").SetValue(form.Domain)
|
||||
cfg.Section("server").Key("DOMAIN").SetValue(form.Domain)
|
||||
cfg.Section("server").Key("HTTP_PORT").SetValue(form.HTTPPort)
|
||||
|
||||
@@ -134,6 +134,10 @@ PASSWORD_HASH_ALGO = pbkdf2
|
||||
[admin]
|
||||
ADMIN_MANAGEMENT_POLICY = super_admin_only
|
||||
|
||||
[repository.release]
|
||||
MAX_FILES = 20
|
||||
FILE_MAX_SIZE = 2048
|
||||
|
||||
[i18n]
|
||||
LANGS = de-DE,en-US
|
||||
`)
|
||||
@@ -183,6 +187,32 @@ LANGS = de-DE,en-US
|
||||
assert.True(t, form.EnableUpdateChecker)
|
||||
assert.Equal(t, "pbkdf2", form.PasswordAlgorithm)
|
||||
assert.Equal(t, "super_admin_only", form.AdminManagementPolicy)
|
||||
assert.EqualValues(t, 20, form.ReleaseMaxFiles)
|
||||
assert.EqualValues(t, 2048, form.ReleaseFileMaxSize)
|
||||
}
|
||||
|
||||
func TestPopulateInstallFormFromConfigReplacesSMTPFromSplitFields(t *testing.T) {
|
||||
cfg, err := setting.NewConfigProviderFromData(`
|
||||
APP_NAME = gitSafe: for your code
|
||||
|
||||
[mailer]
|
||||
ENABLED = true
|
||||
SMTP_ADDR = smtp.example.com
|
||||
SMTP_PORT = 587
|
||||
FROM = gitSafe <noreply@example.com>
|
||||
`)
|
||||
require.NoError(t, err)
|
||||
|
||||
form, curDBType := newInstallFormFromSettings()
|
||||
form.SMTPFrom = "Legacy <legacy@example.com>"
|
||||
form.SMTPFromName = "Legacy"
|
||||
form.SMTPFromAddress = "legacy@example.com"
|
||||
|
||||
populateInstallFormFromConfig(&form, cfg, curDBType)
|
||||
|
||||
assert.Equal(t, "gitSafe <noreply@example.com>", form.SMTPFrom)
|
||||
assert.Equal(t, "gitSafe", form.SMTPFromName)
|
||||
assert.Equal(t, "noreply@example.com", form.SMTPFromAddress)
|
||||
}
|
||||
|
||||
func TestPopulateInstallFormFromConfigWithSensitiveSecrets(t *testing.T) {
|
||||
|
||||
@@ -71,6 +71,8 @@ type InstallForm struct {
|
||||
|
||||
PasswordAlgorithm string
|
||||
AdminManagementPolicy string `binding:"In(,super_admin_only,grantor_only,grantor_inheritance)" locale:"install.admin_management_policy"`
|
||||
ReleaseMaxFiles int64
|
||||
ReleaseFileMaxSize int64
|
||||
|
||||
AdminName string `binding:"OmitEmpty;Username;MaxSize(30)" locale:"install.admin_name"`
|
||||
AdminPasswd string `binding:"OmitEmpty;MaxSize(255)" locale:"install.admin_password"`
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
{{range .Badges}}
|
||||
<tr>
|
||||
<td>{{.ID}}</td>
|
||||
<td>
|
||||
<td class="tw-whitespace-nowrap">
|
||||
<a href="{{$.Link}}/slug/{{.Slug | PathEscape}}">{{.Slug}}</a>
|
||||
</td>
|
||||
<td class="gt-ellipsis tw-max-w-48">{{.Description}}</td>
|
||||
|
||||
+37
-16
@@ -421,6 +421,23 @@
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<!-- Repository options -->
|
||||
<details class="optional field">
|
||||
<summary class="right-content tw-py-2">
|
||||
{{ctx.Locale.Tr "install.repository_options_title"}}
|
||||
</summary>
|
||||
<div class="inline field">
|
||||
<label for="release_max_files">{{ctx.Locale.Tr "install.release_max_files"}}</label>
|
||||
<input id="release_max_files" name="release_max_files" type="number" min="1" step="1" value="{{.release_max_files}}">
|
||||
<span class="help">{{ctx.Locale.Tr "install.release_max_files_helper"}}</span>
|
||||
</div>
|
||||
<div class="inline field">
|
||||
<label for="release_file_max_size">{{ctx.Locale.Tr "install.release_file_max_size"}}</label>
|
||||
<input id="release_file_max_size" name="release_file_max_size" type="number" min="1" step="1" value="{{.release_file_max_size}}">
|
||||
<span class="help">{{ctx.Locale.Tr "install.release_file_max_size_helper"}}</span>
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<!-- Admin -->
|
||||
<details class="optional field">
|
||||
<summary class="right-content tw-py-2{{if .Err_Admin}} tw-text-red{{end}}">
|
||||
@@ -639,25 +656,29 @@
|
||||
const installConfirmButton = installForm?.querySelector('.js-install-confirm-button');
|
||||
if (appNameInput instanceof HTMLInputElement && smtpFromNameInput instanceof HTMLInputElement) {
|
||||
let lastAutoMailerName = smtpFromNameInput.value.trim() || deriveInstallMailerName(appNameInput.value);
|
||||
if (!smtpFromNameInput.value.trim()) {
|
||||
smtpFromNameInput.value = lastAutoMailerName;
|
||||
}
|
||||
if (installConfirmButton instanceof HTMLButtonElement) {
|
||||
installConfirmButton.textContent = installConfirmButton.dataset.installLabelTemplate.replace('__SITE_NAME__', lastAutoMailerName);
|
||||
}
|
||||
|
||||
appNameInput.addEventListener('input', () => {
|
||||
const syncInstallBranding = () => {
|
||||
const siteName = deriveInstallMailerName(appNameInput.value);
|
||||
const currentValue = smtpFromNameInput.value.trim();
|
||||
if (currentValue && currentValue !== lastAutoMailerName) return;
|
||||
lastAutoMailerName = deriveInstallMailerName(appNameInput.value);
|
||||
smtpFromNameInput.value = lastAutoMailerName;
|
||||
if (installConfirmButton instanceof HTMLButtonElement) {
|
||||
installConfirmButton.textContent = installConfirmButton.dataset.installLabelTemplate.replace('__SITE_NAME__', lastAutoMailerName);
|
||||
if (!currentValue || currentValue === lastAutoMailerName) {
|
||||
smtpFromNameInput.value = siteName;
|
||||
}
|
||||
});
|
||||
lastAutoMailerName = siteName;
|
||||
if (installConfirmButton instanceof HTMLButtonElement) {
|
||||
installConfirmButton.textContent = installConfirmButton.dataset.installLabelTemplate.replace('__SITE_NAME__', siteName);
|
||||
}
|
||||
};
|
||||
|
||||
syncInstallBranding();
|
||||
appNameInput.addEventListener('input', syncInstallBranding);
|
||||
appNameInput.addEventListener('change', syncInstallBranding);
|
||||
} else if (appNameInput instanceof HTMLInputElement && installConfirmButton instanceof HTMLButtonElement) {
|
||||
const siteName = deriveInstallMailerName(appNameInput.value);
|
||||
installConfirmButton.textContent = installConfirmButton.dataset.installLabelTemplate.replace('__SITE_NAME__', siteName);
|
||||
const syncInstallButton = () => {
|
||||
const siteName = deriveInstallMailerName(appNameInput.value);
|
||||
installConfirmButton.textContent = installConfirmButton.dataset.installLabelTemplate.replace('__SITE_NAME__', siteName);
|
||||
};
|
||||
syncInstallButton();
|
||||
appNameInput.addEventListener('input', syncInstallButton);
|
||||
appNameInput.addEventListener('change', syncInstallButton);
|
||||
}
|
||||
|
||||
for (const button of document.querySelectorAll('.js-install-test-mail-button')) {
|
||||
|
||||
@@ -16,9 +16,9 @@
|
||||
</div>
|
||||
<span id="lfs_settings" class="tw-hidden">(<a id="lfs_settings_show" href="#">{{ctx.Locale.Tr "repo.settings.advanced_settings"}}</a>)</span>
|
||||
</div>
|
||||
<div id="lfs_endpoint" class="tw-hidden">
|
||||
<div id="lfs_endpoint" class="lfs tw-hidden">
|
||||
<span class="help">{{ctx.Locale.Tr "repo.migrate_options_lfs_endpoint.description" "https://github.com/git-lfs/git-lfs/blob/main/docs/api/server-discovery.md#server-discovery"}}{{if .ContextUser.CanImportLocal}} {{ctx.Locale.Tr "repo.migrate_options_lfs_endpoint.description.local"}}{{end}}</span>
|
||||
<div class="inline field {{if .Err_LFSEndpoint}}error{{end}}">
|
||||
<div class="inline field lfs {{if .Err_LFSEndpoint}}error{{end}}">
|
||||
<label>{{ctx.Locale.Tr "repo.migrate_options_lfs_endpoint.label"}}</label>
|
||||
<input name="lfs_endpoint" value="{{.lfs_endpoint}}" placeholder="{{ctx.Locale.Tr "repo.migrate_options_lfs_endpoint.placeholder"}}">
|
||||
</div>
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
/* other variables */
|
||||
--border-radius: 4px;
|
||||
--border-radius-medium: 6px;
|
||||
--border-radius-max: 10px;
|
||||
--border-radius-full: 99999px; /* TODO: use calc(infinity * 1px) */
|
||||
--opacity-disabled: 0.55;
|
||||
--height-loading: 16rem;
|
||||
|
||||
@@ -429,6 +429,11 @@ input:-webkit-autofill:active {
|
||||
text-wrap: balance;
|
||||
}
|
||||
|
||||
.lfs > .help {
|
||||
display: block;
|
||||
margin-left: 265px;
|
||||
}
|
||||
|
||||
.form .help code {
|
||||
color: var(--color-text-light-1);
|
||||
}
|
||||
@@ -456,6 +461,20 @@ input:-webkit-autofill:active {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.inline.field.lfs > label {
|
||||
text-align: right !important;
|
||||
width: 348px !important;
|
||||
margin-right: 10px !important;
|
||||
}
|
||||
|
||||
.inline.field.lfs > input {
|
||||
width: 37% !important;
|
||||
}
|
||||
|
||||
.inline.field.lfs {
|
||||
margin-bottom: 16px !important;
|
||||
}
|
||||
|
||||
.ui.form.left-right-form .inline.field .ui.dropdown input.search {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -92,6 +92,8 @@ a.ui.label:hover {
|
||||
.ui.basic.label {
|
||||
background: var(--color-button);
|
||||
border: 1px solid var(--color-light-border);
|
||||
border-radius: var(--border-radius-max);
|
||||
padding: 0px 6px;
|
||||
color: var(--color-text-light);
|
||||
}
|
||||
a.ui.basic.label:hover {
|
||||
@@ -273,13 +275,17 @@ a.ui.ui.ui.basic.grey.label:hover {
|
||||
|
||||
.ui.mini.label {
|
||||
font-size: 0.64285714rem;
|
||||
border-radius: var(--border-radius-max);
|
||||
padding: 0px 6px;
|
||||
}
|
||||
|
||||
.ui.tiny.label {
|
||||
font-size: 0.71428571rem;
|
||||
}
|
||||
.ui.small.label {
|
||||
font-size: 0.78571429rem;
|
||||
}
|
||||
|
||||
.ui.large.label {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
bottom: 0;
|
||||
margin-top: 0;
|
||||
top: 0;
|
||||
margin-bottom: 1rem;
|
||||
margin-bottom: 0rem;
|
||||
border-radius: 0 0 0.28571429rem 0.28571429rem;
|
||||
}
|
||||
.ui.segment[class*="bottom attached"]:last-child {
|
||||
|
||||
@@ -839,7 +839,8 @@ td .commit-summary {
|
||||
/* top: var(--persistent-navbar-offset, 0px); */
|
||||
top: calc(var(--persistent-navbar-offset, 0px) + 1px);
|
||||
z-index: 8;
|
||||
padding: 7px 5px;
|
||||
/* padding: 7px 5px; */
|
||||
padding: 14px 7px 5px;
|
||||
margin: 0 -5px; /* negative margin so it covers active file shadow */
|
||||
height: 55px; /* this height should match sticky-2nd-row */
|
||||
background: var(--color-body);
|
||||
@@ -1616,7 +1617,8 @@ tbody.commit-list {
|
||||
line-height: inherit;
|
||||
position: sticky;
|
||||
padding-top: 0;
|
||||
top: calc(47px + var(--persistent-navbar-offset, 0px));
|
||||
/* top: calc(47px + var(--persistent-navbar-offset, 0px)); */
|
||||
top: calc(58px + var(--persistent-navbar-offset, 0px));
|
||||
max-height: calc(100vh - 47px - var(--persistent-navbar-offset, 0px));
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
@@ -1708,7 +1710,8 @@ tbody.commit-list {
|
||||
|
||||
.ui.attached.header.diff-file-header.sticky-2nd-row {
|
||||
position: sticky;
|
||||
top: calc(44px + var(--persistent-navbar-offset, 0px)); /* match .repository .diff-detail-box */
|
||||
/* top: calc(44px + var(--persistent-navbar-offset, 0px)); match .repository .diff-detail-box */
|
||||
top: calc(56px + var(--persistent-navbar-offset, 0px));
|
||||
z-index: 7;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user