Rather than loading as the user types for the signup form, start the
page with the full list of attendees already loaded and filter that list
as the user types. There are never going to be more than 50 attendees,
so there's no perf cost here, and it's nice to have the list to scroll
through in the frontend.
Change-Id: Iba69b101856756801183979b9384503520b6701f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4624
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
This is just a Big Old Button
Change-Id: I19f5d15562fe2e0ef26de0cc61d06604e92c9c00
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4587
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Start working on styles for the app, beginning with a global
stylesheet/reset and styles for the nav.
Change-Id: Ie15e549d7bb4e0116582f4099752aa2503eb9ce7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4583
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add support for importing the tsv that meetup exports into a list of
upserted attendees, and event-attendee joins.
Change-Id: I5f4ddc9fc63bcc6b0334bc3e1d3cbc4d5b99c21b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4570
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Git recently started warning about this behavior, which it's always had
and I've always liked, and I don't want the warning.
Change-Id: I19ae397770b271924cc975e5f8c50d6351ed29ce
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4569
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
This'll be publicly hosted, and I don't want search engines knowing
about it.
Change-Id: I801217d11f6656b254698b852e5dfb4d96305a38
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4511
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a list of attendees visible only to authenticated users, with stats
about rsvps, events attended, and no-shows.
Change-Id: Ib9a0fe8acf8c616fb725c613494b37121a1ad0e4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4501
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Only authenticated users should be allowed to create events, etc.
Change-Id: I1f560365dbf583cf6cecf4a0798952f323bbd42e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4412
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
If a user already exists with the discord ID we just authenticated, just
return it rather than trying to create another user.
Change-Id: I582c4c8c55f6fb399295b3e691b0bc59e77151f4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4410
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Allow users with the Organizers role to sign in via a Discord Oauth2
handshake, creating a user in the users table and adding the ID of that
user to the session.
Change-Id: I39d9e17433e71b07314b9eabb787fb9214289772
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4409
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
It *appears* that the main trigger for the :title of an org element
being a list instead of a string is if it contains rich text properties
as children, eg links, bold text, etc. This defines a function
that *attempts* to turn all of those into a single string, for use in my
i3status bar for the currently clocked-in task.
Change-Id: Ib655595914e54cd0e01f0fee6d1352c98a9f1436
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4364
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Get flash working via a functioning cookie-store session middleware, and
display flash messages if present at the top of every page.
Change-Id: If5f267dee3f41ef7954ea82667822c596e1b0474
otherwise we'd return the string "nil", which with the substring-ing
that was happening would end up as "Inbox: i" in the status bar
Change-Id: I567a6042b592dd9313bfa22d480c22936494a8c1
If a creature has a weapon wielded, then they now use that weapon to
attack the player *instead of* their natural attacks. This uses a new
`creatureAttackMessage` field on the Item raw for the message to use.
Change-Id: I73614f33dbf88dd4c68081f15710fa27b7b21ba2
Add an `equippedItems` field to the CreatureType raw, which provides a
chance for generating that creature with an item equipped, which goes
into a new `inventory` field on the creature entity itself. Currently
the creature doesn't actually *use* this equipped item, but it's a step.
This commit also adds a broken-dagger equipped 90% of the time to the
"husk" creature.
Change-Id: I6416c0678ba7bc1b002c5ce6119f7dc97dd86437
Creatures are going to have an inventory too now in addition to
characters, so all the data types and lenses and stuff that define
inventory need to be broken out into a separate module so the Creature
entity can use them.
Change-Id: I83f1c70d316afaaf2e75901f9dc28f79fd2cd31f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3901
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Because floating points, it's possible that a creature has reached their
destination even if the *progress* to that destination is at 0 - if that
happens, they should pick a new destination regardless. This fixes the
issue where creatures would occasionally get "stuck" and never move
after wandering around for a bit.
Change-Id: I01a11ce4bd448c25a818c886825e4fad56dffe03
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3885
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
some... *ahem*... very insistent people have been asking for this,
despite the fact that it doesn't allow for diagonal movement.
Change-Id: Ic58e2435b34e27e3ed399c7b8f3bcbc1f634f6b3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3870
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a new "husk" creature raw, limited to only being generated on levels
>= 1, including support for actually doing that limiting.
These guys are gonna get daggers next!
Change-Id: Ic4b58dc7ee36b50ced60fec6912cd1b46269d55c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3868
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
The plan is to use this as a test bed for generating creatures wielding
items, but for know it just shows up on the ground in places.
Change-Id: I8b292606f425cd41bff9e52727f1094886777102
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3867
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Start documenting the fields of the raw type YAML files and what they
mean, to make it easier to write new raw types.
Change-Id: I9672b757e89f1cc665d7e90078d83cfd87173d7f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3865
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
mount the host key in as a single-file volume, so the server can
actually read it.
Change-Id: I5fb58536717c91480d1f4610b6fb3258a36169e0
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3864
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
The actual function we want for the format we're using is
decode_secret_key, not decode_openssh, apparently - covered this with a
toneest to make sure.
Change-Id: I659226169f213b8464b96aec6b94bf13fd80aac8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3863
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
%l includes two pairs square brackets around the text, which doesn't
work if we want a description - %L only includes the literal link
location, so we can surround it in only one pair of square brackets
Change-Id: I3436f631f0e33336214828e0eb58d5333418b26f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3820
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Rather than randomly generating a new host key every time we run the
server, load the host's secret key from a file on disk at startup, so
that clients don't have to disable host key verification to connect
every time we restart.
Change-Id: I4d283bc919f4825789f686a98c174a71929087a6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3819
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Gitignore:
- *.save, which I use for save-games I want to use as test case
reproductions
- .tasty-rerun-log, which tasty-rerun uses to save which tests failed on
the last run
- cabal.project.local-*, since I've got a file on my machine called
cabal.project.local~0 so apparently that's a thing now
Change-Id: I07c391fa25a84e96efca6771997f280ff12826b5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3818
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Rerunning only failed tests is nice! To use this, run `cabal new-run
test -- --rerun`
Change-Id: I9dc4d69749c3e3d5ba8d1661a2fdf73e49cd8ad5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3816
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Dunst as of 1.7.0 apparently no longer supports keyboard shortcuts (so
much for semantic versioning) in favor of having them be bound in the
window manager to invocations of `dunstctl`.
Change-Id: Ic3f10a29061c19ea0002e0f6d596baeafa58d968
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3815
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
txtWrap takes up half the available width in the viewport, causing
the input for prompts to display way too far to the right of the actual
prompt. I'm not aware of any actual mutiline prompts, so using txt here
makes way more sense.
Change-Id: I7f62066f1b07b5d6ba2c7ffed77c87ae33b1dfa5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3814
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a nixos module for running the xanthous server in a docker
container, and install it on mugwump including a prometheus scrape
config.
Change-Id: Ifeb315845b7eef2ee33af98fa3f71acdd3d9fe6b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3812
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a prometheus exporter and some simple prometheus metrics, so that I
can look at dashboards and get alerts for things like lots of
connections
Change-Id: Ic1e0568200299dc852b74da647a6354267ee7576
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3811
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
This appears to work pretty nicely!
Change-Id: Icf52f58225ee2837b30ba6187ae3ba3c539de9df
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3810
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Don't write to my disk, please, random internet people.
Change-Id: I1d199fc3675f6ec7630f598bbc33dc7ef7e02e68
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3809
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Add a command-line parameter to disable the Save command, so people
don't save and fill up my disk when I'm running this on the internet.
Change-Id: I2408e60de2d99764ac53c21c3ea784282576d400
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3808
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Accept password authentication in addition to public key authentication,
but ignore the actual password, so that clients without ssh keys
configured (or configured to send no ssh keys) can authenticate.
Change-Id: I86130b9725d1928ac45b5db55f18c09687ee0fd5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3807
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
Add the start of an ssh-compatible server application for playing
Xanthous over ssh. The idea here is that the user can ssh with whatever
username they like (defaulting obviously to their login username) and
then that gets passed as the --name flag to xanthous as they play.
Change-Id: I39eec288ac8e22a165e859479888d78158a58818
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3806
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
numAliveNeighbors was doing bounds checks too aggressively, resulting in
always returning 8 for points on the edge, meaning walls weren't getting
properly created for those points, making edges of the map open to walk
through.
Change-Id: Iada6be46ce7cc77ce99a320b7310008898b89273
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3805
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Don't generate tutorial messages on levels other than the first.
Change-Id: I7681377461b92f5d5015931b0088bef9d358d2e4
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3804
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Using a signed Int here is a little silly, since we can never have
negative levels.
Change-Id: Ibe03be5014226e07dfa6f78d8360301bc1b7c9b1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3803
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
When saving, default to the save file that was loaded for the game if
any. To support this, this also makes text prompts support a default,
which will be used if no value is input.
Change-Id: I72a826499d6e987b939e3465a2d29167e53416be
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3801
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Carry over everything except the character's position when going up
stairs, so that eg the character doesn't lose everything they picked up
and instantly heal to full when going up a level.
Change-Id: I08513578a72f2410a363bbadbb273d95826a3f1b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3766
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
Implement a first pass at a "fire" command, which allows throwing rocks,
the max distance and the damage of which is based on the weight of the
item and the strength of the player.
Currently the actual numbers here likely need some tweaking, as the
rocks are easily throwable at good distances but don't really deal any
damage.
Change-Id: Ic6ad0599444af44d8438b834237a1997b67f220f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3764
Reviewed-by: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
The default gcc version for pkgsCross.avr.buildPackages is 10.x, which
seems to be able to build the layout derivation just fine.
Change-Id: Ib7790419f38121ea2b1a09c790ef3a04afc0f9f8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3712
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
The previous impl of this was formatting the pre-save contents of the
buffer, effectively preventing saving any changes (oops).
Change-Id: I17d4b8ba0943964d700f7dca81af4f46b149c0b8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3644
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>