@checkstack/dashboard-frontend 0.3.25 → 0.3.26

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/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # @checkstack/dashboard-frontend
2
2
 
3
+ ## 0.3.26
4
+
5
+ ### Patch Changes
6
+
7
+ - d1a2796: Enforce stricter code quality standards and eliminate AI slop anti-patterns.
8
+
9
+ **New utility**
10
+
11
+ - `extractErrorMessage(error, fallback?)` in `@checkstack/common` for consistent error extraction
12
+
13
+ **ESLint rules**
14
+
15
+ - `react-hooks/rules-of-hooks` and `exhaustive-deps` for hook correctness
16
+ - `no-console` in frontend packages — forces `toast` over silent `console.error`
17
+ - `no-restricted-syntax` banning `instanceof Error` — forces `extractErrorMessage`
18
+ - Custom `no-eslint-disable-any` rule preventing `@typescript-eslint/no-explicit-any` circumvention
19
+
20
+ **Refactoring**
21
+
22
+ - Replace 141 `instanceof Error` boilerplate patterns across the codebase
23
+ - Replace swallowed `console.error` with user-visible `toast.error()` feedback
24
+ - Remove 15 redundant `as` type casts in IntegrationsPage and ProviderConnectionsPage
25
+ - Consolidate 3 identical callback handlers into `handleDialogClose`
26
+ - Fix conditional React hook call in `FormField.tsx`
27
+ - Fix unstable useMemo deps in `Dashboard.tsx`
28
+ - Replace `useEffect`→`setState` with derived `useMemo` in `RegisterPage.tsx`
29
+ - Rewrite `keystore.test.ts` with typed `DrizzleMockChain` (eliminating 7 `any` suppressions)
30
+ - Delete obvious comments in `encryption.ts` and Teams `provider.ts`
31
+
32
+ - Updated dependencies [d1a2796]
33
+ - Updated dependencies [3c34b07]
34
+ - @checkstack/common@0.6.5
35
+ - @checkstack/ui@1.2.1
36
+ - @checkstack/auth-frontend@0.5.18
37
+ - @checkstack/catalog-frontend@0.5.8
38
+ - @checkstack/frontend-api@0.3.9
39
+ - @checkstack/queue-frontend@0.2.20
40
+ - @checkstack/catalog-common@1.3.1
41
+ - @checkstack/healthcheck-common@0.10.1
42
+ - @checkstack/command-common@0.2.8
43
+ - @checkstack/command-frontend@0.2.20
44
+ - @checkstack/incident-common@0.4.7
45
+ - @checkstack/maintenance-common@0.4.9
46
+ - @checkstack/notification-common@0.2.8
47
+ - @checkstack/signal-frontend@0.0.15
48
+
3
49
  ## 0.3.25
4
50
 
5
51
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@checkstack/dashboard-frontend",
3
- "version": "0.3.25",
3
+ "version": "0.3.26",
4
4
  "type": "module",
5
5
  "main": "src/index.tsx",
6
6
  "checkstack": {
@@ -14,13 +14,13 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@checkstack/auth-frontend": "0.5.17",
17
- "@checkstack/catalog-common": "1.2.11",
18
- "@checkstack/catalog-frontend": "0.5.6",
17
+ "@checkstack/catalog-common": "1.3.0",
18
+ "@checkstack/catalog-frontend": "0.5.7",
19
19
  "@checkstack/command-common": "0.2.7",
20
20
  "@checkstack/command-frontend": "0.2.19",
21
21
  "@checkstack/common": "0.6.4",
22
22
  "@checkstack/frontend-api": "0.3.8",
23
- "@checkstack/healthcheck-common": "0.8.4",
23
+ "@checkstack/healthcheck-common": "0.10.0",
24
24
  "@checkstack/incident-common": "0.4.6",
25
25
  "@checkstack/maintenance-common": "0.4.8",
26
26
  "@checkstack/notification-common": "0.2.7",
@@ -34,7 +34,7 @@
34
34
  "devDependencies": {
35
35
  "typescript": "^5.0.0",
36
36
  "@types/react": "^18.2.0",
37
- "@checkstack/tsconfig": "0.0.4",
37
+ "@checkstack/tsconfig": "0.0.5",
38
38
  "@checkstack/scripts": "0.1.2"
39
39
  }
40
40
  }
package/src/Dashboard.tsx CHANGED
@@ -103,7 +103,6 @@ export const Dashboard: React.FC = () => {
103
103
  // Fetch entities from catalog (groups and systems in one call)
104
104
  const { data: entitiesData, isLoading: entitiesLoading } =
105
105
  catalogClient.getEntities.useQuery({}, { staleTime: 30_000 });
106
- const groups = entitiesData?.groups ?? [];
107
106
  const systems = entitiesData?.systems ?? [];
108
107
 
109
108
  // Fetch active incidents
@@ -167,6 +166,8 @@ export const Dashboard: React.FC = () => {
167
166
 
168
167
  // Map groups to include their systems
169
168
  const groupsWithSystems = useMemo<GroupWithSystems[]>(() => {
169
+ const groups = entitiesData?.groups ?? [];
170
+ const systems = entitiesData?.systems ?? [];
170
171
  const systemMap = new Map(systems.map((s) => [s.id, s]));
171
172
  return groups.map((group) => {
172
173
  const groupSystems = (group.systemIds || [])
@@ -174,7 +175,7 @@ export const Dashboard: React.FC = () => {
174
175
  .filter((s): s is System => s !== undefined);
175
176
  return { ...group, systems: groupSystems };
176
177
  });
177
- }, [groups, systems]);
178
+ }, [entitiesData]);
178
179
 
179
180
  // -------------------------------------------------------------------------
180
181
  // SIGNAL HANDLERS