Giter Site home page Giter Site logo

theunraveler / taskwarrior-web Goto Github PK

View Code? Open in Web Editor NEW
524.0 524.0 63.0 1.32 MB

A web interface for the Taskwarrior todo application. Because being a neckbeard is only fun sometimes.

Home Page: http://theunraveler.github.com/taskwarrior-web

License: MIT License

Ruby 59.90% CSS 13.08% JavaScript 10.24% HTML 15.98% Makefile 0.20% Dockerfile 0.61%

taskwarrior-web's People

Contributors

cilynx avatar genewoo avatar guydunigo avatar infertux avatar mattdf avatar theunraveler avatar yozo1984 avatar zebradil 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

taskwarrior-web's Issues

Cannot complete multiple tasks

If I complete a task, the page doesn't update appropriately, so I can't complete a second task until I refresh my browser.

My task version is: 2.1.2
I'm using the latest version of taskwarrior-web that I pulled from gem.

JSON::ParserError at /tasks/pending

I'm currently having an issue where the major version of TaskWarrior is not detected (see #24).

If I adjust the code in taskwarrior-web-1.0.5/lib/taskwarrior-web/command_builder.rb so that the v2 files are included, and run task-web, in the browser I see JSON::ParserError at /tasks/pending 387

unexpected token at '�]0;task export task export status:pending� {"id":1,"description":"Ticket #302: ...
file: common.rb
location: parse
line: 148

parsing for commas when adding tags

When I type tag names while adding a task, everything looks fine as long as I don't forget to place a comma and then try to put it back in the right place. Try this:

  • type "tag1 tag2"
  • move the carret between the tag names and insert a comma

Expected: Two tags added: "tag1" and "tag2"

Effect: One tag added: "tag1 tag2"

License missing from gemspec

Some companies will only use gems with a certain license.
The canonical and easy way to check is via the gemspec
via e.g.

spec.license = 'MIT'
# or
spec.licenses = ['MIT', 'GPL-2']

There is even a License Finder to help companies ensure all gems they use
meet their licensing needs. This tool depends on license information being available in the gemspec.
Including a license in your gemspec is a good practice, in any case.

How did I find you?

I'm using a script to collect stats on gems, originally looking for download data, but decided to collect licenses too,
and make issues for missing ones as a public service :)
https://gist.github.com/bf4/5952053#file-license_issue-rb-L13 So far it's going pretty well

Development dependencies unresolvable

I wanted to start getting familiar with development of taskwarrior-web today, as I am interested in contributing. In the course of doing so, one of the first things I did was 'rake spec'. This failed for me with:

$ rake spec
rake aborted!
cannot load such file -- rspec/core/rake_task

I recognized I was simply missing a development dependency, which I'm sure I can work out on my own fairly easily. This is not the topic of this Issue. My real issue is that I tried to resolve all missing development dependencies by letting gem resolve them for me automatically as follows, but the deps could not be resolved:

$ gem install --development taskwarrior-web
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: em-spec requires rspec (> 2.6.0), bacon (>= 0), test-unit (>= 0); guard-bundler requires guard (> 1.1); actionmailer requires actionpack (= 4.0.0); bourne requires mocha (< 0.15, >= 0.13.2); github_api requires multi_json (> 1.4); guard-cucumber requires guard (>= 1.1.0), cucumber (>= 1.2.0); coveralls requires simplecov (>= 0.7); jwt requires multi_json (>= 1.5); guard-rspec requires guard (>= 1.1); activerecord requires activesupport (= 4.0.0), activemodel (= 4.0.0); hoe-highline requires hoe (> 2.8); bacon-bits requires bacon (>= 1.1.0); mocha-on-bacon requires mocha (>= 0.13.0); test-unit-rr requires test-unit (>= 2.5.2), rr (>= 1.1.1); test-unit-notify requires test-unit (>= 2.4.9); innate requires rack (> 1.5.2); vulcan requires thor (> 0.14.6); detroit requires pom (>= 0); rspec-spies requires rspec (> 2.0); uglifier requires execjs (>= 0.3.0); eco requires eco-source (>= 0), execjs (>= 0); json_spec requires rspec (> 2.0); rails requires activesupport (= 3.0.12), actionpack (= 3.0.12), activerecord (= 3.0.12), activeresource (= 3.0.12), actionmailer (= 3.0.12), railties (= 3.0.12); coffee-script requires execjs (>= 0); rspec-html-matchers requires rspec (>= 2.0.0); capybara requires xpath (> 1.0.0); rspectacular requires rspec (> 2.12); fuubar requires rspec (> 2.0); sdoc requires rdoc (~> 3.10)

Please either tell me what I'm doing wrong or fix the dependencies.

Thanks,
Ben

task-web fails to start due to Versionomy parse error

When I execute task-web, the command runs and starts a process, but indicates:
Couldn't get a file descriptor referring to the console

When I pull up localhost:5678 in FireFox, I get an error screen indicating the following error:

Versionomy::Errors::ParseError at /
Extra characters: "\nConfiguration override rc.xterm.title:no\nConfiguration override rc.color:off\nConfiguration override rc.verbose:no"

file: delimiter.rb
location: parse
line: 199

Steps to reproduce:

  1. Execute 'task-web' from the terminal.
  2. Navigate to existing open web browser and enter 'localhost:5678' in the address bar

Output of task _version:
2.0.0

Output of task show:

Config Variable Value


