feat(sources): admin page to add and remove git sources (TODO.md L4)
This commit is contained in:
@@ -18,15 +18,17 @@ sources, document viewer, global tuning, login): one shared markup block
|
||||
|
||||
Per role, the VISIBLE inventory:
|
||||
|
||||
* admin: brand + nav [Chat, #nav-sources, #nav-tuning] + #steering-toggle
|
||||
+ #sync-btn + #new-chat-btn + #sign-out-btn (with #sign-in-link
|
||||
hidden) — on all five pages, same id+class inventory, same DOM order;
|
||||
* anonymous: brand + nav [Chat] (#nav-sources / #nav-tuning hidden —
|
||||
locked A10 UI revision) + #new-chat-btn + #sign-in-link (with
|
||||
#sync-btn hidden, #sign-out-btn hidden) on all five pages — and the
|
||||
steering toggle + panel are ABSENT from the DOM (phase 16 "absent,
|
||||
not hidden" treatment, carried into phase 34 task 01; test_admin_auth
|
||||
pins it).
|
||||
* admin: brand + nav [Chat, #nav-sources, #nav-git-sources, #nav-tuning]
|
||||
(four links, that order — the Git sources link joined in phase 35,
|
||||
owner permission 2026-08-26) + #steering-toggle + #sync-btn +
|
||||
#new-chat-btn + #sign-out-btn (with #sign-in-link hidden) — on all
|
||||
five pages, same id+class inventory, same DOM order;
|
||||
* anonymous: brand + nav [Chat] (#nav-sources / #nav-git-sources /
|
||||
#nav-tuning hidden — locked A10 UI revision) + #new-chat-btn +
|
||||
#sign-in-link (with #sync-btn hidden, #sign-out-btn hidden) on all
|
||||
five pages — and the steering toggle + panel are ABSENT from the DOM
|
||||
(phase 16 "absent, not hidden" treatment, carried into phase 34 task
|
||||
01; test_admin_auth pins it).
|
||||
|
||||
Normalization for the inventory comparison: the current-page ``is-active``
|
||||
nav marker and the sign-in ``?next=`` value legitimately differ per page,
|
||||
@@ -214,6 +216,9 @@ def _visit(page: Page, app_url: str, name: str, url: str, admin: bool) -> list[s
|
||||
expect(page.locator(".app-nav a[href='/']")).to_be_visible() # Chat
|
||||
if admin:
|
||||
expect(page.locator("#nav-sources")).to_be_visible()
|
||||
# Phase 35: the fourth admin-only nav link (Git sources) is
|
||||
# revealed on every page, between Sources and Tuning.
|
||||
expect(page.locator("#nav-git-sources")).to_be_visible()
|
||||
expect(page.locator("#nav-tuning")).to_be_visible()
|
||||
expect(page.locator("#steering-toggle")).to_be_visible()
|
||||
expect(page.locator("#sync-btn")).to_be_visible()
|
||||
@@ -223,6 +228,7 @@ def _visit(page: Page, app_url: str, name: str, url: str, admin: bool) -> list[s
|
||||
# Locked A10 UI revision: admin-only links ship hidden, never
|
||||
# revealed for anonymous…
|
||||
expect(page.locator("#nav-sources")).to_be_hidden()
|
||||
expect(page.locator("#nav-git-sources")).to_be_hidden()
|
||||
expect(page.locator("#nav-tuning")).to_be_hidden()
|
||||
expect(page.locator("#sync-btn")).to_be_hidden()
|
||||
expect(page.locator("#sign-out-btn")).to_be_hidden()
|
||||
@@ -281,6 +287,7 @@ def _admin_login_page_inventory(page: Page, app_url: str) -> list[str]:
|
||||
_wait_settled(page, admin=True)
|
||||
expect(page.locator(".app-nav a[href='/']")).to_be_visible()
|
||||
expect(page.locator("#nav-sources")).to_be_visible()
|
||||
expect(page.locator("#nav-git-sources")).to_be_visible()
|
||||
expect(page.locator("#nav-tuning")).to_be_visible()
|
||||
expect(page.locator("#steering-toggle")).to_be_visible()
|
||||
expect(page.locator("#sync-btn")).to_be_visible()
|
||||
|
||||
Reference in New Issue
Block a user