r/o

allow email confirmation w/ registration disabled. 4088bc59 parent 129fa896

authored by ~talya

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