Code Monkey home page Code Monkey logo

todo.txt-ios's Introduction

todo.txt format

Gitter

A complete primer on the whys and hows of todo.txt.

The first and most important rule of todo.txt:

A single line in your todo.txt text file represents a single task.

Why plain text?

Plain text is software and operating system agnostic. It's searchable, portable, lightweight, and easily manipulated. It's unstructured. It works when someone else's web server is down or your Outlook .PST file is corrupt. There's no exporting and importing, no databases or tags or flags or stars or prioritizing or insert company name here-induced rules on what you can and can't do with it.

The 3 axes of an effective todo list

Using special notation in todo.txt, you can create a list that's sliceable by 3 key axes.

Priority

Your todo list should be able to tell you what's the next most important thing for you to get done - either by project or by context or overall. You can optionally assign tasks a priority that'll bubble them up to the top of the list.

Project

The only way to move a big project forward is to tackle a small subtask associated with it. Your todo.txt should be able to list out all the tasks specific to a project.

In order to move along a project like "Cleaning out the garage," my task list should give me the next logical action to take in order to move that project along. "Clean out the garage" isn't a good todo item; but "Call Goodwill to schedule pickup" in the "Clean out garage" project is.

Context

Getting Things Done author David Allen suggests splitting up your task lists by context - ie, the place and situation where you'll work on the job. Messages that you need to send go in the @email context; calls to be made @phone, household projects @home.

That way, when you've got a few minutes in the car with your cell phone, you can easily check your @phone tasks and make a call or two while you have the opportunity.

This is all possible inside todo.txt.

todo.txt format rules

Your todo.txt is a plain text file. To take advantage of structured task metadata like priority, projects, context, creation, and completion date, there are a few simple but flexible file format rules.

Philosophically, the todo.txt file format has two goals:

  • The file contents should be human-readable without requiring any tools other than a plain text viewer or editor.
  • A user can manipulate the file contents in a plain text editor in sensible, expected ways. For example, a text editor that can sort lines alphabetically should be able to sort your task list in a meaningful way.

These two goals are why, for example, lines start with priority and/or dates, so that they are easily sorted by priority or time, and completed items are marked with an x, which both sorts at the bottom of an alphabetical list and looks like a filled-in checkbox.

Here are the rest.

Incomplete Tasks: 3 Format Rules

The beauty of todo.txt is that it's completely unstructured; the fields you can attach to each task are only limited by your imagination. To get started, use special notation to indicate task context (e.g. @phone ), project (e.g. +GarageSale ) and priority (e.g. (A) ).

A todo.txt file might look like the following:

(A) Thank Mom for the meatballs @phone
(B) Schedule Goodwill pickup +GarageSale @phone
Post signs around the neighborhood +GarageSale
@GroceryStore Eskimo pies

A search and filter for the @phone contextual items would output:

(A) Thank Mom for the meatballs @phone
(B) Schedule Goodwill pickup +GarageSale @phone

To just see the +GarageSale project items would output:

(B) Schedule Goodwill pickup +GarageSale @phone
Post signs around the neighborhood +GarageSale

There are three formatting rules for current todo's.

Rule 1: If priority exists, it ALWAYS appears first.

The priority is an uppercase character from A-Z enclosed in parentheses and followed by a space.

This task has a priority:

(A) Call Mom

These tasks do not have any priorities:

Really gotta call Mom (A) @phone @someday
(b) Get back to the boss
(B)->Submit TPS report

Rule 2: A task's creation date may optionally appear directly after priority and a space.

If there is no priority, the creation date appears first. If the creation date exists, it should be in the format YYYY-MM-DD.

These tasks have creation dates:

2011-03-02 Document +TodoTxt task format
(A) 2011-03-02 Call Mom

This task doesn't have a creation date:

(A) Call Mom 2011-03-02

Rule 3: Contexts and Projects may appear anywhere in the line after priority/prepended date.

  • A context is preceded by a single space and an at-sign (@).
  • A project is preceded by a single space and a plus-sign (+).
  • A project or context contains any non-whitespace character.
  • A task may have zero, one, or more than one projects and contexts included in it.

For example, this task is part of the +Family and +PeaceLoveAndHappiness projects as well as the @iphone and @phone contexts:

