Skip to main content
tana
Product Company Community App Get early access
Community
Search
Log In
Log In Sign Up
Darren Brierton

Darren Brierton

Joined Aug 17, 2023 Last seen May 10, 2025
Posts 11 Comments 29

⁨Darren Brierton⁩'s Posts

Newest Top
Newest Top
Darren Brierton Darren Brierton Jan 27, 2025

Group by relative day/week/month/year

Actions

Explain the problem as you see it

A common task management strategy is to group tasks by today, tomorrow, this week, next week, this month, next month, etc., and then to manage planning by moving tasks between those groups, a little like on a Kanban board. There is currently no way to actually do this in Tana.

Why is this a problem for you?

I can create multiple search nodes that correspond to those groups:

  1. Tasks with due date = FOR RELATIVE DATE today
  2. Tasks with due date = FOR RELATIVE DATE tomorrow
  3. Tasks with due date = FOR RELATIVE DATE this week AND NOT FOR RELATIVE DATE today/tomorrow
  4. Tasks with due date = FOR RELATIVE DATE next week
  5. Tasks with due date = FOR RELATIVE DATE this month AND NOT FOR RELATIVE DATE this week
  6. Tasks with due date = FOR RELATIVE DATE next month

etc.

But currently you cannot drag-and-drop between distinct search nodes to change somethings's field values.

Suggest a solution

The obvious solution would appear to be to allow dragging and dropping between search nodes. However, it soon becomes apparent that this would lead to chaos for unsuspecting users. The results of dragging something from one search node to another based on entirely different search criteria might be wholly unintuitive to a normal user, and in many cases exactly what changes should be made might be underdetermined.

Therefore I propose a custom grouping option when grouping by a date field: group by relative date. There would be checkboxes to select which of the 12 relative date periods should be displayed:

  • yesterday/today/tomorrow
  • last/this/next week/month/year

The grouping would be exclusive: items shown in "today" would not be shown in "this week" or "this month"; items shown in "this week" would not be shown in "this month". Dragging and dropping a task from the "today" column to the "this week" column would change its date field value from, e.g. Mon 27th Jan to simply Week 05.

4 ⁨4⁩ ⁨comments⁩
Darren Brierton Darren Brierton Aug 17, 2024

Make it easier to generate nodes based on certain criteria and move them to a location

Actions

Explain the problem as you see it

Consider the following scenarios, both real ones raised by Tana users on Slack:

  1. A teacher wants to create attendance records for each of his classes. He has search nodes which show every student currently taking each course. For each class he wants to generate an attendance record for each student.

  2. A real estate agent needs to generate loan applications for a property based on lenders which meet certain criteria related to that property. He has a search node inside his property tag which finds suitable lenders. He wants to generate a loan application for that property for each of the lenders.

It is currently possible to create a command in Tana which will take care of most of this, but it is a very cumbersome process, and is very challenging for most users. Furthermore, once the nodes (attendance record, loan application) are created it can be even more of a challenge to move them to a desired location.

Why is this a problem for you?

This seems to me to be quite a common use case, not at all niche, but it is not simple at all. I suspect that most users would have no idea how to actually achieve this without help from an expert.

In cases like this where someone might have to daily produce a huge number of nodes according to well defined criteria, expecting them to do this manually is not reasonable. In the case of the teacher, if they teach four classes a day and there are 30 students in each class that is 120 attendance record nodes that would need to be created daily.

Suggest a solution

Just as we have very polished tools for querying the graph, including the ability to refer to (GRAND)PARENT and field values, I think we need a UI for inserting into the graph.

0 ⁨0⁩ ⁨comments⁩
Darren Brierton Darren Brierton May 6, 2024

Visual indication of when an inline reference has contextual content

Actions

Explain the problem as you see it

On Slack I suggested using contextual nodes on inline references to emulate "footnotes" or "comments". The entirety of my suggestion can be seen in this screenshot:

Screenshot 2024-05-06 at 14.57.36.png

One drawback to this suggestion is that there is no visual indication that an inline reference has contextual content. The user needs to expand the reference to discover whether there is a "footnote/comment".

Why is this a problem for you?

