fr33domlover
37b3416a41
Support remote actors specifying 2 keys, and DB storage of these keys
...
It's now possible for activities we be attributed to actors that have more than
one key. We allow up to 2 keys. We also store in the DB. Scaling to support any
number of keys is trivial, but I'm limiting to 2 to avoid potential trouble and
because 2 is the actual number we need.
By having 2 keys, and replacing only one of them in each rotation, we avoid
race conditions. With 1 key, the following can happen:
1. We send an activity to another server
2. We rotate our key
3. The server reaches the activity in its processing queue, tries to verify our
request signature, but fails because it can't fetch the key. It's the old
key and we discarded it already, replaced it with the new one
When we use 2 keys, the previous key remains available and other servers have
time to finish processing our requests signed with that key. We can safely
rotate, without worrying about whether the user sent anything right before the
rotation time.
Caveat: With this feature, we allow OTHER servers to rotate freely. It's safe
because it's optional, but it's just Vervis right now. Once Vervis itself
starts using 2 keys, it will be able to rotate freely without race condition
risk, but probably Mastodon etc. won't accept its signatures because of the use
of 2 keys and because they're server-scope keys.
Maybe I can get these features adopted by the fediverse?
2019-02-04 19:38:50 +00:00
fr33domlover
02da508ed0
Allow actor publicKey to be a URI, and require the URI to match the Sig keyId
2019-02-04 10:07:25 +00:00
fr33domlover
c336d56036
Allow actor public key to be in a separate document
2019-02-03 23:39:56 +00:00
fr33domlover
8db38c087f
Allow other servers to do blind key rotation by re-fetching if sig is invalid
2019-02-03 15:05:28 +00:00
fr33domlover
b0b2aa83c5
Store remote actor keys in the DB, reuse them instead of GETing every time
2019-02-03 13:58:14 +00:00
fr33domlover
21c8df1251
Actor public key specifies whether it's shared
...
Shared key means the key is used for multiple actors. I'm not sure explicitly
specifying this will be necessary, but I prefer to have it in place to help
with debugging in case something unexpected comes from other servers, or my
format overlaps with stuff used in other software and encodes a different
meaning.
Each public key can specify whether it's shared or personal, and this patch
checks for that when verifying a request signature. It rejects shared keys,
accepting valid sigs only from personal keys.
Very soon I'll add shared key support.
2019-02-03 11:12:18 +00:00
fr33domlover
991296faa1
Move some JSON/AP codec utils to new Data.Aeson.Local module
2019-02-03 11:01:36 +00:00
fr33domlover
e6f987817e
Fix: HTTP signature wasn't being sent in AP POSTs
2019-02-03 10:59:35 +00:00
fr33domlover
cd8ed9ef89
Hold a persistent server key for ocap signatures
2019-01-30 03:12:42 +00:00
fr33domlover
c0965a4c47
Default roles for repos and turn user/anon collab tables into proj/repo fields
...
* Repo collab now supports basic default roles developer/user/guest like
project collab does
* User/Anon collab for repos and projects are now stored as fields instead of
in dedicated tables, there was never a need for dedicated tables but I didn't
see that before
* Repo push op is now part of `ProjectOperation`
* `RepoRole` and related code has been entirely removed, only project roles
remain and they're used for both repos and projects
* This is the first not-totally-trivial DB migration in Vervis, it's automatic
but please be careful and report errors
2019-01-29 22:24:32 +00:00
fr33domlover
5cba838917
Enable basic default project roles
...
* When adding collaborators, you don't need a custom role. If you don't choose
one, a basic default "developer" role will be used
* If you don't assign a `ProjectCollabUser` role, a default "user" role is
assumed for logged in users, otherwise a "guest" role
* The "guest" role currently has no access at all
* Theoretically there may also be a "maintainer" role allowing project
sharers/maintainers to give maintainer-level access to more people, but right
now maintainer role would be the same as developer so I haven't added it yet
2019-01-28 14:43:07 +00:00
fr33domlover
577df6ddcf
Add "about" field to person table, display in person page
2019-01-26 23:39:13 +00:00
fr33domlover
e9ac361f27
Uncomment new person form, it's not being used
2019-01-26 23:38:43 +00:00
fr33domlover
20c0e40638
Determine operation access in Vervis.Access, reuse it everywhere it's needed
2019-01-26 22:22:49 +00:00
fr33domlover
250701712a
Move most of the DB graph modules to a separate persistent-graph library
2019-01-26 22:20:19 +00:00
fr33domlover
da6d8c008e
Rename project field in Project Role assignment tables, it had the wrong name
2019-01-26 12:56:15 +00:00
fr33domlover
4875f0b9f7
Make login status display consider unverified login
2019-01-21 22:51:19 +00:00
fr33domlover
04e26a911d
In httpGetAP, if we got an unexpected Content-Type, specify it in error message
2019-01-21 22:24:09 +00:00
fr33domlover
1f47ca39eb
Federation test outbox page with form for entering JSON
2019-01-21 15:54:57 +00:00
fr33domlover
2cc621e3a5
Public ActivityPub actor in PersonR
...
It already had one, but it didn't have a public key and it was using the old
mess of the Vervis.ActivityStreams module, which I'll possibly remove soon.
It's hopefully more elegant now.
2019-01-19 05:56:58 +00:00
fr33domlover
2a4dc345f4
Back to using the (updated) YesodHttpSig class
2019-01-19 04:21:56 +00:00
fr33domlover
393cce0ede
When GETing the keyId, set Accept header to JSON-LD/AS2
2019-01-19 02:57:58 +00:00
fr33domlover
93def0dfc8
When doing httpJSON to GET keyId, use appHttpManager, not the silly global one
2019-01-19 02:33:20 +00:00
fr33domlover
28439b0236
Add InboxR to breadcrumbs instance, I always forget and it causes errors
2019-01-19 02:20:49 +00:00
fr33domlover
e4153fc909
Ugh I forgot *again* to commit a new source file, the actual InboxR handler
2019-01-19 01:56:50 +00:00
fr33domlover
df01560ea6
ActivityPub inbox test page
...
This patch includes some ugliness and commented out code. Sorry for that. I'll
clean it up soon.
Basically there's a TVar holding a Vector of at most 10 AP activities. You can
freely POST stuff to /inbox, and then GET /inbox and see what you posted, or an
error description saying why your activity was rejected.
2019-01-19 01:44:21 +00:00
fr33domlover
499e26db48
Periodically rotated AP actor key for signing ActivityPub requests
...
The actor key will be used for all actors on the server. It's held in a `TVar`
so that it can always be safely updated and safely retrieved (technically there
is a single writer so IORef and MVar could work, but they require extra care
while TVar is by design suited for this sort of thing).
2019-01-14 22:08:44 +00:00
fr33domlover
adaa920aa4
Launch service thread with a function that re-throws if they fail
...
In Haskell by default if a thread has an exception, the main thread isn't
notified at all. This patch changes service thread launching to re-throw their
exceptions in the main thread, so that their failure is noticed.
2019-01-14 22:03:49 +00:00
fr33domlover
5862b03019
Remove HTTP connection manager, it's not being used
...
I suppose there's no performance difference in using one, but it requires
`http-conduit` as a build dependency, so potentially we may be reducing build
time by removing unnecessary deps.
2019-01-14 02:30:39 +00:00
fr33domlover
0e2001af0f
Palette: Make the dark blue lighter, it's too dark against the #111 background
2019-01-03 10:18:09 +00:00
fr33domlover
632bfe1979
In repo change feed, entry ID is now the URL of patch page
2018-12-12 08:37:01 +00:00
fr33domlover
4bd33b59e5
Remove GitOld module, it's not in use anymore
2018-12-12 07:59:19 +00:00
fr33domlover
33338a73cc
Upgrade to GHC 8.4 and LTS 12
2018-12-05 03:41:19 +00:00
fr33domlover
9bc5d411c8
Change color scheme to something hopefully not controversial
2018-07-12 09:25:04 +00:00
fr33domlover
cf3f8fb8f6
Add CSRF token to all buttons through a new buttonW
widget
2018-07-11 08:15:19 +00:00
fr33domlover
01163dfe9a
Darcs patch parser: Make sure we read the whole patch successfully
2018-07-10 16:00:01 +00:00
fr33domlover
edaf141359
Fix Darcs patch author parsing
2018-07-10 15:26:16 +00:00
fr33domlover
a50de1fe88
Darcs patch view, supporting only text file edit hunks so far
2018-07-10 14:02:30 +00:00
fr33domlover
13bd369de3
Darcs patch reader: Join adjacent remove-add sequences like in the Git module
2018-07-09 19:12:11 +00:00
fr33domlover
16c71b666f
Data.List.Local: Generalize input list to be any Foldable
2018-07-08 21:57:08 +00:00
fr33domlover
c8146bbff4
Data.List.Local: Comment out the unused groupByFst
2018-07-08 21:56:08 +00:00
fr33domlover
7782e83419
Initial implementation of Darcs patch reader
2018-07-08 14:45:35 +00:00
fr33domlover
c8b085fbc8
Plan for parsing Darcs patch for patch view
2018-07-07 16:05:10 +00:00
fr33domlover
a1d0b8402e
Disable CSRF token check for HTTP git pull
...
Git pull uses a POST request, which is treated as a write request and the CSRF
token is checked. However, no modification to the server is made by git pulls,
as far as I know (actually I'm not sure why it uses a POST). The entire
response is handled by the git command, and the client side is usually the git
command running in the terminal, there's no session and no cookies (as far as I
know). So I'm just disabling CSRF token checking for this route.
2018-07-01 15:04:33 +00:00
fr33domlover
c420b8d8ea
Make the cookie encryption key and timeout configurable in settings file
2018-07-01 08:15:23 +00:00
fr33domlover
870123bfcc
Enable CSRF middleware, hopefully this time it works
2018-07-01 04:51:43 +00:00
fr33domlover
9ed1f4c99d
Fix: Sharer and repo in SSH address path weren't being lowercased in SSH server
...
The sharer and repo were being taken and used as is to check push permissions,
which is how it's supposed to be, *but* they were also being used as is to
build the repo path! So sharer and repo names that aren't all lowercase were
getting "No such repository" errors when trying to push.
I changed `RepoSpec` to hold `ShrIdent` and `RpIdent` instead of plain `Text`,
to avoid confusions like that and be clear and explicit about the
representation, and failures to find a repo after verifying it against the DB
are now logged as errors to help with debugging.
I hope this fixes the problem.
2018-06-18 08:30:57 +00:00
fr33domlover
6088b1e117
Display tickets in list view the same as in tree view
2018-06-17 10:29:51 +00:00
fr33domlover
ef21175ec2
Allow loading the SVG font from deployment data path
2018-05-26 10:27:05 +00:00
fr33domlover
0b2090f048
Fix issue: Ticket table was displaying project sharer instead of ticket author
2018-05-26 08:02:07 +00:00
fr33domlover
5c12e7c34f
Add project role op for opening tickets, require it for opening a ticket
...
Before that only the project's sharer was authorized to open a ticket. Now
everyone can, once given a role with the op.
2018-05-26 06:59:54 +00:00
fr33domlover
ca1e83f504
Apply basic style to make commit diffs look a bit less very ugly
2018-05-24 22:42:01 +00:00
fr33domlover
0895fbf911
Minimal diff context line number is 1, not 0, latter caused vector slice error
2018-05-24 22:20:52 +00:00
fr33domlover
7d237b7540
Adapt to darcs-lights and changes in darcs-rev
2018-05-24 21:45:01 +00:00
fr33domlover
400ddf6089
Forgot breadcrumb for RepoPatchR
2018-05-24 21:44:13 +00:00
fr33domlover
b398f05ecc
Ignore line numbers when computing diff
2018-05-21 20:54:05 +00:00
fr33domlover
9f77ea69cb
Display commit diff for Git repos
2018-05-21 20:32:34 +00:00
fr33domlover
dbec638415
Generate commit diff data for git repos
2018-05-19 16:10:03 +00:00
fr33domlover
5e2ac28c30
Forgot to record new files!
2018-05-18 19:44:14 +00:00
fr33domlover
6d97636b0f
Commit info display, no diff diplay yet
2018-05-17 23:33:37 +00:00
fr33domlover
ce89bded73
Add a commit view route, nothing displayed yet
2018-05-17 15:46:57 +00:00
fr33domlover
8eca3fa647
Upgrade to GHC 8 and LTS 10.10
2018-05-16 00:02:54 +00:00
fr33domlover
47b0cdfc2f
Implement forgotten loadUserByEmailAddress (thanks ultrason)
2018-05-15 23:54:12 +00:00
fr33domlover
d49b5d678c
Allow login using email address
2018-04-11 11:09:42 +00:00
fr33domlover
c172784d61
Display last change for Darcs repos in homepage
2018-04-09 22:00:01 +00:00
fr33domlover
c768659f57
Fix typo in message text
2018-04-09 00:38:40 +00:00
fr33domlover
3cc2810d4e
Fix DB migrations and use the validating addEntities
2018-04-05 00:04:39 +00:00
fr33domlover
28f6cbaf5a
Fix accidental infinite loop in error message formatting
2018-04-05 00:03:27 +00:00
fr33domlover
ec28256de5
Adapt to switch to typed default/fill values in persistent-migration
2018-04-03 01:20:24 +00:00
fr33domlover
7c2faa7faa
Email tokens expire within 1 day
2018-04-01 03:02:35 +00:00
fr33domlover
282ed32fe6
Upgrade to latest yesod-auth-account
2018-04-01 01:29:50 +00:00
fr33domlover
c2785c8e47
Oops forgot to commit a source file
2018-04-01 00:59:13 +00:00
fr33domlover
bfa6436bb3
Atom and RSS feeds for repo history
2018-03-31 22:04:33 +00:00
fr33domlover
c5a50c336e
Adapt to persistent-migration changes
...
We have gained:
* Haskell-side validation of schema changes before their execution
* Report of results of migration process
* Handling of old deployments
However:
* The validation code hasn't been tested yet at all
* Most of the migration list hasn't been applied at all yet
* Adding lists of entities from a model file is NOT VALIDATED!!! It's totally
possible to implement, just need to catch all the small details right
2018-03-31 19:22:37 +00:00
fr33domlover
bec9290783
Complete DB migration list, allowing to upgrade 2016-08-04 running instance
...
Until now the list of DB migration actions was incomplete, containing only
changes made since I added the migration system itself. It now contains the
2016-08-04 model, and then every change made since then.
IMPORTANT: The 2016-08-04 instance doesn't have a schema version entity at all,
so it is assigned version 0, while the actual version of its schema is 1. I'm
going to patch persistent-migration to allow it to be 1, making the migration
path smooth.
2018-03-27 14:28:56 +00:00
fr33domlover
f149da8ec6
getPersonR respond with minimal ActivityPub actor
2018-03-25 19:26:30 +00:00
fr33domlover
abfb77479f
Move DarcsRev and code we're sharing with it into a separate library
2018-03-20 23:45:09 +00:00
fr33domlover
ff5bb97383
Move Yesod.Mail.Send to a new dedicated separate library
2018-03-20 16:01:33 +00:00
fr33domlover
865d81c235
Resend POST and verify GET require unverified login
2018-03-18 00:13:22 +00:00
fr33domlover
baeef7873e
Unverified login and dedicated route for verification email resend form
2018-03-17 22:59:40 +00:00
fr33domlover
f196bf38d6
Unverified variants of setCreds and clearCreds
2018-03-17 22:16:02 +00:00
fr33domlover
139cc996d6
Write unverified login user functions
2018-03-17 17:30:46 +00:00
fr33domlover
d026cf0656
Treat email address as EmailAddress
instead of Text
including in the mailer
2018-03-06 02:26:27 +00:00
fr33domlover
33af9fb289
Use HTTPS for avatar URL if approot in settings is https://
2018-03-06 00:55:52 +00:00
fr33domlover
3398b56931
Switch to yesod-auth-account and make the mail code independent of Vervis
2018-03-03 21:33:59 +00:00
fr33domlover
fb47407f2b
Adapt to changes in persistent-migration
2018-02-27 03:03:24 +00:00
fr33domlover
829fd72fef
Use my new persistent-migration library, to which I moved the related modules
2018-02-26 14:23:02 +00:00
fr33domlover
3b4bd2a5e8
I made upgrades to the DB migration system in Funbot, apply them here too
2018-02-25 11:14:07 +00:00
fr33domlover
b8681e2681
Change breadcrumb separator from "::" to Unicode arrow "→"
2018-02-25 09:55:55 +00:00
fr33domlover
c2d1bb444b
Add email sending capability to Vervis
2018-02-25 09:28:55 +00:00
fr33domlover
fc556e0eb3
Workflow scope field, minimal support
2016-09-01 17:40:02 +00:00
fr33domlover
6b4ecb99c7
Migration: Repsert, not update, otherwise schema version never saved
2016-09-01 17:38:44 +00:00
fr33domlover
cd1f7af46e
Migration: Safe IsString instances for Field, Entity, Unique
2016-09-01 17:37:20 +00:00
fr33domlover
e027789fbd
Migration: When escaping names, forgot to surround then with "s
2016-09-01 17:36:39 +00:00
fr33domlover
bff41673c4
Migration: Specify default value when adding non-null column
2016-09-01 16:30:39 +00:00
fr33domlover
7218262223
Don't update DB schema version if equal to app's version
2016-08-31 17:12:20 +00:00
fr33domlover
dc74456a6a
Use the new migration system in place of persistent's one
2016-08-31 16:51:02 +00:00
fr33domlover
2640ecb8d1
Schema backend becomes associated datatype
2016-08-29 13:19:57 +00:00
fr33domlover
400c29289d
Persistent schema backend, and PostgreSQL impl
2016-08-20 17:41:16 +00:00
fr33domlover
5909424644
Custom ticket field relevance filter by ticket status
2016-08-11 09:27:30 +00:00
fr33domlover
21192fef26
Route for accepting a New ticket
2016-08-11 07:58:51 +00:00
fr33domlover
3329b49b2e
Turn boolean ticketDone into TicketStatus enum
2016-08-11 00:44:11 +00:00
fr33domlover
26624404ca
Forgot to record Data.Maybe.Local util module
2016-08-10 21:23:55 +00:00
fr33domlover
941bd0ea03
Ticket content edit form lets you edit custom ticket params
2016-08-10 18:52:26 +00:00
fr33domlover
d7be2f04b2
Ticket custom fields can be constant, i.e. no edits
2016-08-09 13:22:56 +00:00
fr33domlover
19c18b031e
Include custom ticket enum fields in new ticket form
2016-08-09 12:34:03 +00:00
fr33domlover
6457bf5607
Display custom enum fields in ticket page
2016-08-09 11:36:14 +00:00
fr33domlover
1d0d4f697d
Include custom ticket text fields in new ticket form
2016-08-08 23:36:39 +00:00
fr33domlover
35933061c9
Display custom ticket field values in ticket page
2016-08-08 20:51:58 +00:00
fr33domlover
ec7dd4ee7e
Experimental typeclass for ident+name model entities
2016-08-08 19:17:25 +00:00
fr33domlover
6e5ab77466
Projects must specify a ticket workflow
2016-08-08 19:05:22 +00:00
fr33domlover
a2ca78c790
Custom ticket fields specify whether required
2016-08-08 17:29:12 +00:00
fr33domlover
17643c6d49
Field enums aren't useful if you can't define values
2016-08-08 17:05:09 +00:00
fr33domlover
7ee28b97d2
Per-workflow custom ticket field enum types
2016-08-08 14:48:38 +00:00
fr33domlover
01385c480b
Per-workflow custom ticket fields
2016-08-08 14:01:06 +00:00
fr33domlover
687aa68a04
Per-sharer ticket workflows
...
A workflow is a new entity in Vervis. It defines the workflow of a
projects' ticket system. That includes the possible ticket states,
custom ticket fields, various filters and so on. All ticket system
customization is currently planned to be managed using workflows.
Currently workflows are private and per sharer, but the plan is to
support public workflows that can be shared and cloned.
2016-08-08 11:05:19 +00:00
fr33domlover
ea38f17688
Specify repodir in darcs init
, otherwise it fails
...
If `darcs init` isn't given a `--repodir`, even if you do specify the
new repository's path, it complains that it can't run inside a
repository, because it's running from a darcs clone of Vervis itself. If
the repo dir is specified using `--repodir` instead, Darcs doesn't
complain.
That's at least the situation with 2.8.5, didn't check other versions.
2016-08-04 08:00:29 +00:00
fr33domlover
dc54a89503
Ticket tree view page
2016-08-04 07:36:24 +00:00
fr33domlover
b5014a0f5f
Ticket tree widget
2016-08-04 01:05:09 +00:00
fr33domlover
fe7aeb5162
Ticket summary widget
2016-08-04 00:40:29 +00:00
fr33domlover
7ebf189e93
More compact buildTree impl using foldr
2016-08-03 23:58:41 +00:00
fr33domlover
3807a02daf
Generelize DAG tree view node from Int to any Eq+Ord+Hashable
2016-08-03 23:25:35 +00:00
fr33domlover
e7abd8eb9d
DAG tree view model builder, based on (V, E) and user choices
2016-08-03 23:09:42 +00:00
fr33domlover
7d6ef47e05
DB actions for selecting nodes and edges of single graph
2016-08-03 21:26:39 +00:00
fr33domlover
6220c78f74
Extra persistent graph classes & instances for ticket graph
2016-08-03 19:32:33 +00:00
fr33domlover
52f91cb98a
PersistEntityGraph specifies type of single graph selector
2016-08-02 15:44:45 +00:00
fr33domlover
51c99a1dfe
SQL: Don't list starting nodes in graph reachable set
2016-08-02 11:58:49 +00:00
fr33domlover
521871c476
Refactor undirected edge SQL to remove repeated filter
2016-08-02 09:29:56 +00:00
fr33domlover
9cfaabc035
SQL: Define the undirected edge table once, use everywhere
2016-07-30 11:29:23 +00:00
fr33domlover
c111f66d7d
SQL: Move some DBNames to common util module
2016-07-30 09:32:53 +00:00
fr33domlover
0904abd7e6
SQL: Use single recursive CTE reference in undirected traversal
...
At least in PostgreSQL, at most one reference is allowed. My undirected
recursion code used a UNION of two recursive steps, one for each
direction. That is invalid, so instead I define a CTE that's a union of
the edges and their reverse, and do a single recursion step on that CTE
instead of on the edge table itself.
2016-07-30 07:28:46 +00:00
fr33domlover
de384d0427
Persistent graph: Cyclic: Remove start
temp table, not needed anymore
2016-07-29 23:27:26 +00:00
fr33domlover
9ca7ab3a57
SQL: Remove some =ANY(?) from trr code, left there by mistake
2016-07-29 23:03:01 +00:00
fr33domlover
dad1ed2e1f
SQL: IN (1, 2, 3) instead of invalid ANY('[1, 2, 3]')
...
I thought SQL arrays were common and PersistList corresponded to SQL
array values. But that isn't the case. PersistList seems to be
serialized as a JSON list, and `filterClause` uses IN, not ANY. So I'm
doing the same thing here and using IN.
Note that I'm building the list myself using Text concatenation, not
using `filterClause`, because the latter takes a filter on an existing
`PersistEntity` while my filters often apply to temporary tables.
2016-07-29 22:57:52 +00:00
fr33domlover
1c2e5f86af
SQL: Use ANY() with arrays, not IN
2016-07-28 16:50:08 +00:00
fr33domlover
5c153b0294
Ticket dependency add/remove and some fixes to recursive SQL
2016-07-28 16:40:10 +00:00
fr33domlover
ddd4393825
New YAML setting: Optional user limit
2016-07-27 21:46:48 +00:00
fr33domlover
188905f9aa
Git clone over HTTP(S) using git binary
2016-07-27 15:17:03 +00:00
fr33domlover
c26fb389cf
Reimplement git ref discovery using git binary :-/
...
My implementation in Haskell does work, but ref discovery also includes
capabilities. Since I'm going to use the git binary for the next steps,
I need the git binary to specify here which capabilities it supports.
2016-07-27 13:23:44 +00:00
fr33domlover
d1e1f3c0f7
Reverse dependencies page for tickets
2016-07-27 08:35:50 +00:00
fr33domlover
350f8a9521
Function trrFix for adapting intransitive DAG after edge insertion
2016-07-27 07:29:32 +00:00
fr33domlover
461283ba6e
Simpler path selection in SQL transitive reduction
...
The transitive reduction query works by removing all the edges which
aren't the only paths between their nodes, i.e. longer paths exist. The
first step is to pick all the paths which include 2 or more edges.
The initial code did that appending in-edges to all paths, which results
with unnecessary duplicates and an INNER JOIN. Now, instead, just pick
all the paths with length of more than 3 nodes. This is hopefully not
just simpler, but also faster.
2016-07-20 11:24:01 +00:00
fr33domlover
a41f111bee
Split recursive SQL query huge module into smaller modules
2016-07-20 10:08:42 +00:00
fr33domlover
8c1d4dd6f1
Transitive reduction of DAGs in SQL
2016-07-15 00:32:33 +00:00
fr33domlover
c340508385
Reachability sets of graph nodes using SQL
2016-07-14 13:48:24 +00:00
fr33domlover
87205772bb
Transitive reduction of DAGs for FGL
2016-07-14 00:39:00 +00:00
fr33domlover
24040133a1
Graph path detection using recursive SQL queries
2016-07-13 19:05:02 +00:00
fr33domlover
7a33ef16f8
PersistEntityGraph is for any graph, PersistEntityHierarchy for DAGs
2016-07-05 16:13:48 +00:00
fr33domlover
7d8596c52b
Path existence checking between graph nodes
2016-07-05 12:37:31 +00:00
fr33domlover
6f785d8e9a
Graph cycle existence checking for FGL graphs
2016-07-05 08:49:25 +00:00
fr33domlover
879ad873e3
DB graph cycle existence checking using recursive SQL query
2016-07-05 08:46:58 +00:00
fr33domlover
fcb68ceea7
List ticket deps and reverse deps in ticket page
2016-07-04 09:58:25 +00:00
fr33domlover
6626e40340
Specify default role for repo and project visitors
2016-07-03 07:52:11 +00:00
fr33domlover
7542b33c7d
Draw the arrows in role diagram
2016-07-02 11:57:20 +00:00
fr33domlover
c292bd51a4
Role diagram for repo roles too
2016-07-02 09:57:52 +00:00
fr33domlover
13afd17a40
Replace project role HTML flat list with an SVG diagram
2016-07-02 09:45:29 +00:00
fr33domlover
1191a3c5cd
Role graph widget
2016-07-02 09:02:13 +00:00
fr33domlover
7be410f329
Upgrade LTS from 5.13 to 6.5
2016-07-02 08:51:29 +00:00
fr33domlover
063caab86d
Insert links to DAG diagram
2016-06-28 22:19:48 +00:00
fr33domlover
5b4607e64d
Initial code for intransitive DAG drawing
2016-06-28 19:46:54 +00:00
fr33domlover
a4eeb61a44
Define colors for use with 'diagrams'
2016-06-26 08:03:18 +00:00
fr33domlover
386d499a61
Define colors in dedicated Vervis.Palette module
2016-06-22 20:58:42 +00:00
fr33domlover
c7de6119ab
Build role graph
2016-06-21 07:35:19 +00:00
fr33domlover
7886d9a515
Layering of intransitive DAGs
2016-06-20 22:50:16 +00:00
fr33domlover
5340cf23f1
Project role inheritance and graph queries with some raw SQL
2016-06-17 20:17:39 +00:00
fr33domlover
48d7c9e929
PersistQueryRecursive becomes PersistQueryForest
2016-06-13 13:46:03 +00:00
fr33domlover
76a627385c
Recursive SQL queries, still need to test before use
2016-06-12 22:37:52 +00:00
fr33domlover
55945e30f9
Ticket claim request submission
2016-06-08 01:28:18 +00:00
fr33domlover
5557e65f66
Ticket dependencies in DB and per-ticket list of children
2016-06-07 20:16:15 +00:00
fr33domlover
11d4a955d8
Per-ticket list of claim requests with full info
2016-06-07 16:31:55 +00:00
fr33domlover
047b9c00c9
Per-project list of ticket claim requests
2016-06-07 15:29:26 +00:00
fr33domlover
574b47a72a
Pagination widget: Use just links, no <ul> and <li>
2016-06-07 13:07:34 +00:00
fr33domlover
d500b85c57
Pagination widget: Display prev and next pages' links
2016-06-07 12:57:05 +00:00
fr33domlover
be458d3689
Pagination: Define page number request param name in one place
2016-06-07 11:10:24 +00:00
fr33domlover
5e04f951f2
Ticket claim requests in DB and personal list view of them
2016-06-07 10:01:57 +00:00
fr33domlover
ae83a5f3ad
Ticket un/assign (like un/claim but for other people)
2016-06-07 07:33:19 +00:00
fr33domlover
eb6fa307b3
Allow group admins to create projects and repos under group
2016-06-07 05:23:00 +00:00
fr33domlover
dd27f9d5b9
Replace unnecessary requireAuth with requireAuthId
2016-06-07 05:17:54 +00:00
fr33domlover
d6967f52d9
Use getBy404 in isAuthorized when it's the right thing
2016-06-06 20:10:28 +00:00
fr33domlover
23c06c535a
Put roles under sharers, now groups' roles can be managed too
2016-06-06 19:41:22 +00:00
fr33domlover
f2e4bb4291
Roles now under by sharers, i.e. now groups too
2016-06-06 17:29:54 +00:00
fr33domlover
05e0d837fa
In group page, link to group members page
2016-06-06 14:13:33 +00:00
fr33domlover
f53768de7e
Paginate list of sharers on the server
2016-06-06 14:05:06 +00:00
fr33domlover
893d91acd8
Sharers page lists them, sharer page redirects to person or group
2016-06-06 13:34:23 +00:00
fr33domlover
505585d8b8
Fix: Used requireAuthId in public page
2016-06-06 10:00:05 +00:00
fr33domlover
a3af63d368
Ticket claim and unclaim routes with access checks
2016-06-06 09:03:49 +00:00
fr33domlover
2881dd2e5f
When closing a ticket, clear assignee field
2016-06-06 07:44:00 +00:00
fr33domlover
33d5a947e6
Replace some %F with showDate
2016-06-06 07:26:58 +00:00
fr33domlover
ef42bf29cd
When creating a project, must choose a role for self
2016-06-06 06:48:59 +00:00
fr33domlover
c86c0f547a
Move repo collab selector fields to the field module
2016-06-06 06:03:42 +00:00
fr33domlover
5305caf0b0
Repo settings page, allow repos to move between projects
2016-06-05 21:11:05 +00:00
fr33domlover
72def092b2
If a repo belongs to a project, pick repo team from project team
2016-06-05 13:59:48 +00:00
fr33domlover
91266dd421
Project settings route, with wiki repo selector
2016-06-05 10:43:28 +00:00
fr33domlover
f8e1442e72
Initial minimal optional per-project wiki
2016-06-04 06:57:54 +00:00
fr33domlover
ef810f2854
Add simple Display class for showing-as-strict-Text
2016-06-03 09:12:33 +00:00
fr33domlover
6971310196
Write missing group member routes
2016-06-01 22:01:01 +00:00
fr33domlover
18394a1213
Split ticket open/close out of TicketEditR into new routes
2016-06-01 19:50:41 +00:00
fr33domlover
e398c86854
Ticket assignee field
2016-06-01 16:20:19 +00:00
fr33domlover
4e0e8cb736
Add project roles, basically a copy of the repo role code
2016-06-01 08:52:14 +00:00
fr33domlover
10c27464dd
Make all role-related code repo-specific
2016-06-01 07:35:22 +00:00
fr33domlover
13bf3e1953
Write missing repo collaborator handlers
2016-05-31 01:52:04 +00:00
fr33domlover
40add444ba
Repo collaborator removal
2016-05-30 14:32:20 +00:00
fr33domlover
d655e7302e
Use the RBAC system to determine repo push access
2016-05-30 13:10:02 +00:00
fr33domlover
2d4fb85fca
Dummy routes for repo team members
2016-05-29 14:13:25 +00:00
fr33domlover
c0e8ed0d2e
Initial minimal limited per-repo RBAC system
2016-05-29 13:17:55 +00:00
fr33domlover
ada42dea62
Enable adding group members
2016-05-26 16:25:23 +00:00
fr33domlover
e2ef279515
Add missing routes to isAuthorized
2016-05-25 22:38:21 +00:00
fr33domlover
29cf2f853b
Remove auth error messages
2016-05-25 21:58:22 +00:00
fr33domlover
ec49a4c424
Libravatar support \o/
2016-05-25 21:10:41 +00:00
fr33domlover
16d33da4de
Add group member related dummy routes
2016-05-25 17:48:17 +00:00
fr33domlover
3687687457
Add group members page and breadcrumbs for group routes
2016-05-25 16:03:58 +00:00
fr33domlover
4c3aa8b269
Add group roles and make a group's creator its admin
2016-05-25 15:52:15 +00:00
fr33domlover
b7d443d031
Show creation date in group page
2016-05-25 07:50:10 +00:00
fr33domlover
b50f892d32
Display group members in group page
2016-05-25 07:24:34 +00:00
fr33domlover
75f8fd7b7b
Require login for group creation
2016-05-25 06:58:09 +00:00
fr33domlover
01915e6df9
Reduce verbosity of isAuthorized
2016-05-25 06:53:22 +00:00
fr33domlover
bc66463776
Add group routes
2016-05-24 21:48:21 +00:00
fr33domlover
19b576e795
New sharer field: Creation time
2016-05-24 08:34:40 +00:00
fr33domlover
c6c41b485c
Finish route change, it builds now
...
I used this chance to make some name changes, add some utils, tweak some
imports, remove more `setTitle`s and so on. I also made person, repo,
key and project creation forms verify CI-uniqueness.
2016-05-23 20:46:54 +00:00
fr33domlover
49807ed27f
Start big route change, doesn't build yet
...
I decided to add some safety to routes:
- Use dedicated newtypes
- Use CI for the CI-unique DB fields
Since such a change requires so many changes in many source files, this
is also a chance to do other such breaking changes. I'm recording the
change gradually. It won't build until I finish, so for now don't waste
time trying to build the app.
2016-05-23 12:24:14 +00:00
fr33domlover
3a65568d8f
PersistField instance for CI, i.e. case-insensitive DB fields
2016-05-22 21:43:59 +00:00
fr33domlover
a0d42f9159
New sharer ident checked for CI-uniqueness
2016-05-22 21:24:55 +00:00
fr33domlover
1a3f976a81
Ticket filtering
2016-05-22 14:31:56 +00:00
fr33domlover
66cf702203
Add "new topic" link to discussion widget
2016-05-21 21:27:12 +00:00
fr33domlover
9368e68ab5
Enable new top-level comments, discussion system works now
2016-05-21 20:01:31 +00:00
fr33domlover
aa3d332b14
Pass AppDB action instead of DiscussionId
...
Passing `AppDB DiscussionId` from ticket handlers to the actual
discussion handlers allows the DB queries to run in a single
transaction.
2016-05-19 22:40:54 +00:00
fr33domlover
a56a7575fe
Implement reply-to-existing-comment
2016-05-19 22:07:25 +00:00
fr33domlover
c942c7d398
Ticket discussion and message routes
2016-05-19 16:58:23 +00:00
fr33domlover
cdfaec81f2
Replace dummy discussion widget with a real one
2016-05-19 15:49:39 +00:00
fr33domlover
93aeae36a8
Implement building discussion message tree from DB
2016-05-19 12:06:27 +00:00
fr33domlover
6d29553844
Use discussion widget in ticket template
2016-05-18 10:26:19 +00:00
fr33domlover
ad9629d3f3
Dummy discussion widget
2016-05-18 10:10:07 +00:00
fr33domlover
c435dfa89b
Each ticket has a unique discussion ID
2016-05-18 09:44:32 +00:00
fr33domlover
604e3ca80a
Fix: Was displaying all tickets instead of just projects'
2016-05-18 09:38:48 +00:00
fr33domlover
1b7cee4b78
Dedicated NewTicket type for ticket creation
2016-05-18 09:15:11 +00:00
fr33domlover
2eb89cf460
DarcsRev widget in default layout footer
2016-05-18 08:35:13 +00:00
fr33domlover
e67f05c0ad
Revision widget using Development.DarcsRev
2016-05-18 08:10:32 +00:00
fr33domlover
1b1e4b978d
Much richer set of Darcs rev TH splices
2016-05-18 07:00:19 +00:00
fr33domlover
e76c1f7206
Compressed inventory parser and DarcsRev TH utils
2016-05-17 20:34:22 +00:00
fr33domlover
9ba6761459
Darcs inventory parser: Add hash types and parse previous inventory
2016-05-16 14:02:43 +00:00
fr33domlover
f8ae122da7
When creating a repo, allow to pick a project for it
2016-05-14 13:05:29 +00:00
fr33domlover
ee9b40d466
Project page lists project's repos
2016-05-14 11:36:45 +00:00
fr33domlover
4d410cf1f7
Pick shorter names for project page templates
2016-05-13 22:11:46 +00:00
fr33domlover
418d3fd9d2
Remove per-handler titles from project handlers
2016-05-13 22:07:56 +00:00
fr33domlover
3c95014087
Remove form field error duplication in project creation
2016-05-13 22:06:23 +00:00
fr33domlover
298bbc57e4
SSH key deletion button
2016-05-13 21:41:46 +00:00
fr33domlover
4d16203e5d
Repo deletion button
2016-05-13 19:23:56 +00:00
fr33domlover
80576d9caa
Darcs pull over HTTP
2016-05-13 10:58:42 +00:00
fr33domlover
0d7349cb5d
Split git and darcs specific handlers into separate submodules
2016-05-13 10:11:17 +00:00
fr33domlover
3fdbe19cba
Inverted patch char in darcs inventory is unused, obsolete
2016-05-13 09:59:11 +00:00
fr33domlover
b2f5b20184
Minimal pagination for git and darcs change log
2016-05-13 08:49:19 +00:00
fr33domlover
17c4ff3d23
Basic pagination for Vervis
2016-05-11 14:42:41 +00:00
fr33domlover
117034a8fa
Initial incomplete pagination model
2016-05-10 11:05:56 +00:00
fr33domlover
5c288c7fdb
Darcs change log view
2016-05-08 14:28:03 +00:00
fr33domlover
07b627eb9c
Refactor Git log view into separate modules and Widgets
2016-05-06 10:29:02 +00:00
fr33domlover
d1d49170e0
Text-ByteString UTF8 conversion utility modules
2016-05-06 10:27:16 +00:00
fr33domlover
65c5829a3f
Set <title> centrally in Foundation using breadcrumbs
2016-05-06 10:26:11 +00:00
fr33domlover
7e8e557625
Rename breadcrumbBar to breadcrumbsW according to new convention
2016-05-06 10:24:58 +00:00
fr33domlover
ae03aee099
Replace JS minifier with a custom all-discarding one
2016-05-06 10:23:31 +00:00
fr33domlover
6e2a8b259d
More EventTime utils and support for GitTime
2016-05-06 10:21:44 +00:00
fr33domlover
96d73f3551
Basic TimeEvent support for 'hourglass', will need this for 'hit'
2016-05-05 23:05:56 +00:00
fr33domlover
ebbcc6afdc
Explore friendly rendering of event time
2016-05-05 22:20:11 +00:00
fr33domlover
ed2df29b66
Refactor git log view, make room for darcs
2016-05-05 16:30:30 +00:00
fr33domlover
a4c8a80945
Enable darcs-push-over-SSH using the darcs executable
2016-05-05 07:58:45 +00:00
fr33domlover
3ed04941e8
Refactor git source view code and implement the same for Darcs
2016-05-05 07:29:19 +00:00
fr33domlover
c8c323f695
Split git repo source handler into sane small functions
2016-05-04 17:17:47 +00:00
fr33domlover
69229fb80e
Enable Darcs repo creation using the executable
...
Darcs does export most of its module tree, but there's a problem: Darcs
relies on the current directory. It changes the current directory of the
process to the repo, and then proceeds using paths relative to the repo
dir. This is bad for my case here. If some other thread uses a relative
path (e.g. currently any repo path is relative by default) in parallel,
it will fail.
For now, the quick path around this problem is to use the `darcs`
program.
2016-05-04 11:44:06 +00:00
fr33domlover
8448355f98
In Darcs pull over SSH, support specifying just repo name
2016-05-04 11:10:23 +00:00
fr33domlover
d57c95c94a
Enable Darcs repo cloning over SSH using darcs executable
2016-05-04 09:43:33 +00:00
fr33domlover
1c4b674550
Dedicated module for "time ago"
2016-05-03 01:20:23 +00:00
fr33domlover
4dd4e1b932
Let user choose VCS and fail to create repo if Darcs is chosen
2016-05-03 00:33:49 +00:00
fr33domlover
d69c5e8abc
Repos specify their VCS (i.e. Git or Darcs) in the DB
2016-05-02 23:51:53 +00:00
fr33domlover
0b06b72b85
Implement an 'initRepo' that actually works
2016-05-02 23:11:32 +00:00
fr33domlover
d8d2d160a0
Render ticket description as Markdown
...
At the beginning the rendering was invalid because it parsed the entire
content as a single line. For some reason, when I read the ticket
description from the DB, all newlines are returned as CRLF. I don't know
why yet or whether it can or should be changed, but as a quick fix, I
made the handler function filter out the CRs from the text. Then the
rendering is correct.
This matches the documentation of Pandoc, which mentions the readers
assume newlines are encoded as LF.
2016-05-02 21:20:25 +00:00
fr33domlover
13d814034c
Breadcrumbs widget in default layout
2016-05-02 14:16:51 +00:00
fr33domlover
e8befc41ee
Multiplex ticket PUT and DELETE over POST
...
HTML forms support only GET and POST methods. One way to bypass that is
to send the form using JS. But I don't want that. Another is to send a
POST with a hidden form field which specifies the read method. This is
what 'postTicketR' does.
2016-05-02 11:34:11 +00:00
fr33domlover
9f917a7306
Fix typo in message text
2016-05-02 11:33:30 +00:00
fr33domlover
434e1cbc7d
YesodBreadcrumbs instance
2016-05-02 10:03:29 +00:00
fr33domlover
9d3b7b686f
Ticket update form
2016-05-02 09:15:10 +00:00
fr33domlover
88569a08ad
Dummy handlers for ticket editing and deletion
2016-05-02 06:13:57 +00:00
fr33domlover
349d089019
First ticket number should be 1, not 0
2016-05-01 11:05:56 +00:00
fr33domlover
4f6ccf8f4a
New ticket creation via POST
2016-05-01 10:15:38 +00:00
fr33domlover
7a4b211617
Ticket view page
2016-05-01 09:58:55 +00:00
fr33domlover
eaadbc050c
Ticket list page
2016-04-30 23:02:44 +00:00
fr33domlover
09b767a037
New ticket post form
2016-04-30 22:32:22 +00:00
fr33domlover
db06aeff0e
New ticket form
2016-04-30 21:26:54 +00:00
fr33domlover
5f909bd3b3
Add Ticket to persistent model
2016-04-30 20:40:33 +00:00
fr33domlover
dbf0c5a2cb
Remove IRC channel and ML data from DB
2016-04-30 20:15:48 +00:00
fr33domlover
36b5ae983e
Don't use git Util module from git-graph, it's been removed
2016-04-30 20:14:56 +00:00
fr33domlover
f7a9fb6ac8
Support git-push over SSH using the git binary
2016-04-30 16:23:34 +00:00
fr33domlover
4065143d8f
Remove upload-pack over HTTP, 'hit' opens too many file descriptors
2016-04-29 18:08:05 +00:00
fr33domlover
144918cd9f
Send raw pack as git-upload-pack-result
2016-04-29 04:32:32 +00:00
fr33domlover
66bc49df15
Git upload-pack request handler, parses it but returns nothing
2016-04-26 05:58:05 +00:00
fr33domlover
4381213446
Binary request body decoder
2016-04-24 18:48:07 +00:00
fr33domlover
e72284e182
Incremental binary stream decoder, generalized from hit-network
2016-04-24 18:25:30 +00:00
fr33domlover
de730cf573
Adapt to module rename in hit-network
2016-04-23 21:09:24 +00:00
fr33domlover
bf355de715
Dummy git upload-pack request POST handler
2016-04-23 18:33:41 +00:00
fr33domlover
19471d4ca2
Smart HTTP ref discovery
2016-04-22 19:46:46 +00:00
fr33domlover
8856bd2344
Git over HTTP: Add initial always-denying ref discovery handler
2016-04-21 00:32:22 +00:00
fr33domlover
4c3371beda
Add settings option to disable registration
2016-04-19 16:03:27 +00:00