(A) Call Mom +Family +PeaceLoveAndHappiness @iphone @phone

This task has no contexts in it:

Email SoAndSo at [email protected]

This task has no projects in it:

Learn how to add 2+2

Complete Tasks: 2 Format Rules

Two things indicate that a task has been completed.

Rule 1: A completed task starts with an lowercase x character (x).

If a task starts with an x (case-sensitive and lowercase) followed directly by a space, it is marked as complete.

This is a complete task:

x 2011-03-03 Call Mom

These are not complete tasks.

xylophone lesson
X 2012-01-01 Make resolutions
(A) x Find ticket prices

We use a lowercase x so that completed tasks sort to the bottom of the task list using standard sort tools.

Rule 2: The date of completion appears directly after the x, separated by a space.

For example:

x 2011-03-02 2011-03-01 Review Tim's pull request +TodoTxtTouch @github

If you’ve prepended the creation date to your task, on completion it will appear directly after the completion date. This is so your completed tasks sort by date using standard sort tools. Many Todo.txt clients discard priority on task completion. To preserve it, use the key:value format described below (e.g. pri:A)

With the completed date (required), if you've used the prepended date (optional), you can calculate how many days it took to complete a task.

Additional File Format Definitions

Tool developers may define additional formatting rules for extra metadata.

Developers should use the format key:value to define additional metadata (e.g. due:2010-01-02 as a due date).

Both key and value must consist of non-whitespace characters, which are not colons. Only one colon separates the key and value.

todo.txt-ios's People

Contributors

bjustin-nerdery avatar brendonjustin avatar chuckbjones avatar dylanlacey avatar flafeer avatar ghewgill avatar ginatrapani avatar grahamc avatar hrsimoes avatar jperkel avatar paulroub avatar raykrash avatar rhussmann avatar sakurina avatar stevendpclark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

todo.txt-ios's Issues

Crash when clicking Prioritize, Project, or Context adding a new project

When adding a new task, clicking either the Prioritize, Project, or Context button works once. However, after either canceling or selecting a priority, project, or context, clicking one of the three buttons a second time causes the app to crash.

I am using TestFlight build #9 of Todo.txt Touch 1.0 on an iPod Touch, iOS version 4.3.3.

Thanks folks!

Long-text cells display incorrectly when searching

Summary

Tasks with long text display fine in the normal view, but if searching from the tableview for a task with long text, it won't display correctly in the search view.

Expected behavior

In a search view, task should display in a cell of appropriate height to house all text

Actual behavior

The tasks cell is too short to handle properly display the text.

Steps to reproduce (iPhone):

  1. Create a task with a lot of text, for instance, e.g. "This is a very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long task"
  2. Pull down the tableview to reveal the search bar. Search for text in the task, e.g. "very"
  3. The resulting task cell won't be tall enough to fit the long text.

Image of Bug

http://cl.ly/B4mY

Notes

If it doesn't step on Chuck's work too much, I'd like to claim this one. Should be a quick fix.

Crashes on Project/Context Picker

App crashes on picker if you hit done and there is no Project/Context to select from in picker.
This is with no tasks currently in list
Steps to reproduce:
Click to create new task
Click project or context
Click done

Add Compose Todo "Hint" text

The Android version offers some "Hint" text in the compose todo box. Is this possible in iOS? Our current Android compose text is an example todo:

Call Mom @phone +FamilialPeace

This is what it looks like:

Add task

Improve accessibility

Properly enable VoiceOver:
http://tech.groups.yahoo.com/group/todotxt/message/3748

Apple has provided a guide for developers on how to make their applications accessible at: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iPhoneAccessibility/Introduction/Introduction.html

Additional information for developing apps that are accessible to VoiceOver users can be found on the AppleVis website at: http://www.applevis.com/information-app-developers

Remove filter button

If we don't implement filtering in the 1.0 release (#18), let's remove this button which does nothing right now.

Add Help view

Currently we have a "Help" button in the compose todo screen. Need to show help text when tapped, like we do in the Android version.

App crashes add new task/cancel

Steps to reproduce:
1.) Tap + to add task
2.) Tap either Project, Priority, or Context and select a value or hit cancel
3.) Cancel the add task
4.) Crash

