Giter VIP home page Giter VIP logo

syncorg's Introduction

SyncOrg

A new implementation of MobileOrg, an Org mode app for Android. It is available on the Play Store.

Current features

  • Modern design using Android’s Material Design guidelines
  • Automatic Git synchronization (via SSH and HTTP). Access to the raw files in case of conflict to solve.
  • External synchronization: The app can delegate org file synchronization to an external app.
  • Independent of Emacs: it is no longer required to use it in conjunction with Emacs.
  • Agenda view and Todo list view generated from the org files.
  • Folding of items and sub-items.
  • Share files button

Upcoming features

  • Google Drive synchronization
  • Item management: reordering of items by swiping them
  • Agenda notifications

Want to help ?

Everyone

Register to the Beta Testing program and give me some feedbacks.

https://play.google.com/apps/testing/com.coste.syncorg

Developpers

See the contibuting page, section Android Studio Setup, if you want to build the project.

Screenshots

Here are a few screenshots of the current state of the app.

Main menu

https://github.com/wizmer/syncorg/blob/master/picturesReadme/MainResized.png

File view with 3 states: folded, children only and expanded

Folded

https://github.com/wizmer/syncorg/blob/master/picturesReadme/FoldedViewResized.png

Children only

https://github.com/wizmer/syncorg/blob/master/picturesReadme/ChildViewResized.png

Expanded

https://github.com/wizmer/syncorg/blob/master/picturesReadme/ExpendedResized.png

The TODO view

https://github.com/wizmer/syncorg/blob/master/picturesReadme/TodosResized.png

syncorg's People

Contributors

amarek avatar aperomsik avatar binarin avatar crossblaim avatar danlarkin avatar dushistov avatar edgimar avatar flexibeast avatar hdweiss avatar imd avatar jaschob avatar jeansch avatar johnogle-ls avatar knezi avatar komtak avatar kvj avatar lordvlad avatar malabarba avatar mandarvaze avatar matburt avatar mathiask avatar mf0 avatar naofum avatar novoid avatar philhudson avatar pib avatar rheimbuch avatar rkaercher avatar sachac avatar wizmer 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

syncorg's Issues

cannot execute: git-upload-pack

Hi! I'm getting a TransportException with the message "cannot execute: git-upload-pack". I get this right at the very beginning while trying to set up ssh access to my server. Here's the stacktrace:

