Découvertes thématiques · VisiDog CLIThematic guides · VisiDog CLI

L'espace de travail local : une bulle privée, un vrai disqueThe local workspace: a private bubble, a real disk

L'espace de travail est la terre où vit le code de votre projet dans VisiDog CLI. Vous choisissez le terrain : une bulle privée tenue par le navigateur (OPFS) ou un vrai dossier de votre machine (un dossier local). Cette page explique les deux mondes, comment y entrer des fichiers sans jamais les abîmer, comment tout emporter en ZIP, et pourquoi aucun chemin ne sort jamais de la racine.The workspace is the ground where your project's code lives in VisiDog CLI. You choose the ground: a private bubble kept by the browser (OPFS) or a real folder on your machine (a local folder). This page explains both worlds, how to bring files in without ever damaging them, how to take everything out as a ZIP, and why no path ever escapes the root.

Deux terres, une même commandeTwo grounds, one command

Quand vous créez un projet, VisiDog CLI vous demande de choisir son terrain. Le premier choix est la bulle : le navigateur garde pour VisiDog une arborescence privée — l'OPFS, « système de fichiers privé de l'origine » — que rien ne parcourt sur votre disque. Le second est le vôtre : vous pointez un dossier de votre machine, et le navigateur, avec votre accord, autorise le CLI à y lire et y écrire comme vous le feriez.

When you create a project, VisiDog CLI asks you to choose its ground. The first choice is the bubble: the browser keeps a private tree for VisiDog — the OPFS, the "origin private file system" — that never walks onto your disk. The second is yours: you point at a folder on your machine, and the browser, with your consent, lets the CLI read and write there as you would.

Le plus important : les deux terrains parlent la même langue. Lire un fichier, le modifier, le déplacer, tout lister, tout exporter — les mêmes commandes et les mêmes outils fonctionnent à l'identique, et le CLI bascule d'un projet à l'autre en changeant simplement de terrain.

The key point: both grounds speak the same language. Reading a file, editing it, moving it, listing everything, exporting everything — the same commands and the same tools work identically, and the CLI switches projects by simply switching grounds.

Terminal VisiDog CLI FSAdapter — la même serrureFSAdapter — one and the same lock une seule couche d'accès porte OPFS comme FSAone access layer serves OPFS and FSA alike Le bac à sable OPFSThe OPFS sandbox une arborescence gardée par le navigateura tree kept by the browser privée : rien ne touche votre disqueprivate: nothing touches your disk un terrain par projet, isolé du resteone ground per project, isolated et purgée si vous videz les données du siteand purged if you clear site data Votre dossier réel (FSA)Your real folder (FSA) un vrai dossier de votre machinea real folder on your machine l'accès accordé une fois via le navigateuraccess granted once through the browser Git et vos outils y voient le même codeGit and your tools see the same code idéal pour reprendre un dépôt existantideal for taking over an existing repo
Schéma 1 — Deux terrains sous une même couche d'accès : la bulle privée du navigateur et votre vrai dossier local.Diagram 1 — Two grounds under one access layer: the browser's private bubble and your real local folder.

L'import : un dépôt qui ne réussit qu'en entierThe drop: it only ever lands in full

Entrer des fichiers dans l'espace de travail se fait au plus simple : on glisse un dossier ou une sélection de fichiers depuis sa machine, on vise le dossier d'accueil dans l'explorateur, et on lâche. Sous ce geste court une conduite rigoureuse, pensée pour que rien ne soit jamais écrasé ou laissé à moitié.

Bringing files into the workspace is as simple as it gets: drag a folder or a selection of files from your machine, aim at the host folder in the explorer, and release. Behind that gesture runs a rigorous pipeline, built so that nothing is ever silently overwritten or half-landed.

