Gathering API v0.1 ideas

This is unrelated, but you can use this link for Apple Reminders.

I haven’t read through this, but creating documents and having them update based on certain criteria (e.g. every word that mentions “purple cow” or whatever) would make for good use of the API.

And maybe the ability to add additional file panes to Dynalist so that way we don’t have to use different programs?

This is the workflow I’d like to implement with Dynalist’s API. Basically a low maintenance, retroactively global TODO-list using javascript popup boxes

I would basically only use the ! parameter for dates that dynalist currently has. The problem I have with google calendar integration is the following:

  1. If I assign a date into google calendar with Dynalist PRO feature, its a one time deal. Once that date is set, its set. I cannot reassign it for a future date unless I go to google calendar. Plus, I have to use two different systems here

This problem would be solved with other built in “TO-DO” style systems found in other websites / softwares, that are integrated directly into that platform. For instance

Basically, the only thing I would use this API is for a TO-DO list that is more powerful than what dynalist currently has. I would want an inbox basically



Basically, this is what would happen

1. Pre-existing workflow integration

I use a phraseexpress macro “3d#” to paste a reminder in the future (3 days from today) using the “!” operator. Or 1w# for 1 week, 1m# for 1 month, etc. This would be anywhere in my document and be retroactively global. The task would just be whatever contents are on the bulletpoint itself

###2. API plugin use for TO-DO dialog box reminder (GET /PUT)

When that day comes, say 3 days later, a javascript popup box would show the reminder I set for myself. The dialog box would have the following options in terms of what I can do with that task

  • Mark as complete
  • Reassign the task, by manual date, OR +1days, +2days, +4days, +1 week, +1 month (If you wanted to reassign 5 days later, press +1day and +4day then OK)
  • Change the description of the task (in the event the task nature changes)
  • Add notes underneath the task (as child bulletpoints) or as a NOTE

The ability to add notes on the description would give it a more “Trello” feel. You can attach documents using dynalist PRO attacher or just an imgur link, etc

3 API plugin to modify data (POST)

When all is done press OK. This would retroactively change that task lists data, including but not limited to:

  • Last revised date
  • New “!” date changed to reflect the “reschedule task for another day”.
  • Any description changes + new notes on that task

This would make task management much more friendly and lower maintenance in nature (E.G. I don’t have to use another app like TODOIST, I don’t need to go to a “seperate list” to manage to do tasks, or remember anything really, the forced dialog box reminder when I log in everyday does that for me)

Naturally I log into dynalist.io everyday anyways, so this isn’t going to be a probelm

Afterthoughts on implementation

I would probably just run this all as a tampermonkey script to set the reminder sent back to myself, the moment I log into dynalist for the day. This would control the javascript dialog box reminder I have. I’m not entirely sure how this part would work though (dialog box on dynalist), I’d have to look into it more, I’m still fairly certain it would have to be with a tampermonkeyscript and an “alert box”. I don’t think a chrome extension would work for what I’m looking for exactly

I’m not sure if an external server would be needed to store any data or if its just constantly making GET / PUT calls for current date stamps either. Or if its just going to be a datadump log somewhere.

Items not finished or set as occuring will just constantly show up in my dialog box “inbox” everyday

It’s also worth considering having a sandbox environment so that app developers don’t need to test in production.

Dashboard + Anki - like tools

Adding onto API ideas or just features semi-related to dynalist

There really needs to be a dashboard in general with dynalist.

In this dashboard, I would like the following:

  • (low priority) Richer search functions (for date parameter searches)
  • (low priority) Mind mapping
  • (High priority) → the TODOlist API plugin case I made above for pinging reminders to yourself (e.g. similar to Reddit RemindMe Bot! and FollowUpThen email system). Basically, an inbox

Next, I would also really like this, related to dashboard items (Anki-style tag flash card structure list)

Anki-flash card style dynalist tags

This all ties into giving tags “elevated permissions” related to managing “TODO List” that I indicated in the above reply

Essentially, the reason you would want this is if you want to use dynalist as you would the anki app.

Principally it’s the same.

It would only work per bulletpoint though to keep it simple

How it would work as below:

1. Use specific “elevated” formatting on bulletpoint to designate front / back of flashcard

