ciregenz
|
628fc5521a
|
[eric] web: startpage leaves the keyless race; every endpoint now serves an Anubis wall to POST too, 0/22 answered (ENG-302)
|
2026-08-16 01:53:48 -07:00 |
|
ciregenz
|
784b33c15a
|
[eric] web: bing + brave join the keyless race behind ddg; bing went 50/50 on the burst that tripped both ddg and brave
|
2026-08-10 14:02:42 -07:00 |
|
ciregenz
|
d506cf1896
|
[eric] web: startpage's proof-of-work wall now covers POST too; name it a refusal so the breaker benches the dead engine honestly
|
2026-08-10 13:01:38 -07:00 |
|
ciregenz
|
dfa5dbd636
|
[eric] web: send a bot wall to our own Chromium instead of handing the model a challenge screen
|
2026-07-30 16:52:27 -07:00 |
|
ciregenz
|
108ef03451
|
[eric] web: let Startpage say 'nothing matched' and 'I refuse' differently so a closed engine stops costing its budget
|
2026-07-30 16:35:51 -07:00 |
|
ciregenz
|
37100e9b5c
|
[eric] web: ask the archive for the raw snapshot so we stop returning its calendar toolbar as the article
|
2026-07-30 16:29:24 -07:00 |
|
ciregenz
|
a78d6276c0
|
[eric] web: extract the article instead of the nav bar, and stop calling a dead domain a security refusal
|
2026-07-30 16:25:05 -07:00 |
|
ciregenz
|
119e4a916e
|
[eric] web: stop paying a dead search engine its full tier budget on every query, and let a 403 still try the lite frontend
|
2026-07-30 16:24:58 -07:00 |
|
ciregenz
|
b8cfaff690
|
[eric] web: stop the fetch cascade on a body with no text layer instead of buying a paid summary of nothing
|
2026-07-30 14:55:56 -07:00 |
|
ciregenz
|
65430e1234
|
[eric] web: fall back to the Wayback Machine when the live page is dead or walled
|
2026-07-30 14:40:48 -07:00 |
|
ciregenz
|
88abab0c1c
|
[eric] web: extract PDF text and refuse other binaries instead of dumping raw bytes into the model
|
2026-07-30 14:40:48 -07:00 |
|
ciregenz
|
f30677e255
|
[eric] web: move the search engines into tools/search so the folder stays under the item cap
|
2026-07-30 14:34:32 -07:00 |
|
ciregenz
|
d84f2d5301
|
[eric] web: add Startpage as a second independent search engine so one bot challenge cannot close free search
|
2026-07-30 14:34:29 -07:00 |
|
ciregenz
|
559bbbe768
|
[eric] web: send the keyless search rungs through a Chrome-fingerprint client (measured 4/8 -> 8/8 on DuckDuckGo)
|
2026-07-30 14:28:49 -07:00 |
|
ciregenz
|
1db3022bd3
|
[eric] web: DDG lite fallback so free search survives html-endpoint throttle/markup drift (+ split search_ddg out of web.py)
|
2026-07-07 02:04:37 -07:00 |
|
ciregenz
|
0d093cc5f8
|
[eric] backend: one-line every comment + collapse 3+ blank runs across apps/ (AST-verified identical, -lines); CLAUDE.md one-line-comment rule
|
2026-06-25 02:29:04 -07:00 |
|
 ciregenzandciregenz
|
2ad3000562
|
[eric] backend: close SSRF v4-in-v6 bypass in ssrf_guard + regression test
|
2026-06-24 18:26:56 -07:00 |
|
ciregenz
|
1bcc78567b
|
[eric] backend: leading-_ -> p_/P_/public for class methods + module conditional-block vars + _ReadyServer class + _pending_oauth import; promote cross-file (search_ddg)
|
2026-06-23 21:50:08 -07:00 |
|
ciregenz
|
6721c39719
|
[eric] backend: leading-_ -> p_/public for remaining module-level fns/classes/consts + test helpers across apps + tests (p-private 0, 1441 green)
|
2026-06-23 21:30:47 -07:00 |
|
ciregenz
|
394dcd7492
|
[eric] agents: leading-_ -> p_/public in providers+core+tools (registry/pricing/seq_log/mcp_preflight/openai_passthrough/web/ssrf_guard); promote cross-module fns public, fix monkeypatch string refs
|
2026-06-23 18:39:11 -07:00 |
|
ciregenz
|
f7f37766b4
|
[eric] agents: extract web-MCP-need provider decision into tools/web (should_register_web_mcp)
|
2026-06-23 02:52:55 -07:00 |
|
ciregenz
|
928df4f324
|
[eric] websearch: gate built-in tool by model route so subscription Claude stops 401ing
|
2026-06-03 18:15:30 -07:00 |
|
ciregenz
|
33f6e4598e
|
[eric] web: subscription-OAuth WebSearch 401s on token rotation, so keep the reliable DuckDuckGo fallback for those users
|
2026-06-03 15:29:20 -07:00 |
|
eric
|
0b35b70d0b
|
[eric] sec: wire ssrf guard into webfetch (per-redirect) and /api/web/fetch (initial)
|
2026-05-31 18:05:34 -07:00 |
|
eric
|
68b7aa9a94
|
[eric] sec: ssrf guard module (async dns, ipv6 covered, loopback allowed for app builder)
|
2026-05-31 18:04:16 -07:00 |
|
ciregenz
|
5b0c6e1df3
|
defluff: strip em-dashes + shorten docstrings across backend (cosmetic only, no logic change)
|
2026-05-20 05:25:23 -07:00 |
|
ciregenz
|
8286cc1a5c
|
[eric] delete ~3.6k lines of dead code (old unused agent runtime, ghost fields, orphan scripts). all 660 tests still pass, no functional
change.
|
2026-05-03 22:39:17 -07:00 |
|
ciregenz
|
f5cc3a36fb
|
[eric] remove vendored 9router (now fetched from npm at build), remove Copilot, and fix subs + tools
|
2026-04-25 02:26:08 -07:00 |
|
ciregenz
|
ebea25f0c2
|
[eric] [eric] add PostHog analytics, 9Router subscription proxy, unified usage tracking
- PostHog integration: collector, analytics subapp, opt-in UI, Analytics page
- 9Router: auto-start, OAuth subscription flow, /v1/messages Anthropic format support
- Settings overhaul: multi-provider API keys, subscription connect UI, onboarding modal
- Unified usage: merge 9Router cost/token data into Settings Usage tab
- Provider system: providers/, agent_loop, tools/ (unused, for future non-Anthropic support)
- Agent SDK: restored as primary with 9Router ANTHROPIC_BASE_URL fallback
- Updated system prompt, credential resolution, dashboard analytics
|
2026-03-24 14:02:58 -07:00 |
|