Vous déposez des fichiers ou un dossierYou drop files or a folder glisser-déposer dans l'espace de travail affichédrag-and-drop into the shown workspace 1 Tout est qualifié avant le premier octetEverything is qualified before the first byte chaque destination comparée, conflit repéréeach destination compared, conflicts spotted 2 Les remplacements vous sont annoncésOverwrites are announced to you un écran liste les fichiers écrasés ; vous trancheza screen lists the overwritten files; you decide un dépôt sur un dossier existanta drop onto an existing folder fusionne : les voisins restent intactsmerges: neighbors stay untouched 3 Une sauvegarde complète est priseA complete backup is taken la version d'avant reste disponible pour /undothe earlier version stays available for /undo annuler après coup :undo after the fact: /undo rend vos octets d'avant/undo brings your earlier bytes back 4 Le dépôt s'écrit en une seule opérationThe drop lands in a single operation le moindre échec le défait — rien de partielany failure undoes it — nothing partial quota plein, dossier verrouillé :full quota, locked folder: tout reprend d'avant le dépôteverything returns to before the drop L'espace de travail reste cohérentThe workspace stays consistent dépôt réussi ou refusé entier, jamais à moitiéa drop fully succeeds or fully refuses, never halfway
Schéma 2 — La conduite d'import : qualifier, annoncer, sauvegarder, puis écrire sans jamais laisser un arbre à moitié déposé.Diagram 2 — The import pipeline: qualify, announce, back up, then write without ever leaving a half-landed tree.

Trois règles ressortent. Un dossier déposé là où un dossier existe déjà fusionne : le dépôt verse ses fichiers et ne touche pas les voisins. Un fichier posé sur le chemin d'un dossier — ou l'inverse — est un conflit de nature : le dépôt entier est refusé avant tout octet écrit, avec le chemin fautif. Et lorsqu'un fichier existant va vraiment être remplacé, un écran liste les écrasements annoncés ; votre accord pris, une sauvegarde complète de ce qui est remplacé est mémorisée, si bien que /undo rend vos octets d'avant, même après un dépôt réussi.

Three rules stand out. A drop onto an existing folder merges: the drop pours its files in and leaves neighbors alone. A file landing where a folder already exists — or the reverse — is a nature conflict: the whole drop is refused before any byte is written, naming the offending path. And when an existing file really will be replaced, a screen lists the announced overwrites; once you agree, a complete backup of what gets replaced is memorized, so that /undo brings your earlier bytes back — even after a successful drop.

L'export ZIP : tout emporter, à l'octet prèsThe ZIP export: take it all, to the byte

Le bouton dédié de l'explorateur, un bouton des réglages, ou la commande /export zip : le terminal parcourt l'arborescence de l'espace de travail et fabrique une archive ZIP que votre navigateur télécharge. La restitution est fidèle : les mêmes fichiers, les mêmes dossiers, les mêmes octets.

A dedicated button in the explorer, one in the settings, or the /export zip command: the terminal walks the workspace tree and builds a ZIP archive your browser downloads. Restitution is faithful: same files, same folders, same bytes.

L'archive s'adapte à la charge : sous les comptes standards, un ZIP classique ; au-delà — plus de 65 535 entrées ou des fichiers de plus de 4 Go —, la variante ZIP64 prend le relais. Les noms de fichiers sont validés avant le traitement des contenus : un nom impossible refuse le téléchargement lui-même, plutôt que de livrer une archive boiteuse que d'autres outils n'ouvriront pas.

The archive adapts to the load: under standard counts, a classic ZIP; beyond them — over 65,535 entries or files larger than 4 GB — the ZIP64 variant takes over. File names are validated before any content is processed: an impossible name refuses the download itself, rather than shipping a fragile archive other tools would fail to open.

C'est aussi la sortie de secours de la bulle : un projet OPFS vit dans le navigateur, donc exporter un ZIP avant de purger ses données ou de changer de machine, c'est garder une copie tangible en dur.

It is also the bubble's escape hatch: an OPFS project lives in the browser, so exporting a ZIP before clearing site data or changing machines is how you keep a tangible copy.

Ouvrir avec VisiDog CLIOpen with VisiDog CLI

Une fois VisiDog CLI installée comme application, votre système peut lui confier des fichiers : « Ouvrir avec VisiDog CLI » sur un dossier de code ou un fichier de code (.py, .java, .md…) pose les poignées dans le terminal, comme si vous les aviez déposées à la main.

Once VisiDog CLI is installed as an app, your system can hand it files: "Open with VisiDog CLI" on a code folder or a code file (.py, .java, .md…) lays its handles into the terminal, as if you had dropped them by hand.

Deux sûretés. D'abord, le lot d'une ouverture est borné — aussi bien en nombre d'entrées qu'en profondeur ou en poids : au premier plafond atteint, l'ouverture entière est refusée avec une raison nommée, et rien n'est écrit. Ensuite, l'ouverture n'est pas un cas particulier : une fois le lot jugé, elle rejoint exactement la conduite d'import — qualification, confirmation des remplacements, sauvegarde, dépôt atomique. Si l'espace de travail n'est pas encore prêt, le dépôt attend sans écrire, et une carte vous signale qu'il patiente.

Two safeguards. First, an opening batch is bounded — in entry count, depth and weight alike: at the first cap, the whole opening is refused with a named reason, and nothing is written. Second, an opening is not a special case: once the batch is judged, it follows the exact import pipeline — qualification, confirmation of overwrites, backup, atomic landing. If the workspace is not ready yet, the drop waits without writing, and a card tells you it is pending.

Les frontières : aucun chemin ne sortThe boundaries: no path escapes

La racine de l'espace de travail — le dossier du projet affiché — est une vraie frontière, vérifiée à chaque opération : lecture, écriture, dépôt, déplacement, suppression. Un chemin qui chercherait à « monter » au-dessus d'elle est refusé avant même qu'on aille voir sur le disque.

The workspace root — the folder of the shown project — is a real boundary, checked on every operation: read, write, drop, move, delete. A path trying to climb above it is refused before anyone even looks at the disk.

La racine : l'horizon de chaque cheminThe root: the horizon of every path tout chemin passe par elle et s'y résoutevery path goes through it and resolves there racine/ ├─ src/ └─ app.js « .. » : refusé avant tout accès"..": refused before any access monter d'un niveau n'a aucun sens légalclimbing one level has no legal meaning lecture, écriture, dépôt : rien ne sort de la racineread, write, drop: nothing leaves the root ../../notes.txt rejeté, sans même aller voir sur le disquerejected, without even looking on disk
Schéma 3 — Le confinement : la couche d'accès rejette toute traversée avant de toucher un seul octet.Diagram 3 — Confinement: the access layer refuses any traversal before touching a single byte.

La frontière protège aussi contre les courses : les opérations longues (dépôt, déplacement, renommage, suppression) sont épinglées sur la racine qu'elles ont visée. Si vous changez de projet pendant qu'elles courent, elles s'arrêtent net avec un motif explicite — au lieu de laisser finir un dépôt dans le mauvais dossier. Les écrans d'écriture font la même vérification : un enregistrement lancé depuis une fenêtre qui appartient à un autre projet est refusé avant de toucher le fichier.

The boundary also guards against races: long operations (drop, move, rename, delete) are pinned to the root they aimed at. If you switch projects while they run, they stop dead with an explicit reason — instead of letting a drop finish in the wrong folder. Write screens run the same check: a save issued from a window belonging to another project is refused before touching the file.

L'utiliser dans VisiDogUsing it in VisiDog

1

Choisissez le terrainPick the ground

À la création du projet : « projet dans le navigateur » pour la bulle privée, sans permission à accorder ; ou « projet sur un dossier local », où le navigateur demandera le droit d'accéder au dossier choisi. On passe de l'un à l'autre en changeant de projet : le CLI sert une racine à la fois, et le même code fonctionne partout.

Upon project creation: "browser project" for the private bubble, with no permission to grant; or "project on a local folder", where the browser will ask for permission to reach the chosen folder. Switching from one to the other is just switching projects: the CLI serves one root at a time, and the same code works everywhere.

2

Alimentez l'espace de travailFeed the workspace

Glissez un dossier ou des fichiers dans l'explorateur, ou ouvrez depuis le bureau avec « Ouvrir avec VisiDog CLI ». La conduite d'import qualifie, annonce et sauvegarde avant d'écrire : un refus vous nomme le chemin fautif, et un remplacement se corrige par /undo.

Drag a folder or files into the explorer, or open from the desktop with "Open with VisiDog CLI". The import pipeline qualifies, announces and backs up before writing: a refusal names the offending path, and an overwritten file can be fixed with /undo.

3

Emportez ou connectezTake away or connect

/export zip télécharge l'arborescence complète, fidèle à l'octet — l'archivage d'un travail ou le transfert d'un projet OPFS vers un autre poste. Un projet local, lui, reste connecté à votre vrai dossier : ce que le CLI écrit, votre Git le voit, et l'inverse aussi.

/export zip downloads the whole tree, faithful to the byte — archiving your work, or moving an OPFS project to another machine. A local project, meanwhile, stays connected to your real folder: what the CLI writes, your Git sees — and the other way around.

Cas d'usageUse cases

Le prototype sans conséquenceThe consequence-free prototype

Tester une idée dans une bulle OPFS : rien de ce qui se passe dans le projet ne touche votre disque ; si l'idée survit, l'export ZIP la rend tangible, sinon les données du site restent sages d'elles-mêmes.

Try an idea inside an OPFS bubble: nothing that happens in the project touches your disk; if the idea survives, the ZIP export makes it tangible, otherwise the site data stays quietly contained.

Reprendre un dépôt existantTake over an existing repo

Placer le CLI sur un dossier local : l'IA travaille dans le même arbre que votre Git et vos outils, avec imports vérifiés et sauvegardes avant remplacement — vos habitudes ne changent pas, la vitesse de travail change.

Put the CLI on a local folder: the AI works in the same tree as your Git and your tools, with verified drops and backups before overwrites — your habits stay, the working pace changes.

Passer d'une machine à l'autreMove from one machine to another

La bulle ne se déplace pas, le ZIP oui : exporter avant de partir, importer sur l'autre poste en une glisse qualifiée, sauvegardée, atomique — et le projet repart là où il était.

The bubble does not travel, the ZIP does: export before leaving, import on the other machine with one qualified, backed-up, atomic drop — and the project picks up where it left off.

Du bureau au terminal en un clicFrom the desktop to the terminal in one click

« Ouvrir avec VisiDog CLI » sur un dossier ou un fichier de code : le lot arrive gouverné par les mêmes bornes et la même conduite d'import que toute autre entrée — pas de raccourci qui écrive à votre place.

"Open with VisiDog CLI" on a folder or a code file: the batch arrives governed by the same bounds and the same import pipeline as any other entry — no shortcut that writes behind your back.

Ce que ça vous apporteWhat it brings you

Points d'attentionPoints of attention

La bulle vit dans le navigateurThe bubble lives in the browser

Un projet OPFS n'existe nulle part ailleurs que dans les données du site : vider ces données efface le projet. Exportez un ZIP avant toute purge ou changement de machine : c'est votre copie en dur.

An OPFS project exists nowhere but in the site's data: clearing that data erases the project. Export a ZIP before any purge or machine change — that is your hard copy.

Les quotas sont réelsQuotas are real

Le navigateur alloue une place finie : un dépôt qui la dépasserait serait entièrement défait — rien ne reste à moitié — et vous le verrez nommé. Les gros corpus attendent un dossier local.

The browser allocates a finite amount of room: a drop that would exceed it would be entirely undone — nothing left halfway — and you will see it named. Larger corpora call for a local folder.

Le lot d'ouverture est bornéAn opening batch is bounded

Une ouverture par l'OS accepte des dizaines de dossiers d'entrée, plusieurs milliers de fichiers, une profondeur raisonnable et quelques dizaines de Mo par fichier — au-dessus, refus nommé et rien n'est écrit : vérifiez le dossier visé plutôt qu'un demi-dépôt.

An OS opening accepts dozens of top-level folders, several thousand files, a reasonable depth and a few tens of MB per file — beyond that, a named refusal and nothing is written: check the aimed folder rather than accept a half-drop.

Un espace de travail à la foisOne workspace at a time

Les opérations longues écrivent dans la racine qu'elles ont visée, pas dans celle qui s'affiche : changer de projet en pleine opération interrompt celle-ci avec un motif — le mauvais dossier n'est jamais touché, mais votre action est à relancer.

Long operations write into the root they aimed at, not the one on display: switching projects mid-operation interrupts it with a reason — the wrong folder is never touched, but your action needs to be run again.