Skip to content
| Marketplace
Sign in
Visual Studio Code>Education>TomoBreakNew to Visual Studio Code? Get it now.
TomoBreak

TomoBreak

TomoBreak

|
2 installs
| (0) | Free
A coding companion that cares about you and never breaks your flow.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

TomoBreak

A coding companion that cares about you and never breaks your flow.

A small animated buddy walks across your code editor and checks in when you take a natural pause. It might remind you to:

  • drink water
  • rest your eyes
  • fix your posture
  • stretch

It can also run Pomodoro sessions and teach you a new word. It reacts to your answers and to your coding, and it remembers how well you take care of yourself. It never appears while you are typing or debugging.

Getting started

  1. Install TomoBreak. The setup page opens automatically.
  2. Pick a character, the modes you want, and their intervals, then click Save.
  3. Keep coding. Your buddy waits for a natural pause before it shows up.

Run TomoBreak: Show Test Visit from the Command Palette (Ctrl+Shift+P) to see a visit right away.

Features

Your buddy

  • Five original characters: a chubby hamster, a black kitten, a happy puppy, a little girl and a little boy. Each has 8 animated states.
  • Two display styles (tomobreak.display):
    • editor: walks over your code, with answer buttons right beside it.
    • panel: shows in the TomoBreak view in the Explorer or the bottom panel.

Never breaks your flow

Reminders wait for a natural pause:

  • 20 seconds without typing
  • a save
  • a commit
  • a finished task
  • switching editor tabs
  • coming back to the VS Code window, with a short delay first

Nothing appears while you type, while a debug session runs, during quiet hours or in Presentation mode. If no pause comes within 10 minutes, the buddy only peeks in from the edge and the status bar flashes until you click it. Visits are at least 5 minutes apart (or your shortest reminder interval, if that is shorter), and reminders that are due together are merged into one visit, such as "Water and a quick stretch?". With several VS Code windows open, only one of them shows the visit.

Wellness modes

Mode Default What happens
💧 Hydration every 45 min "Did you drink water?" Yes gets a happy dance
👀 Eye break every 20 min Look 20 feet away, with a 20-second timer
🪑 Posture every 45 min "Sit up straight with me!" with a quick posture checklist
🤸 Stretch every 60 min A follow-me side stretch: your buddy leans left and right with you for 20 seconds
🍅 Pomodoro 25 / 5 min Reminders wait for your break and arrive together
📖 Language learner every 30 min English (B2–C2) or Japanese (JLPT N5–N3) words

Language learner

  • Each word card shows the word, its part of speech, pronunciation, meaning, an example and a synonym. For Japanese it shows kanji, kana, romaji, an example and its translation.
  • 🔊 reads the word aloud with your system's voices (hidden if none is installed).
  • Answers:
    • Got it saves the word.
    • Already knew it means you never see it again.
  • Saved words come back as quizzes after 1, 3, 7 and 21 days, with three possible meanings. A wrong answer starts the word over at the 1-day quiz. Passing the day-21 quiz marks it Mastered.
  • The word bank has 300 English words and 200 Japanese words, all bundled. No word repeats until you have seen the whole level.
  • TomoBreak: Open My Words lets you search everything you have seen, filter it by Learning or Mastered, and see totals.

Bond system

  • Affection (0–100, per character):

    • Yes +5
    • Snooze 0
    • No −3
    • No answer within 60 seconds −1
    • Correct quiz +3

    Affection never drops below 10. It sets your buddy's mood (thrilled, happy, okay or worried) and its resting expression. The buddy can get sad, but it never guilt-trips you.

  • Daily streaks per mode, for example 4 glasses of water a day (tomobreak.<mode>.dailyGoal).

  • Streak unlocks:

    • 3 days: a new dance
    • 7 days: an accessory
    • 14 days: new dialogue
    • 30 days: a special celebration
  • Weekly summary: on the first visit of each week, e.g. "You drank water 31 times this week. I'm proud of you!".

  • TomoBreak: Open Stats shows your mood, streaks and bar charts for the last 7 and 30 days (also available as a table).

Coding reactions

At most one reaction appears every 15 minutes, and reactions follow the same pause rules as reminders. You can turn each one off.

  • Error storm: more than 10 errors gets "want to take a breath first?". Going from 10+ errors to zero gets a celebration.
  • Builds and tests: a celebration when one passes, encouragement when one fails ("Bugs are just plot twists.").
  • Commits: "First commit of the day!" and a happy nod every 5th commit.
  • Late night: after 1 AM (configurable), "the bugs will still be here tomorrow. Sleep?"
  • Long session: after 2 hours of coding without a 5-minute break, a stretch suggestion.
  • Giant file: opening a file over 2,000 lines gets a playful joke, once per file per day.

