From 31ce12b0dad7fd680b3a6edcbb516509710f518e Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Tue, 15 Sep 2026 12:50:58 +0530 Subject: [PATCH 1/3] feat: protect github api by higher age for cacahe data Signed-off-by: Jeel Dobariya --- src/providers/QueryProvider.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/providers/QueryProvider.tsx b/src/providers/QueryProvider.tsx index 8771506..0adba13 100644 --- a/src/providers/QueryProvider.tsx +++ b/src/providers/QueryProvider.tsx @@ -7,16 +7,19 @@ interface QueryProviderProps { children: ReactNode; } +const HOUR = 60 * 60 * 1000; + export function QueryProvider({ children }: QueryProviderProps) { const [queryClient] = useState( () => new QueryClient({ defaultOptions: { queries: { - staleTime: 5 * 60 * 1000, - gcTime: 10 * 60 * 1000, + staleTime: HOUR, + gcTime: 12 * HOUR, retry: 2, refetchOnWindowFocus: false, + networkMode: "offlineFirst", }, }, }) From 0ab71056c00fe5c293745c88af9b79f9332617e4 Mon Sep 17 00:00:00 2001 From: Jeel Dobariya Date: Tue, 15 Sep 2026 13:23:43 +0530 Subject: [PATCH 2/3] refactor: integrated passalgorithm package Signed-off-by: Jeel Dobariya --- package-lock.json | 6 ++++ package.json | 1 + src/components/community/CommunityContent.tsx | 2 +- src/components/downloads/ArchDownload.tsx | 2 +- src/components/downloads/DownloadCard.tsx | 30 +++++++++++++++---- src/components/downloads/ReleaseList.tsx | 20 +++++++++---- src/components/home/Hero.tsx | 4 +-- src/components/shared/GithubStarDialog.tsx | 2 +- src/lib/utils.ts | 20 ------------- 9 files changed, 51 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 13d449c..f987e86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "passcodes-website", "version": "3.0.0", "dependencies": { + "@passcodes/passalgo": "github:PasscodesApp/PassAlgo#main", "@tanstack/react-query": "^5.50.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", @@ -508,6 +509,11 @@ "node": ">=12.4.0" } }, + "node_modules/@passcodes/passalgo": { + "version": "0.1.0", + "resolved": "git+ssh://git@github.com/PasscodesApp/PassAlgo.git#ad35a380ae23a9720625ca3cf09e6c4b58f61199", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", diff --git a/package.json b/package.json index 07e838d..ade9fdf 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "test:e2e:report": "playwright show-report" }, "dependencies": { + "@passcodes/passalgo": "github:PasscodesApp/PassAlgo#main", "@tanstack/react-query": "^5.50.0", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", diff --git a/src/components/community/CommunityContent.tsx b/src/components/community/CommunityContent.tsx index ae01ea7..0654b20 100644 --- a/src/components/community/CommunityContent.tsx +++ b/src/components/community/CommunityContent.tsx @@ -17,7 +17,7 @@ import { GITHUB_ISSUES_URL, PASSCODES_CONTRIBUTING_URL, } from "@/lib/constants"; -import { formatNumber } from "@/lib/utils"; +import { formatNumber } from "@passcodes/passalgo"; import { Star, GitFork, Users, BookOpen, Code2 } from "lucide-react"; import { GithubIcon } from "@/components/ui/BrandIcons"; diff --git a/src/components/downloads/ArchDownload.tsx b/src/components/downloads/ArchDownload.tsx index e0190ba..7b9f3c3 100644 --- a/src/components/downloads/ArchDownload.tsx +++ b/src/components/downloads/ArchDownload.tsx @@ -10,11 +10,11 @@ import { groupApksByArch, orderVariants, pickRecommendedApk, - formatFileSize, cn, } from "@/lib/utils"; import type { GithubReleaseAsset } from "@/types/github"; import Link from "next/link"; +import { formatFileSize } from "@passcodes/passalgo"; interface Props { assets: GithubReleaseAsset[]; diff --git a/src/components/downloads/DownloadCard.tsx b/src/components/downloads/DownloadCard.tsx index 6b0f38c..a5242c8 100644 --- a/src/components/downloads/DownloadCard.tsx +++ b/src/components/downloads/DownloadCard.tsx @@ -5,9 +5,14 @@ import { Download, Calendar, Tag, AlertTriangle } from "lucide-react"; import Markdown from "react-markdown"; import remarkGfm from "remark-gfm"; import { ArchDownload } from "@/components/downloads/ArchDownload"; -import { formatNumber, formatDate, cn } from "@/lib/utils"; -import { classifyRelease, isYankedRelease, isDeprecatedRelease } from "@/hooks/useGithubRelease"; +import { cn } from "@/lib/utils"; +import { + classifyRelease, + isYankedRelease, + isDeprecatedRelease, +} from "@/hooks/useGithubRelease"; import type { GithubRelease } from "@/types/github"; +import { formatDate, formatNumber } from "@passcodes/passalgo"; export function DownloadCard({ release, @@ -26,12 +31,20 @@ export function DownloadCard({ const isDeprecated = isDeprecatedRelease(release); return ( -
+

{release.name || release.tag_name}

{isLatest && Latest} - {isDeprecated && Deprecated} + {isDeprecated && ( + Deprecated + )} {isYanked && Yanked} {channel === "beta" && ( Beta @@ -66,11 +79,16 @@ export function DownloadCard({ {isDeprecated && (
-

- This release is no longer supported. Superseded by the newer database architecture introduced in later releases. Please use a current release instead. + This release is no longer supported. Superseded by the + newer database architecture introduced in later + releases. Please use a current release instead.

)} diff --git a/src/components/downloads/ReleaseList.tsx b/src/components/downloads/ReleaseList.tsx index dcd1174..6078b85 100644 --- a/src/components/downloads/ReleaseList.tsx +++ b/src/components/downloads/ReleaseList.tsx @@ -2,10 +2,14 @@ import { Download, Calendar, ExternalLink, AlertTriangle } from "lucide-react"; import { ArchDownload } from "@/components/downloads/ArchDownload"; -import { formatNumber, formatDate } from "@/lib/utils"; -import { classifyRelease, isYankedRelease, isDeprecatedRelease } from "@/hooks/useGithubRelease"; +import { + classifyRelease, + isYankedRelease, + isDeprecatedRelease, +} from "@/hooks/useGithubRelease"; import type { GithubRelease } from "@/types/github"; import Link from "next/link"; +import { formatDate } from "@passcodes/passalgo"; export function ReleaseList({ releases, @@ -87,18 +91,24 @@ export function ReleaseList({ className="mr-1 inline h-3 w-3" aria-hidden="true" /> - {formatNumber(totalDownloads)} + {totalDownloads}
{isDeprecated && (
-

- This release is no longer supported. Superseded by the newer database architecture introduced in later releases. Please use a current release instead. + This release is no longer supported. + Superseded by the newer database + architecture introduced in later releases. + Please use a current release instead.

)} diff --git a/src/components/home/Hero.tsx b/src/components/home/Hero.tsx index 1e5a600..b3337c6 100644 --- a/src/components/home/Hero.tsx +++ b/src/components/home/Hero.tsx @@ -18,7 +18,7 @@ import { ScrollReveal } from "@/components/motion/ScrollReveal"; import { useDownloadCount } from "@/hooks/useDownloadCount"; import { useLatestRelease } from "@/hooks/useGithubRelease"; import { getLatestChangelogEntry } from "@/lib/changelog"; -import { formatNumber } from "@/lib/utils"; +import { formatNumber } from "@passcodes/passalgo"; import { GITHUB_REPO_URL, DISCORD_URL, USER_GUIDE_URL } from "@/lib/constants"; export function Hero() { @@ -181,7 +181,7 @@ export function Hero() {
{/* Subtle Ambient Radial Accent (Engineered, not glowing blob) */}