Hard to use across machines: state outside repo, absolute paths in generated launcher, per-repo config sprawl

Abierto
#219 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
15/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Activo
Área
devtools

Línea de trabajo

This is a design discussion, not a single change: state location (~/.tokeneconomizer), the generated launcher ~/.tokeneconomizer/bin/te with its hardcoded plugin-cache path, and the per-repo .claude/settings.local.json deny rules are the places it touches. Settle the intended storage layout and runtime path resolution with the maintainers before any code is written; done means an agreed design, not a patch.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Feedback after using TokenEconomizer 0.1.0 (Claude Code plugin, Windows) across several repositories on two PCs, with ~/.claude synced through git. I ended up uninstalling it. These are the problems that led to that.

1. Not friendly to cloud/git sync
  • Learned state lives in ~/.tokeneconomizer (repos/, index.json, sessions/, locks/), outside ~/.claude and outside the repository. It cannot travel with a synced config or with the repo, so every machine relearns from scratch.
  • Per-repo state folders have hashed names (e.g. my-repo-73d35aa8b6, plus .bak-<timestamp> copies), so they cannot be matched or merged across machines by a person.
2. Absolute paths baked into generated files
  • The launcher written at session start, ~/.tokeneconomizer/bin/te, is a script like exec 'C:\Users\<name>\.claude\plugins\cache\tokeneconomizer\tokeneconomizer\0.1.0\scripts\te' "$@". It hardcodes the plugin cache path including user name and plugin version, so it is only valid on one machine and breaks on every plugin update or on a different profile folder.
  • Please resolve the plugin location at runtime (e.g. via CLAUDE_PLUGIN_ROOT or relative to the script) instead of writing it into a generated file.
3. Hard to see what is enabled where
  • Per-repo behaviour is spread over several places: .claude/settings.local.json deny rules in each repo, an extraKnownMarketplaces entry in each project's .claude/settings.json, project-scope plugin installs, and the state under ~/.tokeneconomizer.
  • In two of my repos the tool pruning had silently added about 250 entries to permissions.deny (Artifact, scheduled-tasks, Teams/Outlook/SharePoint connectors, Power Automate tools, ...). Nothing in the project made it obvious why those tools were missing. Support for finding out which repos are affected was limited to a command that must be run inside each repo.
  • With a user-level install plus project-level installs, the plugin list shows the same plugin several times, which made it hard to tell which copy applies where.
Suggestions
  • Keep state inside the repo (or an opt-in, relocatable directory), in a readable, mergeable format.
  • No absolute paths in generated files.
  • One place that shows which repos are enabled and what has been pruned, and prune via an explicit, visible, reversible step rather than a large silent deny list.
Lenguaje dominante
Python
Estrellas
5.6k
Forks
344
Merge medio
17 h 41 min
PR fusionados (30 d)
73

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/TokenEconomizer

Todos los issues de microsoft/TokenEconomizer

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.