From f4d5012a6a9471bca84770ed332bb1c641b9f97a Mon Sep 17 00:00:00 2001 From: elkaix Date: Sun, 16 Aug 2026 01:20:14 -0400 Subject: [PATCH 1/2] feat(site): lead the hero with the desktop app and add a cursor-aware particle field - Remove the shields.io npm downloads badge from the hero. - Offer the desktop download for the visitor's platform directly in the hero, reusing the existing desktopDownloads constants, and demote the CLI install command to a secondary path below it. - Move the legacy Python downloads milestone out of the hero; it competes with the download call to action and advertises the previous product. - Add ParticleField: a canvas of small dots that drift behind the page and move away from the pointer. It sits at z-index -1 inside #app, so it never covers content, and it does not mount at all under prefers-reduced-motion or on coarse pointers. --- apps/site/src/App.vue | 102 +++++++++----- apps/site/src/components/ParticleField.vue | 156 +++++++++++++++++++++ 2 files changed, 221 insertions(+), 37 deletions(-) create mode 100644 apps/site/src/components/ParticleField.vue diff --git a/apps/site/src/App.vue b/apps/site/src/App.vue index 015799e4..f11a78c9 100644 --- a/apps/site/src/App.vue +++ b/apps/site/src/App.vue @@ -3,6 +3,7 @@ import { onMounted, onUnmounted, ref } from 'vue'; import AgentLoop from './components/AgentLoop.vue'; import InstallCommand from './components/InstallCommand.vue'; import LegacyDownloadsPopup from './components/LegacyDownloadsPopup.vue'; +import ParticleField from './components/ParticleField.vue'; import PythinkerMascot from './components/PythinkerMascot.vue'; const version = __PYTHINKER_VERSION__; @@ -20,6 +21,18 @@ const desktopDownloads = { windows: `${DESKTOP_RELEASE_BASE}/Pythinker-${DESKTOP_VERSION}-x64-Setup.exe`, }; +const isWindows = /Win/i.test(navigator.platform || navigator.userAgent); +const heroDownloads = (isWindows + ? [ + { id: 'windows', label: 'Download for Windows', note: 'Windows x64', icon: '/brand/windows11.svg', href: desktopDownloads.windows }, + { id: 'mac', label: 'Download for macOS', note: 'Apple Silicon', icon: '/brand/apple.svg', href: desktopDownloads.mac }, + ] + : [ + { id: 'mac', label: 'Download for macOS', note: 'Apple Silicon', icon: '/brand/apple.svg', href: desktopDownloads.mac }, + { id: 'windows', label: 'Download for Windows', note: 'Windows x64', icon: '/brand/windows11.svg', href: desktopDownloads.windows }, + ]); +const heroDownloadsPage = `https://github.com/PyModel/pythinker-code/releases/tag/v${DESKTOP_VERSION}`; + const installRows = [ ['macOS / Linux', 'curl -fsSL https://code.pythinker.com/pythinker-code/install.sh | bash', '/brand/apple.svg'], ['Windows (PowerShell)', 'irm https://code.pythinker.com/pythinker-code/install.ps1 | iex', '/brand/windows11.svg'], @@ -211,6 +224,7 @@ onUnmounted(() => {