09-24 11:07:18.082 21626 22624 W System.err: org.eclipse.jgit.api.errors.TransportException: ssh://[email protected]/home/chris/org/: cannot execute: git-upload-pack '/home/chris/org/'
09-24 11:07:18.083 21626 22624 W System.err:    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:137)
09-24 11:07:18.083 21626 22624 W System.err:    at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:178)
09-24 11:07:18.083 21626 22624 W System.err:    at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:125)
09-24 11:07:18.083 21626 22624 W System.err:    at com.coste.syncorg.synchronizers.JGitWrapper$CloneGitRepoTask.doInBackground(JGitWrapper.java:310)
09-24 11:07:18.083 21626 22624 W System.err:    at com.coste.syncorg.synchronizers.JGitWrapper$CloneGitRepoTask.doInBackground(JGitWrapper.java:276)
09-24 11:07:18.083 21626 22624 W System.err:    at android.os.AsyncTask$2.call(AsyncTask.java:295)
09-24 11:07:18.083 21626 22624 W System.err:    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-24 11:07:18.086 21626 22624 W System.err:    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
09-24 11:07:18.086 21626 22624 W System.err:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
09-24 11:07:18.086 21626 22624 W System.err:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
09-24 11:07:18.086 21626 22624 W System.err:    at java.lang.Thread.run(Thread.java:818)
09-24 11:07:18.086 21626 22624 W System.err: Caused by: org.eclipse.jgit.errors.TransportException: ssh://[email protected]/home/chris/org/: cannot execute: git-upload-pack '/home/chris/org/'
09-24 11:07:18.087 21626 22624 W System.err:    at org.eclipse.jgit.transport.TransportGitSsh.checkExecFailure(TransportGitSsh.java:173)
09-24 11:07:18.087 21626 22624 W System.err:    at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:272)
09-24 11:07:18.087 21626 22624 W System.err:    at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:147)
09-24 11:07:18.087 21626 22624 W System.err:    at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
09-24 11:07:18.087 21626 22624 W System.err:    at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
09-24 11:07:18.087 21626 22624 W System.err:    at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1104)
09-24 11:07:18.087 21626 22624 W System.err:    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:128)
09-24 11:07:18.087 21626 22624 W System.err:    ... 10 more
09-24 11:07:18.087 21626 22624 W System.err: Caused by: java.io.IOException: bash: git-upload-pack: command not found
09-24 11:07:18.088 21626 22624 W System.err:    at org.eclipse.jgit.transport.TransportGitSsh.checkExecFailure(TransportGitSsh.java:172)
09-24 11:07:18.088 21626 22624 W System.err:    ... 16 more
09-24 11:07:18.140 21626 21626 W System.err: org.eclipse.jgit.api.errors.TransportException: ssh://[email protected]/home/chris/org/: cannot execute: git-upload-pack '/home/chris/org/'
09-24 11:07:18.140 21626 21626 W System.err:    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:137)
09-24 11:07:18.140 21626 21626 W System.err:    at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:178)
09-24 11:07:18.140 21626 21626 W System.err:    at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:125)
09-24 11:07:18.140 21626 21626 W System.err:    at com.coste.syncorg.synchronizers.JGitWrapper$CloneGitRepoTask.doInBackground(JGitWrapper.java:310)
09-24 11:07:18.140 21626 21626 W System.err:    at com.coste.syncorg.synchronizers.JGitWrapper$CloneGitRepoTask.doInBackground(JGitWrapper.java:276)
09-24 11:07:18.140 21626 21626 W System.err:    at android.os.AsyncTask$2.call(AsyncTask.java:295)
09-24 11:07:18.141 21626 21626 W System.err:    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-24 11:07:18.141 21626 21626 W System.err:    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
09-24 11:07:18.141 21626 21626 W System.err:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
09-24 11:07:18.141 21626 21626 W System.err:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
09-24 11:07:18.141 21626 21626 W System.err:    at java.lang.Thread.run(Thread.java:818)
09-24 11:07:18.141 21626 21626 W System.err: Caused by: org.eclipse.jgit.errors.TransportException: ssh://[email protected]/home/chris/org/: cannot execute: git-upload-pack '/home/chris/org/'
09-24 11:07:18.141 21626 21626 W System.err:    at org.eclipse.jgit.transport.TransportGitSsh.checkExecFailure(TransportGitSsh.java:173)
09-24 11:07:18.141 21626 21626 W System.err:    at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:272)
09-24 11:07:18.141 21626 21626 W System.err:    at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:147)
09-24 11:07:18.141 21626 21626 W System.err:    at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
09-24 11:07:18.141 21626 21626 W System.err:    at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
09-24 11:07:18.141 21626 21626 W System.err:    at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1104)
09-24 11:07:18.141 21626 21626 W System.err:    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:128)
09-24 11:07:18.141 21626 21626 W System.err:    ... 10 more
09-24 11:07:18.141 21626 21626 W System.err: Caused by: java.io.IOException: bash: git-upload-pack: command not found
09-24 11:07:18.142 21626 21626 W System.err:    at org.eclipse.jgit.transport.TransportGitSsh.checkExecFailure(TransportGitSsh.java:172)
09-24 11:07:18.142 21626 21626 W System.err:    ... 16 more
0

I've cloned the project and verified that this error is happening on the master branch as well. Let me know how I can help get this fixed.

Exclude completed entries in from agenda

This brings up the question of how what a completed state IS is determined (Filed #4).

Emacs uses org-todo-keywords to determine this. I think its great that syncorg has removed mobileorgs tight coupling with emacs, but it seems like some mechanism to incorperate user specific settings is needed. Perhaps a small melpa package that can output a configuration file that is parsable by mobileorg would be a solution?

The number of method references in a .dex file cannot exceed 64K

Hi,

the source code reached the famous problem of insufficiently big dex file and therefore it can't be build.
As I see it, there are the following possibilities:

  • drop support for older Android (the oldest supported version would be 5 (API 21)
  • use proGuard and hope it will shrink the code enough; that also mean update the build API from 24 to 25. It is probably just a temporary solution
  • use multiindex which results in longer starting time
  • clean up the code from unneeded methods

None of this is ideal. For me personally the easiest way would be just drop the support for older Android, but I believe there are still many users with Android below 21.

What should we do about it?

SyncOrg for older Android (4.1)?

Is there any chance of getting SyncOrg to work on older Android versions? I run a Jolla phone and the Android emulation layer is only compatible with Android up to 4.1 (if memory serves me). Is there something major that prevents SyncOrg from being built to work on slightly older Android?

Add examples to "Absolute Path"

Add some examples to "Absolute Path" in ssh setting, so user can reference it or just copy it as a templete, instead of insert a long ssh path

git-remote-gcrypt support?

I'm very interested in using this, but I use Dropbox for syncing my Org files, so I can't use it with this yet.

I've also been thinking about using Git to sync my Org files, but the issue there is that I don't want to upload my Org files to remote, untrusted servers unencrypted. However, I've been testing git-remote-gcrypt, and it seems to work well.

So, any chance of git-remote-gcrypt support? It uses gpg for crypto, but once configured, it's all automatic.

Thanks very much for your work on bringing MobileOrg into the future!

insecure gradlew

in case this project is still maintained: a minor fix would be required to increase build security. F-Droid lint complains:

Found plain HTTP URL for gradle repository:
build/com.coste.syncorg/SyncOrg/build.gradle
repositories {
    maven { url 'http://guardian.github.com/maven/repo-releases' }
gradle build uses plain HTTP URLs for repositories!  This is insecure!
https://max.computer/blog/how-to-take-over-the-computer-of-any-java-or-clojure-or-scala-developer/

Simply make that an https URL, the target supports that. Thanks!

An f-droid release? :)

Hi! I'd like to check out the app, but I don't have Google Play Services. Could you provide the built .apk as a part of the GitHub "release" or (better yet) publish the app on F-Droid? :)

Question: is development still proceeding?

Just found SyncOrg recently and still struggling with setup and usage. Has errors creating folder but worked around that with help from others in issue #31 but then ran into problem with subfolders (I have a dozen or so subfolders in a tree and it ended up recursing during setup and creating 2000+ folders and 20,000+ files which I'm now trying to remove). So I'll just test this without folders and wait for it to be improved, but I see there hasn't been any checkins for half a year and no releases in almost a year.
Is development still happening, wizmer?

Open local .org files.

SyncOrg should be set to open local .org files. It is now nearly impossible to open my org files of I dont use Git or SSH.

example git config for emacs

Hi there,

Could you provide (maybe in the readme file) an example how to use syncorg with git within emacs.

Thanks,
Martin

Cannot synchonize from Syncorg to remote repo

Hi all,

I have configured a repo in a remote machine, did a mobileorg-push and synchronized everything from there to SyncOrg. My problem now is to do the inverse operation, i.e. change some file in Syncorg, synchronize everything back to the remote and then back into my laptop. The problem is from SyncOrg to the remote repo. I am just pressing the synchronize button and there are no error messages. Are there any suggestions of what I might be doing wrong? I am using Lineage OS 15.1 and configured the remote according to this tutorial. Thanks.

Update: Actually, I've tried to change some files on my laptop push and sync again into SyncOrg and it did not work. Apparently only works at the first time. I must be doing something dead wrong. Any help is very welcome. Thanks.

Sync org crashes on folder selection

Hello. The latest version of the app (2.0.5.2) crashed on Replicate Android ROM (based on Android 4.2).

Crash always happens when you click "select directory". On another device with Android 4.4 ROM "select directory" does not lead to any problems, but with Replicant/Android 4.2 it is always app crash.

Hope it helps.

App crashes whenever it tries to access the fs

I'm using the 2.0.5.3 version of SyncOrg on Android 4.3.1 (CM 10.2.1).

When I press "Parent Folder" in SSH setup or "ORG FILES DIRECTORY" in External/no sync setup, the app crashes.

support stronger ssh key exchange algorithm

I guess that this is an issue not with SyncOrg itself, but with whatever library it uses for ssh, but I'll report it here as a starting point:

My server had

KexAlgorithms [email protected],diffie-hellman-group-exchange-sha256

in /etc/ssh/sshd_config on account of this advice, but that prevents SyncOrg from connecting, resulting in messages like:

sshd[1216]: fatal: Unable to negotiate with [IP address] port 43420: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 [preauth] 

It would be nice if it could support at least one of the two recommended algorithms above.

Local filesystem sync: Can't select directory

I have an Org folder in /storage/0/ that I'd like to use for storage (sync'd using Syncthing).

When I select local sync in the setup wizard, I see an empty dir, with no obvious way to select a different directory:
screenshot_20161220-184813

I'm not sure if this is something peculiar to my device, which is
Android 6.0.1, with an SD card "adopted" as device storage.

Follow-up to #23.

App crashes after bad sync

Tried to setup a sync with our gitlab server. Couldn't get it to work, it crashed. Now I cannot open the app, as it crashes immediately. Cannot change the sync settings to try again as it crashes before it can really open. I tried to clean the cache, but that does not help, I tried re-installation, but that also doesn't help. So I'm stuck now with an unusable SyncOrg app. I have no idea how to get it working again, so I can check the sync settings and maybe adjust.

Error message for authentication

Would be nice if the error message in SSH wizard were more specific, like:

  • server not found
  • authentication failed

Even if I put wrong password, it still says something like: GIT error: probably wrong path.

A basic git question

Hope this question is okay here. I am woefully ignorant of git. I have looked at various git intros and have not found a solution to this problem, but admit that I might not recognize the answer if I saw it. Maybe this question can pass as a "documentation issue"? Eventually people as ignorant as I am will want to use SyncOrg. Well, I guess that's already happened.

So far, in my org directory on the server on my LAN I have done

git init

git add *.org

git commit *.org

After the first sync by SyncOrg all the org files appeared on my phone. That was good!

After making changes on the phone and syncing again, though, the org files on the server did not change.

SyncOrg seems to be doing its part, though. Each time I modify and sync, I get three new subdirectories in .git/objects.

Using

git cat-file -p

I do see the changes I made on the phone. So the information is making it to the server. This is also good!

So I must be missing something. A command I should issue on the server to combine the modifications in .git/objects with the main files, maybe? Hoping it's that simple.

Thanks in advance. Alternatively sorry in advance for posting this in an inappropriate place.

FH

Editing of SCHEDULED field ignored by the Agenda view

With latest 2.5.0.3: create new node, set SCHEDULED date for it, save it.
Then check it shows up OK in app Agenda view.
Then right from Agenda view initiate editing of the SCHEDULED date in this node, save and observe this change to be ignored by the Agenda view.

The new date is in the node OK, but Agenda view will still show the node scheduled to old date.
Even app restart does not seem to help - the item is still shown as scheduled at initial SCHEDULED date.

=======================

Second thing is that after app restart I could not see my new node in the org file in the app. The node shows up in Agenda view (with wrong old date attached to it) but now the item is missing from the org file when opened.

Is git required for syncorg?

Apologies if this is obvious -- but is git required for syncorg?

I am getting "Path does not exist or is not a valid repository." when trying to log in via SSH.

Thanks!
David

New and edited entries end up double in Todos and Agenda view

I'm using version 2.0.5 from F-Droid, starting without sync and an empty folder. When I add a new entry, it ends up twice in the Todos list
258573587
1758107630
When I edit the entry, the old entry stays in the Todos list, and two new entries are added.
2134569680
1275408914
Something similar happens to the Agenda view, this is how the agenda view looks like with the same one entry in my test.org file after adding, removing and editing some entries.
2134569680