The above is quite an elegant solution, but the fact that there is no way to tell that an inline reference has contextual content undermines its usefulness.

Suggest a solution

There should be some sort of visual indication that an inline reference has contextual content. Perhaps some sort of icon?

0 ⁨0⁩ ⁨comments⁩
Darren Brierton Darren Brierton Jan 26, 2024

New semantic function: Dependency of

Actions

Explain the problem as you see it

This is related to (complementary to) the idea for a Gantt or timeline view.

Currently it is not really possible in Tana to indicate that some todos may need to be done sequentially, in a particular order.

Why is this a problem for you?

This can make managing even relatively simple todo lists difficult. For example, a student may need to complete a reading assignment before beginning an essay. Obviously the problem becomes much more acute in larger project management contexts.

Suggest a solution

A new semantic function "Dependency of" would provide the first step in encoding this information.

Corresponding new search operator(s) (as COMPONENTS REC is to "Part of") would allow for finding both what something was a dependency of, and what was dependent on it.

If at some point field value functions were introduced we could automatically mark a todo's status as "Blocked" if it had dependences that were not done. Filtering for this in a todo list query (i.e. all todos not done and not blocked) would then allow the list to be autopopulated by dependents as dependencies were marked done, allowing for good sequential task management.

If at some point a timeline or Gannt view was introduced we could automatically adjust start and end times of something when its dependences were adjusted.

3 ⁨3⁩ ⁨comments⁩
Darren Brierton Darren Brierton Jan 6, 2024

Nested queries, or queries within queries

Actions

Explain the problem as you see it

Just to be clear from the outset, this isn't really a request to embed queries inside other queries, rather it is a request for a certain type of query functionality that, given Tana's current queries, is most readily described in that way.

Sometimes I would like to be able to search for nodes whose field values themselves meet certain criteria, i.e. find some nodes that meet one criteria, and then further filter the results based on the properties of the field values of those nodes.

At other times I might want to search for nodes that meet a criteria, but then return the value of a particular field of those nodes.

Although the two case are different, they strike me as related: in both cases first a set of nodes is queried, and then a second action is taken based on the field values of the first query; in the latter case the field values are themselves returned as the end result of the query; in the former case the query is further refined based on the properties of the field values.

Why is this a problem for you?

This idea was prompted first by two different users on Slack asking within a few days of one another if this functionality was already possible. Both their use cases struck me as quite compelling. Those comprise the first type of case described above. Then I myself realised that I wanted to perform a search that wasn't yet possible. That was the impetus for the second type of case described above.

Type One

Sven Bendel wanted to be able to find only tasks assigned to projects with a certain property. So if you have a #task tag with a >Project field, which is an instance field for tag #project which has a >Status field, he wanted to be able to find only #task instances whose >Project value was a #project instance whose >Status was "Focus".

Jessica Peters-Banton wanted to be able to find tasks whose current status was blocked, but where the blocking task had status done. In other words, find tasks currently marked as blocked which might actually no longer be blocked. If we have a #task tag, with a >Status field and a >Blocked by field (an instance field for #task), then she wanted to be able to search for all #task instances with a >Status of "Blocked" and a >Blocked by value being a #task instance whose status was "Done".

Both use cases strike me as compelling. They seem to be genuinely useful types of search that many users might want to perform. And in both cases they articulated what they wanted to do as embedding another query inside an existing query where a field value would normally be specified. Although I don't believe that would be a good way to actually implement this feature, I think it is telling that that is how users conceptualised what they wanted to do.

Type Two

I have a #book tag with a >Topics field (an instance field for #topic). I generally create instances of this tag when I buy a book, but I don't necessarily read a book the same year I bought it. I also have #reading log tag, where I note on my #day nodes what I read that day, and that tag has a >Book field which is an instance field for #book tag. Let's say I wanted to see what books I read in a certain year, or which topics had preoccupied me. As things stand this is not possible. I can query all the #reading log instances from a particular year, but as each book may have a dozen or more reading logs associated with it that is not a very clean way to quickly see the books that I read, and there doesn't seem to be any way from there to see the topics.

