Skip to content

Outline / Table of contents improvements #7741

Closed
5 of 5 issues completed
Closed

Description

@mejo-

Describe the bug
There's many issues and complaints about how the outline / table of contents feature currently works:

Expected behavior
It should be easy to toggle the table of contents. We should have a good design concept of where and how to display it, both on wide screens with much whitespace left and right to the editor, and on narrow screens without any extra horizontal whitespace.

Screenshots

See linked issues.

Cc @marcoambrosini @nextcloud/designers

Activity

  1. added
    bugSomething isn't working
    designExperience, interaction, interface, …
    on Oct 8, 2025
  2. added theissue type on Oct 8, 2025
  3. 11 remaining items

  4. marcoambrosini commented on Nov 5, 2025

    @marcoambrosini
    Member

    And another possible solution, which is my preferred one at this point, would be to replace the content of NcSidebar with it.

    I think we're needlessly anchored to the idea that whenever the sidebar unfolds because of a certain action triggered within the content, we have to automatically present all other possible actions that one can do in the sidebar. I don't think it makes much sense.
    This seems like a good opportunity for breaking out of this pattern

    Image
  5. marcoambrosini commented on Nov 5, 2025

    @marcoambrosini
    Member

    If you think it's too much to break out of the pattern at this point, I suggest we move sharing into a dialog and replace that tab with the outline.
    Reasoning: there's no need to be looking the document while creating a share. On the other hand when navigating an outline we have very much the need of looking at the document simultaneously

  6. self-assigned this
    on Dec 3, 2025
  7. mejo- commented on Dec 3, 2025

    @mejo-
    MemberAuthor

    In general I really like the approach to move the outline to the sidebar, both for standalone Text (opened from Files app) and for Collectives. It solves many problems at a time:

    • The space for the sidebar is already taken into account in our design and we have a concept of how it works with different screen sizes.
    • It provides a unified solution people can get used to both in standalone Text and Collectives.
    • In Collectives we then have a clear order from generic to specific from left to right (Collectives list, page list, page content, page details).
    • We can get rid of the grid container in Text app that currently provides the wrapper containers that hold the outline. The grid container currently brings many problems, with print view, with tables that overflow the horizontal editor width.

    I would prefer to implement the outline as a new tab in the sidebar though, as this is technically easier and doesn't bring the problem of hiding other content in the sidebar. In Collectives I don't see a big problem with it as we currently have four sidebar tabs. In Files app (on our company instance) we already have five tabs in the sidebar. In my opinion it still works well.

    Image
  8. marcoambrosini commented on Dec 3, 2025

    @marcoambrosini
    Member

    Fine by me as well, it's undoubtedly a step in the right direction even with this not ideal amount of tabs.

    Would still prefer to move sharing to a dialog though.

  9. juliusknorr commented on Dec 3, 2025

    @juliusknorr
    Member

    Works well in English but translations will likely be cut off in a lot of languages already. However I agree that this is the most sensible position also considering the other technical factors. I remember lengthy discussions in the past about that we have too many tabs with 4/5 tabs already, so I'd like to get also some feedback from @jancborchardt here as well.

  10. mejo- commented on Dec 3, 2025

    @mejo-
    MemberAuthor

    Would still prefer to move sharing to a dialog though.

    I tend to agree, but out of scope for Text. Something that would need to happen in the files_sharing app.

  11. mejo- commented on Dec 3, 2025

    @mejo-
    MemberAuthor

    After discussing this with @jancborchardt, we came up with the idea to implement the outline similar to how notion does it with some adjustments. I'll try to write down the approach:

    • If document has two or more headings, display outline skeleton on the right side
    • Extend to a popover that shows the full outline
    • On narrow desktop view, make the outline popover overflow the document
    • In outline popover, allow to pin it (make it persistent, don't collapse on mouseleave)
    • Don't display outline skeleton on mobile
    • On mobile, popover to show outline becomes fullscreen and no option to pin it
    • Hide and don't allow to display outline in rich workspace
    • Hide outline in print view
    • Ellipsize long headings in outline popover

    Implementation details:

    • Get rid of grid container
    • Use a column on the right side with 250-300px for the outline
    • In Collectives, make sure that we have enough space for drag handler and outline in the wrapping container
    Outline in Notion
    Image
  12. jancborchardt commented on Dec 4, 2025

    @jancborchardt
    Member

    @mejo- sounds good to me!

  13. moved this to 🏗️ At engineering in 🖍 Design teamon Dec 4, 2025
  14. mejo- commented on Dec 8, 2025

    @mejo-
    MemberAuthor

    Given that we also want to display an outline on mobile, how and where should it be positioned? Taking away horizontal space for it doesn't look great in my opinion:

    Outline on mobile
    Image

    @marcoambrosini @jancborchardt

  15. mejo- commented on Dec 16, 2025

    @mejo-
    MemberAuthor

    Fixed with #8033.

  16. moved this from 🏗️ At engineering to 🎉 Done in 🖍 Design teamon Dec 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdesignExperience, interaction, interface, …design calldiscuss during the next design calldiscussionux

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions