The post-handler redirect logic was unconditionally converting responses
to 302 Found when the request had Accept: text/html and a Referer header.
This overwrote error status codes (4xx, 5xx), making it impossible to
return errors from #[get] endpoints accessed via browser navigation.
Add a response.status().is_success() guard so only successful responses
get the Post/Redirect/Get treatment.
Fixes#5428
* fix(autofmt): remove extra whitespace before commas in for-loop tuple patterns
`dx fmt` was adding spaces before commas in for-loop destructuring
patterns (e.g. `for (index , name , value)`) because `TokenStream::Display`
inserts spaces between every token. Route the pattern through prettyplease
via a new `unparse_pat` helper, following the existing `unparse_expr` pattern.
Fixes#5348
* style: apply rustfmt to writer.rs
---------
Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
* docs: clarify difference between use_context and consume_context
Document the key distinction: use_context is a hook that captures the
context value once on first render and caches it, following the rules
of hooks. consume_context reads directly from the runtime each time
and can be called from anywhere (event handlers, async tasks, etc.).
Fixes#3862
* fix: remove redundant explicit rustdoc link targets
* fix: use plain text for cross-crate use_context reference in rustdoc
* feat(signals): add WritableResultExt trait
Add WritableResultExt mirroring the existing ReadableResultExt,
providing mutable access to signal values holding Result<T, E>.
Methods:
- as_mut(): returns Result<WritableRef<T>, WritableRef<E>>
- unwrap_mut(): returns WritableRef<T>, panics if Err
Closes#5293
* refactor(signals): use descriptive expect messages in WritableResultExt::as_mut
Replace bare .unwrap() calls with .expect() containing a descriptive
message about the failure mode. This gives better diagnostics if the
Result variant changes between the read and write lock acquisitions.
* switch to a single write to avoid race conditions with sync signals
---------
Co-authored-by: Evan Almloff <evanalmloff@gmail.com>