Commit 7acf41e
fix: reject malformed feature-flags payload instead of silent no-op (#1865)
* fix: reject malformed feature-flags payload instead of silent no-op
POST /api/settings/features defaulted a missing `flags` key to `{}`, so a
flat body (e.g. {"enable_lite_docstrings": true}) silently applied nothing
yet returned success=true/restart_required=true — worse than a visible
no-op, since the caller believed the flag changed and a restart was
pending when nothing happened.
Require the nested {"flags": {...}} shape: reject a body without a `flags`
object (400 with the correct shape in the message) and reject an empty
`flags` object. The web UI always POSTs {"flags": {[field]: value}}, so
only malformed external/scripted callers are affected.
Closes #1840
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix: add actionable suggestions to feature-flags shape errors
Address Gemini review: the two new VALIDATION_INVALID_PARAMETER responses
now carry a `suggestions` entry per the styleguide's progressive-disclosure
rule, guiding the caller to the correct {"flags": {...}} shape. Regression
tests assert the suggestion is present.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: kingpanther13 <kingpanther13@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent e234a6e commit 7acf41e
2 files changed
Lines changed: 83 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1982 | 1982 | | |
1983 | 1983 | | |
1984 | 1984 | | |
1985 | | - | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
| 1988 | + | |
| 1989 | + | |
| 1990 | + | |
| 1991 | + | |
| 1992 | + | |
1986 | 1993 | | |
1987 | 1994 | | |
1988 | 1995 | | |
1989 | 1996 | | |
1990 | | - | |
| 1997 | + | |
| 1998 | + | |
| 1999 | + | |
| 2000 | + | |
| 2001 | + | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
| 2005 | + | |
| 2006 | + | |
| 2007 | + | |
| 2008 | + | |
| 2009 | + | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
| 2015 | + | |
| 2016 | + | |
| 2017 | + | |
1991 | 2018 | | |
1992 | 2019 | | |
1993 | 2020 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2174 | 2174 | | |
2175 | 2175 | | |
2176 | 2176 | | |
| 2177 | + | |
| 2178 | + | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
| 2183 | + | |
| 2184 | + | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
| 2191 | + | |
| 2192 | + | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
| 2217 | + | |
| 2218 | + | |
| 2219 | + | |
| 2220 | + | |
| 2221 | + | |
| 2222 | + | |
| 2223 | + | |
| 2224 | + | |
| 2225 | + | |
| 2226 | + | |
| 2227 | + | |
| 2228 | + | |
| 2229 | + | |
| 2230 | + | |
2177 | 2231 | | |
2178 | 2232 | | |
2179 | 2233 | | |
| |||
0 commit comments