Miscellaneous fixes (#23155)

* Change order

* Improve title

* add loading spinner to exports

* Simplify JSON since not all providers see or use this the same

* Add fields to primary prompt

* Adjust centering for no overrides

* Use GenAI title for exports when available

* detect form-root objects by field path instead of schema identity

* add bosnian

* Strip v1 if included in url

* prevent fast clicks in video controls from selecting text

* Use title for metadata chapters

---------

Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
This commit is contained in:
Nicolas Mowen
2026-05-10 12:09:28 -05:00
committed by GitHub
co-authored by Josh Hawkins
parent 0d4f1ec369
commit c4b74c9148
13 changed files with 48 additions and 30 deletions
+6 -1
View File
@@ -79,10 +79,15 @@ export default function ReviewCard({
? event.end_time + REVIEW_PADDING
: Date.now() / 1000;
const genAiTitle = event.data.metadata?.title?.trim();
axios
.post(
`export/${event.camera}/start/${event.start_time - REVIEW_PADDING}/end/${endTime}`,
{ playback: "realtime" },
{
playback: "realtime",
...(genAiTitle ? { name: genAiTitle } : {}),
},
)
.then((response) => {
if (response.status < 300) {
@@ -52,12 +52,11 @@ export function ObjectFieldTemplate(props: ObjectFieldTemplateProps) {
} = props;
const formContext = registry?.formContext as ConfigFormContext | undefined;
// Check if this is a root-level object
const isRoot = registry?.rootSchema === schema;
const overrides = formContext?.overrides;
const baselineFormData = formContext?.baselineFormData;
const hiddenFields = formContext?.hiddenFields;
const fieldPath = props.fieldPathId.path;
const isRoot = fieldPath.length === 0;
const restartRequired = formContext?.restartRequired;
const defaultRequiresRestart = formContext?.requiresRestart ?? true;
@@ -178,6 +178,7 @@ export default function MultiExportDialog({
start_time: review.start_time - REVIEW_PADDING,
end_time: (review.end_time ?? Date.now() / 1000) + REVIEW_PADDING,
image_path: review.thumb_path || undefined,
friendly_name: review.data.metadata?.title?.trim() || undefined,
client_item_id: review.id,
}));
+1 -1
View File
@@ -198,7 +198,7 @@ export default function VideoControls({
return (
<div
className={cn(
"z-50 flex w-auto items-center justify-between gap-4 rounded-lg bg-background/60 px-4 py-2 text-primary sm:flex-nowrap sm:gap-8",
"z-50 flex w-auto select-none items-center justify-between gap-4 rounded-lg bg-background/60 px-4 py-2 text-primary sm:flex-nowrap sm:gap-8",
className,
isMobileOnly &&
Object.values(features).filter((feat) => feat).length >
@@ -91,7 +91,7 @@ export function ProfileSectionDropdown({
className="group flex items-start justify-between gap-2"
onClick={() => onSelectProfile(profile)}
>
<div className="flex flex-col items-center gap-2">
<div className="flex flex-col items-start gap-2">
<div className="flex w-full flex-row items-center justify-start gap-2">
{isActive && <Check className="h-3.5 w-3.5 shrink-0" />}
<span