Orgstar

Dates, scheduling and clocking

Put dates on entries, plan work with scheduled dates and deadlines, and record the time you spend.

Timestamps

A timestamp is a date, optionally with a time, in angle brackets (active) or square brackets (inactive):

<2026-10-07 Wed>
<2026-10-07 Wed 14:30>
<2026-10-07 Wed 10:00-11:30>
<2026-10-07 Wed>--<2026-10-09 Fri>
[2026-10-07 Wed 09:12]

Repeaters and warning periods

After the date and time, a timestamp can carry a repeater and a warning or delay:

<2026-10-07 Wed +1w>
<2026-10-07 Wed 08:00 ++1d>
<2026-10-07 Wed .+2w>
<2026-10-31 Sat -3d>
<2026-10-31 Sat +1m -5d>
<2026-10-07 Wed .+2d/4d>
ElementMeaning
+1wRepeat every week, counted from the date in the timestamp
++1wRepeat every week, moving the date past today when the task is done
.+1wRepeat one week after the day the task is done
-3dOn a deadline, start warning 3 days before; on a scheduled date, hide it from the agenda until 3 days after
--3dAs -3d, for the first occurrence only; it is dropped when the task repeats
/4dAfter a repeater, the longest interval a habit allows (see "Habits")

Units are h (hours), d, w, m and y. What happens when a repeating task is done is described under "Repeating tasks".

Diary sexps

The agenda also reads <%%(…)> timestamps and %%(…) lines with Emacs diary expressions such as diary-float, diary-anniversary, diary-block and diary-cyclic, and their org- counterparts. See The agenda for the functions that are supported. Orgstar does not insert or edit these.

Inserting timestamps

CommandOrg commandEmacs, DoomMacDoom leader
Insert Timestamporg-timestampC-c .⌃⌘.SPC m d t
Insert Inactive Timestamporg-timestamp-inactiveC-c !⌃⌥⌘.SPC m d T

Both ask for a date in the echo area (see "The date prompt"). With the caret on an existing timestamp, they replace it with the date you give, keep its repeater, and start from its date and time. In a range of days, the caret picks the end: with the caret between the two dashes of -- or after them, the second timestamp is replaced and the prompt starts from its date; before that, the first. Run the command again right after inserting a timestamp to add a second one and make a range, <…>--<…>; the second date starts from the timestamp at the caret.

Org's prefix arguments are not available: to include the current time, type it, or use a relative time such as +0h (see below).

The date prompt

Every command that asks for a date shows the same prompt (org-read-date): a text field, the date the text reads as, and a month calendar.

Orgstar reads the answer as Org 9.8 does, with org-read-date-prefer-future t: a date given without a year, or without a month, is taken to be the next such date from today.

You typeResult
.Today
+0Today
+1, +2dTomorrow, two days from today
-3dThree days ago
+1w, +2m, -1yOne week, two months from today; one year ago
++3Three days after the default date, not after today
+3hThree hours after the default time; sets a time
fri, monThe next Friday or Monday, the default date included
+friThe next Friday after today
-friThe last Friday before today
+2friThe second Friday from today
2026-10-07, 2026-10-7That date
10-77 October, the next one
7.10., 7.10.20277 October (day first)
10/7, 10/7/277 October (month first)
15The 15th, this month or next
sep 15, 15 sep15 September, the next one
dec 25 202725 December 2027
w42, 2027-w01, w3-5Monday of ISO week 42; Monday of week 1 of 2027; Friday of week 3
10:00, 9:30The default date at that time
10am, 3pm, 12:30pm12-hour times
10h, 10h30, h4510:00, 10:30, 00:45
10:00-11:30A time range
10:00+1:3010:00-11:30
fri 10:00, +2d 9:00A date and a time together

Forms without a sign, such as fri, 15 or 10:00, fill in what is missing from the default date: the date of the timestamp being changed, or today. Forms with a single sign count from today; ++ counts from the default date. Two-digit years are read relative to the current year. Words the prompt does not recognize are ignored, so tomorrow gives the default date.

Changing dates

CommandOrg commandEmacs, DoomMac
Increase Timestamp Partorg-timestamp-upS-<up>⌃⌘↑
Decrease Timestamp Partorg-timestamp-downS-<down>⌃⌘↓
Timestamp One Day Laterorg-timestamp-up-dayS-<right>⌃⌘→
Timestamp One Day Earlierorg-timestamp-down-dayS-<left>⌃⌘←
Evaluate Time Rangeorg-evaluate-time-rangeC-c C-y

