Toasty

The Toasty Study Calendar icon — a slice of toast carrying a calendar cardToasty Study Calendar

Berry — this is yours. A Twitch extension that lives on the left edge of your player: a shared calendar, a task board, a focus timer, and a few quiet numbers each of your viewers keeps to themselves.

Everything in it runs on the chat commands your viewers already type, so nobody has to learn anything new. You never hand over a password, and there is nothing you have to set up.

A small cream tab on the left edge of a Twitch player showing today's date
Closed, it is one small tab on the left edge showing today's date. That is the whole footprint.

Where it stands right now

The extension is in Hosted Test — built, deployed, and running on Twitch's own CDN. Your account is on the testing allowlist, along with one other.

Testers are not the same as viewers. Until Twitch reviews and releases it, only allowlisted accounts can see it at all. So the calendar works, but for now it is yours and that one other account's — your community will not see it until release. Everything Twitch asks for before review is already filled in, so that submission can happen whenever you are happy with it.

The calendar

A real month grid. Each day carries up to three coloured dots — one per thing on it — and a +N when there are more. Today is ringed. Anyone can pick a day and it takes over the panel, with one card per entry and a box to add their own.

Entries are public within your channel: everyone watching sees what everyone else has coming up, which is the point of a co-working calendar. The Mine / All switch is just a filter on top of that.

8 colours, chosen with a word — red, teal, brown. Titles are up to 80 characters, and dates can run from 30 days back to 400 days ahead.

The Toasty calendar drawer open over a Twitch player, showing a September month grid
The month view. The dots under each day are the things on it; pick a day to see them.

Tasks

Two groups — Working on and Done — with a count on each. A viewer taps the ring on their card to move it along: ○ todo → ◐ doing → ✓ done. Whatever is in progress gets a NOW chip.

  • A task that arrived from chat is marked 💬, so it is obvious where it came from.
  • Clear mine lets someone tidy their finished ones away — and leaves an Undo chip, because it is a tidy-up, not a delete.
  • 8 tasks per person per day, up to 140 characters each. The box counts down for them and finishes with "That's all 8 today 🍞".
The Tasks tab showing two viewer tasks, one marked NOW
Tasks. The green card with the NOW chip is what that person is on right this minute.

The timer

Two separate clocks. A one-shot break timer for "back in five", and a pomodoro cycle that keeps going — focus, break, focus, counting rounds. Both render on every tab, not just the Timer one, so nobody has to go looking for them.

When a timer ends it says Time's up and stays on screen for a moment instead of vanishing, so latecomers still see what just happened.

The countdown is deliberately not the server's clock. Every viewer is a few seconds behind live, and by a different amount. Toasty asks Twitch how far behind each one is and adds it in — so when you say "twenty seconds left" out loud, the number on their screen says twenty too.

The Timer tab with a break timer counting down from 1:57
The Timer tab with a break timer running. The strip along the top is the same countdown, which is why it shows on every tab.

Quiet numbers

Three counters for each viewer: things finished, things on the calendar, and times turned up. They are private — each person sees only their own, and you do not see them at all.

Counts, never streaks. Nothing here can go down. A streak punishes the day someone was ill, and this is a study calendar, not a habit-shaming app.

The Stats tab showing three personal counters
Stats. Three numbers, private to the person looking at them.

Your chat, in the extension

This is the part that surprises people. Toasty reads your chat and turns the commands your viewers already type into cards on the overlay. Same words, same StreamElements replies — the entries simply show up on the video as well.

Type thisWhoWhat happens
!caladd 9/10 obs open source redany viewerA calendar entry appears on Sep 10, titled obs open source, in red.
!taskadd read chapter 4any viewerA task card appears, marked 💬 so everyone can see it came from chat.
!taskdone 3any viewerTicks their 3rd task. Bare !taskdone ticks their most recent one.
!mylist · !mystats · !taskstatsany viewerNothing appears — StreamElements already answers these in chat, and one bot answering is better than two.
!timer 5 · !timer stopyou & your modsThe one-shot countdown, on the video, for everyone watching.
!focus 25 · !break 5 · !pomo stopyou & your modsThe repeating pomodoro cycle — phase, minutes left, and round number.

You never hand over a password. Toasty joins your chat the way any logged-out viewer does — anonymously. No login, no OAuth, no bot invite, no permissions on your account. It cannot post, ban, host, or read anything private, because it never signs in.

  • It never writes to chat. StreamElements already answers; two bots replying to one command is worse than one.
  • Bad input is ignored, not guessed. !caladd 2/30 nope does nothing at all, rather than putting a wrong date on your stream.
  • The year is inferred forwards. !caladd 1/15 typed in September means next January. Type the year and it is obeyed.
  • A dropped connection cannot double your calendar — every message carries an id from Twitch, and repeats are discarded.
  • Mod-only commands are checked against the badges Twitch signs, never against anything typed in the message.

