Commit graph

100 commits

Author SHA1 Message Date
846894c1a7 docs(changelog): mettre à jour la description du fix Bitwarden 2026-05-13 13:57:58 +02:00
7c016e8c5e refactor(secretstore): supprimer le fichier de session service-spécifique
Le fichier ~/.config/<service>/bw-session est redondant depuis l'introduction
du fichier partagé mcp-framework. On n'écrit plus que dans le partagé et on lit
uniquement depuis lui dans refreshSessionEnv et loadAnyBitwardenSession.
EnsureBitwardenSessionEnv tente le fichier service-spécifique en premier
(rétrocompat) puis bascule sur le partagé.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 13:57:58 +02:00
90dbed4d37 fix(secretstore): éviter l'invalidation croisée des sessions Bitwarden entre MCPs
Quand deux MCPs appellaient login, le second appelait bw unlock et générait
un nouveau token, invalidant celui du premier. Deux mécanismes corrigent ça :

1. LoginBitwarden ne relance plus bw unlock si le vault est déjà unlocked
   et qu'une session existe (env, fichier service, ou fichier partagé).
2. Le login écrit le token dans ~/.config/mcp-framework/bw-session (partagé)
   en plus du fichier service-spécifique. Les autres MCPs lisent ce fichier
   en priorité via refreshSessionEnv avant chaque opération Bitwarden.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 13:57:58 +02:00
078aa17285 fix(secretstore): relire la session Bitwarden depuis le fichier avant chaque opération
Quand un MCP appelle login/unlock, le token est écrit dans le fichier de session
mais les autres MCPs conservent leur token obsolète dans l'environnement du processus.
Désormais, bitwardenStore.ensureReady() appelle refreshSessionEnv() qui relit le
fichier avant chaque vérification, ce qui permet à tous les MCPs de rester
opérationnels après une rotation de session.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 13:57:58 +02:00
CI
200674778b chore(changelog): release v1.12.0 2026-05-13 09:32:24 +00:00
267b83bd0c ci(release): corriger la construction de l'URL git pour le push
All checks were successful
CI / test (push) Successful in 12s
Release / release (push) Successful in 6s
GITHUB_SERVER_URL vaut http://forgejo:3000 (réseau interne Docker).
Extraire scheme et host séparément pour reconstruire l'URL correctement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:31:42 +02:00
92b63fe83d ci(release): ignorer les pushes de branches avec un guard sur refs/tags/
Le trigger 'on: push: tags: "**"' dans Forgejo déclenche aussi sur les
pushes de branches. Le guard 'if: startsWith(github.ref, refs/tags/)'
assure que le job ne tourne que sur de vrais tags.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:30:02 +02:00
64671fc8b2 ci(release): ajouter la liste des commits après les notes CHANGELOG dans la release
Some checks failed
CI / test (push) Successful in 12s
Release / release (push) Failing after 13s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:24:08 +02:00
9ac814fda4 docs(agents): ajouter instruction de mise à jour du CHANGELOG après chaque dev
All checks were successful
CI / test (push) Successful in 12s
Ajoute CLAUDE.md comme symlink vers AGENTS.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:22:15 +02:00
39b2bfbcf9 docs(changelog): compléter la section Unreleased
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:21:38 +02:00
ea3a37559a ci(release): remplacer le script Python par sed/awk
All checks were successful
CI / test (push) Successful in 13s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:18:27 +02:00
4e2bfbee02 ci(release): alimenter les notes de release depuis [Unreleased] dans CHANGELOG.md
À chaque tag stable, la CI extrait la section [Unreleased], l'utilise
comme notes de release Forgejo, renomme la section avec la version et
la date, puis commite le CHANGELOG.md mis à jour sur main.

Les tags RC utilisent le contenu [Unreleased] pour les notes mais ne
modifient pas le fichier.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:15:21 +02:00
3a61387215 docs(changelog): supprimer le texte d'introduction
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:03:15 +02:00
b9b729e439 docs: ajouter CHANGELOG.md avec l'historique des versions stables
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:00:50 +02:00
f8eb0d3449 docs: mettre à jour bootstrap-cli et cli-helpers
All checks were successful
CI / test (push) Successful in 12s
Documenter BitwardenLoginHandler, StandardConfigTestHandler et le
comportement opt-in de ManifestCheck dans RunDoctor.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 10:55:52 +02:00
e6c372bffc refactor(bootstrap): renommer DefaultLoginHandler en BitwardenLoginHandler
Le handler est spécifique au backend Bitwarden CLI. Le nom "Default"
suggérait à tort qu'il s'applique à tous les MCPs.

Les MCPs sans backend Bitwarden ne définissent pas de hook Login :
autoDisabledCommands masque automatiquement la commande.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 10:50:28 +02:00
d23d79b6c1 feat(bootstrap): ajouter DefaultLoginHandler et StandardConfigTestHandler
- DefaultLoginHandler(binaryName) : handler de login Bitwarden prêt à
  l'emploi avec confirmation. Remplace les réimplémentations identiques
  dans chaque MCP.
