From 7bc469c5f3d0da7a9fd823e5953d2cf4dcb4d4bf Mon Sep 17 00:00:00 2001 From: Jens Petersen Date: Thu, 29 Oct 2020 13:26:55 +0800 Subject: [PATCH 01/12] homepage layout changes and more [wip draft] - enable navbar for homepage - more navbar entries - lts-16 - drop /?page - [q] can hoogle be updated to 5.0.18? - improve /snapshots "buttons" - improve snapshot top matter - [q] better to use haskellstack.org ? --- src/Foundation.hs | 9 -- src/Handler/Home.hs | 6 +- src/Stackage/Database/Cron.hs | 4 - stack.yaml | 6 +- templates/default-layout-wrapper.hamlet | 4 +- templates/default-layout.hamlet | 14 ++- templates/home.hamlet | 121 +++++++++--------------- templates/home.lucius | 5 - templates/snapshots-nav.hamlet | 14 ++- templates/stackage-home.hamlet | 17 ++-- 10 files changed, 67 insertions(+), 133 deletions(-) diff --git a/src/Foundation.hs b/src/Foundation.hs index e4b244a..4bac6d6 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -11,7 +11,6 @@ import Data.WebsiteContent import Settings import Settings.StaticFiles import Stackage.Database -import Text.Blaze import Text.Hamlet (hamletFile) import Types import Yesod.AtomFeed @@ -68,7 +67,6 @@ defaultLayoutWithContainer insideContainer widget = do -- value passed to hamletToRepHtml cannot be a widget, this allows -- you to use normal widget features in default-layout. - cur <- getCurrentRoute pc <- widgetToPageContent $ do $(combineStylesheets 'StaticR [ css_normalize_css @@ -146,13 +144,6 @@ instance Yesod App where maximumContentLength _ _ = Just 2000000 -instance ToMarkup (Route App) where - toMarkup c = - case c of - AllSnapshotsR{} -> "Snapshots" - BlogHomeR -> "Blog" - _ -> "" - -- This instance is required to use forms. You can modify renderMessage to -- achieve customized and internationalized form validation messages. instance RenderMessage App FormMessage where diff --git a/src/Handler/Home.hs b/src/Handler/Home.hs index 94efb1a..4abe9e9 100644 --- a/src/Handler/Home.hs +++ b/src/Handler/Home.hs @@ -30,12 +30,8 @@ getHomeR :: Handler Html getHomeR = track "Handler.Snapshots.getAllSnapshotsR" $ do cacheSeconds $ 60 * 60 now' <- getCurrentTime - currentPageMay <- lookupGetParam "page" - let currentPage :: Int - currentPage = fromMaybe 1 (currentPageMay >>= readMay) (map entityVal -> snapshots) <- - getSnapshots Nothing snapshotsPerPage - ((fromIntegral currentPage - 1) * snapshotsPerPage) + getSnapshots Nothing snapshotsPerPage 0 let groups = groupUp now' snapshots latestLtsNameWithHoogle <- getLatestLtsNameWithHoogle latestLtsByGhc <- getLatestLtsByGhc diff --git a/src/Stackage/Database/Cron.hs b/src/Stackage/Database/Cron.hs index fb0227b..7d41133 100644 --- a/src/Stackage/Database/Cron.hs +++ b/src/Stackage/Database/Cron.hs @@ -15,7 +15,6 @@ module Stackage.Database.Cron import Conduit import Control.DeepSeq -import Control.Lens ((.~)) import qualified Control.Monad.Trans.AWS as AWS (paginate) import Control.SingleRun import qualified Data.ByteString.Char8 as BS8 @@ -800,6 +799,3 @@ pathToPackageModule txt = pkgId :: PackageIdentifierP <- fromPathPiece pkgIdentifier Just (pkgId, modName) _ -> Nothing - - - diff --git a/stack.yaml b/stack.yaml index 57e34a1..36b834e 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,11 +1,9 @@ -resolver: lts-15.6 +resolver: lts-16.20 extra-deps: - barrier-0.1.1@sha256:2021f84c3aba67bb635d72825d3bc0371942444dc014bc307b875071e29eea98,3931 -- hackage-security-0.6.0.0@sha256:69987d46e7b55fe5f0fc537021c3873c5f6f44a6665d349ee6995fd593df8147,11976 +- hackage-security-0.6.0.1 - hoogle-5.0.17.14@sha256:a35eab4f833cd131f1abc79360e3bdbc5aecd7526b9a530ac606580e18691e2b,3173 -- hpack-0.33.0@sha256:ca82f630abe0fba199aa05dcc9942ee8bf137e1425049a7a9ac8458c82d9dcc9,4406 - yesod-gitrepo-0.3.0@sha256:7aad996935065726ce615c395d735cc01dcef3993b1788f670f6bfc866085e02,1191 -- lukko-0.1.1.1@sha256:5c674bdd8a06b926ba55d872abe254155ed49a58df202b4d842b643e5ed6bcc9,4289 - github: commercialhaskell/pantry commit: c4e7c3dff9770e7937c93edfb6564dd6a1acd55e - github: fpco/casa diff --git a/templates/default-layout-wrapper.hamlet b/templates/default-layout-wrapper.hamlet index c7c2513..c2f816f 100644 --- a/templates/default-layout-wrapper.hamlet +++ b/templates/default-layout-wrapper.hamlet @@ -8,8 +8,8 @@ $newline never - - + + #{pageTitle pc} $if notHome diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet index e9366d7..37fb61d 100644 --- a/templates/default-layout.hamlet +++ b/templates/default-layout.hamlet @@ -1,17 +1,15 @@ <div class="navbar navbar-inverse navbar-static-top"> <div class="navbar-inner"> <div class="container"> - <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> - <span class="icon-bar"> - <span class="icon-bar"> - <span class="icon-bar"> <a class="brand" href="/"> - <img src="/static/img/stackage.png" title="FP Complete"> + <img src="/static/img/stackage.png" title="Stackage"> <div class="nav-collapse collapse"> <ul class="nav"> - $forall route <- [AllSnapshotsR, BlogHomeR] - <li :Just route == cur:.active> - <a href=@{route}>#{route} + <li> <a href="/#about">about</a> + <li> <a href="/lts">LTS</a> + <li> <a href="/nightly">Nightly</a> + <li> <a href="/snapshots">Snapshots</a> + <li> <a href="/blog">Blog</a> $maybe msg <- mmsg <div .container> diff --git a/templates/home.hamlet b/templates/home.hamlet index 4dc1608..82da435 100644 --- a/templates/home.hamlet +++ b/templates/home.hamlet @@ -1,8 +1,9 @@ <div .container> <div .row .header> - <div .span6> + <div .span4> <img src=@{StaticR img_logo_png} .logo> - <div .span6> + <h4><a href="#about">Stable Haskell package sets + <div .span3> <form class="hoogle" action="/#{latestLtsNameWithHoogle}/hoogle"> <div class="input-append hoogle-q"> <input class="search span3" type="search" autofocus="" name="q" value="" placeholder="E.g. map, a -> a, etc."> @@ -17,90 +18,56 @@ Exact lookup <div .row> - <div .span12> - <p> - Stackage is a stable source of Haskell packages. It guarantees that packages build consistently and pass tests before generating nightly and Long Term Support (LTS) releases. - <p> - A Stackage snapshot includes pinned package versions from <a href="https://hackage.haskell.org">Hackage</a> (the index of all Haskell packages in all versions). - It is a curated set of packages that work well together, similar to how a <a href="https://www.debian.org">Debian</a> release is a curated snapshot of most of the open-source software in the world. - <p> - <a href="https://haskellstack.org">Stack</a> is a tool made specifically to make using Stackage snapshots easy and convenient. - We recommend you to use it. - But you can also use Stackage in other ways: as a source for packages that work well together, or to ensure that Haskell packages you author or care about work well with others. - <p> - Stackage is a community project: Haskell users around the world work together to create the stable snapshots. - <br /> - Stackage itself and all tools surrounding it are open-source. - <p> - Stackage's infrastructure, build machines, initial creation and ongoing maintenance, are proudly sponsored by <a href="https://www.fpcomplete.com">FP Complete</a>. + <div .span6> + <h4><a href="blog">Recent News</a> + $maybe post <- mrecentBlog + <p> + <a href=@{BlogPostR (postYear post) (postMonth post) (postSlug post)}>#{postTitle post}</a>, + <abbr title=#{show $ postTime post}>#{dateDiff now' (utctDay $ postTime post)}</abbr> <div .row> <div .span6> <h3> - Latest releases - - <p> - You browse the latest long term support (# - <a href="https://github.com/fpco/lts-haskell#readme">what are Long Term Support releases?# - ) release, or the latest - bleeding-edge nightly release. - - <p> - <a href="/lts"> - LTS Haskell - <p> - <a href="/nightly"> - Stackage Nightly - - <p> - Have more questions? We have a # - <a href="https://github.com/fpco/stackage#frequently-asked-questions">FAQ section on Github# - \. - <h3> - Related initiatives - <p> - Stack is the recommended way to use Stackage. - <p> - <a href="https://haskell.fpcomplete.com/get-started"> - Get started with Stack - on - <a href="https://haskell.fpcomplete.com/"># - haskell.fpcomplete.com# - \. - - <h3> - Latest LTS per GHC version + Latest LTS release per GHC version <ul> $forall (major, minor, ghc, date) <- latestLtsByGhc <li> <a href=@{SnapshotR (SNLts major minor) StackageHomeR}>LTS #{major}.#{minor} for #{ghc}# \, published #{dateDiff now' date} - <h3> - Package Maintainers - <p> - <a href="https://github.com/fpco/stackage/blob/master/MAINTAINERS.md#adding-a-package"> - Add your maintained packages to stackage - <div .span6> - <h3>News - $maybe post <- mrecentBlog + <div .span6> + <h3>Recent Snapshots + $forall stackages <- groups + <ul .snapshots> + $forall (ident, title, uploaded) <- stackages + <li> + <strong> + <a href=@{SnapshotR ident StackageHomeR}>#{title}</a>, #{uploaded} + <p> + <a href=@{AllSnapshotsR}> + Snapshots archive + + <div .row> + <div .span6> + <h3 id="about"> + About Stackage <p> - <a href=@{BlogPostR (postYear post) (postMonth post) (postSlug post)}>#{postTitle post} + Stackage provides consistent sets of Haskell packages, known to build together and pass their tests before becoming <a href="/nightly">Stackage Nightly</a> snapshots and <a href="/lts">LTS</a> + (<a href="https://github.com/fpco/lts-haskell#readme">Long Term Support</a>) releases. <p> - <abbr title=#{show $ postTime post}>#{dateDiff now' (utctDay $ postTime post)} - $nothing - <a href="/blog">Blog - <h3>Snapshots - $forall stackages <- groups - $forall (_, _, uploaded) <- take 1 stackages - <h5> - #{uploaded} - <ul .snapshots> - $forall (ident, title, _uploaded) <- stackages - <li> - <strong> - <a href=@{SnapshotR ident StackageHomeR}> - #{title} - <p> - <a href=@{AllSnapshotsR}> - Snapshots archive + It is a distribution of a subset packages from <a href="https://hackage.haskell.org">Hackage</a>, each package chosen at a version to make the set self-consistent. Note that Stackage does not patch any packages. + <p> + We recommend using the <a href="https://haskellstack.org">stack</a> tool, which makes using Stackage snapshots easy and convenient. + But Stackage can also be used in other ways: as a source of consistent packages that work well together, or to ensure that Haskell packages you author or care about work well with others. + <a href="https://haskell.fpcomplete.com/get-started">Get started with Stack</a> + <p> + Stackage is a community project: Haskell users around the world work together to keep Stackage snapshots up to date with recent package versions: + Stackage itself and all the tools surrounding it are open-source. + See <a href="https://github.com/fpco/stackage/blob/master/MAINTAINERS.md#adding-a-package"> + <b>how to add packages to Stackage</b></a> + <p> + Have more questions? We have a # + <a href="https://github.com/fpco/stackage#frequently-asked-questions">FAQ section on Github</a>. + + <p> + Stackage's infrastructure, build machines, initial creation and ongoing maintenance, are proudly sponsored by <a href="https://www.fpcomplete.com">FP Complete</a>. diff --git a/templates/home.lucius b/templates/home.lucius index fb3d0cf..4f4cef1 100644 --- a/templates/home.lucius +++ b/templates/home.lucius @@ -1,10 +1,5 @@ -.navbar { - display: none; -} .logo { width: 300px; } .header { - margin-bottom: 1em; - margin-top: 2em; } diff --git a/templates/snapshots-nav.hamlet b/templates/snapshots-nav.hamlet index c887e16..09988ab 100644 --- a/templates/snapshots-nav.hamlet +++ b/templates/snapshots-nav.hamlet @@ -1,12 +1,10 @@ <div .snapshot-nav> - $if isFirstPage - at newest -- - $else + $if not isFirstPage <a href=@{AllSnapshotsR}?page=#{currentPage - 1}> - see newer -- + \< newer + <span .separator> \ Page #{currentPage} # - $if isLastPage - ++ at oldest - $else + $if not isLastPage + <span .separator> <a href=@{AllSnapshotsR}?page=#{currentPage + 1}> - ++ see older + older \> diff --git a/templates/stackage-home.hamlet b/templates/stackage-home.hamlet index 4f0aee6..74f005f 100644 --- a/templates/stackage-home.hamlet +++ b/templates/stackage-home.hamlet @@ -7,19 +7,14 @@ $newline never <span .separator> <span> <a href=@{StackageDiffR previousSnapName name}>View changes - <span .separator> - <span> - stack # - <code>resolver: #{toPathPiece name} - <h3>Setup guide - <p>Edit your stack.yaml and set the following: - <p .stack-resolver-yaml>resolver: #{toPathPiece name} - <p>You can also use <code>stack --resolver #{toPathPiece name}</code> on the command line + <p>To use this resolver: + <p>edit your stack.yaml and set the following: + <p .stack-resolver-yaml>resolver: #{toPathPiece name} + <p>or on the command line use: + <code>stack --resolver #{toPathPiece name}</code> - <p> - <b>New to stack? - \ Check out <a href="http://docs.haskellstack.org">the stack homepage</a> + <p>For more details see <a href="http://docs.haskellstack.org">the stack homepage</a> <h3>Hoogle ^{hoogleForm} From ad484ca048b1c440c8bc97a3deb9d0469daa0e03 Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Fri, 30 Oct 2020 11:54:51 +0800 Subject: [PATCH 02/12] remove text-shadow --- templates/default-layout.lucius | 2 -- templates/package.lucius | 2 -- templates/stackage-home.lucius | 1 - 3 files changed, 5 deletions(-) diff --git a/templates/default-layout.lucius b/templates/default-layout.lucius index af88ecb..be5abbe 100644 --- a/templates/default-layout.lucius +++ b/templates/default-layout.lucius @@ -10,7 +10,6 @@ html { body { background: #f0f0f0; font-family: 'Lato', sans-serif; - text-shadow: 1px 1px 1px #ffffff; margin-bottom: 4em; padding-bottom: 2em; } @@ -43,7 +42,6 @@ code,pre { .navbar-inner { border-color: #06537d !important; } .footer { - text-shadow: none; background: #0981c3; border-top: 1px solid #ddd; color: #fff; diff --git a/templates/package.lucius b/templates/package.lucius index 167973a..ad7eb9a 100644 --- a/templates/package.lucius +++ b/templates/package.lucius @@ -239,7 +239,6 @@ h2.changes-title { } .tag-count { border: 0.1em solid #d8d8d8; - text-shadow: none; padding: 0 0.25em; border-radius: 0.25em; color: #999; @@ -290,4 +289,3 @@ div.plain-text { padding: 0.5em; background: #eef; } - diff --git a/templates/stackage-home.lucius b/templates/stackage-home.lucius index aba44e7..c32c9a9 100644 --- a/templates/stackage-home.lucius +++ b/templates/stackage-home.lucius @@ -55,7 +55,6 @@ hr { display: inline-block; padding: 0 0.5em; margin-right: 0.5em; - text-shadow: none; } } } From 5a8de6a11bed3dd6206f8ec386d144829fb23e0e Mon Sep 17 00:00:00 2001 From: Jens Petersen <juhpetersen@gmail.com> Date: Fri, 30 Oct 2020 16:31:22 +0800 Subject: [PATCH 03/12] navbar: about -> About Co-authored-by: Michael Snoyman <michael@snoyman.com> --- templates/default-layout.hamlet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet index 37fb61d..21635e4 100644 --- a/templates/default-layout.hamlet +++ b/templates/default-layout.hamlet @@ -5,7 +5,7 @@ <img src="/static/img/stackage.png" title="Stackage"> <div class="nav-collapse collapse"> <ul class="nav"> - <li> <a href="/#about">about</a> + <li> <a href="/#about">About</a> <li> <a href="/lts">LTS</a> <li> <a href="/nightly">Nightly</a> <li> <a href="/snapshots">Snapshots</a> From 1baa9295cd62c03d9c4e29a45a08b51c0a35e894 Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Fri, 30 Oct 2020 21:27:52 +0800 Subject: [PATCH 04/12] add faq to navbar --- templates/default-layout.hamlet | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet index 21635e4..8a71bcc 100644 --- a/templates/default-layout.hamlet +++ b/templates/default-layout.hamlet @@ -9,6 +9,7 @@ <li> <a href="/lts">LTS</a> <li> <a href="/nightly">Nightly</a> <li> <a href="/snapshots">Snapshots</a> + <li> <a href="https://github.com/fpco/stackage#frequently-asked-questions">FAQ</a> <li> <a href="/blog">Blog</a> $maybe msg <- mmsg From a33bcceb41e4a0964bce02e7ade60e7e3cb5176d Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Fri, 30 Oct 2020 21:28:20 +0800 Subject: [PATCH 05/12] drop redundant import of bimap --- src/Stackage/Database/Query.hs | 1 - src/Types.hs | 1 - 2 files changed, 2 deletions(-) diff --git a/src/Stackage/Database/Query.hs b/src/Stackage/Database/Query.hs index d993104..17a7495 100644 --- a/src/Stackage/Database/Query.hs +++ b/src/Stackage/Database/Query.hs @@ -77,7 +77,6 @@ module Stackage.Database.Query ) where import qualified Data.Aeson as A -import Data.Bifunctor (bimap) import qualified Data.List as L import Database.Esqueleto import Database.Esqueleto.Internal.Language (FromPreprocess) diff --git a/src/Types.hs b/src/Types.hs index f1d68af..4745ddb 100644 --- a/src/Types.hs +++ b/src/Types.hs @@ -50,7 +50,6 @@ module Types import ClassyPrelude.Yesod (ToBuilder(..)) import Data.Aeson -import Data.Bifunctor (bimap) import Data.Char (ord) import Data.Hashable (hashUsing, hashWithSalt) import qualified Data.Text as T From 809ab9bcef50729bed8601ac984ea580d5e0b1eb Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Fri, 30 Oct 2020 21:29:13 +0800 Subject: [PATCH 06/12] summary bullet points and more home improvements - call blog "News" (also on navbar) - span5 for .header - <p> before hoogle - change hoogle placeholder - remove brws-pkgs span (wasn't rendering anyway?) - add bullet points summary of Stackage - move News to right of it - add link to other blog news posts --- templates/default-layout.hamlet | 2 +- templates/home.hamlet | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet index 8a71bcc..47ce8f7 100644 --- a/templates/default-layout.hamlet +++ b/templates/default-layout.hamlet @@ -10,7 +10,7 @@ <li> <a href="/nightly">Nightly</a> <li> <a href="/snapshots">Snapshots</a> <li> <a href="https://github.com/fpco/stackage#frequently-asked-questions">FAQ</a> - <li> <a href="/blog">Blog</a> + <li> <a href="/blog">News</a> $maybe msg <- mmsg <div .container> diff --git a/templates/home.hamlet b/templates/home.hamlet index 82da435..b5b66f6 100644 --- a/templates/home.hamlet +++ b/templates/home.hamlet @@ -1,30 +1,31 @@ <div .container> <div .row .header> - <div .span4> + <div .span5> <img src=@{StaticR img_logo_png} .logo> - <h4><a href="#about">Stable Haskell package sets <div .span3> + <p> <form class="hoogle" action="/#{latestLtsNameWithHoogle}/hoogle"> <div class="input-append hoogle-q"> - <input class="search span3" type="search" autofocus="" name="q" value="" placeholder="E.g. map, a -> a, etc."> + <input class="search span3" type="search" autofocus="" name="q" value="" placeholder="Hoogle search LTS"> <button class="btn" type="submit"> Search - <span class="brws-pkgs"> - or - <a href="/lts"> - browse packages <label class="checkbox exact-lookup" for="exact" title="Only find identifiers matching your search term precisely"> <input type="checkbox" name="exact" id="exact"> Exact lookup - <div .row> <div .span6> - <h4><a href="blog">Recent News</a> + <h3>Stable Haskell package sets + <ul> + <li>A distribution of compatible Haskell packages from <a href="https://hackage.haskell.org">Hackage</a> that build together + <li><a href="https://haskellstack.org">stack</a> makes using Stackage easy + <li>Stackage is a community project: <a href="https://github.com/fpco/stackage/blob/master/MAINTAINERS.md#adding-a-package"><b>how to add packages to Stackage</b></a> + <div .span6> + <h3>Recent News $maybe post <- mrecentBlog <p> <a href=@{BlogPostR (postYear post) (postMonth post) (postSlug post)}>#{postTitle post}</a>, <abbr title=#{show $ postTime post}>#{dateDiff now' (utctDay $ postTime post)}</abbr> - + <p><a href="blog">other posts</a> <div .row> <div .span6> <h3> From 7bd8968c2bc951e7953594d60b8a2ae88e5de494 Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Sat, 31 Oct 2020 19:06:31 +0800 Subject: [PATCH 07/12] hoogle-5.0.18 --- stack.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stack.yaml b/stack.yaml index 36b834e..b23373d 100644 --- a/stack.yaml +++ b/stack.yaml @@ -2,7 +2,7 @@ resolver: lts-16.20 extra-deps: - barrier-0.1.1@sha256:2021f84c3aba67bb635d72825d3bc0371942444dc014bc307b875071e29eea98,3931 - hackage-security-0.6.0.1 -- hoogle-5.0.17.14@sha256:a35eab4f833cd131f1abc79360e3bdbc5aecd7526b9a530ac606580e18691e2b,3173 +- hoogle-5.0.18 - yesod-gitrepo-0.3.0@sha256:7aad996935065726ce615c395d735cc01dcef3993b1788f670f6bfc866085e02,1191 - github: commercialhaskell/pantry commit: c4e7c3dff9770e7937c93edfb6564dd6a1acd55e From e086b058f690780b632731b79ad8dae387505e1e Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Sat, 31 Oct 2020 19:56:36 +0800 Subject: [PATCH 08/12] put latest nightly and lts in News: drop rows and Recent Snapshots --- src/Handler/Home.hs | 12 ++++++------ templates/default-layout.hamlet | 2 +- templates/home.hamlet | 32 ++++++++++++++------------------ 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/Handler/Home.hs b/src/Handler/Home.hs index 4abe9e9..5369d43 100644 --- a/src/Handler/Home.hs +++ b/src/Handler/Home.hs @@ -30,9 +30,12 @@ getHomeR :: Handler Html getHomeR = track "Handler.Snapshots.getAllSnapshotsR" $ do cacheSeconds $ 60 * 60 now' <- getCurrentTime - (map entityVal -> snapshots) <- - getSnapshots Nothing snapshotsPerPage 0 - let groups = groupUp now' snapshots + (map entityVal -> nightly) <- + getSnapshots (Just NightlyBranch) 1 0 + let latestNightly = groupUp now' nightly + (map entityVal -> lts) <- + getSnapshots (Just LtsBranch) 1 0 + let latestLts = groupUp now' lts latestLtsNameWithHoogle <- getLatestLtsNameWithHoogle latestLtsByGhc <- getLatestLtsByGhc @@ -49,9 +52,6 @@ getHomeR = track "Handler.Snapshots.getAllSnapshotsR" $ do groupUp now' = groupBy (on (==) (\(_,_,uploaded) -> uploaded)) . map (uncrapify now') -snapshotsPerPage :: Int -snapshotsPerPage = 8 - getAuthorsR :: Handler Html getAuthorsR = contentHelper "Library Authors" wcAuthors diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet index 47ce8f7..8a71bcc 100644 --- a/templates/default-layout.hamlet +++ b/templates/default-layout.hamlet @@ -10,7 +10,7 @@ <li> <a href="/nightly">Nightly</a> <li> <a href="/snapshots">Snapshots</a> <li> <a href="https://github.com/fpco/stackage#frequently-asked-questions">FAQ</a> - <li> <a href="/blog">News</a> + <li> <a href="/blog">Blog</a> $maybe msg <- mmsg <div .container> diff --git a/templates/home.hamlet b/templates/home.hamlet index b5b66f6..a5b581f 100644 --- a/templates/home.hamlet +++ b/templates/home.hamlet @@ -1,5 +1,5 @@ <div .container> - <div .row .header> + <div .header> <div .span5> <img src=@{StaticR img_logo_png} .logo> <div .span3> @@ -12,7 +12,7 @@ <label class="checkbox exact-lookup" for="exact" title="Only find identifiers matching your search term precisely"> <input type="checkbox" name="exact" id="exact"> Exact lookup - <div .row> + <div> <div .span6> <h3>Stable Haskell package sets <ul> @@ -20,13 +20,22 @@ <li><a href="https://haskellstack.org">stack</a> makes using Stackage easy <li>Stackage is a community project: <a href="https://github.com/fpco/stackage/blob/master/MAINTAINERS.md#adding-a-package"><b>how to add packages to Stackage</b></a> <div .span6> - <h3>Recent News + <h3>News + <ul .snapshots> + $forall stackages <- latestNightly + $forall (ident, title, uploaded) <- stackages + <li> + <strong> + <a href=@{SnapshotR ident StackageHomeR}>#{title}</a>, #{uploaded} + $forall stackages <- latestLts + $forall (ident, title, uploaded) <- stackages + <li> + <strong> + <a href=@{SnapshotR ident StackageHomeR}>#{title}</a>, #{uploaded} $maybe post <- mrecentBlog <p> <a href=@{BlogPostR (postYear post) (postMonth post) (postSlug post)}>#{postTitle post}</a>, <abbr title=#{show $ postTime post}>#{dateDiff now' (utctDay $ postTime post)}</abbr> - <p><a href="blog">other posts</a> - <div .row> <div .span6> <h3> Latest LTS release per GHC version @@ -36,19 +45,6 @@ <a href=@{SnapshotR (SNLts major minor) StackageHomeR}>LTS #{major}.#{minor} for #{ghc}# \, published #{dateDiff now' date} - <div .span6> - <h3>Recent Snapshots - $forall stackages <- groups - <ul .snapshots> - $forall (ident, title, uploaded) <- stackages - <li> - <strong> - <a href=@{SnapshotR ident StackageHomeR}>#{title}</a>, #{uploaded} - <p> - <a href=@{AllSnapshotsR}> - Snapshots archive - - <div .row> <div .span6> <h3 id="about"> About Stackage From 71793e0b72dfa084d8412854ff2d724a059962cc Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Sat, 31 Oct 2020 20:47:58 +0800 Subject: [PATCH 09/12] News tweaks tested with placeholder text --- templates/home.hamlet | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/home.hamlet b/templates/home.hamlet index a5b581f..6f513a5 100644 --- a/templates/home.hamlet +++ b/templates/home.hamlet @@ -20,7 +20,7 @@ <li><a href="https://haskellstack.org">stack</a> makes using Stackage easy <li>Stackage is a community project: <a href="https://github.com/fpco/stackage/blob/master/MAINTAINERS.md#adding-a-package"><b>how to add packages to Stackage</b></a> <div .span6> - <h3>News + <h3>News</h3> <ul .snapshots> $forall stackages <- latestNightly $forall (ident, title, uploaded) <- stackages @@ -32,10 +32,10 @@ <li> <strong> <a href=@{SnapshotR ident StackageHomeR}>#{title}</a>, #{uploaded} - $maybe post <- mrecentBlog - <p> - <a href=@{BlogPostR (postYear post) (postMonth post) (postSlug post)}>#{postTitle post}</a>, - <abbr title=#{show $ postTime post}>#{dateDiff now' (utctDay $ postTime post)}</abbr> + $maybe post <- mrecentBlog + <p> + <a href=@{BlogPostR (postYear post) (postMonth post) (postSlug post)}>#{postTitle post}</a>, + <abbr title=#{show $ postTime post}>#{dateDiff now' (utctDay $ postTime post)}</abbr> <div .span6> <h3> Latest LTS release per GHC version From 17ec30eacc3050eac5b0ea7ff2b23bd6742fbcd8 Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Sat, 31 Oct 2020 20:48:51 +0800 Subject: [PATCH 10/12] home: header class redundant --- templates/home.hamlet | 2 +- templates/home.lucius | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/templates/home.hamlet b/templates/home.hamlet index 6f513a5..8dc872c 100644 --- a/templates/home.hamlet +++ b/templates/home.hamlet @@ -1,5 +1,5 @@ <div .container> - <div .header> + <div> <div .span5> <img src=@{StaticR img_logo_png} .logo> <div .span3> diff --git a/templates/home.lucius b/templates/home.lucius index 4f4cef1..2439b2b 100644 --- a/templates/home.lucius +++ b/templates/home.lucius @@ -1,5 +1,3 @@ .logo { width: 300px; } -.header { -} From 7dbb9bf6da509a8063cbd416b5b28111393507b4 Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Sat, 31 Oct 2020 20:49:15 +0800 Subject: [PATCH 11/12] home summary: mention stack last --- templates/home.hamlet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.hamlet b/templates/home.hamlet index 8dc872c..94c2150 100644 --- a/templates/home.hamlet +++ b/templates/home.hamlet @@ -17,8 +17,8 @@ <h3>Stable Haskell package sets <ul> <li>A distribution of compatible Haskell packages from <a href="https://hackage.haskell.org">Hackage</a> that build together - <li><a href="https://haskellstack.org">stack</a> makes using Stackage easy <li>Stackage is a community project: <a href="https://github.com/fpco/stackage/blob/master/MAINTAINERS.md#adding-a-package"><b>how to add packages to Stackage</b></a> + <li><a href="https://haskellstack.org">stack</a> makes using Stackage easy <div .span6> <h3>News</h3> <ul .snapshots> From 9d1dfc6ff358241f50b58a4a93707c3b51eface0 Mon Sep 17 00:00:00 2001 From: Jens Petersen <petersen@redhat.com> Date: Sat, 31 Oct 2020 21:34:19 +0800 Subject: [PATCH 12/12] fix mobile navbar menu (I feel it kicks in too early (wide)) --- templates/default-layout.hamlet | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet index 8a71bcc..c9faf80 100644 --- a/templates/default-layout.hamlet +++ b/templates/default-layout.hamlet @@ -1,6 +1,10 @@ <div class="navbar navbar-inverse navbar-static-top"> <div class="navbar-inner"> <div class="container"> + <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> + <span class="icon-bar"> + <span class="icon-bar"> + <span class="icon-bar"> <a class="brand" href="/"> <img src="/static/img/stackage.png" title="Stackage"> <div class="nav-collapse collapse">