[object Object]

← back to Launchd Reminders

initial scaffold (gitify-all 2026-05-06)

6a061f729d7e248d4aa389ef1c0bbb7823fa6d17 · 2026-05-06 10:25:41 -0700 · Steve Abrams

Files touched

Diff

commit 6a061f729d7e248d4aa389ef1c0bbb7823fa6d17
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed May 6 10:25:41 2026 -0700

    initial scaffold (gitify-all 2026-05-06)
---
 .gitignore                     | 12 ++++++++++
 twitter-token-reminder.sh      | 51 ++++++++++++++++++++++++++++++++++++++++++
 wolf-gordon-reauth-reminder.sh | 51 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 114 insertions(+)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7e6a9c3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+node_modules/
+.env
+.env.local
+.env.*.local
+.env.*
+tmp/
+*.log
+.DS_Store
+dist/
+build/
+.next/
+*.bak
diff --git a/twitter-token-reminder.sh b/twitter-token-reminder.sh
new file mode 100755
index 0000000..2318970
--- /dev/null
+++ b/twitter-token-reminder.sh
@@ -0,0 +1,51 @@
+#!/usr/bin/env bash
+# One-shot reminder set on 2026-05-01: 1-week followup on the missing
+# TWITTER_BEARER_TOKEN that's keeping norma-twitter functionally crippled.
+# Sends email via George (local Mac, :9850), then self-removes.
+set -uo pipefail
+
+LABEL="com.steve.twitter-token-reminder"
+PLIST="$HOME/Library/LaunchAgents/${LABEL}.plist"
+LOG="$HOME/Projects/launchd-reminders/logs/twitter-token.log"
+
+exec >> "$LOG" 2>&1
+echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] firing twitter-token reminder"
+
+read -r -d '' BODY <<'EOF'
+One week ago (2026-05-01), `norma-twitter` was logging
+`No TWITTER_BEARER_TOKEN configured — read operations will fail` on every poll
+cycle (358 KB error log). The log-spam was patched (warning now emits once per
+boot), but the underlying functional gap remains: the agent can't read tweets.
+
+**Action items**
+1. Get a Twitter API v2 bearer token from https://developer.twitter.com — use
+   the Norma natalia@studentdebtcrisis.org dev account if Norma's the
+   intended owner.
+2. Paste the token into chat with Claude as `TWITTER_BEARER_TOKEN=AAA...`. The
+   /secrets skill auto-routes it to Norma's `loadCredentials('twitter')` path.
+3. `pm2 restart norma-twitter` once the token is in place.
+4. Verify: tail ~/.pm2/logs/norma-twitter-out.log — the boot warning should be
+   absent (token loaded successfully).
+
+**Or**: if Norma doesn't actually need Twitter reads, kill the agent:
+`pm2 delete norma-twitter && pm2 save`
+EOF
+
+RESP=$(curl -sS -X POST 'http://localhost:9850/api/send' \
+  -u 'admin:DWSecure2024!' \
+  -H 'Content-Type: application/json' \
+  -d "$(jq -n --arg to 'steve@designerwallcoverings.com' \
+                --arg subject 'norma-twitter: still missing TWITTER_BEARER_TOKEN (1 week)' \
+                --arg body "$BODY" \
+                '{to:$to, subject:$subject, body:$body}')" 2>&1)
+RC=$?
+echo "George response (rc=$RC): $RESP"
+
+if [ "$RC" -eq 0 ]; then
+  launchctl bootout "gui/$(id -u)/$LABEL" 2>/dev/null || true
+  rm -f "$PLIST"
+  rm -f "$0"
+  echo "self-cleaned: removed plist + script"
+else
+  echo "send failed; leaving plist in place — investigate then rm manually"
+fi
diff --git a/wolf-gordon-reauth-reminder.sh b/wolf-gordon-reauth-reminder.sh
new file mode 100755
index 0000000..7117754
--- /dev/null
+++ b/wolf-gordon-reauth-reminder.sh
@@ -0,0 +1,51 @@
+#!/usr/bin/env bash
+# One-shot reminder set on 2026-05-01: 2-week followup on the wolf_gordon_catalog
+# disable inside gemini-catalog-tagger. Sends email via George (local Mac, :9850),
+# then self-removes its launchd plist + this script.
+set -uo pipefail
+
+LABEL="com.steve.wolf-gordon-reauth-reminder"
+PLIST="$HOME/Library/LaunchAgents/${LABEL}.plist"
+LOG="$HOME/Projects/launchd-reminders/logs/wolf-gordon-reauth.log"
+
+exec >> "$LOG" 2>&1
+echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] firing wolf-gordon-reauth reminder"
+
+read -r -d '' BODY <<'EOF'
+Two weeks ago (2026-05-01), `wolf_gordon_catalog` was disabled in
+`gemini-catalog-tagger` because the Wolf Gordon CDN was returning 401 for
+every swatch image (29 MB error log, 7 pm2 restarts in 147 min).
+
+**Action items**
+1. Get Wolf Gordon trade-portal credentials (or confirm DW already has them).
+2. Test fetch with auth on a sample URL:
+   `curl -I -H "Cookie: <auth>" https://cdn2-optimize.wolfgordon.com/production/product/swatches/act-5077.jpg?w=1200&h=1200&fm=jpg&auto=compress&fit=crop`
+3. If 200, re-enable wolf_gordon_catalog in:
+   - `~/Projects/Designer-Wallcoverings/shopify/scripts/gemini-catalog-tagger.js` (line 51)
+   - `~/kamatera-mirror/Projects/Designer-Wallcoverings/shopify/scripts/gemini-catalog-tagger.js` (mirror)
+4. `pm2 restart gemini-catalog-tagger`
+
+**Or**: if Wolf Gordon is no longer a vendor, delete the comment + line entirely.
+EOF
+
+# Send via George — local Mac instance, NOT the Kamatera tailnet IP
+RESP=$(curl -sS -X POST 'http://localhost:9850/api/send' \
+  -u 'admin:DWSecure2024!' \
+  -H 'Content-Type: application/json' \
+  -d "$(jq -n --arg to 'steve@designerwallcoverings.com' \
+                --arg subject 'Re-eval Wolf Gordon trade auth (gemini-catalog-tagger was paused 2 weeks ago)' \
+                --arg body "$BODY" \
+                '{to:$to, subject:$subject, body:$body}')" 2>&1)
+RC=$?
+echo "George response (rc=$RC): $RESP"
+
+# Self-clean: unload + remove plist + remove this script.
+# Don't unload-then-rm in same shell process or launchd may re-fire on next reboot.
+if [ "$RC" -eq 0 ]; then
+  launchctl bootout "gui/$(id -u)/$LABEL" 2>/dev/null || true
+  rm -f "$PLIST"
+  rm -f "$0"
+  echo "self-cleaned: removed plist + script"
+else
+  echo "send failed; leaving plist in place — investigate then rm manually"
+fi

(oldest)  ·  back to Launchd Reminders  ·  snapshot: 1 file(s) changed, +1 new 9433ab6 →