Activity

technodot
  1. quick bugfixes
  2. readme
  3. final build :)
Attachment
0
technodot

HOLY CRAP THIS WAS ACTUALLY STUPID

all i did was add support to solve questions with images embedded in the HTML.
this should have been easy.
in other frameworks like Python Selenium, you can just call .screenshot() on a DOM element to get a nice and easy PNG screenshot of any html element.
i tried doing that here with the Element Capture API (mozilla, you did NOT cook on ts docs) and it just completely broke and i gave up and burned the evidence
then i used a non-builtin api, the html2canvas api
problem is, literally all the images had cors/csp policies set, preventing the screenshot, so all of them required workarounds
long story short we have the image base64 now
and we just pass it to google/gemini-3-flash-preview our goat
and yeah

now ts works for questions that require analysis of diagrams and stuff yay
i need to sleep

Attachment
0
technodot
  1. Discovered that the agent couldn’t properly handle multi short response questions AT ALL because the return json data structure just wasn’t designed for that.
    a. restructured the json return interface
    b. rewrote the system prompt to match new architecture
    c. revised short response branch of agentic handler to parse and execute the new data format
  2. Add a little badge status in bottom right corner
    a. who doesn’t wanna know what their little ai agent is currently doing?
    b. switches between all the various states, like disabled idle waiting redirecting thinking and answering!
  3. Fixed a very critical bug where i literally called the LLM TWICE as often as necessary
    a. basically after you check a question, you get to review the explanation for your right/wrong answer
    b. this triggers a dom update on the question container, which causes the content script to requery the LLM
    c. it adds 2x overhead and costs 2x as much bc of this stupid dumassery!!!
Attachment
0
technodot
  1. Refactor popup css into a distinct file
    a. done for clarity and tracking purposes
  2. Fixed so that the global extension setting was actually respected
    a. done by just making main update loop break instantly if the extension is disabled. i did NOT choose to disable the setInterval call completely because that means a reload is required to take effect, which pmo and hurts ux
  3. Core logic for agentic automagic automation of CK-12 assignments
    a. each update cycle, we first check if we are already processing an LLM request to avoid duplication
    b. if we’re tryna process a new question, then collect the question text, feed it into LLM with prompt in the background worker, and then execute the answer
    c. then, we scan for all the present buttons and click the ones that we need to proceed with whatever state in the assignment we are in
Attachment
0
technodot
  1. Setup development environment
  2. Learn about the finer details of chrome extension control (popup, content, and background worker scripts, security permissions, content security policy and how it pertains to extensions, etc.)
  3. Brainstormed foundational UI/UX
    a. I was thinking I could have like a little indicator visible on the page to provide better UX to assure the user about what the agent was doing atm
    b. All the setting I think necessary are an enable/disable toggle, and a place to put ts API key
  4. Implemented foundational UI/UX
    a. As I’m sure you can see, the popup UI looks simple and functional, I might just leave it at that
  5. Implemented foundational agentic behavior
    a. Content worker script will automatically detect a CK-12 lesson page and navigate you to the correct assignment page automatically upon load

General Notes:

  • behavior currently does not obey enable/disable setting
Attachment
0
technodot

Shipped this project!

sure, this was a fun project, but this was built out of necessity to solve a legit problem. FTC lacks a non-pmo tool for in depth, high level real time analysis. as on example, are we deadass using paper schedules at comp? this is what ftcvanguard fixes. as to say, “Real-time everything solution for FTC teams. Schedule, scout, and scheme, all from your mobile device.
Graciously Professional Palantir”

technodot

read the devlog here. i kinda typed up a whole essay BEFORE i knew that there was a 2k character limit. i went into technical detail; for broad overview, just skim through the first few sentences in each numbered step

https://pastebin.com/nST2stvM

Attachment
Attachment
0
technodot
  1. fully implemented and secured password reset, nice argon2 hash, extended jwt tokens, and safe db operations bc ts is gonna be a prod app in like 48 hours
    a. our registration flow is complete now!
  2. Android and iOS platform support!!! with mobile compatible ui! yeah, installed and tested it for an hour and it works great!!!
Attachment
Attachment
0
technodot

lets see
what happened

  1. we migrated all our infra, it’s being hosted on different servers and now at https://ftcvanguard.org !
  2. added FULL support for PLAYOFF matches. they are shown in the match list, push notifs, and taken into account in insights. caused some breaking API changes, don’t remember what all of them were but nobody here cares
  3. redid time calculations to support MATCH OFFSETS. sometimes ts tournament is either ahead or behind schedule, while the FTC api doesn’t update ts. now, you can configure it and it will be synced across all of your team’s devices. Also you get a super handy calibrate offset button that sets the offset super easily for you
  4. Working on a registration and team verification flow, i decided to do it externally on like Google Forms bc no point in making smth more complicated then it needs to be. making it super easy to accept verifications directly within admin panel tho
Attachment
0
technodot

commit 8cd14a096ca29bba3259e8f2e16496fd3a58edf6 (HEAD -> master, origin/master, origin/HEAD)
Author: technodot [email protected]
Date: Mon Jan 26 20:51:32 2026 -0600

feat: add rankings sorting and smooth out transitions

sorting by stats is a must-have
also redid part of how new data repopulates the ranking table bc each operation abruptly resets the animation back to the start, causing ui jumps if the ftcscout graphql query comes in a decent while after the internal api rankings query comes in, degrading ux
so yeah more css

also wakatime fix your stuff stop asking me for my api key every 67 nanoseconds i auth android studio & vice versa

Attachment
0
technodot

old admin panel was broken af
justification for new implementation:

  • admin panel shouldn’t be a separate url
  • admin panel shouldn’t be protected with a single password
    how new impl fixes:
  • new admin panel is built into main web app
  • new admin panel is protected with TOTP auth
  • i added scopes to the current JWT token auth system
  • NOT a breaking API change
  • and yeah new admin endpoints

pretty important note: i was too tired to actually do any admin panel content, it’s just the auth system

commit: https://github.com/SMERobotics/ftcvanguard/commit/735b57ade33afba177094d90bbfc53d2045d043d

Attachment
0
technodot

prev only qualification matches were supported & rankings only tracked league rankings
playoff matches were not displayed at all in any capacity in any data
rewrote the backend schedule and ranking api endpoints, ranking endpoint was breaking change
now playoff matches are supported across scheduling, rankings, insights, EXCEPT for OPR because the math doesn’t math out

Attachment
0