-
Notifications
You must be signed in to change notification settings - Fork 0
/
todo.txt
178 lines (146 loc) · 9.2 KB
/
todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
rework yarn usage
x switch to yarn provided dependencies
x switch to yarn provided socket.io-client
x update to latest sass version
x update to latest bootstrap version
update python components status:doing
update socketio server side version
minimize yarn loading of dependencies - it really guzzles in way too much stuff for what I'm using it for.
fix docker build to use minimized dependencies
update python components
flask
socketio
what else is there?
Dogfooding via txt Datei als Storage
UI refinements
board: scroll content ara instead of full page
support sorting of tasks via UI
support dropping tasks into a specific location
show nice animation when sorting
show nice animation on drop
consider a shell tool to simplify working with hierarchical todo.txt files
ideal would be a daemon that watches a file as it is being written and adds metadata / sorting to it
consider: adding metadata (started at, stopped at) to tasks as they are being added
consider adding ids to tasks as they are being added
consider re-sorting tasks as they are done
consider enforcing a standard formatting to have a nicer text interface to work with
consider to just add an id which allows to keep all the metadata in an extra (invisible) storage
consider where to move done tasks, bottom, before first done task?
consider
consider if all of that is really helpfull to work with the text interface
json talk to async server on each client action
start socket.io server (gevent or similar)
socket.io connection to server
send operation protocoll to server and apply there
decide to apply diff locally, or just get new json from server
consider how to deal with conflicts between local and server changes
receive operations from server and apply locally if there is a diff
should operations also be applied locally first? That would probably only work if it is a crdt
sichern als flat-file nach jeder änderung status:doing
x Schreiben der txt Datei aus dem Modell
Fix saving API to always send up the root object instead of the current task
mit monitoring der datei ob sie sich extern ändert
retain whiteboard navigation across reloads @mh status:doing
jeder task muss immer eine ID haben
man will aber jederzeit erkennen können ob die id von einem bug-tracker kommt (und dazu eine seite verlinkt ist)
negative zahlen als inline, aber kind of nicht inline lokale IDs vergeben?
negative zahlen für lokale ids serverseitig vergeben, sobald ein Task zum ersten mal gesehen wird?
hash-path um bei reload den ausgewählten task beizubehalten
save current path to hash
restore whiteboard state on load from hash
text edit wird (erstmal) manuell gepusht und pusht dann als json zurück
klassich tabs mit bootstrap zwischen den zwei interfaces
ganz klassisches jquery change basiertes server push
Allow switching between text and grahpical editor
text editor should load from server (or serialize clientside model) on switching
Explicit submit of text changes (for now)
research if there is an easy way to resolve conflicts
maybe use a linear time stamp?
schicker js text editor clientseitig einbinden, damit bearbeiten erst mal spaß macht
markdown als syntax? Vielleicht eigene syntax? todotxt könnte es geben
UI Niceties
dragging a task to in progress should allocate it to me
research does this require a login? Can my git identity be used?
Change tracking dass tasks die gelöscht werden in einem `trash` bereich verschiebt.
explizites löschen aus dem trasch? Oder doch Zeit-Basiert?
Research: Darstellung von content auch in der textform clientseitig verhindern können?
expand nur wenn tag gesetzt ist (später wird content vielleicht erst dann aus dem backend gezogen?)
Research: braucht es ein "uid:1...n" serverseitig vergeben wenn es keine id gibt
Research: wenn ein client einen task erstellt, wird serverseitig die uid vergeben. Nötig?
sobald eine echte id existiert wird die uid verworfen
Funktion um fertige tasks weg-zusortieren um große mengen an tasks effizient verwalten zu können
Implement sort command that sorts tasks according to a strict rule
Start with `new, doing, done`
consider change tracking and undo
research good way to actually record changes as objects (server? client?, what about page reloads?)
research operational transforms and how that could go together
Trac importer / exporter
ansatz von robert für den daily reporter verwenden?
link generierung in backends konfigurierbar machen
negative (lokale) ids nicht verlinken
Live Multi-User Web App
Async Flask app und sync mit dem server on browser changes
socket.io? was benutzt man da am besten für websockets?
async collaborative text editor, to allow all persons to work simultaneously on the text portion of the tasks as well as on the structured view codimd or something similar could be the key to success here?
Text parsing / Textformat
discuss: Wie escapen wir Symbole mit syntaktischer Bedeuting? (@, +, a:b)
Consider inheriting some things, i.e. if a task is tagged @mh, maybe all children should be auto tagged the same way?
Tasks bearbeiten mittels content editable auf doppelklick?
ganz klassich, submit on change und/ oder bei enter
in jedem fall sollte der edit bereich entweder größer oder auto resizing sein, damit man komfortabel tippen kann
Fixup JS Dependencies
Separate out dev and production js dependencies
Fix babel warnings when installing anything
warning "@vue/cli-service-global > @vue/babel-preset-app > @babel/preset-env > @babel/[email protected]" has incorrect peer dependency "@babel/[email protected]".
add filters to show
only tasks that are completely done (children)
only tasks that have some done tasks (children)
only tasks without content (text format)
done
x Vue app aus dem index html irgendwie herausholen, damit highlighting etc. im editor funktioniert
x css -> scss und gemeinsamkeiten rausziehen @mh
x Wenn möglich ohne gleich eine shitload an JS dependencies und extra prozesse dazu zu kriegen @mh
x setup js unit testing for vue app @mh
x handling von empty lines @mh
x nicht darstellen in der ui
x erhalten zwischen edits, damit die files schön bleiben
x kein reordering via drag'n'drop
default kein reordering via whiteboard
nur tagging via drag'n'drop zwischen collumns
reordering _nur_ via text-view
evtl. später ein 'sort task' button, der zeilen reordered
done nach hinten, new nach vorne, in progress dazwischen
einfach erweiterbar auf N-Spalten
x json format verändern, tasks als normales array, nicht mehr als dict
x vue function um die spalten-tasks zu kriegen (unit test this)
x vue figure out how to integrate the drag'drop component without reordering
x Collapse done stories by default @mh
x do status:doing @mh
x render stories in the order they are written in the todotxt file
especially not the done stories at the end
But: that could be a really great way to maintain the readability of the todotxt format
x research if possible without changing the json format
x research how to represent the children in one list while still getting drag'n'drop to work
x Content von tasks im textformat via zweifacher einrückung @mh
x Kären: ist zweifache einrückung klar genug? status:doing
x clientsieitig content erst mal nicht darstellen
x text-modifikationen klären
wie soll sich drag'n'drop auswirken?
reordering sollte gehen
drag in eine andere spalte -> nur tag setzen?
aber dabei sollte ja auch eine sortierung möglich sein?
alternativ: reordering _nur_ im textfeld (for now)
x Dockerize
x make the docker image smaller (currently ~800mb, while base image is moore around ~30mb) (actual package data is what makes it large so less packages, smaller distribution could help, but image is already pretty soundly built)
x fix docker image build not starting up correctly
x understand how to use the experimental features to cache build artefacts in docker volumes during a docker build
x mount source read only
x understand docker image prune / system prune
x check what the options exactly do
x understand how to clean artefacts only from this dc file
x basic development docker file
x Upgrade to Vue 3
x find out how to upgrade core vue
x upgrade draggable (my only dependency afaik?) https://github.com/SortableJS/vue.draggable.next
x fix exception on drag stop
x Understand what current firefox doesn't like about the source