Commit graph

1424 commits

Author SHA1 Message Date
Pere Lev
27f1fe2db3
Start moving app state to ./state dir
This is in preparation for the Dockerfile
2024-10-16 00:32:54 +03:00
Pere Lev
cdc97dcb8b
Actor system: Implement internal auto-increasing actor IDs 2024-08-22 20:54:31 +03:00
Pere Lev
0d189271cc
Docs: Mention mkdir static in INSTALL.md
Probably should use `.gitkeep` instead. But also, provide docker images
so that people can skip all this manual stuff.
2024-08-21 20:23:54 +03:00
Pere Lev
e6319aa686
Actor system typed methods + upgrade to LTS-22 + remove darcs dep
- I upgraded the actor system (Control.Concurrent.Actor) to support
  typed per-actor methods with type-level names, parameter lists and
  return values
- For extensible sum types, I decided to use the 'vary' package, while
  extensible product still uses 'HList' (other options are to get both
  from 'extensible' (Sum, Prod) or from 'vinyl' (Rec, CoRed))
- Since 'vary' is new, it uses GHC2021 and thus requires GHC 9
- So I decided to make the leap into upgrading to an LTS with GHC 9
- Vervis was at LTS 18, at first I tried 19 and 20 but there were
  dependency version problems, in particular I couldn't solve them for
  the 'darcs' package even when I switched to latest LTS which is 22
- So I decided it's time to do the long-waiting task of switching to
  calling-darcs-process instead of using darcs as a library

All of this together creates a huge commit, but 3 big things are now
solved :)
2024-08-21 20:17:52 +03:00
Pere Lev
1c993d3397
S2S: Person: Fix bug in Accept{Create} handler 2024-08-08 15:25:27 +03:00
Pere Lev
88e96b019e
Fix bug in remote-delivery actor SQLite database handling 2024-08-08 14:43:07 +03:00
Pere Lev
83a36824a0
Fix bug in OCAP verification, wasn't checking Squad records 2024-08-08 14:36:11 +03:00
Pere Lev
a03968ca0b
HomeR, *NewR: List grants from extensions, not just direct ones 2024-08-08 13:08:18 +03:00
Pere Lev
d52eacd2a3
S2S: Relax role requirements for adding-resource-to-team
- Factory.Add now requires write instead of admin
- Group.Add.Resource now allows any role, not necessarily admin
2024-08-07 18:06:06 +03:00
Pere Lev
a418e21ee2
Fix the bug fix 2024-08-07 17:43:36 +03:00
Pere Lev
d224569efc
Add sqlite3 extension to per-actor DB files to fix a bug
Vervis tries to open Sqlite's WAL files as databases and thus fails to
launch
2024-08-07 17:00:12 +03:00
Pere Lev
e1c952a3b2
Update readme 2024-08-07 13:24:01 +03:00
Pere Lev
94762ca76c
UI, C2S, S2S: Factory: Make allowed types editable
I added a new activity type, Patch. There's already a ForgeFed type with
the same name, used for representing patches of course. Perhaps the
duplication will work, since these types are used in different
situations. I'd happily change to Edit, but Patch may become the
standard name in Fediverse software. So let's go with that.
2024-08-07 13:16:25 +03:00
Pere Lev
b74d0d46c4
S2S: Factory: Implement collaborators and teams
Teams now serve as a way to offer factories to remote instances
2024-08-06 17:28:14 +03:00
Pere Lev
df4a2b221e
DB, S2S: Factory: Record set of allowed types 2024-08-06 15:37:49 +03:00
Pere Lev
18bcfb88f2
Fix "no people" bug in migration 554 2024-08-06 12:54:21 +03:00
Pere Lev
e196ee6f34
Switch to factory-based creation of Deck, Project and Group
- UI for creating a Factory
- UI for specifying a Factory when creating resource actors
- Old way of creation doesn't work anymore, except for Factory itself
- UI indicates whether you're an admin user
- Settings allow to choose "resident" factories, i.e. ones automatically
  offered to every newly verified user

Caveats:

- Factories are all-in-one, no mechanism yet for choosing actor types
- No UI/logic for auto-offering a Factory to all users of a different
  instance, and signaling other instances about newly verified local
  users
2024-08-06 12:33:02 +03:00
Pere Lev
66870458b7
Add a new actor type: Factory
- No factories inserted to DB yet
- Admin user list specified in settings
- Admins can create a Factory via C2S
- Creating other actors via C2S the old way still works as well
- Factory S2S handler implementation still blank
2024-08-02 18:31:06 +03:00
Pere Lev
a74b24f61a
Make push-to-repo SSH events sequential via the Repo actor
Until now, `Vervis.Ssh` was freely running git/darcs commands,
regardless of what the `Repo` actor is doing at the same time. It means
that in the `Repo` actor implementation, every repo manipulation must
take into account the possibility for a simultaneous push.

This commit gives more control, clarity and safety to the `Repo` actor.
Since moving the push logic itself to the `Repo` actor would be
cumbersome and complicated, the push logic remains in `Vervis.Ssh`, but
some thingss happen differently:

