Plans for a new version of etm are in the early stages. This document will be updated periodically to reflect improvements suggested by users. Please share your ideas in the etm forum on google groups.

The use of separate fields, @d and @s, for date and starting time has been combined into a single, starting datetime, @s, which supports fuzzy parsing. E.g. @s 3p tue would set the starting datetime to be 3:00pm on the next Tuesday on or after today.

Note that this is datetime even when only a date is given. E.g., @s 5/5 would give 12:00am on May 5 unless you have set an alternative default starting time in your etmrc.

Recurrence rules have a slightly different format and can be repeated. E.g.,

@r m &w 2mo &h 10, 14, 16
@r m &w 3tu &h 11, 15, 17

would repeat m)onthly on w)eekdays corresponding to the 2nd Monday at 10am, 2pm and 4pm and the 3rd Tuesday at 11am, 3pm and 5pm.

Both hourly frequencies and minutely frequencies are now supported, the latter using &n since &m is by month day and &M is by month. Note the use of & rather than @ to specify field values within a recurrence rule.

Lists are no longer wrapped in parentheses. E.g., note the use 10, 14, 16 instead of (10, 14, 16) in the example above.

would trigger the default alert at 10 and 5 minutes before the starting time and a sound alert one hour after the starting time.

Similary, the alert

@a -2d: who@what.com, where2@when.org; file1, file2

would send e)mails to the two listed recipients exactly 2 days (48 hours) before the starting time of the event with the event summary as the subject, the event description, by default, as the body and with file1 and file2 as attachments.

Finally,

@a +0: program_path

would execute program_path zero minutes before the starting time of the event.

The format for each of these:

@a <trigger times> [: action]

In addition to the default action used when the optional : action is not given, there are five possible values for action:

d Executes the setting for display in the etmrc.

v Executes the setting for voice in the etmrc.

s Executes the setting for sound in the etmrc.

recipients[;attachments] Sends an email to recipients (a comma separated list of email addresses) optionally attaching attachments (a comma separated list of file paths). The item summary is used as the subject of the email and the expanded value of the template email from the etmrc as the body.

Since all scheduled events have @s entries that are datetimes (with timezone information), an all day event is one in which etm effectively ignores the time component of the datetime. Typical uses for this are holidays, birthdays and anniversaries.

Delegated tasks are somewhat similar to tasks with unfinished prerequisites. In the former case, you are waiting for someone else to complete the task and in the latter, you are waiting for yourself to finish the prerequisite. Thus neither is treated as an available task.

Getting Things Done (GTD) fans will recognize in basket and someday maybe. In basket entries are quick, "don't worry about the details" entries to be edited later when you have the time. Someday maybe items are you don't want to forget about altogether but don't want to appear on your next or scheduled lists. Both types of entries appear in the current view under special headings so that neither will be forgotten.

Deleting an item no longer removes it from the data file but instead merely inserts a # character followed by a space at the beginning of the item and records the change in the log file.

Note that a task group is a single item and is treated as such. E.g., if any group task is selected for editing then the entire group is displayed.

The queue entries, &q, set the order --- tasks with higher queue positions (smaller values) are prerequisites for tasks with lower queue positions (larger values).

@key entries prior to the first @j become the defaults for the jobs which follow. In the example above, for instance, @c shop sets the default context as shop for all component jobs but the lumber and paint jobs override this default with &c errands. Note that keys given in jobs use & rather than @.

Many key-value pairs can be given either in the group task using @ or in the component jobs using &:

@a or &a: alert

@b or &b: begin

@c or &c: context

@d or &d: description

@e or &e: extent

@f or &f: finish

@g or &g: goto

@k or &k: keyword

@l or &l: location

@m or &m: memo

@t or &t: tag

@u or &u: user

The key-value pair &q (queue position) can only be given in component jobs. Key-values other than &q and those listed above, can only be given in the initial group task entry and their values are inherited by the component jobs. In the example above, the May 1 due date for the task is given by the @s entry. Begin warnings for the first two jobs would then begin 5 days earlier on April 26 because of their &b 5 entries. Similarly, alerts could be specified for individual jobs that would trigger at times relative to due datetime for the group task.

When a component job is finished, an &f entry is appended to the job and it is removed from the list of prerequisites for the other jobs. When all jobs in a group task have been finished, an @f entry is appended to the group task and the &f entries for the component jobs are removed. The group task would then be displayed as finished on the date specified by @f and the individual job finish dates would no longer be displayed. A record of the job finish dates would, however, be preserved in the relevant log file.

In the example above, only the first two would initially be displayed as available for completion and the other jobs would be displayed as having unfinished prerequisites:

Whenever the etm data file path/filename.txt is modified, a corresponding entry will added to path/filename.log containing the UTC time stamp of the modification and, in a format similar to unified_diff, the changed lines with the unique Ids of the relevant items appended to the @@ range lines. For example:

