Content
# Progress Report — Week of February 09, 2026
**Period:** 2026-02-09 to 2026-02-15
**Tasks:** 28 | **Days:** 3 | **Time:** 18h 5m
![[Autobot Progress Report - Week of 2026-02-09.pdf]]
---
## 2026-02-13 (3h 30m)
- **[COMPLETED]** Add Customer User Notification Targets
- Ensure customer users (not just tenant admins) receive push notifications
- **Outcome:** Customer users now receive alarm and device activity notifications on mobile app.
- **[COMPLETED]** Fix Mobile App QR Code and Deep Links *(30m)*
- Fix QR code scanning and deep links that were pointing to localhost
- **Outcome:** QR codes and deep links now point to the production Hetzner server.
- **[COMPLETED]** Fix Mobile App WebSocket Connection *(1h 10m)*
- Fix "Unknown session type" error in ThingsBoard mobile app
- **Outcome:** Mobile app WebSocket connection works. Real-time telemetry updates flow correctly.
- **[COMPLETED]** Remove Pump Stopped Alarm Rule *(20m)*
- Remove the Pump Stopped alarm rule that was causing all widgets to show alarm state
- **Outcome:** Only "Low Tank Level" and "High Pressure" alarm rules remain. Widget alarm behavior is correct.
- **[COMPLETED]** Fix Dashboard Widget Alarm Filtering *(45m)*
- Stop all SCADA widgets from lighting up for every alarm type
- **Outcome:** Widgets now only respond to their relevant alarm types.
- **[COMPLETED]** Fix Alarm Rule Null IDs *(45m)*
- Fix NullPointerException caused by alarm rules with null IDs after API update
- **Outcome:** Alarm rules now have proper UUIDs. NullPointerException resolved.
## 2026-02-14 (6h)
- **[COMPLETED]** Build Persistent Critical Alarm Monitor Service
- Implement reliable recurring notifications for unacknowledged critical alarms
- **Outcome:** Reliable alarm reminders every 60s until alarm is acknowledged. Stops naturally when no unacked critical alarms exist.
- **[COMPLETED]** Configure Critical Alarm Sound on Silent Mode *(1h)*
- Make alarm notifications audible even when phone is on silent/vibrate
- **Outcome:** Critical alarm notifications play sound through alarm stream, bypassing silent mode.
- **[COMPLETED]** Fix Firebase Initialization Race Condition *(1h)*
- Fix FCM token not being registered because Firebase wasn't initialized before use
- **Outcome:** Firebase initializes before app proceeds. FCM token now registers correctly on login.
- **[COMPLETED]** Enable Firebase Push Notifications *(1h 30m)*
- Enable push notifications in custom Android app using our own Firebase project
- **Outcome:** Push notifications working. Custom app receives alarm and device activity notifications.
- **[COMPLETED]** Build Custom Android App *(2h 30m)*
- Build custom ThingsBoard Android APK with hardcoded server URL so customers just install and log in
- **Outcome:** APK built successfully (99MB). App name "Autosys", package com.autosysnet.scada. Opens directly to login screen — no QR code or server config needed.
## 2026-02-15 (8h 35m)
- **[COMPLETED]** Install Ignition 8.3.3 on New Server (192.168.1.163) *(20m)*
- Install Ignition by Inductive Automation on new Ubuntu ARM64 server ("ignition")
- **Outcome:** Ignition 8.3.3 running at http://192.168.1.163:8088. Installed as service, auto-starts on boot.
- **[COMPLETED]** Move Downloads to Mac SSD *(15m)*
- Move torrent downloads from server local disk to Mac's external SSD to prevent disk full (was at 85%)
- **Outcome:** Server disk freed from 85% to 27%. Downloads now go to SSD (1.3TB available).
- **[COMPLETED]** Deploy Docker Media Automation Stack *(45m)*
- Install Docker and deploy Gluetun VPN + qBittorrent + Sonarr + Prowlarr
- **Outcome:** Full media stack running. VPN kill-switch verified. Web UIs: qBittorrent :8080, Sonarr :8989, Prowlarr :9696.
- **[COMPLETED]** Set Up Homeserver (192.168.1.213) *(30m)*
- Prepare new Ubuntu server — update packages, mount Mac external SSD
- **Outcome:** Mac's external SSD mounted on homeserver via sshfs with auto-mount on boot.
- **[COMPLETED]** Swap to DeepSeek R1 32B + Qwen 2.5 Coder 32B *(20m)*
- Replace DeepSeek R1 70B (too large for 40GB RAM) with 32B, and add Qwen 2.5 Coder 32B
- **Outcome:** Both 32B models downloading. Interpreter wrapper updated with dual-model support.
- **[COMPLETED]** Create Separate Device Profiles for Autosys and Buellton *(10m)*
- Split the shared PLC device profile into independent profiles so each customer can have different alarm rules
- **Outcome:** Each customer has its own device profile with independent alarm rules. Buellton profile has no alarms yet (ready for custom rules).
- **[COMPLETED]** Create Buellton_PLC Device *(5m)*
- Create a new PLC device for the Buellton customer
- **Outcome:** Buellton_PLC device created and assigned to customer.
- **[COMPLETED]** Create Buellton Customer and Users *(10m)*
- Add new customer "Buellton" with two users on Hetzner ThingsBoard
- **Outcome:** Both users can log in at the Hetzner ThingsBoard server.
- **[COMPLETED]** Upgrade to DeepSeek R1 70B Model *(1h 15m)*
- Replace qwen2.5-coder:14b with DeepSeek R1 70B for better reasoning capabilities
- **Outcome:** DeepSeek R1 70B downloading in background. Config ready. VM now has 40GB RAM and 60GB disk.
- **[COMPLETED]** Fix Open Interpreter Ollama Configuration *(15m)*
- Fix Open Interpreter defaulting to ChatGPT instead of local Ollama model
- **Outcome:** Open Interpreter now defaults to local Ollama model without needing command-line flags.
- **[COMPLETED]** Install AI Ops Stack on Local Server *(1h 10m)*
- Set up AI agent environment with Ollama, Open Interpreter, MCP servers, and opsbot user on 192.168.1.61
- **Outcome:** Full AI Ops stack operational. Ollama running with 14b coder model, Open Interpreter configured, MCP client wrappers installed, opsbot user ready. Brave Search needs API key in /etc/mcp/brave.env.
- **[COMPLETED]** Uninstall ThingsBoard CE from Local Server *(20m)*
- Fully remove ThingsBoard CE and PostgreSQL database from 192.168.1.61
- **Outcome:** ThingsBoard CE fully removed from local server. Server available for repurposing.
- **[COMPLETED]** Add Dashboard Duration Editing *(30m)*
- Allow editing task durations directly from the dashboard with live save-back to TASKLOG.md
- **Outcome:** Duration editing works from http://localhost:8000 with direct save-back. Fallback clipboard copy for file:// access.
- **[COMPLETED]** Optimize CLAUDE.md for Token Usage *(30m)*
- Reduce tokens loaded on every message by splitting CLAUDE.md
- **Outcome:** CLAUDE.md reduced from 24KB to 1KB (96% reduction, ~5,000 fewer tokens per message).
- **[COMPLETED]** Remove ThingsBoard Branding from Android App *(1h)*
- Replace all ThingsBoard logos and text with Autosys branding in the custom Android app
- **Outcome:** APK at ~/Desktop/AutosysSCADA.apk with Autosys branding throughout.
- **[COMPLETED]** Fix False Alarm Notifications *(30m)*
- Stop repeating critical alarm notifications when no unacknowledged alarms exist
- **Outcome:** Alarm monitor no longer sends false notifications for cleared/acknowledged alarms.
- **[COMPLETED]** Create Claude Code Task Dashboard *(30m)*
- Build a local HTML dashboard that tracks tasks completed across Claude Code sessions with usage stats
- **Outcome:** Dashboard at ~/Desktop/dashboard.html shows usage stats and task history with date filtering.