Commit Graph
7 Commits
Author SHA1 Message Date
dualfroz c4c84c0efe docs: explain that the camelCase API naming is deliberate 2026-08-05 20:40:41 +02:00
dualfroz 39c7c12fb3 chore: drop the core to 0.1.0 and restate the stability promise
The API has one set of consumers and no outside users, so declaring 1.0.0
with a stability guarantee was premature. Until 1.0.0 any minor bump may
reshape the API; the written guarantee starts there. Plugins pin 0.1.0.
2026-08-05 20:40:32 +02:00
dualfroz d8da766684 fix: negotiate core versions by the breaking component, not the major
Semver leaves 0.x unstable, so a plugin pinned to 0.1.0 must not load
against 0.2.0. requireCore now compares the major alone from 1.0.0 on and
major plus minor while the major is 0.
2026-08-05 20:40:16 +02:00
dualfroz 914098e056 docs: document the plugin API, configuration and migration path
Covers what a plugin can rely on and what may change between versions,
why the package is not installed into site-packages, how to write a
plugin from the bootstrap block onwards, and how to move over from the
pre-split extension and back again if needed.
2026-08-05 20:06:41 +02:00
dualfroz 0cd7a24adb feat: add install scripts, packaging and an example plugin
install.sh places the package in a version independent directory under
XDG_DATA_HOME instead of site-packages, which would be orphaned the day
the distribution moves to a new Python. It verifies the package imports
before reporting success, and warns when the pre-split extension is still
installed alongside it.

pyproject.toml makes pip install --user an equally valid route; the
bootstrap in each plugin finds the package either way.

examples/nemoRepoLastCommit.py is a complete working plugin in sixty
lines, which is the point of the split.
2026-08-05 20:06:41 +02:00
dualfroz 4ae3a496af refactor: extract the shared foundation into an installable library
The single file extension carried 260 lines of infrastructure under its
four Nemo providers: the config file with live reload, the git query
layer, the TTL cache with .git watching, and repository detection. Any
second extension wanting repository awareness had to repeat all of it.

Move that foundation into a nemoRepoCore package with a deliberate plugin
API rather than whatever the providers happened to leave behind:

  * Config gains layered defaults, so a plugin registers its own keys and
    an empty config file is still a working one
  * RepoInfo gains a root, a named last commit tuple and a summary string
  * RepoCache gains refresh, invalidate and an invalidation callback
  * discovery separates the cheap root check used on every drawn folder
    from the upward walk used by on demand work such as menus
  * nemoFiles collapses the uri scheme and directory guards every
    provider was repeating
  * launchers learn the per emulator flag for running a command
  * version negotiation lets a plugin state the core it was built for

The config file moves to nemo-repo-core.json and is seeded from the old
nemo-repo-emblems.json when one exists, so no key changes name and
nothing needs editing by hand.
2026-08-05 20:06:41 +02:00
dualfroz d81b502300 feat: add Nemo file manager emblems for git repo status 2026-07-29 15:26:23 +02:00