Задача 040: название в UI — «IPAM Manager»
В web/app.js три вхождения «ipam_manager» (шапка, экран входа и шаг 2FA) заменены на «IPAM Manager». Атомарная правка отдельным коммитом. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a6e70ffd1a
commit
aeb89dbded
4 files changed
+23
-3
No files matched your search
@@ -205,6 +205,7 @@ docker compose -p ipam_control_006 up -d --build && venv/bin/python -m pytest -q
|
|||||||
| 036 | Меню пользователя в шапке: логин с выпадающим списком | [план](docs/changes/036-user-menu/PLAN.md) · [итог](docs/changes/036-user-menu/SUMMARY.md) |
|
| 036 | Меню пользователя в шапке: логин с выпадающим списком | [план](docs/changes/036-user-menu/PLAN.md) · [итог](docs/changes/036-user-menu/SUMMARY.md) |
|
||||||
| 037 | Двухфакторная аутентификация TOTP, по выбору пользователя | [план](docs/changes/037-totp-2fa/PLAN.md) · [итог](docs/changes/037-totp-2fa/SUMMARY.md) |
|
| 037 | Двухфакторная аутентификация TOTP, по выбору пользователя | [план](docs/changes/037-totp-2fa/PLAN.md) · [итог](docs/changes/037-totp-2fa/SUMMARY.md) |
|
||||||
| 038 | Тёмная тема UI | [план](docs/changes/038-dark-theme/PLAN.md) · [итог](docs/changes/038-dark-theme/SUMMARY.md) |
|
| 038 | Тёмная тема UI | [план](docs/changes/038-dark-theme/PLAN.md) · [итог](docs/changes/038-dark-theme/SUMMARY.md) |
|
||||||
|
| 040 | Название в UI: «IPAM Manager» | [план](docs/changes/040-brand-name/PLAN.md) · [итог](docs/changes/040-brand-name/SUMMARY.md) |
|
||||||
|
|
||||||
## Отчёты ревью
|
## Отчёты ревью
|
||||||
- [Ревью кодовой базы](docs/reviews/2026-09-26-codebase-review.md) (находки → изменения 011–023)
|
- [Ревью кодовой базы](docs/reviews/2026-09-26-codebase-review.md) (находки → изменения 011–023)
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Название в UI: «IPAM Manager» (изменение 040)
|
||||||
|
|
||||||
|
## Context
|
||||||
|
В `web/app.js` название приложения выводится как `ipam_manager` — в шапке и на экране входа (шаг пароля и шаг 2FA), всего 3 строки.
|
||||||
|
Нужно «IPAM Manager», как в `<title>`, README и issuer TOTP. Атомарная правка, отдельный коммит.
|
||||||
|
|
||||||
|
## Изменения
|
||||||
|
- `web/app.js`: `ipam_manager` → `IPAM Manager` во всех трёх местах; в `web/` и `app/` других вхождений нет.
|
||||||
|
|
||||||
|
## Проверка
|
||||||
|
- `grep -c ipam_manager web/app.js` → 0; `node --check`; стенд отдаёт новый `app.js`.
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# Итог: название в UI — «IPAM Manager» (изменение 040)
|
||||||
|
|
||||||
|
План: `PLAN.md`. В `web/app.js` три вхождения `ipam_manager` (шапка, экран входа — шаг пароля и шаг 2FA) заменены на «IPAM Manager».
|
||||||
|
Других вхождений в `web/` и `app/` не было.
|
||||||
|
|
||||||
|
## Проверки
|
||||||
|
- `grep -c ipam_manager web/app.js` → 0; `node --check web/app.js` — чисто.
|
||||||
|
- На стенде появится при ближайшей пересборке (вместе с изменением 039).
|
||||||
+3
-3
@@ -160,7 +160,7 @@ function shell(active, content) {
|
|||||||
{ label: "Светлая", value: "light", cls: curTheme === "light" ? "sel" : "" },
|
{ label: "Светлая", value: "light", cls: curTheme === "light" ? "sel" : "" },
|
||||||
{ label: "Тёмная", value: "dark", cls: curTheme === "dark" ? "sel" : "" },
|
{ label: "Тёмная", value: "dark", cls: curTheme === "dark" ? "sel" : "" },
|
||||||
], "row-pop")}</span>`;
|
], "row-pop")}</span>`;
|
||||||
return `<div class="appbar"><div class="brand"><span class="brand-logo">${I.globe()}</span>ipam_manager</div>
|
return `<div class="appbar"><div class="brand"><span class="brand-logo">${I.globe()}</span>IPAM Manager</div>
|
||||||
<nav class="nav">${nav.map(([k, l]) => `<a href="#/${k}" class="${k === active ? "active" : ""}">${l}</a>`).join("")}</nav>
|
<nav class="nav">${nav.map(([k, l]) => `<a href="#/${k}" class="${k === active ? "active" : ""}">${l}</a>`).join("")}</nav>
|
||||||
<div class="grow"></div><span style="display:flex;align-items:center;gap:8px">${themeBtn}${userMenu}</span></div>
|
<div class="grow"></div><span style="display:flex;align-items:center;gap:8px">${themeBtn}${userMenu}</span></div>
|
||||||
<div class="page">${content}</div>`;
|
<div class="page">${content}</div>`;
|
||||||
@@ -872,13 +872,13 @@ ${fInput("code", "Код из приложения или код восстан
|
|||||||
// ---- login
|
// ---- login
|
||||||
function loginScreen(err = "") {
|
function loginScreen(err = "") {
|
||||||
if (pendingMfa) {
|
if (pendingMfa) {
|
||||||
return `<div class="card login"><div class="brand"><span class="brand-logo">${I.globe()}</span>ipam_manager</div><h1>Вход</h1>
|
return `<div class="card login"><div class="brand"><span class="brand-logo">${I.globe()}</span>IPAM Manager</div><h1>Вход</h1>
|
||||||
<form id="mfa-form"><div class="err-banner" style="margin-top:12px" ${err ? "" : "hidden"}>${esc(err)}</div>
|
<form id="mfa-form"><div class="err-banner" style="margin-top:12px" ${err ? "" : "hidden"}>${esc(err)}</div>
|
||||||
<label class="field"><span>Код из приложения или код восстановления</span><input class="input mono" name="code" autocomplete="one-time-code" autofocus></label>
|
<label class="field"><span>Код из приложения или код восстановления</span><input class="input mono" name="code" autocomplete="one-time-code" autofocus></label>
|
||||||
<button class="btn primary" type="submit">Подтвердить</button>
|
<button class="btn primary" type="submit">Подтвердить</button>
|
||||||
<button class="btn ghost" type="button" data-action="mfa-back" style="margin-top:8px;width:100%">Назад</button></form></div>`;
|
<button class="btn ghost" type="button" data-action="mfa-back" style="margin-top:8px;width:100%">Назад</button></form></div>`;
|
||||||
}
|
}
|
||||||
return `<div class="card login"><div class="brand"><span class="brand-logo">${I.globe()}</span>ipam_manager</div><h1>Вход</h1>
|
return `<div class="card login"><div class="brand"><span class="brand-logo">${I.globe()}</span>IPAM Manager</div><h1>Вход</h1>
|
||||||
<form id="login-form"><div class="err-banner" style="margin-top:12px" ${err ? "" : "hidden"}>${esc(err)}</div>
|
<form id="login-form"><div class="err-banner" style="margin-top:12px" ${err ? "" : "hidden"}>${esc(err)}</div>
|
||||||
<label class="field"><span>Логин</span><input class="input" name="username" autocomplete="username" autofocus></label>
|
<label class="field"><span>Логин</span><input class="input" name="username" autocomplete="username" autofocus></label>
|
||||||
<label class="field"><span>Пароль</span><input class="input" type="password" name="password" autocomplete="current-password"></label>
|
<label class="field"><span>Пароль</span><input class="input" type="password" name="password" autocomplete="current-password"></label>
|
||||||
|
|||||||
Reference in new issue
Block a user