b6743137Add trailing slash to always-307 redirecting links
Links this patch touches require a trailing slash, and request without
trailing slash will be 307 redirected to the one with a trailing slash.
This patch eliminates those unnecessary roundtrip.
Shota FUJI
authored at
Shota FUJI
comitted at
fa2cc136Add staticDirRevision option / build flag
Mainly for invalidating browser cache after upgrading legit.
https://tangled.org/pocka.jp/legit/issues/22
Shota FUJI
authored at
Shota FUJI
comitted at
1d9d7675Fix 404/500 pages have broken style and are unhelpful
https://tangled.org/pocka.jp/legit/issues/21
The initial plan was to just fix the broken style. As I editing the
HTML, I started to think this is a great place to put bug report link.
In the past, I put this kind of diagnosis info on an error page in my
work and that greatly helped debugging issues. The info here is just a
four-line text that is obvious in server log (if setup,) but end user
attaching this in complaints or whatever is really helpful, trust me.
UA is for grepping log lines. Even if it was generalized (for privacy
reasons,) it's still useful and time-saver.
Shota FUJI
authored at
Shota FUJI
comitted at
bd275169Fix GET / is 404 when non-git repository exists in scanPath
https://tangled.org/pocka.jp/legit/issues/20
Regression introduced in e31c3f8f4e4271038ef02560da68c6154b2e6121
Shota FUJI
authored at
Shota FUJI
comitted at
f4085cebAdd option to group repositories by category
https://tangled.org/pocka.jp/legit/issues/17
Category grouping is convenient for telling project's state and/or kind
(mirror, fork, demo.) My hosted instance serves 19 repositories yet it's
messy and hard to see an overview.
Shota FUJI
authored at
Shota FUJI
comitted at
8e0d9c46Read description from git config
Align with gitweb's behavior.
Shota FUJI
authored at
Shota FUJI
comitted at
db55fd92Fix test repository shares git directory and worktree
Possible, but not practical.
Shota FUJI
authored at
Shota FUJI
comitted at
e31c3f8fUse os.Root for path checking
os.Root uses system primitive rather than stringy securejoin.
Ideally, git.Open should accept fs.FS (or *os.Root) but go-git in its
current form (even v6) does not expose a function for "smart" open
method that can open both bare and non-bare repositories.
This patch also accidentally fixes following bugs:
* checked out "description" file in a non-bare repository is treated as
a description file.
* ignored repository reveal using URL-encoded slashes (see the second
test added in the parent commit)
Load tests on a minimal setup (nix run .#testing) shows no differences
before and after this patch.
This is not a clean solution, but code is less duplicated and more
correct and secure. I may revisit and refactor in near future.
Shota FUJI
authored at
Shota FUJI
comitted at
b92f7c89Add relative time to commit timestamps' tooltip
At first I tried to put these datetime formatting code into preferences
file. But it didn't work well due to increased load time = content
flashing.
Shota FUJI
authored at
Shota FUJI
comitted at
4059aa1eOverride <select> UA styles
Chromium (Linux) uses insanely low-contrast colors on dark mode.
Shota FUJI
authored at
Shota FUJI
comitted at
66cdbc5aWorkaround degraded UX due to BFCache
BFCache is the worst thing happened in the web. The technology itself is
not bad, but how it's introduced (or who introduced) was the problem.
A company that tries to advertise their hardware, or accurately say,
deceive their hardware's customer to them believing their hardware is
faster than competitors, started deplying BFCache widely to their
browser that is only available one on the hardware. Because the
intention, and there is no spec for back/forward behavior, they
introduced the behavior to existing web pages without opt-out mechanism.
Their defence is "this is good for users, and only situation this is
not desirable is navigation after logout", which is completely bullshit.
Client-side apps relies on established "script reload on navigation"
were broken and had to add workaround or adapt to this breaking change.
They didn't care as their goal is to create software monopoly using
their proprietry app store, and web apps are "competitor" to those
motherfuckers' products.
I could have set "Cache-Control: no-store" but decided to "adapt"
BFCache because:
* disabling BFCache by using that header is side-effect, so "primary
effect" takes place (I have a plan for cache design and this is not a
good time to introduce the change)
* those mfs can change heuristic or break web by another method, and
this is more future-proof. Avoiding (fighting against) the cache is a
hack, unfortunately.
* whether showing cached content is good in this software is debatable,
but considering there is no cache design yet, supporting BFCache is
better than the prior state.
The new code has consistent code style albeit little bit inefficient on
storage access. I believe future changes naturally will follow this
pattern and will put "sync" code into "pageshow" handler.
Shota FUJI
authored at
Shota FUJI
comitted at
22ff30a7Add preferences for file tree
The default is wasteful for my taste.
Shota FUJI
authored at
Shota FUJI
comitted at
9593ebb6Add theme color preferences (JS)
I hate the default blue convention.
Shota FUJI
authored at
Shota FUJI
comitted at
f9ad53cbMove tab width selector into preferences dialog
I'm going to add other options as well.
Shota FUJI
authored at
Shota FUJI
comitted at
99fddaf4Set "color-scheme" HTML meta tag
So UA applies their dark styles for unstyled elements. After this patch,
tab width selector will use dark theme style provided by UA in dark
mode.
Shota FUJI
authored at
Shota FUJI
comitted at
484117daAdd CLI flags for development config fields
These config fields are for developing legit itself. Changing config
file in worktree then reverting that before commit is error-prone.
Shota FUJI
authored at
Shota FUJI
comitted at
95a55864Refactor routes module file structure
It was difficult to find a file containing what I want to edit.
Shota FUJI
authored at
Shota FUJI
comitted at
b90b105eHide public functions not used outside routes module
I was, and still occasionally am, confused by those.
Shota FUJI
authored at
Shota FUJI
comitted at
48a8e602Rename routes.Handlers to routes.Handler
*http.ServeMux implements http.Handler interface. It does not expose
multiple handlers.
Shota FUJI
authored at
Shota FUJI
comitted at
f483e5f0Remove module version constraint for go-diff
I could not find why it's there. Removing it did not cause panic or
visible changes on diff view so I assume the bug or whatever was fixed.
Shota FUJI
authored at
Shota FUJI
comitted at
8640d6afProfiling pages (debug build only)
To optimize this software more, I need profilier to see which part is
taking a time.
Shota FUJI
authored at
Shota FUJI
comitted at
479a7de1Don't output relative datetime in repo list HTML
The initial motivation is to minimize third-party dependencies. However,
this turned out to be more than that:
* this makes the repo list page pure (repos state => HTML) so the page
is now able to be cached.
* allows future customization for displaying locale.
Shota FUJI
authored at
Shota FUJI
comitted at
113da4a6Fix git operation fails in OCI image
Because "git" is not in scratch image. This increases image size from
30MB-ish to 125MB, but better than broken one?
As go-git v6 is still alpha, including git binary inside a container is
the only solution for now.
https://tangled.org/pocka.jp/legit/issues/16
Shota FUJI
authored at
Shota FUJI
comitted at