These keys act on the timestamp when the caret is in one. Elsewhere the same keys do other things, such as changing the TODO keyword or priority on a heading line (TODOs and tags). In the Doom preset they work in normal and insert state, and C-S-h, C-S-j, C-S-k and C-S-l do the same as S-<left>, S-<down>, S-<up> and S-<right>.

S-<up> and S-<down> change the part of the timestamp under the caret:

S-<left> and S-<right> move the whole timestamp by a day, wherever the caret is in it. The day name is rewritten after every change. In a range of days, each end changes on its own.

C-c C-c on a timestamp rewrites its day name to match its date. C-c C-y shows the length of the range at the caret, or of the first range on the line, such as 2 days 3 hours; on a clock line it recomputes the clock's duration.

SCHEDULED and DEADLINE

A planning line goes directly under the heading:

* TODO Submit the tax return
DEADLINE: <2026-10-31 Sat -7d> SCHEDULED: <2026-10-20 Tue>
CommandOrg commandEmacs, DoomMacDoom leader
Scheduleorg-scheduleC-c C-s⌃⌘SSPC m d s
Set Deadlineorg-deadlineC-c C-d⌃⌘ESPC m d d
Remove ScheduleC-u C-c C-s
Remove DeadlineC-u C-c C-d

Schedule and Set Deadline ask for a date, starting from the entry's current one and its time. They replace an existing date, keep its repeater and warning, and remove a CLOSED stamp from the entry. Remove Schedule and Remove Deadline have no default keys; run them from the Org menu or the command palette (Keys).

With org-log-reschedule or org-log-redeadline set to time or note in config.toml, or the matching #+STARTUP words, Orgstar logs each change of an existing date and each removal:

* TODO Submit the tax return
SCHEDULED: <2026-10-22 Thu>
- Rescheduled from "[2026-10-20 Tue]" on [2026-10-19 Mon 08:40]

Where these notes go, and the #+STARTUP words, are covered in TODOs and tags.

Repeating tasks

When an entry with a repeater in an active timestamp changes from an active TODO keyword to a done one (org-auto-repeat-maybe), Orgstar does not leave it done:

  1. The keyword returns to the first keyword of its sequence. In a #+TYP_TODO sequence it returns to the keyword it had. A REPEAT_TO_STATE property, inherited from ancestors, names another keyword to use.
  2. CLOSED is removed.
  3. With org-log-repeat on (the default, time), the LAST_REPEAT property is set to the current time and a state note is logged, such as - State "DONE" from "TODO" [2026-10-07 Wed 18:02].
  4. A SCHEDULED date without a repeater is removed.
  5. Every active timestamp with a repeater in the entry moves forward:
    • +N moves it by N once, which may leave it in the past.
    • ++N moves it by N until it is after today (for hours, after now).
    • .+N sets it to today and then moves it by N. With hours, .+Nh, the new time is N hours after the current time, to the minute, and a time range loses its end time.
  6. -- delays in those timestamps are removed.
* TODO Water the plants
SCHEDULED: <2026-10-07 Wed .+3d>

Marking this done on 7 October gives:

* TODO Water the plants
SCHEDULED: <2026-10-10 Sat .+3d>
:PROPERTIES:
:LAST_REPEAT: [2026-10-07 Wed 18:02]
:END:
- State "DONE"       from "TODO"       [2026-10-07 Wed 18:02]

A repeater of 0 (+0d) does not repeat. An hourly repeater needs a time in the timestamp; without one, Orgstar reports "Cannot repeat in N hour(s) because no hour has been set". Inactive timestamps never repeat.

To turn the repeat note off for a file, use #+STARTUP: nologrepeat; lognoterepeat asks for a note instead.

Effort

Effort estimates live in the Effort property.

CommandOrg commandEmacs, DoomMacDoom leaderSpeed key
Set Effortorg-set-effortC-c C-x e⌃⇧⌘ESPC m c Ee

Set Effort asks for a value, such as 0:30 or 2:00, starting with the current one. If the entry, an ancestor, or a #+PROPERTY: Effort_ALL line defines Effort_ALL, its values are offered as choices; you can also type another value.

#+PROPERTY: Effort_ALL 0:15 0:30 1:00 2:00 4:00