Bug: When working offline, Upload/download buttons don't do anything

To reproduce:

  • In settings, turn Work Offline "On"
  • Add a new task
  • Tap the sync button
  • From the prompt, choose "Upload changes". Wait--nothing happens.
  • Go back into Settings, and turn Work Offline "Off"
  • The Manual sync dialog shows up and you can download/upload.

This is confusing. We should do 1 of 2 things to make it less confusing:

  1. Hide the refresh button entirely while Work Offline is set to on. Alternatively we can make it a "Go Online" button.
  2. Make the upload/download buttons actually upload or download while Work Offline is set to On, if the user taps refresh.

Add ability to archive completed tasks to done.txt

Add a button (in Settings?) to archive all completed tasks. When tapped, it should download the latest revision of done.txt from Dropbox, and move items marked as done from todo.txt to done.txt, then upload both done.txt and todo.txt.

We can safely assume the user won't perform this action THAT much, which is why I think we should put the button in settings vs on the main screen. I'm open to suggestions re: button placement.

"Add task" screen should using texting keyboard

Summary

The "add task" screen should use the standard texting keyboard to facilitate faster text entry.

Discussion

I understand that the current keyboard provides somewhat faster access to characters designating context and project (@ and +, respectively). However, the majority of my time is spent entering task text, not the attribute characters. I find myself consistently frustrated when adding TODOs, fighting the muscle memory I've developed with the standard keyboard. As this is a workflow I frequently perform (adding new tasks), it should fit the standard keyboard model.

In addition, the button in the upper right-hand corner should read "Add," not "Done," as done has special meaning within the context of todo.txt Touch.

I'll happily claim this one if we agree this bug is valid.

Supporting images

Delete settings on logout

The Android app deletes all settings when the user logs out of Dropbox. We should do the same. The main place where it can cause confusion is if you were in offline mode before logging out. When you log back in, you would expect to be online. We could just reset that one setting, but for parity sake with the Android app, we should go ahead and reset all of them.

I will take care of this.

Add line number and align priority with task text on individual task screen

The individual task screen task format should be consistent with the list view. Specifically, on the individual task screen:

If "Show Line numbers" is enabled in settings, the line number should display in the same exact place it does in the list view.

Priority should be aligned with the first line of task text as well (right now it's centered vertically).

Remove Task Details screen

I would like to merge the functionality of the individual task screen into the main list screen. Then we could remove that screen entirely.

Enable todo filters

Should be able to sort todo's by project, context, and/or keyword, as you can in the Android version.

Use tableviews instead of pickers

I've come to really dislike the UIPickerView, especially on the iPad. I would like to use UITableView for most if not all of the things we are using UIPickerView for now.

If lists of projects/contexts get long, maybe we can put the most recently/frequently used ones at the top of the list?

Remove TestFlight hooks/Add About button before app submission

Hoping to submit the app to the store for approval in the next two weeks. Before we do, we have to remove all the TestFlight hooks, including the Leave Feedback button in Settings. I'd like to replace it with an "About Todo.txt Touch" that just launches todotxt.com in mobile Safari. (I'm working on a web site redesign right now).

Offline mode visual indicator

We should have some sort of visual indicator that you are in offline mode. I'm not sure what, though. Maybe change the sync button icon slightly?

Automatically reload todo.txt when preferences are saved

If the user changes the file location of the todo.txt file, the app doesn't refresh the todo.txt file automatically.

So if I'm working with the file in the todo1 folder, and go into settings and change it to the todo2 folder, going back to the app, I still see the todo1/todo.txt file. Saving a change to the file location preference should automatically kick off a reload.

1.0: Remove Share button

Right now the Share button on the individual task screen does nothing; let's remove it for our 1.0 release. We can implement for 2.0.

App Crashes on "Logout of Dropbox"

Using most recent TestFlight build app still crashes on "Logout of Dropbox"
Steps to reproduce:
1.) Open Todo.txt
2.) Login to Dropbox
3.) Hit home button
4.) Double tap home button, long press app and tap to close Todo.txt
5.) Re-open Todo.txt
6.) Goto settings and tap "Logout of Dropbox"
7.) Crash

