Skip to content

Commit 803a8e5

Browse files
committed
update linux download handling
1 parent ae2a949 commit 803a8e5

File tree

9 files changed

+105
-19
lines changed

9 files changed

+105
-19
lines changed

apps/web/content-collections.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,13 @@ const changelog = defineCollection({
121121
const version = document._meta.path.replace(/\.mdx$/, "");
122122
const tag = `desktop_v${version}`;
123123

124+
const isNightly = version.includes("-nightly");
125+
const channel = isNightly ? "nightly" : "stable";
126+
124127
const downloads: Record<VersionPlatform, string> = {
125-
"dmg-aarch64": `https://github.com/fastrepl/hyprnote/releases/download/${tag}/hyprnote-macos-aarch64.dmg`,
126-
"appimage-x86_64": `https://github.com/fastrepl/hyprnote/releases/download/${tag}/hyprnote-linux-x86_64.AppImage`,
128+
"dmg-aarch64": `https://desktop2.hyprnote.com/download/${version}/dmg-aarch64?channel=${channel}`,
129+
"appimage-x86_64": `https://desktop2.hyprnote.com/download/${version}/appimage-x86_64?channel=${channel}`,
130+
"deb-x86_64": `https://desktop2.hyprnote.com/download/${version}/deb-x86_64?channel=${channel}`,
127131
};
128132

129133
return {

apps/web/content/docs/developers/7.versioning.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ Available channels:
3434

3535
Available platforms:
3636
- appimage-x86_64
37+
- deb-x86_64
3738
- dmg-x86_64
3839
- dmg-aarch64
3940

apps/web/src/routeTree.gen.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ import { Route as ViewProductAiAssistantRouteImport } from './routes/_view/produ
7777
import { Route as ViewPressKitAppRouteImport } from './routes/_view/press-kit/app'
7878
import { Route as ViewLegalSlugRouteImport } from './routes/_view/legal/$slug'
7979
import { Route as ViewDownloadWindowsRouteImport } from './routes/_view/download/windows'
80+
import { Route as ViewDownloadLinuxDebRouteImport } from './routes/_view/download/linux-deb'
81+
import { Route as ViewDownloadLinuxAppimageRouteImport } from './routes/_view/download/linux-appimage'
8082
import { Route as ViewDownloadLinuxRouteImport } from './routes/_view/download/linux'
8183
import { Route as ViewDownloadAppleSiliconRouteImport } from './routes/_view/download/apple-silicon'
8284
import { Route as ViewDownloadAppleIntelRouteImport } from './routes/_view/download/apple-intel'
@@ -436,6 +438,17 @@ const ViewDownloadWindowsRoute = ViewDownloadWindowsRouteImport.update({
436438
path: '/download/windows',
437439
getParentRoute: () => ViewRouteRoute,
438440
} as any)
441+
const ViewDownloadLinuxDebRoute = ViewDownloadLinuxDebRouteImport.update({
442+
id: '/download/linux-deb',
443+
path: '/download/linux-deb',
444+
getParentRoute: () => ViewRouteRoute,
445+
} as any)
446+
const ViewDownloadLinuxAppimageRoute =
447+
ViewDownloadLinuxAppimageRouteImport.update({
448+
id: '/download/linux-appimage',
449+
path: '/download/linux-appimage',
450+
getParentRoute: () => ViewRouteRoute,
451+
} as any)
439452
const ViewDownloadLinuxRoute = ViewDownloadLinuxRouteImport.update({
440453
id: '/download/linux',
441454
path: '/download/linux',
@@ -550,6 +563,8 @@ export interface FileRoutesByFullPath {
550563
'/download/apple-intel': typeof ViewDownloadAppleIntelRoute
551564
'/download/apple-silicon': typeof ViewDownloadAppleSiliconRoute
552565
'/download/linux': typeof ViewDownloadLinuxRoute
566+
'/download/linux-appimage': typeof ViewDownloadLinuxAppimageRoute
567+
'/download/linux-deb': typeof ViewDownloadLinuxDebRoute
553568
'/download/windows': typeof ViewDownloadWindowsRoute
554569
'/legal/$slug': typeof ViewLegalSlugRoute
555570
'/press-kit/app': typeof ViewPressKitAppRoute
@@ -630,6 +645,8 @@ export interface FileRoutesByTo {
630645
'/download/apple-intel': typeof ViewDownloadAppleIntelRoute
631646
'/download/apple-silicon': typeof ViewDownloadAppleSiliconRoute
632647
'/download/linux': typeof ViewDownloadLinuxRoute
648+
'/download/linux-appimage': typeof ViewDownloadLinuxAppimageRoute
649+
'/download/linux-deb': typeof ViewDownloadLinuxDebRoute
633650
'/download/windows': typeof ViewDownloadWindowsRoute
634651
'/legal/$slug': typeof ViewLegalSlugRoute
635652
'/press-kit/app': typeof ViewPressKitAppRoute
@@ -715,6 +732,8 @@ export interface FileRoutesById {
715732
'/_view/download/apple-intel': typeof ViewDownloadAppleIntelRoute
716733
'/_view/download/apple-silicon': typeof ViewDownloadAppleSiliconRoute
717734
'/_view/download/linux': typeof ViewDownloadLinuxRoute
735+
'/_view/download/linux-appimage': typeof ViewDownloadLinuxAppimageRoute
736+
'/_view/download/linux-deb': typeof ViewDownloadLinuxDebRoute
718737
'/_view/download/windows': typeof ViewDownloadWindowsRoute
719738
'/_view/legal/$slug': typeof ViewLegalSlugRoute
720739
'/_view/press-kit/app': typeof ViewPressKitAppRoute
@@ -800,6 +819,8 @@ export interface FileRouteTypes {
800819
| '/download/apple-intel'
801820
| '/download/apple-silicon'
802821
| '/download/linux'
822+
| '/download/linux-appimage'
823+
| '/download/linux-deb'
803824
| '/download/windows'
804825
| '/legal/$slug'
805826
| '/press-kit/app'
@@ -880,6 +901,8 @@ export interface FileRouteTypes {
880901
| '/download/apple-intel'
881902
| '/download/apple-silicon'
882903
| '/download/linux'
904+
| '/download/linux-appimage'
905+
| '/download/linux-deb'
883906
| '/download/windows'
884907
| '/legal/$slug'
885908
| '/press-kit/app'
@@ -964,6 +987,8 @@ export interface FileRouteTypes {
964987
| '/_view/download/apple-intel'
965988
| '/_view/download/apple-silicon'
966989
| '/_view/download/linux'
990+
| '/_view/download/linux-appimage'
991+
| '/_view/download/linux-deb'
967992
| '/_view/download/windows'
968993
| '/_view/legal/$slug'
969994
| '/_view/press-kit/app'
@@ -1505,6 +1530,20 @@ declare module '@tanstack/react-router' {
15051530
preLoaderRoute: typeof ViewDownloadWindowsRouteImport
15061531
parentRoute: typeof ViewRouteRoute
15071532
}
1533+
'/_view/download/linux-deb': {
1534+
id: '/_view/download/linux-deb'
1535+
path: '/download/linux-deb'
1536+
fullPath: '/download/linux-deb'
1537+
preLoaderRoute: typeof ViewDownloadLinuxDebRouteImport
1538+
parentRoute: typeof ViewRouteRoute
1539+
}
1540+
'/_view/download/linux-appimage': {
1541+
id: '/_view/download/linux-appimage'
1542+
path: '/download/linux-appimage'
1543+
fullPath: '/download/linux-appimage'
1544+
preLoaderRoute: typeof ViewDownloadLinuxAppimageRouteImport
1545+
parentRoute: typeof ViewRouteRoute
1546+
}
15081547
'/_view/download/linux': {
15091548
id: '/_view/download/linux'
15101549
path: '/download/linux'
@@ -1677,6 +1716,8 @@ interface ViewRouteRouteChildren {
16771716
ViewDownloadAppleIntelRoute: typeof ViewDownloadAppleIntelRoute
16781717
ViewDownloadAppleSiliconRoute: typeof ViewDownloadAppleSiliconRoute
16791718
ViewDownloadLinuxRoute: typeof ViewDownloadLinuxRoute
1719+
ViewDownloadLinuxAppimageRoute: typeof ViewDownloadLinuxAppimageRoute
1720+
ViewDownloadLinuxDebRoute: typeof ViewDownloadLinuxDebRoute
16801721
ViewDownloadWindowsRoute: typeof ViewDownloadWindowsRoute
16811722
ViewLegalSlugRoute: typeof ViewLegalSlugRoute
16821723
ViewPressKitAppRoute: typeof ViewPressKitAppRoute
@@ -1738,6 +1779,8 @@ const ViewRouteRouteChildren: ViewRouteRouteChildren = {
17381779
ViewDownloadAppleIntelRoute: ViewDownloadAppleIntelRoute,
17391780
ViewDownloadAppleSiliconRoute: ViewDownloadAppleSiliconRoute,
17401781
ViewDownloadLinuxRoute: ViewDownloadLinuxRoute,
1782+
ViewDownloadLinuxAppimageRoute: ViewDownloadLinuxAppimageRoute,
1783+
ViewDownloadLinuxDebRoute: ViewDownloadLinuxDebRoute,
17411784
ViewDownloadWindowsRoute: ViewDownloadWindowsRoute,
17421785
ViewLegalSlugRoute: ViewLegalSlugRoute,
17431786
ViewPressKitAppRoute: ViewPressKitAppRoute,

apps/web/src/routes/_view/changelog/$slug.tsx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -128,18 +128,20 @@ function HeroSection({ changelog }: { changelog: ChangelogWithMeta }) {
128128
}
129129

130130
function DownloadButtons({ version }: { version: string }) {
131-
const baseUrl = `https://github.com/fastrepl/hyprnote/releases/download/desktop_v${version}`;
131+
const isNightly = version.includes("-nightly");
132+
const channel = isNightly ? "nightly" : "stable";
133+
const baseUrl = `https://desktop2.hyprnote.com/download/${version}`;
132134
const [isOpen, setIsOpen] = useState(false);
133135
const [detectedOS, setDetectedOS] = useState<
134-
"apple-silicon" | "apple-intel" | "linux"
136+
"apple-silicon" | "apple-intel" | "linux-appimage" | "linux-deb"
135137
>("apple-silicon");
136138

137139
useEffect(() => {
138140
const userAgent = navigator.userAgent.toLowerCase();
139141
if (userAgent.includes("mac")) {
140142
setDetectedOS("apple-silicon");
141143
} else if (userAgent.includes("linux")) {
142-
setDetectedOS("linux");
144+
setDetectedOS("linux-appimage");
143145
}
144146
}, []);
145147

@@ -148,19 +150,25 @@ function DownloadButtons({ version }: { version: string }) {
148150
id: "apple-silicon" as const,
149151
icon: "ri:apple-fill",
150152
label: "Apple Silicon",
151-
url: `${baseUrl}/hyprnote-macos-aarch64.dmg`,
153+
url: `${baseUrl}/dmg-aarch64?channel=${channel}`,
152154
},
153155
{
154156
id: "apple-intel" as const,
155157
icon: "ri:apple-fill",
156158
label: "Intel Mac",
157-
url: `${baseUrl}/hyprnote-macos-x86_64.dmg`,
159+
url: `${baseUrl}/dmg-x86_64?channel=${channel}`,
158160
},
159161
{
160-
id: "linux" as const,
162+
id: "linux-appimage" as const,
161163
icon: "simple-icons:linux",
162-
label: "Linux",
163-
url: `${baseUrl}/hyprnote-linux-x86_64.AppImage`,
164+
label: "Linux (AppImage)",
165+
url: `${baseUrl}/appimage-x86_64?channel=${channel}`,
166+
},
167+
{
168+
id: "linux-deb" as const,
169+
icon: "simple-icons:linux",
170+
label: "Linux (.deb)",
171+
url: `${baseUrl}/deb-x86_64?channel=${channel}`,
164172
},
165173
];
166174

apps/web/src/routes/_view/download/index.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ function Component() {
5656
<h2 className="text-2xl font-serif tracking-tight mb-6 text-center">
5757
Desktop
5858
</h2>
59-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
59+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
6060
<DownloadCard
6161
iconName="simple-icons:apple"
6262
spec="macOS 14.2+ (Apple Silicon)"
@@ -69,19 +69,31 @@ function Component() {
6969
downloadUrl="/download/apple-intel"
7070
available={true}
7171
/>
72-
<DownloadCard
73-
iconName="simple-icons:linux"
74-
spec="Linux"
75-
downloadUrl="/download/linux"
76-
available={true}
77-
/>
7872
<DownloadCard
7973
iconName="simple-icons:windows"
8074
spec="Windows"
8175
downloadUrl="#"
8276
available={false}
8377
/>
8478
</div>
79+
80+
<h2 className="text-2xl font-serif tracking-tight mb-6 mt-16 text-center">
81+
Linux
82+
</h2>
83+
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 max-w-2xl mx-auto">
84+
<DownloadCard
85+
iconName="simple-icons:linux"
86+
spec="Linux (AppImage)"
87+
downloadUrl="/download/linux-appimage"
88+
available={true}
89+
/>
90+
<DownloadCard
91+
iconName="simple-icons:linux"
92+
spec="Linux (.deb)"
93+
downloadUrl="/download/linux-deb"
94+
available={true}
95+
/>
96+
</div>
8597
</div>
8698

8799
{isMac && (
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { createFileRoute, redirect } from "@tanstack/react-router";
2+
3+
export const Route = createFileRoute("/_view/download/linux-appimage")({
4+
beforeLoad: async () => {
5+
throw redirect({
6+
href: "https://desktop2.hyprnote.com/download/latest/appimage-x86_64?channel=nightly",
7+
});
8+
},
9+
});
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { createFileRoute, redirect } from "@tanstack/react-router";
2+
3+
export const Route = createFileRoute("/_view/download/linux-deb")({
4+
beforeLoad: async () => {
5+
throw redirect({
6+
href: "https://desktop2.hyprnote.com/download/latest/deb-x86_64?channel=nightly",
7+
});
8+
},
9+
});

apps/web/src/routes/_view/download/linux.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { createFileRoute, redirect } from "@tanstack/react-router";
33
export const Route = createFileRoute("/_view/download/linux")({
44
beforeLoad: async () => {
55
throw redirect({
6-
href: "https://desktop2.hyprnote.com/download/latest/appimage-x86_64?channel=nightly",
6+
to: "/download/linux-appimage",
77
});
88
},
99
});

apps/web/src/scripts/versioning.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { join } from "node:path";
44
type VersionChannel = "stable" | "nightly" | "staging";
55

66
// https://docs.crabnebula.dev/cloud/cli/upload-assets/#public-platform---public-platform
7-
export type VersionPlatform = "dmg-aarch64" | "appimage-x86_64";
7+
export type VersionPlatform = "dmg-aarch64" | "appimage-x86_64" | "deb-x86_64";
88

99
export type VersionDownloads = Partial<Record<VersionPlatform, string>>;
1010

0 commit comments

Comments
 (0)