Skip to content

Internal links with checkboxes in headings: break when state changes #15057

@nonobio

Description

@nonobio

Operating system

Windows

Joplin version

3.6.8

Desktop version info

Operating system

Windows

Joplin version

3.6.8

Desktop version info

Joplin 3.6.8 (prod, win32)

Appareil : win32, Intel(R) Core(TM) i5-4310U CPU @ 2.00GHz
ID client : 773c93d7dee04e1289cb896f235df6a3
Version de Synchro : 3
Version du profil : 49
Trousseau supporté : Oui
ID d'instance alternatif : -
Sync target: WebDAV
Éditeur : Markdown

Révision : f0a7f55

Backup: 1.5.1
Bidirectional Links: 0.2.1
Combine notes: 1.2.3
Favorites: 1.3.2
Freehand Drawing: 4.3.0
Menu items, Shortcuts, Toolbar icons: 1.1.0
MultiMarkdown Table Tools: 1.2.1
Note list and sidebar toggle buttons: 1.0.3
Note overview: 1.7.1
Note Tabs: 1.4.0
Outline: 1.5.15
Persistent Editor Layout: 2.2.0
Quick Links: 1.3.2
Rich Markdown: 0.17.1
Rich Tables: 1.7.11
Search & Replace: 2.2.0

Current behaviour

Hi,

I use Outline to create links by right-clicking on headers:

Image

The problem is that the link breaks when the checkbox state changes after link creation.

An issue about links and checkboxes was originally discussed in the Rich Markdown plugin (CalebJohn/joplin-rich-markdown#63), but for this actual problem, I tested with Rich Markdown disabled (and all my other plugins disabled too), and the same rendering issue occurs, so this may be a Joplin core bug.

Joplin generates anchor links by slugifying the heading text. [ ] and [x] are treated differently during this process:

  • ## [ ] title#title
  • ## [x] title#x-title

So when I tick a checkbox (or untick it), any previously copied link becomes silently invalid.

Expected behaviour

Ticking or unticking a checkbox in a heading should not invalidate previously created links.

My idea for a solution

If checkboxes (ticked or unticked) in headings were ignored when generating anchors, the link would always work regardless of checkbox state, and it could also resolve this other issue: #15056 .

Workaround I'm currently considering

Only use unticked checkboxes in headings, and delete them when a task is finished (instead of ticking the box). I think it would work, but it's not as natural as ticking the checkbox.

Happy to provide any additional test cases or clarifications.
Thanks :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIt's a bug

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions