feat: release 2.1.0 with optional Flash final AI review

Default Flash final review to off and persist the setting across the UI,
MCP, SDK and queued tasks. Keep execution separate from test verdicts.

Bundle UI fonts and licenses to remove Google Fonts from startup builds.
Align backend/frontend versions and document installation and upgrades.
This commit is contained in:
chenmingxuan committed 2026-10-23 12:36:56 +08:00
1 parent b584dae80a
commit 83bcfd54d5
52 files changed
+898 -33

No files matched your search

@@ -767,6 +767,34 @@ async def test_enqueue_tasks_unified_ingress():
assert task["goal"] == "Test unified goal"
def test_flash_review_is_refreshed_at_launch_and_frozen_in_worker_environment(monkeypatch):
from apps.admin_console.services.execution_config import execution_config
monkeypatch.setattr("artemis.exploration.store.explorations.run", lambda _sid: None)
monkeypatch.setattr("apps.admin_console.services.automation_store.store.job", lambda _sid: None)
item = {"profile": "flash", "goal": "queued", "session_id": "flash-config-snapshot"}
monkeypatch.setenv("ARTEMIS_FLASH_FINAL_CHECK_ENABLED", "false")
old_snapshot = execution_config(item)
item["execution_config"] = old_snapshot
assert old_snapshot["flash_final_check_enabled"] is False
assert "flash_final_check_enabled" not in old_snapshot["runtime_overrides"]
monkeypatch.setenv("ARTEMIS_FLASH_FINAL_CHECK_ENABLED", "true")
item["execution_config"] = execution_config(item)
assert item["execution_config"]["flash_final_check_enabled"] is True
# Simulate a later save between this task's snapshot and worker launch.
monkeypatch.setenv("ARTEMIS_FLASH_FINAL_CHECK_ENABLED", "false")
_cmd, env = TaskQueueService._build_worker_invocation(
item,
"flash-config-snapshot",
item["session_id"],
item["goal"],
"flash",
TaskQueueService._task_target(item),
)
assert env["ARTEMIS_FLASH_FINAL_CHECK_ENABLED"] == "true"
assert os.environ["ARTEMIS_FLASH_FINAL_CHECK_ENABLED"] == "false"
@pytest.mark.asyncio
async def test_queue_worker_notifies_conversation():
"""Verify queue_worker calls notify() when conversation_id is attached to task."""