Reimplement compose and add tiling windows

This commit is contained in:
2026-03-12 22:03:30 +00:00
parent 79766d279d
commit 6ceff63b71
126 changed files with 5111 additions and 10796 deletions

View File

@@ -30,8 +30,8 @@ class SettingsIntegrityTests(TestCase):
def test_capability_registry_excludes_removed_totp_scope(self):
self.assertNotIn("gateway.totp", all_scope_keys())
def test_codex_settings_receives_modules_settings_nav(self):
response = self.client.get(reverse("codex_settings"))
def test_tasks_settings_receives_modules_settings_nav(self):
response = self.client.get(reverse("tasks_settings"))
self.assertEqual(200, response.status_code)
settings_nav = response.context.get("settings_nav")
self.assertIsNotNone(settings_nav)
@@ -39,6 +39,9 @@ class SettingsIntegrityTests(TestCase):
labels = [str(item["label"]) for item in settings_nav["tabs"]]
self.assertIn("Commands", labels)
self.assertIn("Task Automation", labels)
self.assertNotIn("Codex", labels)
group_labels = [str(item["label"]) for item in settings_nav["groups"]]
self.assertEqual(["General", "Security", "AI", "Modules"], group_labels)
def test_business_plan_inbox_receives_modules_settings_nav(self):
response = self.client.get(reverse("business_plan_inbox"))
@@ -46,6 +49,8 @@ class SettingsIntegrityTests(TestCase):
settings_nav = response.context.get("settings_nav")
self.assertIsNotNone(settings_nav)
self.assertEqual("Modules", settings_nav["title"])
active_tabs = [str(item["label"]) for item in settings_nav["tabs"] if item["active"]]
self.assertEqual(["Business Plans"], active_tabs)
def test_behavioral_settings_receives_modules_settings_nav(self):
response = self.client.get(reverse("behavioral_signals_settings"))
@@ -56,6 +61,17 @@ class SettingsIntegrityTests(TestCase):
labels = [str(item["label"]) for item in settings_nav["tabs"]]
self.assertIn("Behavioral Signals", labels)
def test_security_settings_receives_group_and_child_tabs(self):
response = self.client.get(reverse("encryption_settings"))
self.assertEqual(200, response.status_code)
settings_nav = response.context.get("settings_nav")
self.assertIsNotNone(settings_nav)
self.assertEqual("Security", settings_nav["title"])
active_groups = [str(item["label"]) for item in settings_nav["groups"] if item["active"]]
self.assertEqual(["Security"], active_groups)
active_tabs = [str(item["label"]) for item in settings_nav["tabs"] if item["active"]]
self.assertEqual(["Encryption"], active_tabs)
def test_tasks_settings_cross_links_commands_and_permissions(self):
TaskProject.objects.create(user=self.user, name="Integrity Project")
response = self.client.get(reverse("tasks_settings"))
@@ -79,12 +95,14 @@ class SettingsIntegrityTests(TestCase):
self.assertContains(response, reverse("tasks_settings"))
self.assertContains(response, reverse("permission_settings"))
def test_settings_nav_includes_codex_approval_route(self):
request = self.factory.post(reverse("codex_approval"))
def test_settings_nav_includes_tasks_route(self):
request = self.factory.get(reverse("tasks_settings"))
request.user = self.user
request.resolver_match = resolve(reverse("codex_approval"))
request.resolver_match = resolve(reverse("tasks_settings"))
settings_nav = settings_hierarchy_nav(request)["settings_nav"]
self.assertEqual("Modules", settings_nav["title"])
active_tabs = [str(item["label"]) for item in settings_nav["tabs"] if item["active"]]
self.assertEqual(["Task Automation"], active_tabs)
def test_settings_nav_includes_translation_preview_route(self):
request = self.factory.post(reverse("translation_preview"))
@@ -92,3 +110,18 @@ class SettingsIntegrityTests(TestCase):
request.resolver_match = resolve(reverse("translation_preview"))
settings_nav = settings_hierarchy_nav(request)["settings_nav"]
self.assertEqual("Modules", settings_nav["title"])
active_tabs = [str(item["label"]) for item in settings_nav["tabs"] if item["active"]]
self.assertEqual(["Translation"], active_tabs)
def test_settings_pages_with_shared_shell_render_section_container(self):
for route_name in (
"notifications_settings",
"security_2fa",
"ai_models",
"ai_execution_log",
):
with self.subTest(route_name=route_name):
response = self.client.get(reverse(route_name))
self.assertEqual(200, response.status_code)
self.assertContains(response, '<section class="section">', html=False)
self.assertContains(response, '<div class="container">', html=False)