This is on iOS 5 iPhone 4S with Todo.txt Touch 1.0#13

App Crash when you tap "Log out of Dropbox"

I can't reproduce this in the simulator, only on my device (an iPad). But I can reproduce it on the device reliably. When logged into Dropbox and browsing a todo.txt list, go to Settings and tap "Log out of Dropbox" and the app freezes and crashes. Here's the stacktrace:

0 Todo.txt Touch 0x0001a811 Todo.txt Touch + 104465
1 Todo.txt Touch 0x0001ac27 Todo.txt Touch + 105511
2 libsystem_c.dylib 0x379ed539 _sigtramp + 48
3 UIKit 0x319e89cb -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 546
4 UIKit 0x319e7aa9 -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1076
5 UIKit 0x319e7233 -[UITableView layoutSubviews] + 206
6 Todo.txt Touch 0x00019e73 Todo.txt Touch + 102003
7 UIKit 0x3198bd4b -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 182
8 CoreFoundation 0x37e3f22b -[NSObject performSelector:withObject:] + 42
9 QuartzCore 0x374d9381 -[CALayer layoutSublayers] + 216
10 QuartzCore 0x374d8f99 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 216
11 QuartzCore 0x374dd11b _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 226
12 QuartzCore 0x374dce57 _ZN2CA11Transaction6commitEv + 314
13 QuartzCore 0x375046f1 _ZN2CA11Transaction5flushEv + 44
14 QuartzCore 0x375046c3 +[CATransaction flush] + 34
15 UIKit 0x319f7b05 -[UIApplication _sendOrderedOutContexts] + 76
16 UIKit 0x319f7a95 orderOutContextObserverCallout + 32
17 CoreFoundation 0x37eb4b4b CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION + 18
18 CoreFoundation 0x37eb2d87 __CFRunLoopDoObservers + 258
19 CoreFoundation 0x37eb304f __CFRunLoopRun + 614
20 CoreFoundation 0x37e364dd CFRunLoopRunSpecific + 300
21 CoreFoundation 0x37e363a5 CFRunLoopRunInMode + 104
22 GraphicsServices 0x37c0dfcd GSEventRunModal + 156
23 UIKit 0x319b6743 UIApplicationMain + 1090
24 Todo.txt Touch 0x0000258b Todo.txt Touch + 5515
25 Todo.txt Touch 0x000020c8 Todo.txt Touch + 4296

Upgrade Dropbox SDK to iOS v1.0

Summary

Currently, Todo.txt Touch iOS uses an older version of the Dropbox API. While this works fine for developers who have created an API key before the 1.0 SDK was released, new developers who create an API key and attempt to use it with Todo.txt touch iOS will receive the message "Unable to Login -- You're using an older version of the Dropbox API with a new API key. Please use the latest version" when attempting to link their Dropbox account.

As a consequence, no developers requesting an API key after the release of Dropbox v1.0 iOS SDK (which has already occurred) will be able to interact with Dropbox within Xcode. In other words, new developers can't effectively build Todo.txt touch iOS.

Steps to reproduce

1.) Request a new API key from the Dropbox website.
2.) Use these keys in the dropbox.plist file of Todo.txt touch iOS
3.) Receive the previously mentioned message, a.k.a. fail miserably

Suggested fix

Upgrade Dropbox SDK to iOS v1.0.

Unit testing

Good habits start now! Let's set up unit testing earlier rather than later.

Slow start on device

I have noticed that when running on an actual device, the app starts up slowly. I think this is caused by checking for a network signal before we do anything else.

I will investigate this.

"Add task" screen should have standard keyboard

Summary

The "add task" screen should have a standard texting keyboard.

Discussion

The "add task" screen should have the standard keyboard that appears in the texting app. I understand that the current keyboard provides somewhat quicker access to the special characters (@ for context and + for project), but the current keyboard is very frustrating. The majority of time spent on the screen is task text input, not necessarily entering special characters. My muscle memory (and I'm assuming most iPhone users) has been built off the standard keyboard. As task entry is a primary function, I feel the keyboard should be standard.

In addition, the button test at the top-right of the "add task" screen should read "add," not "done," as done has special meaning in todo.txt touch.

Additional Images

I'll claim this if we agree it's a valid issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.