惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
D
DataBreaches.Net
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
Recent Announcements
Recent Announcements
The Register - Security
The Register - Security
S
Secure Thoughts
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
V2EX - 技术
V2EX - 技术
腾讯CDC
GbyAI
GbyAI
G
Google Developers Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
Jina AI
Jina AI
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
AI
AI
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
H
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog
The GitHub Blog
The GitHub Blog
Hacker News: Ask HN
Hacker News: Ask HN
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
LibreFang 2026.4.27 Released
涼風羽月 · 2026-05-04 · via DEV Community
Cover image for LibreFang 2026.4.27 Released

涼風羽月

LibreFang 2026.4.27 Released

LibreFang v2026.4.27 ships the changes below. See the full changelog for the complete list.

Added

  • TUI setup wizard now offers microsoft, zai, zai_coding, volcengine, volcengine_coding, byteplus, byteplus_coding alongside the existing first-run options. The wizard's PROVIDERS list had drifted from PROVIDER_REGISTRY and silently hid these from new installs; a unit test now pins these entries against future regressions. (@houko)
  • Treat CLI logins as first-class default providers (#3061) (@houko)
  • Grafana Tempo + business-level span instrumentation (#3064) (@houko)
  • /new creates a new session instead of resetting the current one (#3071) (@neo-wanderer)
  • Support image-generation models (registry modality field) (#3074) (@houko)
  • Wire chat attachment uploads in ChatPage (#3075) (@houko)
  • Add Novita AI as OpenAI-compatible provider (#3076) (@houko)
  • Agent name prefix on outbound + Signal plain-text default (#3077) (@houko)
  • SSE attach endpoint for multi-client session co-watching (#3078) (@houko)
  • Add SearXNG self-hosted search provider (#3079) (@houko)
  • Add AWS Bedrock provider with Bearer token auth (#3080) (@houko)
  • AuditCheck framework + first 3 CLAUDE.md gotcha checks (#3082) (@houko)
  • Add LlmFamily enum + LlmDriver::family() (#3083) (@houko)
  • SSE attach hook for multi-client session co-watching (#3087) (@houko)
  • Add ToolApprovalClass + tool_classifier (no behavior change yet) (#3092) (@houko)
  • Session lifecycle event bus (additive, no subscribers yet) (#3093) (@houko)
  • Support PDF and text/code file attachments end-to-end (#3094) (@houko)
  • Trajectory export endpoint with privacy redaction (#3097) (@houko)
  • Extend detect_embedding_provider with vLLM + LM Studio fallback (#3099) (@houko)
  • Cron multi-destination delivery with failure isolation (#3102) (@houko)
  • UI for cron multi-destination delivery targets (#3103) (@houko)
  • Cache /config + reject pageno=0 + annotate truncation (#3108) (@houko)
  • Re-read agent context.md per turn (#3115) (@houko)
  • Central slash command registry (PR-1/3) (#3122) (@houko)
  • Slash command registry — CLI/TUI surface (PR-2/3) (#3123) (@houko)
  • Configurable max history messages (per-agent + global override) (#3125) (@neo-wanderer)
  • System_and_3 prompt cache stamping for Anthropic (M1) (#3126) (@houko)
  • ParallelSafety projection for batch tool dispatch (PR-1/6) (#3127) (@houko)
  • Plan_batch + path-overlap planner for tool dispatch (PR-2/6) (#3129) (@houko)
  • Model metadata lookup pipeline (PR-1/3, layers 1+2+5) (#3133) (@houko)
  • Model metadata L3 cache + L4 Ollama probe (PR-2/3) (#3134) (@houko)
  • Model metadata L4 Anthropic + OpenAI-compat probes (PR-2.5/3) (#3140) (@houko)
  • KernelConfig.parallel_tools section (PR-3/6) (#3144) (@houko)
  • Cron pre_script + silent_marker schema (PR-1/3) (#3145) (@houko)
  • Cache_hit_ratio metric + trajectory field (M2/2) (#3149) (@houko)
  • Agent detail drawer + filter pill i18n (#3159) (@houko)
  • Right-side drawer pattern for inspect-detail surfaces (#3166) (@houko)
  • Convert hand detail panel to drawer variant (#3168) (@houko)
  • Roll out drawer/panel pattern across all page modals (#3175) (@houko)
  • Add Jaeger as second trace backend alongside Tempo (#3176) (@houko)
  • Granular MCP taint policy + dashboard tree editor (closes #3050) (#3193) (@houko)
  • Jaeger trace backend + Loki/Alloy logs + CLI wiring (#3194) (@houko)
  • Per-(agent, session) liveness tracking and session-scoped stop (#3195) (@houko)
  • RBAC M2 — audit user/channel attribution + stable UserId (#3054) (#3196) (@houko)
  • Hot-reload log_level via dashboard without daemon restart (#3200) (@houko)
  • RBAC M4 — channel-native role mapping (Telegram/Discord/Slack) (#3054) (#3202) (@houko)
  • RBAC M5 — audit query/export + per-user budget API (#3054) (#3203) (@houko)
  • RBAC M3 — per-user tool policy + memory namespace ACL (#3054) (#3205) (@houko)
  • RBAC M6 — dashboard (users, identity linking, simulator, CSV import + stubs) (#3054) (#3209) (@houko)
  • Per-agent + global lane caps for trigger dispatch (#3210) (@neo-wanderer)
  • Auto-download voice messages mirroring file path (#3212) (@neo-wanderer)
  • Wip (#3213) (@houko)
  • Hand agent runtime overrides with restart persistence (#3216) (@leszek3737)
  • Deliver HealthCheckFailed to notification.alert_channels (#3218) (@neo-wanderer)
  • Per-user budget write/clear endpoints + dashboard editor (#3224) (@houko)
  • Activate AuditPage now that M5 audit endpoints shipped (#3225) (@houko)
  • Per-action retention policy with chain-anchor trim (#3227) (@houko)
  • RBAC effective-permissions snapshot — wire simulator (#3054) (#3228) (@houko)
  • RBAC M3 — per-user policy GET/PUT + dashboard editor (#3229) (@houko)
  • RBAC — single-decision authz/check endpoint (#3054) (#3231) (@houko)
  • User-list summary flags + custom channel rule editor (#3229 follow-up) (#3232) (@houko)
  • Owner-only API key rotation with live session kill (#3233) (@houko)
  • External mount points in agent.toml (#3230) (#3234) (@houko)
  • Channel field as dynamic dropdown with custom fallback (#3248) (@houko)
  • URL-synced filters, JSON export, row detail modal (#3252) (@houko)
  • Move filters into right-docked drawer (#3254) (@houko)
  • BeforePromptBuild hook can contribute labeled DynamicSection injected into the system prompt, with 8KiB per-section / 32KiB total caps (closes #3326) (#3358) (@houko)

Fixed

  • Reconnect WhatsApp gateway after transient disconnects (#21) (@houko)
  • Render connection screen via custom URI scheme (closes #3052) (#3056) (@houko)
  • Create log dir + open log before stdout redirect (#3057) (@houko)
  • Surface CLI logins as their own providers, not API-provider fallbacks (#3059) (@houko)
  • Pre-create logs dir in entrypoint (defense for #3058) (#3060) (@houko)
  • Bundle compose stack in-binary, add OTLP collector (#3062) (@houko)
  • Create HTTP trace spans at INFO so OTel exporter sees them (#3063) (@houko)
  • Move env_filter to fmt layer so OTel sees INFO spans (#3065) (@houko)
  • Drop ingester/compactor from Tempo config (#3067) (@houko)
  • Boot-time TOML drift detection now reaches hand agents (#3068) (@neo-wanderer)
  • Reprobe local providers every 60s + refresh on test (#3069) (@houko)
  • Add missing files to src to fix librefang-cli build (#3073) (@FrantaNautilus)
  • Honor session_mode=new with per-fire isolated sessions (#3081) (@houko)
  • Copilot streaming empty tool calls + Claude assistant strip (#3084) (@houko)
  • Gemini array-items default + first-message-must-be-user (#3085) (@houko)
  • Safe UTF-8 boundary in three remaining truncation sites (#3086) (@houko)
  • PowerShell sandbox bypass + agent-config persistence + WS race + Revolt self-host (#3088) (@houko)
  • Cron preservation across hand reactivation + telegram startup timeout + token estimation includes ToolUse (#3090) (@houko)
  • Capture text from intermediate tool_use iterations (#3091) (@houko)
  • Percent-decode WS auth token to preserve base64 characters (#3095) (@houko)
  • Skip heartbeat timeout for agents in their idle grace window (#3096) (@houko)
  • Handle BrokenPipe gracefully in doctor --json (#3100) (@houko)
  • UTF-8-safe error truncation + 502/504 retry + response classify tests (#3104) (@houko)
  • Cap accumulated_text + document streaming non-redelivery contract (#3106) (@houko)
  • Cron dedupe + next_run + token_length annotation (#3109) (@houko)
  • Sticky has_processed_message replaces time-based grace (#3111) (@houko)
  • Use 127.0.0.1 instead of localhost for local LLM URLs (#3112) (@houko)
  • Pass agents_dir to hand route candidate scan to silence WARN flood (#3113) (@houko)
  • Close non-loopback auth bypass when api_key is empty (#3114) (@houko)
  • Downgrade pure-normalization to debug, keep WARN for real repair (#3117) (@houko)
  • Use "default" provider/model in custom-agent template (#3121) (@houko)
  • Forward api_key as Bearer in local provider probe (#3128) (@houko)
  • Degrade Memory page gracefully when proactive memory is disabled (#3131) (@houko)
  • Allow named workspaces in read-side path resolution (#3137) (@neo-wanderer)
  • Unbreak cron_delivery tests + move guards to input validation (#3139) (@houko)
  • Unbreak local provider config in GUI (#3141) (@houko)
  • Re-render hand [[settings]] tail after boot-time TOML drift (#3142) (@neo-wanderer)
  • Relax probe timeout for remote local-provider URLs (#3146) (@houko)
  • Preserve tool annotations for parallel safety classification (PR-6/6) (#3147) (@houko)
  • Include SearXNG in web_search_available check (#3152) (@houko)
  • Drop redundant runtime SSRF check in deliver_webhook (#3155) (@houko)
  • Add .desktop entry and install icon (#3157) (@FrantaNautilus)
  • Seed [[settings]] defaults into hand instance config on activation (#3160) (@houko)
  • Skip empty Blocks when stamping prompt cache markers (review fix for #3126) (#3161) (@houko)
  • Expose vLLM + LM Studio in embedding provider dropdown (refs #3138) (#3162) (@houko)
  • Re-render Reference Knowledge + Your Team tails after TOML drift (#3164) (@houko)
  • Provide .desktop entry and icon for librefang-desktop (#3156) (#3165) (@houko)
  • Regenerate config_schema golden after parallel_tools addition (#3167) (@houko)
  • Stop drawer scroll chaining into the page (#3169) (@houko)
  • Observability auto-start opt-in + home_dir isolation + RAII cleanup (#3170) (@houko)
  • Surface provider model list above the fold (#3179) (@houko)
  • Wire OS keyring (libsecret/Keychain/Credential Manager) (#3180) (@houko)
  • Wrap with wrapGAppsHook3 so tray icon resolves on NixOS (#3197) (@houko)
  • Probe OpenAI fallback for ollama-slot servers, hide non-discovered local models (#3204) (@houko)
  • Correct max_level_hint test assertions (#3206) (@houko)
  • Correct max_level_hint test assertions (#3207) (@houko)
  • Set sender_user_id metadata so RBAC works in groups (#3215) (@neo-wanderer)
  • Serialize channel config writes via toml_edit + lock (#3183) (#3223) (@houko)
  • Attribute loopback callers to user_api_keys when token provided (#3236) (@houko)
  • Invalidate effective-permissions on policy/budget mutations (#3228 follow-up) (#3237) (@houko)
  • Prefix sender_chat ids so they can't collide with user namespace (#3215 follow-up) (#3238) (@houko)
  • RBAC M3 follow-up — memory ACL fail-closed for anonymous callers (#3239) (@houko)
  • Include prev_hash so verifiers can replay the chain (#3203 follow-up) (#3240) (@houko)
  • RBAC M4 follow-up — role_cache reload + Telegram DM owner-escalation (#3241) (@houko)
  • Mark scope as user_policy_only to match implementation (#3231 follow-up) (#3242) (@houko)
  • Attribute admin actions to caller + log old->new diffs (#21 follow-up) (#3245) (@houko)
  • Harden CSV import + flag identity-link risk (#3209 follow-up) (#3246) (@houko)
  • RBAC M3 follow-up — namespace traversal + case-insensitive deny + memory audit emit (#3205) (#3249) (@houko)
  • Autonomous-loop tool calls bypass user gate (closes #3243) (#3251) (@houko)
  • Channel dropdown uses /api/channels for full 44-adapter list (#3253) (@houko)
  • Enforce deterministic ordering for LLM-bound MCP server / skill registries to stabilize provider prompt cache (closes #3298) (#3325) (@houko)

Changed

  • Derive JSON Schema from KernelConfig via schemars (#3055) (@houko)
  • Extract SessionStore trait alongside SQLite substrate (#3089) (@houko)
  • Make bridge helpers crate-private (#3181) (@houko)
  • Remove unused public helpers (#3182) (@houko)
  • Tighten visibility of internal request structs (#3184) (@houko)
  • Merge duplicate type definitions across crates (#3185) (@houko)
  • Rename Action enums to disambiguate from domain types (#3188) (@houko)
  • BREAKING: Split coding-provider API keys onto dedicated env vars — byteplus_coding now reads BYTEPLUS_CODING_API_KEY (was BYTEPLUS_API_KEY), volcengine_coding reads VOLCENGINE_CODING_API_KEY (was VOLCENGINE_API_KEY), zai_coding reads ZAI_CODING_API_KEY (was ZHIPU_API_KEY), zhipu_coding reads ZHIPU_CODING_API_KEY (was ZHIPU_API_KEY). Per-token siblings (byteplus, volcengine, zai, zhipu) keep their original env vars. Set the new env var if you use any _coding provider. (#3279) (@houko)
  • BREAKING: Register microsoft (GitHub Models / Azure AI Inference) as an explicit driver-registry entry with its own GITHUB_MODELS_TOKEN env var, distinct from github-copilot's GITHUB_TOKEN. Same PAT works for both, but the env vars are now separate so configuring one product no longer auto-activates the other in the model picker. Set GITHUB_MODELS_TOKEN if you use the microsoft provider. (#3281) (@houko)
  • BREAKING: Split zai from sharing ZHIPU_API_KEY with zhipuzai (api.z.ai) now reads ZAI_API_KEY while zhipu (open.bigmodel.cn) keeps ZHIPU_API_KEY. Same Zhipu credential value works for both, but the env vars are now separate so configuring one no longer auto-activates the other. Set ZAI_API_KEY if you use the zai provider. (#3285) (@houko)

Documentation

  • Add tool_timeouts configuration documentation (#3098) (@leszek3737)
  • Backfill reference for cron / config / providers / channels / api / observability (#3189) (@houko)
  • Clarify worktree continuation drives to PR (#3190) (@houko)
  • Align left nav with file tree (#3199) (@houko)
  • Backfill source-vs-doc gaps (providers / channels — config / API / CLI to follow) (#3201) (@houko)
  • Drop HTML comment that broke Deploy Docs on main (#3208) (@houko)
  • Align Chinese translations with English source (#3220) (@houko)

Maintenance

  • Rename normalize_schema_recursive + warn on items fallback (#3105) (@houko)
  • Document apply_agent_prefix idempotency caveats (#3107) (@houko)
  • Timing-side-channel mitigation in percent_decode (#3110) (@houko)
  • Align localhost test expectations with #3112 default change (#3118) (@houko)
  • Ignore local .plans/ working notes directory (#3130) (@houko)
  • Sync librefang-types tracing dep into Cargo.lock (#3132) (@houko)
  • Unbreak main — cargo fmt for model_metadata.rs (#3150) (@houko)
  • Unbreak main — fix clippy manual_pattern_char_comparison (#3153) (@houko)
  • Hand-level skills propagation regression for #3135 (#3163) (@houko)
  • Pull librefang-api into selective lane on librefang-types changes (#3171) (@houko)
  • Drop LEGACY_TEAM_TAIL_MARKER fallback (#3177) (@houko)
  • Install libdbus-1-dev for OpenAPI Drift job (#3186) (@houko)
  • Remove unused dependencies across workspace (#3187) (@houko)
  • Pin push_notification routing for health_check_failed (#3222) (@houko)
  • Unbreak typecheck on sessions-stream test (#3235) (@houko)
  • Unbreak typecheck on UserBudgetPage + duplicate type export (#3244) (@houko)

Other

  • Unbreak main — use local user_api_keys snapshot (#3250) (@houko)

Links


Enter fullscreen mode Exit fullscreen mode