Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion site/public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@
## Docs
- [Quick Start](https://tomatick.us/docs/): install and use every feature — timer, stopwatch, pomodoro, alarms, presets, hotkey, Focus/DND, settings sync.

Available for macOS (Apple Silicon), Windows (x86_64), and Linux (x86_64). All builds are unsigned.

## Source & downloads
- [GitHub repository](https://github.com/MichalAFerber/tomatick2): source code (Go), issues, releases.
- [Releases](https://github.com/MichalAFerber/tomatick2/releases): download the latest `.zip` (macOS, Apple Silicon).
- [Releases](https://github.com/MichalAFerber/tomatick2/releases): download the latest `.zip` (macOS), `.exe` (Windows), or `.tar.xz` (Linux).

## Policies
- [Privacy Policy](https://tomatick.us/privacy/): local-only data; cookieless, self-hosted Plausible analytics on the site.
Expand Down
2 changes: 1 addition & 1 deletion site/src/components/Head.astro
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const jsonLd =
name: SITE.name,
url: SITE.url,
applicationCategory: 'UtilitiesApplication',
operatingSystem: 'macOS',
operatingSystem: ['macOS', 'Windows', 'Linux'],
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
description: SITE.description,
author: { '@type': 'Person', name: SITE.author, url: SITE.authorUrl },
Expand Down
4 changes: 2 additions & 2 deletions site/src/consts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ export const SITE = {
description:
'A menu bar timer, stopwatch, alarm and pomodoro in one icon, with a timestamped ' +
'history of every run. Rewritten in Go as a single binary. Open source, MIT, no tracking.',
// The Go rewrite (tomatick2) is the current product and where releases ship from.
// This repo (tomatick) still hosts the site and the original macOS-only Python app.
// This site and its releases both live here now (tomatick2, the Go rewrite).
// legacyRepo below is the original macOS-only Python app and its own site history.
repo: 'https://github.com/MichalAFerber/tomatick2',
releases: 'https://github.com/MichalAFerber/tomatick2/releases',
legacyRepo: 'https://github.com/MichalAFerber/tomatick',
Expand Down
6 changes: 3 additions & 3 deletions site/src/pages/contact.astro
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ import { SITE, SUPPORT_EMAIL, MAILER_PRODUCT } from '../consts';
24–48 hours.
</p>
<p class="muted mt-3 text-[15px] leading-relaxed">
{SITE.name} runs entirely on your Mac, so a bug report is far easier to act on with the
details: your macOS version, the {SITE.name} version from the menu bar, and what you were
doing when it happened.
{SITE.name} runs entirely on your device, so a bug report is far easier to act on with the
details: your OS and version (macOS, Windows, or Linux), the {SITE.name} version from the
menu bar, and what you were doing when it happened.
</p>
</div>

Expand Down
63 changes: 48 additions & 15 deletions site/src/pages/docs.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { SITE } from '../consts';
---
<Base
title="Quick Start"
description="How to install and use Tomatick — the macOS menu bar timer, stopwatch, alarm and pomodoro."
description="How to install and use Tomatick — the menu bar timer, stopwatch, alarm and pomodoro for macOS, Windows, and Linux."
path="/docs/"
schema="WebApplication"
>
Expand All @@ -13,16 +13,19 @@ import { SITE } from '../consts';
<h1>Quick Start</h1>
<p>
A <strong>menu bar</strong> timer, stopwatch, alarm and pomodoro — all in one
icon, with a timestamped history of everything you run. Rewritten from the
icon, with a timestamped history of everything you run. Runs on
<strong>macOS, Windows, and Linux</strong>. Rewritten from the
original <a href={SITE.legacyRepo} target="_blank" rel="noopener">Python app</a>
as a single Go binary.
(macOS-only) as a single Go binary.
</p>
<blockquote>
<strong>Requirements:</strong> Apple Silicon Mac (M1/M2/M3/M4), a recent macOS. The
build is unsigned (no Apple Developer Program needed).
All three builds are <strong>unsigned</strong> — no Apple Developer Program, no code-signing
certificate. Each OS has its own one-time first-launch step; see below.
</blockquote>

<h2>1. Install</h2>

<h3>macOS (Apple Silicon, M1–M4)</h3>
<ol>
<li>Download the latest <code>Tomatick-x.y.z-macos-arm64.zip</code> from the <a href={SITE.releases} target="_blank" rel="noopener">Releases</a> page.</li>
<li>Unzip it and drag <strong>Tomatick.app</strong> onto the <strong>Applications</strong> folder.</li>
Expand All @@ -33,9 +36,33 @@ import { SITE } from '../consts';
<pre><code>xattr -dr com.apple.quarantine /Applications/Tomatick.app</code></pre>
</li>
</ol>

<h3>Windows (x86_64)</h3>
<ol>
<li>Download the latest <code>Tomatick-x.y.z-windows-amd64.exe</code> from the <a href={SITE.releases} target="_blank" rel="noopener">Releases</a> page. There is no installer — run the <code>.exe</code> directly, from wherever you saved it.</li>
<li>
<strong>First launch only:</strong> SmartScreen will warn that the publisher is unknown,
because the build is unsigned. Click <strong>More info</strong> → <strong>Run anyway</strong>.
</li>
</ol>

<h3>Linux (x86_64)</h3>
<ol>
<li>Download the latest <code>Tomatick-x.y.z-linux-amd64.tar.xz</code> from the <a href={SITE.releases} target="_blank" rel="noopener">Releases</a> page.</li>
<li>
<pre><code>tar -xJf Tomatick-x.y.z-linux-amd64.tar.xz
cd tomatick
sudo make install # or: make user-install (installs under ~/.local)</code></pre>
Installs the binary, a <code>.desktop</code> entry, and the icon. No signing step.
</li>
<li>A tray host that speaks StatusNotifierItem / AppIndicator is required to see the menu bar
icon (GNOME needs an extension; KDE and most other desktops work out of the box).</li>
</ol>

<p>
Tomatick is a <strong>menu bar app</strong> — there's no Dock icon and no window. Look for
the 🍅 (or stopwatch) icon in the <strong>top-right menu bar</strong>. Click it for everything.
Tomatick is a <strong>menu bar / system tray app</strong> — there's no taskbar window. Look for
the 🍅 (or stopwatch) icon in the menu bar (macOS), notification area (Windows), or system
tray (Linux). Click it for everything.
</p>

<h2>2. Start something</h2>
Expand Down Expand Up @@ -75,10 +102,12 @@ import { SITE } from '../consts';
</tbody>
</table>

<h2>5. Focus / Do-Not-Disturb during work</h2>
<h2>5. Focus / Do-Not-Disturb during work <span class="muted">(macOS only)</span></h2>
<p>
Tomatick can turn a macOS <strong>Focus</strong> on during a pomodoro <strong>work</strong> phase
and off on breaks. macOS has no public API for this, so it runs <strong>Shortcuts you create</strong>:
and off on breaks. macOS has no public API for this, so it runs <strong>Shortcuts you create</strong>.
This feature does not exist on Windows or Linux — there's no equivalent OS-level Focus/DND API
to hook into, so the setting is a no-op there.
</p>
<ol>
<li>Open <strong>Shortcuts</strong> → <strong>+</strong> for a new shortcut.</li>
Expand All @@ -91,25 +120,29 @@ import { SITE } from '../consts';
<h2>6. Global hotkey</h2>
<p>
Settings → <strong>General</strong> → <strong>Global hotkey</strong>: pick an action (Start Pomodoro,
Start Timer, or Toggle Keep Awake) and a key (e.g. <code>⌥⌘P</code>). The first use prompts for
<strong>Accessibility</strong> permission (System Settings → Privacy &amp; Security → Accessibility).
Start Timer, or Toggle Keep Awake) and a key (e.g. <code>⌥⌘P</code>). On macOS the first use
prompts for <strong>Accessibility</strong> permission (System Settings → Privacy &amp; Security →
Accessibility).
</p>

<h2>7. Keep Awake</h2>
<p>Menu → <strong>Keep awake</strong> prevents sleep while it's on. Bindable to the hotkey; turns itself off on quit.</p>

<h2>8. Copy your setup to another Mac</h2>
<h2>8. Copy your setup to another device</h2>
<ol>
<li>Settings → <strong>General</strong> → <strong>Export Settings…</strong> → save the <code>.json</code>.</li>
<li>On the other Mac: <strong>Import Settings…</strong> → pick that file.</li>
<li>On the other device: <strong>Import Settings…</strong> → pick that file.</li>
</ol>
<p>This copies presets, pomodoro lengths, sounds, snooze, Focus shortcut names, hotkey, and alarms. (Launch-at-login stays per-machine.)</p>

<h2>Where your data lives</h2>
<pre><code>~/Library/Application Support/Tomatick/
<pre><code>macOS: ~/Library/Application Support/Tomatick/
Windows: %AppData%\Tomatick\
Linux: $XDG_DATA_HOME/Tomatick/ (or ~/.local/share/Tomatick/)

├── config.json # all settings, presets, alarms
└── history.db # SQLite event history</code></pre>
<p>It never leaves your Mac. See the <a href="/privacy/">Privacy Policy</a> for the details.</p>
<p>It never leaves your device. See the <a href="/privacy/">Privacy Policy</a> for the details.</p>

<p>Questions or bugs? See the <a href={SITE.repo} target="_blank" rel="noopener">GitHub repository</a>.</p>
</div>
Expand Down
35 changes: 28 additions & 7 deletions site/src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,19 @@ import { SITE } from '../consts';
const features = [
{ icon: '⏱', title: 'Timer', body: 'Natural durations — 25m, 1h30m, 90s, 2:30. Live M:SS countdown right in the menu bar. It keeps ringing until you dismiss it.' },
{ icon: '⏲', title: 'Stopwatch', body: 'Counts up with laps. Pause, resume, reset — all from the menu.' },
{ icon: '🍅', title: 'Pomodoro', body: '25 / 5 / 15 by default, auto-advancing work ↔ break, long break every 4th cycle. Optional Focus/DND during work.' },
{ icon: '🍅', title: 'Pomodoro', body: '25 / 5 / 15 by default, auto-advancing work ↔ break, long break every 4th cycle. Optional Focus/DND during work (macOS only).' },
{ icon: '🔔', title: 'Alarms', body: 'One-shot (a date + time) or recurring (a time on chosen weekdays). Looping sound + notification, with snooze.' },
{ icon: '🧭', title: 'Run several at once', body: 'Multiple sessions together; the menu bar shows your pinned one live, everything else listed with its own count.' },
{ icon: '🗂', title: 'Timestamped history', body: 'Every event logged to SQLite. Browse recent runs, export the full log to CSV or JSON.' },
];

const badges = ['Open source', 'MIT licensed', 'No data leaves your Mac', 'Single Go binary'];
const platforms = [
{ icon: '🍎', title: 'macOS', body: 'Apple Silicon (M1–M4). Unsigned — right-click → Open on first launch.' },
{ icon: '🪟', title: 'Windows', body: 'x86_64. Unsigned — SmartScreen: More info → Run anyway on first launch.' },
{ icon: '🐧', title: 'Linux', body: 'x86_64, .tar.xz. No signing step — install and run.' },
];

const badges = ['Open source', 'MIT licensed', 'macOS · Windows · Linux', 'Single Go binary'];
---
<Base
title="Tomatick — menu bar timer, stopwatch, alarm & pomodoro"
Expand All @@ -29,17 +35,32 @@ const badges = ['Open source', 'MIT licensed', 'No data leaves your Mac', 'Singl
</h1>
<p class="muted mx-auto mt-5 max-w-xl text-lg sm:text-xl">
Tomatick is a <strong>menu bar</strong> timer, stopwatch, alarm and
pomodoro — with a timestamped history of everything you run. Rewritten
from the original Python app as a single Go binary.
pomodoro — with a timestamped history of everything you run. Runs on
<strong>macOS, Windows, and Linux</strong> — rewritten from the
original Python (macOS-only) app as a single Go binary.
</p>
<div class="mt-8 flex flex-wrap items-center justify-center gap-3">
<a href={SITE.releases} target="_blank" rel="noopener" class="btn btn-primary text-lg">↓ Download for macOS</a>
<a href={SITE.releases} target="_blank" rel="noopener" class="btn btn-primary text-lg">↓ Download</a>
<a href="/docs/" class="btn text-lg">Quick Start</a>
</div>
<ul class="mt-8 flex flex-wrap items-center justify-center gap-2.5" aria-label="Highlights">
{badges.map((b) => <li class="badge">{b}</li>)}
</ul>
<p class="muted mt-4 text-sm">macOS, Apple Silicon (M1–M4) · unsigned build, no Apple Developer Program needed.</p>
<p class="muted mt-4 text-sm">All builds are unsigned — see Quick Start for the one-time first-launch step on your OS.</p>
</div>
</section>

<!-- Platforms -->
<section class="container-page pb-8" aria-labelledby="platforms-h">
<h2 id="platforms-h" class="text-center text-2xl sm:text-3xl">Available for macOS, Windows, and Linux</h2>
<div class="mt-6 grid gap-5 sm:grid-cols-3">
{platforms.map((p) => (
<article class="card text-center">
<div class="text-3xl" aria-hidden="true">{p.icon}</div>
<h3 class="mt-3 text-xl">{p.title}</h3>
<p class="muted mt-2 text-[15px] leading-relaxed">{p.body}</p>
</article>
))}
</div>
</section>

Expand All @@ -62,7 +83,7 @@ const badges = ['Open source', 'MIT licensed', 'No data leaves your Mac', 'Singl
<div class="card mx-auto max-w-3xl text-center" style="background-color: var(--bg-tint);">
<h2 class="text-2xl sm:text-3xl">Everything from the menu bar</h2>
<p class="muted mx-auto mt-3 max-w-xl">
No Dock icon, no window. Start a session and it shows up in the menu — click it to
No taskbar window. Start a session and it shows up in the menu — click it to
pause, stop, or dismiss. Your settings, presets and alarms sync via a simple export/import.
</p>
<div class="mt-6 flex flex-wrap items-center justify-center gap-3">
Expand Down
11 changes: 6 additions & 5 deletions site/src/pages/privacy.astro
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,18 @@ const updated = 'July 2026';
<p class="muted">Last updated: {updated}</p>

<blockquote>
<strong>Short version:</strong> the Tomatick app stores everything locally on your Mac —
<strong>Short version:</strong> the Tomatick app stores everything locally on your device —
nothing is uploaded, no account, no server-side processing. This website uses privacy-friendly,
cookieless analytics and collects no personal information.
</blockquote>

<h2>The Tomatick app</h2>
<p>
Tomatick runs entirely on your Mac. Your settings, presets, alarms and event history are stored
in <code>~/Library/Application&nbsp;Support/Tomatick/</code> and <strong>never leave your
device</strong>. There are no accounts, no telemetry, and no network calls to us. If you use the
Export Settings / Export History features, the resulting files go wherever you choose to save them.
Tomatick runs entirely on your device (macOS, Windows, or Linux). Your settings, presets,
alarms and event history are stored locally — see <a href="/docs/">Quick Start</a> for the
exact folder on your OS — and <strong>never leave your device</strong>. There are no accounts,
no telemetry, and no network calls to us. If you use the Export Settings / Export History
features, the resulting files go wherever you choose to save them.
</p>

<h2>This website (tomatick.us)</h2>
Expand Down