Link to Row focus behavior

I see that Add Link to Row now beautifully populates the linked row name, thanks for that :slight_smile:
I did notice an inconsistency with row focusing when opening thusly linked rows. Links to rows without children focus on their ancestor, showing the linked row in the context of its ancestor heading. This is exactly what I like. Conversely, links to rows with children are focused directly into that row, showing only the linked row’s children, but not ancestor (and context, which I don’t like so much). Additionally, when adding children to rows without children and then clicking on the link (created before children were added), it still focuses on the linked row’s ancestor, so there’s a slight discrepancy in the logic.
I’m assuming the links focus this way by design?

Yes, though not sure that I like it. My thinking was:

  1. To me it feels correct that following a link to a row will focus that row.
  2. But linking to a leaf rows felt empty, so I changed behavior at last moment for that case to also show parent.

I wish I hadn’t done that second part, a simple “follow link to focus” rule applied everywhere now seems more appealing to me… but I guess you like the opposite behavior :).

Looking at existing online outliners it seems pretty universal that linking will focus into the linked row and not show children.

I think I may just leave current behavior in for now, need to think a bit more on what I want final behavior to be. Anyone aware of existing outliners that handle these two cases well? Or is there even another existing outliner that doesn’t just focus linked to row?

Workflowy seems to focus on linked row regardless of children or not.
Craft (while not an outliner per se) follows the same logic as Bike currently does (focuses only if linked block includes own content).

Mine might be a special use case. I have “task” rows that only make sense when read in context with parent and siblings (e.g. notes on chapter editing).

That said, I think your intended behaviour is the better one for this type of action. I only link to specific tasks because I create an agenda from them in another part of the outline. If/when filtering becomes available, that probably would also cover my use case.

Looking closer, the inconsistency is in link creation behavior, not link opening behavior. I had confused myself with this too … but the underlying Bike Links syntax can fully specify both behaviors. This is good because it means whatever solution I come up with you can customize to get your desired behavior. (Or use tags later).

I think I’m going to leave everything as is for current release, but going forward we have a lot of flexibly to address. I expect what I will eventually do is:

  1. Change default behavior to focus linked row
  2. Maybe provide way in “Link to Row” palette allowing you to link to parent instead. For example maybe instead of Return you could do Option-Return.
  3. If #2 seems to hidden, the other option would be to (plan to do this eventually anyway) allow scripts to show the Choice Palette and then a script to generate link based on custom desired behavior.

This is actually brilliant and exactly what I was looking for. Missed it again :man_facepalming:t3:. I think I might now be able to extract IDs and create an agenda with row links that focus on parents using Apple Shortcuts. I do have two questions though:

  1. How does one create a markdown-type link
    with plain text that Bike would recognize? I mean description.

  2. Is there a way to get full row text with Apple Shortcuts other than export/import? I only seem to get truncated row text when using Find rows.


I’m not sure if this is what you mean, but you could do something like:

And that will create a link in Bike.

Yes, I think the truncation is only happening when rows are displayed. But if you drill into the row text variable you’ll get the full text.

For example:

  1. Add a “Find All Rows” action (limit to 1)
  2. Add a “Show Alert” action
  3. Control-click on the alert actions “Do you want to continue?” text
  4. Choose “Rows”
  5. The Show Alert action show now show a param of rows
  6. Click on that param
  7. A popup will show you that allows you to drill into a specific row attribute
  8. Choose text
  9. Then when you run you should see the full text of the first row… no truncation.

Hope that made sense.

Great! Figured out the markdown link part, but I was stuck on getting the full row name. It didn’t occur to me to use the ‘text’ attribute instead of ‘row’ or ‘name’.

Here’s a shortcut that will look for anything marked with @high and place it as a task under a Today heading as a link to the original row, with the link focusing on the row’s ancestor regardless of whether the linked row has children or not. It’s easily customisable to find any other priority marker and create links under a different heading (or outline).

Probably not the most efficient shortcut because I have no idea what I’m doing 90% of the time, but maybe if it’s useful for anyone else, we could place it under the extensions wiki.

Bike - Create Agenda from @high (with links in context) (14.1 KB)

1 Like

If you use Keyboard Maestro, you should also find that this macro:

Copy as Markdown Link - Macro Library - Keyboard Maestro Discourse

copies a Markdown style link, with the full row text, from the selected Bike row.

(and also does the same with the selection in a number of other applications).

The latest version is always kept here:

(Click the green Code button, choose Download ZIP)