feat(site): showcase IDE workspace, diff/staging et services git distants

- WorkspaceShowcase.vue : maquette fidèle de la vue /workspace (arbre de
  fichiers + panneau commit staging/amend + diff coloré + terminal corrélé).
- RemoteGitSection.vue : connexions GitHub/GitLab/Gitea (chiffrées at-rest)
  + barre de progression de clone.
- 5 cartes features, pilier sécurité « Encrypted secrets », 3 FAQ, ancre nav.
- i18n EN/FR à parité ; meta description orientée IDE. Bump 0.2.0.
This commit is contained in:
2026-06-27 16:04:19 +02:00
parent ac4d098b53
commit 8a8fac75e6
11 changed files with 485 additions and 4 deletions

View File

@@ -29,6 +29,18 @@ export const FAQS: Record<AppLocale, FaqItem[]> = {
q: 'Is my code safe?',
a: 'Arboretum binds to localhost, hashes access tokens at rest, and enforces strict origin checks on every request. Remote access runs through Tailscale rather than an open port.',
},
{
q: 'Can I edit files directly?',
a: 'Yes. The /workspace view is a real IDE: a file tree, a full Monaco editor with inline diffs, and the correlated session terminal. Stage changes file by file, write a commit message, amend, then push — all from the browser, on any device.',
},
{
q: 'Can I connect GitHub, GitLab or Gitea and clone?',
a: 'Yes. Add a connection with a personal access token or app password — credentials are encrypted at rest (AES-256-GCM) and never returned in clear by the API. Then browse remote repos and clone over HTTPS with live progress.',
},
{
q: 'What happens to old sessions?',
a: 'Finished sessions are archived automatically after a configurable retention window (30 days by default), so the dashboard stays focused on what is live without losing your history.',
},
],
fr: [
{
@@ -51,6 +63,18 @@ export const FAQS: Record<AppLocale, FaqItem[]> = {
q: 'Mon code est-il en sécurité ?',
a: "Arboretum se lie à localhost, hashe les tokens au repos, et applique une vérification d'origine stricte sur chaque requête. L'accès distant passe par Tailscale plutôt qu'un port ouvert.",
},
{
q: 'Puis-je éditer les fichiers directement ?',
a: "Oui. La vue /workspace est un vrai IDE : un arbre de fichiers, un éditeur Monaco complet avec les diffs inline, et le terminal de la session corrélée. Indexez les changements fichier par fichier, rédigez un message de commit, amendez, puis poussez — le tout depuis le navigateur, sur n'importe quel appareil.",
},
{
q: 'Puis-je connecter GitHub, GitLab ou Gitea et cloner ?',
a: "Oui. Ajoutez une connexion avec un token d'accès personnel ou un app password — les identifiants sont chiffrés au repos (AES-256-GCM) et jamais renvoyés en clair par l'API. Parcourez ensuite les repos distants et clonez en HTTPS avec progression en direct.",
},
{
q: "Qu'advient-il des anciennes sessions ?",
a: 'Les sessions terminées sont archivées automatiquement après une rétention configurable (30 jours par défaut), pour que le dashboard reste centré sur ce qui est en cours sans perdre votre historique.',
},
],
};

View File

@@ -1,6 +1,7 @@
// Messages EN — copie fidèle du dict() du design Arboretum.dc.html.
export default {
navFeatures: 'Features',
navWorkspace: 'Workspace',
navHow: 'How it works',
navSecurity: 'Security',
navFaq: 'FAQ',
@@ -106,4 +107,52 @@ export default {
copied: 'Copied',
copyCommand: 'Copy command',
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.',
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',
feat13Desc: 'Connect GitHub, GitLab or Gitea with a PAT or app password — credentials encrypted at rest — and clone over HTTPS with live progress.',
feat14Title: 'Auto-archive sessions',
feat14Desc: 'Finished sessions are archived automatically after a configurable retention window (30 days by default), keeping the list clean.',
feat15Title: 'Real-time file sync',
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',
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.',
wsEditor: 'Editor',
wsDiff: 'Diff',
wsFiles: 'Files',
wsChanges: 'Changes',
wsStaged: 'Staged',
wsTerminal: 'Terminal',
wsCommitMsg: 'Implement token refresh',
wsCommitPlaceholder: 'Commit message…',
wsAmend: 'Amend last commit',
wsCommitBtn: 'Commit',
wsPushBtn: 'Push',
wsStage: 'Stage',
wsUnstage: 'Unstage',
wsDiscard: 'Discard',
// Remote git services + clone
rgKicker: 'Remote git · encrypted',
rgTitle: 'Connect your git services and clone in a click',
rgBody:
'Add GitHub, GitLab or Gitea connections with a personal access token or app password. Secrets are encrypted at rest (AES-256-GCM) and never returned in clear by the API. Browse remote repos and clone over HTTPS with live progress.',
rgConnections: 'Connections',
rgTested: 'tested',
rgAddConnection: 'Add connection',
rgEncrypted: 'Encrypted at rest',
rgCloning: 'Cloning',
rgCloneReceiving: 'Receiving objects',
// 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.',
};

View File

@@ -1,6 +1,7 @@
// Messages FR — copie fidèle du dict() du design Arboretum.dc.html.
export default {
navFeatures: 'Fonctionnalités',
navWorkspace: 'Workspace',
navHow: 'Comment ça marche',
navSecurity: 'Sécurité',
navFaq: 'FAQ',
@@ -106,4 +107,52 @@ export default {
copied: 'Copié',
copyCommand: 'Copier la commande',
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.",
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',
feat13Desc: 'Connectez GitHub, GitLab ou Gitea avec un PAT ou un app password — identifiants chiffrés au repos — et clonez en HTTPS avec progression en direct.',
feat14Title: 'Archivage auto des sessions',
feat14Desc: 'Les sessions terminées sont archivées automatiquement après une rétention configurable (30 jours par défaut), pour garder la liste propre.',
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',
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.",
wsEditor: 'Éditeur',
wsDiff: 'Diff',
wsFiles: 'Fichiers',
wsChanges: 'Changements',
wsStaged: 'Indexés',
wsTerminal: 'Terminal',
wsCommitMsg: 'Implémente le rafraîchissement du token',
wsCommitPlaceholder: 'Message de commit…',
wsAmend: 'Amender le dernier commit',
wsCommitBtn: 'Commit',
wsPushBtn: 'Push',
wsStage: 'Indexer',
wsUnstage: 'Désindexer',
wsDiscard: 'Annuler',
// Services git distants + clone
rgKicker: 'Git distant · chiffré',
rgTitle: 'Connectez vos services git et clonez en un clic',
rgBody:
"Ajoutez des connexions GitHub, GitLab ou Gitea avec un token d'accès personnel ou un app password. Les secrets sont chiffrés au repos (AES-256-GCM) et jamais renvoyés en clair par l'API. Parcourez les repos distants et clonez en HTTPS avec progression en direct.",
rgConnections: 'Connexions',
rgTested: 'testée',
rgAddConnection: 'Ajouter une connexion',
rgEncrypted: 'Chiffré au repos',
rgCloning: 'Clonage',
rgCloneReceiving: 'Réception des objets',
// 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.",
};