• Stars
    star
    488
  • Rank 90,182 (Top 2 %)
  • Language
    TypeScript
  • License
    Mozilla Public Li...
  • Created over 2 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Obsidian plugin that gives you the power to generate dynamic MOCs in your folder notes. Enables folders to show up in the graph view and removes the need for messy tags!

Waypoint - Automatic Table of Contents Generator for Obsidian.md

Do you use folders to categorize your notes and wish that Obsidian would show certain folders in the graph view? Do you hate having to keep track of tags and links every time a file is created? Do you want to decide what folders should be categories without creating index files for every folder?

Waypoint is an Obsidian plugin that automatically generates tables of contents/MOCs within your folder notes. Once a waypoint is generated, it'll automatically link to every note within the folder and its subfolders. The Waypoint plugin will detect when you create/rename/move/delete a note and automatically stay up-to-date. No more dealing with loads of tags or manually updating your own content maps!

Features

  • Automatically generated tables of contents!
    • Waypoints are created whenever you type the magic word (default is %% Waypoint %%) within a folder note. A folder note is any note with the same name as its parent folder.
  • Instant updates whenever files/folders are created, renamed, moved, or deleted
    • File path changes trigger a scan for any waypoints that might be affected. If a waypoint is found, it is instantly updated in real-time.
  • Folders can now appear on the graph view
    • Just create a waypoint in a note with the same name as the folder and it'll automatically link to every file within, including files in subfolders!
    • Waypoints can be "nested" to avoid unnecessary links
      • Say your folders go from A -> B -> C. If you put a waypoint in the folder note of folder A, it'd include every file within folders A, B, and C. But if you create another waypoint in folder B, the first waypoint would only link to that folder note.
  • Fine-grained control over which folders are considered categories
    • Since you decide when and where a waypoint is generated in your folder tree, you can decide which folders could be considered "categories" and which are just for organizing.
    • Say you have a folder tree like Latin -> Chapter I -> Vocab -> .... "Latin" and "Chapter I" might be considered important enough to be called categories, but the "Vocab" folder within each chapter is just used to keep things organized. Other plugins might require that an index file is made in every folder, but Waypoint allows you to pick and choose what folder notes contain tables of contents. This means you can avoid creating a waypoint in each "Vocab" folder while still having the waypoints in each chapter folder like directly to each term. And because of how Waypoint prioritizes folder hierarchy, the waypoint in the folder note for "Latin" will only link to the chapter folder notes to avoid creating unnecessary links!
  • Permanent and portable
    • Unlike other plugins, Waypoints are generated and saved as real markdown text within your folder notes. If you decide to switch to a different markdown editor that supports [[links]], all of your tables of contents will still be usable.
    • Note that the Waypoint plugin currently only works with Obsidian, so moving files around in another editor will cause your waypoints to be out-of-date.

How To Use

  • First, install the plugin. Waypoint is currently being reviewed for inclusion in the Community Plugins list. Once it is accepted, you'll be able to install it directly within Obsidian.
  • Generate a waypoint by editing a folder note (a note with the same name as its parent folder) and typing in the waypoint trigger text. By default, this is %% Waypoint %%. Make sure to include the double-percents on both sides!
    • This trigger flag can be changed in settings, but it will always require the double-percents as that is how Obsidian knows it's a comment and not real text.
  • And that's it! Waypoints will be automatically updated whenever the files or folders within that folder are changed. Be sure not to remove the %% Begin Waypoint %% or %% End Waypoint %% flags as this is what the plugin uses to locate the table of contents. Any changes made to the text between these flags will get removed once the waypoint is updated.

Note that since waypoints can only be generated in folder notes, it is highly recommended that you install a plugin like Folder Note to ensure that folder notes don't get lost after folder renames and other actions that change the file tree. If a folder note containing a waypoint is renamed to something other than the folder's name, the waypoint will no longer be updated.

Current Limitations

  • Waypoints can only be created within a folder note
    • Because scanning for waypoints every time a file/folder is changed is an intensive process, only folder notes are checked to avoid scanning every file in the vault.
  • Waypoints cannot be created on the top level of your vault
    • Waypoints are meant to categorize notes that are similar to one another. Adding a waypoint to the root node would cause every note in your vault to be linked and defeat the point of using waypoints in the first place.
  • Waypoint appearance can't be customized (yet)
  • Only one waypoint can be created per folder note

If your workflow would be improved by the removal of one of these limitations, feel free to reach out to me with your use case and I'll see what I can do!

FAQ

Why should I use this instead of just using tags?

Tags are an easy way to sort and organize different notes by a type or category, but they have a few drawbacks that limit their usability. My personal reasons for not using tags extensively are that they need to be added or removed from a note manually and they cannot be nested in a meaningful way. Folders on the other hand are a clear and easy way to lump a bunch of notes into a specific category. And the ability to nest folders makes it a lot easier to document the relationship between individual categories. Using this plugin, you can easily link files in the same folder together without any manual bookkeeping (beyond creating the intial waypoint). I still find myself using tags for defining different types of notes since those are not likely to change even if I move them around.

How is this different from indexing plugins like Zoottelkeeper?

Zoottelkeeper and other related plugins are more complex and try to solve different problems. Zoottelkeeper automatically creates index files for every single folder in your repository (with customizable blacklists and whitelists). This means that each folder shows up on the graph view and only links to the index file in the folder immediately below the current one. This is great if you use folders sparingly and each folder has a significant and specific meaning, but if you use folders as your main method of organization then your graph will quickly become messy.

Waypoint was created to give users fine-grained control over what folders are significant enough to be considered a "category" of notes. It allows you to create tables of content that link not only to the files in the same folder but to files in subfolders as well. And if you decide that certain subfolders are worthy of a subcategory of their own, creating a waypoint there will automatically prune the parent waypoint and update it to link only to that folder's folder note. If you prefer to have your waypoints only link to the nearest folder note (whether or not they contain a waypoint), you can enable that functionality within the settings.

Get In Touch

Got any questions, comments, or concerns? Feel free to raise an issue through GitHub or get in touch with me @IdreesInc. If you want to see some of my other projects, check out my website idreesinc.com.

More Repositories

1

Monocraft

A monospaced programming font inspired by the Minecraft typeface
Python
8,168
star
2

Miracode

A sharp, readable, vector-y version of Monocraft, the programming font based on Minecraft
Python
810
star
3

Minecraft-Font

A rendition of the font used in Minecraft
379
star
4

Apple-Watch-Poketch

Recreating the Poketch from Pokemon Diamond and Pearl on the Apple Watch with SwiftUI and WatchOS 8
Swift
330
star
5

TetNet

TetNet is an application that uses genetic algorithms to create an evolving Tetris AI.
JavaScript
67
star
6

Celeste

Add shooting stars to your Minecraft server with this Spigot Plugin 💫
Java
65
star
7

Cerebrum

Cerebrum.js is a neural network library created in pure JavaScript.
JavaScript
42
star
8

PlayBook

A cranky ebook reader for the Playdate console
Lua
42
star
9

NookPhone

A web mockup of the NookPhone UI from Animal Crossing New Horizons
HTML
20
star
10

EEZYbotARM-MK2-Cartesian-Coordinates

A cartesian coordinate system for the EEZYbotARM MK2 project that I use for my "Dave" project.
Python
16
star
11

Mutable

A powerful app and extension to block content across the web and save your sanity
JavaScript
16
star
12

Dave

A rather playful robotic arm
Python
8
star
13

Temperature-Simulation

A small visualization of particles and their reactions to different temperatures.
JavaScript
7
star
14

IFrame-New-Tab

A Chrome extension that allows users to embed a website within an iframe in their new tab page
HTML
6
star
15

LED-Matrix-Editor

JavaScript
6
star
16

Gemini

A Java program that refuses to be deleted. By running two instances at once, the program constantly affirms that the other process and .jar file are still available. If one of the instances is terminated, the other twin instance restarts it.
Java
6
star
17

Dragon-Egg

A little program based on the Dragon Egg in Minecraft. Once executed, the jar file will then "teleport" to another location on the drive it is located on.
Java
5
star
18

Holographic-Porygon

A virtual Porygon that lives in a hologram!
JavaScript
4
star
19

TypeSnake

Snake, programmed in TypeScript, stylized like an old LCD screen.
TypeScript
4
star
20

QR-Code-Extractor

A Python based QR code extractor that uses OpenCV to detect and extract multiple QR codes in any orientation.
Python
4
star
21

Graduation-Cap

Python
3
star
22

vimrc

My personal Vim configuration.
Vim Script
3
star
23

Rebooter

A simple Node.js program that reboots my server if it disconnects for too long.
JavaScript
3
star
24

Poof

Poof.js is a Node.js program that allows your Amazon Dash button to send a message and a random GIF to your email every time it is pressed!
JavaScript
3
star
25

tiny-record-player

A "Teeny Tiny Turntable" turned into a tiny Spotify controller
JavaScript
3
star
26

Graduation-Cap-Relay

JavaScript
2
star
27

Ghost-Writer

A simple TypeScript program that simulates a user writing out a message, complete with pausing and backspacing.
TypeScript
2
star
28

Perspective

A simple program that creates a pseudo-3D game where sprite size is adjusted depending on its location on the screen.
C#
2
star
29

CHARLES

A personal virtual assistant program that is constantly in development. Not really mean't to be used by the public, but exists as a learning resource for anyone brave enough to take a dive into the code.
Java
2
star
30

codeDeck

_codeDeck is the testing ground for my attempts at designing unique and functional UI's.
JavaScript
2
star
31

IdreesInc

1
star
32

Jenna-Template

HTML
1
star
33

Bubbly-Windows

A webpage that has bubbles crossing through the background of different elements without being visible in the space between.
JavaScript
1
star
34

Graduation-Cap-Submissions

1
star
35

Dark-Sky-API-Example

A simple Dark Sky API example in Swift, because why use a bloated library for something as simple as an API call?
Swift
1
star
36

Stelline-Examples

1
star