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
+29
View File
@@ -127,6 +127,35 @@ def test_self_vote_does_not_notify(app_server):
assert after == before
def test_vote_zero_retracts_existing_vote(app_server):
s_a, a_name = _session_votes()
s_b, _ = _session_votes()
post_uid = _make_post_votes(_uid_votes(a_name))
s_b.post(f"{BASE_URL}/votes/post/{post_uid}", data={"value": "1"}, headers=AJAX_votes)
r = s_b.post(f"{BASE_URL}/votes/post/{post_uid}", data={"value": "0"}, headers=AJAX_votes)
assert r.json() == {"net": 0, "up": 0, "down": 0, "value": 0}
def test_vote_zero_with_no_prior_vote_is_a_noop(app_server):
s_a, a_name = _session_votes()
s_b, _ = _session_votes()
post_uid = _make_post_votes(_uid_votes(a_name))
r = s_b.post(f"{BASE_URL}/votes/post/{post_uid}", data={"value": "0"}, headers=AJAX_votes)
assert r.status_code == 200
assert r.json() == {"net": 0, "up": 0, "down": 0, "value": 0}
votes = get_table("votes")
assert votes.count(target_uid=post_uid, target_type="post") == 0
def test_vote_zero_after_downvote_retracts(app_server):
s_a, a_name = _session_votes()
s_b, _ = _session_votes()
post_uid = _make_post_votes(_uid_votes(a_name))
s_b.post(f"{BASE_URL}/votes/post/{post_uid}", data={"value": "-1"}, headers=AJAX_votes)
r = s_b.post(f"{BASE_URL}/votes/post/{post_uid}", data={"value": "0"}, headers=AJAX_votes)
assert r.json() == {"net": 0, "up": 0, "down": 0, "value": 0}
def test_non_ajax_vote_redirects_to_referer(app_server):
s_a, a_name = _session_votes()
s_b, _ = _session_votes()