For you and your mods

A moderation panel sits in your Creator Dashboard while you stream. Your mods get it too.

  • Pomodoro first — the buttons you will reach for most, biggest and at the top.
  • Hold new entries for approval — raid mode. Nothing reaches the stream until you say so.
  • Every calendar entry and every task, each with remove and block.
  • Removed things go to a list you can reopen, each with put back. Removing is never a black hole.
  • Clear the whole board sits quietly at the bottom and needs two taps — and everything it hides is still recoverable above.

remove and block look deliberately different, because they are: one takes a card off the screen, the other silences a person for the rest of the stream. Blocking sweeps both their tasks and their calendar entries — one button, that person gone, as you would expect.

Nothing is ever really deleted. Clearing stamps a time and the row stays, so there is no timer quietly eating anyone's history.

The moderation panel listing calendar entries and tasks with remove and block buttons
The moderation panel, in your dashboard while you stream. Your mods see this too.

Your settings

The config page opens by telling the truth: "You don't need to set anything up — it's already running. Everything below is optional."

  • Four switches — Calendar, Tasks, Timer, Stats — to remove any tab you do not want.
  • Whether the calendar opens on everyone's entries or just their own. Viewers can still switch for themselves.
  • Your timezone, as a single button with your own zone already detected. Turn it on and viewers in other countries see 22:14 stream | 19:14 you — your time beside theirs. Off by default, and identical times show nothing.

Your mods can moderate, but only you can change these. Mods handle content; the shape of your channel's panel is yours.

The broadcaster settings page with feature toggles and chat command reference
Your settings page. Every one of these is optional — it works untouched.

Turning it on

  1. Your Twitch name goes on the extension's testing allowlist — already done, nothing needed from you.
  2. In your Creator Dashboard: Extensions → Invite Only, find Toasty Study Calendar, and Add it.
  3. Then My Extensions → Activate, and put it in a Video Overlay slot.
  4. Read this one or it will look broken. Open your channel with the stream playing, click the puzzle-piece icon to the right of the player, and press Accept on Twitch's "This is a Test Extension that Twitch has not evaluated" notice. Until that is accepted there is no overlay at all — not a broken one, none — and every person watching has to do it once, in each browser. It goes away when the extension is released.

And it only appears while the video is actually playing. On a paused player, "the extension is missing" and "the stream isn't running" look exactly the same.

The Invite Only tab of the Twitch Extensions dashboard showing Toasty Study Calendar
Step 2: Extensions → Invite Only. Toasty Study Calendar, with the toast icon.

Adding someone else

While the extension is in testing, anyone you want to see it — another mod, a friend — has to be on an allowlist by name. This is done from the developer console, so it is a message to Kinesin rather than a switch on your side. There are two lists, and they do different jobs:

  • Testing Account Allowlist — the people who can see and use it right now.
  • Streamer Allowlist — the channels allowed to install it after release. Left empty it would mean every broadcaster on Twitch, so it is filled in on purpose: this stays yours.
The Access tab of the Twitch developer console showing two allowlists, names blurred
The two allowlists in the developer console. Names blurred here — they are real people.

Adding someone has a cost, which is worth knowing before you ask. The Access tab is read-only while the extension is in Hosted Test, so editing it means moving the version back to Local Test, adding the name, saving, and moving it forward again. During that window Twitch serves the extension from the developer's own machine, so the overlay is blank for everyone watching for about ninety seconds. Best done off air — so it is worth batching a few names into one request rather than asking one at a time.

The Status tab showing Current Status: Hosted Test
Where the version currently sits: Hosted Test, with review available whenever you are ready.

What it stores

Per viewer: their calendar entries, their tasks, an anonymous per-channel id, and a count of things they have finished. A display name only if they tap the 🔗 link button and let Twitch share it — decline and they are simply someone.

No email, no password, no payment details, no ads, no analytics, no location — and not even a timezone: each viewer's clock is read in their own browser and never sent anywhere. Nothing leaves your channel and nothing is sold.

The full privacy notice →

Still to come

  • The Timer and Stats tabs, and the phone view, work — but have not been driven on a real live channel yet. Yours will be the first.
  • !mylist, !mystats and !taskstats stay with StreamElements. The overlay reaches every viewer at once, so it has no way to answer one person privately.
  • Then: submitting to Twitch for review, so your viewers can see it too.

There is a second one 🍞

Toasty Tasks is the companion — a smaller, task-board-only extension that sits in a component slot rather than over the video. Twitch allows one overlay and two components per channel, so you can run both at once. Their chat commands were deliberately kept apart, so one message never lands on two boards.

Built for you 💚 — if something is wrong, or you want it to work differently, just say. It is meant to fit your stream, not the other way round.