Initial release.
Added
Mutare.Plug.Halt(:plug_halt) — removesPlug.Conn.halt/1, pipe-aware
(halt(conn)→conn; a piped stage →Function.identity()).Mutare.Plug.Status(:http_status) — swaps the atom status of
Plug.Conn.put_status/2,send_resp/3,resp/3,send_chunked/2, and
send_file/3,4,5for a curated same-family sibling; per-instance configurable
via{module, swaps: %{...}}.Mutare.Plug.Session(:plug_session) — removesPlug.Conn.put_session/3,
delete_session/2,clear_session/1, andconfigure_session/2(removing
configure_session(conn, renew: true)on login is the classic
session-fixation bypass).Mutare.Plug.Header(:resp_header) — removesPlug.Conn.put_resp_header/3,
delete_resp_header/2, andput_resp_content_type/2,3.Mutare.Plug.Cookie(:resp_cookie) — removesPlug.Conn.put_resp_cookie/3,4
anddelete_resp_cookie/2,3, flips/drops explicit stringsame_site:cookie
policy options, and drops themax_age:option ofput_resp_cookie/4
(persistent cookie → session cookie).Mutare.Plug.Body(:resp_body) — blanks the body argument of
Plug.Conn.send_resp/3andresp/3to""("does any test read the
response body?"); on a literal body its whole-call rewrite supersedes the
built-in string family's sentinel leaves via Mutare's overlap pruning.Mutare.Plug.all/0for splicing all six families into a:mutatorslist.