1. Before running the git/darcs command that handles the push, it waits
   for the `Repo` actor to be available (as if pushing is one of the
   `Repo` actor's methods)
2. In the method handler, the `Repo` actor waits for `Vervis.Ssh` to say
   that the push handler is done
3. When the git/darcs command returns, `Vervis.Ssh` sends the
   notification to release the `Repo` actor from the waiting

So, from now on, `Repo` and `Loom` code, in particular code that handles PRs,
can be sure no simultaneous pushing will happen.
2024-07-29 23:06:42 +03:00
Pere Lev
ea463703b5
Upgrade actor system, now using HList, to allow per-actor method type 2024-07-29 12:29:38 +03:00
Pere Lev
3ddae07d26
Fix migrations 594 & 595 that were requiring a Person in DB 2024-07-29 12:25:50 +03:00
Pere Lev
e0935ee6db
S2S: Invite: Remove Invite-based add-component code 2024-07-23 19:31:52 +03:00
Pere Lev
1fa71b6b9c
Docs: API.md: Info about the specific inbox activity types 2024-07-19 18:08:44 +03:00
Pere Lev
bdb8c44cd6
Docs: Start sections about inbox and outbox 2024-07-19 00:54:16 +03:00
Pere Lev
d2ff048b2e
Tools for type-level-property-powered ForgeFed parsing-serializing 2024-07-18 22:30:34 +03:00
Pere Lev
b9ab5e546a
Upgrade to LTS 18 (last LTS with GHC 8)
The major changes:

- No more hit and hit-* packages
- No more diagram and SVG font stuff
- Dependency on darcs is not yet removed
- No more persistent-graph i.e. recursive SQL queries
- Some hit-network stuff still in use, now part of Vervis itself
- Git operations use the git command-line program, a convenient API is provided
  in Data.Git.Local
- No more patch parsing and no diff view, patches are treated as a piece of
  text and displayed as-is (although I could add syntax-highlighting as a nice
  touch for the HTML view)
2024-07-18 13:57:41 +03:00
Pere Lev
9ce745c725
UI, DB: Store debug reports in DB and link to them from navbar 2024-07-06 12:53:31 +03:00
Pere Lev
b8922b3157
Implement /register 2024-07-06 00:14:36 +03:00
Pere Lev
19194426c2
Implement /register/available 2024-07-05 23:27:35 +03:00
Pere Lev
3db1668a6f
Implement /register/enabled endpoint 2024-07-05 22:23:29 +03:00
Pere Lev
17f1583808
Document registration API that I'm about to implement 2024-07-05 21:38:00 +03:00
Pere Lev
37f1665f16
OAuth: Upgrade Dvara version, fxing some bugs 2024-07-05 20:01:23 +03:00
Pere Lev
cd1bc1aee3
Pass theater to runSsh 2024-07-04 22:26:52 +03:00
Pere Lev
1b322f9606
Update more deps that switched from Darcs to Git 2024-07-04 21:54:33 +03:00
Pere Lev
0af8046ce1
Update deps that moved from Darcs to Git 2024-07-04 21:19:17 +03:00
Pere Lev
a5699898c5
Docs: Start API.md documentation file 2024-07-04 19:45:10 +03:00
Pere Lev
26ace5f9b8
Serve AP version of component projects collection 2024-07-04 14:17:21 +03:00
Pere Lev
ef8151c7cb
S2S: Project: Upon component-Revoke-start-Grant, remove whole Component record 2024-07-01 18:27:16 +03:00
Pere Lev
4d06d8e840
S2S: Component: Remove: Port team-mode from Project 2024-07-01 16:51:00 +03:00
Pere Lev
02f46a21f9
S2S: Component: Grant: Port team-mode from Project 2024-07-01 15:54:12 +03:00
Pere Lev
10a1f74847
S2S: Component: Grant: Refactor, prepare for adding team-mode 2024-07-01 15:35:23 +03:00
Pere Lev
40ab419946
S2S: Component: Accept: Port team-mode from Project 2024-07-01 13:44:23 +03:00
Pere Lev
cdd43292bc
S2S: Component: Add: Port team-mode from Project 2024-06-27 20:32:44 +03:00
Pere Lev
7a5147aad9
S2S: Project: Remove: Implement team mode 2024-06-26 20:39:30 +03:00
Pere Lev
3359974af7
S2S: Project: Grant: Implement team mode 2024-06-26 19:20:38 +03:00
Pere Lev
68141fa7da
S2S: Project: Accept: Implement team mode 2024-06-25 00:06:15 +03:00
Pere Lev
3c8b8dbc48
S2S: Project: Add: Implement team mode 2024-06-24 20:05:54 +03:00
Pere Lev
5d88036fc3
S2S: Group: Revoke: Implement resource mode 2024-06-20 21:48:48 +03:00
Pere Lev
4d37d1293a
S2S: Group: Remove: Implement resource-passive mode 2024-06-20 18:37:22 +03:00
Pere Lev
9df437a043
S2S: Group: Remove: Implement resource-active mode 2024-06-20 17:58:26 +03:00