Giter VIP home page Giter VIP logo

obsidian-card-board's Introduction

Obsidian CardBoard Plugin

License GitHub release (latest by date) Obsidian Downloads

An Obsidian plugin to make working with tasks a pleasure (hopefully anyway).

  • Uses regular tasks/subtasks wherever they are in your vault.
  • Shows them on kanban style boards.
  • Two column types supported (any combination can be on a single board):
    • Date based (with daily/periodic notes support).
    • Tag based (use #tags to define columns).

New

  • No new features: I have split out some of the internal workings in preparation for drag and drop - hopefully managed this without introducing any bugs or performance issues.

Installation

Please install via the regular Community Plugins setting tab within Obsidian.

date based board screenshot

Use

When installed, you can launch the plugin:

  • using the icon in the app ribbon (see below), or
  • using the Command Pallete command (which allows you to open a specific board).

app ribbon icon

If you have no boards defined, you should get a dialog asking you to add a new board. You can choose from one of 3 board types to get going:

  • Date based: looks like the main screenshot above.
  • Tag based: includes the built-in tag based columns. You will need to add the tag columns you wish to include.
  • Empty board: has no pre-defined columns.

These are just to get you started. You can mix date and tag based columns on the same board: use the plugin's settings to add/edit/re-order/delete columns.

Cards

Any task in your vault can appear as a card in a column on a board. In order to do this, it must:

  • Be in a markdown file.
  • Not be indented - it must be at the start of the line.
  • Use one of the commonmark supported unordered list formats:
    • - [ ] Task title
    • * [ ] Task title
    • + [ ] Task title

What appears on the card depends on what your task looks like:

  • Anything that is indented under a task will appear in the body of the task.
    • Indented tasks will appear as subtasks (all subtasks are grouped together).
    • Indented text will appear as notes.
  • #tags on the line of the task or included in the tags property of the note containing the task will appear at the top of the card
  • Due date (if given) will appear at the bottom of the card.

So, if you had the following in one of your markdown files:

- [ ] run erands @due(2022-12-02)
  - [x] do shopping #town
  - [ ] wash car #home/outside
  - [ ] cook dinner #home/kitchen

  perhaps I should look up some [[example_tasks/recipes|recipes]] first

  - [ ] do something with a long title that will truncate when displayed
  - [ ] go to bed

It will look something like this on a card on your board:

example card

Marking a task as complete

If you mark a task as complete on the board it will be marked as completed in the markdown file (and vice-versa). If you mark as complete on the board, a completion timestamp is appended to the task:

- [x] Task title @completed(2021-10-30T13:57:48)

See the compatibility section for details on how you can choose to use a format compatible with other plugins (or to choose not to add any completion text).

You can choose wether to use local or UTC time in completion timestamps via the plugin's settings (in the Global Settings section).

If you have subtasks and the parent task is tagged as an autocomplete task then the main task will be marked as complete when you tick off the final subtask:

- [ ] Task title @autocomplete(true)
  - [ ] Do this first
  - [ ] Do this next
  - [ ] Finally do this and you are done

Deleting a task

You can delete a task using the trash icon on the card. This will not actually delete the task from your vault, it simply surrounds it with markdown <del> tags:

<del>- [x] Task title</del>

Editing due date

You can change the due date of a task by right clicking on a card and selecting the only option currently available on the context menu.

You can enter the date directly in the input (uses YYYY-MM-DD format), use the calendar dropdown which will appear when you click in the input, or clear the date to remove the due date from the task.

Editing tasks (and hover preview)

Click on the edit icon to open the note containing the task. Cmd (or Ctrl on windows) hover over the icon for the normal Obsidian hover preview.

Card ordering in columns

The current behaviour for the different columns is:

  • Completed: has the most recently completed at the top (assuming they were marked as complete using the checkbox on the board).
  • Date & Tag columns are sorted by due date and then alphabetically within this.
  • other columns are sorted alphabetically.

Customising Tags

I have to recommend using the wonderful Colorful Tag plugin as this will allow you to style tags on your markdown pages as well as in CardBoard.

If you would like to "roll your own", you can using a CSS snippet containing something along the lines of:

.card-board-view a.tag[href="#foo/bar"] {
  background-color: HotPink;
  color: DimGrey;
}

This will style the tag #foo/bar wherever it appears in the CardBoard view with your favorite color for foo/bars, which just has to be HotPink :)

Customising Card Highlight Color

By default cards with due dates will have a colored bar on their left hand side to give a visual indication of when they are due. These colours are dependent on the theme you are using. There are two way to over-ride this, both of which require the use of css snippets.

If you wish to stick with the due date based behaviour, but would like to choose the colors, you can use a snippet along these lines:

/* overdue */
.card-board-view .card-board-card-highlight-area.critical {
  background-color: red;
}

/* due today */
.card-board-view .card-board-card-highlight-area.important {
  background-color: orange;
}

/* due after today */
.card-board-view .card-board-card-highlight-area.good {
  background-color: green;
}

If you wish to set the color based on tags, then you can use a snippet such as:

.card-board-card[data-tags~=status-doing] .card-board-card-highlight-area {
  background-color: yellow;
}

Which will set the color to yellow for all cards with a tag #status/doing. This will override any date based highlighting. If you use nested tags, you will need to replace the / character with a - (as in the example above). If the card has multiple tags which you have set different colors for, the last one read from your snippets will take priority. Tag based colors will be applied for tags even if the tags are hidden.

Boards

Boards are simply a collection of columns, which are defined either by:

  • Dates (with daily/periodic notes support).
  • Tags (uses #tags to define the column).

Adding boards

add new board

Use the + icon on the settings dialog.

Reordering boards

Boards can be reordered by dragging their tabs on the main view or dragging their name in the list on the settings pane.

Date columns

You will get the best out of these if you are using the (core) Daily Notes or the (community) Periodic Notes plugins, as any tasks you place on a daily note will be assigned to the day of the note. If you do not want this behaviour you can turn it off in the Global Settings pane, then tasks on daily notes pages will not have a due date unless one is specified on the line of the task.

filters

You can assign a date to any task using the format:

- [ ] My task @due(2021-10-31)

Cardboard also understands the format used by Dataview and Tasks:

- [ ] My task [due:: 2021-10-31]
- [ ] My task ๐Ÿ“… 2021-10-31

A due date specified on a task line will overide any date derived from a task being on a daily note page.

You can turn off the due date for a specific task on a daily note page:

- [ ] My task @due(none)

Overdue tasks

In the default Date Board, these will appear in the Today column above any any tasks that are actually due today.

The idea being that it will get steadily more annoying to see what you were planning to do today if you have a lot of incomplete tasks from previous days, (hopefully) encouraging you to do something about them; like do them or move them to a future date if you want to schedule them later.

If you prefer to have overdue tasks in their own column you can configure this in the settings:

date board column settings

This shows the 3 types of date based columns you can use: Before, Between, and After. Each of these use relative dates, where 0 means today, so:

  • Between -1 and -1 means yesterday
  • Between 0 and 0 means today
  • Between 1 and 1 means tomorrow
  • Before 0 means before today (overdue)
  • After 1 means after tomorrow

The only other date based column you can include is an Undated column, which will include all tasks which have no due date. You cannot have more than one Undated column on a board.

Tag columns

If you give your tasks tags, you can use these to set up tag columns. So if you have the tags #status/backlog, #status/triaged, status/blocked, #status/doing, you can define a board that shows tasks tagged with these in separate columns:

tag board settings

You do not need to inclue the # character at the start of the tag when defining which tag shold be used for a column.

Subtags

If you specify a tag with a trailing / in the settings for the column, then the column will contain all tasks which have subtags of the tag, as well as those with the base tag.

Sub-tasks

Tasks with sub-tasks that have matching tags will also appear on the board.

Tag Properties

If you want to give all the tasks on a page the same tag, you can put it in the properties of a note:

---
tags:
  - recipe
  - cooking
---

# Project 1

- [ ] this task will automatically have the recipe and cooking tags

Hiding Tags

If you don't want to see the tags used to configure the board's columns on the cards, you can show/hide them in the settings. If you choose not to show the column tags, this will hide the tags defined for columns wherever cards are on the board. Only tags that exactly match those used in the settings will be hidden.

The other types of tag based columns are:

  • Other Tags: include any tasks with tags that are not in one of the defined tag-based columns.
  • Untagged: for any tasks which have no tags.

You cannot have more that one of each of these on a board.

Completed column

You can include a complted column on your board. This will only include completed tasks that would have appeared in one of the other columns had it not been completed; i.e. it only contains tasks that belong on the board.

Where you have columns based on tags and a task is shown in a column due to tags on sub-tasks it will only show in that column if those subtasks are incomplete. So the following task is shown only in the Barney column as the Wilma sub-task is complete:

wilma_barney

This does mean that a card can appear in the completed column even if the top level task is not complete, e.g for the above example if the Barney task is marked as complete the card will move to the Completed column:

wilma_barney_completed

You cannot have more than one Completed column on a board.

Board Filters

You can filter which tasks appear on each board in the board settings. There are 3 types of filter you can use: file, path, and #tags (which includes tags in note properties). You can use any combination of these on a per-board basis.

You can also:

  • Choose whether to use the filters as an allow or a deny list.
  • Choose if you want any tags specified as a filter to be shown or hidden on cards on the board.

Filters are applied before tasks are placed onto a board:

filters

Settings

Plugin settings are accessible from the plugin view itself, via the settings icon above the board to the left of the tabs. You can:

  • Choose files and paths you do not want to load any tasks from.
  • Create new boards (using the + icon next to the Boards heading).
  • Configure your boards.
  • Customize the default names of the built-in columns.
  • Add/remove/edit/reorder columns.
  • Delete boards.
  • Choose whether to use Cardboard, Dataview or Tasks format for marking task completion.
  • Choose whether to use local or UTC time when marking tasks as completed.
  • Choose to not use the date of daily notes files as the due date for tasks.

The settings for your boards are saved in the

.obsidian/plugins/card-board/data.json

file inside your vault. You may see some older versions (e.g. data.0.5.0.json) in there as well. These are saved when the internal version of the settings file is updated, just in case something goes wrong! If you want to ensure you never loose your CardBoard settings then do ensure that your .obsidian directory is backed up.

Other Plugin Compatibility

Cardboard is compatible with the Due and Completion date formats used in both Tasks and Dataview. Due dates from both of these are understood with no configuration.

When marking a task as complete, you can choose which format to use via CardBoard's Global Settings:

task completion format setting panel

You can also set this value to None if you don't want any completion date or timestamp adding to a task on completion. This is not recommended as if you do this, the task may well not appear at (or near) the top of any completed column you have on your board when you mark it as complete. CardBoard uses this time or date so it knows which are the most recently completed tasks so they can be shown at the top of the column.

Dataview Plugin

- [ ] todo in Dataview format [due:: 2021-10-30] [completion:: 2021-10-29]

Will be read as a task with a due date of 30th Oct 2021 which was completed a day early.

Cardboard will honour the task related settings in Dataview, so if you set Dataview to use emoji completion or a different "completion" string (such as "done") then CardBoard will mirror this.

Tasks Plugin

- [ ] todo in Tasks format ๐Ÿ“… 2021-10-30 โœ… 2021-10-29

Will be read as a task with a due date of 30th Oct 2021 which was completed a day early.

Recurring Tasks

CardBoard does not understand recurring tasks, even if you have set it up to use Tasks format for marking tasks as complete. Checking off a recurring task from the CardBoard board view will add the completion date in Tasks format but will not generate a new instance of the recurring task.

To get the correct behavior for recurring tasks, click the edit icon on the card to go to the file where the task is written, and then use the "Tasks: Toggle Done" command or click the checkbox from there.

Scaling Board Text and Column Sizes

Use the following css snippet to customize these:

.card-board-view {
  font-size: 1em;
}

.card-board-view .card-board-column {
  width: 20em;
}

You can alter the general size of the contents of the cards by changng the font-size, and/or set the width of the columns by changing the width setting.

Limitations

  • Might not work that great on large vaults (as it parses all markdown files at startup). If you use folders in your vault and there are folders which you know will never contain any tasks you wish to use with CardBoard you can configure CardBoard to ignore these.
  • Might not work that great on large markdown files (as it parses all markdown files, and doesn't use any form of cache). If you know any large markdown files will never contain tasks you wish to use with Cardboard, you can add them to the ignore list in settings.
  • Might not be great on mobile (see previous, plus I haven't put any particular effort into making the interface mobile friendly - yet).

Alternatives

If the way that this works isn't for for you, there are plenty of other fabulous plugins you can use for task management in Obsidian, e.g. Checklist, Kanban, Reminder, Tasks, Projects, as well as the Tasks Calendar snippet. There are others too, see the wonderful Obsidian Plugin Stats site.

Contributing

I am working on this myself for now; it's my do-some-coding-when-I-have-some-time project so I am not accepting pull requests. However, if you want to mess around with the code then see contributing doc for more info on getting a dev environment set up and running.

If you have any thoughts, ideas, bugs n stuff:

obsidian-card-board's People

Contributors

darthmachina avatar roovo avatar stufro 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

obsidian-card-board's Issues

[Feature Request] Implement click on tags just like Obsidian

In Obsidian, tags are clickable and clicking on one open up the search pane with the tag as the search term. It would be nice to implement the same feature in CardBoard.

Functionally it should work exactly like Obsidian: open the search pane with the clicked tag being the search term: tag:#foo.

[Bug] Due dates incorrect when task pulled from Daily Page

Just noticed this one and it's getting late, I can add more detail later but wanted to submit this while it was fresh.

I have some tasks that I put on the daily page for November 2nd (titled 2021-11-02), but the date listed on the card says Due: Fri, Nov 1st. I'm guessing the Nov 1st thing is because of a timezone shift since I'm US Central so hours get subtracted, which would be from midnight on 11-02. However, I have no clue where the Fri is coming from.

Since it's after midnight here I created my Daily Page for today (2021-11-03), and the due date is showing Due: Sat, Nov 1st now. So the day of the week changed but not the date.

I am using the core Daily Notes plugin at the moment, though I do have Periodic Notes installed but not enabled.

Create options to change date format

Loving the design of your app.
I do second #11 to be able to drag and drop.

What i'd like to request is to be able to change the recognized scheduled date format for the tasks.
I have all my daily notes and calendar setup with a DD-MM system and it would be a schlep to have to go change all of them.

Example;
This is the current format;
[ ] This task to be done Next week @Due(2022-01-15)

Instead I'd like if possible;
[ ] This task to be done Next week @Due(15-01)

Or any other DD-MM-YY format.

Shot, thanks again for your great app man!

Display task context on card

It would be helpful for me to have the task context on the card The Tasks plugin uses the text Page > Section. For my use case I don't need Section but I could see that being useful. This could potentially replace the Edit icon if the context is a link to the page

Here is an mock up of what I mean:
image

Collapsible Columns

I'll start by saying this is probably a candidate for #42 :). Just wanted to get it out there.

It would be nice to be able to "hide" a column. My task workflow includes a number of columns, not all of which are relevant all the time. It would be nice to be able to hide those columns but still have access to them if needed.

The mock-up has the idea of having an arrow by the heading which will hide the cards, narrow the column and rotate the title. Clicking the arrow again will put the column back to it's normal state.

If you're familiar with Trello at all this would duplicate the Chrome extension Collapsible Trello Lists

image

Limit Number of Subtasks Shown Option

I tend to break down my tasks to a fairly granular level, which means my subtask list can get pretty long. It would be nice to have the option to limit the number of subtasks shown on a card. If there is a limit set I would show the first n items in the subtask list with a line that indicates how many more there are.

It would be nice to have this be a configurable option to set the amount of items to limit to. Setting this to 0 could indicate that there is no limit which would mimic the current functionality.

Something like this, if the limit was set to 2:
image

[Bug] Same tag on two different subtasks gets added to card twice

I like the idea of pulling in tags on subtasks so they appear on the card as a whole, but it looks like there is no duplicate detection. So adding the same tag onto multiple subtasks will add that tag to the card for each subtask where it's set. The tag should only be put on the card once and ignored any other time it's used.

In tech speak: the tags on the card should be a set and not a list so it won't allow duplicates.

Ask for confirmation if trying to complete a task that has open subtasks

It would be nice to have a warning dialog if a user completes a task that has open subtasks.

The dialog should ask what to do with the subtasks if the user decides to complete the task. The mock-up includes two variants depending on whether the option to just remove the subtasks should be included.

Don't ask again is included on the mock-up and that would skip the dialog in the future and default to whatever option the user chose to do for suubtasks. There should probably be an option in the settings to unset that choice so it would ask again on the next deletion. Or maybe a setting to control how subtasks are handled on deletion?

image

Parked Issue List (for wontfix's that I don't want to loose)

To stop the list of Issues from filling up with things that I don't plan on implementing at the moment - but that may be relevant later, I will mark them as wontfix and list them here, grouped together as/where necessary.

Card Contents

#4 : Show context (file, containing heading) on Card

Misc

#8 : could we do something with tagged blocks - not just restricting ourselves to tasks
#30 : Have the option to make cardboard open in the sidebar instead of the main window
#31 : Add new task from board

[Bug] Error in console if no data.json file exists on startup

An error appears in the console if CardBoard is started but no data.json file exists. This does not appear to affect the functionality in any way as one will created when the icon is clicked, though.

Uncaught (in promise) TypeError: Cannot read property 'data' of null
    at n.addCommands (eval at <anonymous> (app.js:1), <anonymous>:2:374270)
    at n.eval (eval at <anonymous> (app.js:1), <anonymous>:2:374068)
    at eval (eval at <anonymous> (app.js:1), <anonymous>:2:365406)
    at Object.eval [as next] (eval at <anonymous> (app.js:1), <anonymous>:2:365511)
    at i (eval at <anonymous> (app.js:1), <anonymous>:2:364250)

Support Dataview Metadata

It would be nice to be to tag other data on tasks (even custom), and with Dataview I think becoming the de facto standard I think supporting the inline field syntax would be cool to have. There are already a few fields that use @ syntax so not sure about what to do about those. Personally, I would want the option to use Dataview syntax for all task metadata as I use Dataview pretty extensively and it would be to be to query based on Due and Completed, etc.

I think as part of this it would be nice to have a section of the card dedicated to metadata (similar to how the Kanban plugin handles what they call "Linked Page Metadata". The mock-up includes Page which would be my solution for #4, although I don't like the name Page for it at the moment. Values should also support Markdown syntax, so bold, italics, wikilinks are clickable, etc.

Ideally anything that has the syntax [field:: value] would be picked up and displayed on the card. This would be either in the task itself or as an indented list item. The field text should be removed from the main text, and if the field was on an indented list item the list item should not be included in the notes if the field was the only thing on that line.

A nice-to-have feature (and maybe a separate issue), would be to have a board or global setting to have a list of Page-level Dataview fields that should be shown as well. Although I don't have any Page-level fields I would use at the moment.

Mock Up

image
I can't figure out icons in the tool I use for mock-ups, so E = Edit and T = Trash. I'm not proposing those change at all

Provide way to re-order boards

If multiple boards are defined, they appear in a tabbed interface ordered by creation date. Is it possible to permit re-ordering the tab display, either in the tab itself or in the settings panel?

[Tech Debt] Convert TaskItem.tags to be a Set

Right now the TaskItem.tags property is a List and duplicates are manually handled. This should be converted to be a Set so duplicates are automatically handled. This will help to prevent bugs since a Set properly models the desired behavior.

Will need to create a Set.Extra module to house all the the List functions in use in the code base.

Put CardBoard on sidebar with custom icon

This is one I'm not sure about but wanted to at least submit for discussion.

I'm wondering if it would be a good idea to have CardBoard be added to the sidebar on load instead of being one of the icons in the ribbon? Similar to how the Calendar plugin works when enabled. For me, I've dragged the page that's loaded onto the right sideboard and it seems to work really well. But it does just get the normal page icon instead of a dedicated one.

Huh, I thought it would limit you to just having it in a sidebar but I can drag the Calendar view onto the main board just fine. So, this would just be the default spot for it. And it would have a custom icon then as well which I think would be really nice.

[Feature Request] Overdue tasks?

I am not able to find the spot where the tasks I failed to accomplish yesterday and even before yesterday can be found? I would see a natural spot in the first column of the Date on the left of the Today column.

Am I missing something here, are they perhaps automatically moved to today going forward?

Question about sorting algorithm

How are you sorting the tasks per column? First I thought simply by a-z (seems to be the case on date boards), but for the just released tag with subtags columns I struggle to identify the logic - per tag, per file, a-z, by date?

Thanks for your great work!

[Bug] npm install Fails with Dependency Error

I thought I would check out the code to see if there are some small things I could do myself and submit PRs for since I love the start of this so far, but I'm running into the following error when running npm install:

npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: [email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/elm-webpack-loader
npm ERR!   dev elm-webpack-loader@"^8.0.0" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer elm-webpack-loader@"^7.0.1" from [email protected]
npm ERR! node_modules/elm-hot-webpack-loader
npm ERR!   dev elm-hot-webpack-loader@"^1.1.8" from the root project
npm ERR! 
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

I looked at [email protected] and it does reference @"^7.0.1 for the dependent. Since it seems to be working for you is there around this error?

Allow Manual Sorting of Cards Within a Column

Creating based on a discussion on #15.

It would be nice to be able to manually sort the cards within a column. Probably could only be implemented once #11 was at least partially functional.

There are some tricky pieces to this:

  • How to store the order (decimal field on task line, separate datastore, indented field under task, something else)
  • How to handle cards that exist on multiple boards

I'll give my use case and others can add theirs if different and they find value in this. I keep multiple time-based columns after my Backlog column (This Month, Next Week, This Week) where I can start moving tasks that I want to get done soon instead of just having a really long backlog. But within each of those columns I like to prioritize the tasks, moving cards to the top of the list that are more important. I can then reference the top of those very quickly if I finished up a column further to the right.

However, even with just a really long backlog I would want to prioritize a bit as part of my task review process.

My best current idea that could handle multiple boards would be to include an indented line under the task that includes the board name plus a decimal order.

So, something like this:

- [ ] This is a task #backlog
  - @order(board name, 1.1)

Not sure if board name would need to be quoted if it had spaces. But this is just to get something out there for discussion. If this were the route taken (or something similar) I would not want the @order line to be shown on the card at all.

Drag and drop

I want to build this in one go so you can drag cards to any place in any column and they will stay there.

Needs some careful consideration before doing. For relevant discussions, see:

[Feature Request] Command Palette: Open Cardboard

Hello @roovo !!!!

This is a simple FR to explain: would be amazing to have a command in the Command Palette to open the cardboard.

Many Obsidian users like me hides the left icon bar to have a clean desktop window ;)

  • And with a command in the command palette, we can define a hotkey to open the cardboard!

Additional Option: Command for Specific Boards

If possible, would be amazing to have an command in the command palette for each one of the boards that we have !

CardBoard: Open Cardboard:Title_name_1

Thanks for reading this FR.

I wish you a fantastic Sunday!

Pay off Technical Debt

  • move config decoders from InteropDefinitions into CardBoard, TagBoard, DateBoard
  • CardBoardConfig -> BoardConfig, isDateBoard -> isForDateBoard
  • test the reading and writing of board configs as a round trip elm - encode - decode - elm
  • I want to make CardBoard.boardConfigs return just the configs, not a {}
  • Can I loose the () for InteropDefinitions.ToElm.InitiCompleted?
  • test for decoding invalid version for settings
  • prob want to move the settings update and view functions into their own file(s) as Main.elm is feeling like the wrong place to leave it.
  • Add SafeZipper.empty
  • ensure app doesn't crash if the settings don't parse
  • I am not passing the settings version with Flags. Need to do this!
  • should I allow abandonment of the dialog when starting with no boards set up (how can the user get out of this situation if they want to)?
  • deleteTodo -> deleteTask (and any other todo's hanging in there)
  • NewBoardDetailsEntered -> AddBoardConfirmed
  • review code and add any tests that should be there
    • e.g. deleteItemsFromFile in Main.elm has the arguments in non-idiomatic order
  • fix the couple of elm review errors I've left in there
  • update to use periodic notes -> use https://github.com/liamcain/obsidian-daily-notes-interface getDailyNoteSettings()
  • put settings type definition back into main.ts
  • install code on a fresh machine (see #12)
  • remove regex package from elm (see #12 too)

[Feature Request] Filter by Header

I want to filter tasks by a parent header.

I don't want to have to put a tag my tasks to ensure they will end up in a list.

Perhaps this can be done already and I simply don't understand how to take advantage of it?

Move completed task to separate section option

I like to have a fairly clean task list in my notes so it would be nice if there was an option to move completed tasks to a separate area. There are a couple plugins that accomplish this (Task Collector, Obsidian Task Archiver, Completed Area) but these are manual steps and I'm all about automation. I also understand that not everyone would want tasks moved automatically so the behavior should be on a toggle, and I think should default to off.

This should only be done for main tasks, so per card and not for subtasks. Where the task should move to should also be configurable. i.e. move all tasks under # Completed in the same file. Not sure if there should be an option for prepend vs append to the current tasks there or not.

There are two separate use cases I see here:

  1. Move completed tasks under a specific section
  2. Move completed task to a different file
  • Ideally where in the file should be configurable, and even have the option of a dynamic heading.
  • i.e. Move all completed tasks to the file 'Foo' under a heading # <File> where is the originating location
  • Maybe also an option to move to the current daily page?

My preferred use case is the first but I can see the case for the second. That also means I'm not sure about what sort of options someone might actually want for the second use case.

[Feature Request] New Board: Headers Board -> tasks under the Headers of a Specific File

Hello @roovo !!!!!

First of all, I just wanna say thank you for using your time to create such a great plugin :)
I must say what a great first release :) It's so good to see a first beta so polish and ready to use :)

I'd like to share with you my FR: it's a new type of Board for the tasks which is based on two things:

  1. All tasks from an specific file
  2. All tasks from an specific file + using the Headers as a criteria to split the tasks in the cardboard

My Workflow for Projects

For many of my workflows I have an specific folder that concentrates all notes/resources related to that Project.

One of the notes is a tasks/todo note that I is placed in the left sidebar to look when I need (I have a hotkey to open/close this note in the sidebar)

  • Keeping a unique note is useful when adding new projects that have the same (or most of the same) tasks structure.

The structure of this note is based on headers. Each header have tasks that have the same principle/meaning:

## Header A
- [ ] item_1A
- [ ] item_2A
- [ ] item_3A

## Header B
- [ ] item_1B
	- [ ] item_1B.1
	- [ ] item_1b.2


## Header C
### Header C1
- [ ] item_1C
- [ ] item_2C

### Header C2
- [ ] item_1C
- [ ] item_1C

As you can see, for these projects I just use simple tasks (without dates and tags)

MY FR

1.Create a new board based on a specific file

2. Headers will be used as a criteria to split the tasks inside the cardboard

  • each header have the same visual formatting
  • there no difference from an H1 and a H3

This image tries to show what i'm thinking :)

without the tags :)

0


Thank you very much for readings this. I hope you like my suggestion ๐Ÿ™๐Ÿ™๐Ÿ™

Let me know if you need more information

[Feature Request] Show full task text as tooltip if the task name is shortened

I like the idea of shortening a longer task description, but it would be nice to be able to see what the full text is. My proposal is to add a tooltip that will show the full task text.

I would probably add a delay between the user stopping the mouse on the text and showing the tooltip as it might be annoying if the tooltip kept showing up when using the mouse normally.

Recurring Tasks

I use my task manager for everything in my life so I don't forget things. Because of that there are a large number of tasks that repeat on some schedule. I would love it if there was a way to have tasks set to repeat when they are completed as part of this plugin.

This is really more of an Epic vs a single issue and can be broken down quite a bit, but here are my thoughts on the requirements:

  • Need a way to mark a task as recurring
  • Need to mark the recurring interval (every day, every week, every 6 months, ertc)
    • A natural language parser would be awesome here, but could get complicated (like every first Tuesday of the month)
    • In lieu of that a way to select a number and a unit would work
  • Would be awesome to be able to have choosing the next day be selectable between the previous date or the completed date
    • Todoist uses ! to signify the next date should be based on the completion date
      • So a task due on 11/1 tagged every 3 days completed on 11/2 would have the next date be 11/4
      • But a task due on 11/1 tagged !every 3 days completed on 11/2 would have the next date be 11/5
  • The Tasks plugin creates a new task above the one completed, but the other option would be to just update the due date.
  • Anything indented under the task should carry over, including subtasks
    • Subtasks should all be unchecked (either copied as uncompleted tasks or marked as uncompleted if only the due date is updated)

Refresh board if data.json changes

If Sync or some other service is setup to sync files between devices, data.json may change while CardBoard is running. It would be nice if CardBoard detected changes to this file and update the board when that happens.

[Feature Request] Would it be nice to have a new board kind like project?

WHY

It will be nice to have a board to track all tasks in a project though they are living in any daily notes.

HOW

All tasks in a folder or marked a tag would be listed in a cardboard, and then we could manage it.

A mock up below:

image

Another Way to do it

We could have a setting to allow it track only one tag, OR all tasks in folder.

Like date board in a specific folder OR tag board with a specific tag.

[Feature Request] Add tag name to CSS classes for a tag

I definitely like having visual clues on the board. As part of that I have a couple tags related to areas of my life that I have color coded. I currently have a snippet that colors these for me. I was wondering about adding a CSS class to each tag that includes the tag name. So for a tag named work the CSS class would be tag-work. Since tags can have a hierarchy (parent/child) my thoughts there were to replace / with _.

I was going to try my hand at coding up my own change for this and was thinking I would try to make this change and submit a PR for it.

Include Progress Bar on Card When There Are Subtasks

Visual indicators are always nice, so this would add a progress bar to the card, maybe including complete / total numbers as well.

This would be more important if #17 were implemented as not all subtasks would then be shown on the card. This would include a progress bar for completed / total subtasks, and I would include the actual numbers as well mostly because 2 / 4 is pretty different than 10 / 20 even though they are both 50%.

Quick mock up for my idea:
image

I thought about putting the progress bar on the same line as the Edit and Trash icons, but I do think that is a better place for task context (#4), since context would exist for all cards but subtasks don't. So I think having a spot above the footer works, almost acting like another subtask line.

Settings screen on mobile only shows Board list

I do realize mobile isn't quite the priority yet, but CardBoard does work pretty well on mobile so far. The one issue I've run into is that the settings screen isn't functional. Navigating to the Settings screen only shows the Board list and there is no way to close it except by using Back which ends up closing the CardBoard pane itself.

I'm actually hoping that the improvement to allow the Esc key to exit the Settings screens will at least fix the closing issue, as I believe a touch outside the screen effectively functions as if hitting Esc. That won't fix access to settings, of course, but it won't be the dead end it is now.

image

Add configurable card number limits to columns (WIP Limit)

Part of the Kanban methodology includes Work In Progress limits. I was thinking of having a way to tag a column as the In Progress column, but I think a better way might be to just have a per-column setting to set the limit on the number of cards that can be in that column. Even if we tagged In Progress we would still need a limit setting, so might as well just open it up to any column.

One use case for it to not just be on tagged on In Progress is for scheduling. I have a Today column as well which aren't in progress but are the things I would like to do today. I might want to set a limit on that column so I don't overschedule myself at least through the number of tasks.

I don't think this should be a hard limit, but should just have some visual indicator on the column that notes that there are more cards in the column than the configured limit allows. This does mean, when Drag and Drop is implemented that a card can still be dropped on the column even if it would put the column over the limit.

Some ideas on indicator (don't have time for mockups at the moment):

  • Color the heading red
  • Add an icon next to the heading
  • Color the background of the whole column

No matter how it's done it should definitely stand out and be immediately noticeable.

Drag and Drop Cards Onto Other Columns

I would like the ability to move a card to a different column on the board itself versus having to edit the task directly.

Since there are two different views, here are my thoughts on how it would for either:

Tag Board

This is fairly straightforward, since tags define what column a task goes in. When a card is dragged to a different column the following should happen:

  1. Remove the tag from the task for the previous column
  2. Add the tag to the task for the column the card was dropped to
  • Ideally the tag should remain in the same place in the task line
  • So Task #tag1 #oldstatus #tag2 becomes Task #tag1 #newstatus #tag2

Date Board

This is a little trickier as columns can represent many dates. You had mentioned a date picker in Discord and I think that's a good idea. So the following sequence should happen:

  1. If the card was dropped on a column that represents a single date, just use that date
  2. If the card was dropped on a column that represents multiple dates, pop up a date picker to let the user choose a new date
  • Ideally the date should be restricted to that allowed by the column, so if the user drops the card on Future only a future date should be allowed

If this were me I would probably split this ticket into two separate Feature Requests (I can do that if it's something you wanted), since they are related but represent two different blocks of work: DnD on a Tag Board and DnD on a Date Board. DnD could be implemented on one of them but disabled on the other to help break up the work.

Hide Completed Subtasks Option

A similar way as #16 to reduce the amount of subtasks shown, it would be nice to have the option to hide completed subtasks so they no longer appear on the card.

If the subtask is completed on the board I would introduce a delay between completing it and hiding it, as that would allow the user to uncheck the checkbox if it was checked by mistake without having to go and edit the task directly.

Add option to ignore files/folders for processing

I use templates pretty extensively. Some of those templates include tasks that I would like to include on the board but I don't want them actually on the board until the template is used. It would be nice to be able to set some files or folders to be ignored when processing files to look for tasks so that the tasks in the templates won't be included on the board.

Change date of a task

I would like the ability to change a due date without having to edit the file. Perhaps in the card, click on the date and have it give me a popup for changing the date.

Having said that, being able to drag a card to another column (or have arrows for moving right or left in the cardboard view) would be useful.

Full task text in different font sizes

Having Obsidian font size at 26, tasks in card-board don't appear with their full text. They appear cut so short that it becomes difficult to guess them.
Would it be possible for tasks to wrap text so that it appears in full, whatever Obsidian's font size is?

cardboard

(Search-like) Filter for the view of cards on a board

When there are a lot of cards on the board it would be nice to be to filter the board so that only the cards that match the filter would be shown.

Two options immediately come to mind but there are probably others:

  1. Filter by tag
  2. Filter by description containing some freeform text

I will note here that if/when #20 is implemented the combination of filtering and ordering can be very tricky. To start with I would probably disable manual ordering on a filtered board (except maybe a Move to Top type of action where it is very apparent what the order should be). But that is at least the benefit of the decimal ordering because the decimal used can be fractionally different than the nearest card. So, dragging a card above a card with an order value of 1.1 could be tagged with an order of 1.09, or even 1.09999. This was the method imdone used, and the decimals can get pretty long, but it does work.

There might be edge cases if both #11 and #20 are implemented on where to put a card that was dragged to another status on a filtered board, but I definitely would want the ability to drag a card to another status even if manual ordering within a column was disabled on a filtered board.

[Bug] Subtasks with #at/ not working as expected

Great work!

But: The syntax #at/ on a tag board does not only include all subtasks like #at/PersonA and #at/PersonB/waiting (good!) but also #Matt and #atHome and all others with the original searched tag as part of their tag (not so good). Could you please have a look at the regex you are using to identify the matching tasks?

Thanks!

Add a Custom Icon

to the view so it shows up if you drag it into the sidebar

[see #30 for background info]

Add new task from board

It would be nice to be able to add a new card directly from the board itself. Given that it pulls tasks from other pages I could see this being a bit involved. The Kanban plugin has a small + Add a card button on the bottom of each list.

To start I'm thinking this:

  • Have a setting that designates a note to use for any tasks added from the board directly. Maybe also have an option to use the current days daily note as the place to put them.
    • Should probably also have a Header setting that defines an optional Header to put new tasks under
  • Automatically add the appropriate data for whatever column the task is being added to
    • The appropriate column if it's a tag board
    • Due date is trickier for date boards, not sure if we would want a date popup here as it's meant as a quick entry. Maybe choose the closest appropriate date?

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.