Roadmap & release notes
Current version 0.4.0 · latest release v0.3.0 (2026-08-08) · page updated 2026-08-11
Everything the annotator can do, by the version it arrived in — and what we're building next.
What's next
In progress
Built or being built now — this is what 0.4 becomes.
- 0.4 to the team — Everything listed under 0.4.0 below — team-owned schemas, the acting-team switcher, platform access, tenant scoping and custom-schema editor parity — is built and waiting on the install package.
Next
Committed, not yet started.
- AI second opinion for custom schemas — The model's verdict is currently shaped like the built-in antisemitism taxonomy, so a team on its own schema gets the plain-language explanation but not the pre-annotation. Fixing it means deriving the verdict from the team's own schema — a model contract, not wiring, which is why it wasn't folded into the parity pass.
- Peer comparison on custom schemas — The compare carousel, the inline marks showing what other annotators said on the same post, and the guided keyboard flow — three things the built-in panel has and a custom schema's editor doesn't.
- Contribution tracking — What each annotator, team and organization has produced, beside the consumption meters that already exist. Output has been re-derivable from the annotation record all along; nothing reports it yet.
Exploring
Wanted, with an open question in front of it.
- The other hate types in the same panel — The label spaces for anti-Black, anti-Latino and anti-queer hate already ship inside the extension; the annotation panel is locked to antisemitism. Unlocking it is a small change and a large decision about how a corpus annotated against four taxonomies is kept coherent.
- Structured flagged-source measurement — Today the extension marks a citation to a watchlisted outlet when an annotator happens to encounter one. A deliberate, repeatable prompt suite would turn that into a rate that can be compared across assistants and over time.
Release history
Each release lists what it added. A version in development is already built and in testing — it reaches annotators as the next install.
v0.4.0
in developmentMulti-team tenancy: a team owns its own annotation schema and its own set of surfaces, and every page that reaches across organizations is admin-only.
- Which sites and AI chats a team may annotate on is a setting now, not a briefing: an admin ticks the 13 surfaces per organization and per team, so a team scoped to one research question — or an agreement that doesn't cover AI-chat transcripts — is enforced rather than explained.
- The layers intersect. An organization's list is a ceiling its teams narrow but never widen, and a surface the organization has turned off shows as unavailable on the team's row rather than as a box that can be ticked to no effect.
- A team with no list of its own inherits. Enforcement runs in the page (no Annotate button on a surface the team doesn't hold) and again when the submission arrives, since the first check runs on the annotator's own machine.
- Nothing is restricted out of the box — the shipped policy is empty, so every team keeps all 13 surfaces until an admin unticks something.
- Each team assigns its own annotation schema. Resolution runs team → organization → default, so re-pointing one team leaves its siblings untouched.
- An acting-team switcher: the team you are annotating for decides the schema, the destination and the meters, while what you can SEE still spans every team you belong to.
- Cross-tenant pages are admin-only. A lead's oversight covers every team inside their own organization — that is depth, not a reach into another organization's names, rosters or totals.
- The organizations page is one collapsible table of organizations and their teams, with drag-and-drop between them over the same confirmed move the buttons use.
- Every move confirms against a dry run that NAMES the people it re-files: existing annotations stay where they are, only future work moves, and a vague “are you sure?” never conveyed that.
- Moves now warn before they break. A member missing from the target organization, or a team schema that organization hasn't published, is reported up front instead of surfacing later as a failed submission.
- The teams page shows every team in your organization; a team you're not on renders read-only rather than as a form that would be refused on save.
- A platforms page sets which sites and AI chats each organization and team may annotate on. A team can narrow what its organization allows and never widen it, so an organization-level limit is a real ceiling rather than a suggestion.
- Platforms a team isn't cleared for simply don't show the annotation tools, and a submission from one is refused at the service too — the policy holds whether or not the browser honours it.
- Custom schemas match the built-in panel: re-opening an annotation now pre-fills the answers you already gave. Re-submitting overwrites the previous annotation, so an editor that opened blank was quietly replacing finished work — this was the release's most important fix.
- The flag pill, the thread-context box (on a chat: the opening request and the eliciting prompt) and the AI explanation all reached custom schemas, so a team on its own schema stops judging a response with no sight of the question.
- Annotation schemas are versioned, so an answer always renders against the definition it was asked under, however often the schema is edited afterwards.
v0.3.0
2026-08-08The platform set nearly doubled, and the annotation panel became configurable per organization instead of fixed in the code.
Annotable after this release — 13 surfaces: X, YouTube, Rumble, TikTok, Reddit, Instagram, 4chan, and ChatGPT, Claude, Grok, Gemini, DeepSeek, Qwen.
- Rumble and TikTok — both the video and its comments.
- Three more assistants: Gemini, DeepSeek and Qwen.
- Reddit submissions themselves became annotable, with the submission carried as context for its comments.
- Flag and Annotate moved into the chat's own action row, so the buttons sit where every other control on that response sits — and stopped landing in the middle of a long answer.
- A highlighted passage now anchors to that passage. A partial highlight used to be filed against the whole response, which turned a precise piece of evidence into a vague one.
- The editor opens centered as a modal on extension pages, where there is no post behind it for a side drawer to leave visible.
- On Qwen, Annotate and Flag join the platform's own selection menu instead of fighting it for the same corner of the screen.
- Citations to watchlisted outlets are marked inline in an assistant's response, with the reason a click away.
- Anyone can report an unlisted outlet; leads triage reports into the watchlist every annotator's extension fetches, with no rebuild.
- Detection only — a flagged citation is never an automatic hate label.
- A schema builder with visual, JSON and layout tabs, and a live preview that renders through the same renderer the annotators use.
- Custom HTML and CSS layouts with field placeholders, validated the same way on the client and the server so a layout can't pass one and fail the other.
- Starting-point presets, so a new schema begins from a working example.
- AI use is metered per organization, team and person, with monthly limits and a Usage & limits page.
- Every account starts with 5 pre-annotations and 5 explanations a month — a default allowance rather than an unbounded one.
- A security review pass: hardened sign-in and queue authorization, HTTPS-only ingest, rate and cost limits, and baseline security headers on every response.
- The normalized annotation database became the authoritative store for every submission.
- Every network call carries a timeout. A connection that is accepted and then never answered used to hang forever, which could leave the extension looking dead on the page.
- Platform brand logos on every queue and history row.
- One shared token set behind the whole interface, so the popup, the panel and the workspace stop drifting apart.
v0.2.0
2026-08-04Five more surfaces, and adding a colleague stopped requiring a shared password or a redeploy.
Annotable after this release — 8 surfaces: X, YouTube, Reddit, Instagram, 4chan, and ChatGPT, Claude, Grok.
- Grok conversations.
- Reddit and Instagram comments.
- 4chan threads.
- An admin can invite a colleague from the console: a passwordless account with its permission group, team and organization already set, claimed by signing in with Google.
- The accounts roster groups by team, permission group or role, collapses, and searches — a flat list had stopped working past about thirty accounts.
- Post identity is stable on YouTube, so the badge marking an already-annotated comment (and the flag pill beside it) no longer disappears and reappears as the page re-renders.
- A flag placed on a permalink is recognized wherever that post appears.
- The extension asks for no site-access permission beyond the ingest service itself. Every request it makes goes there and nowhere else, so the platform permissions it used to request bought nothing.
v0.1.0
2026-07-16The first release: annotate in place on the platform itself, with a lead's approval standing between a submission and the corpus.
Annotable after this release — 3 surfaces: X, YouTube, and ChatGPT and Claude conversations.
- Hover any post or comment → Annotate (or Alt+A) → classify in a drawer beside the post, against the AddressHate label space. No copy-pasting into a separate tool, and the post stays on screen.
- The thread comes with it: reply chains, quoted posts, the parent comment, the video or conversation the post sits in, and its media.
- Keyboard navigation between posts, contextual co-text picking for the comments that make a post legible, and a five-second undo on every submit.
- ChatGPT and Claude conversations are annotable as well — an assistant turn, or a selected excerpt of one, with the prompt that elicited it captured as context.
- Submissions queue locally and deliver with retry, so annotating through a dead connection, a slept laptop or a browser restart keeps the work.
- The editor stays on screen until a submission is acknowledged, rather than closing hopefully.
- An annotation is archived immediately but stays pending until a lead approves it; approval is what commits it to the database and runs the AI second opinion.
- Leads get an approval inbox with the captured evidence, a conflicts view where annotators disagree on the same post, and coaching feedback that reaches the annotator on their own history rows.
- Flag a post for someone else to annotate, with the passage that prompted it highlighted.
- Flagging inside a private conversation is consent-gated, and the evidence is only ever readable in the workspace — nobody else can open someone's chat by its URL.
- Username/password or Google sign-in, with capabilities coming from permission groups — admin, lead, senior annotator, annotator, flagger — resolved live, so a change to a group applies immediately.
- Teams as the isolation unit: two teams do not see each other's flags or annotations.
- A one-time onboarding agreement before first use.
- A full-page Items dashboard over the shared work queue: directories, paste-a-list to create, assignment and filtering.
- History with gate status per row, date and project filters, and export to .xlsx.
- An optional model pre-annotation and a plain-language explanation beside the annotator's own answer, scored for agreement — a second opinion, never a substitute for the annotator's.
- The ingest service on Cloud Run with a durable archive of every submission envelope.
- These public pages — privacy, data deletion, terms and support.
How versions are numbered
The annotator is pre-1.0, so every release so far sits on the 0.x line: the middle number moves for a release, the last for a fix shipped on its own. The version above is the version in the extension's manifest — the one Chrome shows on its extensions page — so what you are running and what you are reading always match. 1.0 is reserved for the point the tool is stable across every surface it claims, not for a date.
Questions about a release: jmurry@addresshate.org. Setup and troubleshooting live on Support.