generated from eblume/project-template
infra: extract heph.nvim into its own forge repo
Some checks failed
Build / validate (pull_request) Failing after 1m12s
Some checks failed
Build / validate (pull_request) Failing after 1m12s
The Neovim plugin now lives at eblume/hephaestus.nvim (plugin at the repo root). Remove heph.nvim/ from the monorepo and the build/test wiring that referenced it: - Dagger: drop the test_nvim function + the pinned-Neovim NVIM_VERSION - build.yaml: drop the `dagger call test-nvim` step - drop the mise run test-nvim task and .stylua.toml + the stylua prek hook (no Lua remains in the monorepo) - install-heph.md: install via a plain lazy.nvim spec pointing at the plugin repo over SSH (no more local-dir checkout hack) - README / AGENTS / heph-nvim.md: note the surface lives in its own repo The CLI/TUI -> nvim integration is unchanged (they shell out to `nvim` expecting the heph plugin installed). The v1-prototype tech-spec §14 build record and prior changelog fragments are left as frozen history. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
6ddc9b83bf
commit
d36ed18590
42 changed files with 31 additions and 2965 deletions
1
docs/changelog.d/extract-heph-nvim.infra.md
Normal file
1
docs/changelog.d/extract-heph-nvim.infra.md
Normal file
|
|
@ -0,0 +1 @@
|
|||
Extracted the Neovim plugin into its own forge repo, [eblume/hephaestus.nvim](ssh://forgejo@forge.ops.eblu.me:2222/eblume/hephaestus.nvim.git). Removed `heph.nvim/` from the monorepo along with its build/test wiring: the `test_nvim` Dagger function, the `dagger call test-nvim` CI step, the `mise run test-nvim` task, and the `.stylua.toml` + stylua prek hook (no Lua remains here). The CLI/TUI→nvim integration is unchanged (they shell out to `nvim` expecting the plugin installed). Install now uses a plain lazy.nvim spec pointing at the plugin repo — see [[install-heph]].
|
||||
|
|
@ -33,20 +33,15 @@ real data.
|
|||
|
||||
## 2. The Neovim plugin
|
||||
|
||||
`heph.nvim` lives in a subdirectory of the monorepo, and lazy.nvim can't load a
|
||||
subdir plugin from a bare git URL (it puts the clone *root* on `runtimepath`).
|
||||
For now, point lazy at a dedicated checkout via `dir`:
|
||||
|
||||
```bash
|
||||
git clone --branch feature/v1-prototype \
|
||||
ssh://forgejo@forge.ops.eblu.me:2222/eblume/hephaestus.git \
|
||||
~/.local/share/heph/checkout
|
||||
```
|
||||
The plugin lives in its own forge repo,
|
||||
[eblume/hephaestus.nvim](ssh://forgejo@forge.ops.eblu.me:2222/eblume/hephaestus.nvim.git),
|
||||
with the plugin at the repo root — so lazy.nvim loads it from a bare git URL.
|
||||
Point lazy at the forge over SSH:
|
||||
|
||||
```lua
|
||||
-- lazy.nvim spec
|
||||
{
|
||||
dir = vim.fn.expand("~/.local/share/heph/checkout/heph.nvim"),
|
||||
url = "ssh://forgejo@forge.ops.eblu.me:2222/eblume/hephaestus.nvim.git",
|
||||
config = function()
|
||||
require("heph").setup({}) -- connect-only: talks to the daemon you started
|
||||
end,
|
||||
|
|
@ -61,9 +56,8 @@ heph daemon start # launchd agent (macOS) / systemd user service (Linux)
|
|||
```
|
||||
|
||||
See [[run-the-daemon]] for `start`/`stop`/`restart`/`status`. Update the plugin
|
||||
by `git pull`ing the checkout (and after a `cargo install` upgrade, `heph daemon
|
||||
restart` to pick up the new `hephd`). (A future split of `heph.nvim` into its own
|
||||
forge repo will make this a normal `{ "eblume/heph.nvim" }` spec.)
|
||||
with `:Lazy update` (and after a `cargo install` upgrade of the binaries, `heph
|
||||
daemon restart` to pick up the new `hephd`).
|
||||
|
||||
## 3. Isolate development
|
||||
|
||||
|
|
|
|||
|
|
@ -8,15 +8,20 @@ tags:
|
|||
|
||||
# heph.nvim
|
||||
|
||||
The primary user surface (tech-spec §8): a Neovim plugin that replaces
|
||||
The Neovim knowledge-base surface (tech-spec §8): a plugin that replaces
|
||||
obsidian.nvim and is a **thin client of the local `hephd`** over its
|
||||
unix-socket JSON-RPC. Notes, journals, and tasks are edited as ordinary
|
||||
buffers; the daemon owns all storage and sync. Built in checkpointed slices on
|
||||
`feature/v1-prototype`; this card tracks the stable surface as it lands.
|
||||
buffers; the daemon owns all storage and sync.
|
||||
|
||||
> **Repo:** the plugin code lives in its own forge repo,
|
||||
> [eblume/hephaestus.nvim](ssh://forgejo@forge.ops.eblu.me:2222/eblume/hephaestus.nvim.git)
|
||||
> (extracted from this monorepo). This card documents the surface's
|
||||
> architecture; see [[install-heph]] to install it and the plugin repo for the
|
||||
> Lua sources + headless e2e suite.
|
||||
|
||||
## Architecture
|
||||
|
||||
`heph.nvim/lua/heph/` modules, each small and single-purpose:
|
||||
The `lua/heph/` modules, each small and single-purpose:
|
||||
|
||||
| Module | Responsibility |
|
||||
|---|---|
|
||||
|
|
@ -109,13 +114,11 @@ The headless e2e suite drives the plugin in `nvim --headless` against a real
|
|||
`hephd` over a temp socket, asserting both buffer contents and resulting DB
|
||||
state (via an isolated RPC session). It uses a **self-contained busted-style
|
||||
runner** (`tests/e2e/runner.lua`) — no external plugins, no network — so it is
|
||||
deterministic. `mise run test-nvim` builds the daemon and runs the suite against
|
||||
system-installed Neovim; a deliberately failing spec exits non-zero (no
|
||||
false-green; the runner also fails if it discovers zero specs). CI runs the same
|
||||
suite through the **`test-nvim` Dagger function** (`.dagger/`, invoked by
|
||||
`build.yaml` as `dagger call test-nvim`), which bakes a pinned, arch-detected
|
||||
Neovim onto a Rust image, builds `hephd`, and runs the suite — reproducible, and
|
||||
identical to the native `mise run test-nvim` path.
|
||||
deterministic. The suite lives in the plugin repo (eblume/hephaestus.nvim); since
|
||||
that repo carries no Rust source, `mise run test-nvim` there drives the suite
|
||||
against a prebuilt `hephd` supplied via `$HEPHD_BIN` (built from this monorepo:
|
||||
`cargo build -p hephd`). A deliberately failing spec exits non-zero, and the
|
||||
runner also fails if it discovers zero specs — no false-green.
|
||||
|
||||
## Related
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue