Commit graph

639 commits

Author SHA1 Message Date
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
fr33domlover
5ae09c2ad7 Remove copyright field from settings, copyright is wrong! 2016-04-19 15:47:26 +00:00
fr33domlover
242e04a3ce Use --| instead of --^ in AppSettings doc comments 2016-04-19 15:42:54 +00:00
fr33domlover
6e29f246bd Enable git-fetch using the git executable 2016-04-19 14:56:02 +00:00
fr33domlover
09775e02ae Parse the git-uploac-pack SSH command properly 2016-04-19 09:42:02 +00:00
fr33domlover
3439870ad5 Adapt to my latest changes to 'ssh' repo 2016-04-19 08:17:52 +00:00
fr33domlover
1b16e2e566 Use some type alises from Database.Persist.Sql 2016-04-19 06:58:48 +00:00
fr33domlover
aa024a3ee4 Build with LTS-5.13 2016-04-19 06:38:52 +00:00
fr33domlover
a0945bfd87 Use Pandoc for document rendering, for now just Markdown 2016-04-17 17:55:23 +00:00
fr33domlover
25bb1e5b83 Split readme detection to separate function 2016-04-14 00:15:27 +00:00
fr33domlover
35354a18a7 Detect README based on file basename 2016-04-14 00:01:56 +00:00
fr33domlover
85319ddfdc Render README below repo tree view when present 2016-04-13 16:17:34 +00:00
fr33domlover
b42d9db432 Split source file rendering into separate module 2016-04-13 06:55:39 +00:00
fr33domlover
2323ec3fc0 Repo page is root repo source page, remove duplication 2016-04-12 23:38:21 +00:00
fr33domlover
d37108fa6f Add breadcrumb to repo tree content view 2016-04-12 23:10:46 +00:00
fr33domlover
979156b8ae Make the homepage repo table a bit more friendly 2016-04-12 23:09:52 +00:00
fr33domlover
ea71f30d96 Repos right under users, not under projects 2016-04-12 17:37:31 +00:00
fr33domlover
69b2dafc32 Define some initial highlight colors 2016-04-12 14:44:43 +00:00
fr33domlover
05f537d288 Syntax highlighting suppport, but no colors in CSS yet 2016-04-12 11:21:14 +00:00
fr33domlover
3325a9d960 Display any file and dir in the repo, not just top level 2016-04-12 10:06:21 +00:00
fr33domlover
100ba7511c RepoSourceR, display file tree for given branch or tag 2016-04-12 00:19:04 +00:00
fr33domlover
b312d41ef0 Move project templates to new templates/project dir 2016-04-11 22:46:09 +00:00
fr33domlover
7eb3c0ac9e Remove old Git related code /again/... I have ghost files here 2016-04-11 22:37:47 +00:00
fr33domlover
eadce14e42 Move key templates to new templates/key dir 2016-04-11 22:31:03 +00:00
fr33domlover
9e9e7fc803 Display repo files in repo page instead of history log 2016-04-11 22:13:32 +00:00
fr33domlover
fa4e4294b1 Add repo commits route 2016-04-11 21:35:26 +00:00
fr33domlover
60175d5634 Move repo related templates to new templates/repo dir 2016-04-11 21:24:10 +00:00
fr33domlover
b68428d9b6 Remove some old code and adapt to hit-graph 2016-04-09 15:45:00 +00:00
fr33domlover
50198a1906 Move git protocol code away to separate package 2016-04-08 21:10:33 +00:00
fr33domlover
372368f0a0 Git: Implement pack protocol negotiation upload-haves and ack 2016-04-01 10:37:49 +00:00
fr33domlover
7b9f6e9714 Work on git pack protocol, not done yet
This is a lot of code, better save now than sorry later when something
gets deleted by mistake.

Either way, the code will move later - once tested and organized
properly - into its own package.
2016-04-01 05:00:02 +00:00
fr33domlover
f7025f9c15 Instead of printing SSH messages, logDebug them 2016-03-09 22:38:28 +00:00
fr33domlover
fc4690324c Implement logging for SSH using monad-logger and fast-logger 2016-03-09 22:27:25 +00:00
fr33domlover
20fb5181cd Decode SSH key content field value from base64 2016-03-08 03:38:32 +00:00
fr33domlover
4a6853e7e7 Add SSH key upload form 2016-03-08 02:52:46 +00:00
fr33domlover
78213db2fc Add UI for display of SSH keys 2016-03-07 00:42:06 +00:00
fr33domlover
af86469848 Use 'toHtml' instead of generic markup combinator 'text' 2016-03-07 00:39:07 +00:00
fr33domlover
8cf0f2502c Implement DB-based SSH authentication 2016-03-06 11:58:48 +00:00
fr33domlover
062fb5539a Add app settings for SSH server 2016-03-05 03:56:25 +00:00
fr33domlover
9afd341aca Replace some Esqueleto with much simpler Persistent queries 2016-03-03 08:35:29 +00:00
fr33domlover
b20c672a01 Implement git history log in repo page 2016-03-03 08:15:54 +00:00
fr33domlover
100d2948cb Add Vervis.Path module with repo path utils 2016-03-01 22:43:31 +00:00
fr33domlover
e5ad0279b1 Remove some unused imports 2016-03-01 22:16:41 +00:00
fr33domlover
4b0c444bcb Implement topsort for commits and apply to graph 2016-03-01 22:16:01 +00:00
fr33domlover
7a76703d25 Implement loading a commit graph 2016-02-29 21:42:37 +00:00
fr33domlover
4882ddb092 Make it possible to skip subtrees in the commit loading loop 2016-02-29 14:25:14 +00:00
fr33domlover
0c8d5c973c Implement low-level commit graph loading 2016-02-29 14:04:56 +00:00
fr33domlover
40b4f4e475 Stop using classy-prelude-yesod 2016-02-29 14:04:23 +00:00
fr33domlover
ec9fc486ee Implement flexible Kahn topsort for use on git commit graphs 2016-02-29 01:59:33 +00:00
fr33domlover
1fe41edabe Fix homepage repo table: Failed for empty repos 2016-02-28 08:30:25 +00:00
fr33domlover
ec4c7de582 Add repo pages and repo creation form 2016-02-27 05:41:36 +00:00
fr33domlover
9b686c6db0 Write initial overview content and add project creation form 2016-02-25 03:10:30 +00:00
fr33domlover
004fdb118e Put all modules under a new Vervis module 2016-02-23 08:45:03 +00:00
fr33domlover
9154ad8f8b Move some utils to new modules 2016-02-23 08:28:25 +00:00
fr33domlover
b95bf9e42b Create personal overview page, still blank 2016-02-23 03:19:55 +00:00
fr33domlover
1c044520b5 Implement registration and make it build 2016-02-23 02:27:01 +00:00
fr33domlover
c0a86c3f5b Add user registration form view, still no-op 2016-02-19 04:10:42 +00:00
fr33domlover
ee7a353904 Define color palette and write initial Cassius 2016-02-18 22:33:27 +00:00
fr33domlover
ab98930caa Add style palette module for later use 2016-02-18 13:36:25 +00:00
fr33domlover
a5f6bf280b Remove bootstrap3 CSS and fonts 2016-02-18 13:35:38 +00:00
fr33domlover
5287a47372 Add project pages 2016-02-17 21:53:53 +00:00
fr33domlover
a6525d7549 Add people and person pages 2016-02-17 16:43:23 +00:00
fr33domlover
7ede602d1d Remove CSRF protection for now, until I fix it 2016-02-17 11:49:41 +00:00
fr33domlover
8e3675865d Add comment bits for SSL and delete some garbage from template 2016-02-17 11:31:01 +00:00
fr33domlover
7857a8a964 Make initial homepage with table and simple login 2016-02-16 11:41:13 +00:00
fr33domlover
3da488b3a2 Remove example code I don't need 2016-02-14 10:17:31 +00:00
fr33domlover
f4dcf17f3f Move some files around, tweak the generated code a bit 2016-02-14 09:10:21 +00:00
fr33domlover
952f6baafd Bring Yesod scaffolding 2016-02-13 03:35:30 +00:00
fr33domlover
0bfef83458 Remove obsolete code and start using stack 2016-02-12 11:01:53 +00:00
fr33domlover
1abfc11ffa Make minimal Yesod app that returns main view as an HTML table 2016-02-12 01:53:19 +00:00
fr33domlover
73acda0ecf Don't separate people and groups in the dir tree 2016-02-12 00:23:24 +00:00
fr33domlover
1b7e6e5a73 Use the git code to add last change time to main view query 2016-02-12 00:01:41 +00:00
fr33domlover
229bdead0e Insert dummy data to see results 2016-02-11 22:19:31 +00:00
fr33domlover
552b17e219 Write initial main view query with Esqueleto 2016-02-11 20:58:40 +00:00
fr33domlover
5734e720ad Update data model to reflect recent decisions 2016-02-11 09:36:24 +00:00
fr33domlover
2b15a16115 Add comments to git functions 2016-02-11 09:36:09 +00:00
fr33domlover
d2e78b4c51 Define data model using persistent's TH 2016-02-09 21:07:01 +00:00
fr33domlover
b7aa7ec45d Make it build with persistent 2016-02-06 13:36:35 +00:00
fr33domlover
e6fbca1c2a Split code into submodules 2016-02-06 13:08:35 +00:00
fr33domlover
547db845be Fix typo which caused infinite loop 2016-02-05 23:41:55 +00:00
fr33domlover
aa351c00d2 First operation: createUser 2016-02-02 13:06:49 +00:00
fr33domlover
6440550f48 Support loading and saving to JSON, step 5 2016-02-02 12:31:36 +00:00
fr33domlover
c8e5de868c Ugly, hacky, dirty, full-of-warnings basic JSON persistence 2016-02-02 12:14:21 +00:00
fr33domlover
b44dc7b456 Fix projects field type 2016-02-01 14:28:12 +00:00
fr33domlover
81f8dba101 Add state and env to the monad, completing step 4 2016-02-01 14:17:28 +00:00
fr33domlover
56dddddde6 Define Vervis monad as a newtype over RWST 2016-01-31 05:58:50 +00:00
fr33domlover
a953923a3e Add a basic data model and determine change times from it 2016-01-29 09:39:35 +00:00
fr33domlover
f51aa09159 Return formatted last change time for a repo 2016-01-29 00:59:27 +00:00
fr33domlover
ccdd98ca7e Return a list of subdirs of a given dir 2016-01-28 15:37:04 +00:00
fr33domlover
abbef763e7 Initial record with empty package that builds 2016-01-28 14:15:54 +00:00