legit

Fork of https://git.icyphox.sh/legit

Commits at 8640d6af51afbec2172c4036d231013ee9b196ed

  1. 62b73d36 Fix directory links in Markdown preview is incorrect README and preview code uses each own rendering logic, caused diverged output. An internal directory link inside preview HTML links to 404 (server returns 500) page. This patch refactors HTML rendering into interface-d one and let both endpoint use that. The original motivation for this refactor was to cache rendered HTML, but turns out refactor alone is significant so I gave this a dedicated commit. Shota FUJI authored at Shota FUJI comitted at
  2. a4dcd129 Compile HTML templates upfront https://tangled.org/pocka.jp/legit/issues/5 Compiling HTML templates on every request is useless on production deployment and slows down response time significantly. This patch makes compile-on-request opt-in and upfront compilation a default. On my dev machine (Intel Core Ultra 9 285H), spam_repo_list 1,000 iterations / 30 VUs gets 6ms avg -> sub 1ms avg and spam_repo_summary 1,000 iterations / 30 VUs gets 8.2ms avg -> 2.5ms avg improvements. Shota FUJI authored at Shota FUJI comitted at
  3. d1cb4494 Delete unused struct Shota FUJI authored at Shota FUJI comitted at
  4. 290981c5 Don't unveil empty paths Both templates dir and static dir are now optional. I'm not sure empty paths will trigger error, though. Shota FUJI authored at Shota FUJI comitted at
  5. 3b77efdc Add test for not following symlink inside repo dir Shota FUJI authored at Shota FUJI comitted at
  6. f4a70d2b Fix occasional git fetch error (gzipped upload-pack) https://tangled.org/pocka.jp/legit/issues/6 https://github.com/icyphox/legit/pull/58 I could not write a test reliably triggers this condition (upload-pack request having gzip body) even with system git. Shota FUJI authored at Shota FUJI comitted at
  7. c9d54abb Deny git clone of ignored repo https://tangled.org/pocka.jp/legit/issues/2 https://github.com/icyphox/legit/issues/56 There were no guard / check for "ignored" config in endpoints git client uses, so everybody could clone ignored repositories. Shota FUJI authored at Shota FUJI comitted at
  8. bbeea586 Add simple tests These are basis for the future tests. Shota FUJI authored at Shota FUJI comitted at
  9. 3a07b138 Upgrade go-git I needed "git.InitWithOptions" function added in v5.7.0. Shota FUJI authored at Shota FUJI comitted at
  10. d224558e Move embedded resources into dedicated module For testing. Child packages cannot access embedded resources. Shota FUJI authored at Shota FUJI comitted at
  11. eac513f5 Embed default templates into the binary https://tangled.org/pocka.jp/legit/issues/3 https://github.com/icyphox/legit/issues/10 Deployment & distribution convenience. Shota FUJI authored at Shota FUJI comitted at
  12. 0e496be9 Embed static files into the binary https://tangled.org/pocka.jp/legit/issues/3 Having to copy the "static/" directories is PITA, and distribution burden. Shota FUJI authored at Shota FUJI comitted at
  13. 208876a9 Don't generate bluemonday policy for each requests https://tangled.org/pocka.jp/legit/issues/4 bluemonday's documentation says the policy creation/editing is not safe to use in multiple goroutines. Now only one policy exists in the entire application and no creation/editing is happening inside HTTP server's goroutine. This also brings performance improvements. On my machine, spamming repo summary page took 10ms~11ms med (avg), but with this patch they are now 7ms~8ms med (avg). k6 run --vus 30 --iterations 1000 ./tests/k6/spam_repo_summary.js Thank Anthony Wang for sending the original patch that brought this topic in. Shota FUJI authored at Shota FUJI comitted at
  14. e39d5a3b Add link to issues page For transparency? Shota FUJI authored at Shota FUJI comitted at
  15. c2244176 Exclude unnecessary files from Nix source To prevent unnecessary rebuilds. Changes to README should not issue a new build. Shota FUJI authored at Shota FUJI comitted at
  16. afb93b77 Set "meta.mainProgram" in Nix derivation Nix outputs warning message when **user** calls "lib.getExe" on this package. --- evaluation warning: getExe: Package legit does not have the meta.mainProgram attribute. We'll assume that the main program has the same name for now, but this behavior is deprecated, because it leads to surprising errors when the assumption does not hold. If the package has a main program, please set `meta.mainProgram` in its definition to make this warning go away. Otherwise, if the package does not have a main program, or if you don't control its definition, use getExe' to specify the name to the program, such as lib.getExe' foo "bar". Shota FUJI authored at Shota FUJI comitted at
  17. 912daf3f Setup load testing It's minimal, but useful for future additions. Considering the current trend of malcious crawlers, I believe this is necessary. Shota FUJI authored at Shota FUJI comitted at
  18. 3ce7ca00 Eliminate boilerplate code from Flake file Shota FUJI authored at Shota FUJI comitted at
  19. 921f987b Migrate "defaultPackage" to "packages.default" (Nix Flakes) "defaultPackage" is deprecated. Shota FUJI authored at Shota FUJI comitted at
  20. 9d070622 Update vendorHash of Nix derivation Shota FUJI authored at Shota FUJI comitted at
  21. 932dc3e7 Add -server.host and -server.port CLI flags This is handy for development inside a container / VM. Shota FUJI authored at Shota FUJI comitted at
  22. fbc46772 Add footer The motivation is to display "Powered by ...". The patch I received adds that text to header, and I felt it stands out too much considering frequency of user using (reading and getting actually useful information from) it. I like the idea of "Powered by" as there were times that text helped me discover new tools. The most natural place to put it is footer, but my legit fork does not have that. And just having "Powered by ..." text alone feels off, so I added admin configurable links section for things like contact email address, mirrors, and other social links. I personally like the outcome. Shota FUJI authored at Shota FUJI comitted at
  23. 784362b7 Display message if no README found The info log is completely useless, as it's repo owner's fault for not having README, instead of site admin's. I configured this in the template so users (site admins) can customize their own view. Shota FUJI authored at Shota FUJI comitted at
  24. b801c06d Remove redundant return statements gopls yells at me. Shota FUJI authored at Shota FUJI comitted at
  25. 565beb7b Update chroma to highlight more languages in Markdown Anthony Wang authored at Shota FUJI comitted at
  26. 2b352672 Fix weird URL search parameter handling (raw=true) A query component in URL does not have to be "key=value". In fact, browsers interpret that as a URLSearchParams, a list of "key" or "key=value" allowing a same key appearing multiple times. You don't have to set "true" or "false": simply set the key or remove the one. Shota FUJI authored at Shota FUJI comitted at
  27. 09c5f871 Display checked-in image in Markdown preview Co-authored-by: Anthony Wang <a@unnamed.website> Shota FUJI authored at Shota FUJI comitted at
  28. 74ed6804 Format .nix files with nixfmt Shota FUJI authored at Shota FUJI comitted at
  29. d3443fb7 Add "gopls" to "nix develop" packages To stop requiring devs to install gopls globally. Shota FUJI authored at Shota FUJI comitted at
  30. 66fa2bb5 Add link for raw version of file The original patch also contains support for image display in READMEs. I (committer) removed the latter for brevity and revert-ability. Anthony Wang authored at Shota FUJI comitted at