Giter Site home page Giter Site logo

orgzly-android-revived's Introduction

Get it on F-Droid

Orgzly Revived

Orgzly Revived is a community-maintained version of Orgzly, as the development of the original app is no longer active.

The Orgzly Revived project aims to continue development of the Orgzly application. The rebranding is due to the disappearance of the Orgzly author so we, as the community, had to come up with a new solution. We plan to continue adding useful features, fixing bugs, keeping up-to-date with technological evolution, and generally maintaining the Org Mode outreach and its support on Android.

Orgzly is an outliner for taking notes and managing to-do lists. The source code repository is available on GitHub but is no longer actively maintained. We have used this code as the base for Orgzly Revived.

With Orgzly, you can keep notebooks stored in plain-text and have them synchronized with a directory on your mobile device or an SD card, WebDAV server, or Dropbox.

Notebooks are saved in Org mode’s file format. “Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.” See http://orgmode.org for more information.

End-user documentation

Find out more here: https://github.com/orgzly-revived/documentation

Building & testing

If you don’t use Android Studio and wish to build and test the app from command line, the standard set of Gradle tasks is available. For example:

  • ./gradlew build builds the project and generates APK files
  • ./gradlew connectedAndroidTest runs instrumented unit tests

Make sure you turn off animations for the device you’re testing on.

Contributing

Please feel free to get involved in the project on GitHub by contributing issues, ideas, or features! We generally plan to leave existing open issues in the original repository and reference them here as they are addressed.

There is also a Matrix chat room where anyone is welcome to join: #orgzly:matrix.org.

License

The project is licensed under the GNU General Public License version 3 (or newer).

orgzly-android-revived's People

Contributors

aancel avatar alensiljak avatar amberin avatar bemyak avatar benmoran avatar cbkerr avatar colonelpanic8 avatar debanjum avatar devhyper avatar drmfinlay avatar dwoffinden avatar endi1 avatar fresheed avatar halvorlu avatar karlicoss avatar licaon-kter avatar lvic avatar mackieloeffel avatar mamins1376 avatar muhaaliss avatar natkarmios avatar nevenz avatar oujunhao avatar pxsalehi avatar riyyi avatar sarg avatar sodel-the-vociferous avatar sp1r1t avatar stefan2904 avatar tulth 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

orgzly-android-revived's Issues

Alarm clock not working

Thank you for all your efforts to keep Orgzly in developement!

I have encountered an issue, the alarm clock feature "Use alarm clock: For reminders with the time fo day set" doesn't work on my phone. (Android 12)

In both v1.8.10 and v1.8.11 the push notification appears as usual. Also in both versions I can see my alarm clock icon appearing in the android status bar, next to my wifi icon etc., when I set a time of day for the scheduled time of the task, meaning something is happening, but my actual alarm never rings.

This issue has already been mentioned in Orgzly #654 for Orgzly, however I wanted to mention it in the revived project as well.

Again, I'm incredibly happy to see you all do the work you're doing, thank you!

Translations

Let's work out the Translations here.

Right now, we link to the Orgzly translations in the Readme doc. Since I assume we can't maintain those, either, we probably have to come up with a solution for people to continue translating the app.

I'm not sure if we can get the translations from the existing Orgzly project, wherever it is hosted.

Ideas?

Problems with Git repository

  • I have searched for existing issues that may be the same as or related to mine.

Im testing version 1.8.11 and I have numerous problems with git repositories.

  1. When I create git repo, message about missing ssh key disappears too quickly. Few first times I thought it was a simple crash.
  2. I cannot create any ssh key
    Screenshot_20231107_102855_Orgzly Revived
    Screenshot_20231107_102902_Orgzly Revived
    Screenshot_20231107_102910_Orgzly Revived

Turn on GitHub actions

Might be helpful for people to install the apk.

I'd be happy to take on setting up some more elaborate actions, I've never published to fdroid though.

Locally deleted notebook is not re-added from repo until there are changes on remote

If the user deletes a notebook locally to get rid of some weird state which she doesn't want to sync, Orgzly should re-create the notebook upon next sync, since it is present in the Git repo, but not locally. This was the behaviour before 74eeb32, because the repo was walked during every sync. But after 74eeb32, the deleted notebook will not be re-added until new commits are fetched from the remote.

I'm not sure how big an issue this is. The previous behaviour that I'm now missing was not exactly intuitive, either. And the scenario is perhaps unusual enough that it's acceptable to require pushing changes from another device. But it does bother me...

tapping popup buttons to customize has no effect

  • I have searched for existing issues that may be the same as or related to mine.