_forcecolor no
abbreviation.minimum 2
active.indicator *
alias._query export
alias.burndown burndown.weekly
alias.ghistory ghistory.monthly
alias.history history.monthly
alias.rm delete
annotations full
avoidlastcolumn no
bulk 3
burndown.bias 0.666
calendar.details sparse
calendar.details.report list
calendar.holidays none
calendar.legend yes
calendar.offset no
calendar.offset.value -1
color off
color.active rgb555 on rgb410
color.alternate on color233
color.blocked white on color8
color.burndown.done color0 on rgb050
color.burndown.pending color0 on rgb500
color.burndown.started color0 on rgb550
color.calendar.due color0 on color1
color.calendar.due.today color15 on color1
color.calendar.holiday color0 on color11
color.calendar.overdue color0 on color9
color.calendar.today color15 on rgb013
color.calendar.weekend color235
color.calendar.weeknumber rgb013
color.debug color3
color.due color1
color.due.today rgb400
color.footnote color3
color.header color3
color.history.add color0 on rgb500
color.history.delete color0 on rgb550
color.history.done color0 on rgb050
color.overdue color9
color.pri.H rgb255
color.pri.L rgb245
color.pri.M rgb250
color.pri.none
color.recurring rgb013
color.summary.background white on color0
color.summary.bar black on rgb141
color.sync.added rgb005
color.sync.changed rgb550
color.sync.rejected rgb500
color.tagged rgb031
color.undo.after color2
color.undo.before color1
column.padding 1
complete.all.projects no
complete.all.tags no
confirmation yes
data.location /home/grecar/.task
dateformat m/d/Y
dateformat.annotation m/d/Y
dateformat.holiday YMD
dateformat.report m/d/Y
debug no
default.command next
defaultheight 24
defaultwidth 80
dependency.confirmation on
dependency.indicator D
dependency.reminder on
detection off
displayweeknumber yes
dom on
due 7
exit.on.missing.db no
expressions on
extensions off
fontunderline yes
gc on
hyphenate on
indent.annotation 2
indent.report 0
journal.info on
journal.time no
journal.time.start.annotation Started task
journal.time.stop.annotation Stopped task
json.array off
list.all.projects no
list.all.tags no
locale
locking on
merge.autopush ask
nag You have more urgent tasks.
patterns on
recurrence.indicator R
recurrence.limit 1
regex no
report.active.columns id,project,priority,due,start.active,entry.age,-
description
report.active.description Lists active tasks
report.active.filter status:pending start.any:
report.active.labels ID,Project,Pri,Due,Active,Age,Description
report.active.sort due+,priority-,project+,description+
report.all.columns id,status,project,priority,due,end,start.active-
,entry.age,description
report.all.description Lists all pending and completed tasks
report.all.filter status.not:deleted
report.all.labels ID,Status,Project,Pri,Due,Completed,Active,Age,-
Description
report.all.sort project+,due+,end+,priority-,start-,description+
report.blocked.columns id,depends,project,priority,due,start.active,en-
try.age,description
report.blocked.description Lists all blocked tasks
report.blocked.filter status:pending depends.any:
report.blocked.labels ID,Deps,Project,Pri,Due,Active,Age,Description
report.blocked.sort due+,priority-,start-,project+,description+
report.completed.columns end,project,priority,entry.age,description,uuid
report.completed.description Lists completed tasks
report.completed.filter status:completed
report.completed.labels Complete,Project,Pri,Age,Description,UUID
report.completed.sort end+,priority-,project+,description+
report.list.columns id,project,priority,due,start.active,entry.age,-
description
report.list.description Lists all pending tasks
report.list.filter status:pending
report.list.labels ID,Project,Pri,Due,Active,Age,Description
report.list.sort due+,priority-,start-,project+,description+
report.long.columns id,project,priority,entry,start,due,recur,due.c-
ountdown,entry.age,depends,tags,description
report.long.description Lists all pending tasks
report.long.filter status:pending
report.long.labels ID,Project,Pri,Added,Started,Due,Recur,Countdow-
n,Age,Deps,Tags,Description
report.long.sort due+,priority-,project+,description+
report.ls.columns id,project,priority,description
report.ls.description Minimal listing of all pending tasks
report.ls.filter status:pending
report.ls.labels ID,Project,Pri,Description
report.ls.sort priority-,project+,description+
report.minimal.columns id,project,description.truncated
report.minimal.description Minimal listing of all pending tasks
report.minimal.filter status:pending
report.minimal.labels ID,Project,Description
report.minimal.sort project+,description+
report.newest.columns id,project,priority,due,start.active,entry.age,-
description
report.newest.description Shows the newest tasks
report.newest.filter status:pending limit:10
report.newest.labels ID,Project,Pri,Due,Active,Age,Description
report.newest.sort id-
report.next.columns id,project,priority,due,start.active,entry.age,-
urgency,description
report.next.description Lists the most urgent tasks
report.next.filter status:pending limit:page
report.next.labels ID,Project,Pri,Due,A,Age,Urgency,Description
report.next.sort urgency-,due+,priority-,start-,project+,descrip-
tion+
report.oldest.columns id,project,priority,due,start.active,entry.age,-
description
report.oldest.description Shows the oldest tasks
report.oldest.filter status:pending limit:10
report.oldest.labels ID,Project,Pri,Due,Active,Age,Description
report.oldest.sort id+
report.overdue.columns id,project,priority,due,start.active,entry.age,-
description
report.overdue.description Lists overdue tasks
report.overdue.filter status:pending due.before:now
report.overdue.labels ID,Project,Pri,Due,Active,Age,Description
report.overdue.sort due+,priority-,start-,project+,description+
report.recurring.columns id,project,priority,due,recur,start.active,entr-
y.age,description
report.recurring.description Lists recurring tasks
report.recurring.filter status:pending parent.any:
report.recurring.labels ID,Project,Pri,Due,Recur,Active,Age,Description
report.recurring.sort due+,priority-,start-,project+,description+
report.unblocked.columns id,depends,project,priority,due,start.active,en-
try.age,description
report.unblocked.description Lists all unblocked tasks
report.unblocked.filter status:pending depends.none:
report.unblocked.labels ID,Deps,Project,Pri,Due,Active,Age,Description
report.unblocked.sort due+,priority-,start-,project+,description+
report.waiting.columns id,project,priority,wait,entry.age,description
report.waiting.description Lists all waiting tasks
report.waiting.filter status:waiting
report.waiting.labels ID,Project,Pri,Wait,Age,Description
report.waiting.sort wait+,priority-,project+,description+
row.padding 0
rule.precedence.color due.today,active,blocked,overdue,due,keyword,pr-
oject,tag,recurring,pri,tagged,completed,deleted
search.case.sensitive yes
shell.prompt task>
tag.indicator +
undo.style side
urgency.active.coefficient 4.0
urgency.age.coefficient 2.0
urgency.age.max 365
urgency.annotations.coefficient 1.0
urgency.blocked.coefficient -5.0
urgency.blocking.coefficient 8.0
urgency.due.coefficient 12.0
urgency.next.coefficient 15.0
urgency.priority.coefficient 6.0
urgency.project.coefficient 1.0
urgency.tags.coefficient 1.0
urgency.waiting.coefficient -3.0
verbose yes
weekstart Sunday
xterm.title no

Some of your .taskrc variables differ from the default values.Your .taskrc file contains these unrecognized variables:
annotations

Your .taskrc file contains variables that are deprecated:
annotations

I'm not sure what other information would be helpful to troubleshoot, so please let me know so I can help correct it.

Support multiple users with easy and flexible authentication

Use case 1: I would like multiple family members to be able to each have their own task accounts accessed either from the command-line on our home network or from taskwarrior-web.

Use case 2: I would like to set up Taskwarrior for a community comprised solely of web users. These are users who are less comfortable with the command-line and will therefore not need command-line access.

In both cases, I would like users to be able to easily authenticate. Especially the users in group 2 (but also perhaps some users from group 1) may already have accounts via Facebook, Twitter, etc. and spend much of their time logged into those sites. Omniauth looks like an intriguing possibility to handle logins for both use cases:

http://www.omniauth.org/

As for storing each user's data, a suitable location per platform could be set by default that is owned by taskwarrior-web uid/gid, e.g. /var/lib/taskwarrior-web/users/[username].

In use case 1, using taskd with taskwarrior >= 2.3.0, the user data could be synchronized bidirectionally by the exchange of SSH keys between each user and the web app. If desired and the command-line users are on the same host as the web app, the TransportShell method could be used to sync between /var/lib/taskwarrior-web/users/[username] and the home dir, or dispense with syncing entirely and have the user's ~/.task symlinked to the web location or vice-versa. Of course, the appropriate Unix auth (via task gid, probably) would need to be set up to allow that.

Case issue with project names: "NoMethodError"

Just installed taskwarrior-web using gem.

For any project I click on, I get such error page (example for project "GTD") :


NoMethodError at /projects/gtd

undefined method `project' for nil:NilClass

file: app.rb location: block in class:App line: 96


The entire output (condensed) pasted at pastebin.

Creating New Task Fails:

When I try to create a new task, everything seems like it works. (I get a "Task Created" message and everything seems like it worked.. but it didn't.

I've traced it down to when I set a due date is when a item doesn't add. I think it's to do with date-format.. however once I set it in my config.. everything explodes in bootstrap (it's trying to use the ruby format string directly I think).

My version data is the same as my last issue.

spaces break tag adding

When one adds tags to a new task and prints a tag with a space in it, only the first word is taken as a tag and the rest lands in the description. I know this is the current behaviour of taskwarrior, but I'd expect the web GUI to either

  • interpret a space as a tag separator (as well as comma)
  • substitute spaces with an underscore
  • trim the part after the first space
  • issue a warning

task-web on Mac OS X 10.8 fails to spawn process

% task-web
/Users/benjaminweb/git/taskwarrior-web/taskwarrior-web.gemspec:33: warning: Insecure world writable dir /usr/local in PATH, mode 040777
/Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/gems/json-1.7.5/lib/json/ext/parser.bundle: undefined class/module Encoding (ArgumentError)
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in require' from /Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/gems/json-1.7.5/lib/json/ext.rb:13 from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:ingem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in require' from /Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/gems/json-1.7.5/lib/json.rb:58 from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:60:ingem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:60:in require' from /Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/gems/taskwarrior-web-1.0.5/lib/taskwarrior-web/task.rb:1 from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:ingem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in require' from /Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/gems/taskwarrior-web-1.0.5/lib/taskwarrior-web.rb:7 from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:ingem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in require' from /Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/gems/taskwarrior-web-1.0.5/bin/task-web:6 from /Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/bin/task-web:19:inload'
from /Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/bin/task-web:19
from /Users/benjaminweb/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14

Wrong due date at pending tasks list

I just added a sample task via taskwarrior-web with the following params:

Desc: Test Web task
Projects: test
Due date: 30 Aug 2011 (picked that from calendar)
Tags: test

If I look at pending tasks the due date is showed as 30/08/1111. If i use CLI the date is correct.

Looks like the due date format is broken.

Thanks.

Incompatible with xterm.title setting

On Mac OS 10.8.2 with ruby-1.9.3-p194, when running task-web I get:

~/.rvm/gems/ruby-1.9.3-p194@global/gems/taskwarrior-web-1.0.5/lib/taskwarrior-web/command_builder.rb:15:in `block in included': TaskwarriorWeb::UnrecognizedTaskVersion (TaskwarriorWeb::UnrecognizedTaskVersion)

task --version
2.1.2

Sample bug report

This is an example of a good bug report. Here, I am detailing the problem I'm running in to.

Steps to reproduce:

  1. Go to /tasks
  2. Click on the New task list
    ...etc...

Output of task _version:
2.1.2

Output of task show:

