GithubHelp home page GithubHelp logo

talex5 / cuekeeper Goto Github PK

View Code? Open in Web Editor NEW
286.0 17.0 25.0 1.05 MB

Browser-based GTD (TODO list) system. No server needed.

Home Page: http://roscidus.com/blog/blog/2015/04/28/cuekeeper-gitting-things-done-in-the-browser/

License: GNU Lesser General Public License v2.1

OCaml 89.81% CSS 9.01% HTML 0.30% Makefile 0.68% Shell 0.07% Dockerfile 0.13%
mirage gtd irmin todoapp

cuekeeper's People

Contributors

alpha-60 avatar talex5 avatar yomimono 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

cuekeeper's Issues

Firefox 71 on Fedora gives ConstraintError

The firefox-71.0-8.npgo.fc30.x86_64 package on Fedora does not work with CueKeeper. Making a change results in the error:

(Failure "IndexedDB operation (RW) failed: ConstraintError: A mutation operation in the transaction failed because a constraint was not satisfied. (error code 0)") Refresh this page to continue.

This seems to be a GCC bug. A work-around is to use the clang build of Firefox. See https://bugzilla.redhat.com/show_bug.cgi?id=1779570#c24

Stack overflow inverting parent relation

If you use the history view (or sync) to move from a revision where A is a parent of B to one where B is a parent of A in one step then the display code will fail with a stack overflow.

This is because it tries to show the old A fading out, but the old A now has a child B, which has a child A, ...

We should either detect the loop and stop, or refuse to add new children to things that are fading out.

"Close All" sometimes results in runaway memory consumption

I noticed this while trying out the application today.

To recreate all I have to do is click "Show History" and then "Close All". It leads to runaway memory consumption (on my system the tab dies after 9gb). Not sure what is causing it as I've only just started playing with this application.

I'll keep poking around as I have time and try to understand what is occurring.

I'm on Ubuntu 16.04 and I'm running this in Chrome version 59.0.3071.115

Error running `make`

I know the project is still in flux, but just reporting my experience trying to get started on a fresh checkout.

$ make
ocamlbuild -cflag -g -no-links -use-ocamlfind client.byte test.byte
+ ocamlfind ocamlc -c -g -g -bin-annot -strict-sequence -syntax camlp4o -package lwt.syntax,irmin,lwt,sexplib.syntax,uuidm,irmin.mem,base64,ocamlgraph,reactiveData,omd -w A-4-44 -I js -o ck_model.cmo ck_model.ml
File "ck_model.ml", line 763, characters 9-27:
Warning 48: implicit elimination of optional argument ?init
File "ck_model.ml", line 768, characters 12-20:
Warning 48: implicit elimination of optional argument ?step
File "ck_model.ml", line 771, characters 18-32:
Warning 48: implicit elimination of optional argument ?step
File "ck_model.ml", line 782, characters 25-32:
Warning 48: implicit elimination of optional argument ?step
+ ocamlfind ocamlc -c -g -g -bin-annot -strict-sequence -package js_of_ocaml.syntax,js_of_ocaml,js_of_ocaml.tyxml -syntax camlp4o -package lwt.syntax,irmin,lwt,sexplib.syntax,uuidm,irmin.mem,base64,ocamlgraph,reactiveData,omd -w A-4-44 -I js -o js/ck_template.cmo js/ck_template.ml
File "js/ck_template.ml", line 283, characters 13-25:
Warning 48: implicit elimination of optional argument ?a
File "js/ck_template.ml", line 684, characters 60-73:
Warning 48: implicit elimination of optional arguments ?extensions, ?default_lang
File "js/ck_template.ml", line 684, characters 77-88:
Warning 48: implicit elimination of optional arguments ?override, ?pindent, ?nl2br, ?cs
File "js/ck_template.ml", line 854, characters 11-19:
Warning 48: implicit elimination of optional argument ?init
File "js/ck_template.ml", line 873, characters 17-25:
Warning 48: implicit elimination of optional argument ?init
File "js/ck_template.ml", line 891, characters 11-19:
Warning 48: implicit elimination of optional argument ?init
File "js/ck_template.ml", line 960, characters 51-62:
Warning 48: implicit elimination of optional argument ?step
File "js/ck_template.ml", line 961, characters 42-53:
Warning 48: implicit elimination of optional argument ?step
File "js/ck_template.ml", line 967, characters 74-85:
Warning 48: implicit elimination of optional argument ?step
File "js/ck_template.ml", line 1000, characters 7-15:
Warning 48: implicit elimination of optional argument ?init
+ ocamlfind ocamlc -c -g -g -bin-annot -strict-sequence -syntax camlp4o -package lwt.syntax,irmin,lwt,sexplib.syntax,uuidm,irmin.mem,base64,ocamlgraph,reactiveData,omd -w A-4-44 -I js -o git_storage.cmo git_storage.ml
File "git_storage.ml", line 8, characters 38-47:
Error: Unbound module I.History
Command exited with code 2.
Compilation unsuccessful after building 55 targets (0 cached) in 00:00:06.
make: *** [all] Error 10

