From caf627d9343baa428ef7b45580591436023355d6 Mon Sep 17 00:00:00 2001 From: Chris Drackett Date: Thu, 15 Jan 2026 14:23:41 -0800 Subject: [PATCH 1/7] update vscode settings --- apps/client/.vscode/settings.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/apps/client/.vscode/settings.json b/apps/client/.vscode/settings.json index 671a888..5a688de 100644 --- a/apps/client/.vscode/settings.json +++ b/apps/client/.vscode/settings.json @@ -21,5 +21,15 @@ "files.exclude": { "dist/": true, ".tamagui": true + }, + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "package.json": "package-lock.json, yarn.lock, .yarnrc.yml, cspell.config.yaml, biome.json, LICENSE, .gitignore, README.md", + ".env.example": ".env", + "tsconfig.json": "vite-env.d.ts, vitest.shims.d.ts", + "index.tsx": "stories.tsx", + "*.js": "${capture}.js.map, ${capture}.d.ts, ${capture}.d.ts.map", + "*.ts": "$(capture).test.ts, $(capture).test.tsx, $(capture).test.node.ts, $(capture).test.node.tsx, $(capture).test.native.ts, $(capture).test.native.tsx, $(capture).test.ios.ts, $(capture).test.ios.tsx, $(capture).test.web.ts, $(capture).test.web.tsx, $(capture).test.android.ts, $(capture).test.android.tsx, ${capture}.native.tsx, ${capture}.ios.tsx, ${capture}.android.tsx, ${capture}.web.tsx, ${capture}.native.ts, ${capture}.ios.ts, ${capture}.android.ts, ${capture}.web.ts, ${capture}.native.js, ${capture}.ios.js, ${capture}.android.js, ${capture}.web.js, ${capture}.native.jsx, ${capture}.ios.jsx, ${capture}.android.jsx, ${capture}.web.jsx, ${capture}.stories.tsx, ${capture}.story.tsx, ${capture}.stories.ts, ${capture}.stories.jsx, ${capture}.stories.js", + "*.tsx": "$(capture).test.ts, $(capture).test.tsx, $(capture).test.node.ts, $(capture).test.node.tsx, $(capture).test.native.ts, $(capture).test.native.tsx, $(capture).test.ios.ts, $(capture).test.ios.tsx, $(capture).test.web.ts, $(capture).test.web.tsx, $(capture).test.android.ts, $(capture).test.android.tsx, ${capture}.native.tsx, ${capture}.ios.tsx, ${capture}.android.tsx, ${capture}.web.tsx, ${capture}.native.ts, ${capture}.ios.ts, ${capture}.android.ts, ${capture}.web.ts, ${capture}.native.js, ${capture}.ios.js, ${capture}.android.js, ${capture}.web.js, ${capture}.native.jsx, ${capture}.ios.jsx, ${capture}.android.jsx, ${capture}.web.jsx, ${capture}.stories.tsx, ${capture}.stories.ts, ${capture}.stories.jsx, ${capture}.stories.js" } } From ce118e9db397ee6dbe5d75f173cf1c1446d3985e Mon Sep 17 00:00:00 2001 From: Chris Drackett Date: Thu, 15 Jan 2026 14:24:01 -0800 Subject: [PATCH 2/7] add query for settings --- apps/client/src/pages/Frame/Nav.tsx | 71 +++++++++++++++--------- apps/client/src/pages/Frame/Settings.tsx | 5 ++ apps/client/src/pages/Settings.tsx | 0 3 files changed, 49 insertions(+), 27 deletions(-) create mode 100644 apps/client/src/pages/Frame/Settings.tsx delete mode 100644 apps/client/src/pages/Settings.tsx diff --git a/apps/client/src/pages/Frame/Nav.tsx b/apps/client/src/pages/Frame/Nav.tsx index be69d3b..c0e3410 100644 --- a/apps/client/src/pages/Frame/Nav.tsx +++ b/apps/client/src/pages/Frame/Nav.tsx @@ -1,3 +1,4 @@ +import { parseAsBoolean, useQueryState } from "nuqs" import { useSnapshot } from "valtio" import { Button, Column, Icon, List, ListItem } from "@code-glue/paradigm" @@ -5,43 +6,59 @@ import { useRouter } from "@/hooks/useRouter" import { store } from "@/store" import { CreateAutomation } from "../../components/CreateAutomation" import { Header } from "../../components/Header" +import { Settings } from "./Settings" export const Nav = () => { const { automations } = useSnapshot(store) const [{ route, automationId }, navigateTo] = useRouter() + const [isSettings, setIsSettings] = useQueryState( + "settings", + parseAsBoolean.withDefault(false), + ) + return (
CodeGlue -
- - - navigateTo("home")} - /> - - - - {Array.from(automations, ([, automation]) => { - return ( - { - navigateTo("automations", { automationId: automation.id }) - }} - /> - ) - })} - - + {isSettings ? ( + + ) : ( + + + navigateTo("home")} + /> + + + + {Array.from(automations, ([, automation]) => { + return ( + { + navigateTo("automations", { automationId: automation.id }) + }} + /> + ) + })} + + + )}
) } diff --git a/apps/client/src/pages/Frame/Settings.tsx b/apps/client/src/pages/Frame/Settings.tsx new file mode 100644 index 0000000..81a1bcf --- /dev/null +++ b/apps/client/src/pages/Frame/Settings.tsx @@ -0,0 +1,5 @@ +import { Text } from "@code-glue/paradigm" + +export const Settings = () => { + return Settings +} diff --git a/apps/client/src/pages/Settings.tsx b/apps/client/src/pages/Settings.tsx deleted file mode 100644 index e69de29..0000000 From ea0ec5968d388feeb4a506919f940db571c312c9 Mon Sep 17 00:00:00 2001 From: Chris Drackett Date: Thu, 15 Jan 2026 14:45:35 -0800 Subject: [PATCH 3/7] bring back useQuery for use on Settings --- apps/client/app.config.ts | 6 +++++- apps/client/src/hooks/useQuery.ts | 7 +++++++ apps/client/src/pages/Frame/Nav.tsx | 9 ++------- 3 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 apps/client/src/hooks/useQuery.ts diff --git a/apps/client/app.config.ts b/apps/client/app.config.ts index 94b4df8..113c822 100644 --- a/apps/client/app.config.ts +++ b/apps/client/app.config.ts @@ -1,4 +1,4 @@ -import { type GenericParserBuilder, parseAsString } from "nuqs" +import { type GenericParserBuilder, parseAsBoolean, parseAsString } from "nuqs" import { codeGlueLight } from "./src/design/editorThemes" @@ -40,6 +40,9 @@ export const appConfig = { defaultFontSize: 14, font: "Monaspace Krypton", }, + queries: { + settings: parseAsBoolean.withDefault(false), + }, routes: { home: { title: "Logs" }, // home is a special route name that will show without params in the URL automations: { @@ -57,6 +60,7 @@ export const sectionIds = Object.keys(appConfig.routes) as Array< keyof typeof appConfig.routes > +export type QueryIds = keyof typeof appConfig.queries export type SectionIds = keyof typeof appConfig.routes export type SectionTitles = (typeof appConfig.routes)[keyof typeof appConfig.routes]["title"] diff --git a/apps/client/src/hooks/useQuery.ts b/apps/client/src/hooks/useQuery.ts new file mode 100644 index 0000000..3fd8112 --- /dev/null +++ b/apps/client/src/hooks/useQuery.ts @@ -0,0 +1,7 @@ +import { useQueryState } from "nuqs" + +import { appConfig, type QueryIds } from "@/config" + +export function useQuery(queryId: QueryIds) { + return useQueryState(queryId, appConfig.queries[queryId]) +} diff --git a/apps/client/src/pages/Frame/Nav.tsx b/apps/client/src/pages/Frame/Nav.tsx index c0e3410..194cb63 100644 --- a/apps/client/src/pages/Frame/Nav.tsx +++ b/apps/client/src/pages/Frame/Nav.tsx @@ -1,7 +1,7 @@ -import { parseAsBoolean, useQueryState } from "nuqs" import { useSnapshot } from "valtio" import { Button, Column, Icon, List, ListItem } from "@code-glue/paradigm" +import { useQuery } from "@/hooks/useQuery" import { useRouter } from "@/hooks/useRouter" import { store } from "@/store" import { CreateAutomation } from "../../components/CreateAutomation" @@ -9,13 +9,8 @@ import { Header } from "../../components/Header" import { Settings } from "./Settings" export const Nav = () => { const { automations } = useSnapshot(store) - const [{ route, automationId }, navigateTo] = useRouter() - - const [isSettings, setIsSettings] = useQueryState( - "settings", - parseAsBoolean.withDefault(false), - ) + const [isSettings, setIsSettings] = useQuery("settings") return ( From 5790be0cec9cd60d8531649c86d3d3d9851c3221 Mon Sep 17 00:00:00 2001 From: Chris Drackett Date: Thu, 15 Jan 2026 14:53:30 -0800 Subject: [PATCH 4/7] upgrade yarn to match paradigm --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0901320..9c7d4cd 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,10 @@ "typecheck": "yarn workspaces foreach -Avi run typecheck", "clean": "sh ./scripts/clean.sh" }, - "packageManager": "yarn@4.10.3", + "packageManager": "yarn@4.12.0", "volta": { "node": "22.12.0", - "yarn": "4.10.3" + "yarn": "4.12.0" }, "resolutions": { "jsonpath-plus": "10.0.7", From 7e570d21b7b51c5b01192498bedf8cf13be20f68 Mon Sep 17 00:00:00 2001 From: Chris Drackett Date: Thu, 15 Jan 2026 22:05:33 -0800 Subject: [PATCH 5/7] update paradigm --- packages/paradigm | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/paradigm b/packages/paradigm index e2fdcf8..c0e96f4 160000 --- a/packages/paradigm +++ b/packages/paradigm @@ -1 +1 @@ -Subproject commit e2fdcf8483141f2db6c598042e7231a1b39b6b99 +Subproject commit c0e96f49861dad8c1ef9d35a43bd1f3eb4bd17d0 diff --git a/yarn.lock b/yarn.lock index 4a797ae..3f98cb1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12266,11 +12266,11 @@ __metadata: linkType: hard "node-abi@npm:^3.3.0": - version: 3.85.0 - resolution: "node-abi@npm:3.85.0" + version: 3.86.0 + resolution: "node-abi@npm:3.86.0" dependencies: semver: "npm:^7.3.5" - checksum: 10/1d0fb9e7922431663db700aa7087c0e49bae5fd041efe2d7463d808e58be1594af8046e835fe1b17ca69f214b6327e89fb0dd5192f0e7a9bf624f5509a9104b7 + checksum: 10/e1b5ed8fdca91d1d39bebb5d6394e51a02266cb4d952d21bd7b55c87e38b94f3cf7fc6162c52cf8d14a4a8aab691469fb87e10a6b0d6235685f0e3a0bf8bd6e2 languageName: node linkType: hard From abbc903c17902772cc6f4fc5a68db615e7ecb84b Mon Sep 17 00:00:00 2001 From: Chris Drackett Date: Fri, 16 Jan 2026 17:41:19 -0800 Subject: [PATCH 6/7] more work on lists --- packages/paradigm | 2 +- yarn.lock | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/paradigm b/packages/paradigm index c0e96f4..9bcf061 160000 --- a/packages/paradigm +++ b/packages/paradigm @@ -1 +1 @@ -Subproject commit c0e96f49861dad8c1ef9d35a43bd1f3eb4bd17d0 +Subproject commit 9bcf061fd07db4b4ca6df5be2d40af409871e796 diff --git a/yarn.lock b/yarn.lock index 3f98cb1..11a330a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -652,18 +652,18 @@ __metadata: languageName: node linkType: hard -"@chromatic-com/storybook@npm:^4.1.2": - version: 4.1.3 - resolution: "@chromatic-com/storybook@npm:4.1.3" +"@chromatic-com/storybook@npm:^5.0.0": + version: 5.0.0 + resolution: "@chromatic-com/storybook@npm:5.0.0" dependencies: "@neoconfetti/react": "npm:^1.0.0" - chromatic: "npm:^13.3.3" + chromatic: "npm:^13.3.4" filesize: "npm:^10.0.12" jsonfile: "npm:^6.1.0" strip-ansi: "npm:^7.1.0" peerDependencies: - storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 - checksum: 10/e5f33dc69442f4173cd76e8a5527d6b8a8e8c3870bd2483c2460a5e48bef5ca35b7f2b0c81209dcb10c83a8cbb629230d8a989d9a2328aa01ade8f4209e30dd1 + storybook: ^0.0.0-0 || ^10.1.0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 + checksum: 10/4964c1086f4aaaf5a0db80063801fafd0595546e22914dff1e6e0869dad9cf9f9cae66bd41133f1bbd0d59696923ca65e9734b76ca4a6ca13f1f97e9d4286e64 languageName: node linkType: hard @@ -703,7 +703,7 @@ __metadata: resolution: "@code-glue/paradigm@workspace:packages/paradigm" dependencies: "@biomejs/biome": "npm:2.3.11" - "@chromatic-com/storybook": "npm:^4.1.2" + "@chromatic-com/storybook": "npm:^5.0.0" "@fontsource/nunito-sans": "npm:^5.2.7" "@storybook/addon-a11y": "npm:^10.0.7" "@storybook/addon-docs": "npm:^10.0.7" @@ -722,7 +722,7 @@ __metadata: "@types/rtl-detect": "npm:^1" "@vitejs/plugin-react": "npm:^5.0.4" "@vitest/browser-playwright": "npm:^4.0.8" - "@vitest/coverage-v8": "npm:^4.0.8" + "@vitest/coverage-v8": "npm:^4.0.17" "@window-splitter/react": "npm:^1.1.2" browser-info: "npm:^1.3.0" culori: "npm:^4.0.2" @@ -6120,7 +6120,7 @@ __metadata: languageName: node linkType: hard -"@vitest/coverage-v8@npm:^4.0.8": +"@vitest/coverage-v8@npm:^4.0.17": version: 4.0.17 resolution: "@vitest/coverage-v8@npm:4.0.17" dependencies: @@ -7207,7 +7207,7 @@ __metadata: languageName: node linkType: hard -"chromatic@npm:^13.3.3": +"chromatic@npm:^13.3.4": version: 13.3.5 resolution: "chromatic@npm:13.3.5" peerDependencies: From 5ec24f68ffefa7b259c39eb5f57ec106ab9132a1 Mon Sep 17 00:00:00 2001 From: Chris Drackett Date: Tue, 3 Feb 2026 10:39:20 -0800 Subject: [PATCH 7/7] placeholder settings --- apps/client/src/pages/Frame/Settings.tsx | 21 ++++++++++++++-- packages/paradigm | 2 +- yarn.lock | 32 ++++++++++++------------ 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/apps/client/src/pages/Frame/Settings.tsx b/apps/client/src/pages/Frame/Settings.tsx index 81a1bcf..d8fe718 100644 --- a/apps/client/src/pages/Frame/Settings.tsx +++ b/apps/client/src/pages/Frame/Settings.tsx @@ -1,5 +1,22 @@ -import { Text } from "@code-glue/paradigm" +import { Column, Text } from "@code-glue/paradigm" export const Settings = () => { - return Settings + return ( + + Settings + Appearance (Dark/light/system) dropdown + ------ + Editor Theme (dropdown) + Typeface (dropdown) + Font Size (slider) + Width (slider) + Weight (slider) + ------ + Console Theme (dropdown) + Typeface (dropdown) + Font Size (slider) + Width (slider) + Weight (slider) + + ) } diff --git a/packages/paradigm b/packages/paradigm index 9bcf061..b1fdc83 160000 --- a/packages/paradigm +++ b/packages/paradigm @@ -1 +1 @@ -Subproject commit 9bcf061fd07db4b4ca6df5be2d40af409871e796 +Subproject commit b1fdc83b3304c948c61ce4de129e05bbf1533c94 diff --git a/yarn.lock b/yarn.lock index 11a330a..5c3b156 100644 --- a/yarn.lock +++ b/yarn.lock @@ -723,7 +723,7 @@ __metadata: "@vitejs/plugin-react": "npm:^5.0.4" "@vitest/browser-playwright": "npm:^4.0.8" "@vitest/coverage-v8": "npm:^4.0.17" - "@window-splitter/react": "npm:^1.1.2" + "@window-splitter/react": "npm:^1.1.3" browser-info: "npm:^1.3.0" culori: "npm:^4.0.2" dotenv: "npm:^17.2.3" @@ -6272,35 +6272,35 @@ __metadata: languageName: node linkType: hard -"@window-splitter/interface@npm:1.1.2": - version: 1.1.2 - resolution: "@window-splitter/interface@npm:1.1.2" +"@window-splitter/interface@npm:1.1.3": + version: 1.1.3 + resolution: "@window-splitter/interface@npm:1.1.3" dependencies: - "@window-splitter/state": "npm:1.1.2" - checksum: 10/e82ae1ce08e655ab573b44522a06f0b9dd46631ceba888e791ecbee337b826f4184119b21e20be84df771185c9b1a90a7d56a122f56bbbbc4edf84527a5b9453 + "@window-splitter/state": "npm:1.1.3" + checksum: 10/bf756c4c615852634231c0ccc132293d496189e33d9bee24a7809c336f33ac88aa455ec16e243f1e34e4bee7d60903f75dac0ed35c6d449a57055a97f2ceca8d languageName: node linkType: hard -"@window-splitter/react@npm:^1.1.2": - version: 1.1.2 - resolution: "@window-splitter/react@npm:1.1.2" +"@window-splitter/react@npm:^1.1.3": + version: 1.1.3 + resolution: "@window-splitter/react@npm:1.1.3" dependencies: "@react-aria/utils": "npm:^3.28.2" - "@window-splitter/interface": "npm:1.1.2" - "@window-splitter/state": "npm:1.1.2" + "@window-splitter/interface": "npm:1.1.3" + "@window-splitter/state": "npm:1.1.3" peerDependencies: react: ">=16" react-dom: ">=16" - checksum: 10/7bb57f32fae8cbf9d2f73c9150151ca5077f5ff8965f1ae0575da92286c15f2db752a007890b96a0f12f239c5ed28a8bffdbd4c3e62e7249678faa1ca278b38e + checksum: 10/1cc4a117213cd6e2552ded3ae8621bd2c3898f1124cfd16326b108d6f5a34a006555fc76548dbb7575ebdeefef92d8bf80810b4275fff3c5e4dea59db3253e40 languageName: node linkType: hard -"@window-splitter/state@npm:1.1.2": - version: 1.1.2 - resolution: "@window-splitter/state@npm:1.1.2" +"@window-splitter/state@npm:1.1.3": + version: 1.1.3 + resolution: "@window-splitter/state@npm:1.1.3" dependencies: big.js: "npm:^6.2.1" - checksum: 10/f8bbe2be158af3a48381bbfb4e32271ea145287cdf76ebad2757425a76e4b18d88bd31e39c13e44f6a8e29059336e253fbb43c56917f106d5011367fa84b1752 + checksum: 10/dd6939a4efa6f19441e133c5acfd57ccb20f4419aded810068c9be3f203bdd94571da9b8c44b1111c32558da6a33e0bb40404f058e69e5f2164860c64dfa1b5f languageName: node linkType: hard