Config Variable                 Value
------------------------------- ------------------------------------------------
_forcecolor                     no
abbreviation.minimum            2
active.indicator                *
alias._query                    export
alias.burndown                  burndown.weekly
alias.ghistory                  ghistory.monthly
alias.history                   history.monthly
alias.rm                        delete
avoidlastcolumn                 no
bulk                            3
burndown.bias                   0.666
calendar.details                sparse
calendar.details.report         list
calendar.holidays               none
calendar.legend                 yes
calendar.offset                 no
calendar.offset.value           -1
color                           off
color.active                    black on bright green
color.alternate
color.blocked                   black on white
color.blocking                  black on bright white
color.burndown.done             on green
color.burndown.pending          on red
color.burndown.started          on yellow
color.calendar.due              white on red
color.calendar.due.today        bold white on red
color.calendar.holiday          black on bright yellow
color.calendar.overdue          black on bright red
color.calendar.today            bold white on bright blue
color.calendar.weekend          white on bright black
color.calendar.weeknumber       bold blue
color.debug                     yellow
color.due                       red
color.due.today                 red
color.error                     yellow
color.footnote                  yellow
color.header                    yellow
color.history.add               black on red
color.history.delete            black on yellow
color.history.done              black on green
color.overdue                   bold red
color.pri.H                     bold white
color.pri.L
color.pri.M                     white
color.pri.none
color.project.none
color.recurring                 magenta
color.scheduled                 black on green
color.summary.background        white on black
color.summary.bar               black on green
color.sync.added                green
color.sync.changed              yellow
color.sync.rejected             red
color.tag.none
color.tagged
color.undo.after                green
color.undo.before               red
column.padding                  1
complete.all.projects           no
complete.all.tags               no
confirmation                    yes
data.location                   /Users/Jake/Dropbox/Tasks
dateformat                      m/d/Y
dateformat.annotation           m/d/Y
dateformat.edit                 m/d/Y H:N:S
dateformat.holiday              YMD
dateformat.info                 m/d/Y H:N:S
dateformat.report               m/d/Y
debug                           no
default.command                 ready
defaultheight                   24
defaultwidth                    80
dependency.confirmation         on
dependency.indicator            D
dependency.reminder             on
detection                       off
displayweeknumber               yes
dom                             on
due                             7
exit.on.missing.db              no
expressions                     on
extensions                      off
fontunderline                   yes
gc                              on
hyphenate                       on
indent.annotation               2
indent.report                   0
journal.info                    on
journal.time                    no
journal.time.start.annotation   Started task
journal.time.stop.annotation    Stopped task
json.array                      off
list.all.projects               no
list.all.tags                   no
locale
locking                         on
merge.autopush                  ask
nag                             You have more urgent tasks.
patterns                        on
recurrence.indicator            R
recurrence.limit                1
regex                           no
report.active.columns           id,project,priority,due,start.active,entry.age,-
                                description
report.active.description       Lists active tasks
report.active.filter            status:pending start.any:
report.active.labels            ID,Project,Pri,Due,Active,Age,Description
report.active.sort              due+,priority-,project+
report.all.columns              id,status,project,priority,due,end,start.active-
                                ,entry.age,description
report.all.description          Lists all pending and completed tasks
report.all.filter               status.not:deleted
report.all.labels               ID,Status,Project,Pri,Due,Completed,Active,Age,-
                                Description
report.all.sort                 entry+
report.blocked.columns          id,depends,project,priority,due,start.active,en-
                                try.age,description
report.blocked.description      Lists all blocked tasks
report.blocked.filter           status:pending depends.any:
report.blocked.labels           ID,Deps,Project,Pri,Due,Active,Age,Description
report.blocked.sort             due+,priority-,start-,project+
report.completed.columns        end,project,priority,entry.age,description,uuid
report.completed.description    Lists completed tasks
report.completed.filter         status:completed
report.completed.labels         Complete,Project,Pri,Age,Description,UUID
report.completed.sort           end+,priority-,project+
report.list.columns             id,project,priority,due,start.active,entry.age,-
                                description
report.list.description         Lists all pending tasks
report.list.filter              status:pending '(scheduled.none: or
                                scheduled.before:now )'
report.list.labels              ID,Project,Pri,Due,Active,Age,Description
report.list.sort                due+,priority-,start-,project+
report.long.columns             id,project,priority,entry,start,due,recur,due.c-
                                ountdown,entry.age,depends,tags,description
report.long.description         Lists all pending tasks
report.long.filter              status:pending
report.long.labels              ID,Project,Pri,Added,Started,Due,Recur,Countdow-
                                n,Age,Deps,Tags,Description
report.long.sort                due+,priority-,project+
report.ls.columns               id,project,priority,description
report.ls.description           Minimal listing of all pending tasks
report.ls.filter                status:pending
report.ls.labels                ID,Project,Pri,Description
report.ls.sort                  priority-,project+
report.minimal.columns          id,project,description.truncated
report.minimal.description      Minimal listing of all pending tasks
report.minimal.filter           status:pending
report.minimal.labels           ID,Project,Description
report.minimal.sort             project+,description+
report.newest.columns           id,project,priority,due,start.active,entry.age,-
                                description
report.newest.description       Shows the newest tasks
report.newest.filter            status:pending limit:10
report.newest.labels            ID,Project,Pri,Due,Active,Age,Description
report.newest.sort              id-
report.next.columns             id,project,priority,due,start.active,entry.age,-
                                urgency,description
report.next.description         Lists the most urgent tasks
report.next.filter              status:pending limit:page '(scheduled.none: or
                                scheduled.before:now )'
report.next.labels              ID,Project,Pri,Due,A,Age,Urgency,Description
report.next.sort                urgency-,due+,priority-,start-,project+
report.oldest.columns           id,project,priority,due,start.active,entry.age,-
                                description
report.oldest.description       Shows the oldest tasks
report.oldest.filter            status:pending limit:10
report.oldest.labels            ID,Project,Pri,Due,Active,Age,Description
report.oldest.sort              id+
report.overdue.columns          id,project,priority,due,start.active,entry.age,-
                                description
report.overdue.description      Lists overdue tasks
report.overdue.filter           status:pending due.before:now
report.overdue.labels           ID,Project,Pri,Due,Active,Age,Description
report.overdue.sort             due+,priority-,start-,project+
report.ready.columns            id,project,priority,due,start.active,entry.age,-
                                urgency,description
report.ready.description        Lists the most urgent tasks
report.ready.filter             status:pending limit:page wait.none:
                                '(scheduled.none: or scheduled.before:now )'
report.ready.labels             ID,Project,Pri,Due,A,Age,Urgency,Description
report.ready.sort               urgency-,due+,priority-,start-,project+
report.recurring.columns        id,project,priority,due,recur,start.active,entr-
                                y.age,description
report.recurring.description    Lists recurring tasks
report.recurring.filter         status:pending parent.any:
report.recurring.labels         ID,Project,Pri,Due,Recur,Active,Age,Description
report.recurring.sort           due+,priority-,start-,project+
report.unblocked.columns        id,depends,project,priority,due,start.active,en-
                                try.age,description
