fix: always create release on every build

swadhinbiswas committed 9 months ago
92a9dfd
1 parent b20e79e
commit 92a9dfd
4 files changed
+1187 -101
β–Ό.github/workflows/build.yml
+12-5
69
69
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
70
70
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
71
71
with:
72
- tagName: v__VERSION__
73
- releaseName: 'ChanDesk Pro v__VERSION__'
74
- releaseBody: 'See the assets to download and install this version.'
75
- releaseDraft: true
76
- prerelease: false
72
+ tagName: v${{ github.run_number }}-${{ github.sha }}
73
+ releaseName: 'ChanDesk Pro Build #${{ github.run_number }}'
74
+ releaseBody: |
75
+ ## πŸš€ ChanDesk Pro - Automated Build
76
+
77
+ **Commit:** ${{ github.sha }}
78
+ **Branch:** ${{ github.ref_name }}
79
+
80
+ Download the installer for your platform below.
81
+ releaseDraft: false
82
+ prerelease: true
83
+ includeRelease: true
77
84
args: ${{ matrix.args }}
78
85
79
86
- name: Upload artifacts
80
87
β–ΌREADME.md
+151-95
1
1
<div align="center">
2
2
<img src="src-tauri/icons/128x128.png" alt="ChanDesk Pro Logo" width="128" height="128" />
3
3
<h1>πŸ–₯️ ChanDesk Pro</h1>
4
- <p><strong>The Ultimate Desktop Client for Imageboards</strong></p>
5
- <p>A blazing-fast, modern desktop app for browsing 4chan, 7chan, and more β€” with premium UI and powerful features.</p>
4
+ <h3>The Ultimate Desktop Client for Imageboards</h3>
5
+ <p>A blazing-fast, privacy-focused desktop app for browsing 4chan with a premium UI and powerful features.</p>
6
+
6
7
<p>
7
8
<a href="https://github.com/swadhinbiswas/ChanDeskPro/releases/latest">
8
- <img src="https://img.shields.io/badge/version-0.1.0-blue?style=for-the-badge&logo=github" alt="Version" />
9
+ <img src="https://img.shields.io/github/v/release/swadhinbiswas/ChanDeskPro?style=for-the-badge&logo=github&color=7c3aed" alt="Release" />
10
+ </a>
11
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/releases">
12
+ <img src="https://img.shields.io/github/downloads/swadhinbiswas/ChanDeskPro/total?style=for-the-badge&logo=github&color=10b981" alt="Downloads" />
9
13
</a>
10
- <a href="https://gitlab.com/swadhinbiswas/chandeskpro">
11
- <img src="https://img.shields.io/badge/GitLab-Mirror-orange?style=for-the-badge&logo=gitlab" alt="GitLab" />
14
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/stargazers">
15
+ <img src="https://img.shields.io/github/stars/swadhinbiswas/ChanDeskPro?style=for-the-badge&logo=github&color=f59e0b" alt="Stars" />
12
16
</a>
13
17
<a href="LICENSE">
14
- <img src="https://img.shields.io/badge/license-MIT-green?style=for-the-badge" alt="License" />
18
+ <img src="https://img.shields.io/badge/license-MIT-blue?style=for-the-badge" alt="License" />
15
19
</a>
16
- <img src="https://img.shields.io/badge/tauri-2.0-orange?style=for-the-badge&logo=tauri" alt="Tauri" />
17
- <img src="https://img.shields.io/badge/platforms-linux%20|%20windows%20|%20macos%20|%20android%20|%20ios-purple?style=for-the-badge" alt="Platforms" />
20
+ </p>
21
+
22
+ <p>
23
+ <img src="https://img.shields.io/badge/Tauri-2.0-FFC131?style=flat-square&logo=tauri&logoColor=white" alt="Tauri" />
24
+ <img src="https://img.shields.io/badge/Rust-000000?style=flat-square&logo=rust&logoColor=white" alt="Rust" />
25
+ <img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" />
26
+ <img src="https://img.shields.io/badge/React-61DAFB?style=flat-square&logo=react&logoColor=black" alt="React" />
27
+ </p>
28
+
29
+ <p>
30
+ <a href="https://swadhinbiswas.github.io/ChanDeskPro/">🌐 Website</a> β€’
31
+ <a href="#-quick-start">⚑ Quick Start</a> β€’
32
+ <a href="#-features">✨ Features</a> β€’
33
+ <a href="#-downloads">πŸ“₯ Downloads</a> β€’
34
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/discussions">πŸ’¬ Community</a>
18
35
</p>
19
36
</div>
20
37
21
38
---
22
39
40
+<div align="center">
41
+ <table>
42
+ <tr>
43
+ <td align="center" width="400">
44
+ <img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/palette/macchiato.png" width="400" alt="Theme Preview" />
45
+ <br />
46
+ <sub><b>🎨 Beautiful Themes</b></sub>
47
+ </td>
48
+ <td align="center" width="400">
49
+ <img src="https://img.shields.io/badge/⚑_Blazing_Fast-Rust_Powered-orange?style=for-the-badge" height="60" alt="Fast" />
50
+ <br />
51
+ <sub><b>πŸš€ Native Performance</b></sub>
52
+ </td>
53
+ </tr>
54
+ </table>
55
+</div>
56
+
57
+---
58
+
23
59
> [!IMPORTANT]
24
-> **DISCLAIMER & CONTENT WARNING**
25
->
26
-> 1. **Unofficial Client**: This application is an unofficial 3rd-party client. It is not affiliated with, endorsed by, or connected to 4chan.org or any other imageboard.
27
-> 2. **User Responsibility**: By using this software, you agree to abide by the Terms of Service and Rules of the respective imageboards you browse.
28
-> 3. **18+ Content**: Some boards may contain content suitable only for adults. Accessing such content is strictly for users 18 years of age or older (or the legal age of majority in your jurisdiction). The developer assumes no liability for content accessed through this application.
60
+> **DISCLAIMER**: This is an unofficial third-party client. Not affiliated with 4chan.org.
61
+> Some boards contain 18+ content β€” user discretion is advised.
29
62
30
63
---
31
64
32
65
## ✨ Features
33
66
67
+<table>
68
+<tr>
69
+<td width="50%">
70
+
34
71
### 🎨 Premium Experience
35
-- **Modern UI**: Sleek dark interface inspired by Discord, built with **shadcn/ui**.
36
-- **Theming**: Choose from Nord, Dracula, Catppuccin, and more, or create custom themes.
37
-- **Smooth Animations**: Powered by Framer Motion for a fluid feel.
72
+- **Modern Dark UI** β€” Sleek interface built with shadcn/ui
73
+- **10+ Themes** β€” Nord, Dracula, Catppuccin, and more
74
+- **Smooth Animations** β€” Framer Motion powered transitions
38
75
39
-### πŸš€ Powerful Browsing
40
-- **Grid Catalog**: Visualize threads with high-res thumbnails.
41
-- **Global Search**: Instantly find boards and threads.
42
-- **Smart Filtering**: Filter posts by keywords, tripcodes, or Regex.
43
-- **Multi-Tab**: Browse multiple threads and catalogs simultaneously like a web browser.
76
+### πŸš€ Power Browsing
77
+- **Grid Catalog** β€” Visual thread browsing with thumbnails
78
+- **Global Search** β€” Find boards and threads instantly
79
+- **Smart Filtering** β€” Keywords, tripcodes, regex support
80
+- **Multi-Tab** β€” Browser-style tabbed interface
81
+
82
+</td>
83
+<td width="50%">
44
84
45
85
### 🎬 Media & Tools
46
-- **Immersive Lightbox**: Double-click visuals for a deep-zoom fullscreen experience.
47
-- **Video Player**: Custom controls, loop, and speed settings.
48
-- **Offline Caching**: Automatically caches visited threads for offline reading.
49
-- **Thread Watcher**: Get desktop notifications when watched threads update.
86
+- **Immersive Lightbox** β€” Fullscreen zoom experience
87
+- **Video Player** β€” Custom controls, loop, speed
88
+- **Offline Cache** β€” Browse threads without internet
89
+- **Thread Watcher** β€” Desktop notifications for updates
90
+
91
+### πŸ”’ Privacy First
92
+- **No Tracking** β€” Zero analytics or telemetry
93
+- **No Account** β€” Completely anonymous browsing
94
+- **Open Source** β€” Fully auditable codebase
95
+- **Direct Connection** β€” No third-party servers
96
+
97
+</td>
98
+</tr>
99
+</table>
50
100
51
101
---
52
102
53
-## πŸ”’ Security & Privacy
103
+## πŸ“₯ Downloads
54
104
55
-We take your privacy seriously. Here is how ChanDesk Pro protects you:
105
+<div align="center">
106
+
107
+| Platform | Download | Architecture |
108
+|:--------:|:--------:|:------------:|
109
+| **πŸͺŸ Windows** | [**Download .exe**](https://github.com/swadhinbiswas/ChanDeskPro/releases/latest) | x64, ARM64 |
110
+| **🍎 macOS** | [**Download .dmg**](https://github.com/swadhinbiswas/ChanDeskPro/releases/latest) | Intel, Apple Silicon |
111
+| **🐧 Linux** | [**Download**](https://github.com/swadhinbiswas/ChanDeskPro/releases/latest) | .deb, .AppImage, .rpm |
56
112
57
-### πŸ›‘οΈ Built-in Proxy
58
-We use a local Rust-based proxy to route image and video requests.
59
-- **Function**: Bypasses CORS restrictions enforced by browsers.
60
-- **Privacy**: Your IP address is sent to the imageboard servers (standard behavior), but headers are stripped of tracking referrers.
61
-- **Safety**: No data is ever routed through 3rd-party intermediate servers. It goes strictly `You -> Imageboard`.
113
+</div>
62
114
63
-### πŸ”‘ No Tokens Required
64
-- **Anonymous**: 4chan and most supported imageboards are anonymous. You do **not** need an account or API token.
65
-- **Recaptcha**: Posting uses the native Captcha v2 widget when required. No specialized "pass" is needed (though 4chan Pass support is planned).
115
+> [!TIP]
116
+> **Linux Users**: If using AppImage, make it executable first: `chmod +x ChanDesk*.AppImage`
66
117
67
118
---
68
119
69
-## πŸ“¦ Downloads
120
+## ⚑ Quick Start
70
121
71
-| Platform | Installer | Portable |
72
-|----------|-----------|----------|
73
-| **Windows** | [`ChanDesk-Setup-x64.exe`](../../releases/latest) | [`ChanDesk-x64.nsis.zip`](../../releases/latest) |
74
-| **macOS** | [`ChanDesk-x64.dmg`](../../releases/latest) | [`ChanDesk.app.tar.gz`](../../releases/latest) |
75
-| **Linux** | [`ChanDesk_amd64.deb`](../../releases/latest) | [`ChanDesk.AppImage`](../../releases/latest) |
76
-| **Android** | [`ChanDesk.apk`](../../releases/latest) | - |
122
+### Install & Run
123
+1. Download the installer for your OS from [**Releases**](https://github.com/swadhinbiswas/ChanDeskPro/releases/latest)
124
+2. Run the installer
125
+3. Launch ChanDesk Pro and start browsing!
126
+
127
+### ⌨️ Keyboard Shortcuts
128
+
129
+| Action | Shortcut |
130
+|--------|----------|
131
+| Scroll posts | `J` / `K` |
132
+| Fullscreen image | `Alt+F` or `Double Click` |
133
+| Close modals | `Esc` |
134
+| New tab | `Ctrl+T` |
77
135
78
136
---
79
137
80
-## πŸš€ Quick Start
138
+## πŸ› οΈ Build from Source
81
139
82
-### Installation
83
-1. Download the installer for your OS from the [Releases](../../releases/latest) page.
84
-2. Run the installer.
85
-3. (Linux) If using AppImage, allow execution: `chmod +x ChanDesk.AppImage`.
140
+**Prerequisites:** [Bun](https://bun.sh), [Rust](https://rustup.rs)
86
141
87
-### Usage
88
-- **Navigation**: Use the sidebar to switch boards. Click the "Star" to favorite.
89
-- **Shortcuts**:
90
- - `J` / `K`: Scroll posts
91
- - `Alt+F` / `Double Click`: Fullscreen Image
92
- - `Esc`: Close modals
93
- - `Ctrl+T`: New Tab
142
+```bash
143
+# Clone the repository
144
+git clone https://github.com/swadhinbiswas/ChanDeskPro.git
145
+cd ChanDeskPro
94
146
147
+# Install dependencies
148
+bun install
95
149
96
-## πŸ—ΊοΈ Roadmap
150
+# Run in development mode
151
+bun run tauri:dev
97
152
98
-We are constantly improving ChanDesk Pro. Here is what's coming next:
153
+# Build for production
154
+bun run tauri:build
155
+```
99
156
100
-- [ ] **Advanced Replying**: Image uploading, rich text tools, and saved replies.
101
-- [ ] **Expanded Video Support**: Native support for more video platforms (YouTube, Twitch, Streamable) and direct file streaming from other archives.
102
-- [ ] **4chan Pass**: Login support for bypassing captchas.
103
-- [ ] **Plugin System**: Community-created extensions.
157
+See [BUILD.md](BUILD.md) for detailed build instructions and troubleshooting.
104
158
105
159
---
106
160
107
-## 🀝 Community & Support
108
-
109
-### Finding Other Users
110
-The best place to discuss ChanDesk Pro:
111
-- **GitHub Discussions**: [Ask questions & share feedback](../../discussions)
112
-- **Issue Tracker**: [Report bugs here](../../issues)
161
+## πŸ—ΊοΈ Roadmap
113
162
114
-### Contributing
115
-We welcome contributions!
116
-1. Fork the repository.
117
-2. Create a feature branch (`git checkout -b feature/amazing-feature`).
118
-3. Commit your changes.
119
-4. Open a Pull Request.
163
+- [ ] πŸ“€ **Advanced Replying** β€” Image upload, rich text
164
+- [ ] πŸŽ₯ **Expanded Video** β€” YouTube, Twitch embeds
165
+- [ ] πŸ”‘ **4chan Pass** β€” Captcha bypass support
166
+- [ ] πŸ”Œ **Plugin System** β€” Community extensions
120
167
121
168
---
122
169
123
-## πŸ› οΈ Build From Source
170
+## 🀝 Contributing
124
171
125
-**Prerequisites:** [Bun](https://bun.sh), [Rust](https://rustup.rs), and OS build tools.
172
+We welcome contributions! Here's how to get involved:
126
173
127
-```bash
128
-# 1. Clone (GitHub)
129
-git clone https://github.com/swadhinbiswas/ChanDeskPro.git
130
-# OR (GitLab)
131
-git clone https://gitlab.com/swadhinbiswas/chandeskpro.git
174
+1. **Fork** the repository
175
+2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
176
+3. **Commit** your changes
177
+4. **Push** to the branch
178
+5. **Open** a Pull Request
132
179
133
-cd ChanDeskPro
180
+See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
134
181
135
-# 2. Install
136
-bun install
182
+---
137
183
138
-# 3. Develop
139
-bun run tauri:dev
184
+## πŸ”’ Security & Privacy
140
185
141
-# 4. Build Production
142
-bun run tauri:build
143
-```
186
+| Feature | Description |
187
+|---------|-------------|
188
+| πŸ›‘οΈ **Built-in CORS Proxy** | Routes requests through local Rust proxy, strips tracking headers |
189
+| πŸ”‘ **No API Tokens** | Anonymous by design, no accounts needed |
190
+| πŸ” **No Telemetry** | Zero data collection or analytics |
191
+| 🌐 **Direct Connection** | `You β†’ Imageboard` β€” no intermediaries |
144
192
145
193
---
146
194
147
-<div align="center">
148
- <p>Made with ❀️ for the community.</p>
149
- <p>If you like this project, please give it a ⭐!</p>
150
-</div>
195
+## πŸ“œ License
196
+
197
+This project is licensed under the **MIT License** β€” see the [LICENSE](LICENSE) file for details.
151
198
152
199
---
153
200
154
-<p align="center">
155
- <a href="https://github.com/swadhinbiswas/ChanDeskPro">GitHub</a> β€’
156
- <a href="https://gitlab.com/swadhinbiswas/chandeskpro">GitLab Mirror</a>
157
-</p>
201
+<div align="center">
202
+ <p>
203
+ <b>If you find ChanDesk Pro useful, please consider giving it a ⭐!</b>
204
+ </p>
205
+ <p>
206
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro">GitHub</a> β€’
207
+ <a href="https://gitlab.com/swadhinbiswas/chandeskpro">GitLab Mirror</a> β€’
208
+ <a href="https://swadhinbiswas.github.io/ChanDeskPro/">Website</a>
209
+ </p>
210
+ <p>
211
+ <sub>Made with ❀️ by the community</sub>
212
+ </p>
213
+</div>
158
214
β–Όdocs/favicon.png
+0-0
Binary file not shown.
β–Όdocs/index.html
+1024-0
1
+<!DOCTYPE html>
2
+<html lang="en">
3
+
4
+<head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>ChanDesk Pro - The Ultimate Imageboard Desktop Client</title>
8
+ <meta name="description"
9
+ content="A blazing-fast, modern desktop app for browsing 4chan with premium UI, powerful features, and privacy-first design. Available for Windows, macOS, and Linux.">
10
+ <meta name="keywords" content="4chan, desktop client, imageboard browser, tauri, rust, privacy, anonymous">
11
+ <meta property="og:title" content="ChanDesk Pro - The Ultimate Imageboard Desktop Client">
12
+ <meta property="og:description" content="Blazing-fast desktop app for 4chan with premium UI and powerful features.">
13
+ <meta property="og:type" content="website">
14
+ <meta property="og:url" content="https://swadhinbiswas.github.io/ChanDeskPro/">
15
+ <link rel="icon" type="image/png" href="favicon.png">
16
+ <link rel="preconnect" href="https://fonts.googleapis.com">
17
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
18
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap"
19
+ rel="stylesheet">
20
+ <style>
21
+ :root {
22
+ --bg-primary: #0a0a0f;
23
+ --bg-secondary: #12121a;
24
+ --bg-card: #1a1a24;
25
+ --bg-glass: rgba(26, 26, 36, 0.7);
26
+ --text-primary: #ffffff;
27
+ --text-secondary: #a0a0b0;
28
+ --text-muted: #6b6b7b;
29
+ --accent-primary: #7c3aed;
30
+ --accent-secondary: #a855f7;
31
+ --accent-gradient: linear-gradient(135deg, #7c3aed 0%, #a855f7 50%, #ec4899 100%);
32
+ --accent-glow: rgba(124, 58, 237, 0.4);
33
+ --success: #10b981;
34
+ --border: rgba(255, 255, 255, 0.08);
35
+ --border-hover: rgba(255, 255, 255, 0.15);
36
+ }
37
+
38
+ * {
39
+ margin: 0;
40
+ padding: 0;
41
+ box-sizing: border-box;
42
+ }
43
+
44
+ html {
45
+ scroll-behavior: smooth;
46
+ }
47
+
48
+ body {
49
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
50
+ background: var(--bg-primary);
51
+ color: var(--text-primary);
52
+ line-height: 1.6;
53
+ overflow-x: hidden;
54
+ }
55
+
56
+ /* Background Effects */
57
+ .bg-grid {
58
+ position: fixed;
59
+ inset: 0;
60
+ background-image:
61
+ linear-gradient(rgba(124, 58, 237, 0.03) 1px, transparent 1px),
62
+ linear-gradient(90deg, rgba(124, 58, 237, 0.03) 1px, transparent 1px);
63
+ background-size: 60px 60px;
64
+ pointer-events: none;
65
+ z-index: -1;
66
+ }
67
+
68
+ .bg-glow {
69
+ position: fixed;
70
+ width: 600px;
71
+ height: 600px;
72
+ border-radius: 50%;
73
+ filter: blur(120px);
74
+ opacity: 0.4;
75
+ pointer-events: none;
76
+ z-index: -1;
77
+ }
78
+
79
+ .bg-glow-1 {
80
+ top: -200px;
81
+ left: -100px;
82
+ background: var(--accent-primary);
83
+ }
84
+
85
+ .bg-glow-2 {
86
+ bottom: 20%;
87
+ right: -200px;
88
+ background: #ec4899;
89
+ opacity: 0.25;
90
+ }
91
+
92
+ /* Navigation */
93
+ nav {
94
+ position: fixed;
95
+ top: 0;
96
+ left: 0;
97
+ right: 0;
98
+ z-index: 1000;
99
+ padding: 1rem 2rem;
100
+ backdrop-filter: blur(20px);
101
+ background: rgba(10, 10, 15, 0.8);
102
+ border-bottom: 1px solid var(--border);
103
+ }
104
+
105
+ .nav-container {
106
+ max-width: 1200px;
107
+ margin: 0 auto;
108
+ display: flex;
109
+ justify-content: space-between;
110
+ align-items: center;
111
+ }
112
+
113
+ .logo {
114
+ display: flex;
115
+ align-items: center;
116
+ gap: 0.75rem;
117
+ font-weight: 700;
118
+ font-size: 1.25rem;
119
+ text-decoration: none;
120
+ color: var(--text-primary);
121
+ }
122
+
123
+ .logo-icon {
124
+ width: 36px;
125
+ height: 36px;
126
+ background: var(--accent-gradient);
127
+ border-radius: 10px;
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ font-size: 1.2rem;
132
+ }
133
+
134
+ .nav-links {
135
+ display: flex;
136
+ gap: 2rem;
137
+ list-style: none;
138
+ }
139
+
140
+ .nav-links a {
141
+ color: var(--text-secondary);
142
+ text-decoration: none;
143
+ font-weight: 500;
144
+ font-size: 0.95rem;
145
+ transition: color 0.2s;
146
+ }
147
+
148
+ .nav-links a:hover {
149
+ color: var(--text-primary);
150
+ }
151
+
152
+ .nav-cta {
153
+ display: flex;
154
+ gap: 1rem;
155
+ }
156
+
157
+ /* Buttons */
158
+ .btn {
159
+ display: inline-flex;
160
+ align-items: center;
161
+ justify-content: center;
162
+ gap: 0.5rem;
163
+ padding: 0.75rem 1.5rem;
164
+ border-radius: 12px;
165
+ font-weight: 600;
166
+ font-size: 0.95rem;
167
+ text-decoration: none;
168
+ transition: all 0.3s ease;
169
+ cursor: pointer;
170
+ border: none;
171
+ }
172
+
173
+ .btn-primary {
174
+ background: var(--accent-gradient);
175
+ color: white;
176
+ box-shadow: 0 4px 20px var(--accent-glow);
177
+ }
178
+
179
+ .btn-primary:hover {
180
+ transform: translateY(-2px);
181
+ box-shadow: 0 8px 30px var(--accent-glow);
182
+ }
183
+
184
+ .btn-secondary {
185
+ background: var(--bg-card);
186
+ color: var(--text-primary);
187
+ border: 1px solid var(--border);
188
+ }
189
+
190
+ .btn-secondary:hover {
191
+ background: var(--bg-secondary);
192
+ border-color: var(--border-hover);
193
+ }
194
+
195
+ .btn-lg {
196
+ padding: 1rem 2rem;
197
+ font-size: 1.1rem;
198
+ border-radius: 14px;
199
+ }
200
+
201
+ /* Hero Section */
202
+ .hero {
203
+ min-height: 100vh;
204
+ display: flex;
205
+ align-items: center;
206
+ padding: 8rem 2rem 4rem;
207
+ position: relative;
208
+ }
209
+
210
+ .hero-container {
211
+ max-width: 1200px;
212
+ margin: 0 auto;
213
+ display: grid;
214
+ grid-template-columns: 1fr 1.2fr;
215
+ gap: 4rem;
216
+ align-items: center;
217
+ }
218
+
219
+ .hero-content {
220
+ z-index: 1;
221
+ }
222
+
223
+ .badge {
224
+ display: inline-flex;
225
+ align-items: center;
226
+ gap: 0.5rem;
227
+ padding: 0.5rem 1rem;
228
+ background: var(--bg-glass);
229
+ border: 1px solid var(--border);
230
+ border-radius: 100px;
231
+ font-size: 0.85rem;
232
+ color: var(--text-secondary);
233
+ margin-bottom: 1.5rem;
234
+ backdrop-filter: blur(10px);
235
+ }
236
+
237
+ .badge-dot {
238
+ width: 8px;
239
+ height: 8px;
240
+ background: var(--success);
241
+ border-radius: 50%;
242
+ animation: pulse 2s infinite;
243
+ }
244
+
245
+ @keyframes pulse {
246
+
247
+ 0%,
248
+ 100% {
249
+ opacity: 1;
250
+ }
251
+
252
+ 50% {
253
+ opacity: 0.5;
254
+ }
255
+ }
256
+
257
+ .hero h1 {
258
+ font-size: clamp(2.5rem, 5vw, 4rem);
259
+ font-weight: 800;
260
+ line-height: 1.1;
261
+ margin-bottom: 1.5rem;
262
+ background: linear-gradient(135deg, #fff 0%, #a0a0b0 100%);
263
+ -webkit-background-clip: text;
264
+ -webkit-text-fill-color: transparent;
265
+ background-clip: text;
266
+ }
267
+
268
+ .hero h1 span {
269
+ background: var(--accent-gradient);
270
+ -webkit-background-clip: text;
271
+ background-clip: text;
272
+ }
273
+
274
+ .hero-description {
275
+ font-size: 1.2rem;
276
+ color: var(--text-secondary);
277
+ margin-bottom: 2rem;
278
+ max-width: 500px;
279
+ }
280
+
281
+ .hero-buttons {
282
+ display: flex;
283
+ gap: 1rem;
284
+ flex-wrap: wrap;
285
+ margin-bottom: 3rem;
286
+ }
287
+
288
+ .hero-stats {
289
+ display: flex;
290
+ gap: 3rem;
291
+ }
292
+
293
+ .stat {
294
+ text-align: left;
295
+ }
296
+
297
+ .stat-value {
298
+ font-size: 1.75rem;
299
+ font-weight: 700;
300
+ color: var(--text-primary);
301
+ }
302
+
303
+ .stat-label {
304
+ font-size: 0.9rem;
305
+ color: var(--text-muted);
306
+ }
307
+
308
+ /* Hero Image */
309
+ .hero-visual {
310
+ position: relative;
311
+ }
312
+
313
+ .app-preview {
314
+ width: 100%;
315
+ border-radius: 16px;
316
+ box-shadow:
317
+ 0 25px 50px -12px rgba(0, 0, 0, 0.5),
318
+ 0 0 0 1px var(--border);
319
+ background: var(--bg-card);
320
+ overflow: hidden;
321
+ }
322
+
323
+ .app-preview-header {
324
+ padding: 1rem;
325
+ background: var(--bg-secondary);
326
+ border-bottom: 1px solid var(--border);
327
+ display: flex;
328
+ gap: 0.5rem;
329
+ }
330
+
331
+ .app-preview-dot {
332
+ width: 12px;
333
+ height: 12px;
334
+ border-radius: 50%;
335
+ }
336
+
337
+ .dot-red {
338
+ background: #ff5f57;
339
+ }
340
+
341
+ .dot-yellow {
342
+ background: #ffbd2e;
343
+ }
344
+
345
+ .dot-green {
346
+ background: #28c840;
347
+ }
348
+
349
+ .app-preview-content {
350
+ height: 400px;
351
+ background: linear-gradient(180deg, var(--bg-card) 0%, var(--bg-secondary) 100%);
352
+ display: flex;
353
+ align-items: center;
354
+ justify-content: center;
355
+ position: relative;
356
+ overflow: hidden;
357
+ }
358
+
359
+ .app-preview-content::before {
360
+ content: '';
361
+ position: absolute;
362
+ inset: 0;
363
+ background:
364
+ linear-gradient(90deg, transparent 0%, rgba(124, 58, 237, 0.1) 50%, transparent 100%);
365
+ animation: shimmer 3s infinite;
366
+ }
367
+
368
+ @keyframes shimmer {
369
+ 0% {
370
+ transform: translateX(-100%);
371
+ }
372
+
373
+ 100% {
374
+ transform: translateX(100%);
375
+ }
376
+ }
377
+
378
+ .app-mockup {
379
+ display: grid;
380
+ grid-template-columns: 60px 1fr;
381
+ gap: 1px;
382
+ width: 90%;
383
+ height: 85%;
384
+ background: var(--border);
385
+ border-radius: 8px;
386
+ overflow: hidden;
387
+ }
388
+
389
+ .mockup-sidebar {
390
+ background: var(--bg-secondary);
391
+ padding: 1rem 0.5rem;
392
+ display: flex;
393
+ flex-direction: column;
394
+ gap: 0.5rem;
395
+ align-items: center;
396
+ }
397
+
398
+ .mockup-sidebar-item {
399
+ width: 40px;
400
+ height: 40px;
401
+ background: var(--bg-card);
402
+ border-radius: 8px;
403
+ opacity: 0.6;
404
+ }
405
+
406
+ .mockup-sidebar-item.active {
407
+ background: var(--accent-primary);
408
+ opacity: 1;
409
+ }
410
+
411
+ .mockup-main {
412
+ background: var(--bg-primary);
413
+ padding: 1rem;
414
+ display: grid;
415
+ grid-template-columns: repeat(3, 1fr);
416
+ gap: 0.75rem;
417
+ overflow: hidden;
418
+ }
419
+
420
+ .mockup-card {
421
+ background: var(--bg-card);
422
+ border-radius: 6px;
423
+ aspect-ratio: 1;
424
+ opacity: 0.8;
425
+ }
426
+
427
+ /* Features Section */
428
+ .features {
429
+ padding: 6rem 2rem;
430
+ position: relative;
431
+ }
432
+
433
+ .section-header {
434
+ text-align: center;
435
+ max-width: 700px;
436
+ margin: 0 auto 4rem;
437
+ }
438
+
439
+ .section-label {
440
+ display: inline-block;
441
+ padding: 0.4rem 1rem;
442
+ background: rgba(124, 58, 237, 0.15);
443
+ border: 1px solid rgba(124, 58, 237, 0.3);
444
+ border-radius: 100px;
445
+ font-size: 0.85rem;
446
+ font-weight: 600;
447
+ color: var(--accent-secondary);
448
+ margin-bottom: 1rem;
449
+ }
450
+
451
+ .section-header h2 {
452
+ font-size: clamp(2rem, 4vw, 3rem);
453
+ font-weight: 700;
454
+ margin-bottom: 1rem;
455
+ }
456
+
457
+ .section-header p {
458
+ font-size: 1.1rem;
459
+ color: var(--text-secondary);
460
+ }
461
+
462
+ .features-grid {
463
+ max-width: 1200px;
464
+ margin: 0 auto;
465
+ display: grid;
466
+ grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
467
+ gap: 1.5rem;
468
+ }
469
+
470
+ .feature-card {
471
+ padding: 2rem;
472
+ background: var(--bg-glass);
473
+ border: 1px solid var(--border);
474
+ border-radius: 20px;
475
+ backdrop-filter: blur(10px);
476
+ transition: all 0.3s ease;
477
+ }
478
+
479
+ .feature-card:hover {
480
+ border-color: var(--border-hover);
481
+ transform: translateY(-4px);
482
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
483
+ }
484
+
485
+ .feature-icon {
486
+ width: 56px;
487
+ height: 56px;
488
+ background: var(--accent-gradient);
489
+ border-radius: 14px;
490
+ display: flex;
491
+ align-items: center;
492
+ justify-content: center;
493
+ font-size: 1.5rem;
494
+ margin-bottom: 1.25rem;
495
+ }
496
+
497
+ .feature-card h3 {
498
+ font-size: 1.25rem;
499
+ font-weight: 600;
500
+ margin-bottom: 0.75rem;
501
+ }
502
+
503
+ .feature-card p {
504
+ color: var(--text-secondary);
505
+ font-size: 0.95rem;
506
+ }
507
+
508
+ /* Platforms Section */
509
+ .platforms {
510
+ padding: 6rem 2rem;
511
+ background: var(--bg-secondary);
512
+ }
513
+
514
+ .platforms-grid {
515
+ max-width: 900px;
516
+ margin: 0 auto;
517
+ display: grid;
518
+ grid-template-columns: repeat(3, 1fr);
519
+ gap: 2rem;
520
+ }
521
+
522
+ .platform-card {
523
+ padding: 2.5rem 2rem;
524
+ background: var(--bg-card);
525
+ border: 1px solid var(--border);
526
+ border-radius: 20px;
527
+ text-align: center;
528
+ transition: all 0.3s ease;
529
+ }
530
+
531
+ .platform-card:hover {
532
+ border-color: var(--accent-primary);
533
+ transform: translateY(-4px);
534
+ }
535
+
536
+ .platform-icon {
537
+ font-size: 3rem;
538
+ margin-bottom: 1rem;
539
+ }
540
+
541
+ .platform-card h3 {
542
+ font-size: 1.2rem;
543
+ font-weight: 600;
544
+ margin-bottom: 0.5rem;
545
+ }
546
+
547
+ .platform-card p {
548
+ font-size: 0.9rem;
549
+ color: var(--text-muted);
550
+ margin-bottom: 1.5rem;
551
+ }
552
+
553
+ /* Privacy Section */
554
+ .privacy {
555
+ padding: 6rem 2rem;
556
+ }
557
+
558
+ .privacy-container {
559
+ max-width: 1000px;
560
+ margin: 0 auto;
561
+ display: grid;
562
+ grid-template-columns: 1fr 1fr;
563
+ gap: 4rem;
564
+ align-items: center;
565
+ }
566
+
567
+ .privacy-content h2 {
568
+ font-size: 2.5rem;
569
+ font-weight: 700;
570
+ margin-bottom: 1.5rem;
571
+ }
572
+
573
+ .privacy-content p {
574
+ font-size: 1.1rem;
575
+ color: var(--text-secondary);
576
+ margin-bottom: 2rem;
577
+ }
578
+
579
+ .privacy-features {
580
+ display: flex;
581
+ flex-direction: column;
582
+ gap: 1rem;
583
+ }
584
+
585
+ .privacy-feature {
586
+ display: flex;
587
+ align-items: center;
588
+ gap: 1rem;
589
+ }
590
+
591
+ .privacy-check {
592
+ width: 32px;
593
+ height: 32px;
594
+ background: rgba(16, 185, 129, 0.15);
595
+ border-radius: 8px;
596
+ display: flex;
597
+ align-items: center;
598
+ justify-content: center;
599
+ color: var(--success);
600
+ font-size: 1.1rem;
601
+ }
602
+
603
+ .privacy-visual {
604
+ display: flex;
605
+ justify-content: center;
606
+ align-items: center;
607
+ }
608
+
609
+ .shield-icon {
610
+ width: 250px;
611
+ height: 250px;
612
+ background: var(--accent-gradient);
613
+ border-radius: 50%;
614
+ display: flex;
615
+ align-items: center;
616
+ justify-content: center;
617
+ font-size: 6rem;
618
+ box-shadow: 0 0 100px var(--accent-glow);
619
+ }
620
+
621
+ /* CTA Section */
622
+ .cta {
623
+ padding: 6rem 2rem;
624
+ text-align: center;
625
+ position: relative;
626
+ }
627
+
628
+ .cta-container {
629
+ max-width: 800px;
630
+ margin: 0 auto;
631
+ padding: 4rem;
632
+ background: var(--bg-glass);
633
+ border: 1px solid var(--border);
634
+ border-radius: 32px;
635
+ backdrop-filter: blur(20px);
636
+ position: relative;
637
+ overflow: hidden;
638
+ }
639
+
640
+ .cta-container::before {
641
+ content: '';
642
+ position: absolute;
643
+ top: 0;
644
+ left: 50%;
645
+ transform: translateX(-50%);
646
+ width: 80%;
647
+ height: 1px;
648
+ background: var(--accent-gradient);
649
+ }
650
+
651
+ .cta h2 {
652
+ font-size: clamp(2rem, 4vw, 2.5rem);
653
+ font-weight: 700;
654
+ margin-bottom: 1rem;
655
+ }
656
+
657
+ .cta p {
658
+ font-size: 1.1rem;
659
+ color: var(--text-secondary);
660
+ margin-bottom: 2rem;
661
+ }
662
+
663
+ .cta-buttons {
664
+ display: flex;
665
+ justify-content: center;
666
+ gap: 1rem;
667
+ flex-wrap: wrap;
668
+ }
669
+
670
+ /* Footer */
671
+ footer {
672
+ padding: 4rem 2rem 2rem;
673
+ border-top: 1px solid var(--border);
674
+ }
675
+
676
+ .footer-container {
677
+ max-width: 1200px;
678
+ margin: 0 auto;
679
+ display: flex;
680
+ justify-content: space-between;
681
+ align-items: center;
682
+ flex-wrap: wrap;
683
+ gap: 2rem;
684
+ }
685
+
686
+ .footer-links {
687
+ display: flex;
688
+ gap: 2rem;
689
+ }
690
+
691
+ .footer-links a {
692
+ color: var(--text-secondary);
693
+ text-decoration: none;
694
+ font-size: 0.95rem;
695
+ transition: color 0.2s;
696
+ }
697
+
698
+ .footer-links a:hover {
699
+ color: var(--text-primary);
700
+ }
701
+
702
+ .footer-copy {
703
+ color: var(--text-muted);
704
+ font-size: 0.9rem;
705
+ }
706
+
707
+ /* Responsive */
708
+ @media (max-width: 1024px) {
709
+ .hero-container {
710
+ grid-template-columns: 1fr;
711
+ text-align: center;
712
+ }
713
+
714
+ .hero-content {
715
+ order: 1;
716
+ }
717
+
718
+ .hero-visual {
719
+ order: 2;
720
+ }
721
+
722
+ .hero-description {
723
+ margin: 0 auto 2rem;
724
+ }
725
+
726
+ .hero-buttons {
727
+ justify-content: center;
728
+ }
729
+
730
+ .hero-stats {
731
+ justify-content: center;
732
+ }
733
+
734
+ .privacy-container {
735
+ grid-template-columns: 1fr;
736
+ text-align: center;
737
+ }
738
+
739
+ .privacy-features {
740
+ align-items: center;
741
+ }
742
+ }
743
+
744
+ @media (max-width: 768px) {
745
+ .nav-links {
746
+ display: none;
747
+ }
748
+
749
+ .platforms-grid {
750
+ grid-template-columns: 1fr;
751
+ }
752
+
753
+ .features-grid {
754
+ grid-template-columns: 1fr;
755
+ }
756
+
757
+ .hero-stats {
758
+ flex-direction: column;
759
+ gap: 1.5rem;
760
+ }
761
+
762
+ .footer-container {
763
+ flex-direction: column;
764
+ text-align: center;
765
+ }
766
+ }
767
+ </style>
768
+</head>
769
+
770
+<body>
771
+ <div class="bg-grid"></div>
772
+ <div class="bg-glow bg-glow-1"></div>
773
+ <div class="bg-glow bg-glow-2"></div>
774
+
775
+ <!-- Navigation -->
776
+ <nav>
777
+ <div class="nav-container">
778
+ <a href="#" class="logo">
779
+ <div class="logo-icon">πŸ“Ί</div>
780
+ <span>ChanDesk Pro</span>
781
+ </a>
782
+ <ul class="nav-links">
783
+ <li><a href="#features">Features</a></li>
784
+ <li><a href="#platforms">Platforms</a></li>
785
+ <li><a href="#privacy">Privacy</a></li>
786
+ <li><a href="https://github.com/swadhinbiswas/ChanDeskPro">GitHub</a></li>
787
+ </ul>
788
+ <div class="nav-cta">
789
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/releases/latest" class="btn btn-primary">Download
790
+ Now</a>
791
+ </div>
792
+ </div>
793
+ </nav>
794
+
795
+ <!-- Hero Section -->
796
+ <section class="hero">
797
+ <div class="hero-container">
798
+ <div class="hero-content">
799
+ <div class="badge">
800
+ <span class="badge-dot"></span>
801
+ <span>v0.1.0 Now Available for All Platforms</span>
802
+ </div>
803
+ <h1>The <span>Ultimate</span> Imageboard Desktop Client</h1>
804
+ <p class="hero-description">
805
+ A blazing-fast, privacy-focused desktop app for browsing 4chan with a premium UI,
806
+ powerful features, and native performance. No ads, no tracking, just pure browsing.
807
+ </p>
808
+ <div class="hero-buttons">
809
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/releases/latest"
810
+ class="btn btn-primary btn-lg">
811
+ ⬇️ Download Free
812
+ </a>
813
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro" class="btn btn-secondary btn-lg">
814
+ ⭐ Star on GitHub
815
+ </a>
816
+ </div>
817
+ <div class="hero-stats">
818
+ <div class="stat">
819
+ <div class="stat-value">3</div>
820
+ <div class="stat-label">Platforms</div>
821
+ </div>
822
+ <div class="stat">
823
+ <div class="stat-value">10+</div>
824
+ <div class="stat-label">Themes</div>
825
+ </div>
826
+ <div class="stat">
827
+ <div class="stat-value">100%</div>
828
+ <div class="stat-label">Free & Open Source</div>
829
+ </div>
830
+ </div>
831
+ </div>
832
+ <div class="hero-visual">
833
+ <div class="app-preview">
834
+ <div class="app-preview-header">
835
+ <div class="app-preview-dot dot-red"></div>
836
+ <div class="app-preview-dot dot-yellow"></div>
837
+ <div class="app-preview-dot dot-green"></div>
838
+ </div>
839
+ <div class="app-preview-content">
840
+ <div class="app-mockup">
841
+ <div class="mockup-sidebar">
842
+ <div class="mockup-sidebar-item active"></div>
843
+ <div class="mockup-sidebar-item"></div>
844
+ <div class="mockup-sidebar-item"></div>
845
+ <div class="mockup-sidebar-item"></div>
846
+ <div class="mockup-sidebar-item"></div>
847
+ </div>
848
+ <div class="mockup-main">
849
+ <div class="mockup-card"></div>
850
+ <div class="mockup-card"></div>
851
+ <div class="mockup-card"></div>
852
+ <div class="mockup-card"></div>
853
+ <div class="mockup-card"></div>
854
+ <div class="mockup-card"></div>
855
+ <div class="mockup-card"></div>
856
+ <div class="mockup-card"></div>
857
+ <div class="mockup-card"></div>
858
+ </div>
859
+ </div>
860
+ </div>
861
+ </div>
862
+ </div>
863
+ </div>
864
+ </section>
865
+
866
+ <!-- Features Section -->
867
+ <section class="features" id="features">
868
+ <div class="section-header">
869
+ <span class="section-label">✨ FEATURES</span>
870
+ <h2>Everything You Need for the Ultimate Experience</h2>
871
+ <p>Designed for power users who demand speed, privacy, and flexibility.</p>
872
+ </div>
873
+ <div class="features-grid">
874
+ <div class="feature-card">
875
+ <div class="feature-icon">🎨</div>
876
+ <h3>Premium Dark UI</h3>
877
+ <p>Sleek, modern interface inspired by Discord with 10+ beautiful themes including Nord, Dracula, and
878
+ Catppuccin.</p>
879
+ </div>
880
+ <div class="feature-card">
881
+ <div class="feature-icon">⚑</div>
882
+ <h3>Blazing Fast</h3>
883
+ <p>Built with Tauri and Rust for native performance. Instant load times and silky-smooth scrolling.</p>
884
+ </div>
885
+ <div class="feature-card">
886
+ <div class="feature-icon">πŸ–ΌοΈ</div>
887
+ <h3>Grid Catalog View</h3>
888
+ <p>Visualize threads with high-resolution thumbnails in a beautiful, responsive grid layout.</p>
889
+ </div>
890
+ <div class="feature-card">
891
+ <div class="feature-icon">πŸ”</div>
892
+ <h3>Smart Search & Filter</h3>
893
+ <p>Instantly find boards and threads. Filter by keywords, tripcodes, or regex patterns.</p>
894
+ </div>
895
+ <div class="feature-card">
896
+ <div class="feature-icon">πŸ“‘</div>
897
+ <h3>Multi-Tab Browsing</h3>
898
+ <p>Browse multiple threads and catalogs simultaneously with a familiar tabbed interface.</p>
899
+ </div>
900
+ <div class="feature-card">
901
+ <div class="feature-icon">🎬</div>
902
+ <h3>Enhanced Media Viewer</h3>
903
+ <p>Immersive lightbox with zoom, video player with custom controls, looping, and speed settings.</p>
904
+ </div>
905
+ <div class="feature-card">
906
+ <div class="feature-icon">πŸ“΄</div>
907
+ <h3>Offline Mode</h3>
908
+ <p>Automatic caching of visited threads for offline reading. Never lose a thread again.</p>
909
+ </div>
910
+ <div class="feature-card">
911
+ <div class="feature-icon">πŸ””</div>
912
+ <h3>Thread Watcher</h3>
913
+ <p>Desktop notifications when your watched threads get new replies. Never miss an update.</p>
914
+ </div>
915
+ <div class="feature-card">
916
+ <div class="feature-icon">⌨️</div>
917
+ <h3>Keyboard Shortcuts</h3>
918
+ <p>Navigate like a pro with intuitive shortcuts. J/K to scroll, Esc to close, and more.</p>
919
+ </div>
920
+ </div>
921
+ </section>
922
+
923
+ <!-- Platforms Section -->
924
+ <section class="platforms" id="platforms">
925
+ <div class="section-header">
926
+ <span class="section-label">πŸ’» PLATFORMS</span>
927
+ <h2>Available Everywhere You Are</h2>
928
+ <p>Native apps for all major desktop operating systems.</p>
929
+ </div>
930
+ <div class="platforms-grid">
931
+ <div class="platform-card">
932
+ <div class="platform-icon">πŸͺŸ</div>
933
+ <h3>Windows</h3>
934
+ <p>Windows 10 & 11</p>
935
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/releases/latest"
936
+ class="btn btn-secondary">Download .exe</a>
937
+ </div>
938
+ <div class="platform-card">
939
+ <div class="platform-icon">🍎</div>
940
+ <h3>macOS</h3>
941
+ <p>Intel & Apple Silicon</p>
942
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/releases/latest"
943
+ class="btn btn-secondary">Download .dmg</a>
944
+ </div>
945
+ <div class="platform-card">
946
+ <div class="platform-icon">🐧</div>
947
+ <h3>Linux</h3>
948
+ <p>.deb, .AppImage, .rpm</p>
949
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/releases/latest"
950
+ class="btn btn-secondary">Download</a>
951
+ </div>
952
+ </div>
953
+ </section>
954
+
955
+ <!-- Privacy Section -->
956
+ <section class="privacy" id="privacy">
957
+ <div class="privacy-container">
958
+ <div class="privacy-content">
959
+ <h2>πŸ”’ Privacy First</h2>
960
+ <p>We believe in respecting your privacy. ChanDesk Pro is designed with security at its core.</p>
961
+ <div class="privacy-features">
962
+ <div class="privacy-feature">
963
+ <div class="privacy-check">βœ“</div>
964
+ <span>No tracking or analytics</span>
965
+ </div>
966
+ <div class="privacy-feature">
967
+ <div class="privacy-check">βœ“</div>
968
+ <span>No accounts required</span>
969
+ </div>
970
+ <div class="privacy-feature">
971
+ <div class="privacy-check">βœ“</div>
972
+ <span>Direct connection to imageboards</span>
973
+ </div>
974
+ <div class="privacy-feature">
975
+ <div class="privacy-check">βœ“</div>
976
+ <span>Built-in CORS proxy strips tracking headers</span>
977
+ </div>
978
+ <div class="privacy-feature">
979
+ <div class="privacy-check">βœ“</div>
980
+ <span>100% open source & auditable</span>
981
+ </div>
982
+ </div>
983
+ </div>
984
+ <div class="privacy-visual">
985
+ <div class="shield-icon">πŸ›‘οΈ</div>
986
+ </div>
987
+ </div>
988
+ </section>
989
+
990
+ <!-- CTA Section -->
991
+ <section class="cta">
992
+ <div class="cta-container">
993
+ <h2>Ready to Experience the Best?</h2>
994
+ <p>Download ChanDesk Pro now and transform how you browse imageboards. It's free, forever.</p>
995
+ <div class="cta-buttons">
996
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/releases/latest" class="btn btn-primary btn-lg">
997
+ ⬇️ Download Now β€” It's Free
998
+ </a>
999
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro" class="btn btn-secondary btn-lg">
1000
+ πŸ“– View Source Code
1001
+ </a>
1002
+ </div>
1003
+ </div>
1004
+ </section>
1005
+
1006
+ <!-- Footer -->
1007
+ <footer>
1008
+ <div class="footer-container">
1009
+ <a href="#" class="logo">
1010
+ <div class="logo-icon">πŸ“Ί</div>
1011
+ <span>ChanDesk Pro</span>
1012
+ </a>
1013
+ <div class="footer-links">
1014
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro">GitHub</a>
1015
+ <a href="https://gitlab.com/swadhinbiswas/chandeskpro">GitLab Mirror</a>
1016
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/issues">Report Issue</a>
1017
+ <a href="https://github.com/swadhinbiswas/ChanDeskPro/discussions">Community</a>
1018
+ </div>
1019
+ <p class="footer-copy">Β© 2026 ChanDesk Pro. Open source under MIT License.</p>
1020
+ </div>
1021
+ </footer>
1022
+</body>
1023
+
1024
+</html>
0
1025