Commands

Command
TomoBreak: Toggle On/Off Turn everything on or off immediately
TomoBreak: Hide Buddy Now Ctrl+Alt+T (Cmd+Alt+T on Mac)
TomoBreak: Start Pomodoro / Stop Pomodoro
TomoBreak: Open Setup Character, modes, intervals, live preview
TomoBreak: Open Stats Mood, streaks, charts
TomoBreak: Open My Words Your vocabulary
TomoBreak: Show Test Visit See a visit now
TomoBreak: Presentation Mode (Pause 1 Hour / Resume) For screen sharing and demos
TomoBreak: Snooze All 30 Minutes

Clicking the status bar item opens a quick menu. During a question in the editor, clicking it lets you answer with the keyboard instead.

Settings

Everything is under tomobreak.* in the Settings UI, and the setup page stays in sync with it.

Setting Default
tomobreak.enabled true
tomobreak.display editor (panel)
tomobreak.answerStyle beside (quickPick is best for keyboard and screen reader use)
tomobreak.character girl
tomobreak.<mode>.enabled / intervalMinutes / dailyGoal per mode, see the table above
tomobreak.pomodoro.focusMinutes / breakMinutes 25 / 5
tomobreak.language.language english (japanese, both)
tomobreak.language.englishLevel C1 (B2 Medium, C2 Expert)
tomobreak.language.japaneseLevel N5 (N4, N3)
tomobreak.quietHours.enabled / start / end off / 22:00 / 07:00
tomobreak.reactions.<name> on (errorStorm, buildsAndTests, commits, lateNight, longSession, giantFile)
tomobreak.reactions.lateNightHour 1

Accessibility

  • Every question can be answered with the keyboard. Set tomobreak.answerStyle to quickPick, or click the status bar item during a question.
  • Webviews have focusable buttons and a live-region speech bubble.
  • Webviews respect reduce motion and use VS Code theme colors, so light, dark and high contrast themes all work.
  • The stats charts can be shown as a table.

Privacy

TomoBreak makes no network requests and has no telemetry or analytics.

  • It only notes that you typed, never what you typed. It never reads or stores file contents or file names. The one exception is a line count when you open a file, used for the giant-file joke, and the file is remembered only as an anonymous fingerprint in memory.

See PRIVACY.md for details.

Japanese word bank: entries to double-check

The Japanese entries were reviewed carefully, but JLPT lists have not been official since 2010, and some entries have accepted variants. These are the ones flagged for a native-speaker review:

  • Kana vs. kanji spelling (both forms are standard):
    • おいしい / 美味しい
    • きれい / 綺麗
    • 分かる / わかる
    • 諦める / あきらめる
    • 箸 is often written お箸.
  • Reading variant: 寂しい (さびしい / さみしい).
  • Spelling nuance: 貯める is the savings-specific spelling (溜める is the general one).
  • JLPT level varies between lists:
    • 自由
    • 答え
    • 比べる
    • 過ぎる
    • 祈る
    • 別れる
    • 守る
    • 失敗
    • 結果
    • 将来
    • 我慢
    • 確か
    • 突然
  • Example sentences:
    • 影響 ("影響を与えます" would be more natural).
    • 公園 (uses を散歩します).
    • 写真 (its example uses 撮る, a higher-level verb).
    • 確か (its example uses the adverb sense).
    • 喜ぶ (its example writes 子ども in mixed kana and kanji; 子供 is the other common spelling).
  • 箸 and 橋 share the romaji hashi. Pitch accent is not shown.

Development

npm install
npm start           # build and open a VS Code window with TomoBreak loaded
npm run compile     # esbuild -> dist/extension.js and media/webview/*
npm run watch
npm run typecheck   # tsc --noEmit for the extension and the webviews
npm run lint
npm test            # Vitest unit tests for src/core
npm run package     # vsce package -> tomobreak-<version>.vsix

Fast test mode: add "tomobreak.debug.fastIntervals": true to your settings.json. It makes:

  • every interval 1 minute
  • snoozes 1 minute
  • the gap between visits 20 seconds
  • word reviews 1, 3, 7 and 21 minutes

The setting is hidden on purpose, so VS Code marks it as unknown. The TomoBreak output channel logs every timing decision.

Run npm run generate:characters to regenerate the character SVGs.

License

All rights reserved. See LICENSE.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft