{"action":"opened","issue":{"url":"https://api.github.com/repos/idpaterson/alfred-wunderlist-workflow/issues/93","repository_url":"https://api.github.com/repos/idpaterson/alfred-wunderlist-workflow","labels_url":"https://api.github.com/repos/idpaterson/alfred-wunderlist-workflow/issues/93/labels{/name}","comments_url":"https://api.github.com/repos/idpaterson/alfred-wunderlist-workflow/issues/93/comments","events_url":"https://api.github.com/repos/idpaterson/alfred-wunderlist-workflow/issues/93/events","html_url":"https://github.com/idpaterson/alfred-wunderlist-workflow/issues/93","id":133968068,"number":93,"title":"Improve wl:command syntax with substring matching","user":{"login":"idpaterson","id":507058,"avatar_url":"https://avatars.githubusercontent.com/u/507058?v=3","gravatar_id":"","url":"https://api.github.com/users/idpaterson","html_url":"https://github.com/idpaterson","followers_url":"https://api.github.com/users/idpaterson/followers","following_url":"https://api.github.com/users/idpaterson/following{/other_user}","gists_url":"https://api.github.com/users/idpaterson/gists{/gist_id}","starred_url":"https://api.github.com/users/idpaterson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/idpaterson/subscriptions","organizations_url":"https://api.github.com/users/idpaterson/orgs","repos_url":"https://api.github.com/users/idpaterson/repos","events_url":"https://api.github.com/users/idpaterson/events{/privacy}","received_events_url":"https://api.github.com/users/idpaterson/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/idpaterson/alfred-wunderlist-workflow/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"idpaterson","id":507058,"avatar_url":"https://avatars.githubusercontent.com/u/507058?v=3","gravatar_id":"","url":"https://api.github.com/users/idpaterson","html_url":"https://github.com/idpaterson","followers_url":"https://api.github.com/users/idpaterson/followers","following_url":"https://api.github.com/users/idpaterson/following{/other_user}","gists_url":"https://api.github.com/users/idpaterson/gists{/gist_id}","starred_url":"https://api.github.com/users/idpaterson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/idpaterson/subscriptions","organizations_url":"https://api.github.com/users/idpaterson/orgs","repos_url":"https://api.github.com/users/idpaterson/repos","events_url":"https://api.github.com/users/idpaterson/events{/privacy}","received_events_url":"https://api.github.com/users/idpaterson/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/idpaterson/alfred-wunderlist-workflow/milestones/5","html_url":"https://github.com/idpaterson/alfred-wunderlist-workflow/milestones/0.6","labels_url":"https://api.github.com/repos/idpaterson/alfred-wunderlist-workflow/milestones/5/labels","id":428820,"number":5,"title":"0.6","description":"Focuses on interacting with Wunderlist at the task level based on tasks already in Wunderlist. Potential features may include completing, modifying, and reorganizing tasks.","creator":{"login":"idpaterson","id":507058,"avatar_url":"https://avatars.githubusercontent.com/u/507058?v=3","gravatar_id":"","url":"https://api.github.com/users/idpaterson","html_url":"https://github.com/idpaterson","followers_url":"https://api.github.com/users/idpaterson/followers","following_url":"https://api.github.com/users/idpaterson/following{/other_user}","gists_url":"https://api.github.com/users/idpaterson/gists{/gist_id}","starred_url":"https://api.github.com/users/idpaterson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/idpaterson/subscriptions","organizations_url":"https://api.github.com/users/idpaterson/orgs","repos_url":"https://api.github.com/users/idpaterson/repos","events_url":"https://api.github.com/users/idpaterson/events{/privacy}","received_events_url":"https://api.github.com/users/idpaterson/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":1,"state":"open","created_at":"2013-09-16T17:05:28Z","updated_at":"2016-02-16T12:26:54Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2016-02-16T12:26:54Z","updated_at":"2016-02-16T12:26:54Z","closed_at":null,"body":"It is not particularly convenient to fully type out `wl:search something` to find tasks. Version 0.6 adds at least three more handlers, so this needs to be improved. Here is the current state of command routing in the workflow:\r\n\r\n- The colon (:) character was chosen arbitrarily\r\n- The colon character requires pressing the <kbd>Shift</kbd> key, which is not convenient\r\n- After typing `wl:search`, one might attempt <kbd>Option</kbd>+<kbd>delete</kbd> to get back to `wl:`, but this does not work since the colon does not break the word\r\n- Handlers are selected by exact match against the full command, including the colon character\r\n- Attaching the command immediately after `wl` (i.e. no space between) avoids any conflicts with task entry\r\n\r\nAfter improvements:\r\n\r\n- The separator will be optional and any non-word character can be used (e.g. `wl.search`, `wlsearch`)\r\n- The workflow will use a hyphen (-) for autocompletion (e.g. `wl-task 28713804 `)\r\n- The hyphen, should the user choose to type it, does not require pressing the <kbd>Shift</kbd> key\r\n- After typing a command like `wl-search`, <kbd>Option</kbd>+<kbd>delete</kbd> will get you back to `wl-` ready for the next command\r\n- When a command is provided, the first matching handler will be used, allowing a single letter to represent a command\r\n- I will attempt to keep naming of commonly-used commands distinct, for example `wl-due` rather than `wl-today` since the latter would conflict with `wl-task` when the user types `wlt`. `wld` will be the quickest way to see tasks due today\r\n- The command must still be attached immediately after `wl`"}}