Skip to content

9.0.2

Latest

Choose a tag to compare

@benthamite benthamite released this 26 Sep 15:32
· 525 commits to master since this release
98da5db

This release moves every secret my configuration reads in the background, in Emacs, mail sync and command-line tools alike, from pass to read-only 1Password service accounts. It also adds a cooldown for third-party packages: a dev profile now builds each third-party package at a commit that has been public for at least a week, rather than at upstream HEAD.

Breaking changes

  • Emacs and the command-line tools read their secrets from the "Automation" vaults of three 1Password accounts (personal, Tlon and Epoch) through the op-automations broker. Each account's service-account token must be in the macOS Keychain as op-service-account/ACCOUNT-automation. pass is no longer an auth-source backend, and nothing falls back to it.
  • Org asks before following elisp: links, and Emacs asks about unsafe file-local variables instead of silently ignoring them. The trusted ones are registered.
  • activity-watch-mode and circe are built from my forks. The circe fix was declined upstream, so that fork stays.

Features

Emacs

  • New package auth-source-extras: auth-source-extras-op-get fetches Automation-vault items in parallel at startup, rejects inexact title matches, and names the item and account when a read fails, never the secret. It also provides an auth-source backend for generic lookups and can unlock git-crypt repositories from a key stored in 1Password.
  • GnuPG PIN and passphrase dialogs say which secret they want: the everyday YubiKey PIN, the admin PIN or the GPG passphrase.
  • activity-watch-mode records the selected non-file buffer, such as an agent or Slack buffer, instead of whatever buffer is current when its timer fires.
  • The bibliography tools run PDF OCR before requesting an abstract, keep scan images during ordinary OCR, and date undated web pages by their earliest Wayback capture.
  • org-contacts completion can no longer be interrupted halfway through visiting the contacts file, which used to break refiling.

Package builds

  • bin/elpaca-cooldown records the tip of every third-party remote once a day. Its plan builds my own packages at their tip, third-party packages at the newest tip first seen at least seven days ago, and packages pinned in config.org at their pin.
  • The release workflow builds and smoke-tests a dev profile first, treats startup warnings as failures, and pins exactly the checkouts that passed. The smoke reporter closes its Emacs instance itself when the report is final.
  • It also reports third-party packages that have not been loaded in 60 days, as candidates for removal.

AI-agent tooling

  • Elisp test evidence is bound to file contents and enforced by Git hooks and an agent Stop hook, instead of being parsed from command text. The documentation and paired-config commit gates also moved into pre-commit.
  • Agents can create 1Password share links restricted to named recipients. The secret guard now treats interpreter programs that name a 1Password broker as programs rather than shell text, and several false positives were removed.
  • dotfiles-publish installs its push guard behind the global hooks dispatcher.