[{"data":1,"prerenderedAt":47},["ShallowReactive",2],{"$fRRfU_NZnTwPAiGw2NomUIr54palMKM1EyhNNfemnyqk":3},{"date":4,"generated_at":5,"picks":6,"candidates_scanned":46,"candidates_scored":30},"2026-04-23","2026-04-23T06:00:00.000000+00:00",[7,21,34],{"rank":8,"title":9,"source":10,"url":11,"category":12,"tldr":13,"score":14,"scores":15,"why":20},1,"v2.1.118","Claude Code Releases","https://github.com/anthropics/claude-code/releases/tag/v2.1.118","Release","- **Vim visual mode** (`v` and `V`) is now built in — select text, run operators, get visual feedback without a plugin\n- `/cost` and `/stats` are merged into `/usage` — one command with tabs for both views\n- **Custom themes** are now first-class: create and switch named themes from `/theme`, or hand-edit JSON in `~/.claude/themes/`; plugins can ship themes too\n- **Hooks can now invoke MCP tools directly** via `type: \"mcp_tool\"` — no more shelling out to a subprocess to call an MCP server from a hook\n- New `DISABLE_UPDATES` env var locks down all update paths including manual `claude update` — stricter than `DISABLE_AUTOUPDATER`, useful for IT-managed installs\n- WSL on Windows can now inherit Windows-side managed settings via the `wslInheritsWindowsSettings` policy key\n- `\"$defaults\"` in `autoMode.allow/soft_deny/environment` adds custom rules alongside the built-in list instead of replacing it",69,{"direct_claude_relevance":16,"practical_utility":17,"novelty":18,"source_credibility":19},25,24,7,13,"A dense release that ships three independently useful features: native vim visual mode (one of the most-requested UX additions), custom themes as a first-class system, and the ability to call MCP tools directly from hooks — which closes a gap that previously forced hook authors to shell out to an external process. Novelty is penalized since v2.1.117 was yesterday's Gold, but these features are architecturally distinct from yesterday's changes and will be immediately noticeable for vim users and MCP-heavy workflows.",{"rank":22,"title":23,"source":24,"url":25,"category":12,"tldr":26,"score":27,"scores":28,"why":33},2,"[Release] anthropics/claude-agent-sdk-python: v0.1.65","GitHub anthropics/claude-agent-sdk-python","https://github.com/anthropics/claude-agent-sdk-python/releases/tag/v0.1.65","- **Thinking display control**: pass `display` to `ThinkingConfig` (forwarded as `--thinking-display`) to override Opus 4.7's default `\"omitted\"` behavior and actually receive summarized thinking text in your SDK responses\n- **Batch session summaries**: `SessionStore.list_session_summaries()` + `fold_session_summary()` let session list views run in O(1) per session instead of loading full transcripts — a real speed difference at scale\n- **Import local sessions to store**: `import_session_to_store()` migrates on-disk local sessions into any `SessionStore` adapter — useful for moving from local dev to production Redis/Postgres\n- **ServerToolUseBlock + AdvisorToolResultBlock**: server-executed tool calls (`advisor`, `web_search`) that were previously silently dropped now surface in responses",67,{"direct_claude_relevance":29,"practical_utility":30,"novelty":31,"source_credibility":32},28,20,9,10,"Three features worth acting on today. The thinking display control is directly useful for anyone building on Opus 4.7 who has been puzzled by missing reasoning output — the default `\"omitted\"` behavior isn't obvious and the fix is a single config field. The ServerToolUseBlock fix is a correctness issue: if you're using web_search or advisor tool calls in the SDK and your message parser was silently returning empty AssistantMessage objects, your code was wrong without any error — this patch surfaces the actual content. Novelty is lightly penalized because v0.1.64's SessionStore work ran yesterday, but these features are independent.",{"rank":35,"title":36,"source":37,"url":38,"category":39,"tldr":40,"score":41,"scores":42,"why":45},3,"claude-3-haiku-20240307 just started returning errors — here's what happened","Dev.to Anthropic","https://dev.to/flarecanary/claude-3-haiku-20240307-just-started-returning-errors-heres-what-happened-57he","Update","- `claude-3-haiku-20240307` was **retired April 20, 2026** — requests now return `not_found_error`, not a redirect or a helpful message\n- Your code, your API key, your SDK version: all unchanged. The only thing that changed is Anthropic's router stopped recognizing the model ID\n- Replace with `claude-haiku-4-5` (or `claude-haiku-4-5-20251001` for the pinned version) — check env vars, config files, framework wrappers (LangChain, LlamaIndex, Vercel AI SDK), and hardcoded test fixtures separately",61,{"direct_claude_relevance":43,"practical_utility":17,"novelty":32,"source_credibility":44},22,5,"Haiku 3 retirement happened three days ago and production incidents are likely already in progress for teams that missed the deprecation email. This article does the diagnostic work: explains exactly why there's no error in your code, lists every place the stale model ID might be hiding (env vars, framework defaults, CI fixtures, package pins), and gives the replacement IDs. The model ID is embedded in more places than most developers expect — the article's checklist is worth running even if you think you already updated.",35,1776920634535]