@pellux/goodvibes-tui 1.24.2 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +1 -1
- package/bin/goodvibes-daemon +24 -0
- package/docs/foundation-artifacts/operator-contract.json +3237 -1096
- package/package.json +7 -7
- package/src/config/goodvibes-home.ts +139 -0
- package/src/daemon/cli.ts +17 -6
- package/src/daemon/handlers/index.ts +7 -6
- package/src/input/commands/calendar-runtime.ts +245 -0
- package/src/input/commands/connection-status.ts +258 -0
- package/src/input/commands/mail-runtime.ts +267 -0
- package/src/input/commands/review-runtime.ts +13 -1
- package/src/input/commands.ts +4 -0
- package/src/input/settings-modal-connections.ts +102 -0
- package/src/input/settings-modal-types.ts +2 -1
- package/src/input/settings-modal.ts +27 -0
- package/src/main.ts +7 -2
- package/src/renderer/settings-modal-connections.ts +63 -0
- package/src/renderer/settings-modal-helpers.ts +2 -0
- package/src/renderer/settings-modal.ts +5 -0
- package/src/runtime/bootstrap-core.ts +1 -1
- package/src/runtime/context.ts +9 -0
- package/src/runtime/credential-composition.ts +54 -0
- package/src/runtime/daemon-handler-composition.ts +0 -4
- package/src/runtime/mail-composition.ts +65 -0
- package/src/runtime/services.ts +21 -24
- package/src/shell/ui-openers.ts +7 -0
- package/src/verification/verification-ledger.ts +58 -0
- package/src/version.ts +1 -1
- package/src/daemon/handlers/calendar/caldav-client.ts +0 -662
- package/src/daemon/handlers/calendar/ics.ts +0 -556
- package/src/daemon/handlers/calendar/index.ts +0 -316
- package/src/daemon/handlers/email/config.ts +0 -164
- package/src/daemon/handlers/email/imap-connector.ts +0 -441
- package/src/daemon/handlers/email/imap-parsing.ts +0 -499
- package/src/daemon/handlers/email/index.ts +0 -43
- package/src/daemon/handlers/email/read-handlers.ts +0 -80
- package/src/daemon/handlers/email/runtime.ts +0 -140
- package/src/daemon/handlers/email/smtp-connector.ts +0 -557
- package/src/daemon/handlers/email/validation.ts +0 -147
- package/src/daemon/handlers/email/write-handlers.ts +0 -133
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to GoodVibes TUI.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
|
+
## [1.25.0] - 2026-07-27
|
|
7
|
+
|
|
8
|
+
### Changes
|
|
9
|
+
|
|
10
|
+
- Mail and calendar are surfaces here now: `/mail` and `/calendar`, a Connections category in settings, and sending behind `--confirm`.
|
|
11
|
+
- The daemon this package ships stops carrying its own CalDAV and IMAP/SMTP handlers and lets the platform serve `calendar.*` and `email.*`. Both implementations were bound to the same descriptor ids and the local ones registered later, so they were the ones answering — two implementations behind one path, which is the drift the move exists to end. Nothing was deleted until the platform could do it: generic CalDAV, both spellings of the mail settings with their fallbacks, and address-digested logging were all ported first.
|
|
12
|
+
- The Connections category shows what mail and calendar are actually doing, and never guesses. A row starts as "checking" and only ever changes to something the daemon confirmed; an unconfigured account reports needs-setup naming the exact keys to set, and a daemon that does not serve the surface at all reports unreachable instead. Those two are kept apart deliberately: telling someone to connect an account when the daemon cannot serve mail at all would be a wasted afternoon.
|
|
13
|
+
- Setting a mail or calendar password now works from here. The platform declares the whole mail and CalDAV connection as daemon-owned, so `/secrets set` is relocated into the daemon's own tier rather than filed in this client's store where the daemon never looked. The old guidance said to put it in the daemon's environment and restart, because that was the only thing that actually reached it; that is no longer necessary and the guidance says so.
|
|
14
|
+
|
|
15
|
+
### Fixes
|
|
16
|
+
|
|
17
|
+
- `GOODVIBES_HOME` has one meaning and one reader. The client CLI now honours the same home redirection the daemon already did, and an architecture rule covers `scripts/` so a new entry point cannot quietly read it a second way.
|
|
18
|
+
- `--daemon-home` / `GOODVIBES_DAEMON_HOME` reaches the credential store, not just the identity directory. Without it a daemon told to run out of a temp tree still read the real home's daemon secrets, so an "isolated" test daemon held live credentials.
|
|
19
|
+
- A daemon started with an overridden home never adopts the machine's service unit. One did: launched from a scratchpad, it found the unit not running, wrote its own scratchpad command line into the systemd user unit and exited, and systemd then supervised the throwaway as the machine's daemon for five hours while it read real credentials and long-polled a real bot. The check runs before the service-enabled setting deliberately — that setting is client-owned and resolves against the real home, so a test tree's own opt-out was written and never read, and isolation that depends on the isolated process reading its own settings file is not isolation.
|
|
20
|
+
- The review pane declares itself an explicit user request, which is honest there and only there: that path runs because a person is looking at a hunk and pressed a key. It is what lets a confirmation-gated verb tell an authorized action apart from one initiated by content, so scheduled work, triggers and channel-driven work deliberately do not set it.
|
|
21
|
+
- The daemon launcher now says, in the file, that it prefers a prebuilt binary over this source tree. A route added to source answers 404 and every explanation reached for is wrong, because the process answering never contained the code. It cost a round several hours.
|
|
22
|
+
|
|
6
23
|
|
|
7
24
|
## [1.24.2] - 2026-07-27
|
|
8
25
|
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/mgd34msu/goodvibes-tui/actions/workflows/ci.yml)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
[](https://github.com/mgd34msu/goodvibes-tui)
|
|
6
6
|
|
|
7
7
|
GoodVibes is a terminal console for coding and operations work with an AI model. You run `goodvibes` in a project directory and get a full-screen terminal app where you talk to a model that can read and edit your files, run shell commands, search the web, and hand work off to background agents — asking your permission before anything that writes or executes. It talks to many model providers (OpenAI, Anthropic, Gemini, Bedrock, Copilot, OpenRouter and other OpenAI-compatible gateways, plus local servers like Ollama and LM Studio that it finds on startup), keeps its settings, sessions, and secrets on your own machine, and shows you the token count and running cost of every turn. Alongside the conversation, panels turn background work — running agents, git state, diffs, tokens, cost — into live control rooms.
|
|
8
8
|
|
package/bin/goodvibes-daemon
CHANGED
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
+
//
|
|
3
|
+
// ── READ THIS BEFORE DEV-TESTING DAEMON ROUTES THROUGH THIS SHIM ──────────
|
|
4
|
+
//
|
|
5
|
+
// This launcher prefers a PREBUILT binary over the source checkout. On a
|
|
6
|
+
// machine with `vendor/goodvibes-daemon-<platform>` staged, `bun bin/goodvibes-daemon`
|
|
7
|
+
// runs THAT binary — compiled against the PUBLISHED SDK — not the source in
|
|
8
|
+
// this repo and not whatever `sdk-dev link` overlaid into node_modules.
|
|
9
|
+
//
|
|
10
|
+
// The consequence is quiet and expensive: a route you just added returns 404
|
|
11
|
+
// and every explanation you reach for is wrong, because the process answering
|
|
12
|
+
// never contained your code. It cost a round several hours.
|
|
13
|
+
//
|
|
14
|
+
// Two further traps in the same area:
|
|
15
|
+
// - Killing this shim does NOT kill the vendored child. `pkill -f` on the
|
|
16
|
+
// shim's command line leaves the daemon listening, so the "restart" you
|
|
17
|
+
// think you performed changed nothing.
|
|
18
|
+
// - `sdk-dev link` overlays node_modules only. A vendored binary ignores it
|
|
19
|
+
// completely.
|
|
20
|
+
//
|
|
21
|
+
// To exercise source (and a linked SDK), bypass this launcher:
|
|
22
|
+
// bun src/daemon/cli.ts --port <port> --hostname 127.0.0.1
|
|
23
|
+
// and isolate it with GOODVIBES_HOME / GOODVIBES_DAEMON_HOME / GOODVIBES_WORKING_DIR
|
|
24
|
+
// so it cannot read the machine's real credentials or claim its service unit.
|
|
25
|
+
//
|
|
2
26
|
import { dirname, join } from 'node:path';
|
|
3
27
|
import { fileURLToPath } from 'node:url';
|
|
4
28
|
import { spawnSync } from 'node:child_process';
|