about summary refs log tree commit diff
path: root/web
AgeCommit message (Collapse)AuthorFilesLines
2021-05-12 r/2588 refactor(web/atward): translate index page to markdownsterni1-56/+48
Change-Id: I03ccbec1dd8ba58d80bd97eb40148dd395e500b2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3115 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-12 r/2587 feat(tvl/template): support markdown via cheddarsterni1-19/+29
Since the template already was a derivation we can just reimplement a specialized writeText which runs cheddar on parts of its input to avoid import from derivation. Change-Id: I0cffd0e86fd23a749599174260d04269379f4b5f Reviewed-on: https://cl.tvl.fyi/c/depot/+/3114 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-12 r/2586 feat(tvl/template): link to atward in footersterni1-0/+2
Change-Id: I929b8344251ceaba5a22c735c599407a0ec162a6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3113 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-12 r/2585 refactor(web): common template for index pages of tvl and atwardsterni7-152/+216
Use simple string interpolation based approach to templating and allow changing the main body, the title and to inject extra HTML into the head element. Additionally we can use `https://tvl.fyi/` instead of `/` when referring to assets. One limitation currently is that the template only works for index pages (it link to self using `href="/"`), but this should be easy to fix. For atward, instead of using the `onload` attribute of `body`, we now register an event listener in JavaScript which makes the template code less complicated. When building the derivation the template is rendered to HTML and injected into the source. Change-Id: I2ea0c5bf5f6286e781285ade7751a348bab3bdc8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3112 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-12 r/2583 feat(atward): Support reading configuration from cookiesVincent Ambo2-15/+139
Adds support for reading configuration (currently only the `cs` parameter) from cookies and from URL query parameters. The latter take precedence if set explicitly. This is useful for users which can not edit their search query parameters. To make this easier to use the atward landing page has been updated with a simple form where settings can be toggled. This requires Javascript, but the script is small, embedded and MIT licensed (as is the rest of this project). Users without Javascript will be shown a notice about this. It is of course possible to set the cookies manually, too. Change-Id: Ie9a9dbeab4d9a97a349d7988e21f1b46037e1f72 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3110 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-05-11 r/2580 fix(web/tvl): add two pixels to make favicon squareFlorian Klink1-0/+0
Fixes b/126. Change-Id: I5caac45797738bccdbc346288fdf891dafdcefbb Reviewed-on: https://cl.tvl.fyi/c/depot/+/3106 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-05-11 r/2579 feat(atward): Serve OpenSearch XML file to support FirefoxVincent Ambo3-0/+20
Firefox users can not easily add search engines to the browser unless the page serves an OpenSearch description. This CL adds said description according to the documentation: https://developer.mozilla.org/en-US/docs/Web/OpenSearch Change-Id: I358c5940304f4abd9e45dd72a64e46d3ce44b3e3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3105 Tested-by: BuildkiteCI Reviewed-by: cynthia <cynthia@tvl.fyi>
2021-05-11 r/2578 feat(atward): Add an index page with setup instructionsVincent Ambo2-1/+84
Adds an index page that is rendered when there is no query parameter in the URL. This means that going to at.tvl.fyi / atward.tvl.fyi yields an actually useful page. Change-Id: I018973a3c3e8b7b7167876fa99f34a008a17a4f2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3104 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
2021-05-11 r/2576 feat(atward): Add 'cs' query parameter to toggle Sourcegraph supportVincent Ambo1-3/+48
Users can set `?cs=true` to be sent to cs.tvl.fyi instead of code.tvl.fyi for things that look like code paths. Change-Id: I7c8f9b71cde25d35787c941e5308330c6f16f8d7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3102 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-11 r/2575 refactor(atward): Construct an atward query type from user requestsVincent Ambo1-15/+44
Rather than dealing with passing down the rouille request to handlers (which would have become necessary as we start supporting more user-controlled features), a new `atward::Query` type is constructed from requests and passed to the dispatching logic instead. For now this introduces no new features, it just shuffles things around to prepare for that. Change-Id: I08e18422c1fdbac4712c739a7acbb810ada697ca Reviewed-on: https://cl.tvl.fyi/c/depot/+/3101 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-06 r/2573 fix(atward): Better align unsupported query error with inspirationVincent Ambo1-1/+2
If you can make sense of this commit, it will make sense to you. Change-Id: Ib223bf97b7a28828a04f01bc96365f654549fa60 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3100 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-06 r/2572 refactor(atward): Rename Query -> HandlerVincent Ambo1-18/+18
Query is actually going to be a ... Query. Change-Id: Icc910a8eef47e201054cb1346bc4059c0458659f Reviewed-on: https://cl.tvl.fyi/c/depot/+/3099 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-06 r/2570 feat(web/atward): Support depot paths (to cgit for now)Vincent Ambo1-0/+30
Sends depot paths (such as //web/atward or //nix/readTree/README.md) to cgit. If Markdown files are detected the user is sent to the about page to get the rendered view. Future work will make cgit vs. SourceGraph configurable. Change-Id: I48dea2dc8994644fb5a6f4bfbb846c771996cfc3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3095 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-06 r/2569 fix(atward): Use 'q' query parameter for query insteadVincent Ambo1-2/+10
This removes a bunch of awkwardness around slashes in URLs, which also frequently feature in our patterns. Change-Id: I68c69d4c68436421951ee133bfbc067609f27bb6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3097 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-05-05 r/2566 refactor(atward): Configure listen addressVincent Ambo1-2/+2
This appeases the flokli. Change-Id: Ib6a6c1a2cc8780e7944913d9204b42505b29fdc0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3093 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-05-04 r/2564 feat(atward): Add query for changelistsVincent Ambo1-0/+16
Adds a query for things like cl/42 Change-Id: I144ee25c0f2c9956c81b349d653c5fec42602f9f Reviewed-on: https://cl.tvl.fyi/c/depot/+/3092 Tested-by: BuildkiteCI Reviewed-by: eta <eta@theta.eu.org>
2021-05-03 r/2560 feat(web/atward): Wire up query resolution to a web serverVincent Ambo1-1/+17
Adds a simple web server which logs all incoming requests and either sends the user to the correct destination, or gives up and displays an error (in the future there'll be fallback searches so that peopple can use this as their default search engine easily). Change-Id: I4f10472dbc74fa9cc71fad0533da38eda2b6077c Reviewed-on: https://cl.tvl.fyi/c/depot/+/3089 Tested-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi>
2021-05-03 r/2559 feat(web/atward): Implement match scaffolding for TVL redirectorVincent Ambo5-0/+1085
atward is going to be a new TVL service, living at atward.tvl.fyi, which users can configure as a search engine in their browser. It will understand a variety of TVL-specific query types (such as bug/CL links or code paths). In the future it might also support features like go-links. This commit configures the initial setup for query matchers in atward and adds an example query type (for bugs). This is not yet wired up to a web server. Change-Id: Ifaf06c3f5cc378eee7894b7576ef583fc89264f0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3087 Tested-by: BuildkiteCI Reviewed-by: isomer <isomer@tvl.fyi>
2021-04-30 r/2553 revert: "feat(web/panettone): Allow requesting JSON"grfn2-41/+4
This reverts commit 77c09076eccf343e7f14ed389719c0866de3d649. Reason for revert: It doesn't work - attempting to request any of the pages now gives: [ERROR]] No keys match in SWITCH. Testing against "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9" with EQUAL. Change-Id: Ic4c795fd2a971003a6823a3b68ddee9a03b9f7c9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3061 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-04-22 r/2534 feat(web/panettone): Allow requesting JSONGriffin Smith2-4/+41
Allow specifying an `Accept: application/json` header to the index and show issue routes, to request that those pages be returned as JSON. Change-Id: Ic225139fc9e7fdce0da98984df4ca987685dafe0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3043 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
2021-04-20 r/2532 feat(nix/utils): add storePathName, a more generic baseNameOfsterni1-8/+6
This is a wrapper around baseNameOf which also can deal with derivations. Added to //nix/utils since I've found myself introducing an ad-hoc implementation of this for both //web/bubblegum and //nix/buildC. Change-Id: I2fcd97a150d6eda21ab323fa0d881ff7442a892e Reviewed-on: https://cl.tvl.fyi/c/depot/+/3049 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-04-20 r/2530 refactor(web/converse): Refactor first handlers to rouilleVincent Ambo7-243/+584
This commit starts the refactoring process towards dropping actix (and tokio, ...). It builds, but at this commit, Converse does *not* work. I decided to commit to avoid more ridiculous diffs. Included changes: * Added dependency on rouille. * Refactored DbExecutor (formerly actix actor) to simply be a type with a few methods. Most actor messages still exist as they are being referred to by handlers. * Started refactoring two of the handlers (and their related renderer functions) into Rouille's call scheme. Important note: Rouille does not have safe session management out of the box, and it will need to be implemented as this progresses. Change-Id: I3e3f203e0705e561e1a3392e8f75dbe273d5fa81 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2861 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-04-20 r/2526 fix(bubblegum): import lib from the new correct placesterni2-2/+2
Since cl/2910 depot has no lib attribute anymore. Import it from the depot fix point via depot.third_party.nixpkgs.lib to avoid passing another argument and enlargening the shebang further. Change-Id: I3c719eba38a5ceb36689ebf0409bd19d4f46a609 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3050 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-04-12 r/2497 refactor: Replace 'depotPath' with 'depot.path'Vincent Ambo2-2/+2
Instead of having two ways of accessing the path to the depot (one of which was stuttering, depot.depotPath) we settle on only one: depot.path. This was mostly used for NixOS module imports. Co-Authored-By: Florian Klink <flokli@flokli.de> Change-Id: I2c0db23383fc34f6ca76baaad4cc4af2d9dfae15 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2962 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org>
2021-04-12 r/2485 refactor(users/glittershark): Rename to grfnGriffin Smith3-3/+3
Rename my //users directory and all places that refer to glittershark to grfn, including nix references and documentation. This may require some extra attention inside of gerrit's database after it lands to allow me to actually push things. Change-Id: I4728b7ec2c60024392c1c1fa6e0d4a59b3e266fa Reviewed-on: https://cl.tvl.fyi/c/depot/+/2933 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: glittershark <grfn@gws.fyi>
2021-04-11 r/2478 feat(panettone): don't use `_` for em in inline markdownsterni2-6/+5
Since we are still using third_party, underscores are kind of common in issue titles and are probably often forgotten to escape. Let's just support `*` for emphasized text in titles for now. Change-Id: I305bcf4d4c59123bba4ce816a6da2ee8b022c34e Reviewed-on: https://cl.tvl.fyi/c/depot/+/2926 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: glittershark <grfn@gws.fyi>
2021-04-11 r/2474 feat(tvl): remove aranea from tvl.doteta1-3/+0
I've been told that they don't want to be in this any more, so references are removed in this CL by request. Change-Id: I80a04b714fc57781e57e8dce977d0aec2da4f009 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2927 Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: eta <eta@theta.eu.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Tested-by: BuildkiteCI
2021-04-10 r/2470 refactor: Move nixpkgs attribute to `third_party.nixpkgs`Vincent Ambo3-9/+13
Please read b/108 to make sense of this. This gets rid of the explicit list of exposed packages from nixpkgs, and instead makes the entire package set available at `third_party.nixpkgs`. To accommodate this, a LOT of things have to be very slightly shuffled around. Some of this was done in already submitted CLs, but this change is unfortunately still quite noisy. Pay extra attention to: * overlay-like functionality that was partially moved to actual overlays (partially as in, the minimum required to get a green build) * modified uses of the package set path, esp. in NixOS systems Special notes: * xanthous has been disabled in CI because of issues with the Haskell overlay * //third_party/nix has been disabled because of other unclear dependency issues Both of these will be tackled in a followup CL. Change-Id: I2f9c60a4d275fdb5209264be0addfd7e06c53118 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2910 Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
2021-04-10 r/2459 fix(panettone): always use displayname in subjectssterni1-2/+2
Emails for (re)opening and closing where send out with the user's DN in the subject which is probably not what we want. Using displayname-if-known is probably not necessary as there is not really a case where (not *user*) wouldn't justify a 500 in this context. Change-Id: Id12d3d9619f42eb5337c2d3482b7c1646b5d6a81 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2911 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-04-06 r/2449 fix(panettone): set external-format for stream from cheddarsterni1-1/+1
drakma ignores the :external-format-in parameter if :want-stream is t: > If want-stream is true, the message body is NOT read and instead > the (open) socket stream is returned as the first return value. > If the sixth value of HTTP-REQUEST is true, the stream should be > closed (and not be re-used) after the body has been read. The > stream returned is a flexi-stream with a chunked stream as its > underlying stream. If you want to read binary data from this > stream, read from the underlying stream which you can get with > FLEXI-STREAM-STREAM. Since it doesn't return a plain CL stream which would just work with SBCL, we need to set the external format on the resulting flexi-stream. Fixes b/107. Change-Id: I6e3178123c0927ef21fabf8118d9d357c8afbd42 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2869 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: glittershark <grfn@gws.fyi>
2021-04-06 r/2448 refactor(panettone): remove code duplication in render-markdownsterni1-20/+13
Move the common part (encoding/decoding json and connecting to cheddar) into request-markdown-from-cheddar. The two render-markdown implementations are now only thin wrappers around that function. Change-Id: I81bb34b684af44228dcad02fca541082e6d060ce Reviewed-on: https://cl.tvl.fyi/c/depot/+/2868 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-04-05 r/2446 fix(web/converse): Update to use mime_guess::from_pathVincent Ambo2-3/+1
... instead of its deprecated predecessor. Change-Id: I8af286c6b1ee7c25c153f1209d094ae4f5eb53cc Reviewed-on: https://cl.tvl.fyi/c/depot/+/2860 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-04-05 r/2445 refactor(web/converse): Use crimp instead of reqwestVincent Ambo5-379/+115
This simpler, curl-based HTTP client (which I wrote years ago) is a first step towards cleaning up the dependency mess of converse. Dependency stats: +4, -28 Change-Id: I4f5f3c9307895d261bfb0a6bcf2337b747f9a4c0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2859 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-04-05 r/2444 chore(web/converse): Apply 'cargo fix --edition'Vincent Ambo7-29/+29
This does not yet change up `extern crate` and `macro_use` statements, but since we still depend on Diesel that also wouldn't work right now. Change-Id: I36de1b7b56f7d220f567346e13bad8da06461517 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2858 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-04-05 r/2443 fix(web/converse): Bare minimum changes to build in 2021Vincent Ambo7-6568/+1840
This project depends on Tokio, via actix, and both of those are bad ideas. This wasn't as clear 3 years ago as it is now, but to demonstrate it the project has amassed issues which required at least this minimum of changes to be buildable in 2021 (using a modern rustc). Yes, this adds dozens of new dependencies again (because of a top-level update) but don't worry: They will be gone when I'm done here. Change-Id: I1dde9dc0325da7bdcb6608359fab33e27692dc1d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2857 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2021-04-05 r/2442 docs(converse): Convert README to MarkdownVincent Ambo1-2/+2
Change-Id: Iad5902622a9993c94116edc55de8fa5f6c38d3f1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2856 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-04-05 r/2441 chore(converse): Remove old Github-specific thingsVincent Ambo8-150/+4
* remove files that depot already has, or doesn't need * remove links to old source location Change-Id: Idcd9361bfed00289f09af62f5342c4fd8bd04404 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2855 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-04-05 r/2440 feat(web/converse): Import repositoryVincent Ambo54-0/+11309
Imports the converse forum software I wrote a few years ago. I want to clean this up a bit and try using Hotwire with it. Note: The original repository was AGPL-3.0 licensed. I'm the copyright holder and have relicensed it to GPL-3.0 in the commit that is being merged. Imported from: https://github.com/tazjin/converse git-subtree-dir: web/converse git-subtree-mainline: 386afdc794eefd5bcbc47a3fd7b898a07f69f978 git-subtree-split: 09168021e7405f6b83798d0b43aa6e69e744ae87 Change-Id: Ia8b587db5174ef5b3c52910d3d027199150c58e0
2021-04-05 r/2439 feat(web/bubblegum): allow passing status as an intsterni2-9/+16
The whole pass the name of the status as a string thing was mostly born out of an overeager use of yants. It is still very neat especially for common cases like "OK", so we'll keep it, but also allow passing the integer variant of the status as well which probably feels more natural for a lot of people, especially over getting the casing right for "I'm a teapot". Change-Id: I3f012a291447ef385efdd28132292a8b331998c0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2850 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-04-05 r/2438 feat(web/bubblegum): report some errors to the user via HTTPsterni2-34/+51
We can actually catch some errors that may be generated in bubblegum applications where we can report them to the user in a way that doesn't require curl -vv: * Type errors in the status argument: By removing yants completely we not only (presumably) gain some performance, but also the ability to return an internal server error on an unexpected type instead of throwing. * User generated evaluation errors: by using builtins.tryEval we can catch throws and asserts the user inserted when generating the body and report to the user that something went wrong. To do: also support for the headers. Change-Id: I8363b9825c6c730e624eb8016a5482d63cbc1890 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2849 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-04-04 r/2433 fix(panettone): Add email.lisp to source filesGriffin Smith1-0/+1
email.lisp was missing from the buildLisp derivaation's source files, which meant that none of its definitions were being loaded into the image even though the package was defined by packages.lisp. As an aside, this really should've broken the build - we got a style-warning in panettone.lisp for referencing the missing definitions, but that only surfaced as a warning, and ended up breaking once deployed Change-Id: Ie99c3efeef8e6943aa1f9cfc426957d622c2d718 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2845 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
2021-04-04 r/2431 feat(panettone): Add some more info to emailsGriffin Smith1-12/+22
Add a little bit more information to issue notification emails, including the IDs of issues and links to the issues themselves. Change-Id: Ia54209f936a37c6dbdb60ebff5bb8c1034cffc9a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2809 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
2021-04-04 r/2430 feat(panettone): Send notifications when issues are reopenedGriffin Smith1-0/+15
Send notifications both to IRC and email when issues are reopened after being closed Change-Id: I3a63419c6547ac28eeaafbe212a2a01a5fc2b5af Reviewed-on: https://cl.tvl.fyi/c/depot/+/2808 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
2021-04-04 r/2429 feat(panettone): Send emails when issues are closedGriffin Smith3-18/+42
Send notification emails to the same group of users who receive notifications on issue comments when issues are marked as closed. This also takes the opportunity to generalize issue notification emails a bit, and lay the groundwork for (but not implement) explicit issue subscriber lists. Change-Id: Ie2572ed3ad0207d415b4c362438f772925e7a2c5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2807 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
2021-04-04 r/2428 feat(panettone): Add a settings pageGriffin Smith4-6/+70
Add a user settings page, with a single checkbox that allows disabling receiving all email notifications. Change-Id: Ibef2a497cd59f93b695ff8b9cd36047e514e00c2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2806 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
2021-04-04 r/2427 feat(panettone): Send email notifications for commentsGriffin Smith4-2/+46
When a user posts a comment on an issue, send email notifications (respecting the enable-email-notifications setting) to the author of that issue and all the other users who have commented on that issue. Since the oauth & gmail API stuff that the relay does is slow, this happens in a background thread. Change-Id: Ic00c265deab1030d9ba64c29c9f56314dd179141 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2805 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
2021-04-04 r/2426 feat(panettone): Add functions to send email notificationsGriffin Smith4-1/+65
Add a new package to panettone, :panettone.email with functions to send email notifications to users through the SMTP relay on whitby, respecting the value of `enable_email_notifications` on the user_settings table. Change-Id: Ia4ec65965abda06f1fadb178143d66bb8eae6482 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2804 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
2021-04-04 r/2425 feat(panettone): Add a user settings tableGriffin Smith2-1/+33
Add a new user-settings table and dao class, with a flag that allows an individual user to disable receiving email notifications Change-Id: I537bfca74490941934c0adc7328bcd6ed5c9c0b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2803 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <mail@tazj.in>
2021-04-01 r/2395 chore(web/bubblegum): add OWNERS filesterni1-0/+3
Forgot to add this when moving it out of my //users directory. Change-Id: If6d30a2a58a6bd73e160706cb706e3b2e100e909 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2754 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2021-04-01 r/2394 feat(web/bubblegum): nix CGI programming frameworksterni8-0/+585
So here is what has been keeping me up at night: At some point I realized that nix actually made a somewhat passable language for CGI programming: * That `builtins.getEnv` exists as one of the impurities of Nix is perfect as environment variables are the main way of communication from the web server to the CGI application. * We can actually read from the filesystem via builtins.readDir and builtins.readFile with bearable overhead if we avoid importing the used paths into the nix store. * Templating and routing are convenient to implement via indented strings and attribute sets respectively. Of course there are obvious limitation: * The overhead of derivations is probably much to great for them to be useful via IfD. * Even without derivations, nix evaluation is very slow to the point were a trivial application takes between 100ms and 400ms to produce a response. * We can't really cause effects other than producing a response which makes it not viable for a lot of applications. There are some ways around this: * With a custom interpreter we could have streaming and multiplexed I/O (using lazy lists emulated via attrsets) to cause such effects, but it would probably perform terribly. * We can use builtins.fetchurl to call other HTTP-based microservices, but only in very limited constraints, i. e. only GET, no headers, and only if the tarball ttl is set to 0 in the global nix.conf. * Terrible error handling capabilities because builtins.tryEval actually doesn't catch a lot of errors. To prove that it actually works, there are some demo applications, which I invite you to run and potentially break horribly: nix-build -A web.bubblegum.examples && ./result # navigate to http://localhost:9000 The setup uses thttpd and executes the nix CGI scripts using users.sterni.nint which automatically passed `depot`, so they can import the cgi library. Change-Id: I3a22a749612211627e5f8301c31ec2e7a872812c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2746 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>