421245686
817361721
2095662738

Agenda Widget

It would be very useful to have an agenda widget in the homescreen. Any plans for it?

SSH crashes

Hi,
whenever the app tries to connect to SSH it crashes at the very beginning. Namely I'm getting:
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/ietf/jgss/Oid
It clearly can't find a class that was present at the compile time. I've tried to decompile the corresponding dex file, but I couldn't find anything. So it might be a problem with paths. I'm running Lineage OS 7.1.1, can anyone confirm/disprove that this is happening on stock Android 7.1.1, on older Lineage OS...?

Expose intent to create node

It would be useful if one could share, say, a webpage from the web browser to syncorg, and easily create a node out of the URL and title.

Support custom TODO states

Emacs uses org-todo-keywords to allow for custom TODO states. Perhaps I am mistaken, but from what I can tell, syncorg does not currently support this.

All content indentation lost on write

When a change is made, indentation is lost for the whole file. This is particularly disruptive for SRC and EXAMPLE blocks.

For example, when starting with:

* Top
** First
Content unindented
  Indented 2
    Indented 4
** Second
   Content indented
     Indented 2 more
       Indented 4 more
** Third
#+BEGIN_EXAMPLE
=============================
Example unindented
  Indented 2
    Indented 4
=============================
#+END_EXAMPLE
** Fourth
  #+BEGIN_EXAMPLE
  =============================
  Example indented
    Indented 2 more
      Indented 4 more
  =============================
  #+END_EXAMPLE

Adding a new child under Top updates the file to:

* Top
** New child of Top
** First
   Content unindented
   Indented 2
   Indented 4
** Second
   Content indented
   Indented 2 more
   Indented 4 more
** Third
   #+BEGIN_EXAMPLE
   =============================
   Example unindented
   Indented 2
   Indented 4
   =============================
   #+END_EXAMPLE
** Fourth
   #+BEGIN_EXAMPLE
   =============================
   Example indented
   Indented 2 more
   Indented 4 more
   =============================
   #+END_EXAMPLE

org.eclipse.jgit.api.errors.TransportException ECONNREFUSED with wrong port reported

I'm trying to setup an ssh connection as suggested when the app is launched for the first time.
Even though the setup parameters seem correct, I get the error in the title, with port 22 reported in the error message. It looks like the number I wrote under "Port" was not taken into consideration. Are non-standard ssh port numbers working?

Thanks,

Giacomo

Wiki updates

Hi,
I did a fair work on the wiki before i realised that i couldn't create a pull request.
I converted it to .org files, made most of the links local and copied all the content from HACKING.md into
contributing.org.

@wizmer have a look and see what you think: wiki

Creating/editing files/nodes

Hey,
so I got syncorg working with #28 (syncing didn't work before, had to run the wizard everytime and choose a different parent folder). Awesome work, thanks a lot!

A question: I'm able to add a new file, name it, and add one node to it. However, I'm not able to add more nodes to that file or edit any nodes. All i can do is change TODO state.
Is this intended behaviour?

Second question: I created repos like in the tutorial, however git pull does not suffice to update. I have to go to the bare repo, do git fet origin master:master there, and then pull in my unbare repo. Is this normal or did I setup something incorrectly?

Make URL "clickable"?

AFAICT, when I have a URL in the Org buffer, it's treated like any other chunk of text rather than turning it into a hyperlink. Am I missing something?

Also, I can't see a way to copy some text (to paste it elsewhere, e.g. in a browser when that text is a URL). So I guess these are either two feature requests, or two cases of me being a bit dense.

Ignore archive files in agenda, or otherwise offer some mechanism to explicitly specify org-agenda files, as in emacs

My agenda is currently flooded with items that are in archive files in my org repo!

I'm going to take a look at trying to fix this, but I'd like your input on which approach you'd like to take.

I think that having the ability to explicitly specify which files should be part of the agenda view would be a good idea.

Actually, it might be cool to support multiple named agendas. What do you think?

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.