Blocklists, Clients, Domains and Upstreams each carried a ToastLike shim
that duck-typed a react-hot-toast style API. The console uses its own
Toast context, so notify() was calling toast('some message') with a string
where ToastOptions is expected: every mutation toast rendered an empty
title. They now take the toast function from useToast() and send a real
{ title, tone } payload, mapping 'fail' onto the danger tone.
- cache.Entry.Hits and LRU.perShard become atomics; SetCapacity now evicts
down to the new budget; packKey fully qualifies names before packing
- resolver.Pool rewritten copy-on-write (atomic.Pointer to an immutable
state); Upstream is immutable with shared *upstreamStats, so health
survives a Rebind and the query path stops racing the config hook
- Pool.Exchange no longer marks a dead upstream healthy: Success was
called before the error check, so the breaker never tripped
- qlog live ring publishes through atomic pointers
- blocklist.Holder.Get nil-safe; Builder lists each source once
- web: fix toast(string) misuse that rendered empty mutation toasts
- add unit tests for cache (with benchmarks) and zonefile
- STATUS.md: green -race integration suite, remaining failures and the
broken bbolt snapshot round trip documented
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Blocklists, Clients, Domains and Upstreams each carried a ToastLike shim that duck-typed a react-hot-toast style API. The console uses its own Toast context, so notify() was calling toast('some message') with a string where ToastOptions is expected: every mutation toast rendered an empty title. They now take the toast function from useToast() and send a real { title, tone } payload, mapping 'fail' onto the danger tone.