chore: auto-commit uncommitted changes
This commit is contained in:
parent
9d88f2c349
commit
5a063b83f9
|
|
@ -142,6 +142,11 @@ Search X/Twitter for news Johan cares about:
|
|||
- @moltbot — Mr. Lobster, Clawdbot/Moltbot creator
|
||||
- @realDonaldTrump — What's Trump posting/doing
|
||||
|
||||
**OpenClaw Issues (check weekly):**
|
||||
- Session reset deleting transcripts from memory search index (our patch: include `.deleted` files)
|
||||
- `dangerouslyDisableDeviceAuth` clearing operator scopes (our patch: preserve scopes)
|
||||
- Watch releases + GitHub issues for official fixes → remove patches when fixed upstream
|
||||
|
||||
**Netherlands:**
|
||||
- Dutch news (usually quiet, but flag anything significant)
|
||||
- Tax on unrealized profits (vermogensbelasting box 3) — this is a big deal
|
||||
|
|
|
|||
8
TOOLS.md
8
TOOLS.md
|
|
@ -349,3 +349,11 @@ Add whatever helps you do your job. This is your cheat sheet.
|
|||
- **Automation:** `automation.govee_button_2_suction_machine` → toggles suction machine
|
||||
- **Pairing:** Hold 5 sec (LED flashes), press once to broadcast, add from HA UI quickly
|
||||
- **Note:** BLE proxy must be enabled on nearby Athom sensor (Office1 b372f4 has it now)
|
||||
|
||||
### Office Tablet (office1.tbl)
|
||||
- **Media player:** `media_player.lenovo_tab_m8_7`
|
||||
- **TTS notify:** `notify.lenovo_tab_m8_text_to_speech_7`
|
||||
- **Overlay notify:** `notify.lenovo_tab_m8_overlay_message_7`
|
||||
- **Screen:** `light.office_tbl_screen`
|
||||
- **Fully Kiosk media_player:** `media_player.office_tbl`
|
||||
- **Use for:** James voice output testing, announcements
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
# 2026-02-16
|
||||
|
||||
## Briefing Preference
|
||||
- Johan prefers X/Twitter as primary news source for briefings over legacy media
|
||||
- Speed matters — X breaks news hours before traditional outlets
|
||||
- Lean into high-engagement posts, real-time threads, not CNN/Reuters rewrites
|
||||
|
||||
## OpenClaw Source Patches (reapply after updates)
|
||||
1. **Scope preservation with dangerouslyDisableDeviceAuth**
|
||||
- File: `dist/gateway-cli-DbznSfRg.js`
|
||||
- Change: `if (scopes.length > 0)` → `if (scopes.length > 0 && !disableControlUiDeviceAuth)`
|
||||
- Why: Without this, `dangerouslyDisableDeviceAuth` nullifies device → clears scopes → operator.read/write denied
|
||||
|
||||
2. **Index deleted session transcripts in memory search**
|
||||
- File: `dist/sqlite-C54NeA1C.js`
|
||||
- Change: `.filter((name) => name.endsWith(".jsonl"))` → `.filter((name) => name.endsWith(".jsonl") || name.includes(".jsonl.deleted."))`
|
||||
- Why: Daily session reset marks old transcripts as `.deleted`, making them invisible to memory search
|
||||
|
||||
## TTS → Tablet Pipeline (idea)
|
||||
- Generate high-quality TTS (Fish Audio S1 / ElevenLabs) → mp3
|
||||
- Serve from forge (dashboard server or simple http)
|
||||
- Play via `media_player.play_media` on Fully Kiosk tablets
|
||||
- Tablets: `media_player.lenovo_tab_m8_*` (many), `media_player.casita_tbl`, etc.
|
||||
- **Office tablet only for testing** (people sleeping!)
|
||||
- Could become James's "voice" — intercom-style announcements with a premium voice
|
||||
- Need to identify which media_player entity maps to the office tablet
|
||||
|
||||
## Smart Home Voice Vision
|
||||
- Goal: push smart home to next level with contextual voice announcements
|
||||
- Pipeline proven: Edge TTS → mp3 → media_player on Fully tablets ✅
|
||||
- Use cases:
|
||||
- "The UPS driver is approaching the front door" (before doorbell)
|
||||
- "Misha is arriving" (car in driveway)
|
||||
- "The dryer upstairs finished" (Miele integration)
|
||||
- Russian announcements for MiL/FiL (ru-RU voices)
|
||||
- Delivery alerts tied to tracker
|
||||
- Russian voices for in-laws — house speaks their language
|
||||
- Need Tanya's buy-in before expanding beyond office tablet
|
||||
- Fish Audio S1 ($5/mo) for premium voice quality when ready
|
||||
|
||||
## Wake Permission
|
||||
- Johan allows James to wake him from **8:00 AM ET** onwards
|
||||
- Only for **genuinely important** events (Kaseya critical, urgent emails, etc.)
|
||||
- No FYI-level noise — real alerts only
|
||||
|
||||
## Fish Audio S1 — LIVE ✅
|
||||
- API key: stored in memory (need to add to Vaultwarden when session refreshed)
|
||||
- Voice: **Adrian** (reference_id: `bf322df2096a46f18c579d0baa36f41d`)
|
||||
- Model: `s1`
|
||||
- Pricing: $5/M UTF-8 bytes (pay-as-you-go, no subscription needed)
|
||||
- API: `POST https://api.fish.audio/v1/tts` with Bearer auth
|
||||
- Successfully generated and played on office tablet (media_player.lenovo_tab_m8_7)
|
||||
- Johan picked Adrian over Ethan, Andrew (Edge), Guy (Edge), Brian (Edge), Christopher (Edge)
|
||||
- Pipeline: Fish API → mp3 → python http server on :8199 → media_player.play_media
|
||||
- TODO: Make persistent TTS service (not ad-hoc python server), store key in Vaultwarden
|
||||
Binary file not shown.
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"last_updated": "2026-02-16T05:00:03.479295Z",
|
||||
"last_updated": "2026-02-16T11:00:04.103753Z",
|
||||
"source": "api",
|
||||
"session_percent": 4,
|
||||
"session_resets": "2026-02-16T08:00:00.446402+00:00",
|
||||
"weekly_percent": 16,
|
||||
"weekly_resets": "2026-02-21T19:00:00.446421+00:00",
|
||||
"sonnet_percent": 6
|
||||
"session_percent": 12,
|
||||
"session_resets": "2026-02-16T13:00:01.072322+00:00",
|
||||
"weekly_percent": 19,
|
||||
"weekly_resets": "2026-02-21T19:00:00.072342+00:00",
|
||||
"sonnet_percent": 7
|
||||
}
|
||||
|
|
@ -104,3 +104,9 @@ When Johan pushes back, log the **principle**, not just the symptom.
|
|||
**Why:** Weekends + holidays = night shift runs until 7AM (not 5AM). I had the schedule and still got it wrong.
|
||||
**Applies to:** Any time-of-day assumptions, "good morning", "get some rest", etc.
|
||||
**Test:** Before any time-based pleasantry, check: what block is Johan in RIGHT NOW? Weekend/holiday = 7AM cutoff.
|
||||
|
||||
### PRINCIPLE: Code-fence all copy-paste values
|
||||
**Trigger:** Admin token for Vaultwarden got line-wrapped with a space mid-string, breaking copy-paste
|
||||
**Why:** Johan copies tokens/URLs/passwords from chat. Line wrapping inserts invisible spaces that break them silently.
|
||||
**Applies to:** Any value Johan needs to copy: tokens, passwords, URLs, API keys, commands
|
||||
**Test:** "Is this a value Johan will copy-paste? If yes, wrap in backticks/code block."
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ if [ "$OC_BEFORE" != "$OC_LATEST" ] && [ "$OC_LATEST" != "unknown" ]; then
|
|||
update_json "openclaw.after" "\"$OC_AFTER\""
|
||||
update_json "openclaw.updated" "true"
|
||||
echo "Updated: $OC_BEFORE → $OC_AFTER"
|
||||
# Reapply source patches
|
||||
/home/johan/clawd/scripts/openclaw-post-update-patches.sh 2>&1
|
||||
else
|
||||
update_json "openclaw.updated" "false"
|
||||
update_json "openclaw.error" "\"npm update failed\""
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
#!/bin/bash
|
||||
# OpenClaw post-update patches
|
||||
# Run after every openclaw update to reapply source fixes
|
||||
# These should be removed once officially fixed upstream
|
||||
|
||||
OC_DIR=$(npm -g root 2>/dev/null)/openclaw/dist
|
||||
PATCHED=0
|
||||
|
||||
# Patch 1: Preserve operator scopes with dangerouslyDisableDeviceAuth
|
||||
FILE="$OC_DIR/gateway-cli-DbznSfRg.js"
|
||||
if [ -f "$FILE" ] && grep -q 'if (scopes.length > 0) {' "$FILE" 2>/dev/null; then
|
||||
sed -i 's/if (scopes.length > 0) {/if (scopes.length > 0 \&\& !disableControlUiDeviceAuth) {/' "$FILE"
|
||||
echo "✅ Patch 1: Scope preservation applied"
|
||||
PATCHED=$((PATCHED + 1))
|
||||
else
|
||||
echo "⏭️ Patch 1: Already applied or file changed"
|
||||
fi
|
||||
|
||||
# Patch 2: Index deleted session transcripts in memory search
|
||||
FILE="$OC_DIR/sqlite-C54NeA1C.js"
|
||||
if [ -f "$FILE" ] && grep -q '\.filter((name) => name\.endsWith("\.jsonl"))' "$FILE" 2>/dev/null; then
|
||||
sed -i 's/\.filter((name) => name\.endsWith("\.jsonl"))/\.filter((name) => name.endsWith(".jsonl") || name.includes(".jsonl.deleted."))/' "$FILE"
|
||||
echo "✅ Patch 2: Deleted transcript indexing applied"
|
||||
PATCHED=$((PATCHED + 1))
|
||||
else
|
||||
echo "⏭️ Patch 2: Already applied or file changed"
|
||||
fi
|
||||
|
||||
echo "Patches applied: $PATCHED"
|
||||
|
||||
# Note: After patching, gateway needs restart
|
||||
# The daily-updates.timer already restarts if OC changed
|
||||
Loading…
Reference in New Issue