Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
abe2127
Email notification: Disjunction across bounds for same package
ysangkok May 21, 2023
6569675
Hackage CSS theme takes precedence over `datatables.min.css`
peterbecich May 21, 2023
2c83646
Merge pull request #1207 from peterbecich/change-css-order
peterbecich May 28, 2023
cc6ecce
colors for paginate buttons and dataTables length, filter text
peterbecich May 28, 2023
dc5dda3
Merge pull request #1209 from peterbecich/datatables-paginate-colors
peterbecich May 29, 2023
eef8343
Remove trailing whitespace on package links (#1204)
TristanCacqueray Jun 1, 2023
b9aca89
relax upper bounds revision check (#1214)
gbaz Jun 1, 2023
8006f38
Merge branch 'janus/fix-dependency-branching'
ysangkok Jun 2, 2023
1d09c18
Bump cachix/install-nix-action from 20 to 21 (#1212)
dependabot[bot] Jun 6, 2023
7eaca15
enable `nix flake check` and Mac build in GitHub Action
peterbecich Jun 19, 2023
8a61547
update GitHub Actions versions
peterbecich Jun 19, 2023
5222ef7
leave `nix flake check` disabled until https://github.com/haskell/hac…
peterbecich Jun 19, 2023
b89121f
Merge pull request #1219 from peterbecich/enable-mac-nix-build-in-git…
peterbecich Jun 19, 2023
7c2b32b
Update max cabal-version check (#1224)
ffaf1 Jun 26, 2023
b48fa5f
Filter out metadata revisions before mirroring
RaoulHC Jun 28, 2023
9279b9a
Enable MathJAX on candidate pages (#1232)
Bodigrim Jul 6, 2023
2a7d751
Fix package list when user has multiple packages
ysangkok Jul 8, 2023
eabf54a
haiku: add as known platform
jessicah Jun 6, 2023
7d9af0d
Bump aeson to ^>= 2.2.0.0, use attoparsec-aeson
andreasabel Aug 3, 2023
7346570
Bumps, to allow building with GHC 9.8.1-alpha1
andreasabel Aug 3, 2023
310942f
CI: bump haskell-ci.yml to GHCs 9.6.2 9.4.5 9.2.8
andreasabel Aug 3, 2023
e5dd400
CI: bump cabal.yml to GHC 9.6.2 and cabal 3.10.1.0
andreasabel Aug 3, 2023
e7f3a55
fix `flake.nix`
peterbecich Aug 13, 2023
1d82ded
disable `fail-fast` for Flake GitHub Action
peterbecich Aug 13, 2023
6bc9d71
attempt to fix `nix build` on Mac
peterbecich Aug 13, 2023
99ad012
upper bound on `aeson`
peterbecich Aug 18, 2023
fd44687
Merge pull request #1241 from peterbecich/fix-nix-flake
peterbecich Aug 18, 2023
f01e00e
Update README for Mac
brandonchinn178 Aug 16, 2023
459232f
Minor spelling improvements
brandonchinn178 Aug 16, 2023
53ef87d
Use sortOn instead of sortBy
brandonchinn178 Aug 17, 2023
58a1973
Consolidate dependencyEmailMap => dependencyEmailMaps
brandonchinn178 Aug 16, 2023
0f21fe9
Move + rename emailText => describeDependencyUpdate
brandonchinn178 Aug 16, 2023
7a92fc1
Move + rename genEmails => genDependencyUpdateList
brandonchinn178 Aug 17, 2023
e652a60
Improve email subject for dep update emails
brandonchinn178 Aug 16, 2023
fb09c8b
Simplify describeDependencyUpdate
brandonchinn178 Aug 17, 2023
5e48f72
Refactor message generation
brandonchinn178 Aug 17, 2023
8d62bbe
Add email markup implementation
brandonchinn178 Aug 17, 2023
f39dd8a
Direct translation from plain text to EmailContent
brandonchinn178 Aug 17, 2023
cbca2d6
Add markup to emails
brandonchinn178 Aug 17, 2023
0ded9fc
Reformat
brandonchinn178 Aug 17, 2023
23eae0c
Give dependencyReleaseEmails more accurate name + type
brandonchinn178 Aug 16, 2023
9da933c
Break out getNotificationEmails from sendNotifyEmailAndDelay
brandonchinn178 Aug 17, 2023
b896c75
Move describeRevision into getNotificationEmails
brandonchinn178 Aug 18, 2023
d6d0d94
Move describeGroupAction into getNotificationEmails
brandonchinn178 Aug 18, 2023
8f7c98e
Move describeTagProposal into getNotificationEmails
brandonchinn178 Aug 18, 2023
b60a9c2
Move describeDependencyUpdate into getNotificationEmails
brandonchinn178 Aug 18, 2023
cab758e
Move describeDocReport into getNotificationEmails
brandonchinn178 Aug 18, 2023
3a0fad2
Remove migration workarounds
brandonchinn178 Aug 18, 2023
3d3f48a
Add tests for getNotificationEmails
brandonchinn178 Aug 17, 2023
364ffe9
Update threadDelay comment, use htmlPart/plainPart
brandonchinn178 Aug 18, 2023
6d82054
Move NotifyTriggerBounds into NotifyDependencyUpdate
brandonchinn178 Aug 18, 2023
06f831e
update `flake.nix` for recent `haskell-flake`
peterbecich Jul 9, 2023
5ca63d1
Flake `cabal.project` parser succeeds with `.` here
peterbecich Aug 22, 2023
1b2d9c6
attempt to fix Flake on Mac
peterbecich Aug 22, 2023
88eab9d
Merge pull request #1244 from peterbecich/update-flake
peterbecich Aug 22, 2023
4dbfbf7
fix `ghcid` in `nix develop`
peterbecich Aug 22, 2023
a32611d
fix `nix build`
peterbecich Aug 22, 2023
f4fe98b
Merge pull request #1245 from peterbecich/fix-ghcid-in-flake
peterbecich Aug 22, 2023
cb3e0b6
enable `nix flake check` in GitHub Action
peterbecich Jun 19, 2023
f52a15d
Merge pull request #1220 from peterbecich/fix-mac-nix-flake
peterbecich Aug 26, 2023
f74bedf
remove Mac-incompatible Nix Flake dependency
peterbecich Aug 26, 2023
613f5eb
Merge pull request #1248 from peterbecich/mac-nix-flake-develop
peterbecich Aug 26, 2023
20587a8
Bump actions/checkout from 3 to 4
dependabot[bot] Sep 4, 2023
9c91563
`nix flake update`
peterbecich Sep 16, 2023
b4184a5
Merge pull request #1253 from peterbecich/flake-update
peterbecich Sep 16, 2023
d170f8f
remove unnecessary flake settings
peterbecich Sep 16, 2023
cc5a28c
Merge pull request #1252 from haskell/dependabot/github_actions/actio…
peterbecich Sep 16, 2023
c3f997e
Bump cachix/install-nix-action from 22 to 23
dependabot[bot] Sep 16, 2023
6a2f8a0
Merge pull request #1251 from haskell/dependabot/github_actions/cachi…
peterbecich Sep 16, 2023
30a4d84
Merge pull request #1254 from peterbecich/flake-settings
peterbecich Sep 16, 2023
b69b5d6
Close <p> tags in the revisions RSS feed
Kleidukos Sep 23, 2023
bf8ee3a
Add vouching
ysangkok Sep 3, 2022
3c82d01
Vouching: Address review comments, add tests
ysangkok Oct 16, 2023
5662ff4
Merge pull request #1225 from RaoulHC/avoid-repeated-tarball-mirroring
gbaz Oct 17, 2023
458fb77
Merge pull request #1256 from Kleidukos/fix-html-tags-rss
gbaz Oct 17, 2023
113d4df
Allow serving cabal files with package name in the file name.
Oct 26, 2023
4ce6377
Bump dependencies and CI for GHC 9.8.1
andreasabel Oct 13, 2023
1cba044
CI: disable redundant workflow `cabal.yml`
andreasabel Oct 24, 2023
ada92d0
Add e-mail notification when all vouches received
ysangkok Dec 2, 2023
d9fd27a
Rename user-facing strings to 'endorsements', add threshold template …
ysangkok Dec 2, 2023
7bad6f8
fix: replace list lastVersion by referenceVersion (#1264)
blackheaven Nov 30, 2023
e37b78b
Merge pull request #1268 from blackheaven/replace-last-version
ysangkok Dec 4, 2023
eb00f2f
Add hashes to the list of revisions in JSON format
andreabedini Nov 29, 2023
4a14eaf
Merge pull request #1267 from andreabedini/andrea/revision-json-sha256
ysangkok Dec 4, 2023
f763229
Update Vouch.hs
gbaz Dec 4, 2023
36ab220
Update vouch.html.st
gbaz Dec 4, 2023
22b5612
Merge pull request #1262 from lockywolf/master
gbaz Dec 4, 2023
294110b
Merge pull request #1257 from haskell/janus/vouch
gbaz Dec 4, 2023
fcc5c51
fix tasty dep
gbaz Dec 4, 2023
1033228
Merge branch 'master' into gb/master-to-central-dec-23
gbaz Dec 5, 2023
44a3b1c
update central-server text for upload ensorsement
gbaz Dec 5, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/cabal.off
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
on:
push:
branches:
- master
pull_request:
branches:
- master
name: Cabal
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
ghc: ['9.8', '9.6', '9.4', '9.2']
cabal: ['latest']
os: [ubuntu-latest]
name: Cabal with GHC ${{ matrix.ghc }}
steps:
- uses: actions/checkout@v4
- name: Setup Haskell
uses: haskell-actions/setup@v2
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: ${{ matrix.cabal }}
- name: Install dependencies
run: sudo apt install -y libbrotli-dev libgd-dev
- name: Build
run: cabal build all --enable-tests
- name: Test
run: cabal test all --enable-tests
- name: Haddock
run: cabal haddock all

## Andreas, 2023-08-03: mtl-2.3 is covered by GHC 9.6
#
# build_with_mtl_2_3:
# runs-on: ${{ matrix.os }}
# strategy:
# fail-fast: false
# matrix:
# ghc: ['9.4.4']
# cabal: ['3.8.1.0']
# os: [ubuntu-latest]
# name: Cabal with GHC ${{ matrix.ghc }} and mtl >= 2.3.1
# steps:
# - uses: actions/checkout@v4
# - name: Setup Haskell
# uses: haskell/actions/setup@v2
# with:
# ghc-version: ${{ matrix.ghc }}
# cabal-version: ${{ matrix.cabal }}
# - name: Install dependencies
# run: sudo apt install -y libbrotli-dev libgd-dev
# - name: Build dependencies with mtl >= 2.3.1
# # 2022-12-30: 'transformers >= 0.6' is needed because of happstack-server
# run: cabal build all --disable-tests --dependencies-only -O0 --constraint 'mtl >= 2.3.1' --constraint 'transformers >= 0.6' --allow-newer='Cabal:mtl' --allow-newer='Cabal:transformers'
# - name: Build with mtl >= 2.3.1
# # 2022-12-30: 'transformers >= 0.6' is needed because of happstack-server
# run: cabal build all --disable-tests -O0 --constraint 'mtl >= 2.3.1' --constraint 'transformers >= 0.6' --allow-newer='Cabal:mtl' --allow-newer='Cabal:transformers'
59 changes: 0 additions & 59 deletions .github/workflows/cabal.yml

This file was deleted.

42 changes: 24 additions & 18 deletions .github/workflows/haskell-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,20 @@
#
# haskell-ci regenerate
#
# For more information, see https://github.com/haskell-CI/haskell-ci
# For more information, see https://github.com/andreasabel/haskell-ci
#
# version: 0.15.20230321
# version: 0.17.20231012
#
# REGENDATA ("0.15.20230321",["github","hackage-server.cabal"])
# REGENDATA ("0.17.20231012",["github","hackage-server.cabal"])
#
name: Haskell-CI
on:
push:
branches:
- master
- ci*
pull_request:
branches:
- master
- ci*
jobs:
linux:
name: Haskell-CI - Linux - ${{ matrix.compiler }}
Expand All @@ -34,19 +32,24 @@ jobs:
strategy:
matrix:
include:
- compiler: ghc-9.6.1
- compiler: ghc-9.8.1
compilerKind: ghc
compilerVersion: 9.6.1
compilerVersion: 9.8.1
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.4.4
- compiler: ghc-9.6.3
compilerKind: ghc
compilerVersion: 9.4.4
compilerVersion: 9.6.3
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.2.7
- compiler: ghc-9.4.7
compilerKind: ghc
compilerVersion: 9.2.7
compilerVersion: 9.4.7
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.2.8
compilerKind: ghc
compilerVersion: 9.2.8
setup-method: ghcup
allow-failure: false
- compiler: ghc-9.0.2
Expand All @@ -71,8 +74,9 @@ jobs:
apt-get update
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
mkdir -p "$HOME/.ghcup/bin"
curl -sL https://downloads.haskell.org/ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2 > "$HOME/.ghcup/bin/ghcup"
curl -sL https://downloads.haskell.org/ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5 > "$HOME/.ghcup/bin/ghcup"
chmod a+x "$HOME/.ghcup/bin/ghcup"
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml;
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
"$HOME/.ghcup/bin/ghcup" install cabal 3.10.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
apt-get update
Expand All @@ -88,10 +92,12 @@ jobs:
echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
HCDIR=/opt/$HCKIND/$HCVER
HC=$HOME/.ghcup/bin/$HCKIND-$HCVER
HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
echo "HC=$HC" >> "$GITHUB_ENV"
echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV"
echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV"
echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
Expand Down Expand Up @@ -142,14 +148,14 @@ jobs:
- name: install cabal-plan
run: |
mkdir -p $HOME/.cabal/bin
curl -sL https://github.com/haskell-hvr/cabal-plan/releases/download/v0.6.2.0/cabal-plan-0.6.2.0-x86_64-linux.xz > cabal-plan.xz
echo 'de73600b1836d3f55e32d80385acc055fd97f60eaa0ab68a755302685f5d81bc cabal-plan.xz' | sha256sum -c -
curl -sL https://github.com/haskell-hvr/cabal-plan/releases/download/v0.7.3.0/cabal-plan-0.7.3.0-x86_64-linux.xz > cabal-plan.xz
echo 'f62ccb2971567a5f638f2005ad3173dba14693a45154c1508645c52289714cb2 cabal-plan.xz' | sha256sum -c -
xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan
rm -f cabal-plan.xz
chmod a+x $HOME/.cabal/bin/cabal-plan
cabal-plan --version
- name: checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: source
- name: initial cabal.project for sdist
Expand Down
12 changes: 7 additions & 5 deletions .github/workflows/nix-flake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ on:
jobs:
nix:
strategy:
fail-fast: true
fail-fast: false
matrix:
os:
- ubuntu-latest
# - macos-latest
- macos-latest
name: Nix on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3.1.0
- uses: cachix/install-nix-action@v21
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v23
with:
extra_nix_config: |
trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= hackage-server.cachix.org-1:iw0iRh6+gsFIrxROFaAt5gKNgIHejKjIfyRdbpPYevY=
Expand All @@ -29,4 +29,6 @@ jobs:
name: hackage-server
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
- run: nix build
# - run: nix flake check

- continue-on-error: false
run: nix flake check
2 changes: 1 addition & 1 deletion cabal.haskell-ci
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
branches: master ci*
branches: master

installed: +all -Cabal -Cabal-syntax -text -parsec -process

Expand Down
9 changes: 7 additions & 2 deletions cabal.project
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
packages:
.

-- This comment moved below "packages" to fix parsing of this file
-- by flake.nix

-- This project config requires cabal 2.4 or later

-- If in doubt, use GHC 8.8 to build hackage-server; see
Expand All @@ -6,8 +12,7 @@
--
-- with-compiler: ghc-8.8

packages: .


allow-newer: rss:time, rss:base

-- Andreas, 2022-10-28: `Cabal-3.8.1.0` wants `process >= 1.6.14`
Expand Down
2 changes: 1 addition & 1 deletion datafiles/static/browse.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ const replaceRows = (response) => {
tr.appendChild(createSimpleText(row.description));
tr.appendChild(createTags(row.tags));
tr.appendChild(createLastUpload(row.lastUpload));
tr.appendChild(createSimpleText(row.lastVersion));
tr.appendChild(createSimpleText(row.referenceVersion));
tr.appendChild(createMaintainers(row.maintainers));
l.appendChild(tr);
}
Expand Down
2 changes: 1 addition & 1 deletion datafiles/templates/Html/browse.html.st
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@
<th id=arrow-description><a href="javascript: sort('description')">Description</a></th>
<th id=arrow-tags><a href="javascript: sort('tags')">Tags</a></th>
<th id=arrow-lastUpload><a href="javascript: sort('lastUpload')">Last U/L</a></th>
<th id=arrow-lastVersion><a href="javascript: sort('lastVersion')">Last Version</a></th>
<th id=arrow-referenceVersion><a href="javascript: sort('referenceVersion')">Reference Version</a></th>
<th id=arrow-maintainers><a href="javascript: sort('maintainers')">Maintainers</a></th>
</tr>
</thead>
Expand Down
2 changes: 2 additions & 0 deletions datafiles/templates/Html/candidate-page.html.st
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="search" href="/packages/opensearch.xml" type="application/opensearchdescription+xml" title="Hackage"/>
<link rel="canonical" href="/package/$package.name$"/>
<script src="/static/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js" type="text/javascript"></script>
</head>

<body>
Expand Down
2 changes: 1 addition & 1 deletion datafiles/templates/Html/revisions.html.st
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ refer to the
</tr>
$revisions:{revision|
<tr>
<td valign="top"><a href="/package/$pkgid$/revision/$revision.number$.cabal">-r$revision.number$</a></td>
<td valign="top"><a href="/package/$pkgid$/revision/$revision.number$.cabal">-r$revision.number$</a> (<a href="/package/$pkgid$/revision/$pkgid$-$revision.number$.cabal">$pkgid$-r$revision.number$</a>)</td>
<td valign="top">$revision.htmltime$</td>
<td valign="top"><a href="/user/$revision.user$">$revision.user$</td>
<td valign="top">$revision.sha256$</th>
Expand Down
27 changes: 27 additions & 0 deletions datafiles/templates/Html/vouch.html.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<head>
$hackageCssTheme()$
<title>Endorse user | Hackage</title>
</head>

<body>
$hackagePageHeader()$

<div id="content">
<h2>Endorse user</h2>

<p>$msg$</p>

<form action="" method=POST>
<input type=submit value="Endorse this user">
</form>

<p>Endorsing cannot be undone! When the user has $requiredNumber$ endorsements, the user
will be added to the uploaders group, and allowed to upload packages. Only endorse people who you trust to upload packages responsibly.</p>
<ul>
$vouches$
</ul>

</div>
</body></html>
5 changes: 3 additions & 2 deletions datafiles/templates/UserSignupReset/SignupConfirm.html.st
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ $hackagePageHeader()$

<p>Email confirmation done!

<p>Now you can set your password and create the account.
<p>Now you can set your password and use the account. If you wish to
upload a package, please request to be added to the uploader group
by one of the mechanisms described in the email you were sent.

<form action="$posturl$" method="post" enctype="multipart/form-data">
<table>
Expand All @@ -31,4 +33,3 @@ $hackagePageHeader()$

</div>
</body></html>

18 changes: 13 additions & 5 deletions datafiles/templates/UserSignupReset/SignupConfirmation.email.st
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,19 @@ this link:

$confirmlink$

After your account is created, you will need to email the Hackage
Trustees at hackage-trustees@haskell.org requesting addition to the
uploader group. In this email, please include your Hackage username
and a link to the package you'd like to upload (on a host like gitlab
or github). This measure is unfortunately necessary to prevent spam
After your account is created, you will need to be added to the
uploaders group in order to upload packages.

The easiest way to be added to the uploaders group is to ask two other
confirmed uploaders to endorse you, sending them the following link:

$endorselink$

Alternately, you can email the Hackage Trustees at
hackage-trustees@haskell.org requesting addition to the uploader
group. In this email, please include your Hackage username and a link
to the package you'd like to upload (on a host like gitlab or
github). This measure is unfortunately necessary to prevent spam
accounts.

For storage and bandwidth reasons, we ask uploaders to only upload
Expand Down
5 changes: 4 additions & 1 deletion datafiles/templates/UserSignupReset/SignupEmailSent.html.st
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ $hackagePageHeader()$
<p>An email has been sent to <b>$useremail$</b>

<p>The email will contain a link to a page where
you can set your password and activate your account.
you can set your password and activate your account.

<p>It will also contain information on how to be authorized
as a hackage uploader.

<p>Note that these activation links do eventually expire,
so don't leave it too long!
Expand Down
Loading