.\" Manpage pour mnemo.
.\" Affichage local : man ./docs/man/mnemo.1
.TH MNEMO 1 "2024" "mnemo 1.0.4" "Manuel utilisateur mnemo"
.SH NAME
mnemo \- historique de commandes shell, local et orienté confidentialité
.SH SYNOPSIS
.B mnemo
[\fICOMMANDE\fR] [\fIOPTIONS\fR]
.SH DESCRIPTION
.B mnemo
enregistre, recherche et gère l'historique de vos commandes shell dans une base
SQLite locale. Toutes les données restent sur votre machine : aucune
synchronisation distante, aucune télémétrie.
.PP
L'enregistrement automatique est conçu pour Bash : l'intégration installe un
hook dans
.IR ~/.bashrc .
Les autres shells peuvent utiliser mnemo en important leur historique et via les
complétions générées par
.BR "mnemo completions" .
.SH COMMANDS
.TP
.B init
Initialise la configuration et la base, puis affiche le snippet Bash à
installer.
.TP
.B init --wizard
Lance l'assistant d'onboarding interactif : aperçu de l'installation,
initialisation, intégration Bash, import optionnel de
.IR ~/.bash_history ,
et diagnostic. Toutes les actions sont non destructives. En contexte non
interactif, ajoutez
.B --yes
pour accepter les choix sûrs par défaut.
.TP
.B completions \fISHELL\fR
Génère un script de complétion sur la sortie standard pour
.IR bash ,
.I zsh
ou
.IR fish .
mnemo n'écrit jamais dans vos fichiers shell : redirigez vous-même la sortie.
.TP
.B shell upgrade
Met à niveau le bloc d'intégration Bash existant dans
.I ~/.bashrc
vers la version courante (capture de
.IR MNEMO_SESSION_ID ,
requise par
.BR "mnemo session" ).
Sauvegarde automatique, remplacement du seul bloc mnemo, reste du fichier
intact. Sans bloc installé, propose
.BR "mnemo init" .
.TP
.B import
Importe l'historique Bash existant dans la base.
.TP
.B session list
Liste les sessions de travail (commandes groupées par
.IR session_id ).
.TP
.B session show \fISESSION_ID\fR
Affiche les commandes d'une session dans l'ordre chronologique.
.TP
.B session export [\fISESSION_ID\fR|--last] [--format markdown|json] [--output \fIFICHIER\fR] [--force]
Exporte une session en Markdown (défaut) ou JSON. Écrit sur la sortie standard
sauf si
.B --output
est fourni ; n'écrase jamais un fichier existant sans
.BR --force .
.TP
.B project list [--limit \fIN\fR] [--json]
Liste les projets connus de l'historique (regroupés par
.IR git_root ),
avec nombre de commandes, de sessions, dernière activité et branches.
.TP
.B project show \fIPROJET\fR|--current [--limit \fIN\fR] [--json]
Détaille un projet (par nom court, racine complète ou
.BR --current ) :
métadonnées, commandes récentes et derniers échecs. Lecture seule : mnemo
n'exécute jamais les commandes.
.TP
.B project report \fIPROJET\fR|--current [--since \fIDURÉE|DATE\fR] [--until \fIDATE\fR] [--format markdown|json] [--output \fIFICHIER\fR] [--force] [--limit \fIN\fR]
Génère un rapport d'activité réutilisable (Markdown par défaut ou JSON) :
agrégats de la période, détail chronologique et échecs. Écrit sur la sortie
standard sauf si
.B --output
est fourni ; n'écrase jamais un fichier existant sans
.BR --force .
.TP
.B search [\fIREQUÊTE\fR] [--print] [--json] [--id-only] [--limit \fIN\fR] [--failed] [--exit-code \fICODE\fR] [--project \fINOM\fR] [--branch \fIBRANCHE\fR] [--cwd \fICHEMIN\fR] [--shell \fISHELL\fR] [--since \fIDURÉE|DATE\fR] [--before \fIDATE\fR]
Recherche dans l'historique enregistré. Sans
.BR --print ,
ouvre la TUI interactive avec les filtres pré-remplis ;
.BR --print " (ou " --json / --id-only )
produit une sortie non interactive. Filtres combinables (ET logique) :
.B --failed
(échecs uniquement),
.B --project / --branch / --cwd / --shell
(contexte),
.B --since
accepte une durée
.RB ( 24h ", " 7d ", " 2w ", " 3m ", " 1y )
ou une date
.IR AAAA-MM-JJ ,
.B --before
.RB ( "alias " --until )
une date.
.B --json
émet un JSON stable ;
.B --id-only
n'affiche que les identifiants (un par ligne), pratique à chaîner avec
.BR "mnemo show" / "mnemo print" .
.TP
.B show \fIID\fR
Affiche le détail complet d'une commande (date, dossier, contexte Git, session,
code retour, commande). mnemo n'exécute jamais la commande : cette sous-commande
lit seulement la base. Une commande déjà redactée s'affiche sous sa forme
redactée stockée.
.TP
.B print \fIID\fR
Imprime uniquement la commande brute sur la sortie standard, sans label ni
couleur, suivie d'un saut de ligne. mnemo ne l'exécute pas : l'utilisateur reste
responsable de l'usage de la sortie. ID inexistant : erreur sur stderr, code de
sortie non nul.
.TP
.B secrets scan [--limit \fIN\fR] [--json]
Repère dans l'historique stocké les commandes potentiellement sensibles. Elles
sont toujours affichées sous forme redactée ; aucune valeur n'apparaît en clair.
Lecture seule.
.TP
.B secrets redact [--apply] [--yes] [--backup]
Redacte en place les commandes sensibles déjà stockées. Dry-run par défaut :
.B --apply
est requis pour écrire. Une sauvegarde complète est créée avant toute
modification et seule la colonne
.I command
est réécrite.
.TP
.B runbook (--last|--session \fISESSION_ID\fR|--project \fINOM|CHEMIN\fR) [--output \fIFICHIER\fR] [--force] [--limit \fIN\fR] [--title \fITITRE\fR] [--format markdown|json] [--no-redact] [--group-by none|cwd|project]
Génère un document Markdown (défaut) ou JSON réutilisable à partir des
commandes d'une session ou d'un projet Git. Exactement un des drapeaux
.BR --last ,
.BR --session " ou"
.B --project
est requis. Les commandes sont triées chronologiquement (le plus ancien en
premier) et les lignes vides sont exclues. Les secrets sont
.B redactés par défaut
(\fB--no-redact\fR pour désactiver). Écrit sur la sortie standard sauf si
.B --output
est fourni ; n'écrase jamais un fichier existant sans
.BR --force .
.PP
.RS
Options de
.BR runbook :
.TP
.B --last
Cible la dernière session enregistrée.
.TP
.BI --session " SESSION_ID"
Session explicite.
.TP
.BI --project " NOM|CHEMIN"
Nom court ou chemin
.I git_root
d'un projet.
.TP
.BI --output " FICHIER"
Fichier de sortie (défaut : stdout).
.TP
.B --force
Autorise l'écrasement du fichier de sortie s'il existe déjà.
.TP
.BI --limit " N"
Nombre maximal de commandes incluses.
.TP
.BI --title " TITRE"
Titre personnalisé (défaut : identifiant de session ou nom de projet).
.TP
.B --format markdown|json
Format de sortie (défaut : \fBmarkdown\fR).
.TP
.B --no-redact
Désactive la redaction des secrets (activée par défaut).
.TP
.B --group-by none|cwd|project
Mode de groupement : \fBnone\fR (liste plate numérotée, défaut), \fBcwd\fR
(sections par répertoire de travail) ou \fBproject\fR (sections par racine
Git).
.RE
.TP
.B doctor
Diagnostique l'installation (configuration, base, intégration shell,
permissions).
.SH FILES
.TP
.I ~/.config/mnemo/config.toml
Fichier de configuration.
.TP
.I ~/.local/share/mnemo/mnemo.db
Base de données SQLite locale.
.TP
.I ~/.bashrc
Reçoit le bloc d'intégration Bash lors de l'installation.
.SH SECURITY
mnemo applique des permissions restrictives sur la configuration et la base.
Les commandes considérées sensibles peuvent être ignorées à l'import selon la
configuration. Aucune donnée n'est transmise hors de la machine.
.SH EXAMPLES
.TP
Premier démarrage guidé :
.B mnemo init --wizard
.TP
Activer la complétion Bash pour la session courante :
.B source <(mnemo completions bash)
.TP
Installer la complétion Zsh :
.B mnemo completions zsh > ~/.zsh/completions/_mnemo
.TP
Lister les échecs récents d'un projet, puis récupérer une commande :
.B mnemo search cargo --failed --project mnemo --id-only
.TP
Afficher le détail puis imprimer la commande 128 :
.B mnemo show 128 ; mnemo print 128
.TP
Générer un runbook de la dernière session :
.B mnemo runbook --last
.TP
Générer un runbook de release pour le projet mnemo :
.B mnemo runbook --project mnemo --title "Release v1.6.23" --output release.md
.TP
Exporter un runbook en JSON pour traitement machine :
.B mnemo runbook --last --format json | jq .
.SH SEE ALSO
.BR bash (1),
.BR sqlite3 (1)
.PP
Documentation : docs/UX_ONBOARDING.md, docs/SESSIONS.md, docs/PROJECTS.md, docs/RUNBOOK.md