feat: v2.9.6 — free-first NUX, cookie extraction, quality scoring

Setup wizard with consent-first cookie extraction (Chrome/Firefox/Safari),
yt-dlp auto-install, ScrapeCreators push, quality scoring (5 core sources),
status banner redesign, honest Reddit labeling, inline YouTube transcripts,
Exa free web search, Reddit public fallback, and post-research quality nudge.

Co-authored-by: Matt Van Horn <mvanhorn@MacBook-Pro.local>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matt Van Horn
2026-03-29 14:33:17 -07:00
committed by GitHub
parent 4d6224f79a
commit 775596ce21
34 changed files with 6238 additions and 320 deletions
+4 -2
View File
@@ -124,7 +124,8 @@ class TestLoadCodexAuth(unittest.TestCase):
class TestGetAvailableSourcesWithAuth(unittest.TestCase):
def test_codex_auth_ok_counts_as_openai(self):
@patch("lib.bird_x.is_bird_installed", return_value=False)
def test_codex_auth_ok_counts_as_openai(self, _mock_bird):
config = {
"OPENAI_API_KEY": "codex-token",
"OPENAI_AUTH_STATUS": "ok",
@@ -133,7 +134,8 @@ class TestGetAvailableSourcesWithAuth(unittest.TestCase):
result = env.get_available_sources(config)
self.assertIn("reddit", result)
def test_codex_auth_expired_not_counted(self):
@patch("lib.bird_x.is_bird_installed", return_value=False)
def test_codex_auth_expired_not_counted(self, _mock_bird):
config = {
"OPENAI_API_KEY": None,
"OPENAI_AUTH_STATUS": "expired",