Skip to content

dec0de/MeeTree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MeeTree

MeeTree is a Nextcloud app for TreePad-style hierarchical notes.

MeeTree stores notes as native .mtre files containing JSON. It imports and exports compatibility formats around that native model.

Features

  • Tree note navigation with a Jreepad-inspired split layout
  • Edit node title and Markdown content with a toggleable Edit mode
  • Add child nodes and delete non-root nodes
  • Drag and drop nodes before, after, or inside other nodes
  • Expand or collapse the whole tree from the tree toolbar
  • Undo tree add, delete, move, and sort actions
  • Remember collapsed and expanded branches per document
  • Create new .mtre tree files from the File menu
  • Open and convert supported files from Nextcloud Files
  • Import .mtre, .hjt, .ctd, and JSON files from your computer
  • Export MeeTree, .hjt, and .ctd files
  • Search titles, content, case-sensitive text, and regular expressions
  • Standalone browser preview for quick UI testing

Install In Nextcloud

Place the meetree/ app directory in custom_apps/meetree or symlink it there, then enable it:

php occ app:enable meetree

GitHub Release Packages

GitHub Actions builds build/meetree-<version>.tar.gz on pushes to main and manual workflow runs. Push a version tag such as v1.1.8 to publish the archive as a GitHub Release asset for Nextcloud users.

Tagged release archives are signed when the repository secret MEETREE_SIGNING_KEY contains the private key that matches meetree/appinfo/certificate.crt. When that secret is configured, GitHub releases include both meetree-<version>.tar.gz and meetree-<version>.tar.gz.sig for Nextcloud App Store uploads. Never commit the private key.

Publish To Nextcloud App Store

MeeTree uses app id meetree. The public certificate is committed at meetree/appinfo/certificate.crt; the matching private key must stay local, usually at ~/.nextcloud/certificates/meetree.key.

Register the app at https://apps.nextcloud.com/developer/apps/new. Paste the public certificate and generate the app ownership signature locally:

echo -n "meetree" | openssl dgst -sha512 -sign ~/.nextcloud/certificates/meetree.key | openssl base64

Upload releases at https://apps.nextcloud.com/developer/apps/releases/new. Use the GitHub release archive URL and the matching archive signature. To generate both signatures locally for the current version, run:

./meetree/scripts/appstore-signatures.sh

The script writes build/meetree-<version>.tar.gz.sig and prints the signatures needed by the App Store forms.

Standalone Preview

To preview the interface without Nextcloud, open meetree/standalone/index.html in a browser or serve the repository root locally:

python3 -m http.server 8080

Then visit http://localhost:8080/meetree/standalone/. The standalone preview saves data to browser localStorage and supports local import/export, but it does not test Nextcloud routing, authentication, or file storage.

File Formats

MeeTree's native extension is .mtre. The file contents are JSON so advanced users can inspect or repair files with a text editor.

Markdown Content

Node content is plain Markdown text. MeeTree opens nodes in preview mode by default; press Edit to toggle editing. MeeTree supports common Markdown formatting such as headings, bold and italic text, links, lists, task lists, blockquotes, inline code, fenced code blocks, horizontal rules, and line breaks.

Storage Behavior

New trees are created in /MeeTree/ by default, for example /MeeTree/untitled.mtre.

Import From Computer

Files imported with the browser's local file picker are saved as converted .mtre files under /MeeTree/. Browsers expose the selected file name and contents, but not the original local folder path.

Open/Convert From Nextcloud

Files opened from Nextcloud Files keep their Nextcloud location.

Native .mtre files autosave back to the same file.

Legacy files such as .hjt or .ctd are converted to .mtre beside the source file when possible, for example /Notes/project.hjt becomes /Notes/project.mtre. If MeeTree cannot write beside the source file, it falls back to /MeeTree/.

MeeTree writes TreePad 2.7 Lite-style HJT:

<Treepad version 2.7>
dt=Text
<node>
Title
0
Content
<end node> 5P9i0s8y19Z

CherryTree .ctd XML has first-pass plain text support. CherryTree .ctb SQLite, encrypted .ctz/.ctx, and Jreepad .jree are not implemented yet.

About

Nextcloud TreeView addon

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors