Skip to main content

AssisT Changelog

Every version, every change — transparent by design.

AssisT follows Keep a Changelog format and Semantic Versioning. Full release notes and downloadable ZIP files are on GitHub Releases. Source code and history are public on github.com/Fiavaion/AssisT.

v1.0.0 Latest GitHub

AssisT v1.0.0 — first stable release

First stable release. Everything here has landed since 0.9.3, including the 0.10.0

work that was prepared but never published.

Added

  • Mind Map (beta): an outline-first planning and revision tool that works with AI

switched off.

- The outline pane is a WAI-ARIA tree with a full keyboard map (arrows, Enter, Tab and

Shift+Tab, F2, Delete, Ctrl+Z and Ctrl+Y) and live announcements. The canvas is a

second view of the same map with pan, zoom and drag re-parenting, so both edit one

model. Choosing a different layout redraws the canvas straight away.

- A File menu for new, open, save, save as, import and export, over a free-standing

library of maps with six templates (essay plan, lecture notes, compare and contrast,

project plan, reading notes, blank), plus search, rename and delete.

- Export to Markdown, OPML, JSON, SVG and PNG. Markdown, OPML and JSON round-trip

losslessly. Exporting a map more than 100 levels deep as Markdown says that Markdown

cannot hold levels that deep, and which exports can.

- Reached from the popup's Study group, from the highlight menu ("Add to mind map"

sends a phrase from any page into the chosen map) and from Alt+Shift+M.

- Moves between AssisT and the tools other people use. Open a map made in XMind,

Coggle, MindMeister, Freeplane or FreeMind, or a plain indented outline saved as text,

and send one out as a FreeMind .mm file that all of those open. Colour, symbols,

ticks, notes, links and cross-links travel, and a captured quote and its source become

part of the note. Files are read on your own machine and nothing is uploaded. A file

you open always becomes a new map rather than writing over one you already have.

Import works the same way from the library and from the File menu: the file you picked

is named while it is being read, a second file picked before the first has finished is

turned down rather than raced, and once the map is on screen one sentence says what

came in, including which sheet was opened when an XMind file has several. A file whose

first line begins "PK", such as a revision outline about PKU, opens as the outline it

is, and a file saved as .xmind that is really a FreeMind map opens too.

- Work on one branch at a time. Choose a node and press Alt+Shift+F, the Focus button

or "Focus on this branch" in the Details panel, and the outline and the picture show

just that branch. A trail above the map says where the branch sits and takes you back

up it, Escape brings the whole map back, and searching, reading aloud and study mode

all keep to the branch and say so. It is a view, so editing, undo and saving work as

they do on the whole map, and if a change lands somewhere you cannot see, you are

told.

- Work on several nodes at once. Hold Shift and press the arrow keys to take in the

nodes either side of the one you are on, Ctrl+Space to add or drop the node you are

on, or Ctrl+A for the node you are on and its siblings, and again for the whole

outline. On a row or on the picture, Ctrl+click picks out as many nodes as you like.

Then move them together with one Tab, one Alt+Up, one drag or one "Move to...", or

tick, colour, symbol, fold or delete them in one go. One Ctrl+Z puts any of it back.

The Details panel says "Mixed" when the nodes you have picked do not agree, and how

many are selected is read out when you move between one node and several.

- Rearranging takes fewer moves. Drag a node onto the top or bottom edge of another to

drop it above or below that one instead of inside it, with a line showing where it

will land, and press Escape to change your mind part way through. "Move to..." in the

Details panel does the same without dragging: search for the node you want it under,

say whether it goes first, last or beside a branch you name, and press Move (Alt+M

takes you straight there). The move is announced even straight after a search. The

selected node on the canvas carries two small buttons for adding a child or the next

node along. They step aside when the map is zoomed out too far for them to fit, and

everything they do is still on the keyboard.

- Writing in a map is steady. Adding a node and naming it is one step to undo, and so

is renaming one however long the name took to type. Undo your own typing and you are

put back in front of that node, ready to name it or to press Escape and be rid of it,

and no way out of the field leaves a node with no name on it. What you type is kept if

the branch is folded from somewhere else. Tab keeps you typing as it indents, the

canvas does not redraw on every keystroke, a toolbar button that cannot act says why

instead of going dark, and the node you are working on stays in view when a panel

opens over it.

- The Keyboard shortcuts list is easy to read: keys take a third of the width and

descriptions the rest, the columns line up in every group, and it opens at its title

with the keyboard on Close, which stays in view as the list scrolls. The map's own

shortcuts can be remapped and checked for conflicts like every other AssisT shortcut,

and a change takes effect straight away. Every sentence spoken while a file opens is

announced once.

- "Map this page" turns a page's headings into branches without AI. With a provider set

up, the AI panel builds a map from the page or from pasted text, suggests sub-points,

explains a node into its notes, and turns a branch into recall questions.

- Read aloud speaks a branch in the student's stored voice and highlights the node being

read, and does not start while you are still typing the name. Study mode hides

children for recall practice and turns misses into flashcards. A node can link a

citation from the library and keep the source URL and quote it came from.

  • A new popup: flat navigation that puts every support on one screen, with a light and

dark theme. It is the only popup.

- Search by what you want to do, not by what a feature is called. Typing "read to me",

"I keep losing my place" or "too bright" narrows the list of supports. Matching is

on-device and needs no AI or network: it reads each support's name, description, group

and keywords, tolerates a misspelling, and a match on a support that lives inside

another shows the one that holds it. The field searches on a pause in the typing so a

screen reader is told the result once, and the count is announced whenever the

supports on screen change.

- Shortcuts are listed under headings rather than in one long list.

- Popup sections open and close on a single Enter or Space press, and a closed section

cannot be reached by Tab. Advanced Options is a proper dialog: focus stays inside it

and Escape closes it. The popup opens without a distracting animation running under

the pointer.

- Citation Quick View and the dictation statistics open over the popup where you can see

them, and Close or Escape takes you back to the button you pressed.

  • The citation manager, rebuilt into a writing companion:

- In-text citations with page and paragraph locators, copied in both a rich-text and a

plain-text flavour so they paste correctly into an editor or a plain field.

- An on-device checker that compares the citations in an essay against its reference

list and names what is missing on either side. No text leaves the machine.

- Trash with restore, bulk selection with file, remove, copy and export, and quote,

locator and note capture from any page. The quote or locator you captured survives

when a new source is saved, and saving a citation with only a title works.

- Book chapters and theses as first-class types with their own wizard fields, and

undated sources dated by each style's own convention instead of by the date they were

read.

- Zotero BibTeX and RIS import (a BibTeX entry with no title is reported rather than

dropped), add by DOI with CrossRef verification and a lock on the fields CrossRef

supplied, and CSL-JSON round-trip with duplicate detection. Removing duplicates keeps

every quote, page, note and tag from the copies being merged. RIS export no longer

breaks a note or title across two lines.

- The chosen style persists between sessions. Four styles ship: Harvard, APA 7, MLA 9 and

Chicago 17. References follow each style's published rules closely: a numbered edition

reads "2nd ed." or "2nd edn.", page ranges take an en dash and are shortened where MLA

and Chicago shorten them, an APA citation that names a work by its title gives that

title capitals, MLA puts a DOI after a comma, Chicago writes "n.d.-a" and "(Walsh,

n.d.)" and gives a dated web page its date instead of an access date, and Harvard

writes "(eds)" and tells apart two authors with the same name in the same year by

their first names. Exported CSL files carry a video's platform and a short title.

- The source check shows a plain rating (Looks reliable, Check before you use it, Hard

to tell) with the reasons behind it, not a numeric score.

- Voice capture listens on its own, even with voice typing off: say "cite this", "site

this", "capture the source" or "save the citation". It keeps listening through

silence, the button shows pressed only while something is listening, a status line

says what to say and why it stopped, and a saved capture says it is in the library and

offers to open it. It also reaches the capture wizard, the library's reference cards draw on every

page load, and Quick View's count updates while a search narrows the list.

- Alt+Shift+U opens the save tray directly, without hunting for it with Tab.

  • Maths Support: opt-in numeracy accommodations for dyscalculic and neurodivergent

students, off by default. An on-page calculator with a persistent scratchpad

(keyboard-operable, with a safe expression evaluator and no eval) moves focus into its

dialog on open, and Escape clears the entry and then closes it, on Canvas pages too.

Large-number formatting groups digits, keeps the value copy-safe and gives screen readers

the spoken words rather than digit-by-digit, with optional place-value colouring. Both

load only when switched on.

  • Consent before anything leaves your device. AssisT asks before it sends anything to an

outside service, one question per service. Dictionary lookups, translation, checking a

citation online and each cloud AI provider ask once, name exactly what would be sent, and

remember the answer. First-run setup has a step listing only the services your own

choices would use, with Allow all and Don't allow any buttons that fill in every answer

at once (nothing is recorded until you press Save my choices, and each answer can still

be changed), and Advanced Options has a Your data tab that lists every service's

answer and every saved AI key, with a Remove button and a way to change your mind at any

time. The question says "Getting ready..." and Allow cannot be pressed until Chrome

confirms that Allow can be seen, which usually takes under a second. If something on the

page keeps covering or fading the question, such as a colour filter or another extension,

the question says so and explains how to allow the service from Advanced Options instead.

Dictation, which uses Chrome's own speech recognition (a Google service), asks before it

starts. Translate Page has its own question, since it can send the whole visible page

rather than a selection, and it skips hidden text and AssisT's own controls.

  • Institutional branding: institutions can apply a cosmetic skin (name, logo, accent

colours, default LMS domain) via an Ed25519-signed key delivered by enterprise policy

(chrome.storage.managed). Keys are verified offline against a bundled public key and

fail closed, and the accent is darkened automatically to keep WCAG 2.2 AA contrast on

every surface. The public build is unbranded with no key present, and branding that is

applied can be turned back to the standard appearance.

  • Configurable local-AI server: the Local AI panel accepts a custom Ollama server

address, so a local install works out of the box and a shared server can be set per

institution.

  • OCR accuracy boost: an opt-in toggle that runs extra image preprocessing (contrast,

binarisation, sharpening, upscale) before recognition, for low-quality scans and small

text.

  • Higher-fidelity OCR throughout: layout reconstruction from line geometry, an

accessible formatted result view with read-aloud and an AI proofread pass, a progress bar

during recognition, page furniture stripped from full-page captures, and adaptive

chunking so a long capture can be cleaned by a local model.

  • Companion features, each individually switchable in the popup:

- A study-tools discovery card, and AI output shaped by the learning profile rather than

by one or two features.

- Equation read-aloud joined to the synchronised-highlight reading flow.

- A gentle offer of help when the same passage keeps being reread. "Offer help when

reading gets hard" is the one switch for that help.

- Authorship Shield, a private local writing history that can be exported if the work is

questioned. Its indicator disappears cleanly when the feature is turned off.

- Flashcards with spaced repetition built from highlights. Add to Flashcards is in the

highlight menu on every page.

- A reading-level dial for AI summaries. "Very plain" summaries are short and in

everyday words, swapping a technical term for an everyday word, and do not open by

repeating the instruction back.

- A lecture companion with live captions and structured notes. A Start lecture captions

button under its switch in the popup opens the notes card on any page, or says in plain

words why it cannot (a browser or Web Store page, or a page AssisT is not running on).

Focus moves to Start listening when the card opens. Words being recognised appear as

you speak in a line that screen readers skip, and finished lines are announced. If

Chrome blocks the microphone or cannot reach its speech service, the card stops and

says what to do, and it gives up if listening keeps ending without starting.

Recognition uses the page language.

- A hands-free voice command palette. "Open calculator" opens the Maths Support

calculator, and "summarize this page" and "simplify this" work on the selected text or,

for a summary, the page itself.

  • Learning-profile transparency. You can see what a learning-profile support has

recorded about you, and delete it in one step. Deleting asks first, in a box you can see

and hear, with its own Delete button; Cancel or Escape keeps the record. Tracking how

often you scroll back, how long you linger, how many words you look up, or how often you

ask for simpler text is off until you turn it on, and is described in plain words first.

  • A welcome front door that opens on install, with AI setup and "Discover your tools" as

tracks through it.

  • A keyboard shortcut, Alt+Shift+V, starts and stops dictation from wherever you are on

the page. Dictation says in plain words when it is starting, recording, paused, or

blocked because the microphone is not allowed.

  • AssisT's own controls (popup buttons, the mind map's help button, a sticky note's colour,

delete and read-aloud buttons) declare their purpose using WAI-Adapt attributes, for

assistive tools that show symbols instead of words.

  • Equations read aloud through the Speech Rule Engine.
  • A "Report a Bug" link in the popup footer.

Changed

  • Read Aloud defaults to a voice that runs on your device, instead of an online Google

voice. Online voices are still available and say in the voice picker that they send your

text to Google.

  • Read Aloud's four speed buttons sit under the speed slider.
  • The zoom slider in Read from Images says what the number means, and Reduced Motion says

when your computer is keeping movement reduced.

  • Syllable colours is now the default dyslexia reading mode.
  • Saved keyboard shortcut sets pick up new defaults. A key added after a student saved

their shortcuts now appears at its default value instead of being invisible and unbound;

changed keys keep their value and cleared keys stay off.

  • Citations and the LMS integrations are enabled and surfaced by default.
  • The Local AI panel lists only models that can hold a conversation (embeddings-only models

are filtered out). Three models are offered: qwen3:4b-instruct-2507 (2.5 GB) for

modest computers, qwen3.5:9b (6.6 GB) for an 8 GB graphics card, and qwen3.5:27b

(17 GB) for 20 GB of graphics memory and up. Models are sized for Apple shared memory,

qwen3.5 also reads images, and a model you already have installed always shows as

installed. qwen3.5:latest counts as qwen3.5:9b, so it is not offered as a second

download. Local failures say what actually went wrong. The on-device AI picks

a model from what is actually installed, instead of asking for one that may not exist and

silently giving a lesser answer.

  • Cloud AI uses the current models: Claude Haiku, Sonnet and Opus 5.5 and Gemini 3.8 Flash

and 3.5 Flash-Lite. A model you saved that has since been replaced moves to its

replacement and is shown and saved as that. The Opus option says it costs about twice as

much as Sonnet.

  • AI setup recommends Local AI on a computer with a separate graphics card or an Apple

chip, with Browser AI as the next choice, instead of sending every machine with WebGPU

to Browser AI. The text says graphics memory cannot be seen from the browser and that

8 GB of RAM reads as 8 GB or more.

  • Each AI panel's "API key required" screen names your actual provider, instead of always

asking for an Anthropic key.

  • Simplified text no longer opens with "Here is a simplified version of the text:", which

read as part of your text. Very plain simplified text still keeps the proper term and

explains it in brackets.

  • The popup's description of what leaves your device is accurate: while personalised AI is

on, a short line about how you like things explained travels with your question.

  • AssisT no longer asks for access to Google Gemini when it is installed. Chrome asks when

you save a Gemini key, and if you already use Gemini the popup shows an "Allow access"

button if it is needed. Saving a key for Anthropic, OpenAI or Perplexity likewise asks

Chrome for permission to reach that provider in the same step, and access can be granted

from the popup if it was missed earlier.

  • The floating AssisT pill no longer covers a page's own text on sites with a full-height

sidebar, and you can put AssisT away on one site and have it come back on the next.

  • The AI panels (tutor, document compare and others) can be closed with Escape, Tab no

longer leaves an open panel for the page behind it, and focus returns to whatever opened

the panel.

  • The build reads manifest.json directly, with the version stamped from package.json,

so the shipped version cannot drift.

Fixed

  • AssisT reaches every page it should. Pages already open when AssisT is installed or when

permission is granted, such as the Canvas page you were reading, get AssisT straight

away, and a page that finishes loading again while AssisT is being added is no longer

skipped.

  • Canvas, Moodle and Google Classroom course integrations load on their pages and announce

themselves only on a page that belongs to them. Read Aloud works on Moodle and Google

Classroom, not only on Canvas. LMS integrations and click-to-read re-mount after in-page

navigation instead of going quiet.

  • A setting you change in the popup no longer overwrites one you changed on the page a

moment earlier. The popup saves only what you actually changed.

  • Changing an appearance setting no longer fails on a settings file saved by an older

version that never held that setting.

  • Font and spacing settings are remembered. They used to reset unless "Apply to all

windows" was on, and that shipped off.

  • Changing where annotations are stored no longer resets your other settings (citation

style, maths support, platform switches and popup visibility) to their defaults.

  • A setting turned on right after a fresh install is no longer switched off again at the

next update.

  • Hiding Annotations & Sticky Notes or Translation Features in Advanced Options now

actually hides them.

  • Read Aloud no longer leaves a word or paragraph highlighted after navigating within the

page while it is speaking.

  • Bionic reading no longer splits emoji into broken characters, and never rewrites

AssisT's own panels.

  • Speed Read and the Detailed Statistics dialog behave like proper dialogs: Escape closes

them and focus returns to the button that opened them.

  • Reading mode's appearance settings take effect; they were saved under one name and read

under another. It reports its real open or closed state to the popup, and cannot be

opened twice at once, which used to leave a stuck overlay that Escape could not close.

It no longer scrolls sideways on any page: its width and padding were added together,

and wide images, tables, formulas and long unbroken text are now kept inside it.

  • The highlight menu no longer opens over AssisT's own panels, such as Speed Read, the

consent question, sticky notes and the action tray, or when you select words inside them.

Reading Mode's copy of the article is page text, so the menu still works there.

  • Escape stops a read aloud even when the page has a cookie or sign-up dialog left open or

faded out. A page dialog keeps Escape only while focus is inside it.

  • The highlight menu's Read Aloud, with the Read Aloud feature switched off, reads just the

selected words in your voice and speed and no longer outlines and highlights the whole

block. Stopping a read in its first moments now cancels it, so it can no longer leave its

highlight stuck on the page.

  • Grammar colours tag every word correctly. Roughly half of verbs were being missed before,

because whole-phrase matching could not match against the page's own capitalisation.

  • Grammar colour coding, link text under syllable highlighting, and several popup and page

badges meet WCAG AA contrast.

  • A note you add to a paragraph is kept. Selecting a paragraph by triple-clicking it,

adding an annotation and saving used to close the dialog as though it had worked while

the highlight was never drawn and the note was lost, because the selection ends at the

start of the next paragraph and that was read as selecting nothing.

  • An empty annotations sidebar tells you how to make your first note, instead of suggesting

you adjust filters you have not set. A closed annotations sidebar cannot be reached by

Tab.

  • The reading guide and the magnifier can be used from the keyboard: Alt and the arrow keys

aim and nudge them, and Escape dismisses them. This is a general fix: any AssisT dialog

that is only hidden by its container, not removed from the page, was being read as still

open. The reading guide stays above the screen tint.

  • The magnifier's copy of the page is hidden from screen readers and removed from the tab

order, instead of being read and reachable twice.

  • Minimising the study timer no longer removes the only way to bring it back for a keyboard

user. The Pomodoro timer starts in the top-right corner, which nothing else uses, and a

position the student has already chosen is kept.

  • AssisT no longer injects its interface into a page's own editable content.
  • Floating on-page controls no longer sit on top of each other. The Maths tools button, the

citation capture bar, the lecture companion toggle and the Authorship Shield indicator

shared the bottom-left corner, so whichever appeared last swallowed the others' presses;

they now stack in one rail. Companion cards stack above the text statistics badge instead

of over it.

  • The first-run tip card and floating page controls fit small and zoomed screens without

covering their own close button. Side panels (citation analyser, assignment breakdown,

summary, simplification, the grammar colour key, the tool dock, the maths panel) fit a

320px-wide screen without a sliver running off the edge.

  • Citation manager Copy and Open buttons respond to Enter and Space and carry explicit

accessible names, so a screen reader announces them by name instead of falling back to

the tooltip.

  • Tab reaches the citation list: exactly one card holds the tab stop, whatever the search

or project filter leaves on screen, and the arrow keys move it. Previously no card held

it at all, so Tab stopped only on the Copy and Open buttons inside the list. The same

fix restores the roving tab stop on the citation panel's view tabs, and restores keyboard

focus to the annotation sidebar's saved items and the assignment breakdown's step

checkboxes.

  • Focus returns to the right place after removing, undoing or editing a citation, and an

undo that cannot restore says so.

  • Text selected on a page is shown as text in the annotation sidebar, so a page that

contains markup can no longer place anything of its own in the sidebar or ahead of the

page's own tab order.

  • The text statistics badge's buttons (close, speed read, view details, and the stats

window's own controls) answer Enter and Space, not the mouse alone. So do popup buttons,

and keyboard focus can no longer strand inside the mind map editor.

  • The AI setup mode chooser can be operated from the keyboard: Enter and Space select a

mode, as clicking one always did. Skipping AI setup switches AI off instead of silently

selecting cloud. The AI setup wizard is bundled so its imports resolve.

  • Screen Colour Overlay is a single blended element rather than a stylesheet forcing opaque

backgrounds, so it no longer paints over Google Docs and Sheets, and a malformed overlay

colour is rejected. Custom Cursor listens in the capture phase and so survives editors

that stop pointer events.

  • Local reasoning models no longer leak their thinking into the answer, and JSON mode works

on them, including for the tutor and the study path. A reply that used up its thinking

budget is asked again once with thinking off, and a half-finished monologue is never

shown as an answer. Sampling parameters are sent only to the models that accept them; the newest

Anthropic models reject temperature outright. A downloading on-device model no longer

logs an error on every progress update.

  • Gemini Nano availability is probed with the message the service worker actually answers,

so features that gate on it can use it.

  • The discovery quiz switches on every feature it recommends. Four features were weighted

so low that their best possible score fell below the threshold that enables anything. In

Discover quizzes, pressing Enter on a Back or Next button no longer also submits an

answer, and the quiz helper detaches its listeners when it is torn down.

  • Citation autofill reads real pages the way those pages state themselves, measured against

seven page fixtures; videos, social posts and PDFs are recognised.

  • Content-script chunks are no longer preloaded from the page origin.
  • A dictionary outage is told apart from a word that is simply missing.
  • The classic OCR result modal is accessible, and the OCR capture UI stays above Reading

Mode. OCR's Auto-play TTS setting works: a scanned page is read aloud when it is switched

on, and stays silent when it is not.

Removed

  • The Layout mode option in Advanced Options, which only rearranged the old popup.
  • The field for pasting an institution branding key in the popup. Branding set up through

your institution keeps working.

  • The Azure Speech option, which nothing in AssisT could reach. A stored choice of it falls

back to automatic.

  • The DeepL and Microsoft Translator options, which nothing in AssisT could actually call.

Any key already saved for them is deleted.

  • Code nothing could reach: five content-script feature modules, an unreachable annotation

reader in citation storage, an unvalidated proxy-fetch handler in the service worker, and

popup lookups for a profile surface that no longer exists.

  • The out-of-sync manifest generator and its variant config.
  • Alpha, beta and experimental badges from feature names.
  • The unused feature-selection step in AI setup.
  • Stuck-reader rescue as a separate feature, and two voice commands that did nothing

("what's due this week" and "start a focus session").

Security

  • The offscreen document rejects any message that did not come from the service worker, so