- StandardConfigTestHandler(opts) : handler de config test standard sans
  ManifestCheck. Accepte ConfigCheck, OpenStore, ConnectivityCheck et
  ExtraChecks.
- ManifestCheck dans RunDoctor devient opt-in : inclus uniquement si
  ManifestDir est fourni (artefact de build, pas de contrainte runtime).
- Supprime le handler mort CommandLogin dans bootstrap.Run, désormais
  remplacé par l'auto-disable et DefaultLoginHandler.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 10:45:51 +02:00
9a52b5dce1 feat(bootstrap): auto-hide commands with no hook configured
All checks were successful
CI / test (push) Successful in 11s
Release / release (push) Successful in 5s
Commands are now hidden from help and return ErrUnknownCommand when
invoked if their hook is nil (and for version, if Version string is
also empty). No explicit DisabledCommands needed for MCPs that don't
use login/setup/config/etc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 10:37:46 +02:00
4a7248cfa9 feat(bootstrap): add DisabledCommands option to hide unused commands
Commands listed in DisabledCommands are excluded from global help output
and return ErrUnknownCommand when invoked or help is requested for them.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 10:30:11 +02:00
955c96650a fix: rename .forgejo
All checks were successful
Release / release (push) Successful in 29s
CI / test (push) Successful in 27s
2026-05-11 11:53:59 +02:00
cd0740c75f feat: default login handler in bootstrap
When Hooks.Login is nil, Run() now handles the login command directly
using LoginBitwarden with BinaryName as the service name, removing
the need for glue code in each consumer binary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 11:37:35 +02:00
6bf9dd1866 chore: update module path to forge 2026-05-05 12:23:14 +02:00
6e85969cf4 migrate workflows to forgejo 2026-05-05 12:13:01 +02:00
1e11181c02 perf: avoid bitwarden probe in runtime description 2026-05-02 15:47:07 +02:00
893600ffd5 perf: lazy check bitwarden readiness 2026-05-02 15:30:18 +02:00
0135b093a5 docs: document bitwarden cache controls 2026-05-02 15:04:54 +02:00
5552e63974 feat: expose bitwarden cache in generated helpers 2026-05-02 15:04:29 +02:00
fd08615950 feat: cache bitwarden secret reads 2026-05-02 15:03:35 +02:00
85da274772 feat: add encrypted bitwarden cache core 2026-05-02 15:00:57 +02:00
1a44a2ea35 feat: wire bitwarden cache options 2026-05-02 14:59:04 +02:00
9675490cd3 feat: parse bitwarden cache manifest option 2026-05-02 14:57:52 +02:00
e5f2244ad8 docs: plan bitwarden cache implementation 2026-05-02 14:55:52 +02:00
e99a1c109a docs: design bitwarden cache 2026-05-02 14:46:19 +02:00
afe4c681a1 docs: refresh usage documentation 2026-05-02 12:07:34 +02:00
17b1b99686 feat: generate config field helpers 2026-05-02 12:02:23 +02:00
a79f73825f feat: generate manifest helper glue 2026-05-02 11:57:44 +02:00
20b5026f9d feat: add manifest code generation 2026-05-02 11:46:47 +02:00
ef22b1aa8a fix: prompt login in red when bitwarden session is missing 2026-04-20 17:52:50 +02:00
017005b0b1 fix(secretstore): disable loader during interactive bitwarden prompts 2026-04-20 14:24:43 +02:00
6e80d3418e feat: add bitwarden login flow with persisted BW_SESSION 2026-04-20 12:38:58 +02:00
2920f5980a perf: reduce redundant bitwarden CLI calls 2026-04-20 12:03:22 +02:00
98bac84ab8 feat: add --debug tracing for bitwarden calls 2026-04-20 11:36:07 +02:00
98f07f557d feat(secretstore): add animated bitwarden wait loader 2026-04-20 11:18:14 +02:00
7d159bfdbd feat: add runtime secretstore diagnostics and setup helpers 2026-04-20 10:56:15 +02:00
7072cb2038 feat(secretstore): harden bitwarden readiness and secret verification 2026-04-20 09:39:05 +02:00
bba7aacedf feat(secretstore): add bitwarden CLI backend support 2026-04-20 08:30:35 +02:00
973770ed78 feat(scaffold): install binaries from latest release in install script 2026-04-16 17:52:25 +02:00
a9378885f2 feat(manifest): add embedded runtime fallback for scaffolded apps 2026-04-16 16:56:00 +02:00
01c0c7e1bc fix(update): reject HTML artifacts during self-update 2026-04-15 14:23:15 +02:00
f0e2e9304b docs: reorganize README and split detailed documentation 2026-04-15 14:06:28 +02:00