1
* [ ] "hooks" also point HEAD to tags when received, oops
2
3
* [-] per-repo deploy keys: R/O, R/W
4
* i want this for flux
5
* [x] everything except the UI
6
* [ ] the UI
7
* [ ] update the unique index to be per-repo since we've changed auth anyway
8
9
* [ ] tree view isn't getting the right commits for files in subdirectories
10
since we're back to one-directory-at-a-time and need to redo how we search
11
for the last changed commit.
12
* [ ] relative URIs: ugc- prefix, #xyz shouldn't navigate away, etc.
13
* [ ] pressing browser forward/back should trigger fancy blob highlights, not
14
just the automatic :target ones
15
* [ ] some patch links really need to scroll back to top
16
* [ ] actually show commit details at top of tree/blob views
17
18
* [ ] https://talya.nossa.ee ?
19
20
### short term
21
22
- [x] blob
23
- [ ] images, pdfs, etc.
24
- [ ] less polysaturated, leaner design
25
- [ ] do we use Binary explicitly to not have to pass Unk back as a linked list? @fun
26
- [ ] get our tests and coverage fixed again. @pls
27
- [ ] message to end-user when following a redirect (via git)
28
29
### features
30
31
- [ ] dag infinite scroll/load to context
32
- [ ] blob permalink
33
- [ ] responsive (mobile) styles
34
- [ ] override locale user option
35
- [ ] diff 2+ parent commit
36
- [ ] passkey support
37
- jfc https://shadowfacts.net/2023/phoenix-passkeys/
38
- [ ] default branch: choose from existing branches; non-UTF-8 support
39
40
### housekeeping
41
42
- [ ] tab indices on e.g. crear repositorio
43
- [ ] IPv6 check
44
- [ ] redirect to primary host if not on it
45
- [ ] reverse where the structs are defined (between Git2/Nossa.Storage*)
46
- [ ] rename RepositorySelf* to RepositorySettings*?
47
- [ ] extract CGI into its own application; stream request/response in/out
48
- [ ] consider erlexec, or write our own driver, so we can get stderr out of
49
the way
50
- [ ] gettext once-over in hard-to-reach spots
51
- [ ] verify typescript in compile step
52
- [ ] override elixir/erlang used in autumn/mdex to keep all together
53
- there's some wip of this in zmlqmwzq
54
55
### graceful degradation
56
57
- [x] branch selector disappears on safari with javascript on
58
- [ ] "method" links don't work with noscript since they don't do the right
59
thing
60
- [ ] can't dismiss flash
61
- [ ] javascriptless sidebar changes? (then they must go in the URL)
62
63
### production ops
64
65
- [ ] caching: nginx, varnish? fragment?, git object? how much does bandwidth
66
cost at ovh? bunny? integrate caching, backup into nix module.
67
- right now the pawiwo visibly reloads on every page
68
- [ ] DIY anubis? (for easy deploy to other Phoenix/etc. strength in diversity @fun
69
is a real consideration in this fight.)
70
- [ ] backup restore procedure/test
71
- [ ] feature that restores from backup as we make it. ez!
72
- [ ] admin diagnostics page (combine into/with live dashboard somehow?)
73
- [ ] per repo: audit log, pushes, etc. (git hooks?)
74
- [ ] LRU-ish app-level caching: memcached? redis? ets? mnesia?
75
76
### future
77
78
- [ ] avatar upload, associate multiple emails?
79
- [ ] federation?
80
- identity: auth to other nossa instance
81
- auth another instance for avatars
82
- federated MR-type deal?
83
- don't want to redo a whole code review thing here, idt? check out gerrit
84
etc.
85
- see also simon tatham's thing on git; pull request is just "please check
86
again"
87
- opinionated about rebase/jj norms
88
- at the very least we could show interdiffs between pushes etc.
89
- [ ] merge queue? what do i need at work?
90
- [ ] Log in with GitHub/GitLab/Forgxejo? make it easy to work across, to not be
91
completely hecked by network effects?
92
93
94
## archivo
95
96
- [x] change "settings" top right to "account"
97
- [x] repository delete
98
- [x] repository storage
99
- [x] push keys
100
- [x] proper logging (insert some in e.g. storage creation failure)
101
- [x] some kind of log aggregation/interface on kala
102
- [x] test coverage back up
103
- [x] do some more!
104
- [x] work out why jj fails to push!
105
- [x] fix up this /blah/!url nonsense
106
- [x] git store tests
107
- [x] git tests async: use per-runner store
108
- [x] last controller tests
109
- [x] don't rename storage: use only numeric ids in storage
110
- [x] figure out why our distribution metrics ("phoenix.*") don't make it to
111
grafana (or appear in /metrics at all)
112
- [x] try ETS
113
- [x] pawiwo icon
114
- [x] clean up RepositoryGitControllerTest
115
- [x] Anubis/Nepenthes/?
116
- See https://lobste.rs/s/dmuad3/mitigating_sourcehut_s_partial_outage --- we
117
will need to be prepared; robots.txt, etc., and above all usage stats/graphs
118
so we can see it happen.
119
- [x] https://git.sr.ht/robots.txt is a good start, though of course it isn't
120
saving them. Still, no reason to start from zero.
121
- [x] start of gettext support
122
- [x] main browsing interface, ui polish/consistency
123
- [x] navigate tree
124
- [x] zindex fix for icons overlaying nav bit
125
- [x] select commit
126
- need to resolve a rev instead of a branch now
127
- [x] include breadcrumbs in Diff view
128
- [x] wherever "path=" is sneaking into our URLs, get it out (breadcrumbs)
129
- [x] liveview for navigating within
130
- [x] extract inline classes into css (w/ @apply)
131
- [x] dark mode styles
132
- [x] actual colour system
133
- [x] pawiwo svg for colours
134
- [x] ok dark mode again
135
- [x] safari, chromium
136
- [x] repository redirects
137
- [x] tailwind v4
138
https://elixirforum.com/t/mix-tailwind-4-0-0-beta-1-support/67636/17
139
- [x] more post-liveview cleanup of repository controller; check over
140
auth-related stuff.
141
- [x] then back to (re)design
142
- [x] work out whether diff view will be within the same liveview, a different
143
one, etc.? - it may be overkill; navigating the tree responsively is nice,
144
but the huge diffs might make browsers sick. gotta test!
145
- [x] decide on the repository view design; do we keep the commits there? do
146
we make the sidebar collapsable a la ~~yuta~~ hexdocs etc.? something
147
else entirely?
148
- what do i want to see when i hit a root of a repo? what are the various
149
reasons i end up on one of those on github/srht/etc.?
150
* linked to as a project's "home page", searched and the first result (or
151
apparent best result for an official download or similar)
152
* directly navigated to because i want to browse the source of something
153
i don't have a local clone of (and i haven't yet hit the threshold
154
where i need to use tools to look thru; source aware views can sometimes
155
abrogate the need but often (e.g. github's views + semantic index)
156
they're an untenable degree of both meh design usability (in e.g., links
157
are all too small, everything bunched up on the side, often starting to
158
scroll horizontally by this point; not a priority) and flawed impl (in
159
e.g. elixir outlining. is this just from elixir-ls? tree-sitter?))
160
* often want a specific version (i.e. something i'm running/using),
161
sometimes just browse main/master if cbf/not relevant/more interested
162
in design than exact
163
* summary of this point: "whatever would be unnecessary if i always had
164
a clone of everything". i don't, but i'm in the position of improving
165
the situation for when you don't -- what actually helps?
166
* sometimes i do this even in the presence of a clone on disk, because
167
i'm *using* that one somehow, but i cbf creating a new worktree.
168
similar result. a browser window (and the way you can open lots of
169
them, to various paths/versions/etc) is a much smaller cognitive unit
170
to manage than a worktree.
171
* how often do i want to see the whole commit list straight up front like
172
this? (day separations would give this a lot more context, for what
173
it is.)
174
* almost always would prefer the *graph*; i almost never prefer the
175
straight log style locally. (think about jj log view.)
176
* there are three axes: commit (temporal), path (spatial), view (fn).
177
github exposes commit consistently, path inconsistently (compare blob
178
view to commit history restricted to a subpath), view inconsistently
179
("Commits" page vs 2.5 tree pages (root, non-root w/ README, non-root;
180
sidebar tree only visible in non-root) vs blob (very aligned with
181
non-root tree). root really is the odd one out, since it's a landing
182
page.)
183
* big commit *graph* that stashes in side: file listing-style tree view
184
that then collapses into expanding tree sidebar: blob.
185
* then you can shift around points in the graph while retaining
186
visibility over the directory tree, no reloads/scrolls breaking
187
"immersion".
188
* does the graph stash over to a plain log? i should make sure while i'm
189
developing that i work with the browser the sizes i want to actually
190
be using it at. (i.e. push back against default to 2/3rds code, unless
191
i'm developing a usecase where i'd have the browser at 1/3rd).
192
* sometimes you do want to view just the log of a file or subtree.
193
kinda wanna apply that filter *to* the far-left graph, as a
194
saved-in-navigation thing. then you can nav to a commit (still
195
centred on the tree or file you started the filter from), see it in
196
context, move around, and then at some point you back up or clear
197
the 'path filter' on the DAG view.
198
* note that we want the current path to remain in the tree view
199
when navigating the DAG view even when we don't have a path filter
200
active. same with current blob, if any.
201
* this kind of removes that fake third axis, exposes the other two as
202
proper orthogonal ones. github flattening the DAG with no way to
203
recover is criminal.
204
* and then there's commit view, which is a whole other thing: viewing a
205
commit message & diff.
206
- [x] let's fix our URIs in gen i guess, ?path= is ugly
207
- [x] support submodules in tree
208
- [x] be explicit in which params are UTF-8 encoded & which aren't
209
- [x] global support for non-UTF-8; no error messages
210
- [x] navigate commits on left; focus current commit as navigating
211
- [x] compile-time the storage layer choice
212
- [x] vyxos push fails!
213
- [x] "last commit modified" links are incorrect for subtrees, there's a TODO in
214
git2.rs somewhere
215
- [x] decompose git2's monster "resolve_commit" into somewhat orthogonal ops
216
- [x] syntax highlighting
217
- [x] little live demo with channels of push response
218
- [x] reaffirm backup situation for kala
219
- [x] nix syntax highlighting egumi??
220
- [x] wow! nossa in docker/k8s!
221
- [x] ES: "Clave de empujar creada exitosamente" when creating a new repo!?
222
- [x] new repo => brocken
223
- [x] remove register links if register is disabled
224
- [x] install our own git hooks in repositories, set HEAD on push if unset
225
- [x] assign default branch on first push
226
- [x] this causes clone failures, the weird nix flake stuff we've been seeing, etc.
227
- [x] floating windows don't preserve state on livereload
228
- [x] let's fix the first thing: navigating back to a subtree shouldn't close an
229
open blob. we can keep our existing assigns, or just stream.
230
- [x] open new windows in specified order
231
- [x] default orientation based on aspect ratio
232
- [x] splith(3): need to have up/down too; splitv(3) needs to have left/right.
233
it's too hard to just do that with merges and unmerges.
234
- [x] skip floating windows when finding clientInDirection; similarly,
235
moveClient/mergeClient; their behaviour is very puzzling if it's not clear
236
what's happening
237
- [x] "hooks" are breaking on current live because they're symlinks into old
238
versions of nossa, since GC'd from the nix store!
239