report.unblocked.description    Lists all unblocked tasks
report.unblocked.filter         status:pending depends.none:
report.unblocked.labels         ID,Deps,Project,Pri,Due,Active,Age,Description
report.unblocked.sort           due+,priority-,start-,project+
report.waiting.columns          id,project,priority,wait,entry.age,description
report.waiting.description      Lists all waiting tasks
report.waiting.filter           status:waiting
report.waiting.labels           ID,Project,Pri,Wait,Age,Description
report.waiting.sort             wait+,priority-,project+
row.padding                     0
rule.precedence.color           due.today,active,blocking,blocked,overdue,due,s-
                                cheduled,keyword.,project.,tag.,recurring,pri.,-
                                tagged,completed,deleted
search.case.sensitive           yes
shell.prompt                    task>
tag.indicator                   +
undo.style                      side
urgency.active.coefficient      4.0
urgency.age.coefficient         2.0
urgency.age.max                 365
urgency.annotations.coefficient 1.0
urgency.blocked.coefficient     -5.0
urgency.blocking.coefficient    8.0
urgency.due.coefficient         12.0
urgency.next.coefficient        15.0
urgency.priority.coefficient    6.0
urgency.project.coefficient     1.0
urgency.scheduled.coefficient   5.0
urgency.tags.coefficient        1.0
urgency.waiting.coefficient     -3.0
verbose                         yes
weekstart                       Sunday
xterm.title                     no

Some of your .taskrc variables differ from the default values.

Drop support for versions prior to 2.0.0beta5

In light of #50 and also these comments from pbeckingham on irc, drop support for very old versions. In that issue, I posted a patch that would not work on such old versions.

22:50 < pbeckingham> SynrG: Supporting pre-1.9.2 is probably not a good idea. It's quite old at this point.
22:56 < pbeckingham> SynrG: The "task --version" was introduced 2012-01-16, for 2.0.0 beta5.

Add a Task errors

using the Add a Task dialog, with a super-simple description of "test2" and a tag "test2", the following is displayed in the task listing;

