<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0em 1em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see AdvancedOptions
<<importTiddlers>>
When adding a new task a number of [[Parameters & Switches]] can be applied to the add task command to change the properties of a task right when it's added.

//Tip: Hitting Shift + Enter when adding a task will prompt you to select a priority, tag and list for your new task. This behaviour can also be set to be the default in the [[Options]] window.//

|!Parameter or switch name|!Description|!Possible values|!Default value|
|{{{/list}}} or {{{/l}}}|Move the task to the respective list| the list's name (") | Inbox |
|{{{/parsedue}}} or {{{/pd}}}|Parse the task name for a due date | //none// | |
|{{{/priority}}} or {{{/p}}}|Set the task's priority| 1, 2, 3, N | N |
|{{{/p1}}} or {{{/p2}}} or {{{/p3}}} or {{{/pn}}}|Set the task's priority| //none// | |
|{{{/estimate}}} or {{{/e}}}|Set the task's time estimate| //text// (*) | //empty// |
|{{{/tags}}} or {{{/t}}}|Set the task's tags| comma separated list of tags | //empty// |
|{{{/url}}}|Set the task's URL| //text// | //empty// |
|{{{/location}}} or {{{/loc}}}|Set the task's location| the location's name (") | //empty// |
|{{{/due}}} or {{{/d}}}|Set the task's due date/time| //text// (*) | //empty// |
|{{{/repeat}}} or {{{/r}}}|Set the task's recurrence| //text// (*) | //empty// |

(") : FarrMilk will do substring matching on the specified name. You only need to enter as much of the name as necessary to uniquely identify the item.
(*) : The possible values for these items is specified in the Remember The Milk help.
FarrMilk currently knows the following commands:

//Verbose commands are activated on entering their last character while power user commands are activated by entering a space after the respective command, i.e. they actually always end with a space. When using verbose commands you can use auto completion to save you some typing.//

!!!Task commands
|!Description|!Verbose|!Power user|
|[[Displaying tasks]]| tasks | t |
|[[Adding a task]]| add task | a |
|Deleting a task| delete task | d |
|Completing a task | complete task | c |
|Uncompleting a task | uncomplete task | uc |
|Moving a task to a different list | move task to list | m |
|Postponing a task | postpone task | p |
|Displaying and changing a tasks properties | change properties | pr |
|Changing a tasks name| rename task | cn |
|Changing a task's priority | change priority | cp |
|Changing a task's due date | change due | cd |
|Changing a task's recurrence | change recurrence | cr |
|Changing a task's time estimate | change estimate | ce |
|Changing a task's tags | change tags | ct |
|Changing a task's location | change location | cl |
|Changing a task's URL | change url | cu |
|[[Adding a note to a task|Editing notes]]| add note | an |
|[[Editing a note of a task|Editing notes]]| edit note | en |
|Deleting a note of a task| delete note | dn |

!!!List commands
|!Description|!Verbose|!Power user|
|Displaying active lists| lists | l |
|Adding a list | add list | al |
|Renaming a list | delete list | rl |
|Deleting a list | delete list | dl |
|Archiving a list | archive list | cl |
|Unarchiving a list | unarchive list | ul |

!!!Other commands
|!Description|!Verbose|!Power user|
|Display all tags| tags | tg |
|Show action history to undo actions| undo | u |
|Reload tasks, lists and locations| reload | r |
|Show options window| options | |
|Show this help file | help | |
|Show credits | credits | |
Thanks!
* to ''Carroll'' (hamradio on donationcoder.com forums) for designing the icons
* to ''Mouser'' for FARR and his support during the development of FarrMilk

FarrMilk uses the following libraries:
* ~TinyXml (http://www.sourceforge.net/projects/tinyxml)
* boost (http://www.boost.org)
* libcurl (http://curl.haxx.se/)

[[Introduction]]
FarrMilk is provided 'as is'. No warranty of any kind is expressed or implied. Use it at your own risk.
When displaying your tasks you have the possibility to filter and sort them.

The simplest way of filtering your tasks is to filter them by a task name substring. You can do this by typing the respective substring after the display tasks command. If, for example, you wanted to display all tasks with the word {{{buy}}} in them, you would enter the following command: {{{rtm tasks buy}}}

For all other filter categories, as well as for sorting, you need to add one or more [[Parameters & Switches]].

!!!Filtering
Add the respective substring as a parameter value, e.g. to filter for the tag {{{book}}} type: {{{rtm tasks /tag:book}}}. Note that you need to enclose parameter values with spaces in {{{"}}} or {{{'}}} characters.
|!Filter category|!Parameter|
|Task name| //none// (just type after the command) |
|List name| {{{/list}}} or {{{/l}}} |
|Tag| {{{/tags}}} or {{{/tag}}} or {{{/t}}} |
|Priority| {{{/priority}}} or {{{/prio}}} or {{{/p}}} |
|Due date| {{{/due}}} or {{{/d}}} |
|Overdue tasks| {{{/due:over}}} or {{{/overdue}}} or {{{/od}}} |

!!!Sorting
|!Sort category|!!Parameter or switch|
|Task name| {{{/sort:name}}} or {{{/sn}}} |
|Due date| {{{/sort:due}}} or {{{/sd}}} |
|Date added| {{{/sort:added}}} or {{{/sa}}} |
|Date completed| {{{/sort:completed}}} or {{{/sc}}} |
|Date modified| {{{/sort:modified}}} or {{{/sm}}} |
|URL| {{{/sort:url}}} or {{{/su}}} |
|Task name| {{{/sort:name}}} or {{{/sn}}} |

To reverse the sort order add a {{{-}}} character after the parameter value or switch.

!!!Showing completed tasks
To show completed tasks add the {{{/completed}}} or {{{/c}}} switch. This switch also applies to the {{{delete task}}} or {{{d}}} command to allow deletion of completed tasks.

!!!Showing all tasks
If your chosen filter results in more than 9 tasks you can see them all by adding the {{{/showall}}} or {{{/sall}}} or {{{/a}}} switch. This works when displaying lists too.
A note in RTM can have a title and some text. It can also have only a title or only some text. The first newline character separates the title from the text.

As hitting {{{Enter}}} in the edit note window will finish editing the note and close the edit note window, you have to press {{{Ctrl+Enter}}} to make a new line. Pressing {{{ESC}}} will close the edit note window and discard all changes.
http://farrmilk.objecttechnology.com
!!!Authorisation
Before you can use FarrMilk you'll have to authorise the plugin to manipulate your RTM account. To do this, open FARR and type {{{rtm}}}, a web browser will open asking you to log into your RTM account. After logging in, press the {{{[OK, I'll allow it]}}} button. Then switch back to the FARR window (which should still be open in the background. If it isn't you probably have set FARR to hide when focus is lost in the Window Mode / Focus settings. Change that to Ignore until authorisation is complete.) and hit Enter. After a short delay in which your tasks and lists are downloaded you should see the FarrMilk main menu and are ready to go!

//Note that you'll grant FarrMilk the permission to read, edit and delete your tasks. Make sure you've read the [[Disclaimer]] before using FarrMilk.//

!!!Basic concept of operation
There are two basic ways to manipulate a task in FarrMilk:
# Using the {{{tasks}}} command you [[display|Displaying tasks]] all your tasks, then apply filters until you find the task you want and hit Enter. You'll then be presented with a command list where you can choose what you want to do with the respective task (e.g. mark it complete, postpone it, edit its properties, etc.)<br><br>
# Using one of the other task related [[Commands]] you state what you want to do with a task, then apply filters until you find the task you want. Hitting Enter will then execute that command directly.

!!!Some examples
To add a new list type:
* {{{rtm add list NameOfList }}} or {{{ rtm al NameOfList}}}

To add a new task type:
* {{{rtm add task NameOfTask }}} or {{{ rtm a NameOfTask }}} (goes into Inbox list by default)
* {{{rtm add task NameOfTask /list:NameOfList }}} or {{{ rtm a NameOfTask /l:NameOfList }}} (to add it to the ~NameOfList list. you'll notice that typing a unique substring of the list's name is enough)
* {{{rtm add task NameOfTask /priority=1 }}} or {{{ rtm a NameOfTask /p1 }}} (to set the new task's priority to 1)
* {{{rtm add task NameOfTask /tag:Books }}} or {{{ rtm a NameOfTask /t:Books }}} (to apply the Books tag to the new task)
see [[Adding a task]] for more information

To complete a task type:
* {{{rtm complete task NameOfTask }}} or {{{ rtm c NameOfTask }}} (if you know the name of the task you want to complete)
* {{{rtm complete task /list=NameOfList }}} or {{{ rtm c /l:NameOfList }}} (if you know which list the task belongs to)
* {{{rtm complete task /overdue }}} or {{{ rtm c /od }}} (if you know the task is overdue)
or
* {{{rtm tasks NameOfTask}}} then hit Enter twice
The FARR Remember The Milk Plugin (FarrMilk) allows you to access your Remember the Milk (RTM) tasks and lists using Find and Run Robot (FARR). A lot of what you can do via the RTM web interface you can do with FarrMilk. There are some restrictions however some of which are due to missing functionality in the RTM application programming interface (API).

!!!What you can do with FarrMilk
* View your tasks
* Filter your tasks by task name, by list, by tag, by priority and by due date
* Sort your tasks by task name, by priority, by due date, by date added, by date completed and by URL
* Add new tasks
* Delete tasks
* Complete / Uncomplete tasks
* Move tasks from one list to another
* Postpone tasks
* Change a task's properties, including its name, priority, due date, recurrence, time estimate, tags, location and URL
* Add, edit and delete task notes
* View your lists
* Add new lists
* Delete lists
* Archive / Unarchive lists
* View your tags
* View tasks of your smart lists (with limitations! read About Smart Lists further down)

!!!What you can't do with FarrMilk
* Share tasks (missing in the RTM API)
* Send tasks (missing in the RTM API)
* Manage contacts and groups (although the RTM API would allow this, I feel it doesn't make much sense without task sharing or sending functionality).
* Manage locations
* Create smart lists
* Modify more than one task at the same time
* FarrMilk currently doesn't support languages other than English
* probably more...

!!!How FarrMilk works
FarrMilk will download all your tasks, lists and locations and cache them locally. This allows for fast searching, filtering and sorting of your tasks. Whenever you change a task or list the local cache gets updated by redownloading your tasks and lists. Updating the cache can also be forced with the {{{reload}}} [[Command|Commands]]. This is useful when you want to work in the RTM web interface as well as with FarrMilk at the same time.

!!!About Smart Lists
When FarrMilk downloads your tasks for local caching, it does this with one single RTM API call which will return all of your tasks for all of your lists at once. Although smart lists are kind of supported by the RTM API, the API call to return all tasks at once does unfortunately not work correctly for smart lists. While the API call does return references to the smart lists, these smart lists don't contain any references to their tasks. I consider this to be an RTM API bug and have contacted Remember The Milk Support about this but unfortunately did not get any response. I'm not even sure if they consider it a bug nor if anyone is looking into the problem. I found a workaround however which I have implemented in FarrMilk. The RTM API call to download tasks for smart lists works if tasks are downloaded for one single list only, instead of for all lists. The drawback is that many more API calls have to be made which I assume will have a negative impact on performance. Without smart lists enabled, whenever the task cache is updated (basically, whenever a task is modified), one API call is made. With smart lists enabled, one API call for all non-smart lists plus one for each smart list is made. Smart lists can be enabled in the options dialog ({{{rtm options}}}).

!!!Using FarrMilk
FarrMilk offers three [[Modes of Operation]]:
* a menu mode for beginners
* a verbose mode for people who like to type what they think (this mode offers command auto completion though)
* a power user mode for people who like to type as little as possible
The mode of operation doesn't need to be preset, they are all active at the same time.

FarrMilk works best with the following FARR Display Options:
* 'Max. entries to display in normal results list' set to 9 (which is the default I think) or more
* 'Location Report Column' enabled (ticked)

Continue to [[Getting started]] to start using FarrMilk.
[[Introduction]]
[[Getting started]]
[[Modes of Operation]]
[[Commands]]
[[Parameters & Switches]]
[[Options]]
[[Version history]]
[[Credits]]
[[Disclaimer]]
!Menu mode
Menu mode allows you to use FarrMilk without having to remember any of its [[Commands]]. Just typing the FarrMilk alias (default {{{rtm}}}) in FARR will show you the main menu, giving you the possibility to view all your tasks, all your lists and all your tags. Then use the {{{More actions}}} submenu to add a new task (or do any of the other stuff you can do with FarrMilk).

//Tip: Use FARR's {{{Alt + Left Arrow}}} shortcut key to quickly move back up in the menu hirarchy.//

!Verbose mode
The verbose mode uses intuitive [[Command|Commands]] names to access your Remember The Milk account. It needs more typing but is probably closer to what you're thinking when you're working with your tasks. To add a task in verbose mode you type: {{{ rtm add task New task name}}}.

The verbose mode offers command auto completion: start typing your command and FarrMilk will offer you a list of [[Commands]] that start with the string entered. Use the standard FARR keyboard shortcuts to select the command you want (e.g. hit Enter for the first item or any of the F-keys for the others).

!Power user mode
The power user mode allows accessing your Remember The Milk account with very little key presses. Power user [[Commands]] are only between one and three characters. They use obvious abbreviations that should be easy to remember. Adding a task in power user mode is as simple as typing: {{{rtm a New task name}}}.
Type {{{rtm options}}} and hit Enter to show the FarrMilk options screen.
The behaviour of [[Commands]] can be changed with parameters and switches. Parameters as well as switches always start with a {{{/}}} (slash) character. Switches change the behaviour of a command in always the same way, while parameters can be 'configured' with an additional value. The additional value is passed after the parameter name and either {{{:}}} or {{{=}}} (they're equivalent, it's your choice), e.g. {{{/parameterName:parameterValue}}} or {{{/parameterName=parameterValue}}}. An example will make this clear:

The switch {{{/parsedue}}} will tell FarrMilk to parse the name of a newly added task for a due date (no matter if this is set in the options or not).
The parameter {{{/priority:3}}} will tell FarrMilk to change the priority of a newly added task to the specified priority (3 in this example).

Additionally, there are some switches that will turn into {{{parameterName:parameterValue}}} pairs, e.g. passing {{{/p1}}} is the same as passing {{{/priority:1}}}.

If a parameter value contains spaces, it must be enclosed in a pair of {{{"}}} or {{{'}}} characters, e.g. {{{/estimate="7 days"}}}
A science fiction energy drink of the future
FarrMilk
''1.1.0 - 12. May 2009''
* Added option 'Highlight exact tag match'
* Added option 'Highlight search term'
* Added tool tips to some of the options
* Implemented sorting by list ({{{/s:l}}} or {{{/sort:list}}})

''1.0.0 - 4. April 2009''
* Added more useful error message in case FarrMilk can't connect to the RTM server
* Added proxy support (can be set in the [[Options]] window)
* Reversed order of how task properties are specified for sorting in [[Options]] window (It's more logical now, but you need to manually update your sorting order!)
* Priority, tags and list can now be specified in a dialog when adding a task (see [[Adding a task]])

''0.4.5 - 8. January 2009''
* Added RTM API call throttling to keep requests to 1 request per second

''0.4.4 - 14. December 2008''
* Fixed bug "can't authenticate after a fresh install of FarrMilk"

''0.4.3 - 13. December 2008''
* FarrMilk now uses the api endpoint instead of the www endpoint (as was recently suggested by Remember The Milk)

''0.4.2 - 10. December 2008''
* Fixed bug "can't get the list of tasks from a list with a space in it"

''0.4.1''
* Store FarrMilk.ini in user's application data directory instead of FarrMilk plugin directory

''0.4.0''
* The selected task's add date and modified or completed date are now displayed in the status bar
* The selected note's add date and modified date are now displayed in the status bar
* It's now possible to add a new note when a task's existing notes are displayed
* Tasks can now be sorted by date modified ({{{/sm}}}, use {{{/sm-}}} to see most recently modified)
* Renamed sort names {{{/sort:add}}} to {{{/sort:added}}} and {{{/sort:complete}}} to {{{/sort:completed}}}
* When viewing a task's properties, notes or command list pressing Alt+Left (or Ctrl+Backspace) should now always take you back to the last task search if that was done with the {{{tasks}}} or {{{t}}} command

''0.3.0''
* Added 'Change note of task' to task command list

''0.2.0''
* Made {{{tasks}}} command more powerful and more intuitive. Instead of showing properties on Enter a command list is now shown. Hitting Shift+Enter will show properties by default but can be configured to complete or postpone the selected task.
* Added {{{change properties}}} command
* Added {{{tasks}}}, {{{lists}}} and {{{tags}}} commands to command auto completion list
* Auto completion list is now sorted according to most likely frequency of use (e.g. add task before add list)
* Completed tasks can now be shown by adding the {{{/completed}}} or {{{/c}}} switch. The switch only applies to the {{{tasks}}} and {{{delete task}}} commands and is always in effect on the {{{uncomplete task}}} command.
* Filtering down to one single task will no longer show the respective task's properties. Instead it will just show as a single task item in the result list. Likewise for the {{{edit note}}} and {{{delete note}}} commands.
* It's now possible to omit display of the list name if the list is Inbox (which is the RTM default list)
* Changed {{{del}}} (power user command to delete a task) to {{{d}}}
* Updated [[Getting started]], [[Commands]] and [[Displaying tasks]] in the help file

''0.1.0''
* Changed plugin name to FarrMilk
* Trying yet another libcurl DLL (with hopefully better luck this time)

''0.0.3''
* Fixed wrong processing of notes
* Added //Basic concept of operation// and //Some examples// to [[Getting started]]
* Added [[Editing notes]] help topic

''0.0.2''
* Added rename list command to help file (the command was already implemented in 0.0.1)
* Changed archive list power user command to {{{cl}}} (from {{{rl}}}, which is used for rename list)
* Added {{{/showall}}} to help file
* changed libcurl DLL to a version without SSL support making the plugin package size smaller

''0.0.1 - 23. September 2008''

First beta release, implementing all of the following:
* Display tasks
* Filter tasks by task name, by list, by tag, by priority and by due date
* Sort tasks by task name, by priority, by due date, by date added, by date completed and by URL
* Add new tasks
* Delete tasks
* Complete / Uncomplete tasks
* Move tasks from one list to another
* Postpone tasks
* Change a task's properties, including its name, priority, due date, recurrence, time estimate, tags, location and URL
* Add, edit and delete task notes
* Display lists
* Add new lists
* Delete lists
* Archive / Unarchive lists
* View tags
* View tasks of smart lists (with limitations!)