Miscellaneous fixes (#22780)

* fix mobile export crash by removing stale iOS non-modal drawer workaround

* Remove titlecase to avoid Gemma4 handling plain labels as proper nouns

* Improve titling:

* Make directions more clear

* Properly capitalize delivery services

* update dispatcher config reference on save

* subscribe to review topic so ReviewDescriptionProcessor knows genai is enabled

* auto-send ON genai review WS message when enabled_in_config transitions to true

* remove unused object level

* update docs to clarify pre/post capture settings

* add ui docs links

* improve known_plates field in settings UI

* only show save all when multiple sections are changed

or if the section being changed is not currently being viewed

* fix docs

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
This commit is contained in:
Josh Hawkins
2026-04-07 07:16:19 -06:00
committed by GitHub
co-authored by Nicolas Mowen
parent 49c3732726
commit dfe365cd28
15 changed files with 443 additions and 11 deletions
+23 -2
View File
@@ -818,6 +818,27 @@ export default function Settings() {
[],
);
// Show save/undo all buttons only when changes span multiple sections
// or the single changed section is not the one currently being viewed
const showSaveAllButtons = useMemo(() => {
const pendingKeys = Object.keys(pendingDataBySection);
if (pendingKeys.length === 0) return false;
if (pendingKeys.length >= 2) return true;
// Exactly one pending section — check if it matches the current view
const key = pendingKeys[0];
const menuKey = pendingKeyToMenuKey(key);
if (menuKey !== pageToggle) return true;
// For camera-scoped keys, also check if the camera matches
if (key.includes("::")) {
const cameraName = key.slice(0, key.indexOf("::"));
return cameraName !== selectedCamera;
}
return false;
}, [pendingDataBySection, pendingKeyToMenuKey, pageToggle, selectedCamera]);
const handleSaveAll = useCallback(async () => {
if (
!config ||
@@ -1491,7 +1512,7 @@ export default function Settings() {
);
})}
</div>
{hasPendingChanges && (
{showSaveAllButtons && (
<div className="sticky bottom-0 z-50 mt-2 bg-background p-4">
<div className="flex flex-col items-center gap-2">
<div className="flex items-center gap-2">
@@ -1667,7 +1688,7 @@ export default function Settings() {
</Heading>
</div>
<div className="flex items-center gap-2">
{hasPendingChanges && (
{showSaveAllButtons && (
<div
className={cn(
"flex flex-row items-center gap-2",