| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Paging never actually reached the phone before. signal-cli was registered as my primary number, so a page was that account messaging itself, and Signal mobile doesn't push-notify a self-message. I registered signal-cli with a separate Google Voice number (profile "Claude Pager") and pointed everything at it. page-signal now sends from that account to my Signal account by default, so a page lands as a normal third-party message and rings the phone.
The old --note-to-self default is gone, since note-to-self on the pager account wouldn't reach me. Sender and default recipient now come from PAGE_SIGNAL_ACCOUNT and PAGE_SIGNAL_TO with baked-in defaults. The send command pins the sender with -a, and --to also accepts a Signal account UUID, since my account hides its phone number. servers.json points signal-mcp at the new number. Verified end-to-end: live sends from the pager account notified the phone, and signal-mcp shows connected.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit is end-of-day housekeeping for the rulesets session that
ran 2026-05-28 through 2026-05-29.
mcp/servers.json gains the signal-mcp stdio entry pointing at the
locally-cloned rymurr/signal-mcp install at ~/.local/share/signal-mcp/.
The entry uses Craig's primary +15103169357 as --user-id, which will
need updating to the Google Voice number once that signal-cli
registration lands (TODO scheduled today). The configuration is
staged but not registered. The make install-mcp pipeline was
interrupted earlier by the GPG pinentry (Craig on vacation, away
from desk). Running make install-mcp at the desktop with the GPG
passphrase will complete the registration.
.ai/session-context.org captures the live session narrative covering
the no-approvals batch (6 :quick:solo: TODOs), the codex backlog
triage, the page-signal infra, the voice profile Phase 1 plus Phase
2, the SKILL.md / voice-profile.org structural split, and the inbox
processing pass. No wrap-up performed. The session-context stays
under that name pending the wrap-it-up workflow when Craig is back
at the desk.
The substantive work in this session shipped across many prior
commits, each with its own focused message.
|
| |
|
|
|
|
| |
Adds google-keep to mcp/servers.json using feuerdev/keep-mcp via uvx; env-var auth (GOOGLE_KEEP_EMAIL, GOOGLE_KEEP_MASTER_TOKEN) stored in mcp/secrets.env.gpg. Master token retrieved through Google's EmbeddedSetup browser flow plus gpsoauth.exchange_token, since password-based gpsoauth.perform_master_login is restricted now.
Invocation gotcha: keep-mcp declares an =mcp= entry-point script, but its dependency on the official =mcp= SDK ships a same-named script that wins resolution under uvx. The =uvx --from keep-mcp mcp= form from the README launches the SDK CLI instead of keep-mcp's server. Workaround: =uvx --from keep-mcp python -m server.cli= invokes keep-mcp's actual entry point directly, bypassing the collision.
|
|
|
I needed a single source of truth for MCP server registration so a fresh machine boots with the full set instead of being rebuilt by hand. install.py decrypts mcp/secrets.env.gpg, expands ${VAR} placeholders in mcp/servers.json, and runs claude mcp add --scope user for anything not already registered. Idempotent.
The encrypted bundle carries six values: the Google client id and secret, the Figma API key, the GCP OAuth keys JSON (base64), and the two @a-bonus/google-docs-mcp token caches (personal and work, base64). install.py writes the keys file and the two token files to the paths each package reads at startup, all mode 600.
Bundling the Google Docs tokens lets a new machine connect google-docs-personal and google-docs-work without the interactive OAuth flow. Without the cached token, the package falls back to a browser-redirect flow that Claude Code's stdio MCP loader can't drive, so it shows "Failed to connect" until the user runs the npx command manually.
Make target: install-mcp. Plaintext secrets and the decrypted keys file are gitignored.
|