Skip to content

Commit f9d4cdf

Browse files
authored
Merge branch 'main' into ms/fix-debounce-re-render
2 parents accacd9 + 8ed8b94 commit f9d4cdf

File tree

48 files changed

+625
-301
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+625
-301
lines changed

frontend/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"@emotion/cache": "^11.14.0",
4242
"@emotion/react": "^11.14.0",
4343
"@glideapps/glide-data-grid": "6.0.4-alpha16",
44-
"@hookform/resolvers": "^3.10.0",
44+
"@hookform/resolvers": "^5.2.2",
4545
"@img-comparison-slider/react": "^8.0.2",
4646
"@internationalized/date": "^3.9.0",
4747
"@lezer/common": "^1.2.3",
@@ -170,7 +170,7 @@
170170
"vscode-jsonrpc": "^8.2.1",
171171
"vscode-languageserver-protocol": "^3.17.5",
172172
"web-vitals": "^4.2.4",
173-
"zod": "^3.25.76"
173+
"zod": "^4.1.11"
174174
},
175175
"scripts": {
176176
"preinstall": "npx only-allow pnpm",

frontend/src/__tests__/main.test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
import { beforeEach, describe, expect, it, vi } from "vitest";
55
import {
66
type AppConfig,
7+
defaultUserConfig,
78
parseAppConfig,
8-
parseUserConfig,
99
} from "@/core/config/config-schema";
1010
import {
1111
appConfigAtom,
@@ -41,7 +41,7 @@ describe("main", () => {
4141
store.set(showCodeInRunModeAtom, false);
4242
store.set(marimoVersionAtom, "unknown");
4343
store.set(appConfigAtom, parseAppConfig({}));
44-
store.set(userConfigAtom, parseUserConfig({}));
44+
store.set(userConfigAtom, defaultUserConfig());
4545
store.set(configOverridesAtom, {});
4646
});
4747

@@ -106,7 +106,7 @@ describe("main", () => {
106106
el,
107107
);
108108
expect(error).toBeUndefined();
109-
expect(store.get(userConfigAtom)).toEqual(parseUserConfig({}));
109+
expect(store.get(userConfigAtom)).toEqual(defaultUserConfig());
110110
expect(store.get(configOverridesAtom)).toEqual({});
111111
expect(store.get(appConfigAtom)).toEqual(parseAppConfig({}));
112112
expect(store.get(viewStateAtom).mode).toBe("edit");

frontend/src/components/app-config/ai-config.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,15 +1168,20 @@ export const AiModelDisplayConfig: React.FC<AiConfigProps> = ({
11681168
))}
11691169
</Tree>
11701170
</div>
1171-
<AddModelForm form={form} customModels={customModels} />
1171+
<AddModelForm
1172+
form={form}
1173+
customModels={customModels}
1174+
onSubmit={onSubmit}
1175+
/>
11721176
</SettingGroup>
11731177
);
11741178
};
11751179

11761180
export const AddModelForm: React.FC<{
11771181
form: UseFormReturn<UserConfig>;
11781182
customModels: QualifiedModelId[];
1179-
}> = ({ form, customModels }) => {
1183+
onSubmit: (values: UserConfig) => void;
1184+
}> = ({ form, customModels, onSubmit }) => {
11801185
const [isFormOpen, setIsFormOpen] = useState(false);
11811186
const [modelAdded, setModelAdded] = useState(false);
11821187
const [provider, setProvider] = useState<ProviderId | "custom" | null>(null);
@@ -1209,6 +1214,7 @@ export const AddModelForm: React.FC<{
12091214
);
12101215

12111216
form.setValue("ai.models.custom_models", [newModel.id, ...customModels]);
1217+
onSubmit(form.getValues());
12121218
resetForm();
12131219

12141220
// Show model added message for 2 seconds

frontend/src/components/app-config/app-config-form.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { zodResolver } from "@hookform/resolvers/zod";
33
import { useEffect, useId } from "react";
44
import { useForm } from "react-hook-form";
5+
import type { z } from "zod";
56
import {
67
Form,
78
FormControl,
@@ -42,8 +43,10 @@ export const AppConfigForm: React.FC = () => {
4243
const ipynbCheckboxId = useId();
4344

4445
// Create form
45-
const form = useForm<AppConfig>({
46-
resolver: zodResolver(AppConfigSchema),
46+
const form = useForm({
47+
resolver: zodResolver(
48+
AppConfigSchema as unknown as z.ZodType<unknown, AppConfig>,
49+
),
4750
defaultValues: config,
4851
});
4952

frontend/src/components/app-config/user-config-form.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
import React, { useId, useRef } from "react";
1616
import { useLocale } from "react-aria";
1717
import { useForm } from "react-hook-form";
18+
import type z from "zod";
1819
import { Button } from "@/components/ui/button";
1920
import { Checkbox } from "@/components/ui/checkbox";
2021
import {
@@ -124,8 +125,10 @@ export const UserConfigForm: React.FC = () => {
124125
const { saveUserConfig } = useRequestClient();
125126

126127
// Create form
127-
const form = useForm<UserConfig>({
128-
resolver: zodResolver(UserConfigSchema),
128+
const form = useForm({
129+
resolver: zodResolver(
130+
UserConfigSchema as unknown as z.ZodType<unknown, UserConfig>,
131+
),
129132
defaultValues: config,
130133
});
131134

frontend/src/components/data-table/filters.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ export function filterToFilterCondition(
9292
return {
9393
column_id: columnId,
9494
operator: filter.operator,
95+
value: undefined,
9596
};
9697
}
9798

@@ -179,12 +180,14 @@ export function filterToFilterCondition(
179180
return {
180181
column_id: columnId,
181182
operator: "is_true",
183+
value: undefined,
182184
};
183185
}
184186
if (!filter.value) {
185187
return {
186188
column_id: columnId,
187189
operator: "is_false",
190+
value: undefined,
188191
};
189192
}
190193

frontend/src/components/editor/chrome/wrapper/storage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { PanelGroupStorage } from "react-resizable-panels";
33
import { z } from "zod";
44
import { Objects } from "@/utils/objects";
55

6-
const schema = z.record(z.tuple([z.number(), z.number()]));
6+
const schema = z.record(z.string(), z.tuple([z.number(), z.number()]));
77

88
let storedValue: string | null = null;
99

frontend/src/components/editor/database/__tests__/as-code.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ describe("generateDatabaseCode", () => {
101101
type: "REST",
102102
uri: "http://localhost:8181",
103103
warehouse: "/path/to/warehouse",
104+
token: undefined,
104105
},
105106
};
106107

@@ -130,6 +131,7 @@ describe("generateDatabaseCode", () => {
130131
catalog: {
131132
type: "Glue",
132133
warehouse: "/path/to/warehouse",
134+
uri: undefined,
133135
},
134136
};
135137

frontend/src/components/editor/database/add-database-form.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ interface Props {
6060

6161
interface ConnectionSchema {
6262
name: string;
63-
schema: z.ZodType;
63+
schema: z.ZodType<DatabaseConnection>;
6464
color: string;
6565
logo: DBLogoName;
6666
connectionLibraries: {
@@ -237,7 +237,7 @@ const DATA_CATALOGS = [
237237
] satisfies ConnectionSchema[];
238238

239239
const DatabaseSchemaSelector: React.FC<{
240-
onSelect: (schema: z.ZodType) => void;
240+
onSelect: (schema: z.ZodType<DatabaseConnection>) => void;
241241
}> = ({ onSelect }) => {
242242
const renderItem = ({ name, schema, color, logo }: ConnectionSchema) => {
243243
return (
@@ -276,13 +276,15 @@ const DatabaseSchemaSelector: React.FC<{
276276
const RENDERERS: FormRenderer[] = [ENV_RENDERER];
277277

278278
const DatabaseForm: React.FC<{
279-
schema: z.ZodType;
279+
schema: z.ZodType<DatabaseConnection>;
280280
onSubmit: () => void;
281281
onBack: () => void;
282282
}> = ({ schema, onSubmit, onBack }) => {
283283
const form = useForm<DatabaseConnection>({
284284
defaultValues: getDefaults(schema),
285-
resolver: zodResolver(schema),
285+
resolver: zodResolver(
286+
schema as unknown as z.ZodType<unknown, DatabaseConnection>,
287+
),
286288
reValidateMode: "onChange",
287289
});
288290

@@ -357,7 +359,8 @@ const DatabaseForm: React.FC<{
357359
};
358360

359361
const AddDatabaseForm: React.FC<Props> = ({ onSubmit }) => {
360-
const [selectedSchema, setSelectedSchema] = useState<z.ZodType | null>(null);
362+
const [selectedSchema, setSelectedSchema] =
363+
useState<z.ZodType<DatabaseConnection> | null>(null);
361364

362365
if (!selectedSchema) {
363366
return <DatabaseSchemaSelector onSelect={setSelectedSchema} />;

frontend/src/components/editor/database/as-code.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ class PyIcebergGenerator extends CodeGenerator<"iceberg"> {
514514
}
515515

516516
generateConnectionCode(): string {
517-
let options: Record<string, string | number | boolean> = {
517+
let options: Record<string, string | number | boolean | undefined> = {
518518
...this.connection.catalog,
519519
};
520520
// Remove k='type' and v=nullish values

0 commit comments

Comments
 (0)