What I'd like to be able to do is to run a query that returned all the #book instances that were the value of a >Book field of a #reading log instance from this year. I'd also like to be able to take this a step further and run a query that returned all the #topic instances that were the value of a >Topic field of a #book instance that was the value of a >Book field of a #reading log instance from this year.

The most natural way to describe these sorts of queries is as queries on queries (on queries), although I want to reiterate that that does not strike me as a good UI.

Suggest a solution

If I could suggest a solution to this I'd be expecting a job offer from Tana!

But for type one case perhaps a WHERE VALUE field value operator might work in conjunction with dot notation:

#task
>Project      WHERE VALUE.Status      Focus

For type two cases, perhaps something like

#book    WHEN VALUE IN    #reading log
                          >Book      VALUE

and

#topic   WHEN VALUE IN    #book
                          >Topic     WHEN VALUE IN      #reading log
                                                        >Book      VALUE.Topic

Obviously none of these suggestions are particularly user friendly, and the implementation of such a feature depends not merely on the back-end capabilities but also a user friendly way of accessing those capabilities. It's clearly a difficult UX and UI problem to solve, but I think there is a clear use case for query features such as these.

13 ⁨13⁩ ⁨comments⁩
Darren Brierton Darren Brierton Dec 9, 2023

Detachable panels

Actions

Explain the problem as you see it

As currently the Tana desktop app does not have tabs or multiple windows, the existing panels can become a little cramped.

Why is this a problem for you?

Sometimes I want to keep a node open while I work on something else. But if that something else includes configuring a supertag and configuring its fields I can just run out of room in a single window to work efficiently.

Suggest a solution

There is a new feature in the latest release (November 2023) of VS Code (another Electron app) which they're calling "floating editor windows".

We are happy to announce that with this release you can move editors out of the main window into their own lightweight windows

They are full-powered editor windows, but lack the other features of the main window such as sidebars, panels, terminal, file browser, etc. It would be sweet if we could detach a Tana panel in a similar way. The detached panel could not itself have panels, and there would be no sidebar.

1 ⁨1⁩ ⁨comment⁩
Darren Brierton Darren Brierton Dec 8, 2023

Better filtering of options fields

Actions

Explain the problem as you see it

Currently it is possible to define an option field where the source of the options is a search node. This is extremely useful for filtering the possible values in the option field, as opposed to say just making the field an instance type.

However, the search node does not have access to any of the other fields in the supertag to which the field belongs. This actually prevents many of the most important ways one might want to filter the options.

Why is this a problem for you?

A typical example might be a project management system. I have multiple projects. Each project has tasks associated with it, and also sprints/cycles, and the project's tasks will be variously associated with those sprints/cycles.

Currently I can use a search node to filter out past sprints/cycles, but there is no way to filter out the sprints/cycles belonging to different projects. This is especially problematic as the sprints/cycles from different projects might all be similarly named, say "Sprint 11". In this scenario it is extremely easy for a user to assign a task from one project to a sprint/cycle from a completely different project.

Suggest a solution

The search node which is the source of the options field needs to run in the context of the tag the field is part of. There should be a search operator which evaluates to the current tag instance, for the sake of the example let's say the new search operator is INSTANCE. Then it would be possible to create a search node for the options field like this:

#sprint
NOT         >Status        Past
>Project    INSTANCE.Project
2 ⁨2⁩ ⁨comments⁩
Darren Brierton Darren Brierton Nov 22, 2023

An ANCESTOR WITH TAG field value in live queries

Actions

Explain the problem as you see it

The problem with PARENT and GRANDPARENT is not merely their limited scope but also their fragility, simply changing indentation can break live queries (and that also holds for some requested enhancements like GREATGRANDPARENT or ANCESTOR_1, ANCESTOR_2 etc.).

Why is this a problem for you?

Side menu and tabs allow us to create pleasing UIs in Tana, but my ability to use them is greatly limited if they are to contain live queries. For example, a project template like this

Project A #project
    Dashboard
        Tab 1
            Side menu live query for all tasks related to Project A

is not possible because Project A is beyond the reach of GRANDPARENT.

Suggest a solution

I suggest a new ANCESTOR WITH TAG field value that, like FOR RELATIVE DATE, accepts a single argument, in this case a tag name. This field value would match the closest ancestor node with that tag.

