Related: Guide 4 (the ts03 pack), Guide 5 and Guide 6 (iPhone, Tailscale), Guide 10 (formats, HTML), Guide 13 (bot messages), Guide 14 (routing and fixes). Class schedules: Guide 16. Jev router: Guide 17. Every guide and diagram by name: docs index.
Contents: 1 Map · 2 Which door · 3 iPhone · 4 MacBook Pro · 5 GUI · 6 CLI · 7 Bot · 8 Prompts · 9 Recipes · 10 Quick fixes
1. The map
Ways in: where each surface connects
2. Which door for which job
| Job | iPhone SSH or Mac terminal | GUI | |
|---|---|---|---|
| Ask what's due | ts03-week, ts03 <question> |
/week, @bot <question> |
HTML report in Safari, the Sheet |
| Change a row | ts03-done GPU Quiz |
/done GPU Quiz (owner only) |
edit the Sheet directly |
| Draft a reminder | ts03-wa |
/remind |
none |
| Study help | none | /prep <topic> |
none |
| Lectures, holidays, exams | none | /nlp, /cv, @bot when is the next NLP lecture? |
the course schedule Sheet |
| Share a styled report | ts03-week --html, then ts03-link |
/html week (owner only) |
Safari |
| Check the bot | launchctl, kubectl, logs |
/stats, /health (owner only) |
WAHA dashboard |
| Refresh the schedule cache | ./scripts/ts03-schedule-index NLP (Mac), or launchctl start com.ts03.schedule-index (also over SSH) |
none | the course schedule Sheet |
| Add study material | launchctl start com.ts03.material-index after uploading |
none | Drive subject folders |
| Publish the docs | Mac terminal only | none | GitHub releases page |
3. iPhone (Termius over SSH)
3.1 Once
On the Mac, turn on System Settings, General, Sharing, Remote Login, then:
sudo systemsetup -getremotelogin # Remote Login: On
hostname # e.g. Your-MacBook.local
ipconfig getifaddr en0 # e.g. 192.168.1.20
mkdir -p ~/.ssh && chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys # paste the ONE public-key line from Termius
chmod 600 ~/.ssh/authorized_keys
In Termius: Hostname Your-MacBook.local (or the IP), Port 22, Username from whoami, your key. Set the Startup Snippet:
source ~/.zshrc && clear && ts03-health
Away from home, put Tailscale on the Mac and the iPhone (same account) and point Termius at the Mac's Tailscale address:
/Applications/Tailscale.app/Contents/MacOS/Tailscale ip -4 # the 100.x address
caffeinate -dimsu & # keep the Mac awake
Keep the Mac plugged in with the lid open. A closed lid on battery sleeps and the SSH session drops.
3.2 First connection
whoami && hostname
ts03-health # google-sheets ... ✔ Connected
ts03-brief
If it says Not logged in, run claude, type /login, open the URL in Safari and approve. Then ctrl d.
3.3 Snippets worth saving in Termius
| Name | Command |
|---|---|
| Brief | ts03-brief |
| Week | ts03-week |
| Urgent | ts03-urgent |
| Reminder | ts03-wa |
| Health | ts03-health |
| Report | ts03-week --html && ts03-link |
| Next | ts03-next |
| Audit | ts03-check |
| Bot log | tail -n 20 ~/Library/Logs/ts03-bot.log |
| WhatsApp pods | kubectl get pods -n waha |
| Digest jobs | kubectl get jobs -n waha |
3.4 Bot, cluster and schedules from the phone
tail -n 20 ~/Library/Logs/ts03-bot.log # what the bot just did
~/.local/bin/ts03-bot selftest # sandbox audit, must end with the green tick
launchctl kickstart -k gui/$(id -u)/com.ts03.bot.whatsapp # restart the bot
launchctl start com.ts03.material-index # re-read the Drive folders now
cat ~/Library/Logs/ts03-material-index.log # what it found
launchctl start com.ts03.schedule-index # refresh the class schedule cache now
cat ~/Library/Logs/ts03-schedule-index.log # what it found
~/.local/bin/ts03-bot router-status # Jev router: decisions logged and failures
kubectl get pods -n waha # WAHA should be 1/1 Running
kubectl get cronjob ts03-digest -n waha # the 08:00 and 22:00 schedule
kubectl get jobs -n waha # one Job per brief
SECRET=$(kubectl get secret waha-secrets -n waha -o jsonpath='{.data.WAHA_API_KEY}' | base64 -d)
curl -s http://localhost:3100/api/sessions/default -H "X-Api-Key: $SECRET" | head -c 200 # "status":"WORKING"
launchctl kickstart works while you are logged in on the Mac. If launchctl list | grep ts03 prints nothing over SSH, use launchctl print gui/$(id -u)/com.ts03.bot.whatsapp | grep -E "state|pid" instead.
3.5 What not to run over SSH
macOS blocks SSH sessions from reading ~/Desktop, ~/Documents and ~/Downloads (you will see Operation not permitted). Your repo lives in ~/Desktop, so over SSH do not run ./scripts/... or git. Use the installed copy (~/.local/bin/ts03-bot) and launchctl start as above, and do those jobs from the Mac's own terminal. Keep credentials in ~/.config/mcp-credentials/, never on the Desktop.
3.6 Siri shortcut
Shortcuts app, new shortcut: Run Script over SSH (host, user, SSH key) with source ~/.zshrc && ts03-brief, then Speak Text. Add the Shortcuts app's own public key to ~/.ssh/authorized_keys.
4. MacBook Pro
4.1 Local terminal, or SSH from another computer
The same commands as the iPhone work in Terminal or iTerm on the Mac. From another computer:
ssh <your-user>@Your-MacBook.local # or the Tailscale name or 100.x address
Run these from the repo folder on the Mac's own terminal:
| Script | What it does | Run |
|---|---|---|
scripts/install-bot.sh |
deploys the bot as a launchd service (copies scripts/ts03-bot to ~/.local/bin) |
./scripts/install-bot.sh whatsapp |
scripts/ts03-bot selftest |
proves the member sandbox has no tools, no MCP, no file access | scripts/ts03-bot selftest |
scripts/ts03-material-index |
reads Drive subject folders into the /prep cache |
./scripts/ts03-material-index or ./scripts/ts03-material-index GPU |
scripts/ts03-schedule-index |
reads a class schedule sheet through the Sheets API into the bot's cache | ./scripts/ts03-schedule-index NLP, plus --dry-run, --show NLP, --cell H22 |
scripts/ts03-docs-index |
writes docs/INDEX.md, every guide and diagram by name |
./scripts/ts03-docs-index, or --check |
scripts/ts03-bot router-… |
the optional Jev router: status, selftest, ask, eval | scripts/ts03-bot router-selftest, router-ask <message>, router-eval --limit 40, router-status |
scripts/install-report-server.sh |
always-on HTML report server on port 8765 | scripts/install-report-server.sh, remove with --uninstall |
scripts/ts03-render |
renders table, text, json, yaml, html (installed in ~/.local/bin) |
used by ts03 --table and friends |
k8s/k3d-cluster.sh |
creates the k3d cluster on Colima | see Guide 11 |
k8s/digest-cronjob.yaml |
the 08:00 and 22:00 brief | kubectl apply -f k8s/digest-cronjob.yaml |
Never use install-bot.sh whatsapp --uninstall to restart. It removes the service. Do not pass --digest: the CronJob owns the brief.
4.2 Services at a glance
| Service | Check | Run or restart | Log |
|---|---|---|---|
Bot (com.ts03.bot.whatsapp) |
launchctl list \| grep ts03.bot |
launchctl kickstart -k gui/$(id -u)/com.ts03.bot.whatsapp |
~/Library/Logs/ts03-bot.log |
Indexer (com.ts03.material-index) |
launchctl list \| grep material |
launchctl start com.ts03.material-index |
~/Library/Logs/ts03-material-index.log |
Schedule indexer (com.ts03.schedule-index) |
launchctl list \| grep schedule |
launchctl start com.ts03.schedule-index |
~/Library/Logs/ts03-schedule-index.log |
Report server (com.ts03.reports) |
ts03-server |
scripts/install-report-server.sh |
none |
Brief (CronJob ts03-digest) |
kubectl get cronjob ts03-digest -n waha |
kubectl create job --from=cronjob/ts03-digest ts03-digest-manual -n waha (posts to the group) |
grep digest ~/Library/Logs/ts03-bot.log \| tail |
| WAHA | kubectl get pods -n waha |
kubectl rollout restart deployment/waha -n waha |
kubectl logs -n waha deploy/waha -f |
5. GUI
| Surface | Where | Use it for |
|---|---|---|
| WhatsApp app | the group or a DM with the bot | the bot, every command in Guide 13 |
| Safari or Chrome | http://<your-mac>:8765/latest.html (ts03-link prints it) |
the styled HTML report |
| Termius app | iPhone | SSH to the Mac |
| Shortcuts and Siri | "tracker brief" | a spoken brief |
| Google Sheet | web or app | the source of truth. You can edit rows by hand instead of /add, /done |
| Google Drive | web or app | drop slides and books into the subject folders, then re-index |
| Google Classroom | web or app | verify every deadline the bot shows |
| Course schedule Sheet | web or app (view only for you) | the source for /nlp and /cv: lectures, holidays, exams, slides, recordings |
| WAHA dashboard | http://localhost:3100/dashboard on the Mac |
session status, re-linking the QR, event monitor at /dashboard/event-monitor |
| WAHA Swagger | http://localhost:3100/ on the Mac |
send a test message by hand |
| GitHub | the repo and its releases page | the docs, release notes |
The dashboard asks you to connect with the API key. Get it with kubectl get secret waha-secrets -n waha -o jsonpath='{.data.WAHA_API_KEY}' | base64 -d. Its username is admin and the password is printed at the top of kubectl logs -n waha deploy/waha unless you set WAHA_DASHBOARD_PASSWORD yourself. Do not paste either value into chats or commits.
6. CLI reference
6.1 The ts03 pack and the prompt each command sends
Every command ends up as claude -p --model sonnet "TS-03 tracker: <prompt>" with your ~/.claude/CLAUDE.md loaded.
| Command | Prompt it sends |
|---|---|
ts03 <anything> |
TS-03 tracker: <anything> |
ts03i, ts03-fix |
opens an interactive claude session for multi-step edits |
ts03-today |
list items due today with subject, type, time and notes |
ts03-tomorrow |
list items due tomorrow |
ts03-week |
list items due in the next 7 days sorted by due date with days left |
ts03-next |
what is the single next deadline and how many days and hours are left |
ts03-overdue |
list items whose due date has passed but status is still Upcoming |
ts03-urgent |
list items due within 3 days, most urgent first |
ts03-brief |
give me a morning brief: due today, due this week, anything overdue, and one line on what to focus on first. keep it under 10 lines |
ts03-month |
list everything due in the next 30 days grouped by week |
ts03-all |
show all rows of the main tab as a compact table |
ts03-load |
count upcoming items per subject and per week, and flag any week with 3 or more deadlines |
ts03-plan |
build a simple day-by-day study plan for the next 7 days based on deadlines and points |
ts03-points |
list upcoming items sorted by points or weightage, highest first |
ts03-subjects |
list all subjects with professors from the reference tab |
ts03-tbd |
list rows where any field is TBD, blank or missing |
ts03-sub <subject> |
list all items for subject <subject> with due date, status and days left |
ts03-prof <subject> |
who teaches <subject> and what is currently due for that subject |
ts03-find <text> |
search all rows and notes for: <text> |
ts03-add <item> |
add this item, fill defaults, then show the row you added: <item> |
ts03-done <item> |
set status to Completed for: <item> then show the updated row |
ts03-submit <item> |
set status to Submitted for: <item> then show the updated row |
ts03-move <change> |
change the due date or time as follows, then show the updated row: <change> |
ts03-note <item>: <text> |
append this to the Notes column of the matching item: <item>: <text> |
ts03-check |
audit the main tab: wrong date formats, missing times, duplicate or out-of-order # numbers, subjects not in the reference tab. report only, do not change anything |
ts03-health |
claude mcp list \| grep google-sheets |
ts03-wa |
draft a short WhatsApp reminder for the group covering deadlines in the next 7 days. plain text, emojis ok, under 8 lines. Nothing is sent |
ts03-short |
draft a one-line reminder for each item due in the next 3 days |
ts03-link |
prints the report URL, http://$TS03_HOST:8765/latest.html |
ts03-server |
shows the report server's launchd job and who holds port 8765 |
6.2 Layouts
The flag works at the start or the end, on ts03 and on every alias above:
ts03 --table list all upcoming items
ts03-week --json
ts03-sub GPU Programming --text
ts03 what is due this week --yaml
ts03-week --html && ts03-link # saved as ~/ts03-reports/latest.html
Layouts are --table, --text, --json, --yaml and --html. TS03_FORMAT=json sets a default for the session.
6.3 Claude Code
claude -p "say hi" # one-shot, no session
claude # interactive, then /login if asked
claude mcp list # google-sheets and google-drive should say Connected
claude mcp list | grep google-
6.4 Checks
scripts/ts03-bot selftest # on the Mac
~/.local/bin/ts03-bot selftest # same thing, works over SSH
python3 -m json.tool ~/.cache/ts03-material/GPU.json | head # what /prep can see
./scripts/ts03-schedule-index --show NLP # what the bot has cached for the class schedule
ls -l ~/.cache/ts03-schedule # the cache files and their age
ls -A | grep '^\.tmp_' # in the repo, should print nothing
6.5 Git and releases (Mac terminal)
git status --short
git add README.md docs # add folders by name, never git add -A
git commit -m "message"
git push
NEXT=$(git tag -l 'v*' | sort -V | tail -1 | awk -F. '{printf "%s.%d", $1, $2+1}'); echo "$NEXT"
git tag "$NEXT" && git push origin "$NEXT"
open "https://github.com/rpaut03l/google-sheets-mcp-guide/releases/new?tag=$NEXT"
6.6 Class schedule indexer
| Command | What it does |
|---|---|
./scripts/ts03-schedule-index |
refresh every subject in ~/.config/ts03-schedules.json |
./scripts/ts03-schedule-index NLP |
one subject |
./scripts/ts03-schedule-index NLP --dry-run |
fetch and parse, print the summary, write nothing |
./scripts/ts03-schedule-index --show NLP |
summarise the cache, no network |
./scripts/ts03-schedule-index NLP --cell H22 |
print one raw cell as Google returns it, to check smart chips |
./scripts/ts03-docs-index |
write docs/INDEX.md, the list of every guide and diagram |
Setup and the config file are in Guide 16.
6.7 Jev router
| Command | What it does |
|---|---|
scripts/ts03-bot router-status |
config, key present, decisions logged, agreement with the rules, recent differences |
scripts/ts03-bot router-selftest |
one live call with two probe messages, finds the working request style |
scripts/ts03-bot router-ask <message> |
probabilities, the rules' view and the decision for one message |
scripts/ts03-bot router-eval --limit 40 |
replay the bot log through Jev: same, DIFF or ASK |
nano ~/.config/ts03-router.json |
"mode" is off, shadow or on. Read on every message, no restart |
~/.local/bin/ts03-bot takes the same commands over SSH. The key TS03_ROUTER_KEY lives in ~/.config/ts03-bot.env. Setup is in Guide 17.
7. The bot, and the question each command asks
Start with @bot or a /command. The full list with paste-ready group messages is Guide 13, and how a message is routed is Guide 14. For members each command below puts the question in the second column to the sandboxed model, with the snapshot as data. For you the slash commands run the terminal twin against the live sheet.
| Bot command | Question it asks | Terminal twin |
|---|---|---|
/today |
What is due today? | ts03-today |
/tomorrow |
What is due tomorrow? | ts03-tomorrow |
/week |
What is due in the next 7 days? | ts03-week |
/month |
What is due in the next 30 days? | ts03-month |
/next |
What is the single next deadline? | ts03-next |
/urgent |
What is due within the next 3 days, most urgent first? | ts03-urgent |
/overdue |
Which items are past their due date but still not completed? | ts03-overdue |
/brief |
Give a short brief: overdue, due today, due this week. | ts03-brief |
/all |
List every item in the tracker, all statuses. | ts03-all |
/points |
List upcoming items sorted by points or weightage, highest first. | ts03-points |
/tbd |
List items where any field is TBD, blank or missing. | ts03-tbd |
/plan |
Build a simple day-by-day study plan for the next 7 days based on deadlines and points. Max 12 lines. | ts03-plan |
/load |
Count upcoming items per subject and per week, and flag any week with 3 or more deadlines. Max 10 lines. | ts03-load |
/remind |
Draft a short friendly WhatsApp reminder for the group covering deadlines in the next 7 days. Emojis ok, under 8 lines. | ts03-wa |
/sub X |
List all items for the subject 'X' with due dates, status and days left. | ts03-sub X |
/prof X |
Who teaches 'X', and what is currently due for that subject? (answered locally from the subject list) | ts03-prof X |
/find X |
Search all item titles and notes for 'X' and list the matches. | ts03-find X |
/ask Q |
Q as written. For you: Read only, do not modify the sheet: Q |
ts03 Q |
/subjects |
answered locally from the snapshot's subject list, no AI | ts03-subjects |
/prep T |
study guide for T, from Drive material when the topic matches a folder | none |
/nlp, /cv, /nlu |
the area word, then: What are the next 3 lectures, and are there any holidays, exams or breaks in the next 2 weeks? | none |
/nlp Q, /schedule NLP Q |
the area or subject word, then Q as written | none |
/add /done /submit /move /note (owner) |
the write prompts in 6.1 | ts03-add and friends |
8. Prompts
8.1 Read, in plain English (terminal)
ts03 how many rows are in my tracker
ts03 anything due this weekend
ts03 which items are worth the most points this month
ts03 list items for Advanced AI with their notes
ts03 which subjects have nothing due in the next 14 days
ts03 how many days until the next quiz
ts03 compare the points due this week with next week
ts03 --table list every assignment that is not yet submitted
ts03 --json list items due before 15-Oct-2026
8.2 Write (terminal, and / commands for the owner)
ts03-add GPU Quiz-02 on 11-Oct-2026 at 18:00 IST, 10 MCQs
ts03-done Ethics assignment
ts03-submit GPU assignment
ts03-move GPU Quiz to 12-Oct-2026 19:00 IST
ts03-note Innovation assignment: group of 4 finalised
In WhatsApp the same with a slash: /add …, /done …, /submit …, /move …, /note …. Writes are insert and update only. Deleting is blocked, and column J, the reference tab and the archive tab are never written. Be specific when two rows could match (GPU Quiz-02, not GPU Quiz), and send /refresh afterwards so members see the change.
8.3 Ask the bot in plain words (members and owner)
@bot any GPU Programming quiz coming up?
@bot what's due before Friday?
@bot is anything overdue?
@bot which items carry the most points?
@bot IP ka assignment kaise karna hai?
@bot GPU quiz kab hai?
@bot who teaches Advanced AI?
@bot when is the next NLP lecture?
@bot who teaches CV?
@bot is there NLP class on 9 October?
@bot who built you?
@bot can you edit the sheet?
Questions in Hindi or Hinglish get a Hinglish answer, and French gets French. "How do I do X" questions return the requirements and steps from the item's notes, never the finished work.
8.4 Study prompts
/prep CUDA
/prep GPU warp divergence
/prep memory coalescing
/prep patents vs copyright
/prep what is a trademark
@bot prepare me on tiled matrix multiplication
@bot explain me intellectual property rights from scratch
/prep GPU warp divergence table
/prep CUDA json
/prep explains concepts and declines to solve a pasted quiz, exam or assignment question.
8.5 Maintenance prompts for Claude on the Mac
claude -p "Using the Google Drive tools, list every file directly inside the top-level Drive folder named GPU in My Drive."
claude -p "say hi"
claude mcp list
The first confirms the Drive connector works under the same settings the indexer uses. It lists names only and changes nothing.
8.6 Phrases that change the route
- A message containing subject, course, professor, who teaches or TA is answered from the subject list, not by the model. If it also names NLP, NLU or CV, the schedule answers it.
- "How do I prepare for X" goes to
/prep, not to the tracker notes. Use "GPU quiz kaise karna hai" or "what do I need to submit for the GPU assignment" for the notes. table,jsonandyamlchange the layout of list answers only./plan,/loadand/remindare always plain text.
8.7 Class schedule prompts
/nlp
/cv
/nlp when is the minor exam
/nlp is there class on 9 October
/nlp how many lectures are left
/nlp slides for lecture 15
/nlp recording of lecture 7
/nlp who is teaching lecture 20
@bot when is the next NLP lecture?
@bot when is the next CV lecture?
@bot who teaches CV?
@bot who teaches NLU?
@bot is there FoVL class tomorrow?
@bot NLP mid sem break kab hai?
@bot when does the FoVL major exam start?
Name the subject or area (NLP, NLU, CV, FoVL). A bare "is there class tomorrow?" goes to the tracker, which has no class schedule. With the Jev router on, the bot asks which subject instead.
8.8 Jev router test messages
Send these in your DM once the router is on (Guide 17):
@bot NLU/NLP InClassActivity2 kaise karna hai?
@bot NLP lecture or assignment due?
@bot when is the next NLU lecture?
@bot who teaches CV?
@bot is there class on 9 October?
@bot explain the concept of perplexity
@bot who is the professor for GPU programming?
@bot tell me about nlp
Expected: the tracker, the tracker, the professors' sheet, the professors' sheet, a question back about the subject, /prep, the subject list, a question back about tracker or course sheet. Check each decision with scripts/ts03-bot router-status.
9. Recipes
Morning, from the iPhone
1. Open Termius, connect to the Mac. The startup snippet runs ts03-health.
2. ts03-brief, then ts03-urgent if anything is red.
3. If you want it styled: ts03-week --html && ts03-link, then open the link in Safari.
A new announcement
1. ts03-add GPU Quiz-02 on 11-Oct-2026 at 18:00 IST, 10 MCQs (or /add … in WhatsApp).
2. Check the row it shows back.
3. /refresh in WhatsApp so members see it.
4. ts03-wa and forward the draft, or let the 08:00 and 22:00 brief carry it.
After you submit something
1. ts03-submit GPU assignment
2. /refresh
Friday audit
1. ts03-check (report only).
2. Fix what it lists with ts03-move and ts03-note, or in the Sheet.
3. ts03-wa for next week's reminder.
Add study material for a subject
1. Create or open the Drive folder and drop in PDFs. Prefer text PDFs over PowerPoint.
2. Make sure the folder name is in ~/.config/ts03-subject-routes.json.
3. On the Mac: ./scripts/ts03-material-index "<folder name>". From the phone: launchctl start com.ts03.material-index, then cat ~/Library/Logs/ts03-material-index.log.
4. Restart the bot so it re-reads the routes: launchctl kickstart -k gui/$(id -u)/com.ts03.bot.whatsapp.
5. Test /prep <topic> and look for 📎 FROM YOUR MATERIAL.
The bot went quiet
1. kubectl get pods -n waha, then the session curl in 3.4.
2. If WAHA shows a QR: kubectl rollout restart deployment/waha -n waha, kubectl logs -n waha deploy/waha -f, scan it (or use the WAHA dashboard).
3. tail -n 20 ~/Library/Logs/ts03-bot.log and send /stats in a DM.
A classmate asks "is there class tomorrow?"
1. Ask them to name the subject: @bot is there NLP class tomorrow?. Without a subject the tracker answers, and it has no class schedule.
2. If the answer looks old, check the footer, then ./scripts/ts03-schedule-index NLP (or launchctl start com.ts03.schedule-index over SSH).
Add or change a class schedule
1. Edit ~/.config/ts03-schedules.json: sheet id, tab, aliases, and parts with the instructors. No restart.
2. ./scripts/ts03-schedule-index NLP --dry-run, then without --dry-run.
3. ./scripts/ts03-schedule-index --show NLP, then test /nlp in a DM.
Publish the docs (Mac terminal)
1. git status --short and check only the files you expect are listed.
2. Commit, push, tag and create the release page with the commands in 6.5.
10. Quick fixes
| Symptom | Fix |
|---|---|
Connection closed over SSH, fine on the Mac |
credentials are in a protected folder. Move them to ~/.config/mcp-credentials/ |
Not logged in |
claude, then /login |
ts03: command not found over SSH |
source ~/.zshrc (the Termius startup snippet does this) |
Operation not permitted in ~/Desktop over SSH |
expected. Run repo commands on the Mac, use launchctl start and the installed ~/.local/bin/ts03-bot |
ts03-health shows no google-sheets |
claude mcp list, then re-add per Guide 3 |
| HTML link does not open | ts03-server, then curl -sI "$(ts03-link)" \| head -1 |
| Bot silent | see "The bot went quiet" |
| Brief did not post | kubectl get jobs -n waha, then grep digest ~/Library/Logs/ts03-bot.log \| tail |
/prep ignores Drive material |
check the cache file in 6.4, then the indexer log |
gh: bad CPU type in executable |
brew install gh, or publish the release from the browser |
| The bot says the schedule isn't loaded yet | ./scripts/ts03-schedule-index NLP |
no access (HTTP 403) from the schedule indexer |
share the course sheet with the Google account behind the Sheets MCP |
| "Is there class on 9 October?" gets "the tracker has no class schedules" | name the subject: @bot is there NLP class on 9 October? |
| A second message got no reply | wait 10 seconds between messages: the cooldown drops quick repeats |
Jev router: HTTP 401 or No style worked in router-selftest |
check TS03_ROUTER_KEY in ~/.config/ts03-bot.env, then account_id or base_url, then paste the lines (Guide 17) |
| Jev router: the bot asks "which subject" for everything | lower course_min in ~/.config/ts03-router.json, or set "mode": "off" |
Questions or corrections: [email protected]