In contrast to the current log format, line number and unique Id information are added and only the lines which have been changed are displayed. The new format also supports file changes involving more than one item.

Using the unique Ids in the log files, it will be possible to press a hot-key in etm and see a history of changes for the selected item. E.g., for the 'sales meeting' above, the history might appear as follows:

You can use expressions such as !xyz! in various contexts and etm will magically replace them. An anniversary replacement such as !1944! would, for example, be replaced during the year 2012 with the expression 68th. Several replacements like this are built into etm and are discussed below. Others can be defined in your etmrc. You could, for example, have the entry:

xyz = "XYZ Ltd"

in which case !xyz! in, say, the summary or description of an item would be replaced by XYZ Ltd. Such user defined replacements should, of course, be unique.

A template is just a replacement string that itself contains one or more replacement strings. Any replacement string is expanded recursively until no further expansion is possible.

The only requirements for your custom minutes is that it must be a list of five strings, one for each of the possible ranges. Use !num_minutes! in the strings where you want the integer number of minutes to appear.

When you select an item in the etm gui, item details are displayed in the details panel. In prior versions of etm, the entire item would be displayed as it appears in the data file. While this remains the default behavior, it is also possible to define templates that customize the display for item types that you would like to be displayed differently:

action_template

allday_template

event_template

task_template

group_template

delegated_template

inbasket_template

note_template

someday_template

If, for example, your etmrc contains:

note_template = """\
!summary! !t!
!d!
"""

then when this note

! Thinking @s 2012-07-04 @d We can't solve problems by using the same kind of thinking we used when we created them. - Albert Einstein @t quotes @k Einstein:Albert @z US/Eastern
@i a21e576f-8daf-4264-bc87-964df15cd726

is selected, the details panel would display

Thinking quotes
We can't solve problems by using the same kind of thinking we used when we created them. - Albert Einstein

When viewing the details for an item, a hotkey will allow you to toggle back and forth between your custom view and the regular view. Note, however, that the regular view will not display the @i unique id and will only display the @z time zone if it is different than the current local time zone. The regular view of the above note in the Eastern time zone would thus be

! Thinking @s 2012-07-04 @d We can't solve problems by using the same kind of thinking we used when we created them. @t quotes @k Einstein:Albert

Note that while information about the item's file and line numbers is not available in the details panel, the press of a hotkey will display the complete, "universal diff" history of the item from its creation to the latest change with timestamps, file name and line numbers.

One further display customization is possible. You can define labels in your etmrc. Suppose, for example, that you have:

labels = {
'l' : "Location: ",
't' : "Tags: "
}

Then the !t! entry in the note template above would, for the given note, expand to Tags: quotes. Similarly, the !l! entry in the email template would expand to Location: Conference Room. Such labels are only generated when the corresponding field value is not empty.

Clicking on an item or pressing the open details icon in the tool bar displays the details of the selected item in the details panel. This panel can be closed either by pressing Escape, the close details panel icon in the tool bar or the close button in the details panel.

The icons in the details panel tool bar correspond, from left to right, to

- mark the task finished (disabled for non tasks)
- create a clone and open it for editing
- delete the item
- open the item for editing

Clicking on the new action timer icon brings up a dialog to enter the summary (title) of the timer and, when this is accepted, the icon changes to display a pause timer icon, an elapsed time in hours and minutes display and a stop timer and record action icon:

When the timer is paused, the display changes to the following:

Whether running or paused, a tooltip for the elapsed time display shows the action title.

Displays items requiring attention now, including in basket items, due and pastdue tasks, due and past due delegated tasks, due and past due tasks with unfinished prerequisites, notices of upcoming (begin) items and someday maybe items.

Displays scheduled (dated) items grouped by date and sorted by type and time. Note that all dates are displayed with the view scrolled to the current date on opening or when the spacebar is pressed. Times are displayed for the local time zone.

Arrows in the toolbar go backward and forward to the previous or next date with scheduled items.

Displays busy/free time for scheduled events graphically by week. Clicking in a busy period opens the details panel for the relevant event. This view refects the 'sunday_first' setting from your etmrc file. Arrows in the toolbar go backward and forward one week at a time.

Displays a monthly calendar display with day colors highlighted according to the amount of event time scheduled. Double clicking a date switches to the day view for the selected date. Arrows in the toolbar go backward and forward one month at a time.

Only actions will be displayed in this view and only action minutes will be shown in totals. Maybe a list of options for grouping and sorting could be given in your etmrc and then a hotkey would cycle among the resulting views?

The goal would be enable a convenient ledger view for accounting and billing. Suggestions from folks who would use such a view would be greatly appreciated.

Both dated and undated notes grouped by project file path and title. Dated notes also appear in the Day view on the relevant date. Undated notes, on the other hand, only appear in this view. With an appropriate note_template, the goal here is to incorporate the functionality of nts into etm.