Team Time — World Clock Dashboard
Team Time is a built-in world clock for a team spread across timezones: live clocks with working-hours status dots, a meeting planner that shows a proposed slot in everyone's local time with overlap detection, and a reverse converter for scheduling emails into someone else's workday. It is off by default, behind a Settings toggle, a toolbar Globe icon and a Quick Launch tab.
What it is
Team Time is a built-in Omniscio feature for managing team members across timezones. It provides live clocks with working-hours status indicators, a meeting planner with overlap detection, and a reverse time converter for scheduling emails at specific times in someone else's timezone.
Where to find it
Settings > Features > Enable Team Time (toggle, default off). When enabled, a Globe icon appears in the toolbar. The Quick Launch (Ctrl+Space) also gains a Team Time tab for fast timezone lookups.
How it behaves
Three Tabs
Dashboard
Live clocks for every saved team member, organized by group. Each card shows:
- Current local time (updates every 30 seconds)
- Working status dot: green (working hours), amber (within 1 hour of start/end), red (off hours)
- Timezone name with UTC offset
- Working hours range
A "Your time" reference clock at the top updates in sync.
Planner
Two modes:
Schedule a meeting — Enter an optional meeting title, pick a date, start time, and duration (15 min to 4 hours, default 1 hour), then select people. Shows what that time would be in each person's timezone with status indicators. An overlap bar visualizes working-hours overlap when 2+ people are selected. Three actions on results:
- Copy summary — generates a formatted text block for calendar invites
- Create Meeting — creates a Google Calendar event with the chosen title (or auto-generated "Meeting - Names"), duration, and timezone breakdown in the description. Requires
calendarEnabled+ Calendar channel connected (checked viauseChannelsStore). Shows a success toast on creation. Disabled (grayed out) otherwise. - Draft Email — creates a Gmail draft with a formatted meeting invite body. The draft is created without a recipient (
tois optional viagmailDraftSchema) so the user can add addresses manually in Gmail. RequiresgmailEnabled+ Gmail authenticated (checked viauseGmailStore, NOT the channels store — Gmail is not a channel adapter). Shows a success toast on creation. Uses theGMAIL_CREATE_DRAFTIPC channel. - Send Booking Link — creates a Gmail draft containing a Calendar Scheduler booking link so recipients can self-schedule. Only visible when the Calendar Scheduler marketplace plugin is installed, enabled, and running. Five states: hidden (plugin absent), connect prompt (plugin not connected), disabled (no booking pages), direct send (one link), or picker dropdown (multiple links). Requires Gmail connected (same as Draft Email). Uses
TEAM_TIME_BOOKING_LINKSto fetch links from the plugin, thenGMAIL_CREATE_DRAFTto compose the draft.
Convert a time — Pick a person and a time in their timezone. Shows what that time would be in your local timezone. Useful for scheduling emails to arrive at a specific time in someone else's workday.
Manage
Add, edit, and delete team members and groups. Each person has:
- Name
- IANA timezone (searchable picker with ~400 zones)
- Working hours (start/end times, default 09:00–17:00)
- Color (8 presets, optional)
- Group assignment (optional)
Groups have a name and optional color. People within a group are displayed together on the Dashboard.
Bulk Add (UI)
The Manage tab has an "Add Multiple" button that opens a paste-friendly dialog. Users type one person per line as Name, Timezone (e.g. Holly Ocaya, CST). Abbreviations like CST, IST, JST, EST are auto-resolved to IANA zones. A preview step shows which entries are valid before committing.
Future: Contact Info for Meeting Notifications
Currently Team Time tracks names and timezones but not contact information (email addresses, etc.). The Planner creates calendar events and email drafts for the user's own benefit — the listed people are never notified directly. To scale this into a proper meeting-invitation flow, each person would need at least an email field so that:
- Calendar events can add attendees (Google Calendar sends invites automatically when attendees are present)
- The Draft Email button can pre-fill the "To" field with selected people's addresses
This would require adding an email column to team_time_people, updating the Manage tab's add/edit forms, the bulk-add parser, the CLI POST /team-time/people body schema, and the Planner's handleCreateEvent/handleDraftEmail functions.
For agents
Data Model
Three SQLite tables (migration v236):
team_time_groups— id, name, color, sortOrderteam_time_people— id, name, timezone, workStart, workEnd, color, groupId (FK), sortOrderteam_time_project_links— projectId (FK), personId (FK), composite PK
Soft-delete via is_deleted on people and groups.
CLI Endpoints
The CLI control server exposes Team Time management so agents can add people programmatically. All endpoints require bearer-token auth.
| Method | Path | Purpose |
|---|---|---|
GET |
/team-time/people |
List all people |
POST |
/team-time/people |
Create one person |
POST |
/team-time/people/bulk |
Create up to 50 people at once |
DELETE |
/team-time/people/:id |
Soft-delete a person |
POST body (single): { "name": "Holly", "timezone": "America/Chicago", "workStart": "09:00", "workEnd": "17:00" }. workStart/workEnd default to 09:00/17:00 if omitted.
POST body (bulk): { "people": [{ "name": "...", "timezone": "..." }, ...] }. Max 50 per call.
Common timezone abbreviations (IST, CST, EST, etc.) are NOT resolved by the CLI — callers must pass IANA zone names (e.g. Asia/Kolkata, America/Chicago). The UI bulk-add dialog handles abbreviation resolution.
IPC Channels
14 request channels (team-time:people:*, team-time:groups:*, team-time:project-links:*, team-time:booking-links) + 1 push channel (team-time:changed). All follow the standard wrapHandler + Zod validation pattern. The booking-links channel is a read-only proxy to the Calendar Scheduler plugin's CLI endpoint; it returns one of four states (hidden/connect/disabled/ready) and is blocked on the mobile WS bridge.
Key Files
- Store:
src/renderer/src/stores/team-time-store.ts - Utilities:
src/renderer/src/lib/team-time-utils.ts(timezone math via nativeIntlAPIs) - Components:
src/renderer/src/features/team-time/ - CLI routes:
src/main/services/cli/cli-server-team-time-routes.ts - Queries:
src/main/db/queries-team-time.ts - Handlers:
src/main/ipc/team-time-handlers.ts,src/main/ipc/team-time-booking-handlers.ts - Feature flag:
teamTimeEnabledinAppSettings
Related
The Planner hands off to two other surfaces: Meetings collects the calls the app knows about, and Calendar Quick Add is the fast path for putting one on your calendar. Google Integrations covers the Calendar and Gmail connections its Create Meeting and Draft Email actions depend on, and Google Meet is the separate in-app meeting surface.
Last verified 2026-09-23