From ef21b03d9c650a8d24f7c7a9e570e1fd95b67fa7 Mon Sep 17 00:00:00 2001 From: Johan LEROY Date: Fri, 17 Jul 2026 18:14:39 +0200 Subject: [PATCH] =?UTF-8?q?feat(site):=20vitrine=20recadr=C3=A9e=20IDE=20m?= =?UTF-8?q?ulti-projet=20+=20section=20Download=20desktop=20(D2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit i18n EN/FR (miroir) : hero, section « workspace » et carte feature 11 recadrés vers l'IDE multi-projet (arbre unique, onglets, dock bas), + clés de la section Download. Nouvelle section DownloadSection.vue (app de bureau : Linux/Windows/macOS, runtime embarqué, auto-update ; boutons vers la page des releases et le build depuis les sources) + entrée de nav « Download ». Mockup WorkspaceShowcase redessiné sur le nouvel IDE : barre d'activité, arbre unifié multi-projet (api/web + worktree + session), éditeur à onglets, diff, dock terminaux à onglets, barre de statut. build:site vert, 0 tiret. --- packages/site/src/App.vue | 2 + packages/site/src/components/AppHeader.vue | 1 + .../site/src/components/DownloadSection.vue | 68 +++++ .../site/src/components/WorkspaceShowcase.vue | 285 +++++++----------- packages/site/src/i18n/en.ts | 33 +- packages/site/src/i18n/fr.ts | 35 ++- packages/site/src/lib/links.ts | 4 + 7 files changed, 242 insertions(+), 186 deletions(-) create mode 100644 packages/site/src/components/DownloadSection.vue diff --git a/packages/site/src/App.vue b/packages/site/src/App.vue index 929551d..fc71185 100644 --- a/packages/site/src/App.vue +++ b/packages/site/src/App.vue @@ -7,6 +7,7 @@ import ProblemSection from './components/ProblemSection.vue'; import FeaturesSection from './components/FeaturesSection.vue'; import ShowcaseSection from './components/ShowcaseSection.vue'; import WorkspaceShowcase from './components/WorkspaceShowcase.vue'; +import DownloadSection from './components/DownloadSection.vue'; import RemoteGitSection from './components/RemoteGitSection.vue'; import WorkGroupsSection from './components/WorkGroupsSection.vue'; import HowItWorksSection from './components/HowItWorksSection.vue'; @@ -65,6 +66,7 @@ const glowStyle = { + diff --git a/packages/site/src/components/AppHeader.vue b/packages/site/src/components/AppHeader.vue index 9ea23cf..cddf5cc 100644 --- a/packages/site/src/components/AppHeader.vue +++ b/packages/site/src/components/AppHeader.vue @@ -9,6 +9,7 @@ const { t } = useI18n(); const navLinks = [ { href: '#features', key: 'navFeatures' }, { href: '#workspace', key: 'navWorkspace' }, + { href: '#download', key: 'navDownload' }, { href: '#how', key: 'navHow' }, { href: '#security', key: 'navSecurity' }, { href: '#faq', key: 'navFaq' }, diff --git a/packages/site/src/components/DownloadSection.vue b/packages/site/src/components/DownloadSection.vue new file mode 100644 index 0000000..0bd500f --- /dev/null +++ b/packages/site/src/components/DownloadSection.vue @@ -0,0 +1,68 @@ + + + diff --git a/packages/site/src/components/WorkspaceShowcase.vue b/packages/site/src/components/WorkspaceShowcase.vue index 8ccdab4..50ee701 100644 --- a/packages/site/src/components/WorkspaceShowcase.vue +++ b/packages/site/src/components/WorkspaceShowcase.vue @@ -3,7 +3,7 @@ import { useI18n } from 'vue-i18n'; const { t } = useI18n(); -// Lignes du diff (fidèle à DiffViewer : add → emerald-950/40, del → rose-950/40). +// Lignes du diff (fidele a DiffViewer : add -> emerald-950/40, del -> rose-950/40). type DiffLine = { o: string; n: string; type: 'ctx' | 'add' | 'del' | 'hunk'; text: string }; const diffLines: DiffLine[] = [ { o: '', n: '', type: 'hunk', text: '@@ -12,7 +12,9 @@ export function session(' }, @@ -27,7 +27,7 @@ function marker(type: DiffLine['type']): string { diff --git a/packages/site/src/i18n/en.ts b/packages/site/src/i18n/en.ts index 1c6ad92..93a1efd 100644 --- a/packages/site/src/i18n/en.ts +++ b/packages/site/src/i18n/en.ts @@ -1,7 +1,8 @@ // Messages EN : copie fidèle du dict() du design Arboretum.dc.html. export default { navFeatures: 'Features', - navWorkspace: 'Workspace', + navWorkspace: 'IDE', + navDownload: 'Download', navHow: 'How it works', navSecurity: 'Security', navFaq: 'FAQ', @@ -9,7 +10,7 @@ export default { heroBadge: 'Mission control for AI coding agents', heroTitle: 'Mission control for your AI coding agents', heroSub: - 'Run many Claude Code sessions across every git worktree, and supervise them from any device, even your phone.', + 'A multi-project AI IDE, native and web: run many Claude Code sessions across every git worktree in one window, and supervise them from any device, even your phone.', getStarted: 'Get started', probKicker: 'The problem', probTitle: "Many agents across worktrees is chaos, and you're chained to one terminal.", @@ -109,8 +110,8 @@ export default { copyUrl: 'Copy URL', // New feature cards (P7→P12: IDE worktree) - feat11Title: 'A real IDE for every worktree', - feat11Desc: 'Browse the file tree, edit in a full Monaco editor, and read changes as inline diffs, all in the /workspace view.', + feat11Title: 'A real multi-project IDE', + feat11Desc: 'One window for every project: a unified tree (project, worktree, session), a tabbed Monaco editor with inline diffs across projects, and Claude terminals docked below.', feat12Title: 'Diff & selective staging', feat12Desc: 'Stage, unstage or discard file by file, then commit (all or staged), amend, fetch and pull, without leaving the dashboard.', feat13Title: 'Remote git services', @@ -121,10 +122,10 @@ export default { feat15Desc: 'A filesystem watcher streams changes the moment a file moves on disk: diffs and status update live, no refresh needed.', // Workspace IDE showcase - wsKicker: 'The worktree IDE', - wsTitle: 'A full IDE for every worktree, in the browser', + wsKicker: 'The multi-project IDE', + wsTitle: 'One IDE for all your projects, native or web', wsBody: - 'Open any worktree in /workspace: a file tree on the left, a Monaco editor and inline diff in the center, and the correlated session terminal on the right. Stage changes file by file, write a commit message, push, all without leaving the page, on any device.', + 'Open every project in a single window: a unified tree (project, worktree, Claude session) on the left, a tabbed Monaco editor with inline diffs in the center, Claude terminals docked at the bottom, and a git panel for staging, commits and push. No more one IDE window per project. Run it as a native desktop app or serve it in your browser, on any device.', wsEditor: 'Editor', wsDiff: 'Diff', wsFiles: 'Files', @@ -155,4 +156,22 @@ export default { // Security pillar (encrypted secrets) sec5Title: 'Encrypted secrets', sec5Desc: 'Remote git credentials are encrypted at rest (AES-256-GCM) and never returned in clear by the API.', + + // Desktop app (download) + dlKicker: 'Native desktop app', + dlTitle: 'Download Arboretum for your desktop', + dlBody: + 'A native app for Linux, Windows and macOS. It bundles the daemon and its Node runtime, so there is nothing else to install: launch it and your multi-project IDE opens, already signed in. Tray, launch at login and auto-update included. Prefer the terminal? Keep running it in the browser with a single command.', + dlLinux: 'Linux', + dlLinuxHint: 'AppImage and .deb', + dlWin: 'Windows', + dlWinHint: 'NSIS installer and portable', + dlMac: 'macOS', + dlMacHint: 'dmg (best-effort, unsigned)', + dlNoNode: 'No Node install needed', + dlBundled: 'Daemon and runtime bundled', + dlAutoUpdate: 'Auto-update on Windows and Linux', + dlGet: 'Get the app', + dlSource: 'Build from source', + dlNote: 'Installers are published on the releases page once a desktop build is tagged. Until then, build it from source (see packages/desktop).', }; diff --git a/packages/site/src/i18n/fr.ts b/packages/site/src/i18n/fr.ts index 597dc90..7e6f304 100644 --- a/packages/site/src/i18n/fr.ts +++ b/packages/site/src/i18n/fr.ts @@ -1,7 +1,8 @@ // Messages FR : copie fidèle du dict() du design Arboretum.dc.html. export default { navFeatures: 'Fonctionnalités', - navWorkspace: 'Workspace', + navWorkspace: 'IDE', + navDownload: 'Télécharger', navHow: 'Comment ça marche', navSecurity: 'Sécurité', navFaq: 'FAQ', @@ -9,7 +10,7 @@ export default { heroBadge: 'Poste de commandement pour agents de code IA', heroTitle: 'Le poste de commandement de vos agents de code IA', heroSub: - "Lancez plusieurs sessions Claude Code à travers chaque worktree git, et supervisez-les depuis n'importe quel appareil, même votre téléphone.", + "Un IDE IA multi-projet, natif et web : lancez plusieurs sessions Claude Code à travers chaque worktree git dans une seule fenêtre, et supervisez-les depuis n'importe quel appareil, même votre téléphone.", getStarted: 'Commencer', probKicker: 'Le problème', probTitle: "Plein d'agents à travers les worktrees, c'est le chaos, et vous êtes cloué à un seul terminal.", @@ -109,8 +110,8 @@ export default { copyUrl: "Copier l'URL", // Nouvelles cartes de fonctionnalités (P7→P12 : IDE worktree) - feat11Title: 'Un vrai IDE pour chaque worktree', - feat11Desc: "Parcourez l'arbre de fichiers, éditez dans un éditeur Monaco complet, et lisez les changements en diff inline, le tout dans la vue /workspace.", + feat11Title: 'Un vrai IDE multi-projet', + feat11Desc: "Une seule fenêtre pour tous vos projets : un arbre unifié (projet, worktree, session), un éditeur Monaco à onglets avec diffs inline entre projets, et les terminaux Claude en dock bas.", feat12Title: 'Diff & staging sélectif', feat12Desc: 'Indexez, désindexez ou annulez fichier par fichier, puis commitez (tout ou indexé), amendez, fetchez et pullez, sans quitter le dashboard.', feat13Title: 'Services git distants', @@ -120,11 +121,11 @@ export default { feat15Title: 'Synchro fichiers temps réel', feat15Desc: "Un watcher du système de fichiers pousse les changements dès qu'un fichier bouge sur le disque : diffs et statut se mettent à jour en direct, sans rafraîchir.", - // Showcase IDE workspace - wsKicker: "L'IDE worktree", - wsTitle: 'Un IDE complet pour chaque worktree, dans le navigateur', + // Showcase IDE multi-projet + wsKicker: "L'IDE multi-projet", + wsTitle: 'Un seul IDE pour tous vos projets, natif ou web', wsBody: - "Ouvrez n'importe quel worktree dans /workspace : un arbre de fichiers à gauche, un éditeur Monaco et le diff inline au centre, et le terminal de la session corrélée à droite. Indexez les changements fichier par fichier, rédigez un message de commit, poussez, sans quitter la page, depuis n'importe quel appareil.", + "Ouvrez tous vos projets dans une seule fenêtre : un arbre unifié (projet, worktree, session Claude) à gauche, un éditeur Monaco à onglets avec diffs inline au centre, les terminaux Claude en dock bas, et un panneau Git pour l'indexation, les commits et le push. Fini un IDE par projet. En app de bureau native ou servi dans votre navigateur, sur n'importe quel appareil.", wsEditor: 'Éditeur', wsDiff: 'Diff', wsFiles: 'Fichiers', @@ -155,4 +156,22 @@ export default { // Pilier sécurité (secrets chiffrés) sec5Title: 'Secrets chiffrés', sec5Desc: "Les identifiants git distants sont chiffrés au repos (AES-256-GCM) et jamais renvoyés en clair par l'API.", + + // App de bureau (téléchargement) + dlKicker: 'App de bureau native', + dlTitle: 'Téléchargez Arboretum pour votre bureau', + dlBody: + "Une app native pour Linux, Windows et macOS. Elle embarque le daemon et son runtime Node : rien d'autre à installer, lancez-la et votre IDE multi-projet s'ouvre, déjà authentifié. Tray, lancement au login et auto-update inclus. Vous préférez le terminal ? Continuez à la lancer dans le navigateur en une commande.", + dlLinux: 'Linux', + dlLinuxHint: 'AppImage et .deb', + dlWin: 'Windows', + dlWinHint: 'Installeur NSIS et portable', + dlMac: 'macOS', + dlMacHint: 'dmg (best-effort, non signé)', + dlNoNode: "Pas besoin d'installer Node", + dlBundled: 'Daemon et runtime embarqués', + dlAutoUpdate: 'Auto-update sur Windows et Linux', + dlGet: "Obtenir l'app", + dlSource: 'Builder depuis les sources', + dlNote: 'Les installeurs sont publiés sur la page des releases dès qu\'un build desktop est taggé. En attendant, buildez depuis les sources (voir packages/desktop).', }; diff --git a/packages/site/src/lib/links.ts b/packages/site/src/lib/links.ts index 96fef89..a79173f 100644 --- a/packages/site/src/lib/links.ts +++ b/packages/site/src/lib/links.ts @@ -4,3 +4,7 @@ export const REPO = 'https://git.lidge.fr/johanleroy/arboretum'; export const LICENSE = `${REPO}/src/branch/main/LICENSE`; export const COFFEE = 'https://buymeacoffee.com/johanleroy'; +// App de bureau : page des releases (les installeurs y apparaissent après un tag desktop-vX.Y.Z) +// et sources du paquet Electron pour un build local. +export const RELEASES = `${REPO}/releases`; +export const DESKTOP_SRC = `${REPO}/src/branch/main/packages/desktop`;