Problems building client and server

make fails with pinned version of bin_prot, but works with current bin_prot (0.9.0).

make server fails because server/config.ml seems out of sync with current mirage:

  • get_mode() is not supported anymore
  • ipv4_conf does not have these fields anymore

I would like to be able to use the server to access cuekeeper from different devices. Can you recommend another unikernel configuration I could look at, to fix this one ?

SecurityError: The operation is insecure.

Reported to happen on Firefox 37. Possibly the user had cookies disabled, which would disable access to local storage. Should detect this and give a better error message if so.

Style fields that open menus to look more like drop-downs

As you wrote in CueKeeper: Gitting Things Done in the Browser:

  • The UI needs some work. In particular, could someone find a tasteful way to style the fields in the panels so they look like drop-downs? I keep clicking on the item’s name instead of the (show) button by mistake (although this might be because I used to have it the other way around, with a (change) button, but that was worse).

I want to contribute a starting point for the style:

starting point for field drop-down styling

.ck-item.ck-project::after, .ck-item.ck-context::after {
  content: '▾';
  color: #aaa;
  padding-left: 0.15em;
}

This is just a starting point. You can probably improve this styling to better communicate that clicking the field opens a drop-down of replacement values, as opposed to opening a drop-down of actions like “delete”.

The CSS selector in my example code is incomplete. You will probably need to create a new class to mark all drop-down fields with, rather than trying to write a selector with existing classes.

Sometimes fails with AbortError on Safari

If you have CueKeeper open in two windows, making a change will often cause one of them to fail with IndexedDB transaction (RO) failed: AbortError: (no message) (error code 0).

I've done some testing on @avsm's Mac mini (thanks!) and can now reproduce the error with a few lines of JavaScript:

http://test.roscidus.com/static/idb_reads.html

The page will:

  1. Open a test database, creating a single key=value pair if it doesn't exist.
  2. Attempt to read the value of the key ten times, once per second.

If you open this in two windows in Safari at once, one of them will likely fail with AbortError. I've reported it, but if they don't fix it quickly we might need to introduce some kind of random back-off-and-retry on abort.

issue with make server on Ubuntu 20.04 LTS

@talex5
I have stood up a Ubuntu 20.04 LTS server on Linode, and am trying to now build a cueserver for my use.
I believe I have installed all the opam packages, but I get this error now:

root@localhost:~/cuekeeper# make server
rm -rf _build/static
mkdir -p _build/static
cp -r resources _build/static/
dune build --profile=release ./js/client.bc.js
File "lib/ck_utils.ml", line 70, characters 2-30:
70 |   ReactiveData.RList.make_from init changes
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: Unbound value ReactiveData.RList.make_from
ocaml-crunch lib/ck_init.ml
Generating ck_init.ml
Skipping generation of .mli
make: *** [Makefile:56: server] Error 1
root@localhost:~/cuekeeper# 

How to make use of export and backup functions

I used the export function, but I didn't find out how to import it. I like the program you made so much, but how to back up and use the export program makes me feel very confused.
Or we can add a button to import and export files.

can't make "server" on Mac

I followed all instructions in the README, and on the make server step, I get

one-C02VV5SWHTD6:server bcohen$ make server
make: *** No rule to make target `server'.  Stop.
None-C02VV5SWHTD6:server bcohen$ 

Allow cancelling editing with the Esc key

Allowing cancellation of in-progress actions with the Esc key makes it nicer to explore the UI, because can click on unfamiliar controls without worrying that the UI state will be changed in a hard-to-undo manner.

When you click on the title of an action, it is replaced with a text field so you can edit it. If you think the current name is okay after all, you should be able to hit the Esc key to convert the text field back into a static label. Right now, you have to close the action box with the X in the top-right and open it again to return to the previous state.

Another example: if you click on an area or context within an action box, a drop-down menu appears so you can choose a new value. You can currently close it by clicking in empty space out of the menu. It would be nice if you could also press Esc to close the menu.

Add title attributes to the one-letter toggle buttons

The “✓ n w f ★” buttons are hard to use if you don’t know what they do. I would expect hovering over them with the mouse to show their full name. For example, the “f” button should show “future” or “mark as for future”. You can implement this by adding title="future" to the a element.

I think you can implement this by changing the function toggle_label, or perhaps make_toggles below it.

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.