22
33// Single source of truth for the displayed release version.
44// Updated automatically by: npm run release:deploy (from IDE root)
5- const CURRENT_VERSION = '1.6.3 ' ;
5+ const CURRENT_VERSION = '1.6.4 ' ;
66
77import Link from 'next/link' ;
88import { useState } from 'react' ;
99import FadeIn from '@/components/FadeIn' ;
1010import DonateProgress from '@/components/DonateProgress' ;
11- import { Download , Monitor , HardDrive , Cpu , Shield , AlertTriangle , Apple , Terminal } from 'lucide-react' ;
11+ import { Download , Monitor , HardDrive , Cpu , Shield , AlertTriangle , Apple , Terminal , Zap } from 'lucide-react' ;
1212
1313type Platform = 'windows' | 'linux' | 'mac' ;
14+ type Variant = 'standard' | 'cuda' ;
1415
1516const platforms : { id : Platform ; label : string ; icon : React . ReactNode } [ ] = [
1617 { id : 'windows' , label : 'Windows' , icon : < Monitor size = { 16 } /> } ,
1718 { id : 'linux' , label : 'Linux' , icon : < Terminal size = { 16 } /> } ,
1819 { id : 'mac' , label : 'macOS' , icon : < Apple size = { 16 } /> } ,
1920] ;
2021
21- const downloads : Record < Platform , { name : string ; file : string ; size : string ; format : string ; available : boolean ; note ?: string } > = {
22- windows : { name : 'guIDE for Windows' , file : 'https://github.com/FileShot/guIDE/releases/download/v2.4.3/guIDE-Setup.exe' , size : '~180 MB' , format : 'NSIS Installer (.exe)' , available : true } ,
23- linux : { name : 'guIDE for Linux' , file : 'https://github.com/FileShot/guIDE/releases/download/v2.4.3/guIDE-Linux-x64.tar.gz' , size : '~149 MB' , format : 'Portable Archive (.tar.gz)' , available : true , note : 'Extract and run ./guIDE' } ,
24- mac : { name : 'guIDE for macOS' , file : '#' , size : 'TBD' , format : 'DMG (Intel + Apple Silicon)' , available : false , note : 'macOS builds coming soon via CI/CD' } ,
22+ const BASE = `https://github.com/FileShot/guIDE/releases/download/v${ CURRENT_VERSION } ` ;
23+
24+ const downloads : Record < Platform , Record < Variant , { name : string ; file : string ; size : string ; format : string ; available : boolean ; note ?: string } > > = {
25+ windows : {
26+ standard : { name : 'guIDE for Windows' , file : `${ BASE } /guIDE-Setup-${ CURRENT_VERSION } .exe` , size : '~180 MB' , format : 'NSIS Installer (.exe)' , available : true } ,
27+ cuda : { name : 'guIDE for Windows · CUDA Edition' , file : `${ BASE } /guIDE-CUDA-Setup-${ CURRENT_VERSION } .exe` , size : '~450 MB' , format : 'NSIS Installer (.exe)' , available : true , note : 'Includes NVIDIA CUDA binaries — larger download, best GPU performance' } ,
28+ } ,
29+ linux : {
30+ standard : { name : 'guIDE for Linux' , file : `${ BASE } /guIDE-${ CURRENT_VERSION } -x86_64.AppImage` , size : '~150 MB' , format : 'AppImage' , available : true } ,
31+ cuda : { name : 'guIDE for Linux · CUDA Edition' , file : `${ BASE } /guIDE-CUDA-${ CURRENT_VERSION } -x86_64.AppImage` , size : '~420 MB' , format : 'AppImage' , available : true , note : 'Includes NVIDIA CUDA binaries — requires CUDA 12+ and drivers 525+' } ,
32+ } ,
33+ mac : {
34+ standard : { name : 'guIDE for macOS' , file : `${ BASE } /guIDE-${ CURRENT_VERSION } -x64.dmg` , size : '~180 MB' , format : 'DMG (Intel + Apple Silicon)' , available : true } ,
35+ cuda : { name : 'guIDE for macOS' , file : `${ BASE } /guIDE-${ CURRENT_VERSION } -x64.dmg` , size : '~180 MB' , format : 'DMG (Intel + Apple Silicon)' , available : true } ,
36+ } ,
2537} ;
2638
2739const requirementsByPlatform : Record < Platform , { icon : React . ReactNode ; label : string ; value : string } [ ] > = {
2840 windows : [
2941 { icon : < Monitor size = { 18 } /> , label : 'OS' , value : 'Windows 10 or later (64-bit)' } ,
3042 { icon : < Cpu size = { 18 } /> , label : 'CPU' , value : 'x86-64 processor' } ,
31- { icon : < HardDrive size = { 18 } /> , label : 'Storage' , value : '500 MB for the application ' } ,
43+ { icon : < HardDrive size = { 18 } /> , label : 'Storage' , value : '500 MB (Standard) · 1.2 GB (CUDA) ' } ,
3244 { icon : < HardDrive size = { 18 } /> , label : 'RAM' , value : '8 GB minimum, 16 GB recommended' } ,
33- { icon : < Cpu size = { 18 } /> , label : 'GPU (Optional) ' , value : 'NVIDIA GPU with 4+ GB VRAM for local AI ' } ,
45+ { icon : < Cpu size = { 18 } /> , label : 'GPU' , value : 'NVIDIA GPU with 4+ GB VRAM — use CUDA build for hardware acceleration ' } ,
3446 ] ,
3547 linux : [
3648 { icon : < Terminal size = { 18 } /> , label : 'OS' , value : 'Ubuntu 20.04+, Fedora 36+, or equivalent (64-bit)' } ,
3749 { icon : < Cpu size = { 18 } /> , label : 'CPU' , value : 'x86-64 processor' } ,
38- { icon : < HardDrive size = { 18 } /> , label : 'Storage' , value : '500 MB for the application ' } ,
50+ { icon : < HardDrive size = { 18 } /> , label : 'Storage' , value : '500 MB (Standard) · 1.1 GB (CUDA) ' } ,
3951 { icon : < HardDrive size = { 18 } /> , label : 'RAM' , value : '8 GB minimum, 16 GB recommended' } ,
40- { icon : < Cpu size = { 18 } /> , label : 'GPU (Optional) ' , value : 'NVIDIA GPU with 4+ GB VRAM for local AI ( CUDA required) ' } ,
52+ { icon : < Cpu size = { 18 } /> , label : 'GPU' , value : 'NVIDIA GPU with 4+ GB VRAM · CUDA 12+ required for CUDA build ' } ,
4153 ] ,
4254 mac : [
4355 { icon : < Apple size = { 18 } /> , label : 'OS' , value : 'macOS 12 Monterey or later' } ,
4456 { icon : < Cpu size = { 18 } /> , label : 'CPU' , value : 'Intel x64 or Apple Silicon (M1/M2/M3/M4)' } ,
4557 { icon : < HardDrive size = { 18 } /> , label : 'Storage' , value : '500 MB for the application' } ,
4658 { icon : < HardDrive size = { 18 } /> , label : 'RAM' , value : '8 GB minimum, 16 GB recommended' } ,
47- { icon : < Cpu size = { 18 } /> , label : 'GPU' , value : 'Metal-compatible GPU for local AI ( Apple Silicon recommended) ' } ,
59+ { icon : < Cpu size = { 18 } /> , label : 'GPU' , value : 'Metal-compatible GPU · Apple Silicon recommended for best performance ' } ,
4860 ] ,
4961} ;
5062
5163export default function DownloadPage ( ) {
5264 const [ platform , setPlatform ] = useState < Platform > ( 'windows' ) ;
53- const dl = downloads [ platform ] ;
65+ const [ variant , setVariant ] = useState < Variant > ( 'standard' ) ;
66+
67+ const hasCuda = platform === 'windows' || platform === 'linux' ;
68+ const activeVariant : Variant = hasCuda ? variant : 'standard' ;
69+ const dl = downloads [ platform ] [ activeVariant ] ;
5470 const reqs = requirementsByPlatform [ platform ] ;
5571
72+ const handlePlatformChange = ( p : Platform ) => {
73+ setPlatform ( p ) ;
74+ if ( p === 'mac' ) setVariant ( 'standard' ) ;
75+ } ;
76+
5677 const trackDownload = ( dlPlatform : Platform ) => {
5778 fetch ( '/api/analytics/track' , {
5879 method : 'POST' ,
@@ -98,11 +119,11 @@ export default function DownloadPage() {
98119
99120 { /* Platform Tabs */ }
100121 < FadeIn delay = { 0.05 } >
101- < div className = "flex gap-1 p-1 rounded-xl bg-white/[0.03] border border-white/[0.06] mb-8 " >
122+ < div className = "flex gap-1 p-1 rounded-xl bg-white/[0.03] border border-white/[0.06] mb-4 " >
102123 { platforms . map ( ( p ) => (
103124 < button
104125 key = { p . id }
105- onClick = { ( ) => setPlatform ( p . id ) }
126+ onClick = { ( ) => handlePlatformChange ( p . id ) }
106127 className = { `flex-1 flex items-center justify-center gap-2 py-2.5 px-4 rounded-lg text-sm font-medium transition-all duration-200 ${
107128 platform === p . id
108129 ? 'bg-accent text-white shadow-lg shadow-accent/20'
@@ -116,6 +137,42 @@ export default function DownloadPage() {
116137 </ div >
117138 </ FadeIn >
118139
140+ { /* Variant Toggle — Windows + Linux only */ }
141+ { hasCuda ? (
142+ < FadeIn delay = { 0.07 } >
143+ < div className = "flex items-center gap-2 mb-8" >
144+ < button
145+ onClick = { ( ) => setVariant ( 'standard' ) }
146+ className = { `flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-all border ${
147+ activeVariant === 'standard'
148+ ? 'border-white/20 bg-white/[0.05] text-white'
149+ : 'border-white/[0.06] text-neutral-500 hover:text-neutral-300 hover:border-white/10'
150+ } `}
151+ >
152+ Standard
153+ </ button >
154+ < button
155+ onClick = { ( ) => setVariant ( 'cuda' ) }
156+ className = { `flex items-center gap-2 px-4 py-2 rounded-lg text-sm font-medium transition-all border ${
157+ activeVariant === 'cuda'
158+ ? 'border-green-500/40 bg-green-500/[0.07] text-green-400'
159+ : 'border-white/[0.06] text-neutral-500 hover:text-neutral-300 hover:border-white/10'
160+ } `}
161+ >
162+ < Zap size = { 13 } />
163+ NVIDIA CUDA
164+ </ button >
165+ < span className = "ml-1 text-xs text-neutral-600" >
166+ { activeVariant === 'cuda'
167+ ? 'Requires NVIDIA GPU · CUDA 12+'
168+ : 'Works on any hardware · smaller download' }
169+ </ span >
170+ </ div >
171+ </ FadeIn >
172+ ) : (
173+ < div className = "mb-8" />
174+ ) }
175+
119176 { /* Download Card */ }
120177 < FadeIn delay = { 0.1 } >
121178 < div className = "rounded-2xl border border-white/[0.06] bg-white/[0.02] p-8 mb-10" >
@@ -170,20 +227,20 @@ export default function DownloadPage() {
170227 </ div >
171228 </ FadeIn >
172229
173- { /* SmartScreen Warning ( Windows only) */ }
230+ { /* Windows SmartScreen note */ }
174231 { platform === 'windows' && (
175232 < FadeIn delay = { 0.2 } >
176233 < div className = "rounded-xl border border-yellow-500/20 bg-yellow-500/[0.03] p-6 mb-10" >
177234 < div className = "flex items-start gap-3" >
178235 < AlertTriangle size = { 18 } className = "text-yellow-400 mt-0.5 flex-shrink-0" />
179236 < div >
180237 < h4 className = "text-sm font-semibold text-white mb-1" >
181- Windows SmartScreen Warning
238+ Windows SmartScreen
182239 </ h4 >
183240 < p className = "text-sm text-neutral-400 leading-relaxed" >
184- guIDE is not yet code-signed. Windows may display a SmartScreen warning
185- when you run the installer. This is normal for independent software.
186- Click < strong className = "text-neutral-300" > “More info”</ strong > →{ ' ' }
241+ Windows may show a SmartScreen prompt the first time you run the installer
242+ while our certificate builds trust reputation. Click { ' ' }
243+ < strong className = "text-neutral-300" > “More info”</ strong > →{ ' ' }
187244 < strong className = "text-neutral-300" > “Run anyway”</ strong > to proceed.
188245 </ p >
189246 </ div >
@@ -198,15 +255,21 @@ export default function DownloadPage() {
198255 < div className = "rounded-xl border border-white/[0.06] bg-white/[0.02] p-6 mb-10" >
199256 < h4 className = "text-sm font-semibold text-white mb-3" > Installation</ h4 >
200257 < div className = "bg-[#0d0d0d] rounded-lg p-4 font-mono text-sm text-neutral-300 space-y-1" >
201- < p className = "text-neutral-500" > # Extract the archive</ p >
202- < p > tar -xzf guIDE-Linux-x64.tar.gz</ p >
203- < p className = "text-neutral-500 mt-3" > # Run guIDE</ p >
204- < p > cd guIDE-{ CURRENT_VERSION } -x64</ p >
205- < p > ./guide-ide</ p >
258+ < p className = "text-neutral-500" > # Make executable and run</ p >
259+ < p > chmod +x { activeVariant === 'cuda'
260+ ? `guIDE-CUDA-${ CURRENT_VERSION } -x86_64.AppImage`
261+ : `guIDE-${ CURRENT_VERSION } -x86_64.AppImage` }
262+ </ p >
263+ < p > ./{ activeVariant === 'cuda'
264+ ? `guIDE-CUDA-${ CURRENT_VERSION } -x86_64.AppImage`
265+ : `guIDE-${ CURRENT_VERSION } -x86_64.AppImage` }
266+ </ p >
206267 </ div >
207- < p className = "text-xs text-neutral-500 mt-3" >
208- For NVIDIA GPU acceleration, ensure you have CUDA 12+ and the latest drivers installed.
209- </ p >
268+ { activeVariant === 'cuda' && (
269+ < p className = "text-xs text-neutral-500 mt-3" >
270+ CUDA build requires NVIDIA drivers 525+ and CUDA Toolkit 12.0+.
271+ </ p >
272+ ) }
210273 </ div >
211274 </ FadeIn >
212275 ) }
0 commit comments