Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
1a05a98
Bump @eslint/js from 9.39.4 to 10.0.1
dependabot[bot] Apr 27, 2026
54ec086
Merge pull request #151 from poddeck/dependabot/npm_and_yarn/eslint/j…
miguelzapp Apr 27, 2026
0db532f
Bump lucide-react from 0.563.0 to 1.14.0
dependabot[bot] May 4, 2026
29ccbf4
Virtualize overview news list to fix lag with thousands of entries
miguelzapp May 5, 2026
52854f9
Merge pull request #153 from poddeck/dependabot/npm_and_yarn/lucide-r…
miguelzapp May 5, 2026
b6d3cf2
Fix react-ace default import for Rolldown CJS interop
miguelzapp May 5, 2026
b09ce02
Guard NotificationSheet against undefined notifications response
miguelzapp May 5, 2026
d07d5a5
Virtualize notification sheet to fix lag with thousands of entries
miguelzapp May 5, 2026
4f3399b
Scale base font-size to 85% for tighter default UI density
miguelzapp May 5, 2026
8635835
Create a factory to be able to set the expiry
miguelzapp May 5, 2026
da3a18c
Route 401 through refresh path to avoid 'random' logout
miguelzapp May 5, 2026
f658fc6
Split auth and refresh tokens into separate stores with distinct cook…
miguelzapp May 5, 2026
89008f3
Wait for both auth and refresh stores to hydrate before guarding
miguelzapp May 5, 2026
e5434a5
Merge pull request #154 from poddeck/fix/logout-bug
miguelzapp May 5, 2026
87ebf2e
Replace bare locale calls with the nested keys
miguelzapp May 5, 2026
cbd8d91
Limit initial pod log fetch to last hour
miguelzapp May 5, 2026
d1a52ae
Centralize frontend poll interval and bump from 3s to 5s
miguelzapp May 5, 2026
284c761
Scope auth cookies to root path with SameSite=Lax
miguelzapp May 5, 2026
c532ddd
Drop since_seconds on first pod log fetch
miguelzapp May 5, 2026
675337c
Bump react-resizable-panels from 4.10.0 to 4.11.0
dependabot[bot] May 11, 2026
b86e8a5
Merge pull request #155 from poddeck/dependabot/npm_and_yarn/react-re…
breuerlukas May 12, 2026
0e05dae
Bump nginx to 1.31.0
miguelzapp May 15, 2026
dcd1920
Ignore TS deprecations for v6.0
miguelzapp May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ RUN npm ci
COPY . .
RUN VITE_API_BASE_URL=/v1/ npm run build

FROM nginx:1.30.0-alpine
FROM nginx:1.31.0-alpine

RUN apk upgrade --no-cache

Expand Down
62 changes: 49 additions & 13 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
"@tailwindcss/vite": "^4.1.17",
"@tanstack/react-query": "^5.90.21",
"@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.13.24",
"ace-builds": "^1.43.6",
"ansi_up": "^6.0.6",
"axios": "^1.15.0",
Expand All @@ -58,7 +59,7 @@
"i18next": "^26.0.4",
"i18next-browser-languagedetector": "^8.2.1",
"input-otp": "^1.4.2",
"lucide-react": "^0.563.0",
"lucide-react": "^1.14.0",
"motion": "^12.34.0",
"next-themes": "^0.4.6",
"radix-ui": "^1.4.3",
Expand All @@ -69,7 +70,7 @@
"react-helmet": "^6.1.0",
"react-hook-form": "^7.72.1",
"react-i18next": "^17.0.2",
"react-resizable-panels": "^4.8.0",
"react-resizable-panels": "^4.11.0",
"react-router-dom": "^7.13.0",
"react-scan": "^0.5.3",
"react-spring": "^10.0.3",
Expand All @@ -84,7 +85,7 @@
"zustand": "^5.0.12"
},
"devDependencies": {
"@eslint/js": "^9.39.1",
"@eslint/js": "^10.0.1",
"@types/node": "^25.0.3",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.2",
Expand Down
8 changes: 2 additions & 6 deletions src/api/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,8 @@ axiosInstance.interceptors.response.use(
},
async (error: AxiosError) => {
const originalRequest = error.config as AuthenticationRequestConfig;
const {response} = error || {};
if (response?.status === 401) {
userStore.getState().actions.clearUserToken();
return Promise.reject(error);
}
if (response?.status === 417 && !originalRequest._retry) {
const status = error?.response?.status;
if ((status === 401 || status === 417) && !originalRequest._retry) {
return refresh(originalRequest, error);
}
return Promise.reject(error);
Expand Down
4 changes: 4 additions & 0 deletions src/global.css
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,10 @@
@apply border-border outline-ring/50;
}

html {
font-size: 85%;
}

body {
@apply bg-background text-foreground;
}
Expand Down
3 changes: 2 additions & 1 deletion src/hooks/use-cron-job.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {POLL_INTERVAL_MS} from "@/lib/constants.ts";
import {useSearchParams} from "react-router-dom";
import {useEffect, useState} from "react";
import cronJobService, {type CronJob} from "@/api/services/cron-job-service.ts";
Expand Down Expand Up @@ -26,7 +27,7 @@ export default function useCronJob() {
}

loadCronJob();
const interval = window.setInterval(loadCronJob, 3000);
const interval = window.setInterval(loadCronJob, POLL_INTERVAL_MS);
return () => { isMounted = false; clearInterval(interval); };
}, [searchParams]);