test2 JSON::ParserError - 387: unexpected token at 'There are not enough operands for the ' and ' operator.]' : /home/ djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/json/common.rb:148:in `parse' /home/ djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/json/common.rb:148:in `parse' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/taskwarrior-web-0.0.11/lib/taskwarrior-web/task.rb:60:in `query' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/taskwarrior-web-0.0.11/lib/taskwarrior-web/app.rb:146:in `block in < class:App>' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:1212:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:1212:in `block in compile!' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in `[]' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in `block ( 3 levels) in route!' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:801:in `route_eval' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in `block ( 2 levels) in route!' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:822:in `block in process_route' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:820:in `catch' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:820:in `process_route' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:784:in `block in route!' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:783:in `each' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:783:in `route!' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in `dispatch!' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in `block in call!' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in `block in invoke' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in `catch' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in `invoke' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in `call!' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.3.6/lib/rack/nulllogger.rb:9:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.3.6/lib/rack/head.rb:9:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/showexceptions.rb:21:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:1334:in `block in call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:1416:in `synchronize' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/sinatra-1.3.2/lib/sinatra/base.rb:1334:in `call' /home/ djp/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.3.6/lib/rack/handler/webrick.rb:59:in `service' /home/ djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' /home/ djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' /home/ djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start _thread' localhost - - [19/Jan/2012:11:45:19 EST] "GET /ajax/projects?term=it HTTP/1.1" 500 3756 http://localhost:5678/tasks/new /ajax/ projects?term=it 

rake spec fails with rspec 2.14.4, undefined method 'allow'

After setting up my development environment successfully this time with 'bundle install', I tried executing 'rake spec'. Roughly half of the specs fail, all for the same reason:

  1. TaskwarriorWeb::App GET / should redirect to /tasks/pending
    Failure/Error: allow(TaskwarriorWeb::Config).to receive(:property).with('task-web.user').and_return(nil)
    NoMethodError:
    undefined method `allow' for #RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x00000001535588

    ./spec/app/app_spec.rb:14:in`block (2 levels) in <top (required)>'

Here is the complete output:

https://gist.github.com/synrg/6192904

synrg@shade:~$ rspec --version
2.14.4

This resembles this issue:

http://stackoverflow.com/questions/17280012/rspec-mocks-allow-returns-undefined-method

I'm not sure what doc the OP is referring to. I have browsed the doc here and don't see any injunction against using allow in before :all:

https://www.relishapp.com/rspec/rspec-mocks/docs

If I revert f87c0e1, all specs are green again.

The only thing that concerns me is all examples in the doc show stubs of instance methods, whereas in our case we're trying to stub a method of a Module. Is allow even appropriate in this case?

Feature request: Gantt chart

I think that gantt chart are are useful and comprehensible representation of what's coming next and one's current progress. Haven't found any way of generating gantt charts with task warrior.

Note: I have tried to implement this in ruby using SVG graph, SVG/Graph/Schedule in particular. But I couldn't get it working neither with ruby 1.8 nor 1.9. Even none of samples for SVG/Graph/Schedule worked for me.

undefined method sort_by!

I get an error (+debug view) with default settings.

Undefined method sort_by! for...

# taskwarrior-web-0.0.8/lib/taskwarrior-web/app.rb  -- line 81 (and 2 more occurences of osrt_by! afterwards in the file)
@tasks = TaskwarriorWeb::Task.find_by_status(params[:status]).sort_by! { |x| [x.priority.nil?.to_s, x.priority.to_s, x.due.nil?.to_s, x.due.to_s, x.project.to_s] }

Do you think it is linked to my ruby version?

I installed the app via

gem install taskwarrior-web

Removing the sort_by! fixes it but I'd rather have a better solution :)

$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]

$ task-web -v
rack 1.1
sinatra 1.2.6
vegas 0.1.8

$ cat taskwarrior-web-0.0.8/lib/taskwarrior-web/version.rb
module TaskwarriorWeb
VERSION = "0.0.8"
end

Open-URI issue

When I run task-web I get this error

/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:277:in `open_http': 500 Internal Server Error (OpenURI::HTTPError)
from /Users/danishkhan/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
from /Users/danishkhan/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
from /Users/danishkhan/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:162:in `catch'
from /Users/danishkhan/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
from /Users/danishkhan/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
from /Users/danishkhan/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:518:in `open'
from /Users/danishkhan/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:30:in `open'
from /Users/danishkhan/.rvm/gems/ree-1.8.7-2011.03/gems/vegas-0.1.8/lib/vegas/runner.rb:142:in `port_open?'
from /Users/danishkhan/.rvm/gems/ree-1.8.7-2011.03/gems/vegas-0.1.8/lib/vegas/runner.rb:159:in `check_for_running'
from /Users/danishkhan/.rvm/gems/ree-1.8.7-2011.03/gems/vegas-0.1.8/lib/vegas/runner.rb:104:in `start'
from /Users/danishkhan/.rvm/gems/ree-1.8.7-2011.03/gems/vegas-0.1.8/lib/vegas/runner.rb:77:in `initialize'
from /Users/danishkhan/.rvm/gems/ree-1.8.7-2011.03/gems/taskwarrior-web-0.0.5/bin/task-web:9:in `new'
from /Users/danishkhan/.rvm/gems/ree-1.8.7-2011.03/gems/taskwarrior-web-0.0.5/bin/task-web:9
from /Users/danishkhan/.rvm/gems/ree-1.8.7-2011.03/bin/task-web:19:in `load'
from /Users/danishkhan/.rvm/gems/ree-1.8.7-2011.03/bin/task-web:19

JSON parse-error

When no tasks/completed tasks/projects etc. are present the app throws an exception instead of displaying an empty list.

left-leaning, finger-friendly, more menus and less crud animated mockup

I did this mockup a while ago to suggest a navigation metaphor that could be workable on a mobile screen. Keeping the important stuff left-justified and eliminating single-click actions (click-POOF-it's gone!) and using simple, contextual menus.

tweb_anim

Apologies for the bad art and the infuriating .gif animation.. you can often freeze it by hitting esc, or you can just watch it over, and over , and over ,

sorting by priority is an alpha-numeric sort

This refers to the sort that happens when you click the column header. To sort by priority is logically asking to go from highest priority to lowest (or reverse), but task-web currently does the sort by alpha, which is understandable but wrong.

Taskwarrior will sort H, M, L and none (or reverse) but I think that a stated low priority should indicate lower than "none". For that reason I think task-web should ideally sort H, M, none, L (or reverse)

Use parsable task --version instead of internal task _version which may be a git ref

When task is installed directly from git instead of from a released tarball, the internal 'task _version' reports the git ref of HEAD. This causes Versionomy.parse to choke, as it does not conform to any recognizable version numbering scheme, and besides which, even if it did not crash, a git ref would not be comparable with '1.9.2'.

Please apply the patch at https://gist.github.com/synrg/6408282 which fixes this issue.

It's not compatible with taskwarrior 1.9.2

It's not compatible with taskwarrior 1.9.2 (from Debian Squeeze repo). I see only this text in browser afrer task-web launch

application error
JSON::ParserError at /tasks/pending
387: unexpected token at 'Usage: task task add [tags] [attrs] desc... Adds a new task. task log [tags] [attrs] desc... Adds a new task that is already completed. task append ID [tags] [attrs] desc... Appends more description to an existing task. task prepend ID [tags] [attrs] desc... Prepends more description to an existing task. task annotate ID desc... Adds an annotation to an existing task. task denotate ID desc... Deletes an annotation of an existing task. task ID [tags] [attrs] [desc...] Modifies the existing task with provided arguments. task ID /from/to/g Performs substitution on the task description and annotations. The 'g' is optional, and causes substitutions for all matching text, not just the first occurrence. task ID Specifying an ID without a command invokes the 'info' command. task edit ID Launches an editor to let you modify all aspects of a task directly, therefore it is to be used carefully. task undo Reverts the most recent action. task shell Launches an interactive shell. task duplicate ID [tags] [attrs] [desc...] Duplicates the specified task, and allows modifications. task delete ID Deletes the specified task. task info ID Shows all data, metadata for specified task. task start ID Marks specified task as started. task stop ID Removes the 'start' time from a task. task done ID [tags] [attrs] [desc...] Marks the specified task as completed. task projects Shows a list of all project names used, and how many tasks are in each. task tags Shows a list of all tags used. task summary Shows a report of task status by project. task timesheet [weeks] Shows a weekly report of tasks completed and started. task history Shows a report of task history, by month. Alias to history.monthly. task history.annual Shows a report of task history, by year. task ghistory Shows a graphical report of task history, by month. Alias to ghistory.monthly. task ghistory.annual Shows a graphical report of task history, by year. task calendar [due|month year|year] Shows a calendar, with due tasks marked. task stats Shows task database statistics. task import Imports tasks from a variety of formats. task export Lists all tasks in CSV format. Alias to export.csv task export.ical Lists all tasks in iCalendar format. task color [sample] Displays all possible colors, or a sample. task version Shows the task version number. task show [all | substring] Shows the entire task configuration variables or the ones containing substring. task config [name [value | '']] Add, modify and remove settings in the task configuration. task help Shows the long usage text. task active [tags] [attrs] desc... Lists active tasks matching the specified criteria task all [tags] [attrs] desc... Lists all tasks matching the specified criteria task completed [tags] [attrs] desc... Lists completed tasks matching the specified criteria task list [tags] [attrs] desc... Lists all tasks matching the specified criteria task long [tags] [attrs] desc... Lists all task, all data, matching the specified criteria task ls [tags] [attrs] desc... Minimal listing of all tasks matching the specified criteria task minimal [tags] [attrs] desc... A really minimal listing task newest [tags] [attrs] desc... Shows the newest tasks task next [tags] [attrs] desc... Lists the most urgent tasks task oldest [tags] [attrs] desc... Shows the oldest tasks task overdue [tags] [attrs] desc... Lists overdue tasks matching the specified criteria task recurring [tags] [attrs] desc... Lists recurring tasks matching the specified criteria task waiting [tags] [attrs] desc... Lists all waiting tasks matching the specified criteria Documentation for task can be found using 'man task', 'man taskrc', 'man task-tutorial', 'man task-color', 'man task-faq' or at http://taskwarrior.org]'

file: common.rb
location: parse
line: 148

BACKTRACE

(expand)

JUMP TO: GET POST COOKIES ENV

/home/user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/json/common.rb in parse
    # the default.
    # * *create_additions*: If set to false, the Parser doesn't create
    # additions even if a matching class and create_id was found. This option
    # defaults to true.
    # * *object_class*: Defaults to Hash
    # * *array_class*: Defaults to Array
    def parse(source, opts = {})
    Parser.new(source, opts).parse
    end
    # Parse the JSON document _source_ into a Ruby data structure and return it.
    # The bang version of the parse method defaults to the more dangerous values
    # for the _opts_ hash, so be sure only to parse trusted _source_ documents.
    #
    # _opts_ can have the following keys:
/home/user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/json/common.rb in parse
    Parser.new(source, opts).parse
/home/user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb in service
    si.service(req, res)
/home/user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb in run
    server.service(req, res)
/home/user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/server.rb in block in start_thread
    block ? block.call(sock) : run(sock)

GET

No GET data.
POST

No POST data.
COOKIES

No cookie data.
Rack ENV
Variable Value
GATEWAY_INTERFACE
CGI/1.1
HTTP_ACCEPT
text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
HTTP_ACCEPT_ENCODING
gzip, deflate
HTTP_ACCEPT_LANGUAGE
ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_CACHE_CONTROL
max-age=0
HTTP_CONNECTION
keep-alive
HTTP_HOST
localhost:5678
HTTP_USER_AGENT
Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1
HTTP_VERSION
HTTP/1.1
PATH_INFO
/tasks/pending
QUERY_STRING
REMOTE_ADDR
127.0.0.1
REMOTE_HOST
localhost
REQUEST_METHOD
GET
REQUEST_PATH
/tasks/pending
REQUEST_URI
http://localhost:5678/tasks/pending
SCRIPT_NAME
SERVER_NAME
localhost
SERVER_PORT
5678
SERVER_PROTOCOL
HTTP/1.1
SERVER_SOFTWARE
WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20)
rack.errors

Object:0x000000016a13b8

rack.input

StringIO:0x00000001547490

rack.logger

<Rack::NullLogger:0x0000000190c378 @app=#<Rack::Protection::FrameOptions:0x0000000190c490 @app=#<Rack::Protection::IPSpoofing:0x0000000190c580 @app=#<Rack::Protection::JsonCsrf:0x0000000190c670 @app=#<Rack::Protection::PathTraversal:0x0000000190c788 @app=#<Rack::Protection::XSSHeader:0x000000018fc540 @app=#<TaskwarriorWeb::App:0x0000000157f908 @default_layout=:layout, @app=nil, @template_cache=#<Tilt::Cache:0x0000000157f8e0 @cache={}>>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :xss_mode=>:block, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:drop_session, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :xss_mode=>:block, :frame_options=>:sameorigin, :except=>[:session_hijacking, :remote_token]}>>

rack.multiprocess
false
rack.multithread
true
rack.request.cookie_hash
{}
rack.request.query_hash
{}
rack.request.query_string
rack.run_once
false
rack.url_scheme
http
rack.version
[1, 1]
sinatra.error
<JSON::ParserError: 387: unexpected token at 'Usage: task task add [tags] [attrs] desc... Adds a new task. task log [tags] [attrs] desc... Adds a new task that is already completed. task append ID [tags] [attrs] desc... Appends more description to an existing task. task prepend ID [tags] [attrs] desc... Prepends more description to an existing task. task annotate ID desc... Adds an annotation to an existing task. task denotate ID desc... Deletes an annotation of an existing task. task ID [tags] [attrs] [desc...] Modifies the existing task with provided arguments. task ID /from/to/g Performs substitution on the task description and annotations. The 'g' is optional, and causes substitutions for all matching text, not just the first occurrence. task ID Specifying an ID without a command invokes the 'info' command. task edit ID Launches an editor to let you modify all aspects of a task directly, therefore it is to be used carefully. task undo Reverts the most recent action. task shell Launches an interactive shell. task duplicate ID [tags] [attrs] [desc...] Duplicates the specified task, and allows modifications. task delete ID Deletes the specified task. task info ID Shows all data, metadata for specified task. task start ID Marks specified task as started. task stop ID Removes the 'start' time from a task. task done ID [tags] [attrs] [desc...] Marks the specified task as completed. task projects Shows a list of all project names used, and how many tasks are in each. task tags Shows a list of all tags used. task summary Shows a report of task status by project. task timesheet [weeks] Shows a weekly report of tasks completed and started. task history Shows a report of task history, by month. Alias to history.monthly. task history.annual Shows a report of task history, by year. task ghistory Shows a graphical report of task history, by month. Alias to ghistory.monthly. task ghistory.annual Shows a graphical report of task history, by year. task calendar [due|month year|year] Shows a calendar, with due tasks marked. task stats Shows task database statistics. task import Imports tasks from a variety of formats. task export Lists all tasks in CSV format. Alias to export.csv task export.ical Lists all tasks in iCalendar format. task color [sample] Displays all possible colors, or a sample. task version Shows the task version number. task show [all | substring] Shows the entire task configuration variables or the ones containing substring. task config [name [value | '']] Add, modify and remove settings in the task configuration. task help Shows the long usage text. task active [tags] [attrs] desc... Lists active tasks matching the specified criteria task all [tags] [attrs] desc... Lists all tasks matching the specified criteria task completed [tags] [attrs] desc... Lists completed tasks matching the specified criteria task list [tags] [attrs] desc... Lists all tasks matching the specified criteria task long [tags] [attrs] desc... Lists all task, all data, matching the specified criteria task ls [tags] [attrs] desc... Minimal listing of all tasks matching the specified criteria task minimal [tags] [attrs] desc... A really minimal listing task newest [tags] [attrs] desc... Shows the newest tasks task next [tags] [attrs] desc... Lists the most urgent tasks task oldest [tags] [attrs] desc... Shows the oldest tasks task overdue [tags] [attrs] desc... Lists overdue tasks matching the specified criteria task recurring [tags] [attrs] desc... Lists recurring tasks matching the specified criteria task waiting [tags] [attrs] desc... Lists all waiting tasks matching the specified criteria Documentation for task can be found using 'man task', 'man taskrc', 'man task-tutorial', 'man task-color', 'man task-faq' or at http://taskwarrior.org]'>

You're seeing this error because you have enabled the show_exceptions setting.

JSON::ParserError at /projects/overview

On clicking the Projects button (right next to the Tasks button) I get a big page of back-trace page with the following;

387: unexpected token at 'Mismatched parentheses in expression]'

file: common.rb
location: parse
line: 148

BACKTRACE

(expand)

JUMP TO: GET POST COOKIES ENV

/home/djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/json/common.rb in parse
    Parser.new(source, opts).parse
/home/djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/json/common.rb in parse
    Parser.new(source, opts).parse
/home/djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb in service
    si.service(req, res)
/home/djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb in run
    server.service(req, res)
/home/djp/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/server.rb in block in start_thread
    block ? block.call(sock) : run(sock)

GET

No GET data.
POST

No POST data.
COOKIES

No cookie data.
Rack ENV
Variable Value
GATEWAY_INTERFACE
CGI/1.1
HTTP_ACCEPT
text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
HTTP_ACCEPT_CHARSET
ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING
gzip, deflate
HTTP_ACCEPT_LANGUAGE
en-us,en;q=0.5
HTTP_CONNECTION
keep-alive
HTTP_HOST
localhost:5678
HTTP_REFERER
http://localhost:5678/tasks/pending
HTTP_USER_AGENT
Mozilla/5.0 (Ubuntu; X11; Linux i686; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
HTTP_VERSION
HTTP/1.1
PATH_INFO
/projects/overview
QUERY_STRING
REMOTE_ADDR
127.0.0.1
REMOTE_HOST
localhost
REQUEST_METHOD
GET
REQUEST_PATH
/projects/overview
REQUEST_URI
http://localhost:5678/projects/overview
SCRIPT_NAME
SERVER_NAME
localhost
SERVER_PORT
5678
SERVER_PROTOCOL
HTTP/1.1
SERVER_SOFTWARE
WEBrick/1.3.1 (Ruby/1.9.3/2011-10-30)
rack.errors

Object:0x9661d78

rack.input

StringIO:0x9aa14c4

rack.logger

<Rack::NullLogger:0x946dff8 @app=#<Rack::Protection::FrameOptions:0x946e070 @app=#<Rack::Protection::IPSpoofing:0x946e0ac @app=#<Rack::Protection::JsonCsrf:0x946e0fc @app=#<Rack::Protection::PathTraversal:0x946e160 @app=#<Rack::Protection::XSSHeader:0x946e1b0 @app=#<TaskwarriorWeb::App:0x943c318 @default_layout=:layout, @app=nil, @template_cache=#<Tilt::Cache:0x943c304 @cache={}>>, @options={:reaction=>:default_reaction, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :xss_mode=>:block, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:default_reaction, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:default_reaction, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:default_reaction, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :except=>[:session_hijacking, :remote_token]}>, @options={:reaction=>:default_reaction, :logging=>true, :message=>"Forbidden", :encryptor=>Digest::SHA1, :session_key=>"rack.session", :status=>403, :allow_empty_referrer=>true, :xss_mode=>:block, :frame_options=>:sameorigin, :except=>[:session_hijacking, :remote_token]}>>

rack.multiprocess
false
rack.multithread
true
rack.request.cookie_hash
{}
rack.request.query_hash
{}
rack.request.query_string
rack.run_once
false
rack.url_scheme
http
rack.version
[1, 1]
sinatra.error

<JSON::ParserError: 387: unexpected token at 'Mismatched parentheses in expression]'>

You're seeing this error because you have enabled the show_exceptions setting.

Fails to install

When I do:

`grove@grove-laptop:~/.vim/bundle$ sudo gem install taskwarrior-web'

I get:

`Building native extensions. This could take a while...
ERROR: Error installing taskwarrior-web:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.9.1 extconf.rb
extconf.rb:1:in require': no such file to load -- mkmf (LoadError) from extconf.rb:1:in

'

Gem files will remain installed in /var/lib/gems/1.9.1/gems/rinku-1.5.1 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/rinku-1.5.1/ext/rinku/gem_make.out
'
I do have Vegas installed. Any ideas?

Grové

Unable to run behind Apache proxy/reverse proxy

I've just spent several hours trying to get to run this behind an Apache Proxy using a , but have had no success. I suspect the task-web hardcodes its urls relative to "/" and (maybe this is a sinatra issue) the 302 redirects keep stripping the "s" from "https" ( communication to the proxy is ssl-protected).

Perhaps there's a command-line argument or configuration directive somewhere which can be used to set the "base url" used by the application to something like "https://my.server.com/task-application" to which all URLs emitted from task-app would append to.

The apache config I tried was:

ProxyPassReverse /task-app/ http://localhost:5678/
ProxyHTMLURLMap http://localhost:5678 /task-app
<Location /task-app/>
  SSLRequireSSL
  AuthType Basic
  AuthName Private
  AuthUserFile /var/www/userf
  RequireUser jdoe
  ProxyHTMLURLMap / /task-app/
  RequestHeader unset Accept-Encoding
</Location>

As you can see, I am also using mod_proxy_html to attempt to fix the links being returned. This didn't work for the 302 redirects, but I feel like rewriting the HTML is a bit hackish, and task-web is probably the best place to handle this sort of thing. I also tried the proxy without mod_proxy_html, and that didn't work either.

If there is something I'm just not doing correctly in Apache, let this be a feature request for documetation, otherwise, it's a request to fix the URLs returned by task-web to allow a forced prefix for both HTML and HTTP headers.

adding new task fails with NoMethodError: undefined method `shellescape'

I installed Taskwarrior Web via

gem install taskwarrior-web

Adding a new task throws an exception. See the trace here: https://gist.github.com/3852936

I realize there is a module named shellwords on which this code seems to depend. However, I don't know how to check whether it is installed. I tried

gem install shellwords

which didn't find the package. Shouldn't

gem install taskwarrior-web

also install all dependencies?

My environment is Mac OS X 10.8 with ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.2.0], installed via

brew install ruby

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.