Effort appears in column view and in clock tables with :properties ("Effort"). Orgstar does not compare the running clock with the effort estimate.

Clocking

Clocking records the time you work on an entry as CLOCK: lines in its LOGBOOK drawer.

CommandOrg commandEmacs, DoomMacDoom leaderSpeed key
Clock Inorg-clock-inC-c C-x C-i⌃⌘ISPC m c iI
Clock In to Recent Entry…org-clock-in with C-u⌃⌥⌘I
Clock In to Last Entryorg-clock-in-lastC-c C-x C-xSPC m c I
Clock Outorg-clock-outC-c C-x C-o⌃⇧⌘ISPC m c oO
Cancel Clockorg-clock-cancelC-c C-x C-qSPC m c c
Go to Clocked Entryorg-clock-gotoC-c C-x C-j⌃⌘JSPC m c g
Go to Recent Clocked Entry…org-clock-goto with C-u⌃⌥⌘JSPC m c G
Mark as Default Clock Taskorg-clock-mark-default-taskSPC m c d
Resolve Open Clocks…org-resolve-clocksC-c C-x C-zSPC m c r

The Emacs keys are Org's own, and work in the Doom preset too, as every C-c key does. Commands without a key in your preset are in the command palette and in Org ▸ Clock, which lists every clock command with its keys, followed by the recent entries. In the agenda, I, O and X clock in, out and cancel for the entry at the line (The agenda). Capture templates can clock in too (Capture).

Orgstar has no C-u forms of these commands. Clock In to Recent Entry… and Go to Recent Clocked Entry… stand for C-u C-c C-x C-i and C-u C-c C-x C-j.

Clocking in and out

Clock In starts a clock on the heading at the caret and inserts a line at the top of its LOGBOOK drawer, creating the drawer after the planning line and property drawer if needed:

* TODO Write the report
:LOGBOOK:
CLOCK: [2026-10-07 Wed 09:00]
CLOCK: [2026-10-06 Tue 14:00]--[2026-10-06 Tue 15:30] =>  1:30
:END:

With no clock running, Clock In first asks about open clocks; see Open clocks below.

Orgstar remembers the running clock and the clock history across restarts, in clock.json in ~/Library/Application Support/Orgstar. If the open CLOCK: line is deleted from the file, Clock Out reports "Clock start time is gone" and forgets the clock.

These parts of Org's clocking are not implemented:

The running clock

While a clock runs, Orgstar shows it in three places, refreshed every 30 seconds:

The time shown is the time since you clocked in, not the entry's total. Each of them opens a menu with Clock Out, Cancel Clock and Go to Clocked Entry. The toolbar's menu also has Clock In to Recent Entry…, Go to Recent Clocked Entry… and the recent entries. The menu bar item also has Clock In to Recent Entry…, Clock Report and a Recent Entries section. Choosing a recent entry clocks in to it.

Recent entries

Orgstar keeps a clock history, as org-clock-history. Every clock-in, including one from the agenda or a capture template, puts the entry first in the history and removes its other entries there. The history holds org-clock-history-length entries (5 by default); the oldest go first.

Entries are found again after edits by their ID property, else by the heading's position among the file's headings together with its title, else by the title alone. An entry that can't be found is dropped from the history the next time an entry is added, and left out of the selection.

Clock In to Recent Entry… and Go to Recent Clocked Entry… ask for an entry in the echo area, as org-clock-select-task does. Each line shows its key, the entry's category padded to 12 characters, and the heading with its TODO keyword and priority, under these sections:

KeySection
dDefault Task: the entry marked with Mark as Default Clock Task
iThe task interrupted by starting the last one
cCurrent Clocking Task
1 … 9, A, B, …Recent Tasks, most recent first

Type a key to choose. q, x or Esc leave the question. With an empty history the commands say "No recent clock"; a key that isn't listed says "Invalid task choice X".

Clock In to Last Entry clocks in to the first entry of the history, the same as 1. With no clock running it says "Clocking back: Write the report (in work.org)"; with an empty history, "No last clock".

Mark as Default Clock Task makes the heading at the caret the d entry and says "Default clock task: Write the report"; Org sets it without a message. As in Org, the default task lasts until you quit Orgstar.

Open clocks

An open clock is a CLOCK: line with a start and no end. Org calls one that isn't the running clock dangling, for example after Orgstar or Emacs quit while it ran, or a line synced from another machine.