page-injected script cannot reach the citation database directly.

  • A custom local-AI server address is scoped to loopback in the public build.
  • AssisT no longer asks at install for permission to reach the local-AI server. The

loopback Ollama address (http://localhost:11434, http://127.0.0.1:11434) is an

optional permission, requested the first time a student turns Local AI on;

https://api.crossref.org and the same loopback address remain in the extension's

connect-src policy, which grants no access to any page a student visits.

  • A settings file you export or import can no longer carry consent choices or the developer

log switch; those stay on the device you set them on.

  • The console no longer records what you dictate, what an AI feature answers about your

own work, or what is being read aloud.

  • Institution branding text is stripped of Unicode bidi and zero-width controls, to prevent

visual spoofing of the rendered name.

  • undici and dompurify updated to resolve published advisories.
  • @xmldom/xmldom (a dependency of the maths speech engine) pinned to 0.9.12 to clear its

advisories. The browser build uses Chrome's own XML parser, so it was not reachable from the

extension.

  • package-lock.json is now published, so a clone installs exactly the audited dependency tree.

---

v0.9.3 GitHub

AssisT v0.9.3 — Citation Manager overhaul + annotation fix + Firefox scaffolding

What's changed

Added

  • Citation Manager overhaul — full rebuild of the citation feature:

- citation-types.js keystone module with 12 source types and typed field definitions.

- Four citation styles: APA 7th, MLA 9th, Chicago 17th, Harvard — each in its own dedicated module.

- One-click save tray — floating panel for quick project assignment without opening the full manager.

- AI citation analyser — optional AI pass evaluating source quality, relevance, and academic rigour.

- Focus trap (citation-focus-trap.js) — WCAG 2.1 compliant keyboard containment for all citation modals.

- Highwire citation_* meta-tag extraction with non-empty title fallback chain.

- 210 unit + E2E tests covering all formatters, storage, save tray, AI analyser, and UI.

  • Cross-browser API abstraction (src/core/browser-api.js) — webextension-polyfill wrapper for browser.* API across Chrome, Firefox, and Safari.
  • @fiavaion/lms-adapter package scaffold — standalone LMS detection + course/assignment context (Canvas, Moodle, Classroom). NLnet deliverable.
  • @fiavaion/local-ai-router package scaffold — four-mode local AI routing library (Ollama → WebLLM → Chrome Prompt API → cloud). NLnet deliverable.
  • Pluggable prompt registry (src/ai/prompts/registry.js) — prompts keyed by feature × discipline × user profile. NLnet deliverable.
  • Firefox build target — BROWSER=firefox npm run build:firefox → .vite-firefox/ with __IS_FIREFOX__ build flag.

Fixed

  • DOMPurify name-clobber — edit modal silently dropped citation title on save; fixed by reading textContent after sanitisation.
  • Gemini AI model — replaced retired gemini-1.5-flash (404) with gemini-2.5-flash; fixed 429 retry loop.
  • Annotation highlight race condition — Range invalidated after await; span now inserted synchronously before storage write.
  • Organize Mode drag & drop — SortableJS now targets .accordion-section; drag handles were reaching the wrong ancestor.
  • Organize Mode visibility toggles — accordion header mousedown no longer suppresses toggle clicks; restored on exit.
  • Double-fire on OrganizeMode controls — removed duplicate click + mousedown registration.
  • STT Beta label removed — Speech-to-Text graduated from beta.
  • service-worker — chrome.runtime.id → browser.runtime.id via abstraction layer.
  • Citation Manager marked Alpha — labelled in popup to set expectations while UI continues to evolve.

CI

  • GitHub release now triggers Cloudflare Pages rebuild of the Fiavaion website.
  • deploy.yml ZIP source dir corrected (Output/ → .vite/).
  • notify-website.yml opts into Node 24 ahead of GitHub's June 2 forced Node 20 deprecation.

---

Full changelog: https://github.com/Fiavaion/AssisT/blob/main/CHANGELOG.md

Chrome Web Store: https://chromewebstore.google.com/detail/assist-adaptive-augmentat/dkekfjomoacmhbkekjkngmpbdlljjfhi

v0.9.2 GitHub

v0.9.2 - AI Setup Improvements

Ollama model catalog with 11 curated models organised by category (General, Reasoning, Multilingual, Code, Vision) and hardware tier (4GB/8GB RAM). WebLLM cache-clear button to free downloaded model storage. Honest Browser AI speed warning (30-90s per response) added to setup wizard. Full CHANGELOG.md now in repository following Keep a Changelog and semver standards.

v0.9.1 GitHub

v0.9.1 - GAAD 2026 Public Launch

First public release, launched on Global Accessibility Awareness Day (21 May 2026). Awarded the Chrome Web Store Featured badge. Fixes: WebLLM offscreen document for WebGPU access, Discovery Quiz storage paths, localhost:11434 host permission for Ollama. Install from the Chrome Web Store: https://chromewebstore.google.com/detail/dkekfjomoacmhbkekjkngmpbdlljjfhi

v0.9.0 GitHub

v0.9.0 - Final Beta

Pre-launch hardening before GAAD launch. See CHANGELOG.md for full details.

v0.1.2 GitHub

v0.1.2 - AI Overhaul & Multi-Provider Expansion

CWS resubmission — Phase 2 AI overhaul and multi-provider expansion

Chrome Web Store resubmission following a complete overhaul of the AI layer: Browser AI (WebLLM), a multi-provider cloud AI router, a guided AI Setup Wizard, and a shared routing client used by all 8 AI features.

Added

  • Browser AI (WebLLM) — AI models run entirely in the browser via WebGPU; zero installation required. 8 models available (0.6 GB–6 GB).
  • Inline AI mode switcher in popup — switch Off / Cloud / Browser AI / Local AI with one click, no wizard redirect needed.
  • AI Setup Wizard — step-by-step guided setup for all AI modes with hardware detection and model recommendations.
  • Model registry (model-registry.js) — centralised catalogue with per-task routing defaults.
  • Multi-provider cloud AI routing — Anthropic (Claude), OpenAI (GPT), Google (Gemini), and Perplexity all supported from a single provider selector with dynamic model lists.
  • Persistent AI status bars on all 8 AI feature panels — shows current mode, availability, and last result at a glance.
  • Shared AI routing client (ai-feature-client.js) — single source of truth for mode detection, availability checking, and generation; eliminates per-feature getCurrentModel() inconsistencies.
  • Multi-Document Compare — analyse and contrast multiple text sources side-by-side.
  • Google Docs Speech-to-Text — microphone button now appears inside Google Docs' custom rich editor.
  • Text customisation sync — push font/spacing settings to all open tabs simultaneously (opt-in toggle).
  • CI pipeline — GitHub Actions with caching and redundant-run cancellation.
  • Default Ollama model changed to qwen3:8b-q4_K_M for superior JSON compliance and instruction following.
  • Z-index scale system (src/utils/z-index.js) prevents UI stacking conflicts with LMS page elements.

Changed

  • All 8 AI features migrated to shared routing client.
  • Local AI model picker redesigned with live Ollama detection and dropdown.

Fixed

  • Knowledge graph local AI pipeline now works on first run without reload.
  • API key encryption — keys now encrypted with AES-256-GCM in secure-key-storage.js; previously stored as plain text.
  • STT microphone button positioning — was off-screen on some Canvas layouts.
  • STT enabled on Google Classroom — fixed iframe injection and storage mismatch.
  • Multi-document compare drag rewritten with Pointer Events API and setPointerCapture — eliminates listener leaks and unreliable drag.
  • Text customisation sync storage race condition — now uses chrome.tabs.sendMessage instead of shared chrome.storage.local.
  • Canvas white-text inheritance — added color: #333 to AI panel roots so text is readable on dark-themed Canvas pages.
  • SPA navigation pre-audit: all async handlers given explicit timeouts; z-index conflicts resolved across Canvas, Moodle, and Classroom.
v0.1.1 GitHub

v0.1.1 - Phase 2 Feature Expansion

Phase 2 — 11 new features built on the TTS/STT foundation

First CWS submission attempt. Major feature expansion round adding AI-powered academic tools, citation management, knowledge graphs, and a full user profiles system.

Added

  • Citation Management — Harvard Style (Cite Them Right, 13th ed.) generator for websites, books, journals, videos, and social media. Includes bibliography manager, CRAAP test evaluation, and BibTeX/RIS/JSON/CSV export.
  • Online citation verification via CrossRef and Semantic Scholar APIs.
  • Knowledge Graph — interactive concept-connection visualisation from selected text.
  • Socratic Tutor — guided learning through AI questions rather than direct answers.
  • Study Path Generator — personalised learning sequences for any topic.
  • Assignment Breakdown — decomposes assignment instructions into step-by-step checklists.
  • Text Simplification — three complexity levels; trailing AI conversational artifacts stripped automatically.
  • Summarization — brief, detailed, bullet points, or ELI5 modes.
  • Translation — 35+ languages via MyMemory (default) and LibreTranslate (fallback); rate-limited.
  • Highlight Menu — contextual toolbar on text selection with Read Aloud, Dictionary, Translate, AI Summarize, and more.
  • Text Statistics — word count, characters, sentences, reading time (Ctrl+Shift+W).
  • Discovery Quiz — recommends features based on learning style and needs.
  • User Profiles system — save, load, export, and import accessibility configurations. 9 neurodivergent profiles (ADHD, Autism, Dyslexia, Anxiety, Motor, Low Vision, Cognitive Overload, Sensory, General Learning).
  • 7 Speech-to-Text profiles with customised timing, UI, and feedback.
  • Drag-and-drop section reordering in popup (Organise Mode).
  • Keyboard shortcut presets — Default, Minimal, One-Handed.
  • Feature maturity badges (Alpha, Beta, Experimental) displayed in popup.
  • Optional <all_urls> permission flow — single-click "Enable Everywhere" for non-LMS sites.
  • DOMPurify XSS protection on all user-facing inputs.
  • Gemini Nano (Chrome built-in AI via Prompt API) added as a fourth AI mode.

Removed

  • Stargardt Vision Mode removed — 11 experimental files deleted (eye tracking, APVUI rendering, scotoma profiling, calibration wizard). Feature had low adoption and introduced significant maintenance overhead.

Fixed

  • Content script injection for non-LMS sites when <all_urls> granted.
  • web_accessible_resources updated for Vite-bundled asset paths.
  • Various keyboard shortcut layout conflicts.

Security

  • Optional permissions model — <all_urls> is user-granted on demand, not requested upfront.
  • GDPR compliance section added to privacy policy.
v0.1.0 GitHub

v0.1.0 - Initial Release

Initial release — TTS/STT foundation with Canvas LMS integration

First public version of AssisT, establishing the core text-to-speech and speech-to-text foundation with full Canvas LMS integration.

Added

  • Text-to-Speech with synchronised word-by-word highlighting. Customisable rate (0.5×–2.0×), pitch, volume, and 8 highlight colours.
  • Speech-to-Text using Web Speech API. 60+ voice commands for editing, formatting, and navigation. Smart auto-punctuation (Automatic / Assisted / Manual). Custom vocabulary with domain presets. Confidence feedback with colour-coded accuracy indicators.
  • Reading Mode — distraction-free view powered by Mozilla Readability with full TTS integration (Alt+R).
  • Dyslexia-Optimised Reading Modes — Bionic Reading, Syllable Colours, Grammar Colours (Alt+Y).
  • OCR & Screenshot Tool — extract text from images and PDFs using Tesseract.js offline (100+ languages, Alt+O).
  • Focus Mode — dims surrounding content, centres reading area (Alt+F).
  • Reading Guide — horizontal cursor-tracking line (Alt+G).
  • Screen Colour Overlays — 9 comfort filters (Alt+Shift+O).
  • Reading Progress Bar — scroll position indicator (top or bottom).
  • Text Customisation — 11 fonts including OpenDyslexic, Lexend, Atkinson Hyperlegible. Line height, letter, word, and paragraph spacing. WCAG 2.2 SC 1.4.12 compliant.
  • Reduced Motion — disables all animations; respects prefers-reduced-motion (WCAG 2.1 SC 2.3.3).
  • Custom Cursor & Magnifying Lens — multiple cursor styles; floating 1.5×–4× magnification window.
  • Dictionary Lookup — inline definitions via Free Dictionary API (Alt+Shift+D).
  • Sticky Notes & Annotations — per-URL floating notes in IndexedDB with tag/export/sidebar (Alt+N).
  • Pomodoro Timer — configurable work/break intervals with ADHD-optimised defaults.
  • Media Control — blocks autoplay video and audio.
  • Canvas LMS integration — content script auto-injected on *.instructure.com / *.canvas.com; Canvas Quiz Helper with TTS and keyboard navigation.
  • Moodle and Google Classroom host permission support.
  • 14 customisable keyboard shortcuts with Chrome-conflict detection.
  • Manifest V3 architecture with Vite + @crxjs/vite-plugin build pipeline.
  • Jest unit testing (979 tests) + Playwright E2E infrastructure.
  • WCAG 2.2 AA compliance throughout.

Development History

These internal checkpoints were created during the sprint-based pre-release phase (October–November 2025). They are preserved in the git repository for history and rollback reference but are not versioned releases, and they are not browsable on the public repository — the tag names are listed here for reference only.

Tag Milestone
MVP-TTS-Stable-v1.0 Stable TTS milestone — word-highlight sync confirmed working
Sprint8-Testing-Complete Playwright E2E infrastructure scaffolded
Sprint7-Canvas-Profiles-Complete User Profiles system — 9 neurodivergent presets
Sprint6-ReadPage-Simple-v1.0 Read Entire Page feature
Sprint5-STT-Complete-v1.0 Speech-to-Text with Web Speech API (60+ voice commands)
Sprint4-Canvas-Foundation-v1.0 Canvas LMS content-script integration
Sprint3-Complete-v1.0 Focus Mode, Text Customization, Reading Guide
Sprint2-Foundation-v1.0 Initial popup and TTS controller