I'm using:

  • orgzly1.8.12 from fdroid
  • pixel 7a
  • GrapheneOS (it says up to date as of posting, can't find specific version)

Publishing to Play Store

  • I have searched for existing issues that may be the same as or related to mine.

I would like to use Orgzly Revived with data on my personal profile on Android but I am restricted to apps in the Play store. The standard Orgzly has an outstanding issue with ssh keys that prevents me from using it with git.

Cloning repos is extremely slow

I think there's a real risk that users will believe the app has frozen, and try to abort the cloning.

I just tried re-cloning a repo of mine with a size of 2,7 MB on the server. If I clone the repo to my laptop it takes about 3 seconds. When I cloned it to Orgzly, it took almost a full minute.

Something must be wrong in the cloning-related logic, because I cannot imagine that disk I/O or the git clone command itself is being this slow.

IIRC, there are also quite a few deprecated methods involved in the current cloning-related code, so I suppose we could start by cleaning that up a bit.

Events/ Timestamps with repeater in them do not show up in search.

I am not able to create a search query that can show the events for tomorrow (for example birthdays). I save events with timestamp and repeater (for example Alex Birthday - <2022-10-05 +1d>)

so, if I search for today's event with (b.events AND e.eq.today) on the date 2023-10-05 , it should show up Alex Birthday. But it does not seem to work like this. This would show up in agenda but not in search.

Thankyou so much for reviving orgzly.

Many feature requests, prioritized

I was involved in feature requests in the original repo. Here they are in order of importance and expected ease of implementation and thank you for reviving Orgzly!

High priority or easy to implement:


Medium priority:


Low priority:


Bug:

Thanks a lot!

Git: Missing notebooks are only imported from repo upon remote changes

I thought I was clever when I skipped repo walks if the Git repo has not changed since the last sync.

But this causes problems in at least two situations:

  1. During the first sync after cloning. Notebooks have not yet been created, but since nothing changes in the Git repo during sync, Orgzly will not walk the repo to discover the notebooks.
  2. If the user deletes a notebook locally to get rid of some weird state which she doesn't want to sync. In this situation, Orgzly should re-create the notebook upon next sync, since it is present in the Git repo, but not locally. But this will not happen until HEAD changes in the Git repo.

Without having thought it through, my gut feeling is that these scenarios could probably be handled by adding some simple comparison of the number of files in the Git repo and the number of notebooks linked to the repo. But we probably don't want to go back to walking the repo during every sync.

Notification settings don't work

  • I have searched for existing issues that may be the same as or related to mine.

It is not possible to access the menu to choose the sound of the alarm.

Add a devcontainer

https://containers.dev/

I think we should try to make it super easy for new people to hack on the app.

Might mess around and use devenv since it'll autogenerate the devcontainer.json and kill two birds with one stone.

Upgrade to using Environment files

There are tons of warnings during the build, which we should tackle soon.
Some of the commands will be disabled soon and those should likely be handled first:

Warning: The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files.
For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

Sync at determined intervals

  • I have searched for existing issues that may be the same as or related to mine.

Sync with repos should happen in the background:

  1. at predetermined intervals.
  2. monitoring external files of a repo for change.

The second one may cause (modestly?) increased battery consumption but is very important to avoid conflicts. It can be off by default.

Some functions of the dropdown menu don't work

Hey. Excellent job. I'm really glad to know that you guys have taken on the effort to continue with the updates for this great app. Thanks a lot and keep it up!

The icons in the drop-down menu for queries don't work, neither the one for direct note deletion nor the one for changing its location in a notebook. Can you fix it in the next stable version? Thanks a lot.

Move Git working directory to private storage

Copying from orgzly/orgzly-android#941:

It always seemed wrong to me that the Git working directory is placed in public storage.

The other day, my Pixel suggested I clean up some "unused files" in my public storage, and because I was not paying proper attention, I ended up trashing some files from Orgzy's .git directory. (I then tried to restore them from the trashbin, but my workdir was still broken for some reason.)

This is just one of the issues with storing the Git dir in public. I have also seen multiple bugs related to directory selection/creation and storage permissions (e.g. orgzly/orgzly-android#24 (comment) and orgzly/orgzly-android#916). The fact that the user needs to create an empty directory before adding a Git repo is also pretty bad UX, in my opinion.

I'm thinking this issue could be a forum for discussing the pros and cons of private vs public storage for this directory.

I'll start by quoting an old comment by @IvanMalison in orgzly/orgzly-android#543 (comment):

@amberin, yes, conflict resolution DOES likely happen on another system, but even in that case, we need to be able to manipulate the raw git repository, because when there IS a conflict, we will need to put the changes from orgzly somewhere back out there (i.e. on a branch that is not matched up with master). Then those conflicts need to be resolved and synced back in to the main master branch.

I suppose that we could have orgzly simply push its view of master to another branch, while leaving its view of the world as the local master, but I still think there is value to exposing the underlying git repository to the user just in case things get kind of hairy.

(Since then, this has more or less been implemented; we push "conflict branches" to remote, and conflicts are expected to be resolved on another device. We then automatically return to the main branch as soon as possible.)

I can see the value in being able to manually poke around in the Git working directory using some Git app on the phone. However, I have personally never gone to the trouble of doing so, despite many hours of Orgzly development which has put my phone in various weird states. And as my recent experience shows, there is a flipside to this ability. In my case, I was indeed unable to restore my .git dir to a working condition despite having access to all the files and tools. (This may of course be attributed to my own stupidity, but it is probably not completely unparalleled.)

If this is ever implemented, one might add a button in the RepoActivity for copying the .git and working directories to public storage, so that its contents can easily be salvaged if the remote is somehow lost.

Calendar Provider

This is a long-term dream of having the task dates displayed in a Calendar.
Orgzly should register itself as a calendar provider, allowing regular calendar apps to display the timed events visually on a time calendar.

The first calendar to offer would be Agenda. Agenda is a pre-defined query, whose results could be offered through the Agenda "calendar". Agenda is limited to the upcoming 2 weeks and that might be enough for now, to see the most-immediate upcoming tasks.

Other calendars can be worked-out later. Generally, any saved query could be offered as a calendar, too.

Not all tasks have dates set so this needs to be fleshed-out, if required at all.

Any calendar app on the device can choose to display this calendar along with others, "real" calendars, or just in a week, day, or month view.

This is the ultimate goal and overshadows #38, which is just a step in that direction. A lot of work overlaps, anyway, so #38 might also be possible as a side-effect, if this is implemented.

Related:

LocalBroadcastManager is deprecated

It is used in four classes:

  • ui/main/MainActivity.java
    • registers receivers for a few different intents, e.g. ACTION_OPEN_NOTE, ACTION_OPEN_BOOK
    • broadcasts many of said intents upon user actions such as opening a note (most intents are only used in this class!)
  • ui/CommonActivity.kt
    • registers receivers for a few different intents, such as ACTION_DB_CLEARED and ACTION_BOOK_IMPORTED
  • data/DataRepository.kt
    • broadcasts two intents: ACTION_DB_CLEARED and ACTION_OPEN_BOOK
  • usecase/UseCaseWorker.kt
    • broadcasts intents when notes are updated
    • broadcasts the ACTION_BOOK_IMPORTED intent after importing the "getting started" notebook

Sync one repo at a time

  • ✅ I have searched for existing issues that may be the same as or related to mine.

I have started to use multiple Git repos. It works well, but syncing is pretty slow, especially when there are multiple changed notebooks.

I haven't looked at the logic for the other repo types, but I suspect Git syncing could be made a lot faster if we would group notebooks by repo before syncing them. This would speed up Git syncing even when using only a single repo.

Today, sync means looping over all notebooks and syncing them one by one, in an order unrelated to their repo links. (I have moved git pushing out of this loop to save some time with git repos. Unfortunately, we still push once per changed notebook when there are only local changes, due to SyncRepo.storeBook being called both in this scenario and during force-saving. But that is a separate problem.)

Syncing notebooks grouped by repo would allow a much faster workflow for Git. We would probably not need to loop over each notebook, as Git already knows what has changed. And when there are changes, they could all go into a single commit. Having full control of the sync process of each repo would allow us to be more economical with fetch/push and possibly other time-consuming operations.

Looping over notebooks would obviously still be possible for all repo types; it would just be done one repo at a time.

Can anyone see challenges with this approach?

Add WAITING state

As per GTD, there is also the Waiting state for when the task depends on an external party.
I'd suggest that we add it to the default list (todo, next, done).
Not sure what it is like in OrgMode in Emacs but I find that one really helpful.

Allow declaratively specifying orgzly searches in org file

  • I have searched for existing issues that may be the same as or related to mine.

My thought is that orgzly would look for a file, perhaps named .orgzly-searches.org that looks like:

* Agenda
#+begin_example
.it.done ad.7
#+end_example

Or if some find that too noisy and don't also use mixed pitch fonts:

* Agenda
.it.done ad.7

Maybe both would be pretty easy to support.

If this file exists orgzly would use this as the source of truth for searches.

As I write this, this approach could even be used to declaratively specify other orgzly settings too.

Orgzly seems to recreate files deleted from the org-mode directory

  • I have searched for existing issues that may be the same as or related to mine.

I want to start using orgmode as a personal GTD system. I came across this post on reddit:

https://www.reddit.com/r/orgmode/comments/14czljd/orgzly_orgmode_android_client_has_a_fatal_bug_for/

orgzly/orgzly-android#287

This bug seems critical. I found related issues on this repo: #22 and #28 however they while seemingly related to the mechanism they don't seem to mention exactly the same problem.

Has this been fixed anyhow?

Search term for headline

In particular for a TODO widget, I'd like to be able to search for a headline, as I'd like to only show one category of TODO's on my phone. At the moment I am getting around it using tags, but it doesn't seem great to tag everything under the headline "Personal", with the tag ":personal:"

APK available?

This repo was started three weeks ago, and there has been some talk of setting up Github Actions. Is there any information on what could be holding up production of an APK? I'm very excited to try the new time clocking features, which are unavailable from google play.

[Meta feature request] Note-specific options as property

  • I have searched for existing issues that may be the same as or related to mine.

Example:

  • Let's say you want to disable notifications globally but enable it for one particularly-important note. You can do that by manually adding a custom property:
:PROPERTIES:
:orgzly: notification_on
:orgzly: notification_sticky
:END:

This can be applied for other options:

  • Always exclude a particular note tree from search
  • Sort a particular note tree alphabetically
  • Custom color for particular note
  • etc

Main branch name should not be set from user input

Now that many people are changing from "master" to "main" as the name of the main branch, I see a risk with the current code. The user is expected to set the name of the main branch when configuring the repo, and we currently provide a default value of "master". If the user sets an incorrect value, this will make Orgzly constantly try to return to the "correct" branch, but failing to do so. This will currently appear to the user as a merge conflict which never gets resolved.

I believe there is no reason to ask the user what the name of the main branch is. After cloning a repo, we are always on the main branch, so we should just check its name right after cloning a repo, and then store that name in the repo preferences.

Of course, we could reduce the risk of the user setting an incorrect value by removing the default value of the field. This forces the user to make an active choice, which is better. But it is still bad UX, as we don't really need to ask the user for this information.

Notes are lost on cut and paste

  • I have searched for existing issues that may be the same as or related to mine.

I frequently move notes from Inbox to other notebooks.
If I cut one note then cut another note without pasting first, former note is lost.

Im not sure is it a bug or feature request. This is certainly a problem for my workflow.
For now I'm using Nextcloud history and diff, but its cumbersome and requires notebook or desktop computer.

Options

  1. add warning "current note in clipboard was not pasted, do you want to overwrite it?"
  2. even better, full undo system?

Explain/remove Internet permission

Related to #7.

It is reported in the F-Droid analysis that the app requires the Internet permission when the original did not.
The removal of Dropbox in the fdroid version might be enough to not require this.

My observation in this regard is that there is still a WebDAV sync, which might require this.

Can anyone confirm if the Internet permission has been explicitly enabled (I might check the history over the weekend) and/or why exactly it is needed?
Thanks!

Play sound on completing todo

  • I have searched for existing issues that may be the same as or related to mine.

I have this on my org config using:

(add-hook 'org-after-todo-state-change-hook 'my/org-gamification/play-sound-if-marked-done)

I'd like to play the same sound with orgzly.

Support FILETAGS

  • I have searched for existing issues that may be the same as or related to mine.

I use FILETAGS a decent amount in org-mode. My current workaround is to effectively start notebooks on the second outline level, which is not great.

Issue in the original repo:
orgzly/orgzly-android#239

Export notes

Add an option to export notes (either whole or current scope/selection) as in org-mode (at least to html, or, preferably also to pdf by using android's printing functionality).

Add a detailed Contributing doc

A more fleshed-out Contributing doc is needed for the project.
For the moment I've created a section in the Readme, just to cover the very basics.

Allow using existing git repositories

I think it would be worthwhile to allow using an existing notes repo. Right now the app complains that the folder is not empty.
If it could detect a git repo and just continue from there, that would be great.

I'm currently using git sync in Termux. Orgzly syncs with the folder.

Garbage collection may not be performed often enough

I just verified this by running "git gc" on my main repo in a long running Orgzly install. The repo shrank from 18 to 3 MB.

We should be able to trigger gc but let Git decide whether it's necessary. That way it should not need to prolong the typical syncing experience.

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.