Add personal notes, DeepSearch history, backup offload, and gateway auth throttling

Also streamline the top navigation: drop the Tools dropdown, make Quizzes
and Battles icon-only entries, and remove the Workspace, Containers and
Editor entry points from the project detail page.
This commit is contained in:
2026-09-12 20:32:31 +02:00
parent c4f7d01b2d
commit cae139ead9
158 changed files with 6156 additions and 377 deletions
+23
View File
@@ -452,6 +452,29 @@ def test_profiles_api_doc_delete_is_member_safe(app_server):
assert "purge" not in lowered
def test_docs_content_response_fields_carry_correct_nullable_flags(app_server):
by_id = _configs_by_id(requests.get(f"{BASE_URL}/docs/content.html").text)
posts_detail = {p["name"]: p for p in by_id["posts-detail"]["params"] if p["location"] == "response"}
assert posts_detail["post.title"]["nullable"] is True
assert posts_detail["post.image"]["nullable"] is True
assert posts_detail["post.content"]["nullable"] is False
assert posts_detail["post.slug"]["nullable"] is False
feed_list = {p["name"]: p for p in by_id["feed-list"]["params"] if p["location"] == "response"}
assert feed_list["items[].poll"]["nullable"] is True
assert feed_list["items[].war"]["nullable"] is True
assert feed_list["items[].my_vote"]["nullable"] is False
assert feed_list["items[].comment_count"]["nullable"] is False
def test_docs_profiles_response_fields_carry_correct_nullable_flags(app_server):
by_id = _configs_by_id(requests.get(f"{BASE_URL}/docs/profiles.html").text)
profile_detail = {p["name"]: p for p in by_id["profile-detail"]["params"] if p["location"] == "response"}
assert profile_detail["api_key"]["nullable"] is True
assert profile_detail["rank"]["nullable"] is True
assert profile_detail["is_following"]["nullable"] is False
assert profile_detail["profile_user.username"]["nullable"] is False
def test_admin_api_doc_has_moderation(seeded_db):
admin = get_table("users").find_one(username="alice_test")
text = requests.get(