Expand Down
3 changes: 2 additions & 1 deletion src/hooks/use-daemon-set.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {POLL_INTERVAL_MS} from "@/lib/constants.ts";
import {useSearchParams} from "react-router-dom";
import {useEffect, useState} from "react";
import daemonSetService, {type DaemonSet} from "@/api/services/daemon-set-service.ts";
Expand Down Expand Up @@ -26,7 +27,7 @@ export default function useDaemonSet() {
}

loadDaemonSet();
const interval = window.setInterval(loadDaemonSet, 3000);
const interval = window.setInterval(loadDaemonSet, POLL_INTERVAL_MS);
return () => { isMounted = false; clearInterval(interval); };
}, [searchParams]);

Expand Down
3 changes: 2 additions & 1 deletion src/hooks/use-deployment.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {POLL_INTERVAL_MS} from "@/lib/constants.ts";
import {useSearchParams} from "react-router-dom";
import {useEffect, useState} from "react";
import deploymentService, {type Deployment} from "@/api/services/deployment-service.ts";
Expand Down Expand Up @@ -26,7 +27,7 @@ export default function useDeployment() {
}

loadDeployment();
const interval = window.setInterval(loadDeployment, 3000);
const interval = window.setInterval(loadDeployment, POLL_INTERVAL_MS);
return () => { isMounted = false; clearInterval(interval); };
}, [searchParams]);

Expand Down
3 changes: 2 additions & 1 deletion src/hooks/use-node.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {POLL_INTERVAL_MS} from "@/lib/constants.ts";
import {useSearchParams} from "react-router-dom";
import {useEffect, useState} from "react";
import nodeService, {type Node} from "@/api/services/node-service.ts";
Expand Down Expand Up @@ -25,7 +26,7 @@ export default function useNode() {
}

loadNode();
const interval = window.setInterval(loadNode, 3000);
const interval = window.setInterval(loadNode, POLL_INTERVAL_MS);
return () => { isMounted = false; clearInterval(interval); };
}, [searchParams]);

Expand Down
3 changes: 2 additions & 1 deletion src/hooks/use-pod.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {POLL_INTERVAL_MS} from "@/lib/constants.ts";
import {useSearchParams} from "react-router-dom";
import {useEffect, useState} from "react";
import podService, {type Pod} from "@/api/services/pod-service.ts";
Expand Down Expand Up @@ -26,7 +27,7 @@ export default function usePod() {
}

loadPod();
const interval = window.setInterval(loadPod, 3000);
const interval = window.setInterval(loadPod, POLL_INTERVAL_MS);
return () => { isMounted = false; clearInterval(interval); };
}, [searchParams]);

Expand Down
3 changes: 2 additions & 1 deletion src/hooks/use-replica-set.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {POLL_INTERVAL_MS} from "@/lib/constants.ts";
import {useSearchParams} from "react-router-dom";
import {useEffect, useState} from "react";
import replicaSetService, {type ReplicaSet} from "@/api/services/replica-set-service.ts";
Expand Down Expand Up @@ -26,7 +27,7 @@ export default function useReplicaSet() {
}

loadReplicaSet();
const interval = window.setInterval(loadReplicaSet, 3000);
const interval = window.setInterval(loadReplicaSet, POLL_INTERVAL_MS);
return () => { isMounted = false; clearInterval(interval); };
}, [searchParams]);

Expand Down
3 changes: 2 additions & 1 deletion src/hooks/use-stateful-set.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {POLL_INTERVAL_MS} from "@/lib/constants.ts";
import {useSearchParams} from "react-router-dom";
import {useEffect, useState} from "react";
import statefulSetService, {type StatefulSet} from "@/api/services/stateful-set-service.ts";
Expand Down Expand Up @@ -26,7 +27,7 @@ export default function useStatefulSet() {
}

loadStatefulSet();
const interval = window.setInterval(loadStatefulSet, 3000);
const interval = window.setInterval(loadStatefulSet, POLL_INTERVAL_MS);
return () => { isMounted = false; clearInterval(interval); };
}, [searchParams]);

Expand Down
Loading
Loading