Basically, say I wanted to make a flashcard. @anki-1day would be the global-tag that gives elevated permissions to make a bulletpoint into a “flashcard”

Say I wanted to refresh knowledge on a set of notes. Let’s say it’s the definition of the word “onomatopoeia”

The bulletpoint format on dynalist would look like this

  • Front of Flash card @anki-1day Back of Flash card Notes

In other words like this:

  • onomatopoeia @anki-1day the formation of a word from a sound associated with what is named (e.g., cuckoo, sizzle ).

The would make it easy to assign items you need to refresh on that you don’t understand that well

@anki-1day would remind you this everyday until you understand the concept in a flashcard setting (Front card shown, click to see back of card). This would pop up once / day in your dashboard / javascript popup inbox items

If you understand the concept, simply click to reassign the follow options (get/post request)

  • Refresh later (leave @anki-1day)
  • Sort of understand (change tag to @anki-7day)
  • Understood (Change tag to @anki-30days)
  • Don’t remind me anymore (Change tag to @anki-done)

Optionally, have the back of the flashcard an option to “expand” child bulletpoints below it / notes as well in one click too

Example of what flashcard would look like in anki

2. Dashboard popup

have it similar to anki

see what anki tutorial looks like

Other things I would like

Macro button

In excel VBA, y ou could assign macros to do certain functions in the program. In dynalist, we have something similar using links, but those only redirect to another location in your file

We also have tags as well, when clicked, searches for tags within that list view mode

What would be nice is a customizable macro button that brings both together

Not sure if this is API related

How it would work and why you would want to use it

Basically

Say I’m on a document. At the top of the document I keep a list of tags to search through my document faster.

Say I go through my document unhide / hide lots of bulletpoints around and i have to click one by one by one

Ideally I’d like a button based macro I could just click on within that list view / document sitting near the top to do all of this

This idea of a “macro button” originates from excel VBA, where you can write visual basic code, and bind that macro into the ribbon menu, quick access area, or into the excel spreadsheet itself. Since dynalist is basically unstructured data entry / viewing at the same time, it isn’t too much different than an excel spreadsheet from this standpoint

Anyways, the macro button would have the following features: The ability to:

  • collapse all parent / child node points in one click
  • collapse ONLY the parent nodes
  • Collapse the parent + first child nodes in view
  • hotkey shortcut a set view mode of how the tabs should be opened (a save setting for a specific uncollapsed/ collapsed views in dynalist)
  • reopen that save setting (newer bulletpoints will be unchanged in the reload state)

This doesn’t even need to be a button and potentially just system-based hotkey instead that works on that designated list view mode

The reason this would benefit me is because I’ll take a lot of notes down, and then “rollup” those notes into one condensed bulletpoint and want to keep it in that state.

Sometimes it gets wacky and doesn’t work as intended

This is especially useful if you take lots of course notes that follow an obvious structure. Example of notes (rolled up content in one line)

this show that I have one condensed bulletpoint stemming from 6-7 child bulletpoints during note taking

Other things this macro button could do potentially:

  • Tag dynalist maker
  • Bulk CTRL+ENTER all bulletpoints in that designated list (if you do inbox management)
  • Bulk Move all items in that designated list to another destination
  • Temporarily change CSS to give it a new content in reading / writing (for people who write novels I guess)
  • Show / Hide all inlined images

Most of these things could be achieved with hotkeys though, but the option of a macro button would be nice as well

Things similar in nature that dynalist has already

  • Shortcutting a bookmark for certain tag searches in document

This post for hiding / viewing checked items kind of ties in with my macro button response below

Also, Piotr’s tamperscript for auto-sorting is pretty much exactly the UX behavior that should be used for the above reply

Another feature I would really like using dynalist’s API (probably possible with just tamperscripts) is to give dynalist more “Database-like” functions for filtering and viewing data

this is already achieved with tags already, but I feel like you would just have to use way too many tags to achieve this effect (each tag = one filter). Meaning if you wanted 2-3 filters (using dynalist’s search parameter), every item would need 2-3 tags, which is really redundant, making the overall document difficult to read

Not only that, you would have to go into search mode in dynalist, meaning you only limit yourself to one set of tasks at a time (viewing data, but not really entering data)

Tamperscript / API plugin proposal

