darcs repository web UI and hosting app. This is the main darcsden trunk, which also runs hub.darcs.net. (https://hub.darcs.net)

root / CHANGES.md

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
All changes grouped by release. Useful for quick browsing and for compiling release notes.

* ## darcsden 1.2 (unreleased)

Release contributors:
Andreas Brandt,
Andreas Wagner,
Daniil Frumin,
fr33domlover,
Ganesh Sittampalam,
Guillaume Hoffmann,
Julian Ospald,
Ryan Desfosses,
Simon Michael.

** 2016 (as of 11/21)

  * Added "application/pdf" mime-type for file extension ".pdf"

  * If mime-type has prefix "text/" display raw-file/ as text/plain otherwise display as whatever it is

    This is useful if the user wants to browse/ SVGs as text SVG code but view or embed them as images.
    Also useful if the user wants to browse markdown ".md" as rendered markdown but view "raw-file/"
      markdown as "text/plain"

  * Serve raw-file/ PDFs and images as PDFs and images, not as text.

    If filetype is not recognized, it is served as "application/octet-stream"
    Fixes embedding of images such as SVG into README.md's

  * fix test warnings

  * fix stack test, update tested-with

  * fix stack build with current lts snapshots

  * linkify usernames on hub.darcs.net/<repo>/issues page

  * Issue page subscriber count with tooltip for subscriber list

  * Repo page subscriber count with tooltip for subscriber list

  * Fixes issue #153 "cannot create issues on a private repository"

** 2015

  * regular cursor (aka, initial) for disabled unsubscribe button

  * Simplified urlEncodeStr

  * Use proper POST method for subscribe pages

  * Fixed (un)subscribe button styling

  * Greyed-out/disabled unsubscribe button. Needed to be a PNG for the alpha levels.

  * Add subscription at repository level
  
    This only subcribes to issues though, not to general repository
    actions, yet. The repository owner is automatically subscribed
    to new repositories under his namespace.

    This also introduces notifications on new issues for
    repository subscribers, not just new comments.

  * Added subscribe.gif and unsubscribe.gif to darcsden.cabal

  * urlEncodeStr for any url components that could contain spaces, pluses etc. Skip slashes.

  * issue comment permalink anchor names: comment-<iso8601 timestamp> (without punctuation)

  * Click on issue comment (relative) date to get permalink to issue comment

  * Added an annotate icon, a yellow highlighter.

  * Redirect to the last page when logging out
  
    wrt http://hub.darcs.net/simon/darcsden/issue/117

  * autolinkify for other version of pandoc

  * New lighter (un)subscribe icons.

    Discussion on irc: http://irclog.perlgeek.de/darcs/2015-11-28#i_11619223

  * subscribe and unsubscribe buttons with css styling and open or closed eye icons.

  * Don't send notification mail to the commenter

  * Adjust mail notification subscription defaults
  
    When creating a new issue or making a comment, you are
    automatically subscribed.

  * Add more issue changes to the mail notification body

  * Some automatic hyperlinking

  * Don't hard-fail on missing subscribers attribute in CouchDB
  
    This makes explicit CouchDB schema conversion obsolete.

  * Fix "From" sender name in sendCommentChangeMail

  * Add simple mail notification system
  
    This also refactors UserHandlers.hs to use the
    dedicated Mail.hs module.
  
    Notifications are currently only implemented for the
    issue tracker comment section. The mails are sent
    in the background.
  
    This changes the CouchDB database layout of the issues!
    It adds a "subscribers":[] field.

  * bump lens upper bound

  * tools: simplify the makefile

  * drop no-longer-used "hub" cabal flag

  * stack: remove unneeded extra deps, fix stack ghci

  * fix yet another build warning, in RepoHandlers

  * stack: build with lts-3/ghc-7.10 by default
  
    stack now uses the current LTS snapshot (3) and GHC version (7.10).
    To use ghc 7.8 instead, use "stack --stack-yaml stack-78.yaml ..."

  * update build instructions, mention darcsden-ssh old GHC requirement

  * stack: don't build helper executables by default

  * build the "den" tool only with the "den" cabal flag

  * fix some build warnings with ghc 7.10

  * fix build warnings in UserHandlerUtils.Github/Google

  * fix build warnings in State.Repo

  * use the latest lts-2 snapshot

  * allow latest lens

  * allow pandoc 1.14+

  * restore compatibility with time <1.5

  * defaultTimeLocale is now in Data.Time.Format

  * make stack ghci work (stub out annotated view without HIGHLIGHTINGKATE)

  * stack: update to darcs 2.10.2

  * add the new taggy extra-deps to fix stack build

  * add open-browser extra dep to stack config

  * need to turn off buffering on stdout too to get the prompt on Windows

  * retry 50 times then report the last error
    This avoids a lock-up when there's some fatal problem.
    Also changed the delay to 20ms so we'll wait 1 second in total.

  * Treat "." separately/explicitly in the `den` program.
  
    Previously launching "." in `den` in the case when the current
    directory is exactly the root directory would result in launching
    "bad" URLs. This patch fixes this problem.

  * Merge the CLI tool into the main branch & move the darcsden.conf location
  
  - Now darcsden and den look for the darcsden.conf file in ~/.darcs (or
    Windows equivalent), which should be more portable
  - The 'den' tool is merged into the main repository

  * Make the old JS dependency code work again
  
    This (re)enables the dependency canvas/diagram on the compare page.

  * Refactor some of the common links code
  
    Refactor out the edit repository/delete repository buttons.

  * Make the tests work with an unhacked version of HSP.
  
    The additional code makes sure that the incoming HTML is "good enough"
    for the parser.

  * Be more careful when checking for the modification date.
  
    Previously, if there was a non-repository in the darcsden_repos list,
    darcsden would complain loudly. This patch makes sure that this
    doesn't happen.

  * Treat the "root" repository as a special case.
  
    If the homeDir is pointing to a darcs repository, then it is usually
    displayed as/gets named "." in the list of repositories. This makes it inaccessible from the web-browser just by following links. This patch fixes that by expanding the repository path.
  
  * Fix slashes on windows

  * Make the username/password for the local backend part of the LocalBP and read it from the configuration file.
  
    Username/password no longer hardcoded. Adds two options to the config
    file: unLocal and pwLocal -- username and password, respectively, for
    the local instance user. Does only affect the login system for the
    local instance.
  
  * Basic test setup for HTTP Auth tests

  * Implement HTTP Basic auth

  * Specific run-time switches --hub and --local
  
  - Add a class for instances, new local instance with a simpler frontpage.
    Each instance provides a front page. In the future, each instances should provide more customization then settings and backends.
  - The DenConfig datatype existentially quantifies over instances, allows us to hide the details of each instance and dispatch on them uniformly (cf `getDenConfig`). One can also specify settings post-hook which overrides/modifies whatever settings come from the configuration file.
  - In case of '--hub' or no run-time switch use the backends from Settings.Production and do not modify the settings
  - In case of '--local' switch use backends from Settings.Local and modify the settings according to Settings.Local.localPostSettings (turn off some of the inaccessible features)

  * Fix patch hashes in Forks
  
  (see "Use full patch hash as patch ID" for details)

  * stack: build ssh and post-hook too by default

  * Use full patch hash as patch ID
  
    Thus avoid collision, that was previously triggered by several patches
    entering repository at the same time (for example, as in `darcs rebase
    unsuspend`)

  * Update the src readme

  * A bit of tidying up
  
    Cleaning up some whitespaces + getting rid of some warnings.

  * "real" last modification date instead of dummyDate
  
    We use the last modification date of `_darcs/patches` to determine the
    last modification date of the repository.

  * Instead of searching for the repositories in a directory we maintain an explicit list of repositories
  
    The list is contained in ~/.darcs/darcsden_repos and is updated when
    we create new repositories. If the file with the list is not present,
    we compute the list of repositories the old fashined way -- by the
    means of recursive search.
  
    The list format is just one repository per line, without any special
    syntax (for now).
  
  * Make sure to fully expand the path before relativizing it
  
    This resolves a problem that may raise if you have ".." in your
    homeDir variable. `makeAbsolute` might "absolutize" homeDir by turning
    it into something like `/full/path/../test`. The use of
    `canonicalizePath` makes sure that you get exactly the directory you
    are pointing to.

  * Move darcsden-local settings to a separate module, refactoring the common base to DarcsDen.Settings.Common
  
    Most of the code that is dealing with reading and parsing settings is
    moved to DarcsDen.Settings.Common.

  * Add support for creating and forking repositories
  
    Basically implement more typeclass methods for the local backend.
  
    And in addition
          
    - Turn takeAbsPath/takeRelPath into an iso
    - Fix 'newRepository'
    - createDirectory -> createDirectoryIfMissing True

  * Implement repository update
  
    - The 'isSane' function is now moved to the
      BackendPermanentFileSysem class
    - Note: renamings are not implemented and result in errors
  
    Basically, this allows us to modify repository meta-data for the local backend

  * Do not follow symlinks (in theory)
  
    If we are doing recursive search for repositories (this happens if we
    don't have a pre-defined list of repositories), then we might
    accidentally follow a symlink that leads outside the directory root.
    This patch is designed to avoid this.

  * stack doesn't automatically install hsx2hs

  * add lighttpd config example

  * A bit of cleanup
  
  + fix some warnings

  * Read the configuration from ~/.darcsden.conf, if ./darcsden.conf is not present.

  * Fix merging / pulling patches
  
    The issue was a bad StringRep instance for FilePath
  
  * Use urlencode to handle repositories in nested directories
  
    In this patch we make sure that the local backend works with the
    standard repository handling mechanism. The repository names may
    contain slashes, which are now urlencoded.
  
    The main.js change is necessary for the repository comparison to work
    properly.

  * Read repository website from _darcs/darcsden/website + test

  * More elaborate directory structure for tests

  * Update darcs requirements

  * Tests for changes and filechanges

  * Fix refKey equality, and add a test for forks

  * Add the ability to view branches (and compare repositories)
  
    - Implement getRepositoryForks for that purpose

  * Read parent repo from _darcs/defaultrepo

  * Implement additional typeclasses functions and cleanup LocalBP
  
    - Implement some missing functions from various
      BackendPermanent* classes
    - Fix warnings in Local.hs and Local/Files.hs

  * Make sure that the local backend supports repositories in nested directories
  
  * Relax HSP version (patched version only necessary for testing)

  * Add basic HTTP tests

  * Add the basic barebone local persistent storage
  
  * fix warnings in Dist.hs

  * Add basic "download .zip" functionality 

  * Restrict System.Directory imports in Darcs.hs
    The latest version of directory (1.2.3.0) exports withCurrentDirectory 
    which clashes with the one in Darcs.Util.File

  * tests require webdriver 0.6.2+ for ghc 7.10 compatibility

  * add a stack.yaml for more reliable setup

  * Get rid of Maybe in publicDir

  * Fix README
  
    Since rootDir is gone and publicDir wasn't even referenced.

  * Add liquidhaskell files to boring

  * Fail more gracefully if updateRepository fails
  

  * Add the "directory changes" button

  * Display repository description on the user page like it is displayed on the repo page

  * Replace duplicated code with repoURL

  * Add an explicit config option for the "public" folder
  
    By default darcsden picks up static content from the Cabal data
    directory, but this isn't always convenient, particularly during
    development and testing.
  
  * The rootDir setting isn't used for anything now

  * get the contents of /public using the cabal "data dir" API
  
    This makes it easier to find at runtime when the source tree isn't
    available, but may mean it doesn't work directly from the source tree

  * mark files in public/ as data-files

  * Add some spacing before the website of a repository

  * Move 'crumb', 'pathToRepoItem' and 'filePath' to RepoHandlerUtils/Browse

  * Fix warnings and add comments to FileSystem.hs

  * Comment some bits of code
  
    Add comments to some functions in
  
    - DarcsDen.Handlers.RepoHandlerUtils.Browse
    - DarcsDen.State.Repo
    - DarcsDen.State.User

  * Move 'userDir' and 'repoDir' under the BackendPermanentFileSystem class.
  
    - comment the relevant functions
    - the default implementations stay the same 

  * Remove some unused, commented out pieces of code.

  * Add missing sshPort do defSettings

  * adapt darcsden-post-hook to new config system also

  * Fix the "branches" feature by expanding homeDir and friends wrt #133

  * Allow runtime configuration
  
    Configuration is read from darcsden.conf in the current dir.
    Alternatively it can be specified via the '--config DIR' argument.
    If the file does not exist, it falls back to a default configuration.
  
    The user configuration does not have to be complete. It is
    merged with the default configuration.

  * Clarify installation procedure

  * Generalize patterns in Handler.hs via new when' func

  * Remove code duplication by utilizing 'whenXML'

  * Improve OAuth settings and login/register behavior
  
    The "Register using..." and "Sign in using..." buttons only show up if the
    respective OAuth providers are enabled in Settings.hs.
  
    In addition, the "Register using..." button will be hidden after it has been
    clicked and the information from the OAuth provider has been inserted into the
    forms.
  
    This also effectively disables the handlers, not only the web interface.

  * Update daemon sample config
  
    The port argument is gone, it's now in Settings.hs.

  * Add nginx sample config
  
    Tested under FreeBSD-10.1 with nginx-1.6.3.

  * Switch from system-uuid to uuid
  
    This also fixes linking errors on FreeBSD.
    Thanks to notdan for the hint.

  * Allow specifying sshPort
  
    We now specify the SSH port in Settings.hs. In addition the repo-page
    now shows concrete instructions in case the port is not 22.

  * Fix github OAuth linking for existing accounts

  * Fix github OAuth wrt #102
  
    Apparently the github API has changed and now needs "read:public_key"
    explicitly in the OAuth token scope. Previously the lookup via "getKeys"
    just failed and returned a "StatusCodeException" which caused the session
    to be broken.

  * Add cabal-sandbox stuff and darcsden user directories to the boringfile list

  * with -fdev, change ssh server's default port to 8923

  * with -fdev, just log everything to the console

  * the home directory is now always the current directory at startup

  * use </> consistently with homeDir

  * more cleanup of ssh/closing flags

  * set max-width 40em in markdown format for readability

  * clarify baseUrl settings

  * flags cleanup

  * by default, don't build the ssh server or issue-closing executables

  * flag consistency

  * bump cabal and displayed version to "1.2 beta" (or dev)

  * rename debug flag to dev

  * drop unused darcs28 flag

  * require redis 0.14 which is ghc 7.10 compatible

  * require ssh 0.3.1 which is ghc-7.10-compatible

  * mark all cabal flags as manual, cabal should not be flipping these

  * with a debug (dev) build, use the current directory as home dir
  
    ..instead of the hardcoded /home/darcsden. So a development build will
    use resources in ./public/css, and will look for repos in ./users .

  * require CouchDB 1.2.1+ which installs more easily

  * fix tabs

  * ghc 7.10 compatibility

  * allow lens 4.8 & 4.9

  * require ssh 0.3+ to avoid a vulnerability

  * changelog

  * two more author name/email fixups

  * darcsden-ssh: change default port to 8922

  * enable DEBUG CPP flag in executables as well

  * require an up-to-date ghc-7.8-compatible redis

  * port to the latest hsp/hsx2hs, and also GHC 7.8
  
    See the DDXML type in DarcsDen.Settings.Types.
    Note that XML attribute values must now be Text instead of String.
    Also, the hsx2hs build tool is now required (used to be called hsx/trhsx).
  
    This update means we can at last build with GHC 7.8.
  
  * prepare for GHC 7.10 AMP changes, silence the warning

  * Support darcs-1 repositories

  * more bounds updates, remove redundant bounds

  * bump some upper bounds

  * bump tested-with

  * allow pandoc 1.13

  * constrain CouchDB
    With 0.10.1 the tests fail, with 1.2 they work.
    I haven't dug into exactly why.

  * update for darcs 2.10

** 2014

  * bump lens dependency
  
    builds and tests fine with lens 4.6

  * also look for chromium-browser

  * look for Chrome under a variety of names

  * Allow choice of browsers when running tests

  * integrate darcsden-test's command-line options with test-framework's

  * make darcsden-test into a standard Cabal test-suite

  * have a look at the patch contents in the changes test
  
    This test now successfully detects the recent issue with patch display
    (http://hub.darcs.net/simon/darcsden/issue/111)

  * use HTMLUnit for tests

  * appease HTMLUnit: use appendChild instead of add(.., null)

  * window.location.origin doesn't exist on all browsers

  * remove the random data generation from the test harness
  
    It doesn't really provide any extra testing coverage and just makes it
    harder to read/compare the results.

  * hacks to help the tests work with HtmlUnit

  * abstract out starting the server

  * shutdown server at end of tests to make it easier to repeat in ghci

  * abstract out runSession invocation

  * remove unnecessary IO type

  * sanity check for whether webdriver is running

  * constrain webdriver version
    webdriver 0.6 changes the runSession API

  * improve error message when there is a CouchDB problem

  * Make sure that we still compile the bundle test for now

  * Disable bundle test which has been broken for a while
    [This may be because some of the GSoC bundle functionality was not merged]

  * use makeFilename rather than patchname to lookup patches
  
    This makes the patch id lookup code consistent with the patch id
    generation code, and works around changes in darcs that changed
    the result of patchname.
  
  * issue 93: users can now change their email adress

  * fix build for recent darcs-screened

  * require ssh 0.2.13+

  * adapt to the Get -> Clone rename in darcs head

  * add a "debug" cabal flag to allow making dev builds with cabal

  * drop darcs 2.8 support and the darcs28 flag
    I don't have time to maintain it so for the moment, darcsden requires darcs HEAD.

  * update for createRepository changes in darcs HEAD

  * update to reflect hashed-storage merge into darcs HEAD

  * puppet-lint default.pp

  * .authorspellings update

  * change log formatting

  * update the change log

** 2014/3

  * two small makefile fixes
  * always build the hub code so we can check it compiles
  * use test-framework rather than the built-in HUnit test runner

    This provides clearer output about the results

  * drop references to --port which has been removed for now
  * Fix build with -fhub
    - lensify and add implicit parameters in HubPages
    - reinstate getAllRepositories that was incorrectly removed as dead

  * we don't need to pass around Proxy bp any more
  * abstract similar CouchDB implementation functions
  * abstract out State Key+Data combination
  * Stop using Couch qualified
  * add bp parameter to UserData to make it consistent with the other State Data types
  * Remove CouchDB-specific things from BackendPermanent
  * specialise types of helpers
  * inline code from StateUtils into CouchDB backend
  * make Comments database name local to CouchDB
  * abstract Comment handling
  * make Bundles and Issues database names private
  * abstract Bundle handling
  * abstract Issue handling
  * introduce BPVars shorthand
  * stop exporting cID/cRev
  * stop exporting bID and bRev
  * stop exporting iID and iRev
  * de-Maybe CommentKey
  * de-Maybe BundleKey
  * pass CommentData when creating a Comment
  * pass BundleData when creating a Bundle
  * decompose JSON instances for Comment
  * decompose JSON instances for Bundle
  * split up Comment into Key/Data
  * break up Bundle into Key/Data
  * de-Maybe IssueKey
  * pass in IssueData when creating a new Issue
  * only send the IssueData in updateIssue

    This means the rev field is now omitted - as with the similar
    changes in other State types this seems benign.

  * decompose JSON instances for Issue
  * drop unused custom Eq instance for Bundle
  * get rid of custom Eq Issue instance
  * break up Issue type into Keys+Data
  * use JSONFields in Comment
  * use JSONFields in Issue
  * use JSONFields in Bundle
  * lensify Bundle
  * lensify Issue
  * lensify Comment
  * restrict exports from State.Bundle and delete dead code
  * make State.Comment exports explicit and remove dead code
  * make State.Issue exports explicit and remove dead code
  * abstract Repository handling
  * split up deleteRepository
  * stop exporting the rID and rRev lenses
  * rID and rRev are now always Just
  * pass in RepositoryData rather than Repository when updating

    This means we don't pass in the old rev, which seems benign

  * use RepositoryData when creating repositories
  * decompose JSON/JSONFields instances for Repository
  * break up Repository type into Key and Data
  * switch Repository to use JSONFields class
  * fix compile failure with -fclosing
  * lensify Repository type
  * make State.Repo exports explicit and remove dead function
  * The 'Users' database name doesn't need to be global now
  * move the CouchDB schema into the main CouchDB module
  * abstract out User-related backend code
  * Move filesystem-related stuff into a separate class
  * use Proxy from tagged package
  * improve name of freshUser following refactoring
  * move iteration over databases to class
  * Move schema into the CouchDB backend
  * use DBName to select designs
  * move pure JSON utils into DarcsDen.State.JSON
  * add type class for JSONFields
  * Drop now-unneeded exports of uID and uRev
  * id and rev don't need to be Maybes any more
  * pass in UserData rather than User when creating/updating users

    This does mean that we don't pass the old '_rev' when updating a
    user, but this seems benign

  * decompose JSON instance for User
  * split User type into UserKey and UserData
  * Switch User type to use lenses
  * make DarcsDen.State.User exports explicit and delete unused code
  * start a private instance of the webserver for the tests

    As this server is started using the Test settings, it should also now
    be safe to run these tests without interfering with the production data
    and while the production server is running.

  * abstract out startHTTP into the library
  * set the HTTP port in one place and remove the broken --port option
  * abstract settings behind an implicit parameter
  * reorganise into library+executables
  * public/uptime.txt no longer exists
  * mention obliteration as a possibility in patch read failure error
  * ensure LANG is set to fix front page rendering with dev build
  * update HubPages after prod/test settings split
  * allow blaze-html 0.7.*
  * build dev executables with the latest required GHC extensions
  * build dev executables in top-level dir
  * Start on isolating the tests from the production data:
    - Split up 'Production' and 'Test' settings
    - Add an 'InProcess' transient backend
    - Namespace CouchDB for the permanent backend
    - Use a different root directory for the filesystem data

    Still need to make them launch their own darcsden server
    internally for this to be fully effective.

  * Replace Reply type from Backend.Transient with Maybe

    The restructuring will sometimes cause 'error' to be called
    instead of 'fail' in the invoking monad, but this seems
    unlikely to change any behaviour.
    
    For ForgotPassword, if 'get' in Redis returns something
    other than 'RBulk' this will now cause a failure, but
    this seems reasonable as it would represent a failure
    from Redis and is in line with other code that uses 'get'.

  * fix comment
  * document Backend.Transient API and drop unused return values
  * fix build with -fdarcs28, -fssh
  * add optional prefix to CouchDB database names

    Not used yet but will help with running tests in isolation

  * abstract out database names
  * Abstract over CouchDB, repository location and Redis
  * explicit exports for DarcsDen.Settings
  * make CouchDB imports explicit
  * make exports explicit
  * fix warnings
  * flag to build with -Werror
  * mention private repos in the main no-such-repo message (there are others, eg when comparing)
  * more unused imports
  * when building with darcs head, we need 2.9.8 at least
  * unused imports
  * Improving on 404 messages

    404 errors now result in prettier "not found" pages rendered with the
    site's HTML/CSS.

    Structurally, the `sitePage` function has been split into `sitePage`
    and `sitePageTemplate`, the latter does	  not require session info. The
    new `notFoundPage` therefore uses the site's template. The original
    404 page has been renamed to `notFoundPlain`.

  * update for latest http-conduit and restrict dependency
  * deal with Changes -> Log renaming in darcs
  * Schema for private repos
  * Show private repositories for members
  * Act on all of users repositories

** 2013

  * Show comment timestamp on issues
  * Minor breadcrumbs changes
    - When viewing an issue, you can go back to the list of all issues by
      clicking the 'issue' breadcrumb
    - When viewing a file, you can go back to the list of all files by
      clicking the 'files' breadcrumb
    - When viewing a patch, you can go back to the list of all patches by
      clicking the 'patch' breadcrumb

  * Display the number of open issues on the "Issues" button
  * docstring correction
  * Allow for spaces in filenames (resolves #20)

    This is supposed to resolve the bug #20
    <http://hub.darcs.net/simon/darcsden/issue/20>. The gist of the
    problem is that 'rqPathInfo' (and 'rqContextPath') contain the parts
    of the original encoded URL. That resulted in lookup failures in
    hashed-storage among other things. In this commit I introduce a
    'rqDecPathInfo' function that tries to decode the path info using
    Snap's 'urlDecode'.

  * Add an alt text to the raw file link
  * fix that pesky leading space rendering issue by simplifying CSS (fixes #23)

    This fixes all the cases mentioned on #23, and also displays hunks more
    correctly in patch view: eg a simple add hunk's red part now looks empty
    rather than like a line being removed. But our html/css is complicated
    so watch out for regressions from this fix.

  * allow ssh users to get any public repo, not just writable ones (fixes #89)
  * routes list cleanup
  * add cabal and make files to tags
  * remove unused Darcs.get
  * big module name cleanup, mainly to uniquify file names

    Source file names are now generally unique. Sometimes this makes them
    a little more verbose or redundant, but it makes things clearer and
    helps with code navigation. Having 4-6 files named User.hs,
    Repository.hs, Util.hs etc. made the code hard to work with.
    The names will probably evolve more, but it's a step forward.

    Also,
    - Repository has been shortened to Repo in filenames, as a special case
    - the plurality of X in X/ and X/SomethingX.hs is consistent

    See also src/README.md.

  * update executable file names in makefile
  * code notes formatting
  * quick safety belt for dangerous darcsden-test
  * more cabal file cleanups, drop Alex as maintainer
  * allow pandoc 1.12
  * rename executable source files
  * update module lists in cabal file
  * whitespace
  * document file layout
  * Give util files distinct names to reduce confusion

    Module names are a little more verbose, but this will help a lot with
    code navigation and orientation.

  * rename base/repoBase/repoBase'
  * big handler & page naming cleanup

    Document and apply a consistent function naming scheme to help
    disambiguate handlers, pages, and page fragments. Also clarify some
    type aliases which were a bit confusing. The old Page is gone, and the
    old HSPage is now called Page.

  * add src/README.md for developer docs
  * whitespace
  * rename user' handler helper
  * update CHANGES.md
  * Added a box with 'darcs get' URL to the repository page
  * Fixing a typo in DarcsDen.Pages.Repository
  * Tabs -> whitespaces
  * fix unused argument warnings
  * make the getPatchLogs type signature darcs 2.8 compatible as well
  * require ssh 0.2.12.1 which has better dep bounds
  * fix compilation warning with getPatchLogs
  * markdown formatting fix
  * markdown formatting fix
  * fix publicRepoServe comment
  * allow raw file browsing in private repos if you have access; serve raw files as text/plain for easy viewing (fixes #87, #81)
  * no patches -> no new patches in branch lists
  * simplify error page message
  * hyperlink urls in cabal file
  * bump version to 1.2 alpha
  * less top whitespace on the front page
  * hide the usual page heading on the front page (ie when title is empty)
  * simplify front page left column content a little
  * Add bundle schema
  * Redirect to compare or branches after merge based on where the merge came form
  * Do not show merge button if there are no patches
  * Replace r with rOther in rcompare
  * Add repository bundles feature
  * add repository name into patch checkbox when applicable
  * Add repository compare feature
  * Change "Sign up with .." to "Register using .."
  * use mime types instead of xdg-mime
  * Add file changes and file annotate
  * shrink and clean up the issue comment/edit form a bit
  * Update usage of darcs functions to the latest screened
  * 75: don't html-encode angle brackets in literal blocks
  * remove debug statements
  * hub.darcs.net: render embedded html & js on the front page
  * drop the unknown amp fixup from renderMarkdown; bring back the unsafe renderer
  * hub.darcs.net: add a custom front page
  * add a hub/HUB flag, off by default, for enabling hub.darcs.net-specific customisations
  * fix a hard-coded port in make rule
  * nutty build flags for various cases
  * show debug info on stdout when identifying file type for editing
  * change repo edit's to repo settings; show related repos there
  * render markdown safely (quoting html/js) in readmes; drop the unsafe variant
  * refactor: clarify markdown rendering
  * link tags containing non-ascii characters properly
  * update issue timestamp when closed by posthook, closes #70 (& test: closes #69)
  * ignore already-closed issues in posthook, closes #69
  * avoid misleading "posthook failed! apply failed!" cry when posthook fails to find an issue
  * test commit, closes #70, closes #68
  * update issue timestamp after a comment, fixes #68
  * fix member removal in repo settings (fixes #49)
  * rename user settings website field, might help #63
  * speed up getRepositories (and all repos page); add getAllRepositories
  * time utility
  * show authors fix
  * fix missing whitespace between author and date when viewing a patch
  * 58: require new highlighting-kate with memory leak fix (closes #58)
  * gather Pages utils, drop HSPage module
  * consolidate google/github stuff under Handler.User
  * after closing an issue, redirect to the issue tracker, not the issue page
  * after failing to create or comment on an issue, redirect to the issue tracker, not the front page
  * after failing to fork a repo, redirect to the repo, not the front page
  * after deleting a repo, redirect to repo owner, not the front page
  * set a 7-day Expires header on static images. YSlow now gives us an A grade.
  * load codemirror css and js only on pages that need it
  * separate styles for add file and edit file buttons
  * "repository settings" button -> repo settings
  * all repos -> all public repos
  * build/install/run from sdist, good for testing
  * quote slashes in cabal file

* ## darcsden 1.1.1 (2015/4/22)

  * require ssh 0.3+ to avoid a vulnerability

## darcsden 1.1 (2013/07/20)

  * finalise docs some more
  * bump hsp dependency to the ghc 7.6 compatible version
  * speed up user list on front page
  * add missing web app files to cabal file
  * consistent heading
  * add missing web app files to cabal file
  * update contributing/credits in the readme
  * disable repo packing with darcs 2.8 to fix a build problem
  * depend on darcs 2.8.4+ or darcs 2.9+
  * add missing modules to cabal file
  * bump version to 1.1
  * finalise changelog
  * finalise announcement
  * add "built" in footer
  * auto2 target, workaround for running dev builds as right user
  * update 1.1 announcement
  * changelog update
  * small clarifications to register screen
  * note the -E required to preserve env vars with sudo
  * Remove charset parameter from mime if present
  * Add test for edit/add file
  * Put the codemirror object into window
  * Add ability to create files
  * Resolve ambiguty of edit button, by
  * Add instructions for running tests
  * Add tests for Github OAuth, and 
  * Give more appropriate test failure messages
  * Add test for google sync
  * Add test for google login
  * Add test for creating account using google
  * When resetting state, remove userDir only if it exists
  * Reset state before running create user test
  * Add function to reset redis and couchdb states 
  * Move couchdb datbase creation from WebServer to State Util
  * Basic test for darcsden,
  * Cabal entry for darcsden-test
  * Configuration instructions for OAuth, Forgot Password, and File Edit
  * Add xdgMimePath to Settings,
  * If xdg-mime fails somehow, default mime to text/plain
  * Remove carriage returns before saving the file in file edit
  * Edit link when browsing a file will direct to edit file
  * Add repoBase', which allows custom pagenav
  * Create a page for edit file feature
  * Import codemirror 3.14 for edit file feature
  * Add the javascript to load codemirror editor into the edit file page
  * Add css rules for proper alignment of the editor form
  * Create handlers for edit file
  * markdown line break, test through the web editing
  * depend on newer ssh which builds with latest libs
  * add CHANGES.md showing all changes by release
  * 1.1 announcement WIP
  * update author spellings to improve darcs show authors
  * tools: a place to configure OAuth env vars for dev build
  * display "DEV" not "DEBUG" for developer builds
  * set version back for a bit, 1.1 release delayed
  * Use updated session variables if redirecting to register
  * Give option to build packs in repository settings page, and
  * Add a handler for creating packs to a repository
  * Initialize rBuiltPacks to Nothing when creating a repository
  * Add a field to the Repository model indicating the last time packs was built
  * Show a current password field in user settings only if the user has a password
  * Insist on old password when changing passwords only if the account has a password
  * Change OAuth access functions to use http-conduit
  * Use the new OAuth paths in user handlers
  * Change OAuth paths to use http-conduit
  * Switch to http-conduit instead of http-streams
  * Remove ghc option threaded from executable darcsden
  * Resolve conflict between branches
  * Add buttons for OAuth functions to the pages
  * Add handlers for OAuth registration, login, and link
  * Add a variable for oauth reg to Session
  * Add OAuth utility functions, which:
  * Update darcs import to match the latest API of screened
  * Start OpenSSL when starting the webserver 
  * Add names of the environment variables storing OAuth app authentication to
  * Add dependencies HSOpenSSL, network, http-streams for OAuth feature
  * Create HSPages for forgot password feature, and
  * Add handlers for Forgot password feature
  * Add mime-mail to darcsden's dependency list for sending mails
  * Add utility functions for forgot password:
  * Add settings sendEmail, and sendName. You should be able to
  * return the updated session with setUser
  * Add OAuth identities to User feild, and add utility functions
  * Change user handlers to the new password field
  * Change the password fields of the user, so  that they are optional
  * Load repository page after logging in
  * bump version and tested-with
  * tools: fix http port option
  * fix blaze-html warning, clarify dependency
  * fix WebServer warning
  * tools: use current ghc for dev builds, add ghci rule, don't use dev darcs/ssh by default
  * support current blaze-*
  * support/require pandoc 1.10+
  * document a couple of arguments to patches
  * stop Snap being verbose when running as a service
  * specify imports
  * conditionalise Windows service
  * document darcsden on Windows
  * document new options
  * renamed Win32-services-utils package
  * run as service
  * more debug utils
  * recognise OWNER/repo path in some case or other
  * add tested-with to cabal file
  * more updates for latest darcs
  * log accesses to ./access.log not console with a dev build
  * require newer ssh (#46)
  * we don't support pandoc 1.10 yet
  * tools: build all of darcsden, darcs and ssh in dev builds, for easier debugging
  * update for latest darcs
  * Rename repositories when forking, if neccessary
  * Support for Vagrant
  * getUsersWithRepos placeholder
  * old: disable hard-coded assignment & issue type fields, don't want to encourage enhancement issues right now
  * support/require blaze 0.5
  * check security question answer case-insensitively
  * drop some debug helpers now in the lib
  * 29: disconnect after ssh/scp to a bad path
  * 28: when forking, handle an existing private repo with the same name properly
  * 28: make bootstrapRepository less likely to put fs and db out of sync
  * make most headings bold again, I guess it is better
  * plain text readmes (and literal blocks in change notes) no longer have the gray bg & border
  * hide branches button when there are no forks
  * add bootstrap responsive design (width-adapting) styles, commented
  * front page: widen users column to reduce overlap in narrow windows
  * reduce source code font size a notch
  * show a border below file list; drop unnecessary readme heading
  * reduce heading sizes back towards normal browser defaults
  * set body font-size to 100% not 16px to respect browser settings better (per donri)
  * more robust layout of front page content and markdown lists generally
  * roll back some accidentally committed hunks
  * branches: use the "name's repo" format like all repos
  * changes: prevent line breaks in author name too
  * consistent change layout on changes and branches pages
  * drop unnecessary changes page header
  * use consistent style for next/prev buttons
  * all repos: whitespace fix
  * all repos: link "forks" to the parent repo's branches page as a convenience
  * all repos: show page controls at top also; increase page size from 50 to 500
  * don't show page controls if there is only one page
  * don't buttonize forks on branches page
  * another page layout: content at left, repo buttons at right, site buttons at top right (#16)
  * don't bother linking reporter name in issue list
  * use tables for more robust issue list layout with long issue names
  * allow prettier monospace font in markdown areas
  * let wide source code overflow to right as before
  * fix line numbers wrapping, enlarge & lighten source code
  * fix issue form bg color
  * don't gray out repo description
  * make issue page revise form layout a little more robust
  * lighten issues list
  * lighten branches list
  * fix branches page title
  * fluid page layout using bootstrap columns (#16)
  * lighten form styles
  * lighten headings
  * demote some more h1s I missed
  * begin using bootstrap's grid for page layout
  * adjust button icon alignment
  * make hyperlinks (other than main navigation links) blue
  * bump footer font size
  * where can I put this.. expose global layout more
  * drop the monospace font !
  * consistent non-dotted borders
  * drop excess heading line height
  * use bootstrap's default font family & size
  * restore patch page subheader
  * demote patch section headings and branch names to h3
  * more compact non-heading style for changes, issues, and patch file names
  * change secondary page headings to h2
  * remove dead code
  * keep bootstrap's pagination styles out of our pagination controls, minor cleanups
  * enable bootstrap css/js along with the rest
  * add bootstrap css/js to project
  * bump version description in footer
  * switch to 8901 for default dev instance port
  * include highlight.css only when built with highlighter
  * move javascripts back to the top, order matters
  * drop media=screen for consistency, till there's a clear need
  * move js scripts to end of page
  * bump jquery to latest release

## darcsden 1.0-hub (2012/09/19)

  * sync with latest docs/cabal file from 1.0
  * port the alternate highlightingkate/highlighter flags from 1.0
  * switch highlighting theme from kate to pygments
  * remove disabled font size styles
  * hcar participants update
  * move repos below users on the front page for now as suggested
  * Give better errors on SSH command misuse
  * Give better error on missing SSH key
  * bring HCAR up to date
  * bring draft announcement up to date
  * fix numbered list style in markdown
  * doMarkdown variant that doesn't escape html
  * clarify fixEscapes
  * remove unnecessary import from Base
  * indent list items in markdown
  * add moz and opera transition styles as for webkit
  * remove obsolete browser prefixes on border-radius, box-shadow styles
  * disable 36 of 40 font size adjustments, simplifying styling
  * remove unused .error class
  * unnecessary inline style
  * settings cleanup

The darcsden 1.0 and 1.0.1 releases diverged from this branch, here
are their approximate change logs:

## darcsden 1.0.1 (2012/09/20)
 
   * bump version
   * readme/release note links for hackage
   * point to 1.0 source repo
   * restore missing highlightingkate/highlighter flags
   * update HCAR
 
## darcsden 1.0 (2012/09/15)
 
   * final 1.0 docs
   * latest draft of cabal file from hub branch
   * latest draft of release docs from hub branch
   * fix numbered list style in markdown
   * replace "highlighting" flag with "highlightingkate" (default) and "highlighter", to select one or other
   * indent list items in markdown
   * add moz and opera transition styles as for webkit
   * remove obsolete browser prefixes on border-radius, box-shadow styles
   * fix Control.Monad.Trans warning
   * available patches -> branches button
   * shorten explore button name
   * revert many UI style changes from darcsden-hub branch, restoring "square" style

## darcsden-hub/-1.0 fork

  * create a repo -> new repo button
  * render markdown files to html instead of highlighting them
  * extract isMarkdown
  * don't show non-viewable private branches in branches view
  * try a little whitespace separating repo "view" and "action" buttons
  * try "branches" instead of "available patches" button
  * list all related repos on the patches page, even with nothing to merge
  * make Fork showable for debugging
  * small refactor in repoPatches
  * getForkChanges formatting
  * allow repo members to merge patches
  * add owst to credits
  * simplify flags description
  * clarify draft status of release announcement
  * add build flags to makefile
  * fix compilation warnings
  * Abstract out forked-from string generation. Now use it on users' repo listings
  * Fix build against current screeened darcslib
  * Fix build error due to missing definition of frontPageContent
  * cabal file updates
  * readme, announce updates
  * move db hosts/ports to Settings.hs
  * drop --readme option
  * tweak default settings
  * update release notes
  * re-enable new issue form's assignment and type fields in default build
  * draft 1.0 announcement, in progress
  * add .authorspellings to clean up darcs show authors
  * streamline front page layout, compress user/repo lists a little
  * code cleanup
  * tweak patch timeout error msg
  * show an error message on the patch page if fetching the patch times out
  * show the patch page right away, and the patch data when it's ready
  * fix compilation issues
  * potential fix for #12 - private repos being darcs gettable
  * set up the db view for browsing issues by tag
  * don't bother logging the full request in error log even in DEBUG mode
  * fix compilation warnings
  * drop unnecessary curly braces in cabal file
  * fix cabal build failure when ssh is enabled
  * update error message humanisations
  * add compile-time flag to control auto-closing of issues
  * add a flag to enable the ssh server
  * add flag to enable highlighting
  * use DARCS28 flag for subsidiary executables too
  * darcs 2.8 build fixes
  * fix favicon
  * fix clipped file/folder icons in files list
  * fix reversed file order in patch summary
  * 10: fix patch view hunk reverse-order regression
  * 7: give a proper 404 when viewing a nonexistent patch id
  * disable h-k's blue .fu style that is mysterious in haskell source
  * increase readme font size
  * let long source lines overflow right if they want
  * reorganise styles a bit
  * switch to "kate" highlighting theme
  * increase source code font size
  * /delay/SECS route for testing timeouts, prints a message after the specified delay up to 300s
  * more user-friendly error messages
  * enable line anchors in highlighted source
  * "patches from others" -> "available patches", fix button alignment
  * takeUpTo cleanups
  * elide large patches; reduce max request time to 10s and max file/patch display size to 200K
  * import both highlighting libs, make it easy to switch between them for testing
  * sync with latest darcs-screened
  * Darcs.Util renamed to Darcs.Util in latest darcs (respects DARCS28)
  * move log files to a subdirectory
  * keep user files in a subdirectory
  * fix a warning
  * Fix missing whitespace on replace summary
  * Remove extra whitespace
  * fix markdown pre/code block colours, second attempt
  * fix h-k styles interfering with markdown code blocks
  * keep line numbers aligned with highlighted lines
  * add the remaining h-k styles, use tango
  * add some more highlighting-kate styles, use "pygments" for now
  * use same source code font size in changes
  * simplify highlighting error handling, let it render binary since it seems able
  * bump source code font size a bit
  * mention utf8-string dependency
  * begin switch from highlighter to highlighting-kate
  * Fix background overflow on code blocks
  * Fix merging upstream patches
  * Fix indenting on withParent
  * Make /patches link active on forked repos
  * Show upstream changes on /patches
  * latest developer makefile
  * make request timeout a setting
  * 6: show logged-in users their private repos
  * refactor error pages, use same layout for 404, intentional 500, and exceptions
  * move exception handler's error page to WebUtils with the rest
  * move db schemas to their own module
  * give a prettier error page (and log message) when exceptions happen. First cut.
  * adjust darcs-screened api options following chat with gh
  * build with latest darcs-screened, if the on-by-default "darcs28" cabal flag is turned off
  * fix issue tracker flag warning in SSHServer
  * hide repo settings issue tracker checkbox when when issue trackers are disabled globally
  * alphabetise users
  * make page heading more consistent when browsing files
  * explore -> all repos button
  * refactor issues button
  * reword the patches button and gray it out when there are no forks
  * add an "all issues" view, keep issue view buttons visible
  * rounded button corners
  * tweak my repos, settings button icons
  * set NOINDEX meta tag on patch and misc. form pages to discourage search indexing
  * \#3: show a message instead of an error when browsing a file that can't be highlighted (eg images)
  * switch to underlining links by default
  * clarify renderHtml's source, import debug helpers
  * switch order of private and issue tracker checkboxes in repo settings
  * underlink links in issues
  * switch fork and issues buttons, keeping views and actions grouped
  * make the issue comment form consistent
  * fix clipping of issue comment headings
  * remove hard-coded issue assignment, type fields for now
  * let issue trackers be enabled/disabled per-repo
  * issues need the by_repository_and_number view now, update the db designs accordingly
  * when issues trackers are disabled disable url handlers as well
  * add a "my repos" button when logged in
  * drop cabal build flags since you have to edit Settings in any case
  * add DEBUG to version string in footer for debug builds
  * clearer elided message when viewing a patch with many hunks
  * Fix DSA public key identifier.
  * partial workaround for errors viewing too-large patches
  * README updates
  * footer layout; underline links there and in a few other places
  * move type signatures to the end of settings, and log everything to console in debug mode
  * add a footer with version and contact info, and debug build options, to settings
  * more messing around with changes font sizes
  * fix excessive borders in lists in patch notes, keep patch list font size consistent
  * increase maxlength of input fields to 1000
  * serve a /robots.txt, allowing all bots by default
  * build unthreaded by default, to avoid intermittent errors and eventual stylesheet loss due to non-threadsafe cwd setting by libdarcs
  * serve the public directory with an absolute path to be robust against thread cwd issues
  * move log file paths to Settings
  * don't hide fork/patches buttons in single-user builds
  * fix display of non-user patch authors with no real name part, showing email address up to @
  * replace patch author email addresses with usernames more reliably, eg in changes
  * make user list bold, again
  * keep log in/out buttons on one line
  * underline hyperlinks in the front page intro text
  * de-bold website links in repo list
  * show create repo button only on the user's own repo list
  * smoother change borders
  * show repo website link with consistent style
  * underlined hyperlinks, begone
  * embolden user list, directories in files view
  * lighten explore page styles
  * add a files button to repo sidebar
  * miscellaneous old and new style tweaks.. site font, whitespace, emphasize repo & patch names
  * improve pagination controls layout, show at top as well
  * less whitespace and decoration for changes and markdown content
  * disable the bootstrap feature, it is too slow/fragile  for now
  * make user page repo links absolute so they work when url has a trailing slash
  * show create repo button only when logged in
  * move explore repos button to the front page only
  * move create repo link to a sidebar button
  * don't hide the front page from logged-in users
  * fix setting TCP port on the command-line
  * three cabal build flags for personal use (multiuser, deletefiles, issuetrackers)
  * list users on front page
  * make breadcrumbs' site link and front page content configurable
  * make hostname, base path and base url configurable in Settings.hs
  * clean up cabal file a little, forget about ghc 6.12
  * fix remaining warnings
  * fix redundant imports
  * fix more Snap.Types warnings
  * fix a snap types warning
  * make text fields bigger
  * fix redirect after merging
  * extract global Settings.hs
  * centralise userRoot setting and change it to /home/darcsden
  * provide debug helpers from DarcsDen.Util
  * allow latest snap (0.9)
  * require darcs > 2.8.1 (with prim v1 job patch)
  * bump version to "0.6 alpha"
  * support latest GHC, darcs, and snap, aggregating previous work
  * discourage spam registrations with a security question similar to darcs wiki
  * disable browser autofill on register form fields
  * fix emailFrom with blank author info

## darcsden 0.5 (2012/04/14)

  * version 0.5
  * ignore LC_* env var set requests
  * add initial high-level darcslib wrapper
  * add favicon png
  * constrain snap version number
  * cabal file version updates
  * updates for latest darcs/blaze-html/snap
  * PostHook.hs takes into account the case where the repository is private
  * a less-scary error message when $DARCS_PATCHES_XML isn't set
  * use `get` for forking and bootstrapping rather than `init` and `pull`
  * added getOneOf for getting alternative attributes (i.e. if one was renamed); fixes changes made in an issue comment that changed something to an empty value
  * allow obliterate over ssh
  * allow scp -f without --
  * footer cleanups; added a donate button
  * sort in alphabetical order at /explore
  * corrected user name displayed in issue body
  * oi. really corrected commenting. note to self: don't read other things while I'm typing.
  * corrected commenting
  * bump up font size for inline code in markdown
  * correct double-escaping
  * show issue number in page title
  * use issue number for its URL. closes #9.
  * viewing issues by tag; use ^ for "and" and ~ for "or". closes #1.
  * keep track of "from" values in comment changes
  * allow revising an issue's description. closes #3.
  * minor change, again to test post-hooks (use strip in authorFrom). closes #5 (not really).
  * corrected post-hook
  * tiny meaningless change so I can test the closing mechanism. closes #5.
  * corrected getIssueByNumber
  * add comments for closing issues. closes #5.
  * allow a few other phrases for post-hook
  * added initial post-hook for closing issues
  * list issues with newest up top
  * corrected double shadow in blob view
  * woops; save issue numbers
  * a few defaults for some state object fields
  * update the "updated" field when updating an issue
  * issue numbers + some cleanups
  * use getAttr for other state objects, added getAttrOr/getTime/getID/getRev
  * list issues in reverse-chronological order
  * corrected comment author name
  * slight tweak for add-tag form
  * spruced up the new-issue form, implemented adding arbitrary tags
  * corrected issue closing, added reopening
  * correct issue comment gravatar sizes
  * sort issues and their comments by their updated date
  * properly escape text before markdown'ing it
  * any logged-in user can update issues
  * css fixes
  * --install now sets up issues and comments databases
  * initial work on issue commenting/updating
  * added getAttr helper for reading a value from a JSON object
  * normalize line endings before using pandoc for markdown
  * rMember record field is now a list of usernames, not user IDs (any repositories with members must be updated to reflect this)
  * don't set uid/gid/ just start it as the user
  * password changing
  * ensure we're only bootstrapping http/https urls, corrected `Or' validation, and added isEmpty validator
  * init ssh command with a given repository description
  * cleanups
  * shrunk the favicon a bit
  * added favicon
  * correct $PATH for darcsden god config
  * corrected SSH authorization, and log login attempts
  * added god file
  * hspygments -> highlighter, cleaned up DarcsDen.Handler.Repository.Util
  * issues system updates
  * use hspygments and text for highlighting and bytestring <-> string conversion, respectively
  * progress on the issues system, plus some cleanups
  * orphan a repository's forks when deleting it
  * /forks -> /patches, removed console.logs, plus other fixes to make /patches usable
  * improved checkbox ticking in forks view
  * corrected repo links being shadowed by the canvas
  * updated boringfile
  * update to darcs 2.5.1+, mtl, and snap 0.3+, correcting forks view along the way (thanks Heffalump!)
  * cleaned up main.js
  * cleaned up findAllDeps/etc.; removed HiddenFrom
  * removed QuickCheck dependency

## darcsden 0.4 (2010/12/20)

  * updated synopsis
  * updated description
  * added Setup.hs, version bumped to 0.4, bumped cabal-version
  * corrected non-markdown READMES getting the white-on-black treatment
  * don't check DBs for --readme or --install, and just generate a README from --readme
  * added a note to the README about --readme
  * moved INSTALL file to a --readme flag
  * added --install, which sets up CouchDB for you
  * tweaked location for keypair
  * UI tweaks
  * use new rsaKeyPairFromFile function in ssh 0.2.5 rather than convoluted .keypair format
  * corrected login button background CSS
  * /browse -> /explore, added button for it, and changed the main links to the button-style
  * corrected repository grouping at /browse
  * corrected changes list when there's a `darcs replace` log
  * highlight patch hunks in parallel
  * big ol' code style update
  * reorganization & cabal file cleanups
  * need ssh 0.2.4+
  * removed unused variable
  * corrected highlighting of source code containing utf8
  * atomo pygments lexer updates
  * corrected pygments highlighter; kills runaway processes
  * added Atomo lexer for pygments
  * corrected fallback highlighting
  * use Pygments for highlighting
  * slight forks list correction
  * /browse corrections; show forks of forks on their own for now
  * teeny tiny tweak
  * bumped ssh dependency to 0.2.2, which uses transformers
  * moved repository control links over to the left
  * reorganized breadcrumb for file browsing
  * group repository forks together at /browse
  * split the darcsden ssh server into another executable, plus misc. cleanups
  * improved scp security
  * use SHA512 for passwords
  * specify /srv/darcs for http logs
  * don't allow any tomfoolery with the scp path
  * corrected response for unknown requests, bumped ssh dependency number
  * ignore LANG env requests
  * handle scp requests
  * allow debug commands
  * removed Crypto and uuid dependency
  * updated darcs dependency version
  * split SSH server into its own package: http://darcsden.com/alex/ssh
  * bumped up snap versions
  * output invalid requests
  * ensure that redis/couchdb are usable at startup
  * use 127.0.0.1 rather than localhost
  * corrected notifications added during same response that shows the page
  * Corrected empty repository logic and fixed whitespace.
  * Corrected Python import in INSTALL file.
  * More INSTALL file stuff.
  * Updated INSTALL file.
  * Only show the "remove members" field if there are members to remove.
  * Show 404 pages rather than warnings for invalid repository views.
  * Show different messages with the proper push URLs when vieweing an empty repository.
  * Fixed SSH stuff using getRepository rather than getOwnerRepository.
  * Fixed repository viewing logic.
  * Members of private repositories can now access the repository.
  * Ability to edit repository private status.
  * Tweaked icon positioning for private repositories in user repo list.
  * Added repository public/private classes to user repository listings.
  * Don't include private repositories in getRepositories.
  * Fixed .private-repo class showing edit icon, tweaked icon positioning.
  * Save rIsPrivate as is_private in JSON Repository instance.
  * Private repositories.
  * Take HTTP/SSH port numbers as arguments.
  * Fixed getRepositories.
  * Cleanups.
  * Removed bin directory.
  * Specify cookie path as /; fixes weird logged in/logged out state possibly changing while browsing around.
  * Cleaned up DarcsDen's SSH request handling and verification; added init command for quick repository creation.
  * Channel cleanups and helper functions.
  * Use Redis for storing sessions.
  * Removed ssOutSeq (no longer used), cleaned up a few minor warnings.
  * Preemptively check if the handle is closed to prevent "end of file" messages.
  * Might as well bump up the version number (twice; once for the Snap changeover, another for the new SSH server).
  * Swapped a few lingering putStrLns that were used for debugging.
  * Woops, added DarcsDen.Debug module.
  * Converted print debugging statements to calls to a new DarcsDen.Debug.dump function.
  * Tweaked saneRepo to catch more odd cases.
  * Added KeyPair to SessionConfig for the server's private/public key.
  * Removed redundant rprivN; it's always in the pubkey anyway.
  * Removed CTR TODOs.
  * Initial integration of the new SSH server into DarcsDen, removed old Python server.
  * Tweaked PublicKey authentication to just contain a username and PublicKey.
  * Generalized read functions into NetReader, added blobToKey, plus various cleanups.
  * Added ssh-dss (DSA) public/private key support.
  * Send random bytes as padding.
  * Handle other AES key sizes.
  * Proper channel handling and reorganization to accomodate it.
  * Made SSH more flexible; authentication and channel requests are now handled by a configuration.
  * Keep track of window size and send WINDOW_ADJUST when we need to so that gigantic data transfers work.
  * Improved process I/O redirecting, fixed sending EOF in response to EOF, plus misc. cleanups.
  * Print a message when we lose the connection.
  * Ensure packets are sent sequentially by having a single "sender" thread that reads from a channel. Also added initial exec channel request support.
  * Naming convention tweaks for Packet monad and packet handlers.
  * Fixed `unmpint` and `toBlocks` overflow.
  * A much-needed cleanup.
  * Cryptography overhaul; proper CBC stream decryption/encryption, and use Crypto package instead of AES.
  * Initial SSH server work; transport layer (RFC 4253) functional.
  * Added CouchDB to required packages list for darcs-ssh.py.
  * Removed "code" class wrapping markdown patch notes.
  * Markdown patch notes, removed patch notes from atom feed summaries.
  * CSS tweaks for repository READMEs.
  * Fixed settings page.
  * Added access/error logging.
  * Fixed user viewing, this time keeping repository actions working.
  * Rolled back previous record since it breaks repo viewing instead.
  * Fixed / and /(user) conflicting.
  * Updated SSH server CouchDB URL.
  * fixed CSS class for preference changes in summary
  * No more warnings.
  * Serve static files without grabbing the user's session.
  * Fixed repository browsing, raw file viewing, and darcs get over HTTP.
  * Minor fixes for Snap, bumped required Snap version to 0.1.3, and changed the CouchDB port to 5984.
  * Initial Snap conversion work.
  * Fixed duplicates in patch summaries.
  * Added initial structure for private repositories. Not enabled or complete yet.
  * Tweaked ID for code lines; #L123 looks nicer than #LC123 in urls.
  * Fixed doubled title at user index.
  * Fixed "again" text on registration form.
  * Fixed viewing un-parseable source, and added clickable line numbers.
  * Fixed source code leaving `highlight' unescaped if the parse fails.
  * Refactored getReadme and added an isTooLarge function for checking blob source.
  * Added a filesize check to blob viewing, and added raw file viewing.
  * Fixed darcsden :: darcsden as title for /.
  * Fixed a few warnings.
  * Fixed some spots where raw authors would be displayed for patches, and fixed repositories with no changes showing up at /forks.
  * Small fixes in the ssh server.
  * Changed ssh server to run on a higher port number.
  * Use python 2.x syntax for exception catching.
  * More SSH server fixes and tweaks.
  * Updated the SSH server a bit.
  * Fixed full name in website field on settings page.
  * More readJSON cleanups and tweaks.
  * Fixed merge checkbox names, changed to merge:(rid):(pid).
  * Added initial installation instructions.
  * Fixed main updated tag in changes atom feed, and changed PatchLogs to contain UTCTimes instead of Strings for pDate.
  * Added member stuff back in; stored per repository. Also cleaned up Repository.readJSON.
  * Added getUserByID.
  * Grab the latest session when notifying the user of something so they don't just replace each other if more than one is displayed on a page.
  * Redirect to / after deleting a repository, rather than the user's profile.
  * Don't grab the session when we don't need to (e.g. /public). Also removed unneeded arguments from notFound and errorPage.
  * Moved the user-grabbing parts of toLog into a separate function that goes over the log and checks users only if they haven't already been checked. (30 CouchDB requests per page in the changelog -> number of different users in the log)
  * Fixed getRepositoryByID and repository forking.
  * Added old-time to cabal file (boo!), added a startup message so I don't sit there like a fool waiting for it to say something before I realize it doesn't, plus some more minor cleanups.
  * Re-added bootstrapping.
  * Grab forked repos much more effectively and less-crashingly. Also fixed some more whitespace quirks.
  * Cleaned up handler function.
  * Fixed serveDirectory for /public.
  * Lots of page serving tweaks.
  * Re-added serveDirectory (without MIME stuff) for serving public/ and _darcs directories, and cleaned up Main.hs.
  * Fixed double escaping and removed old commented-out code.
  * Bumped the version number.
  * Initial code for the rest of the repo pages, plus some helper functions for user/repo URLs.
  * Cleaned up and cabalized.
  * Lots o' cleanups.
  * Removed some more old unix stuff.
  * Removed setRepoPermissions.
  * Added submit button to init page.
  * Initial repo init and browse pages.
  * Fixed stale session being passed to pages.
  * Fixed settings form and tweaked register form for internal consistency.
  * Fixed User.showJSON
  * Only update the session if it has notifications to wipe.
  * Read the inputs and cookies once, and then store them in an Env. Fixes blocking on a second attempted input read.
  * Expanded that debug info.
  * Added base page wrapper around user pages.
  * Fixed the nav showing the wrong stuff for logged in/logged out.
  * Initial move to HSP and WAI, plus tons of other vaguely related stuff.
  * Removed defunct Darcsden.State module.
  * Initial conversion to CouchDB.
  * Added initial SSH server.
  * Added some styling for code in READMEs.
  * Show token replaces on patch views.
  * show long comment on changes view
  * show long comment on patch view
  * Dependency indicators at the forks listing.
  * Removed some debugging code.
  * Added dependency information to id/classes in the fork log.
  * Fixed up fork merging.
  * Notices now return IO () instead of a new Session; the reason it was like that before no longer applies.
  * Removed `merge' from the global scope in DarcsDen.State.User; it's only used in hashPassword.
  * DarcsDen.Validate.when -> DarcsDen.Validate.iff
  * Added forks listing page, which lets repo admins bring in patches from forked repos.
  * Fixed forkRepository setting the wrong information, and fixed the console help dialogue being wrong with "exit".
  * refactor: gather instance declarations
  * preliminary devmode setting, change this to run without creating users/groups
  * refactor: gather settings in one place
  * Show repo members with 'get group'.
  * user -> owner
  * Shell cleanups.
  * Fixed a typo in the shell help dialogue.
  * Fixed up admin shell stuff, and added unset command.
  * Added user and repository editing to the admin shell.
  * Reorganized some State stuff, and added an initial admin shell.
  * Added MonadIO instance for Dirty.
  * Forked repositories now keep a reference to the original. Also updated the User and Repository records to remove rUsers and uPubkeys, which are not used.
  * Added pubkeys to the registration form, plus slight cleanups.
  * Fixed checking if there are any repositories to show; show a message when viewing a user with no repositories.
  * Ignore case when sorting repositories.
  * HLint changes.
  * Sort repositories at /browse by their name rather than their owner.
  * Added public repository browsing.
  * Kill the web server thread on shutdown. Helpful for debugging in GHCi.
  * Fixed getting members of a repository.
  * Fixed removeMember.
  * Cleaned up Dirty usage and running shell commands.
  * Compile with -threaded to avoid blocking system calls.
  * New repositories can now be bootstrapped from a URL.
  * Added a improved system of working with shell commands and error handling.
  * Fixed others not being able to read public directories.
  * Added a repository fixer.
  * Change repository permissions so that others can read them.
  * Removed DarcsDen.Data; no longer needed.
  * workaround for "no instance ToSElem ClockTime" with ghc 6.10
  * feeds: various fixes to make the changes feed more valid
  * feeds: link to changes feed from repo and changes pages
  * add "extrahead" field to the base template
  * feeds: fix repo name
  * indentation
  * provide a .../changes/atom feed
  * restore the Makefile with tag/clean/ci rules for cleaning/tagging/auto-recompiling
  * fix "no instance ToSElem String" with 6.10
  * Removed the silly shell scripting in removeMember; use System.Posix again.
  * Slight cleanups.
  * Fixed empty file listings being shown.
  * Ensure that darcsden is run as root.
  * Replaced as many System.Cmd.system calls as possible with System.Posix usage.
  * add missing ghc option in Data.hs
  * adapt ghc-options to 6.10 also
  * Added ghc-options to cabal file and removed Makefile.
  * Fixed patch summaries.
  * Initial cabalization.
  * Switched to HStringTemplate.
  * Use Data.List.Split in State.Repository.
  * Heeded HLint.
  * Hash group names.
  * Oodles of icons.
  * When forking and the target repository name is already in use by the user, ask for a different one.
  * Removed chgrp hack; use setgid.
  * Cleanups.
  * Fixed up repository editing and renaming.
  * Fixed getInputs breaking with empty fields.
  * Notices will now re-grab the session to make sure nothing gets lost (e.g. repeated notices in a loop overwriting each other).
  * Use wordsBy rather than splitOn.
  * Moved a couple more functions to DarcsDen.Handler.Repository.Changes.
  * Added exhaustive pattern-match for pageFor.
  * Fixed index match for splitOn behaviour.
  * Split up Darcs.Handler.Repository a bit.
  * Use split package.
  * Fixed footer being smashed up against forms and other floating elements.
  * Handler cleanups.
  * Tweaked repository verification to only check if a repository is valid if it exists.
  * Added a footer.
  * Make repository directories unreadable by others.
  * Adding and removing members to/from repositories.
  * Removed redundant repository description from blob view.
  * Delete a repository's group when destroying it.
  * Added per-repository user groups; this will be the backbone of adding committers to repositories.
  * notFound now serves the proper error code.
  * Tweaked serveDirectory to take absolute paths.
  * Repository forking.
  * Handler reorganization; added a general handleRepo which does the common validations and moved to Handler.Repository, and moved serveDirectory to HackUtils.
  * Added a default crumb to repo-base.
  * Added edit/delete links.
  * Shortened repository handler names and removed some redundant definitions.
  * Moved repo desc/nav to a repo-base for all repo pages to extend.
  * make clean now removes Main
  * Fixed up patch view; summary links work, removed links for removed files, added files link to the files in the repo, and patch diffs link to the file they modify.
  * Removed ./ part of filenames in patch view.
  * Added Makefile.
  * Cleaned up all warnings.
  * Added GPL3 license.
  * Tweaked the intro page.
  * Repository editing and deleting.
  * Added some content to the index page when not logged in.
  * Shorter patch view URLs.
  * Only show the summary section if there's stuff to show.
  * Show preference changes in patch summaries.
  * Removed lib directory (highlighting-kate now has its own repository)
  * Removed text-press from lib/ (has its own repository now)
  * Added pagination links.
  * Fixed build-depends for text-press.
  * Repository handler cleanups.
  * Repository changes pagination.
  * Removed dist directories from tree.
  * Ignore dist directories.
  * Added Go syntax highlighting.
  * Change ownership of new repositories to its owner.
  * Added a few warning displays to failed validation branches, and automatically log the user in after successful registration.
  * Proper name sanity checking and filtering.
  * Cleaned up HackUtils.
  * Serve darcs repositories with HTTP at the repo's URL.
  * Added a little message to empty repositories so the user knows what the push target is.
  * Bumped up source code size a notch.
  * If a user's pubkey does not exist, return "".
  * Added settings link.
  * Redirect to login if they try to create a repo while not logged in.
  * Added user settings page and pubkey updating.
  * Added a README.
  * User registration now creates the user on the system.
  * Removed Hack.Contrib.Press dependency for now.
  * Sanitize repository paths.
  * Redirect and show errors on repository viewing failure.
  * Added repoDir for getting the path for a directory with a given user/repo name, changed repo dir to /jail/home/(username)/(reponame), and removed no-longer-needed withDirectory.
  * log -> changes
  * Added some basic navigation.
  * Add entire session for page context, not just notifications.
  * Use relatize-dates instead of building up a wonky string from a CalendarTime.
  * No need for the log description to link to the page we're already on.
  * Added notification system, and updated most templates to reflect the new style (especially form stuff).
  * Spruced up the index and user viewing pages, added a base template, and thinned up the diff add/remove indicators.
  * Added modified text-press library pending cleanup and sending patches back to creator.
  * {{var}} escapes var for safe output.
  * Added {{{var}}} for unescaped output.
  * Fixed {% if foo.bar %} being parsed as {% if foo.bar.baz %}
  * Make sure requested paths to public/ are sane.
  * Cleanups.
  * Get a user by a log's author's email address and use it (if a user exists for it) for log pages, etc. Also misc. css tweaks.
  * Added handling for Binary changes.
  * Initial patch viewing.
  * Initial site design, repository browsing, and initial log viewing.
  * Split User stuff into its own handler.
  * Reorganization; moved some things from Handler to HackUtils. Also added repository viewing and browsing.
  * Ignore boring repos dir.
  * Redirect to index on repo init.
  * Added repository viewing, and flipped how repository keys are stored: (name, user) -> (user, name)
  * Redirect to / on succesful registration, and only show your repositories at the index if you have any.
  * Added sessions, logging in, and repository creation, and repository listing.
  * Added basic logging-in (not actually functioning yet; no sessions), and cleaned up some debugging junk.
  * Fixed If validation not collecting the validations from the predicate.
  * Added Show instances for OK, Valid, and Invalid. (show Valid is just explain since some things are not easily Showable)
  * Swapped arguments for IOPred / io to make using them a bit nicer.
  * Added cookie setting/getting HackUtils.
  * Split Invalid and OK into their own types, Result is now an Either on both.
  * Removed listToOctets use, refactored password hashing to intersperse the salt through the password.
  * No need to use `show' on a string when explaining it.
  * Refactored validation, simplfying code and adding IO capabilities. Added username existence validation.
  * Added passwords to users, with a migration from the old form (mostly for practice).
  * Added a slightly prettier and less confusing naming for If validation.
  * Ignore my TODO file.
  * Initial user registration.
  * Added initial input validation system.
  * Added HackUtils module, moved getInput(s) to it.
  * Ignore compiled Main.
  * Slight State tweaks.
  * Added highlighting-kate library for later.
  * State updates; added main State type that is a combination of everything.
  * Slight cleanup for Handler.
  * Added .boring file.
  * Initial state structure.
  * Cleaned up DarcsDen.Handler a little bit.
  * Initial record.