So instead of a live query like this, which cannot have its nesting level changed:

#task
>Project PARENT

you could do

#task
>Project ANCESTOR WITH TAG #project
1 ⁨1⁩ ⁨comment⁩
Darren Brierton Darren Brierton Sep 15, 2023

Ability to hide Title column in table view of live search

Actions

Explain the problem as you see it

There are specific circumstances in which the Title column in a table is redundant. It would be good to have the option to hide it.

Why is this a problem for you?

Let's say I have a task that repeats frequently, but irregularly, perhaps to pay some vendor, "ACME Manufacturing". Whenever they invoice me I create a reminder "Pay ACME Manufacturing" with fields for due date, amount, invoice number. I want to always use the same title, because in all other view and search nodes it is immediately apparent what it is.

But when I want to search for all instances of this, and see how much I have paid them over a specific amount of time, my table looks like this:

Title                       Due date          Amount
----------------------------------------------------
Pay ACME Manufacturing      Mon, 4 Sept       456
Pay ACME Manufacturing      Wed, 6 Sept       987
Pay ACME Manufacturing      Fri, 8 Sept       678

The first column is wholly redundant in this particular search and takes up a lot of room, but there is no way to hide it.

Suggest a solution

The ability to hide the Title column of tables just like all other columns can be hidden.

1 ⁨1⁩ ⁨comment⁩
Darren Brierton Darren Brierton Sep 15, 2023

`next xx days` and `last xx days` arguments for FOR RELATIVE DATE in live searches

Actions

Explain the problem as you see it

At the moment FOR RELATIVE DATE is tied to searching in terms of weeks or months, but often I am interested in a time period x days in the past, or x days in the future, regardless of what day of the week it is, or what date of the month it is.

Why is this a problem for you?

  1. Search nodes that show (for example) events coming up in the next few days are extremely useful in a #day node.
  2. If I am tracking my progress in a recurring activity, an exercise like pushups or squats for example, I may wish to attach a search node to that exercise that shows my last few exercise sessions.

Both those searches are not easy to achieve at the moment, although they strike me as common use cases.

For the forthcoming events I can search for next week with FOR RELATIVE DATE next week, but if it's Monday that won't show me anything for this week. I can instead search for FOR RELATIVE DATE this week OR FOR RELATIVE DATE next week, but if it is Friday that will also show events from the past four days. So I have to instead search for NOT LT FOR RELATIVE DATE today AND (FOR RELATIVE DATE this week OR FOR RELATIVE DATE next week). Not only is this needlessly complex, it still doesn't really show me what I want, as on Monday it shows me what is happening in the next 14 days, and on Sunday it shows me what is happening in the next 7 days.

For the exercise example, it is even harder. Let's say I lift weights, and want to track my progress. I don't want to see every weight-lifting session since I started using Tana, I'm probably just interested in my last few sessions, so I can see what sort of progress I am making. The best it seems I can do though is search for FOR RELATIVE DATE last week OR FOR RELATIVE DATE this week. Assuming that I work out regularly, what I probably want to see is something like the last 28 days.

Suggest a solution

Please add next xx days and last xx days as possible arguments for FOR RELATIVE DATE.

3 ⁨3⁩ ⁨comments⁩
Darren Brierton Darren Brierton Aug 29, 2023

Simple time and date calculations

Actions

Explain the problem as you see it

It would be nice to be able to do some simple date and time calculations, in particular for durations.

Why is this a problem for you?

Let's say that I'm logging my work on a task by using cmd+k and either "Insert current time" or "Insert current date and time" to record the time I started on a task and the time I finished. It would be incredibly useful to be able to, at the end of the week, calculate the total amount of time I spent on those tasks, and also calculate the amount of time spent on those projects that the tasks were related to.

Suggest a solution

A conception of duration, as a system primitive, calculated automatically from any date field that contains a range (a start and end), and new System Start Date/Time and End Date/Time. Durations stored as seconds (or milliseconds) but displayed as human readable years, weeks, days, hours, minutes and seconds. The ability to sum these values like we already can for ordinary numbers.

1 ⁨1⁩ ⁨comment⁩