hephaestus/heph.nvim/lua/heph/config.lua
Erich Blume cdd4d9f62a
All checks were successful
Build / validate (pull_request) Successful in 10m44s
heph.nvim: rip out auto-spawn — connect-only plugin
The daemon is now an OS service (`heph daemon`); the plugin no longer spawns or
supervises one. Removes the managed-daemon machinery entirely.

- delete lua/heph/daemon.lua (spawn/ensure/stop_spawned/self-heal)
- init.lua: connect-only; probe `health` once and guide to `heph daemon start`
- rpc.lua: drop set_respawn + respawn-on-drop; a dropped connection just
  reconnects once (e.g. after `heph daemon restart`), never spawns
- config.lua: drop autostart/bin/db; stable socket fallback (data-dir, matches
  hephd::default_socket_path), keep $HEPH_SOCKET for dev isolation
- tests: spawn/wait_ready move into the e2e harness (test infra); rework
  managed_daemon_spec into a connect-only spec (connect / clean-fail / reconnect)

16 nvim e2e specs pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 21:21:28 -07:00

61 lines
2.1 KiB
Lua

--- Configuration defaults, socket resolution, and default keymaps.
local M = {}
M.defaults = {
--- Path to hephd's unix socket. `nil` → `$HEPH_SOCKET`, else the daemon default.
--- The plugin is connect-only; run the daemon with `heph daemon start`.
socket = nil,
--- Title of the home / index page (`:Heph home`).
home = "Home",
--- How many recent days the `:Heph journals` picker offers.
journal_days = 7,
--- Set the default `<leader>h*` keymaps. `false` to opt out.
keymaps = true,
}
--- Resolve the socket path: explicit opt, then `$HEPH_SOCKET`, then hephd's
--- default — `$XDG_RUNTIME_DIR/heph/hephd.sock`, else a **stable**
--- `<data-dir>/heph/hephd.sock` (matching `hephd::default_socket_path`; not a
--- temp dir, since the daemon is a persistent service). `$HEPH_SOCKET` lets a
--- dev Neovim target a `mise run dev` daemon without touching real data.
function M.resolve_socket(opt)
opt = (opt and #opt > 0) and opt or vim.env.HEPH_SOCKET
if opt and #opt > 0 then
return opt
end
local xdg = vim.env.XDG_RUNTIME_DIR
if xdg and #xdg > 0 then
return (xdg:gsub("/+$", "")) .. "/heph/hephd.sock"
end
local data = vim.env.XDG_DATA_HOME
if not (data and #data > 0) then
data = (vim.env.HOME or "") .. "/.local/share"
end
return (data:gsub("/+$", "")) .. "/heph/hephd.sock"
end
--- Apply the default keymaps (no-op when `opts.keymaps` is false).
function M.apply_keymaps(opts)
if not opts.keymaps then
return
end
local map = vim.keymap.set
map("n", "<leader>hj", function()
require("heph.journal").open()
end, { desc = "heph: today's journal" })
map("n", "<leader>hn", function()
require("heph.view").next()
end, { desc = "heph: what is next (Tactical)" })
map("n", "<leader>hl", function()
require("heph.view").list()
end, { desc = "heph: task list (Organizational)" })
map("n", "<leader>hd", function()
require("heph.task").set_state_current("done")
end, { desc = "heph: mark current task done" })
map("n", "<leader>hp", function()
require("heph.task").promote_under_cursor()
end, { desc = "heph: promote context item to a task" })
end
return M