Skip to content

Instantly share code, notes, and snippets.

View willwade's full-sized avatar
🌏
Working on dasher and a lot of fun aac stuff.

will wade willwade

🌏
Working on dasher and a lot of fun aac stuff.
View GitHub Profile
name google-drive-api
description Search, list, inspect, and download files from a user's Google Drive via the Drive REST API (auto-refreshing OAuth). Use when the user asks to find, look up, read, or download a Google Drive file or Google Doc/Sheet/Slide by name or content; returns clean id+name listings and can export Docs to markdown. Bypasses the remote Drive MCP (which has a broken OAuth flow in opencode).

Google Drive API

Search and download files from Google Drive using the Drive v3 REST API with a stored OAuth refresh token. No remote MCP required — this sidesteps opencode's broken remote-MCP OAuth flow entirely.

@willwade
willwade / Addendum.md
Last active August 2, 2026 16:16
Addendum idea

6.5 Contention Resolution and System Arbitration

In environments where multiple switch-aware applications are running simultaneously (e.g., a background AAC proxy app controlling a foreground web browser), the OS-SD MUST arbitrate input routing to prevent collisions. Apps MUST NOT self-declare priority; instead, they MUST declare their functional intent via the ⁠requested_mode⁠ field in the ⁠SwitchControlManifest⁠.

6.5.1 Subscription Tiers

To support both standard foreground applications and background "Computer Control" paradigms, the OS-SD MUST support the following three subscription tiers:

  1. ⁠exclusive_foreground⁠: The Client App receives switch events ONLY when it holds active OS window focus. If focus is lost, the OS-SD pauses the event stream to this app until focus returns.
  2. ⁠primary_controller⁠ (Focus-Agnostic): The Client App receives exclusive global access to the switches, regardless of whether it is in the foreground or background (e.g., Grid 3 or VoiceGarden driving the OS). This ti
@willwade
willwade / Project-Abstract-Methodology.md
Last active October 2, 2025 08:38
Details on NHS CARM

Project Abstract and Methodology

Title

Building a Unified AAC Research Data Infrastructure for the NHS

Abstract

Specialised AAC services across the NHS hold valuable data on the people they support, the interventions provided, and the technology prescribed. However, this data is fragmented across local SQL databases, Word/PDF case notes, and file storage systems. This fragmentation makes it difficult to answer critical national questions such as:

  • Who are the clients currently using AAC?
  • What is the distribution of diagnoses (e.g., cerebral palsy GMFCS III–V, MND bulbar vs spinal onset)?
@willwade
willwade / notes.md
Created September 11, 2025 08:03
CouchDB issues

Analysis Summary

1. Primary Sources of Data Storage in CouchDB

Data Types Being Stored:

  • GridData: Complete grid configurations including elements, images, thumbnails, and additional files
  • MetaData: Global user settings, input configurations, color schemes, and integration settings
  • Dictionary: Word prediction dictionaries with JSON data
  • EncryptedObject: All data is encrypted and stored as base64-encoded strings
@willwade
willwade / mediapipe-test.html
Created August 31, 2025 22:47
full mediapipe face mesh test in js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MediaPipe FaceLandmarker Test</title>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/vision_bundle.js" crossorigin="anonymous"></script>
<script>
// Wait for MediaPipe to load and expose globals
window.addEventListener('load', () => {
@willwade
willwade / issue6-demo.js
Created July 2, 2025 08:19
A way of testing issue 6
#!/usr/bin/env node
/**
* Issue 6 Reproduction Demo
*
* This demo reproduces the exact testing scenarios described in issue6.md
* to verify that the fixes work correctly across different engines and formats.
*
* Tests performed:
* 1. client.speak() tests with WAV format (SSML, SMD, Plaintext)
@willwade
willwade / toggleYT.sh
Created February 19, 2025 22:00
Toggle NextDNS deny domain
#!/bin/bash
# Configuration - Replace with your actual API key and Profile ID
API_KEY="apikey"
PROFILE_ID="id"
DOMAIN="youtube.com"
# Function to get current block status
get_status() {
curl -s -X GET "https://api.nextdns.io/profiles/$PROFILE_ID/denylist" \
@willwade
willwade / 1Instructions.md
Last active February 17, 2025 14:14
Make installing elevenlabs button with bridgingvoice easier. youll need https://github.com/willwade/AACProcessors
To use

1. Install python 
2. open a cmd line 
3. run pip install aacprocessors
4. Copy and paste this text below into a notepad file. Edit your xml as you wish. 
5. run it like python replaceSpeakButtonGridset.py 
@willwade
willwade / FindSapi4CLSID.py
Created December 1, 2024 08:24
Seek out the clsid for sapi4
import winreg
def find_sapi4_clsid() -> str:
"""
Search the Windows registry for the SAPI 4 CLSID.
Returns:
str: The CLSID for SAPI 4 if found, else raises an exception.
"""
sapi4_key_path = r"SOFTWARE\WOW6432Node\Microsoft\Speech\Voices\Tokens"
@willwade
willwade / comsapi4test.py
Created November 30, 2024 19:05
Com surrogate technique
import comtypes.client
# SAPI 4 CLSID for the voice
SAPI4_CLSID = "{EEE78591-FE22-11D0-8BEF-0060081841DE}"
def list_sapi4_voices():
"""List available SAPI 4 voices."""
try:
sapi4 = comtypes.client.CreateObject(SAPI4_CLSID)
voices = sapi4.GetVoices()