@gogitcms/editor 0.43.0 → 0.43.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/app/src/App.tsx CHANGED
@@ -16,6 +16,7 @@ import {
16
16
  ContentBrowserSkeleton,
17
17
  BranchImportingScreen,
18
18
  BranchImportFailedScreen,
19
+ BranchDeletedModal,
19
20
  ChangeRequestSummary,
20
21
  NotificationList,
21
22
  useTheme,
@@ -2684,6 +2685,10 @@ function useBranchImport(repositoryId?: string, branchId?: string) {
2684
2685
  // Nothing has answered yet. Distinct from "no import run exists", which is a
2685
2686
  // real answer (status "none") and lets the editor open.
2686
2687
  unknown: !skip && !state,
2688
+ // The branch stopped existing while this editor was on it — deleted on the
2689
+ // provider or disconnected from the CMS. The subscription's final message;
2690
+ // it closes after sending it, and `live` keeps the answer.
2691
+ deleted: !!state && state.status === "deleted",
2687
2692
  // The first import of this branch is in flight: no content exists yet, so
2688
2693
  // the editor has nothing to render.
2689
2694
  firstImportRunning: firstImport && state.running,
@@ -2705,6 +2710,7 @@ function useBranchImport(repositoryId?: string, branchId?: string) {
2705
2710
  function BrowserScreen({ onSignOut, workspaces }: { onSignOut: () => void; workspaces: Workspace[] }) {
2706
2711
  const navigation = useNavigation<any>();
2707
2712
  const route = useRoute();
2713
+ const apollo = useApolloClient();
2708
2714
  const { workspaceId, repositoryId, branchId, projectName } = route.params as BrowserParams;
2709
2715
  const { data, loading } = useQuery(REPOSITORIES, { variables: { workspaceId } });
2710
2716
  const repos: Repository[] = data?.repositories ?? [];
@@ -2720,11 +2726,22 @@ function BrowserScreen({ onSignOut, workspaces }: { onSignOut: () => void; works
2720
2726
  // than waiting for it — only a link to a repository root (no branch in the
2721
2727
  // path) has to resolve the default branch first.
2722
2728
  const branchImport = useBranchImport(repositoryId, branchId ?? branch?.id);
2729
+ // Where the "this branch is gone" dialog sends the user. Switching drops into
2730
+ // the chosen branch and refreshes the branch list, which the deleted branch
2731
+ // has by now left; the picker is the exit when there is nothing to switch to.
2732
+ const switchBranch = (b: { id: string }) => {
2733
+ navigation.navigate("Browser", { workspaceId, repositoryId, branchId: b.id, ...EMPTY_SELECTION });
2734
+ void apollo.refetchQueries({ include: [REPOSITORIES] });
2735
+ };
2736
+ const chooseRepository = () => {
2737
+ void apollo.refetchQueries({ include: [REPOSITORIES] });
2738
+ navigation.navigate("RepoPicker", { workspaceId });
2739
+ };
2723
2740
  // Repositories still loading: hold the app-shell skeleton (the dashboard opens
2724
2741
  // editors straight at a repo URL) rather than flashing a not-found state.
2725
2742
  if (loading && !repo) return <ContentBrowserSkeleton />;
2726
2743
  // Stale/unknown repo link: fall back to the picker so the user can recover.
2727
- if (!repo || !branch) {
2744
+ if (!repo) {
2728
2745
  const workspaceName = workspaces.find((w) => w.id === workspaceId)?.name ?? "Workspace";
2729
2746
  const onChangeWorkspace = config.workspaceId ? undefined : () => navigation.navigate("WorkspacePicker");
2730
2747
  return (
@@ -2739,6 +2756,23 @@ function BrowserScreen({ onSignOut, workspaces }: { onSignOut: () => void; works
2739
2756
  />
2740
2757
  );
2741
2758
  }
2759
+ // A link into a branch this repository no longer has: deleted on the
2760
+ // provider, or disconnected, before the page loaded. Its name is unknown (the
2761
+ // list is the only source, and it has left the list), so the dialog says as
2762
+ // much and offers the branches that remain.
2763
+ if (!branch) {
2764
+ return (
2765
+ <View style={{ flex: 1 }}>
2766
+ <ContentBrowserSkeleton />
2767
+ <BranchDeletedModal
2768
+ repository={`${repo.owner}/${repo.name}`}
2769
+ branches={repo.branches}
2770
+ onSwitch={switchBranch}
2771
+ onChooseRepository={chooseRepository}
2772
+ />
2773
+ </View>
2774
+ );
2775
+ }
2742
2776
  // A cms.config.js PROJECT naming a project this repository does not have is a
2743
2777
  // startup error, matching the precedent that a typo in cms.config.mjs fails
2744
2778
  // loudly rather than producing a silently degraded editor. Showing another
@@ -2767,6 +2801,35 @@ function BrowserScreen({ onSignOut, workspaces }: { onSignOut: () => void; works
2767
2801
  // import. The query is cache-and-network, so every later visit paints at once.
2768
2802
  const repoLabel = `${repo.owner}/${repo.name}`;
2769
2803
  if (branchImport.unknown) return <ContentBrowserSkeleton />;
2804
+ // The branch was deleted while this editor was on it. The editor stays
2805
+ // mounted underneath — it may hold work worth copying somewhere else — but
2806
+ // nothing can be saved to a branch that is gone, so the dialog is the only
2807
+ // thing that can be acted on, and every way out of it is another branch.
2808
+ if (branchImport.deleted) {
2809
+ return (
2810
+ <View style={{ flex: 1 }}>
2811
+ <CmsView
2812
+ repo={repo}
2813
+ branch={branch}
2814
+ defaultBranchId={defaultBranchId}
2815
+ importing={false}
2816
+ projectName={project.name}
2817
+ projectId={project.project?.id}
2818
+ projects={project.projects}
2819
+ soleProjectName={project.sole?.name}
2820
+ projectLocked={project.locked}
2821
+ onSignOut={onSignOut}
2822
+ />
2823
+ <BranchDeletedModal
2824
+ branch={branch.name}
2825
+ repository={repoLabel}
2826
+ branches={repo.branches.filter((b) => b.id !== branch.id)}
2827
+ onSwitch={switchBranch}
2828
+ onChooseRepository={chooseRepository}
2829
+ />
2830
+ </View>
2831
+ );
2832
+ }
2770
2833
  if (branchImport.firstImportRunning) {
2771
2834
  return <BranchImportingScreen branch={branch.name} repository={repoLabel} />;
2772
2835
  }
@@ -0,0 +1,42 @@
1
+ import React from "react";
2
+ import { render, screen, fireEvent } from "@testing-library/react";
3
+ import { ThemeProvider } from "../ThemeProvider";
4
+ import { BranchDeletedModal } from "../components/BranchDeletedModal";
5
+
6
+ const wrap = (ui: React.ReactElement) => <ThemeProvider>{ui}</ThemeProvider>;
7
+
8
+ const others = [
9
+ { id: "b-main", name: "main" },
10
+ { id: "b-draft", name: "draft/spring" },
11
+ ];
12
+
13
+ test("names the deleted branch and switches to the one picked", () => {
14
+ const onSwitch = jest.fn();
15
+ render(wrap(
16
+ <BranchDeletedModal branch="feat/pricing" repository="acme/site" branches={others} onSwitch={onSwitch} />,
17
+ ));
18
+
19
+ expect(screen.getByTestId("branch-deleted-title")).toHaveTextContent("feat/pricing was deleted");
20
+ expect(screen.getByText(/removed with it/)).toBeInTheDocument();
21
+
22
+ fireEvent.click(screen.getByTestId("branch-deleted-switch-b-draft"));
23
+ expect(onSwitch).toHaveBeenCalledWith(others[1]);
24
+ // The repository exit is not offered unless the host provides it.
25
+ expect(screen.queryByTestId("branch-deleted-choose-repository")).toBeNull();
26
+ });
27
+
28
+ test("a stale link (no branch name) still explains and offers the others", () => {
29
+ render(wrap(<BranchDeletedModal branches={others} onSwitch={() => {}} />));
30
+ expect(screen.getByTestId("branch-deleted-title")).toHaveTextContent("This branch no longer exists");
31
+ expect(screen.getByTestId("branch-deleted-switch-b-main")).toBeInTheDocument();
32
+ });
33
+
34
+ test("with nothing to switch to, the repository picker is the exit", () => {
35
+ const onChoose = jest.fn();
36
+ render(wrap(
37
+ <BranchDeletedModal branch="main" repository="acme/site" branches={[]} onSwitch={() => {}} onChooseRepository={onChoose} />,
38
+ ));
39
+ expect(screen.getByTestId("branch-deleted-none")).toHaveTextContent("No other branch of acme/site");
40
+ fireEvent.click(screen.getByTestId("branch-deleted-choose-repository"));
41
+ expect(onChoose).toHaveBeenCalled();
42
+ });
@@ -0,0 +1,111 @@
1
+ import React from "react";
2
+ import { View, ScrollView } from "react-native";
3
+ import { useTheme } from "../ThemeProvider";
4
+ import { Text } from "./Text";
5
+ import { Icon } from "./Icon";
6
+ import { Button } from "./Button";
7
+ import type { BranchRef } from "./BranchMenu";
8
+
9
+ export type BranchDeletedModalProps = {
10
+ /**
11
+ * The branch that no longer exists. Omitted when only its id is known — a
12
+ * link into a branch that was deleted before the page loaded.
13
+ */
14
+ branch?: string;
15
+ /** "owner/name", when the host knows it. */
16
+ repository?: string;
17
+ /** The branches still connected, to switch to. The deleted one is not among them. */
18
+ branches: BranchRef[];
19
+ /** Open the editor on `branch` instead. */
20
+ onSwitch: (branch: BranchRef) => void;
21
+ /**
22
+ * Leave this repository for the picker. Offered as the way out when there is
23
+ * no other branch to switch to; omitted → the list is the only exit.
24
+ */
25
+ onChooseRepository?: () => void;
26
+ testID?: string;
27
+ };
28
+
29
+ /**
30
+ * Shown when the branch the editor is on stops existing — deleted on the
31
+ * provider, or disconnected from the CMS — while someone is looking at it.
32
+ *
33
+ * It is a modal rather than a redirect because the screen behind it may hold
34
+ * work in progress. Nothing on it can be saved to this branch any more, but
35
+ * bouncing the user to another branch without a word would make that content
36
+ * vanish mid-thought; the modal says what happened and leaves the page visible
37
+ * while they decide where to go. It cannot be dismissed into the dead branch,
38
+ * because there is nothing there to go back to: every exit is another branch.
39
+ */
40
+ export function BranchDeletedModal({
41
+ branch, repository, branches, onSwitch, onChooseRepository, testID,
42
+ }: BranchDeletedModalProps) {
43
+ const t = useTheme();
44
+ const title = branch ? `${branch} was deleted` : "This branch no longer exists";
45
+ const where = repository ? ` in ${repository}` : "";
46
+ const detail = branch
47
+ ? `The ${branch} branch${where} was deleted on the remote or disconnected from the CMS, and its content was removed with it. Nothing on this screen can be saved to it any more.`
48
+ : `The branch this link points to${where} was deleted on the remote or disconnected from the CMS, so there is nothing here to edit.`;
49
+ const hasOthers = branches.length > 0;
50
+
51
+ return (
52
+ <View
53
+ testID={testID ?? "branch-deleted-modal"}
54
+ style={{
55
+ position: "absolute", top: 0, left: 0, right: 0, bottom: 0, zIndex: 50,
56
+ alignItems: "center", justifyContent: "center", padding: t.space(4),
57
+ backgroundColor: "rgba(0,0,0,0.45)",
58
+ }}
59
+ >
60
+ <View
61
+ style={{
62
+ width: 460, maxWidth: "100%", maxHeight: "100%", gap: t.space(4), padding: t.space(5),
63
+ borderRadius: t.radius.lg, borderWidth: 1, borderColor: t.color.borderDefault,
64
+ backgroundColor: t.color.surfaceRaised,
65
+ }}
66
+ >
67
+ <View style={{ flexDirection: "row", alignItems: "center", gap: t.space(2) }}>
68
+ <Icon name="alert" size={16} color={t.color.diffDelFg} />
69
+ <Text variant="h3" weight="semibold" testID="branch-deleted-title">{title}</Text>
70
+ </View>
71
+
72
+ <Text variant="body" color="secondary">{detail}</Text>
73
+
74
+ {hasOthers ? (
75
+ <>
76
+ <Text variant="sm" weight="semibold">Switch to another branch to keep working</Text>
77
+ <ScrollView style={{ maxHeight: 280 }} contentContainerStyle={{ gap: t.space(2) }}>
78
+ {branches.map((b) => (
79
+ <Button
80
+ key={b.id}
81
+ title={b.name}
82
+ fullWidth
83
+ onPress={() => onSwitch(b)}
84
+ testID={`branch-deleted-switch-${b.id}`}
85
+ />
86
+ ))}
87
+ </ScrollView>
88
+ </>
89
+ ) : (
90
+ <Text variant="sm" color="secondary" testID="branch-deleted-none">
91
+ {repository
92
+ ? `No other branch of ${repository} is connected to the CMS.`
93
+ : "No other branch of this repository is connected to the CMS."}
94
+ </Text>
95
+ )}
96
+
97
+ {onChooseRepository ? (
98
+ <View style={{ flexDirection: "row", justifyContent: "flex-end" }}>
99
+ <Button
100
+ title="Choose a repository"
101
+ variant={hasOthers ? "ghost" : "primary"}
102
+ size="md"
103
+ onPress={onChooseRepository}
104
+ testID="branch-deleted-choose-repository"
105
+ />
106
+ </View>
107
+ ) : null}
108
+ </View>
109
+ </View>
110
+ );
111
+ }
@@ -57,6 +57,8 @@ export type {
57
57
  // Change-request summary surface (developer escalation)
58
58
  export { ProtectedBranchModal } from "./components/ProtectedBranchModal";
59
59
  export type { ProtectedBranchModalProps } from "./components/ProtectedBranchModal";
60
+ export { BranchDeletedModal } from "./components/BranchDeletedModal";
61
+ export type { BranchDeletedModalProps } from "./components/BranchDeletedModal";
60
62
  export { ChangeRequestSummary } from "./components/ChangeRequestSummary";
61
63
  export type {
62
64
  ChangeRequestSummaryProps,
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@gogitcms/editor",
3
- "version": "0.43.0",
3
+ "version": "0.43.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@gogitcms/editor",
9
- "version": "0.43.0",
9
+ "version": "0.43.1",
10
10
  "dependencies": {
11
11
  "@apollo/client": "^3.11.8",
12
12
  "@handlewithcare/react-prosemirror": "^3.2.7",
@@ -47,11 +47,11 @@
47
47
  "node": ">=20"
48
48
  },
49
49
  "optionalDependencies": {
50
- "@gogitcms/gitcms-local-darwin-arm64": "0.43.0",
51
- "@gogitcms/gitcms-local-darwin-x64": "0.43.0",
52
- "@gogitcms/gitcms-local-linux-arm64": "0.43.0",
53
- "@gogitcms/gitcms-local-linux-x64": "0.43.0",
54
- "@gogitcms/gitcms-local-win32-x64": "0.43.0"
50
+ "@gogitcms/gitcms-local-darwin-arm64": "0.43.1",
51
+ "@gogitcms/gitcms-local-darwin-x64": "0.43.1",
52
+ "@gogitcms/gitcms-local-linux-arm64": "0.43.1",
53
+ "@gogitcms/gitcms-local-linux-x64": "0.43.1",
54
+ "@gogitcms/gitcms-local-win32-x64": "0.43.1"
55
55
  }
56
56
  },
57
57
  "node_modules/@apollo/client": {
@@ -751,9 +751,9 @@
751
751
  }
752
752
  },
753
753
  "node_modules/@gogitcms/gitcms-local-darwin-arm64": {
754
- "version": "0.43.0",
755
- "resolved": "https://registry.npmjs.org/@gogitcms/gitcms-local-darwin-arm64/-/gitcms-local-darwin-arm64-0.43.0.tgz",
756
- "integrity": "sha512-7GE9xylj06yFNMAVrQ7fdF1hzXsj19QwSuiYsIsZizAz3/KPQ7XAJab9ylTxFenI1v3volzumMnKR3CDuTXy7Q==",
754
+ "version": "0.43.1",
755
+ "resolved": "https://registry.npmjs.org/@gogitcms/gitcms-local-darwin-arm64/-/gitcms-local-darwin-arm64-0.43.1.tgz",
756
+ "integrity": "sha512-+VmHoQmczK+BUZKmtxyCGZadaG+DOA+VLGdoM1zNdfiDU85UzDHy9JjX123JkFUNNdYYu3JoA7aIYh9iIuLZTA==",
757
757
  "cpu": [
758
758
  "arm64"
759
759
  ],
@@ -764,9 +764,9 @@
764
764
  ]
765
765
  },
766
766
  "node_modules/@gogitcms/gitcms-local-darwin-x64": {
767
- "version": "0.43.0",
768
- "resolved": "https://registry.npmjs.org/@gogitcms/gitcms-local-darwin-x64/-/gitcms-local-darwin-x64-0.43.0.tgz",
769
- "integrity": "sha512-Agm9NqGzzu8Km4ITIRHYlEuqLbQOgg7vCu8J4uP/tIGRooUwUZ6ey89+hgNr38uhdnrNeTPZiHZqJBCCqOOI1w==",
767
+ "version": "0.43.1",
768
+ "resolved": "https://registry.npmjs.org/@gogitcms/gitcms-local-darwin-x64/-/gitcms-local-darwin-x64-0.43.1.tgz",
769
+ "integrity": "sha512-c62bK03GV2QGiCsmeJlpYT9ee1jDNT0KUJYbQa2pln+tzQt735pSVuXImcx+3InY63nxUDNibXt8Ky8xbbhhuw==",
770
770
  "cpu": [
771
771
  "x64"
772
772
  ],
@@ -777,9 +777,9 @@
777
777
  ]
778
778
  },
779
779
  "node_modules/@gogitcms/gitcms-local-linux-x64": {
780
- "version": "0.43.0",
781
- "resolved": "https://registry.npmjs.org/@gogitcms/gitcms-local-linux-x64/-/gitcms-local-linux-x64-0.43.0.tgz",
782
- "integrity": "sha512-OfNP3WHUtHdDSej0ifqv9YrCP4l8vKLd/zK15IgGBDKkGdLsXp7PBxUPce1s3TRoonB6SRKnfKYfSatPedP6Ng==",
780
+ "version": "0.43.1",
781
+ "resolved": "https://registry.npmjs.org/@gogitcms/gitcms-local-linux-x64/-/gitcms-local-linux-x64-0.43.1.tgz",
782
+ "integrity": "sha512-SagcRT4e65YHqQRKbT8imoYwZLprZeMVknOBw09x8hiufWWp3HQdxaS5c/zszPZMKRqA525+XlKG6lKvl9HifA==",
783
783
  "cpu": [
784
784
  "x64"
785
785
  ],
@@ -946,28 +946,28 @@
946
946
  }
947
947
  },
948
948
  "node_modules/@posthog/browser-common": {
949
- "version": "0.7.2",
950
- "resolved": "https://registry.npmjs.org/@posthog/browser-common/-/browser-common-0.7.2.tgz",
951
- "integrity": "sha512-ukDmETXy6fTBE4ZpaO8ccscrNz5SvTaUnhQ0Ze2JX/oYILa89rrNwqUH7lDAuhFKa+NY6EoJ9kZMuOvuu4WwLQ==",
949
+ "version": "0.8.2",
950
+ "resolved": "https://registry.npmjs.org/@posthog/browser-common/-/browser-common-0.8.2.tgz",
951
+ "integrity": "sha512-8g7+ijrx8bfWmpDjmP07e0ZmdRnJoFqZ6PCcMQvfBTUrr422GRXvQWpQn7yD028zIJHIIn/rUTipKgUC5UkWpw==",
952
952
  "license": "MIT",
953
953
  "dependencies": {
954
- "@posthog/core": "^1.50.4",
955
- "@posthog/types": "^1.408.1"
954
+ "@posthog/core": "^1.51.0",
955
+ "@posthog/types": "^1.409.1"
956
956
  }
957
957
  },
958
958
  "node_modules/@posthog/core": {
959
- "version": "1.50.5",
960
- "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.50.5.tgz",
961
- "integrity": "sha512-afEchuShDaVIoxAIj76kDZQ1DhfesDmgfVp+mtTzsA3wlc8DF5uoz8YjuTjnxOicWkpP5HCDqYidK/1kT125Cg==",
959
+ "version": "1.52.0",
960
+ "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.52.0.tgz",
961
+ "integrity": "sha512-pvbdeRRpizktmo8MXZQxjAI4aFfNajwkzxbm72wKV9n2wWcnQWa4m+AqTI2zmmCSsYk7F666rRUdvYqZLjjhWg==",
962
962
  "license": "MIT",
963
963
  "dependencies": {
964
- "@posthog/types": "^1.409.0"
964
+ "@posthog/types": "^1.409.4"
965
965
  }
966
966
  },
967
967
  "node_modules/@posthog/types": {
968
- "version": "1.409.0",
969
- "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.409.0.tgz",
970
- "integrity": "sha512-239umoaZVb2GBaXeEyJpwFvjhrrChJH8NHCwiao23EBSu3NA6EN0MTMoaHSmMEf4yjiXEFFoYJA6FjJAXF5HGA==",
968
+ "version": "1.410.0",
969
+ "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.410.0.tgz",
970
+ "integrity": "sha512-741sltt/h+l0eYH+Nkow96qKfDmRxwKacfjF93Z+kMySjzL0a87ptmpklZxGkbjBp/DJH/CSowGrolYWK/1ToA==",
971
971
  "license": "MIT"
972
972
  },
973
973
  "node_modules/@react-native/asset-utils": {
@@ -1616,13 +1616,13 @@
1616
1616
  "license": "MIT"
1617
1617
  },
1618
1618
  "node_modules/@types/node": {
1619
- "version": "26.4.1",
1620
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.4.1.tgz",
1621
- "integrity": "sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==",
1619
+ "version": "22.20.2",
1620
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.2.tgz",
1621
+ "integrity": "sha512-xlvWf4Vs9n1PEVYwP1n4vvG07M6y8WgvJ2t0vbrWTmijsIHp1cS+uJ2kMIRdY3nHZK0nCYKrPeD171+SzF4/zw==",
1622
1622
  "license": "MIT",
1623
1623
  "peer": true,
1624
1624
  "dependencies": {
1625
- "undici-types": "~8.3.0"
1625
+ "undici-types": "~6.21.0"
1626
1626
  }
1627
1627
  },
1628
1628
  "node_modules/@types/trusted-types": {
@@ -2286,9 +2286,9 @@
2286
2286
  }
2287
2287
  },
2288
2288
  "node_modules/dompurify": {
2289
- "version": "3.4.14",
2290
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.14.tgz",
2291
- "integrity": "sha512-dVoH9z+MY+C9IilgGCk3YfFqjLi3fChm2OiKJMzh6axrJ5qwxqWaZamgmHrpv22CN/KdbZJuGEGgfQoL00LTdg==",
2289
+ "version": "3.4.15",
2290
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.15.tgz",
2291
+ "integrity": "sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==",
2292
2292
  "license": "(MPL-2.0 OR Apache-2.0)",
2293
2293
  "optionalDependencies": {
2294
2294
  "@types/trusted-types": "^2.0.7"
@@ -2302,9 +2302,9 @@
2302
2302
  "peer": true
2303
2303
  },
2304
2304
  "node_modules/electron-to-chromium": {
2305
- "version": "1.5.422",
2306
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.422.tgz",
2307
- "integrity": "sha512-UvA/32XqrLDdZSn7Jllo1AYNcWji/G0d5M0GTViE7KoGBiMunw3a34Sb2KO4ZZyrSEhqsxFoVhWWJshdyfKqJA==",
2305
+ "version": "1.5.425",
2306
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.425.tgz",
2307
+ "integrity": "sha512-QvPtl41EUOnuT1HBvMKgxXRIaHNcagBPs50u7VULzhZXaGfqTbZyE16LQsctZ/RQHlGu+FOWeDTR4mY6YbeF1g==",
2308
2308
  "license": "ISC"
2309
2309
  },
2310
2310
  "node_modules/emoji-regex": {
@@ -3872,9 +3872,9 @@
3872
3872
  "peer": true
3873
3873
  },
3874
3874
  "node_modules/node-releases": {
3875
- "version": "2.0.54",
3876
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz",
3877
- "integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==",
3875
+ "version": "2.0.55",
3876
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.55.tgz",
3877
+ "integrity": "sha512-mIrE/Cw9y+9Au6dS5vDKDhQza9YvG6w+ZrS6X+ZzA7yFW/soAeaups4Qzn1bL6g5FVy8WtP79+0j82oPIbqRjQ==",
3878
3878
  "license": "MIT",
3879
3879
  "engines": {
3880
3880
  "node": ">=18"
@@ -4045,14 +4045,14 @@
4045
4045
  "license": "MIT"
4046
4046
  },
4047
4047
  "node_modules/posthog-js": {
4048
- "version": "1.427.2",
4049
- "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.427.2.tgz",
4050
- "integrity": "sha512-/jRg3ChHuxcHTTJ/xb+IbpXLYxiBKIWdjrsNNqY1tAwjnFoijmz58i4mIR4A2P5MWx+4R7LlpK9vQfBr8v292g==",
4048
+ "version": "1.429.1",
4049
+ "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.429.1.tgz",
4050
+ "integrity": "sha512-6DnWhkmaFlY6/Wjrw59GXeUyyS2NG0CIFNklxuUlEfbw1Wx2A3Z9/NSYCUJlY7feMgqN74BguAmQtXAlsNwguQ==",
4051
4051
  "license": "(Apache-2.0 AND MIT)",
4052
4052
  "dependencies": {
4053
- "@posthog/browser-common": "^0.7.2",
4054
- "@posthog/core": "^1.50.5",
4055
- "@posthog/types": "^1.409.0",
4053
+ "@posthog/browser-common": "^0.8.2",
4054
+ "@posthog/core": "^1.52.0",
4055
+ "@posthog/types": "^1.410.0",
4056
4056
  "core-js": "^3.49.0",
4057
4057
  "dompurify": "^3.4.13",
4058
4058
  "fflate": "^0.4.8",
@@ -4356,9 +4356,9 @@
4356
4356
  }
4357
4357
  },
4358
4358
  "node_modules/react": {
4359
- "version": "19.2.8",
4360
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz",
4361
- "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==",
4359
+ "version": "19.3.0",
4360
+ "resolved": "https://registry.npmjs.org/react/-/react-19.3.0.tgz",
4361
+ "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==",
4362
4362
  "license": "MIT",
4363
4363
  "engines": {
4364
4364
  "node": ">=0.10.0"
@@ -4376,21 +4376,21 @@
4376
4376
  }
4377
4377
  },
4378
4378
  "node_modules/react-dom": {
4379
- "version": "19.2.8",
4380
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz",
4381
- "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==",
4379
+ "version": "19.3.0",
4380
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.3.0.tgz",
4381
+ "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==",
4382
4382
  "license": "MIT",
4383
4383
  "dependencies": {
4384
- "scheduler": "^0.27.0"
4384
+ "scheduler": "^0.28.0"
4385
4385
  },
4386
4386
  "peerDependencies": {
4387
- "react": "^19.2.8"
4387
+ "react": "^19.3.0"
4388
4388
  }
4389
4389
  },
4390
4390
  "node_modules/react-is": {
4391
- "version": "19.2.8",
4392
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.8.tgz",
4393
- "integrity": "sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==",
4391
+ "version": "19.3.0",
4392
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.3.0.tgz",
4393
+ "integrity": "sha512-UpMYezM4v5/18F28aC66AEsjXIgE02kyEMH6yLdgLXu/UTfa1Ntwck/nNLrbqJsEXW7gPb0coNO9FQse9WTovA==",
4394
4394
  "license": "MIT"
4395
4395
  },
4396
4396
  "node_modules/react-native": {
@@ -4489,6 +4489,13 @@
4489
4489
  "node": ">=0.10.0"
4490
4490
  }
4491
4491
  },
4492
+ "node_modules/react-native/node_modules/scheduler": {
4493
+ "version": "0.27.0",
4494
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
4495
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
4496
+ "license": "MIT",
4497
+ "peer": true
4498
+ },
4492
4499
  "node_modules/react-native/node_modules/semver": {
4493
4500
  "version": "7.8.5",
4494
4501
  "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
@@ -4517,6 +4524,12 @@
4517
4524
  "react": "^19.2.0"
4518
4525
  }
4519
4526
  },
4527
+ "node_modules/react-reconciler/node_modules/scheduler": {
4528
+ "version": "0.27.0",
4529
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
4530
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
4531
+ "license": "MIT"
4532
+ },
4520
4533
  "node_modules/react-refresh": {
4521
4534
  "version": "0.17.0",
4522
4535
  "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
@@ -4649,9 +4662,9 @@
4649
4662
  "optional": true
4650
4663
  },
4651
4664
  "node_modules/scheduler": {
4652
- "version": "0.27.0",
4653
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
4654
- "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
4665
+ "version": "0.28.0",
4666
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.28.0.tgz",
4667
+ "integrity": "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==",
4655
4668
  "license": "MIT"
4656
4669
  },
4657
4670
  "node_modules/semver": {
@@ -5216,9 +5229,9 @@
5216
5229
  "license": "MIT"
5217
5230
  },
5218
5231
  "node_modules/undici-types": {
5219
- "version": "8.3.0",
5220
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
5221
- "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
5232
+ "version": "6.21.0",
5233
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
5234
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
5222
5235
  "license": "MIT",
5223
5236
  "peer": true
5224
5237
  },
@@ -5278,9 +5291,9 @@
5278
5291
  }
5279
5292
  },
5280
5293
  "node_modules/use-sync-external-store": {
5281
- "version": "1.6.0",
5282
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
5283
- "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
5294
+ "version": "1.7.0",
5295
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.7.0.tgz",
5296
+ "integrity": "sha512-6L+EeigHMQhdaIPNIFUKwfWJSwWFQ8gJbJ2DLOs5sDIegTwR9fRxvnM3uciHKjIZhFz+KAv2emhWMRvDmMcY8A==",
5284
5297
  "license": "MIT",
5285
5298
  "peerDependencies": {
5286
5299
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gogitcms/editor",
3
- "version": "0.43.0",
3
+ "version": "0.43.1",
4
4
  "description": "Terminal UI for setting up and running the Go·Git CMS content editor",
5
5
  "type": "module",
6
6
  "bin": {
@@ -65,10 +65,10 @@
65
65
  "@gogitcms/frontend": "workspace:*"
66
66
  },
67
67
  "optionalDependencies": {
68
- "@gogitcms/gitcms-local-darwin-arm64": "0.43.0",
69
- "@gogitcms/gitcms-local-darwin-x64": "0.43.0",
70
- "@gogitcms/gitcms-local-linux-arm64": "0.43.0",
71
- "@gogitcms/gitcms-local-linux-x64": "0.43.0",
72
- "@gogitcms/gitcms-local-win32-x64": "0.43.0"
68
+ "@gogitcms/gitcms-local-darwin-arm64": "0.43.1",
69
+ "@gogitcms/gitcms-local-darwin-x64": "0.43.1",
70
+ "@gogitcms/gitcms-local-linux-arm64": "0.43.1",
71
+ "@gogitcms/gitcms-local-linux-x64": "0.43.1",
72
+ "@gogitcms/gitcms-local-win32-x64": "0.43.1"
73
73
  }
74
74
  }