GithubHelp home page GithubHelp logo

zadam / trilium Goto Github PK

View Code? Open in Web Editor NEW
25.3K 269.0 1.7K 119.76 MB

Build your personal knowledge base with Trilium Notes

License: GNU Affero General Public License v3.0

JavaScript 98.46% CSS 0.97% Shell 0.15% Dockerfile 0.02% Batchfile 0.03% EJS 0.33% HTML 0.05%
knowledge-graph note-taking notebook knowledge-base knowledge-management knowledge-management-graph electron electron-app local-first self-hosted

trilium's People

Contributors

abitofevrything avatar agentydragon avatar alexeikharchev avatar bhank avatar bill88t avatar contributor avatar dependabot[bot] avatar dymani avatar dynamofox avatar eliandoran avatar eltociear avatar ewingrj avatar fliegendewurst avatar gabe565 avatar ljgonzalez1 avatar manto89 avatar mechanarchy avatar meichthys avatar mirwaisse avatar mm21 avatar myzel394 avatar nriver avatar rauenzi avatar sigaloid avatar siriusxt avatar soulsands avatar spasche avatar st3iny avatar thfrei avatar zadam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

trilium's Issues

Creating subnote doesn't play nicely with lazy-loading

When creating new subnote into unexpanded (not yet loaded) note, then note is created but it looks like it's the only note in its parent without any siblings. This is because we don't lazy load siblings before creating the note.

Create Android app for submitting notes and images

The idea is to provide quick way to share text and images from your phone to Trilium. For example you take a picture with phone camera and share it to the Trilium app which uploads it to the Trilium server. Content will be uploaded to either fixed location or e.g. to "date" note.

App won't allow reading notes/content, it's essentially "write-only".

Strange behavior saving empty attributes

  • have a node which already has some attribute
  • Alt+A
  • click twice "Add new attribute" and click "Save" without actually filling anything

"Note attributes" dialog appears again this time with single empty attribute.

Delete attribute

It's not possible to delete attribute in 0.5.5 (or I haven't figured out how).

Attributes visible without going to dialog

It might be good idea to show attributes/values for selected note in status bar (either below actual note or at the bottom of the app, which may be more consistent as it would be always the same position).

Allow marking code (JavaScript) notes for execution after application loads

Code is executed on frontend (but of course can call backend as well). Marking is done through some custom attributes. Multiple notes can be marked as such, but order of execution is not defined. Note execution is the same as usual - all JS subnotes will be included etc.

Example would be custom keyboard shortcut registration on app startup.

Cleanup of old backups

Currently backup is configured to create snapshots daily. This can eat up significant storage quickly so it would be good to clean up old backups automatically.

It would be nice to do it in some structured manner though - e.g. keep daily backup for past week, then one for every week until one month, then one per month etc. But maybe that's an overengineering ...

When pasting to trilium from Windows clipboard, CR/LF are converted to spaces

Source text example of multiple lines beginning with a dash:

- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- Donec imperdiet orci eu arcu tincidunt varius.
- Fusce semper mi at sem interdum posuere.
- Pellentesque viverra erat et erat fringilla, condimentum feugiat dolor scelerisque.
- Vestibulum faucibus eros a nulla bibendum, at dignissim augue placerat.
- Praesent congue sem tristique convallis tempus.

When pasted into trilium, instead of a bulleted list:

  • Lorem ipsum dolor sit amet, consectetur adipiscing elit.
  • Donec imperdiet orci eu arcu tincidunt varius.
  • Fusce semper mi at sem interdum posuere.
  • Pellentesque viverra erat et erat fringilla, condimentum feugiat dolor scelerisque.
  • Vestibulum faucibus eros a nulla bibendum, at dignissim augue placerat.
  • Praesent congue sem tristique convallis tempus.

it's converted to a single paragraph:

- Lorem ipsum dolor sit amet, consectetur adipiscing elit.  - Donec imperdiet orci eu arcu tincidunt varius.  - Fusce semper mi at sem interdum posuere.  - Pellentesque viverra erat et erat fringilla, condimentum feugiat dolor scelerisque.  - Vestibulum faucibus eros a nulla bibendum, at dignissim augue placerat.  - Praesent congue sem tristique convallis tempus.

Multiple values per attribute

I sometimes have multiple values for attribute e.g. Supplier can be Supplier_A and Supplier_B for certain nodes.

Might work to have "+" button to add additional value or allow duplicated attributes, not sure what you think about this in general?

Expose note-scoped functionality on UI

Currently "Show note source" and "Note attributes" are available only from keyboard shortcut which is not really discoverable and intuitive.

Current "Show history" button will be converted into "Note actions" button (maybe hamburger icon or "...") which will contain (for now):

  • Note history
  • Note attributes
  • Note source

Go to day note dialog

Create dialog which will go to the selected date (date picker). If the day note doesn't exist yet, create it.

This will allow to easily create e.g. tasks for tomorrow / future.

Search doesn't work for lazy loaded nodes

Since Trilium now lazy loads all tree nodes, filtering existing branches doesn't work. Backend returns correct noteIds, but since nodes with these notes are not lazy loaded yet, they won't be filtered.