When you clock in with no clock running, Orgstar first looks for open clocks in the org files of your folders and in the open buffers (org-clock-auto-clock-resolution set to when-no-clock-is-running), and asks about each one:

Dangling clock started 95 mins ago [jkKtTgGSscCiq]?

Resolve Open Clocks… asks the same about every open clock, the running one included, and says "No open clocks" when there are none. Clocking in from the agenda or a capture template doesn't look for open clocks first.

Unlike Org, Orgstar doesn't show the clock's line while it asks; j opens it afterwards, except while clocking in.

The answer is a key, as in org-clock-resolve. The idle time is the time since the clock started, for an open clock, or since you stopped using the Mac, for an idle one (see Idle time below).

KeyWhat happens to the CLOCK: line
jNothing; the line opens in the editor to adjust by hand (after the clock-in, when you were clocking in).
JEnds the line now, then opens it in the editor.
kAsks how many minutes of the idle time to keep, all of them by default. With all, the clock keeps running. With fewer, the line ends that many minutes after the idle time began, and a new clock starts now.
KAsks the same, then ends the line after the minutes kept and leaves you clocked out.
tLike k, but asks for the date and time you got distracted; the line ends then.
TLike t, then leaves you clocked out.
gAsks how many minutes ago you got back, all of the idle time by default. The line ends when the idle time began, and a new clock starts that many minutes ago.
GLike g, but leaves you clocked out: the line ends when the idle time began.
sSubtracts the idle time: the line ends when the idle time began, and a new clock starts now.
SSubtracts the idle time and leaves you clocked out.
CRemoves the line, as though you never clocked in.
i, q, EscLeaves the line as it is, keeping all the idle time.

While clocking in, an answer never restarts the clock it resolves: where a key would start a new clock or keep one running, the line ends instead, and the clock you asked for starts. Resolving an open clock that isn't running with k and all the minutes, outside a clock-in, makes it the running clock.

When K, T or S ends a clock outside a clock-in, the next clock-in asks:

You stopped another clock 12 mins ago; start this one from then? (y or n)

y starts the new clock when the old one ended.

Idle time

On the Mac, set org-clock-idle-time to a number of minutes, or turn on Settings ▸ Agenda ▸ "Ask what to do with idle time while clocked in", to be asked about time away from the Mac. The default, 0, never asks, as nil does in Emacs.

While a clock runs, Orgstar checks every minute how long the Mac has had no keyboard or mouse input, in any app. Past the limit, it requests your attention, which bounces its Dock icon while another app is active, and asks in the echo area:

Clocked in & idle for 17.3 mins [jkKtTgGSscCiq]?

The keys are those in the table above, with the idle time starting when input stopped. The iOS app has no idle detection.

Editing clock lines

You can edit clock lines by hand. S-<up>, S-<down>, S-<left> and S-<right> change their timestamps as anywhere else, and then write the duration after => again, as H:MM. After typing changes yourself, press C-c C-c (or C-c C-y) on the line: Orgstar fixes both day names and writes the duration again (org-clock-update-time-maybe).

C-c . on a clock line's range replaces one of its timestamps, as in any range of days (see "Inserting timestamps").

A line of the form CLOCK: => 1:15, with only a duration, counts towards clock tables.

Clock summaries

The inspector

View ▸ Show or Hide Columns and Clock opens the inspector beside the editor. Its Clock tab lists the clocked time per heading in the open file for Today, This Week (weeks start on Monday) or All, with a total. Clicking a heading moves to it. Only finished clocks count.

The clock report window

Clock Report (SPC m c R and SPC z t in Doom, the command palette, or the clock menus) opens a window that totals time across files. Choose files on the left; files with clock lines are selected when the window opens. Turn on From to limit the report to a range of dates. The report is an Org table of time per date and heading, with a total after each ISO week:

#+title: Time Report

| Date         | Code                                          | Hours |
|--------------+-----------------------------------------------+-------|
| 2026-10-05   | Write the report                              |  2:15 |
| 2026-10-06   | Write the report                              |  1:30 |
|--------------+-----------------------------------------------+-------|
| 2026-W41     | WEEK TOTAL                                    |  3:45 |

Copy puts it on the clipboard; Save writes it to a file.

Clock tables

A clock table is a dynamic block that Orgstar fills with a summary of clocked time (org-clocktable-write-default).

CommandOrg commandEmacs, Doom
Insert or Update Clock Tableorg-clock-reportC-c C-x C-r
Update Dynamic Blockorg-update-dblockC-c C-x C-u

C-c C-c on the #+BEGIN: line also updates the block; in the Mac preset, ⌃⌘X does.

Insert or Update Clock Table updates the clock table at the caret. Elsewhere it inserts a new one, with :scope subtree inside an entry or :scope file before the first heading, and fills it:

#+BEGIN: clocktable :scope file :maxlevel 2 :block thisweek
#+CAPTION: Clock summary at [2026-10-07 Wed 17:00], for week 2026-W41.
| Headline         | Time   |      |
|------------------+--------+------|
| *Total time*     | *5:15* |      |
|------------------+--------+------|
| Project Alpha    | 5:15   |      |
| \_  Design       |        | 3:00 |
| \_  Write code   |        | 2:15 |
#+END:

Times are written as H:MM, with a day count such as 2d before them for a day or more. A heading's time includes its subtree's. Only finished clock lines and CLOCK: => H:MM lines count; a running clock does not. A COMMENT prefix is left out of headlines.

Parameters

ParameterValuesDefault
:scopefile (or nil), subtree, tree, treeNfile
:maxlevelDeepest heading level listed2
:blockA time block (see below)none
:tstart, :tendStart and end, such as "<2026-09-01>", "<today>", "<-1w>"none
:wstartFirst day of the week for :block weeks, 1 is Monday1
:mstartFirst day of the month for :block months1
:linkt: headlines link to their headingsnil
:narrowN adds a <N> width cookie; N! cuts headlines to N characters40!
:indentt: indent sublevels with \_t
:compactt: one time column, indented, cut to 40 charactersnil
:emphasizet: level 1 bold, level 2 italicnil
:levelt: a column with the levelnil
:tagst: a column with the tags, inherited ones firstnil
:propertiesA list of property names, such as ("Effort"), one column eachnone
:tcolumnsNumber of time columnsup to :maxlevel
:formula% adds a percentage column; a string becomes the table's #+TBLFMnone
:fileskip0Accepted; has no effect within one filenil

:scope tree covers the top-level tree around the block; tree2 the tree from its level-2 ancestor, and so on. :block takes precedence over :tstart and :tend. Clocks that cross the start or end of the range count only the part inside it.

:block values:

ValueRange
today, yesterday, today-NOne day
thisweek, lastweek, thisweek-NOne week, from :wstart
thismonth, lastmonth, thismonth-NOne month, from :mstart
thisyear, lastyear, thisyear-NOne year
2026, 2026-10, 2026-W41, 2026-10-07That year, month, ISO week or day

week, month and year are the same as thisweek, thismonth and thisyear, and a +N suffix moves forward.

A #+TBLFM line already under the table is kept when the table is updated, unless :formula gives one.

Not supported: scopes over other files (agenda, file lists, file-with-archives), :match and :step, which stop the update with a message, and :formatter, which is ignored along with other unknown parameters. Labels are in English only.

Habits

A habit is a repeating task whose history the agenda shows as a consistency graph (org-habit). Define one with the STYLE property and a SCHEDULED date with a repeater:

* TODO Go for a run
SCHEDULED: <2026-10-07 Wed .+2d/4d>
:PROPERTIES:
:STYLE:    habit
:END:
:LOGBOOK:
- State "DONE"       from "TODO"       [2026-10-05 Mon 07:30]
- State "DONE"       from "TODO"       [2026-10-03 Sat 07:10]
:END:

How habits appear in the agenda, with the graph covering 21 days back and 7 ahead, is described in The agenda.

Reminders

Orgstar can post a macOS notification before entries that have a time of day, as Emacs's appt does with org-agenda-to-appt.

Orgstar updates the reminders a couple of seconds after you stop editing, when files change, and every hour. The agenda window shows how far ahead reminders are set. Reminders already set still arrive after you quit Orgstar; changes to your files are taken into account the next time it runs.

Turn reminders on or off, and set the lead time from 0 to 120 minutes, in Settings ▸ Agenda; in config.toml the keys are reminders under [orgstar] (default true) and appt-message-warning-time. The first time, macOS asks whether Orgstar may post notifications; if you decline, the agenda says so, and you can change it in System Settings ▸ Notifications. The iOS app's reminders are described in iOS.