what i propose is following:

More hide/view data similar to database filters (similar to excels hide columns, hide rows, etc)

Essentially this would give you more hide/view controls of your data overall

The best example I have and why I would use it is such:

Say I want to outline a very long file structure (ecommerce file folders) so I can understand the data as a whole.

This is what my data looks like, or just a snippet of it. Its inherently unorganized since the child/parent relationships aren’t well understood, so a RDBMS setup using airtable is out of the question

I want to bookmark different “views” of this data as I work and change filter structures so I can know what folders do what, as I learn more about this system

So I might have various viewmodes for my files like so: (Hide/Check box) and (Collapse/Uncollapse bulletpoints)

Each view filter would be saved into the tamperscript, kind of like what you do with video game saves

Below is the entire proposal and what the tamperscript does essentially , in one image mockup


TLDR

see above image

Basically, my tamperscript / api plugin wishlist is to have “save” / “load” states for specific views. These control and change following:

  • collapsed / uncollapsed items in that list
  • checked / unchecked items in that list

similar to database filtering views, excel “hide rows and columns” that kind of thing.

More database-y like features for outlining and organizing very large complex file structures by hiding things you want to see / don’t want to see based on task



:zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap::zap:

EDIT 6/4/17

This is semi-related to the above feature for collapsing / uncollapsing and checking / unchecking list

Its a “save” / “load” state feature pulling in Dynalist’s API for the primaryKey of the node, or just using the “Creation date” as the primaryKey through javascripts DOM

It would be based on unix epoch time, https://en.wikipedia.org/wiki/Unix_time or iso-date format https://www.w3.org/QA/Tips/iso-date , but a simplified version of it

optionally hexadecimal / 64 bit encoding is possible here too

Use the following format for saving / loading save state data (comma seperated values)

Data on my browser from dynalist is stored as such

<div class="Node-bullet" title="Created at 12:51:00 PM on 6/4/2017, last edited at 12:59:15 PM on 6/4/2017"></div>

I would use the “Created at” time to define where the bulletpoint is at. Since this value doesn’t change

so if I had the following data:

✪✪ A [creation date: 12:51:00 on 6/4/2017]

“A” would be converted like so:

2017-06-04-12-51-00 (YYYY-MM-DD-HH-MM-SS)

remove hyphens. Assume GMT timezone / option to define in settings

20170604125100

Optionally convert to epoch unix time or leave as is

Store the data as follows. So if the following save format would be

how this would all work (top level childpoints)

Basically if I had the following data in dynalist, I could save the sorting order based on creation date

I highlighted the difference in stamps here

I would click a tamperscript

It would save and output the following data inside the “Save states” note

#[save1 | 20170604125100, 20170604145100, 20170604135100, 20170604155100]

Because if I wanted to run piotr’s autosorting / tamperscript this is how I would find the original way my data was sorted

Optionally, this data could be saved, either in dynalist directly, or through a 3rd party server, and referenced through another primarykey

issues

above is how i would implement a method for saving the order in which bulletpoints appear, if I wanted to change up the order my dynalist toplevel bulletpoints appeared for working on different things

there’s a few issues here that this sorting / save/load state wouldn’t cover

  • child of child node order
  • Deleted or newly added bulletpoints

I would have to use an API + an external server / RDBMS storage to handle this. The RDBMS layout would look like this though (per bulletpoint assigned)

It wouldn’t necessarily actually need to use a dynalist API at all, since the data can be read straight from the DOM, but it would make retrieving data much easier though / sending back data as well. If no dynalist API available ,then it would have to be an apikey sitting inside the parent bulletpoints note instead.

tl;dr

look at the last image. it sums it up

basically, I want a way to save a specific “View” of data

  • What bulletpoints are collapsed
  • Which ones aren’t
  • Which bulletpoints to show / hide
  • Ignore newly added or deleted bulletpoints (or update on an ongoing -dynalist API basis / calls)

This would give dynalist more database-y features for filtering data and getting a better context of more complex data (just think of adding excel-like features into dynalist). Normally to do this right now you would just use tags.

using dynalist API (or even a tamperscript) to an external server or locally cached data for storing “Save states” would make things easier. Namely, the “Save state” data would just be referenced by one key, which in turn has a simple relational database-style setup with only 1 table per save state

This is great for outlining and taking notes of a complex document. Like for instance, you wanted to make sense of 100,000 lines of code, you could outline it first in its hierarchial file form in dynalist, take notes in each area, “Save” the states and preview what things you want. The use-case for this is mostly in the science / computer science / engineering field though

was just reading this

although markdown table support is a planned feature in dynalist already (last time I checked), why not have support for embedding CSV type data?

For instance,

say I have this CSV file with this data

Resaving the .csv file into .txt looks like this:

why not have spreadsheet functionality right inside the note like this? (its very similar to @piotr code block support in some ways for activating the table - found here: Multi-line code blocks - basicaly press a hotkey to activate a tamperscript to make the excel spreadsheet)

When you actually move values inside the spreadsheet, it will update the node-unrendered contents values

Subsequently have really basic math support for multiplication, adding, subtraction, division. And adding new rows and columns of data

Use libreoffice, or apache open-offices source code for reference

The other option is just use airtable and embed it right in dynalist though

this should be lumped in with the feature adding columns to items

I am sure a lot of what I want has already been mentioned. But I’ll just say that the more freedom we get, the better! If I can have methods to read, add, and remove items it would be great.

One particular API feature I would really like is the ability to check and uncheck items. For my use case, I would want a way to uncheck all items (even better: a way to uncheck all items under a specific item or that matches a search term).

3 Likes

Hi! I don’t think it is mentioned already here. Besides traditional APIs to fetch elements in Dynalist documents, I would love to see a WEBHOOK, so to be able to subscribe to changes in the document, without having to pool the API and check differences in the reply.
Three basic APIs and Webhooks that would be enough in my use case would be:

  • API to fetch a dynalist document (the entire document, preferably in json format)
  • API to write a dynalist document (or overwrite it), preferably with json payload
  • WebHook to get notified about changes in a certain document

Thanks!

2 Likes

I love the way Airtable (basically a spreadsheet-database hybrid) allows for notifications with Slack.

Whenever you create an update to cells within a specified view it sends that to Slack.

The corollary in Dynalist would be being able to specify a number of readable attributes for every item such as:

  • Item text
  • Item note
  • Creation date

And some new attributes for structured data:

  • Priority (critical, high, normal, low)
  • Status (e.g. new, in-progress, completed etc)

If I could have collaborators able to update priority, status etc for any bullet and have those updates then as notifications in Slack then I’d stop needing Asana or Airtable for project management.

2 Likes

Item Properties special sub-item

This could be implemented by having a special sub-item called $properties for example which contains customisable metadata for an item.

For example:

Ideally it allows arbitrary properties to be created, but also has formatted property types which better interoperate with other integrations.

This sort of extensible framework also is flexible enough to allow later GUI customisability e.g. maybe some people want to display the Status and Completion % in-line with the item, whereas others might prefer seeing Assignee and Deadline Datetime.

The GUI for this could even be organised via properties e.g.
GUI itemleft [=] Status
GUI itemright1 [=] Priority
GUI itemright2 [=] Completion %

4 Likes

!(9/14/2017 12:25)

I haven’t posted any ideas recently but here’s some ideas I still want to be implemented down the road when I get around to it

Most issues Ihave right now with dynalist is not navigating to the doc I want fast enough from whatever I’m doing at that moment. That, and navigating through dynalist panes in chrome is challenging as well

For instance, I might be on one document, working on some coursenotes or something along those lines, realize I need to cross reference another document (or several), but have to use piotr’s omnipanel to open that doc in a new tab. I wish cross-doc navigation in dynalist was better overall

API-based solutions (that aren’t too difficult and I’ll probably work on these later)

  • Automatically put a document in a folder based on its name prefix (I make one doc almost every week, it gets kind of tedious moving files around).
  • Press a hotkey, open up dynalist in new tab, dynalist asks which file I want to open (as opposed to dynalist opening the last tab)
  • A better overall version of CTRL+O for navigating files ( I’d like more keyboard navigation around documents, having so many documents now, keyboard nav is faster)
  • A control panel for navigating docs (I would really like a method of “tagging” documents themselves with metadata -> Very similar to how wordpress handles blogposts with categories and tags))
    - With CTRL+O, Press CTRL+Click to open that item in a new tab (as opposed to in same tab) → I’m going to implement this first, once I finish this other course about modifying the DOM so I can understand it in more detail.
  • Based on document prefix name, use a different style favicon

Less high priority API based solutions

  • Right side panel style navigation similar to app.classeur.io
  • Javascript based spreadsheets
  • Ability to hide node’s notes on an individual basis
  • Airtable-like / database features (highlight over a specific tag to “expand out” text, useful for contact info. E.G. type in @client-name and hover over to see information about them)- Basically a search parameter based on typing within that node
  • Anki-like integrations → Not 100% sure how this is integrated, but I dumped many ideas here. As of right now I use dynalist to breakdown and understand information, some other ways to consolidate knowledge, and anki to retain it. Wish there was a streamlined method of keeping track of what things I put in anki from dynalist.

Non API specific things:

  • Force dynalist in chromium to open links in chrome (Not entirely sure how this is done) yet still
  • Write a python script with some regex to rebuild all my imagelink names if I need it later on (e.g. amazonS3.com/imageName instead of imgur.com/imageName)

Generalized features I would like

  • ++highlighter formatting++ (piotrs powerpack highlighter gets wonky sometimes, and I really just want a 3rd method of formatting text) → I’ll implement this later too
  • Stickytabs (at bottom of screen) / splittabs built in dynalist, so I could view multiple docs all on one page natively

General issues I have right now

  • Opening a file in a new tab in dynalist doesn’t always go to the homepage of the file

  • Global Search is rather tediously and slow when typing things out, I really wish I could type something out first, then hit search (not an API-specific thing) as opposed to dynalist running a search on each letter I put in. Its becoming troublesome when my docs get larger and longer


I haven’t done any of the API related things I want too try out and am just waiting and am waiting for API doc + learning some related courses that I need to know before attempting it.

2 Likes

I’m trying to limit the number of documents because the search function in Dynalist is still cumbersome and you can work directly on search results only when it’s a document specific search.

But the way you are moving, I do wonder if you are thinking of a more Evernote style UI, with documents instead of cards.

I definitely think evernotes tagging system is a gold standard to be emulated. I think of evernote to dynalist as this in terms of UI that I would like:

  • “1 evernote Note = 1 dynalist document”
  • “1 evernote notebook = 1 folder in dynalist”
  • “1 evernote notebook stack = nested folders in dynalist”

Evernote notes (analogy: dynalist docs) can be searched with tags, but dynalist docs cannot

The only workaround is to just name your docs with tags in the name. I mean, that’s what I do right now, but I would really like embedding meta-data tags for documents. Perhaps in the root bulletpoint’s note store that info there. Scaling up 1000 + evernote notes (analogy: dynalist docs) is easy with tags. Dynalist not so much.

I have about 70 documents at the moment, I could probably cut it down to probably 40. But as I take new courses, read new textbooks, each of those are going to have their own permanent document. I can only see 30 documents at any given time on my file panel on a 1920x1200 screen. The number of documents I will have in the forseeable future is only going to get bigger and more tedious to manage.

My general rule of thumbs for documents is this:

  • 1 course = 1 document this doc list grows quickly over time
  • 1 reference sheet = 1 document (e.g. a git sheet, a javascript specific doc, a CSS specific doc) this doc list grows steadily over time
  • 1 General sheet = 1 document (e.g. journal log notes, a doc for testing new powerpack features, a doc for common contacts for work, dynalist powerpack guidelines, a doc for all my livechat logs, a doc for really random ideas, etc) this doc list doesn’t grow in time
  • 1 project = 1 document (e.g. These are are like my journal log notes, but specific to that project. Examples also including travel planning as well) this doc list grows slowly over time

Project docs and reference sheet are sometimes finicky when deciding what should and shouldn’t be a doc (I have a lot of blank docs here that didn’t work out, e.g. a project got scrapped, I didn’t really need a reference sheet that I thought I needed or used github / anki /some other premade tool instead, etc), but coursenotes + general sheet notes are pretty much set in stone for me

I’m not utilizing tags as often as I do anymore… mostly because I hardly ever find myself doing tag searches and just use keyword searches (mostly, for a specific programming term or phrase). The only times I use tags is when I need to selectively organize how I look at a bunch of information on a doc, and when I do that its only a handful of tags I use. Also, I’ve been taking significantly less notes than I used to and being more selective on how many images / gifs I use, etc.

I started to use anki for retaining information long term from things I generate and breakdown in dynalist and its been working fairly well for me. What’s nice about dynalist is I can format some nice code blocks in dynalist using PowerPack and use graphic cloze deletion using shareX afterwards (image below). I have anki setup similar to how I’d set up evernote in terms of tagging structure / folder structure. I’m using it to to memorize APIs, functions, methods, properties, of any language that I’m trying to learn. I use my dynalist notes for inspiration on what flashcards I should be making. Then I go through my anki flashcards on my phone, and it looks really nice too. I’m thinking I still need a way to synchronize some sort of workflow from dynalist to anki (e.g. making anki tags faster, making cards easier, what cards am I missing on what subject, etc) Anki is really convenient for me here since I can do some mindless task while refreshing up on some knowledge I learned

Also, I don’t currently dynalist for any task management or collaboration at all… I just use tabsnooze on chrome and stickynotes still works good enough for me. Stick it on my bedroom doorknob, on my phone, on my wallet, on my desk, etc. Haven’t even looked at powerpack agenda at all. I like note reminders to be simple

Anyways, this got a bit off topic but those are all my updated notetaking conventions atm. Using dynalist mostly for just for taking notes.

I’m trying to limit the number of documents because the search function in Dynalist is still cumbersome and you can work directly on search results only when it’s a document specific search.

By the way, you know you can change what search results you see first, depending on which document is higher up on the file pane? I put my spammy notes at the bottom of my filepane so they appear last

That reminds me, that would be a nice idea too. Tell dynalist what the priority of search results should be when you search up an item. There’s no way to do anything like that as of now. I think search could be improved to do many more things overall though. I almost never remember when to tag things in general (since I’m usually thinking about my notes and that topic and just usually in a notetaking “zen mode”), so I always almost do keyword searches afterwards

That’s a good tip about the order of documents in a Dynalist search.

I have a few PhraseExpress shortcuts for searching for Evernote. My most common is to populate the search filter with “intitle:” which only searches card titles.

The big problem, of course, is the size of the database. Mine is up to 6gb with nearly 20,000 cards. It’s impossible to use for normal work, but still useful as an archive and reference.

1 Like

First usecase:

write a dynalist companion timer/pomodoro-app:

  • have the full search functionality available
  • add/delete, check/uncheck items
  • reorder items
  • get notified about specific changes (webhooks)

Second usecase

make documents smart: run a script (whenever an item got changed, added, deleted, reordered) to e.g. calculate the current progress, sort the list…
(this functionality is somewhat available with browser extensions, which are not available for every client though)

I see that we can make use of amsmath (or similar) notation to directly generate beautiful equations. I love that, so thank you for implementing it. Now I wonder if it might be possible to extend the LaTeX functionality a bit more.

Creating Tables with LaTeX Syntax

A nice and maybe easy solution for creating tables might be the generic whitespace ignoring syntax of a LaTeX-table. That way, there wouldn’t be a problem with indentation, for it is the very heart of an outliner like Dynalist.
So we could type in something like this:

\begin{tabular}{ l | c | r } Val1 & Val2 & Val3 \\ \hline 1 & 2 & 3 \\  4 & 5 & 6 \\  7 & 8 & 9 \\  \hline \end{tabular}

to generate this:

Of course, the math-symbols get initialized with the double -$: $$\wedge$$ as it is inline-practice of a given .tex-file. Would it be very difficult to implement a seperate function like \begin{} \end{} to behave like sketched above? I think that would be a fantastic feature.

1 Like

@P_A_Monsaille Thanks for the post!

Unfortunately this doesn’t belong under the API thread, which is for proposing ideas for the API (mainly for pulling data from Dynalist and push changes to Dynalist in a programmatic way).

Re: extending LaTeX, we use KaTeX for a partial LaTeX implementation, so I recommend looking into their official website to find out if it’s possible.

Thanks again for the kind post :slight_smile:

1 Like

Are you any closer to releasing an API?
I’m looking for ways to more tightly integrate Dynalist with Android (like notifications and a widget or something similar).