One way to fix this is to walk through "some path" of every returned note before running the tree.filterBranches.

Notifications / alarms

Add ability to add simple alarms into notes, ideally by just inserting text into note, e.g. something like

@notify tomorrow at five

We don't need to provide any text since that's what the surrounding note is supposed to be.

This has a problem of being relative to present time, but when this is evaluated in the future, value will be different. It would be easier to always specify full date/time like "2018-02-01 17:00:00" but that's way more cumbersome.

At specified date/time, user is notified - with electron we can trigger native notification, in webapp we need to provide some fallback. Once the user "acknowledges" the notification, this is saved and synced across instances. There should be also some way to see all past and upcoming alarms/notifications.

Implement simplified query language to search for notes with attributes

We'll use existing search input. I'm thinking about syntax like this:

@abc - matches notes with attribute abc
@!abc - matches notes without abc attribute (maybe not the best syntax)
@abc=true - matches notes with attribute abc having value true
@abc!=true
@"weird attribute"="weird value" - works also with whitespace inside names values
@abc and @def - matches notes with both abc and def
@abc @def - AND relation is implicit when specifying multiple attributes
@abc or @def - OR relation
@abc<=5 - numerical comparison (also >, >=, <).

some search string @abc @def - combination of fulltext and attribute search - both of them need to match (OR not supported)
@abc @def some search string - same combination

Implementation-wise I'm thinking about just LEFT JOINining all mentioned attributes and then constructing WHERE according to the actual conditions.

Attribute editable only for notes with existing attribute

with 0.5.5

  • select any node which had attribute from 0.5.4 and click button from menu, status bar or ALT+A

Attributes dialog invoked

  • select any node which doesn't have any attribute yet or create new node and click button from menu, status bar or ALT+A

Nothing happens.

Repro with entirely fresh DB created in 0.5.5 as well.

Global keyboard shortcut to create new note from clipboard / selected text

The idea is that you are e.g. in your browser, select some text and press CTRL-SHIFT-C and the selected text is sent to Trilium and created new note with this text under day note.

Could work only in Electron. Not sure if it's even possible or if I need to copy it to the clipboard first (i.e. CTRL-C copies into clipboard and then I can trigger Trilium to read the clipboard contents and save it).

change all column names in DB to camelCase

So far they are named with underscores - e.g. note_history_id. Since we're now entities exposing script API, there's a weird distinction between entity attributes (underscores) and other values (camelCase). This also caused some bugs in regular trilium code in the past.

Also rename note_text to content and note_title to just title.

Add autocomplete for attribute names and values

Use standard jQuery UI autocomplete. The idea is to aid in discovery of existing / built-in attributes and of course easier to type.

For attribute name the autocomplete will list all existing attributes + built in ones - (run_on_startup etc. are present even if not used yet).

Attribute value has autocomplete for values which are used for this specific attribute.

Add attachment support

  • attachment is owned by single note
  • attachments are not versioned
  • no encryption support for now

Ability to filter out certain nodes from "jump-to" dialog and search

These items might be e.g. archives - the old stuff which we want to keep around, but we don't really need quick access to.

This would have a transitive effect on all note paths going through this note.

Simple way to do this is to create a special boolean attribute which would control this.

it's not possible to move clone to note which already contains different deleted clone

Scenario - note Parent and note X of which there's clone X1 and X2.

X1 is moved to Parent and then deleted - but still exists there (notes_tree are soft-deleted).

We then want to move X2 to parent, but that's not possible since X1 is still there (albeit soft-deleted). This is not possible since we keep invariant of unique parentNoteId <-> childNoteId relationship.

Simplest solution seems to be to hard-delete note tree rows instead of soft-deleting them. This will affect sync.

Attribute name can be empty

  • Alt+A on any node
  • "Add new attribute" button
  • Do not specify "Name" only fill in "Value" and "Save"

It's saved as empty attribute name, not sure this is correct.

Add ordering by run_on_startup attribute value

Code which retrieves the startup scripts should order results by the attribute value - this can then be used for enforcing script execution order, which is important for e.g. keeping consistent toolbar button layout (which depends on the order scripts run).

Value for run_on_startup should be optional though.

Add code editor support

Probably https://codemirror.net/

Notes will now have "type" either "html/text" or "code". If code, then note will also have attribute detailing type of code (e.g. javascript) based on which the code editor will be configured.

Note type is chosen when creating a note. It might be inherited when using CTRL-O/CTRL-P from the parent.

Use cases for this feature:

  • code snippets
  • eventually scripting/extensibility support using JS
  • structured data support (e..g JSON/XML) as data sources for the scripting mentioned above

Create day sub-note timing issues

When pressing CTRL-ALT-P if there's no day note, then it is created and then sub-note should be created.

In such case it looks like only day-note is created and not subnote. After reload the subnote appears so it's probably something with reloading note tree.

ctrl+shift+left not sure good UX

Trillium 0.5.4 beta

  • ctrl+shitf+down in tree to get detail of some note
  • type text like "lorem ipsum"
  • use ctrl+shift+left arrow

Expected:
Word "ipsum" is selected (this is kind of standard shortcut).

Observed:
Moved in the tree node up.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.