Skip to content
This repository has been archived by the owner on Mar 25, 2024. It is now read-only.

Commit

Permalink
Merge branch 'release/1.2.5'
Browse files Browse the repository at this point in the history
  • Loading branch information
smallhadroncollider committed May 24, 2018
2 parents b8794d1 + 536dc9a commit 6b5fdaa
Show file tree
Hide file tree
Showing 12 changed files with 152 additions and 102 deletions.
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@ A CLI kanban board/task manager for Mac and Linux
- `vim` style key-bindings
- Stored using Markdown
- Clean diffs for easy version control
- Support for sub-tasks
- Written in Haskell
- Support for sub-tasks and due dates
- Trello board imports

![Demo](https://github.com/smallhadroncollider/taskell/blob/img/demo.gif?raw=true)
Follow [@taskellcli](https://twitter.com/taskellcli) on Twitter for updates

![Demo](https://taskell.app/img/demo.gif)

<a href="https://www.buymeacoffee.com/shc" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>

Expand Down Expand Up @@ -138,6 +140,10 @@ column_width = 30
; for both sides, so 3 would give a gap of 6 between two columns
column_padding = 3

; the icon to use when a task has a description
; the default icon may not display on all systems
description_indicator = ""

[markdown]
; the markdown to start a title line with
title = "##"
Expand Down
2 changes: 1 addition & 1 deletion docs/html/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: taskell
tagline: Command-line Kanban board/task managment
baseurl: ""
locale: "en"
version: 1.2.4
version: 1.2.5
destination: _site/public
exclude: [deployment, Capfile, log, Gemfile, Gemfile.lock]

Expand Down
Binary file added docs/html/img/demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 17 additions & 3 deletions docs/html/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ A CLI kanban board/task manager for Mac and Linux
- Support for sub-tasks
- Written in Haskell

![Demo](https://github.com/smallhadroncollider/taskell/blob/img/demo.gif?raw=true)
Follow [@taskellcli](https://twitter.com/taskellcli) on Twitter for updates

![Demo](/img/demo.gif)

<a href="https://www.buymeacoffee.com/shc" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>

Expand All @@ -32,6 +34,8 @@ brew install smallhadroncollider/taskell/taskell

There are usually bottles (binaries) available for High Sierra and Sierra. If these are not available for your computer, Homebrew will build Taskell from scratch using [Stack](https://docs.haskellstack.org/), which can take a while, particularly on older machines. Occasionally the build fails the first time, but usually works on a second attempt.

**Note**: Until taskell is [supported by `homebrew-core`](https://github.com/Homebrew/homebrew-core/pull/27703), the Homebrew formula will not be updated for patch updates (e.g. 1.1.0 to 1.1.1), only minor updates (e.g. 1.1.0 to 1.2.0).

### Debian/Ubuntu

[A `.deb` package is available for Debian/Ubuntu](https://github.com/smallhadroncollider/taskell/releases). Download it and install with `dpkg -i <package-name>`.
Expand Down Expand Up @@ -90,11 +94,15 @@ Make sure you have permission to view the Trello board, otherwise you'll get an
### Limitations

- This is a one-off procedure: it effectively imports a Trello board to taskell
- Only list and card titles are supported
- Currently imports:
- Lists
- Cards
- Card descriptions
- Card due dates
- Card checklists (merged into one list per card)

### Plans

- Better support for Card details (e.g. sub-tasks, due dates)
- Full syncing with Trello: effectively using taskell as a CLI Trello front-end


Expand Down Expand Up @@ -137,6 +145,10 @@ column_width = 30
; for both sides, so 3 would give a gap of 6 between two columns
column_padding = 3

; the icon to use when a task has a description
; the default icon may not display on all systems
description_indicator = ""

[markdown]
; the markdown to start a title line with
title = "##"
Expand Down Expand Up @@ -206,6 +218,8 @@ See [roadmap.md](https://github.com/smallhadroncollider/taskell/blob/develop/roa

Please check the [roadmap.md](https://github.com/smallhadroncollider/taskell/blob/develop/roadmap.md) before adding any bugs/feature requests to Issues.

Anyone is welcome to contribute to the project, but please read through [CONTRIBUTING.md](https://github.com/smallhadroncollider/taskell/blob/master/CONTRIBUTING.md) and make sure that you agree with the [Code of Conduct](https://github.com/smallhadroncollider/taskell/blob/master/CODE_OF_CONDUCT.md) before getting involved.

---

## Acknowledgements
Expand Down
2 changes: 1 addition & 1 deletion package.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: taskell
version: '1.2.4.0'
version: '1.2.5.0'
category: CLI
author: Mark Wales
maintainer: [email protected]
Expand Down
118 changes: 61 additions & 57 deletions roadmap.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,19 @@
## Misc.

- Add Twitter links
* Website
* Github
- Automate website publishing when doing a new build
> Should automatically update the `_config.yml` file, build the website, then deploy it
- Move image to taskell.app
> The demo image should live on the taskell.app server, rather than being on an orphan branch on GitHub
* Move image
* Update site
* Update GitHub README.md
* Remove img branch
- Add more information to taskell.app
> Update taskell.app to have more than just README.md contents. Use cases, more images, examples, etc.
* Use case example: checklist
* Use case example: Git controlled tasks
* [ ] Use case example: checklist
* [ ] Use case example: Git controlled tasks

## Refactoring

- Use a Makefile instead of bash script
- Update Task field naming
* Task: description -> name/title
* Task: summary -> description
* ~UI.Modal.SubTasks -> UI.Modal.Detail~
* [ ] Task: description -> name/title
* [ ] Task: summary -> description
* [x] UI.Modal.SubTasks -> UI.Modal.Detail
- Break up State module
- Use a map in Actions to tidy things up/add custom key support
- Avoid having to normalise the state?
Expand All @@ -39,24 +30,18 @@
- Very long words should get hyphenated
> The cursor gets lost if a word is longer than the line - URLs in particular can cause issues
- Help modal needs to wrap and scroll
- No obvious way to know if there are more items in a list off-screen
> Lowest item should be "..." if more items
- Task description not visible on shorter screens
> Visibility only applies to scroll items, so description is often hidden if the screen height is small
- Modal boxes shouldn't be full height unless they need to be
- Up and down in search gets a bit lost
- Caching doesn't clear properly when using `o` and `O`
- Multiple spaces in a line don't show up as more than one, but are saved as more than one
- The isBlank check on tasks could potentially delete a task with no description but which does have sub-tasks
- Task description should be visible by default in task detail
> Visibility should be on the description by default?
- No obvious way to know if there are more items in a list off-screen
> Lowest item should be "..." if more items
## Features

- Check times work no matter what timezone
- Sort out Homebrew forumula
> Make the necessary changes so that taskell can be put on the homebrew-core repository
* Find someone to submit it
* Use `install_cabal_package`
* Use `depends_on "cabal-install" => :build`
- Add custom key support
- Show filename somewhere
- Editable title?
Expand All @@ -65,20 +50,27 @@
- URL field - plus config to run specific command when selected (e.g. `open -a Chrome.app #{url}`)
- Redo functionality
- Make trello token UX better
* Open link automatically?
* Ask for token and save to ini file automatically
* [ ] Open link automatically?
* [ ] Ask for token and save to ini file automatically
- Reordering sub-tasks
- Add Trello syncing
- Item count for lists?
> Show the numbers of items in a list next to its title
- Always show list title
> Floating list titles - so you can always see what list you're in
- Add description status indicator option to config.ini
> Part of the themeing should allow changing to different icon - might not work in all fonts
- Duplicate task with `+`
- Some way to just see tasks with due dates
* [ ] Sort by date or filter by urgency?
- Ability to load a taskell file with custom config.ini settings
> Either command line arguments for settings or just a `-c other.ini` command
## In Progress

- Sort out Homebrew forumula
> Make the necessary changes so that taskell can be put on the homebrew-core repository
* [ ] Find someone to submit it
* [x] Use `install_cabal_package`
* [x] Use `depends_on "cabal-install" => :build`

## Done

Expand Down Expand Up @@ -158,18 +150,18 @@
- On `?` show keyboard commands
- Remove size from state
- Sub-lists
* ~Scrolling in sub-tasks~
* ~Press Enter to create next~
* ~Word wrapping~
* ~Searching~
* ~Delete items~
* [x] Scrolling in sub-tasks
* [x] Press Enter to create next
* [x] Word wrapping
* [x] Searching
* [x] Delete items
- No cursor in sub-task view
* ~Single line~
* ~Multi-line~
* [x] Single line
* [x] Multi-line
- Customisable Markdown format
* ~Change top level headers~
* ~Change top level list item: e.g. to H3 instead of li~
* ~Change sub-list: e.g. from " *" to "-"~
* [x] Change top level headers
* [x] Change top level list item: e.g. to H3 instead of li
* [x] Change sub-list: e.g. from " *" to "-"
- Feels sluggish in sub-task view - cache main view?
- Leaving search only refreshes current list
- Display a warning if any line of the file could not be parsed - otherwise could lead to data loss
Expand All @@ -186,37 +178,49 @@
- Editing list title doesn't always have visibility
- Left/Right arrow keys in insert mode
- Share code between tasks and sub-tasks lists?
* ~Move wrap into Field widget~
* ~Use Field for search~
* ~Use Field for sub-tasks~
* ~Use Field for titles~
* ~Use Field for tasks~
* ~Make sure `C` works~
* [x] Move wrap into Field widget
* [x] Use Field for search
* [x] Use Field for sub-tasks
* [x] Use Field for titles
* [x] Use Field for tasks
* [x] Make sure `C` works
- Copy and paste
* ~List titles~
* ~Search~
* [x] List titles
* [x] Search
- Multiple spaces at the beginning of a line can break cursor positioning
- Task body - e.g. as well as sub lists, have a longer description
- Indicator for when a task has a description
> Use ≡?
- Pressing `Esc` when entering task description shouldn't reset it
- Better Trello import errors - e.g. auth vs. parsing issues
* ~Error on parse issues~
* ~Error on Auth issues~
* [x] Error on parse issues
* [x] Error on Auth issues
- Add due dates to tasks with `@`
* ~Render due dates~
* ~Editable due dates~
* [x] Render due dates
* [x] Editable due dates
- Trello dates need to take current timezone into account
> Trello gives dates in UTC, but need to display them in the current timezone. Deadlines should also take timezones into account if necessary.
- Move to column only works for columns before the one you're in
- Add Trello import
* ~Basic trello import~
* ~Add due date support~
* ~Add sub-tasks support~
* ~Add card summary support~
* [x] Basic trello import
* [x] Add due date support
* [x] Add sub-tasks support
* [x] Add card summary support
- Improve Trello checklist import
* ~Take checklist fetch errors into account~
* ~Refactor code~
* ~Use Reader to pass around trello token?~
* [x] Take checklist fetch errors into account
* [x] Refactor code
* [x] Use Reader to pass around trello token?
- Should change list numbering to letters when in move list mode
- GitHub checklist support - []/[x]
- Caching doesn't clear properly when using `o` and `O`
- Add description status indicator option to config.ini
> Part of the themeing should allow changing to different icon - might not work in all fonts
- Add Twitter links
* [x] Website
* [x] Github
- Move image to taskell.app
> The demo image should live on the taskell.app server, rather than being on an orphan branch on GitHub
* [x] Move image
* [x] Update site
* [x] Update GitHub README.md
* [x] Remove img branch
20 changes: 18 additions & 2 deletions src/App.hs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import Graphics.Vty.Input.Events (Event(..))
import Data.Taskell.Lists (Lists)
import Data.Taskell.Date (currentDay)
import Events.Actions (event)
import Events.State (State, Mode(..), ModalType(..), continue, path, mode, io, current, lists)
import Events.State (continue, path, mode, io, current, lists, countCurrent)
import Events.State.Types (State, Mode(..), ModalType(..), InsertMode(..), InsertType(..))
import IO.Config (Config, layout, generateAttrMap)
import IO.Taskell (writeData)
import UI.Draw (draw, chooseCursor)
Expand All @@ -28,6 +29,7 @@ next config s = case io s of
Just ls -> invalidateCache >> liftIO (store config ls s) >>= Brick.continue
Nothing -> Brick.continue s

-- cache clearing
clearCache :: State -> EventM ResourceName ()
clearCache state = do
let (li, ti) = current state
Expand All @@ -41,26 +43,39 @@ clearAllTitles state = do
void . sequence $ invalidateCacheEntry . RNList <$> range
void . sequence $ invalidateCacheEntry . (\x -> RNTask (x, -1)) <$> range

clearList :: State -> EventM ResourceName ()
clearList state = do
let (list, _) = current state
let count = countCurrent state
let range = [0 .. (count - 1)]
invalidateCacheEntry $ RNList list
void . sequence $ invalidateCacheEntry . (\x -> RNTask (list, x)) <$> range

-- event handling
handleVtyEvent :: Config -> State -> Event -> EventM ResourceName (Next State)
handleVtyEvent config previousState e = do
let state = event e previousState

case mode previousState of
Search _ _ -> invalidateCache
(Modal MoveTo) -> clearAllTitles previousState
(Insert ITask ICreate _) -> clearList previousState
_ -> return ()

case mode state of
Shutdown -> Brick.halt state
(Modal MoveTo) -> clearAllTitles state >> next config state
(Insert ITask ICreate _) -> clearList state >> next config state
_ -> clearCache previousState >> clearCache state >> next config state

-- App code
handleEvent :: Config -> State -> BrickEvent ResourceName e -> EventM ResourceName (Next State)
handleEvent _ state (VtyEvent (EvResize _ _ )) = invalidateCache >> Brick.continue state
handleEvent config state (VtyEvent ev) = handleVtyEvent config state ev
handleEvent _ state _ = Brick.continue state


-- | Runs when the app starts
-- Adds paste support
appStart :: State -> EventM ResourceName State
appStart state = do
vty <- getVtyHandle
Expand All @@ -69,6 +84,7 @@ appStart state = do
liftIO $ setMode output BracketedPaste True
return state

-- | Sets up Brick
go :: Config -> State -> IO ()
go config initial = do
attrMap' <- const <$> generateAttrMap
Expand Down
2 changes: 1 addition & 1 deletion src/Config.hs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import ClassyPrelude
import Data.FileEmbed (embedFile)

version :: Text
version = "1.2.4"
version = "1.2.5"

usage :: Text
usage = decodeUtf8 $(embedFile "templates/usage.txt")
1 change: 1 addition & 0 deletions src/Events/State.hs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ module Events.State (
write,
io,
path,
countCurrent,

-- record accesors
mode,
Expand Down
Loading

0 comments on commit 6b5fdaa

Please sign in to comment.