From e420705b0743f541c88497b55c9bdcb5a9f09216 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Tue, 20 Aug 2013 13:35:22 +0300 Subject: [PATCH 01/11] Allow modification of confirmation email page --- yesod-auth/Yesod/Auth/Email.hs | 12 +++++++++--- yesod-auth/yesod-auth.cabal | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/yesod-auth/Yesod/Auth/Email.hs b/yesod-auth/Yesod/Auth/Email.hs index b57b02d8..70024aff 100644 --- a/yesod-auth/Yesod/Auth/Email.hs +++ b/yesod-auth/Yesod/Auth/Email.hs @@ -164,6 +164,14 @@ class (YesodAuth site, PathPiece (AuthEmailId site)) => YesodAuthEmail site wher | TS.length x >= 3 = return $ Right () | otherwise = return $ Left "Password must be at least three characters" + -- | Response after sending a confirmation email. + -- + -- Since 1.2.2 + confirmationEmailSentResponse :: Text -> HandlerT site IO Html + confirmationEmailSentResponse identifier = defaultLayout $ do + setTitleI Msg.ConfirmationEmailSentTitle + [whamlet|

_{Msg.ConfirmationEmailSent identifier}|] + authEmail :: YesodAuthEmail m => AuthPlugin m authEmail = AuthPlugin "email" dispatch $ \tm -> @@ -249,9 +257,7 @@ registerHelper allowUsername dest = do render <- getUrlRender let verUrl = render $ verify (toPathPiece lid) verKey lift $ sendVerifyEmail email verKey verUrl - lift $ defaultLayout $ do - setTitleI Msg.ConfirmationEmailSentTitle - [whamlet|

_{Msg.ConfirmationEmailSent identifier}|] + lift $ confirmationEmailSentResponse identifier postRegisterR :: YesodAuthEmail master => HandlerT Auth (HandlerT master IO) Html postRegisterR = registerHelper False registerR diff --git a/yesod-auth/yesod-auth.cabal b/yesod-auth/yesod-auth.cabal index 4c77c40c..4717cee7 100644 --- a/yesod-auth/yesod-auth.cabal +++ b/yesod-auth/yesod-auth.cabal @@ -1,5 +1,5 @@ name: yesod-auth -version: 1.2.1 +version: 1.2.2 license: MIT license-file: LICENSE author: Michael Snoyman, Patrick Brisbin From 1ea61ddfc7dbada4560271cb6d62e7fcc70f9577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Sun, 4 Aug 2013 14:54:09 +0200 Subject: [PATCH 02/11] Add more documentation to Yesod.Form.Functions --- yesod-form/Yesod/Form/Functions.hs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/yesod-form/Yesod/Form/Functions.hs b/yesod-form/Yesod/Form/Functions.hs index 82641317..8a36710e 100644 --- a/yesod-form/Yesod/Form/Functions.hs +++ b/yesod-form/Yesod/Form/Functions.hs @@ -99,13 +99,18 @@ askFiles = do (x, _, _) <- ask return $ liftM snd x +-- | Converts a form field into monadic form. This field requires a value +-- and will return 'FormFailure' if left empty. mreq :: (RenderMessage site FormMessage, HandlerSite m ~ site, MonadHandler m) - => Field m a - -> FieldSettings site - -> Maybe a + => Field m a -- ^ form field + -> FieldSettings site -- ^ settings for this field + -> Maybe a -- ^ optional default value -> MForm m (FormResult a, FieldView site) mreq field fs mdef = mhelper field fs mdef (\m l -> FormFailure [renderMessage m l MsgValueRequired]) FormSuccess True +-- | Converts a form field into monadic form. This field is optional, i.e. +-- if filled in, it returns 'Just a', if left empty, it returns 'Nothing'. +-- Arguments are the same as for 'mreq' (apart from type of default value). mopt :: (site ~ HandlerSite m, MonadHandler m) => Field m a -> FieldSettings site @@ -155,6 +160,7 @@ mhelper Field {..} FieldSettings {..} mdef onMissing onFound isReq = do , fvRequired = isReq }) +-- | Applicative equivalent of 'mreq'. areq :: (RenderMessage site FormMessage, HandlerSite m ~ site, MonadHandler m) => Field m a -> FieldSettings site @@ -162,6 +168,7 @@ areq :: (RenderMessage site FormMessage, HandlerSite m ~ site, MonadHandler m) -> AForm m a areq a b = formToAForm . liftM (second return) . mreq a b +-- | Applicative equivalent of 'mopt'. aopt :: MonadHandler m => Field m a -> FieldSettings (HandlerSite m) @@ -218,7 +225,7 @@ postHelper form env = do _ === _ = False -- in order to avoid timing attacks. return ((res', xml), enctype) --- | Similar to 'runFormPost', except it always ignore the currently available +-- | Similar to 'runFormPost', except it always ignores the currently available -- environment. This is necessary in cases like a wizard UI, where a single -- page will both receive and incoming form and produce a new, blank form. For -- general usage, you can stick with @runFormPost@. From b8d47f880f1211fd59f1a7a267992f2d2a64bcf8 Mon Sep 17 00:00:00 2001 From: andrewthad Date: Wed, 28 Aug 2013 15:14:08 -0400 Subject: [PATCH 03/11] Added optionsPersistKey to Fields There is no immediately obvious way to use optionsPersist with selectField. The function optionsPersistKey makes this possible. Example of use: areq (selectField $ optionsPersistKey [] [Asc UserIdent] userIdent) "User" Nothing --- yesod-form/Yesod/Form/Fields.hs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/yesod-form/Yesod/Form/Fields.hs b/yesod-form/Yesod/Form/Fields.hs index bd675b56..a1e4a1c3 100644 --- a/yesod-form/Yesod/Form/Fields.hs +++ b/yesod-form/Yesod/Form/Fields.hs @@ -42,6 +42,7 @@ module Yesod.Form.Fields , OptionList (..) , mkOptionList , optionsPersist + , optionsPersistKey , optionsPairs , optionsEnum ) where @@ -513,6 +514,27 @@ optionsPersist filts ords toDisplay = fmap mkOptionList $ do , optionExternalValue = toPathPiece key }) pairs +optionsPersistKey + :: (YesodPersist site + , PersistEntity a + , PersistQuery (YesodPersistBackend site (HandlerT site IO)) + , PathPiece (Key a) + , RenderMessage site msg + , PersistEntityBackend a ~ PersistMonadBackend (YesodDB site)) + => [Filter a] + -> [SelectOpt a] + -> (a -> msg) + -> HandlerT site IO (OptionList (Key a)) + +optionsPersistKey filts ords toDisplay = fmap mkOptionList $ do + mr <- getMessageRender + pairs <- runDB $ selectList filts ords + return $ Import.map (\(Entity key value) -> Option + { optionDisplay = mr (toDisplay value) + , optionInternalValue = key + , optionExternalValue = toPathPiece key + }) pairs + selectFieldHelper :: (Eq a, RenderMessage site FormMessage) => (Text -> Text -> [(Text, Text)] -> WidgetT site IO () -> WidgetT site IO ()) From c9791bd2c769cae97d72a9b3263e5a63d694e8dc Mon Sep 17 00:00:00 2001 From: andrewthad Date: Fri, 30 Aug 2013 12:21:40 -0400 Subject: [PATCH 04/11] Update Fields.hs --- yesod-form/Yesod/Form/Fields.hs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/yesod-form/Yesod/Form/Fields.hs b/yesod-form/Yesod/Form/Fields.hs index a1e4a1c3..e34e2e4e 100644 --- a/yesod-form/Yesod/Form/Fields.hs +++ b/yesod-form/Yesod/Form/Fields.hs @@ -87,6 +87,8 @@ import Control.Applicative ((<$>), (<|>)) import Data.Attoparsec.Text (Parser, char, string, digit, skipSpace, endOfInput, parseOnly) +import Yesod.Persist.Core + defaultFormMessage :: FormMessage -> Text defaultFormMessage = englishFormMessage From 44f7cf0bf04ccc73b5cbe214e2f43205299dc770 Mon Sep 17 00:00:00 2001 From: Fredrik Carlen Date: Sat, 31 Aug 2013 10:56:56 +0200 Subject: [PATCH 05/11] Changed description of hsenv - `hsenv` works on Mac OS X also (at least Lion and Mountain lion). - supplied link to forked, working version of `hsenv` at https://github.com/tmhedberg/hsenv --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5098481a..afceadd7 100644 --- a/README.md +++ b/README.md @@ -62,9 +62,9 @@ If you aren't building from an application, remove the `./` and create a new dir -## hsenv (Linux only) +## hsenv (Linux and Mac OS X) -[hsenv](http://hackage.haskell.org/package/hsenv) prevents your custom build of Yesod from interfering with your currently installed cabal packages: +[hsenv](https://github.com/tmhedberg/hsenv) prevents your custom build of Yesod from interfering with your currently installed cabal packages: * hsenv creates an isolated environment like cabal-dev * hsenv works at the shell level, so every shell must activate the hsenv From 94fd685046e49503ad96db5274eb1329c6702a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Sat, 31 Aug 2013 13:32:29 +0200 Subject: [PATCH 06/11] Add Czech translation for auth messages --- yesod-auth/Yesod/Auth/Message.hs | 40 +++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/yesod-auth/Yesod/Auth/Message.hs b/yesod-auth/Yesod/Auth/Message.hs index 085c496a..b919ffbe 100644 --- a/yesod-auth/Yesod/Auth/Message.hs +++ b/yesod-auth/Yesod/Auth/Message.hs @@ -14,6 +14,7 @@ module Yesod.Auth.Message , finnishMessage , chineseMessage , spanishMessage + , czechMessage ) where import Data.Monoid (mappend) @@ -473,4 +474,41 @@ chineseMessage SendPasswordResetEmail = "发送密码重置邮件" chineseMessage PasswordResetPrompt = "输入你的邮箱地址或用户名,你将收到一封密码重置邮件。" chineseMessage InvalidUsernamePass = "无效的用户名/密码组合" - +czechMessage :: AuthMessage -> Text +czechMessage NoOpenID = "Nebyl nalezen identifikátor OpenID" +czechMessage LoginOpenID = "Přihlásit přes OpenID" +czechMessage LoginGoogle = "Přihlásit přes Google" +czechMessage LoginYahoo = "Přihlásit přes Yahoo" +czechMessage Email = "E-mail" +czechMessage Password = "Heslo" +czechMessage Register = "Registrovat" +czechMessage RegisterLong = "Zaregistrovat nový účet" +czechMessage EnterEmail = "Níže zadejte svou e-mailovou adresu a bude vám poslán potvrzovací e-mail." +czechMessage ConfirmationEmailSentTitle = "Potvrzovací e-mail odeslán" +czechMessage (ConfirmationEmailSent email) = + "Potvrzovací e-mail byl odeslán na " `mappend` email `mappend` "." +czechMessage AddressVerified = "Adresa byla ověřena, prosím nastavte si nové heslo" +czechMessage InvalidKeyTitle = "Neplatný ověřovací klíč" +czechMessage InvalidKey = "Bohužel, ověřovací klíč je neplatný." +czechMessage InvalidEmailPass = "Neplatná kombinace e-mail/heslo" +czechMessage BadSetPass = "Pro nastavení hesla je vyžadováno přihlášení" +czechMessage SetPassTitle = "Nastavit heslo" +czechMessage SetPass = "Nastavit nové heslo" +czechMessage NewPass = "Nové heslo" +czechMessage ConfirmPass = "Potvrdit" +czechMessage PassMismatch = "Hesla si neodpovídají, zkuste to znovu" +czechMessage PassUpdated = "Heslo aktualizováno" +czechMessage Facebook = "Přihlásit přes Facebook" +czechMessage LoginViaEmail = "Přihlásit přes e-mail" +czechMessage InvalidLogin = "Neplatné přihlášení" +czechMessage NowLoggedIn = "Přihlášení proběhlo úspěšně" +czechMessage LoginTitle = "Přihlásit" +czechMessage PleaseProvideUsername = "Prosím, zadejte svoje uživatelské jméno" +czechMessage PleaseProvidePassword = "Prosím, zadejte svoje heslo" +czechMessage NoIdentifierProvided = "Nebyl poskytnut žádný e-mail nebo uživatelské jméno" +czechMessage InvalidEmailAddress = "Zadaná e-mailová adresa je neplatná" +czechMessage PasswordResetTitle = "Obnovení hesla" +czechMessage ProvideIdentifier = "E-mail nebo uživatelské jméno" +czechMessage SendPasswordResetEmail = "Poslat e-mail pro obnovení hesla" +czechMessage PasswordResetPrompt = "Zadejte svou e-mailovou adresu nebo uživatelské jméno a bude vám poslán email pro obnovení hesla." +czechMessage InvalidUsernamePass = "Neplatná kombinace uživatelského jména a hesla" From f0bef8005f7415fa026325c7f5484961e901d10d Mon Sep 17 00:00:00 2001 From: Alexey Kotlyarov Date: Sun, 1 Sep 2013 15:05:27 +1000 Subject: [PATCH 07/11] Update to cryptohash-cryptoapi Crypto.Hash.MD5 no longer exports the MD5 type, switch to cryptohash-cryptoapi. --- yesod-static/Yesod/Static.hs | 2 +- yesod-static/yesod-static.cabal | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/yesod-static/Yesod/Static.hs b/yesod-static/Yesod/Static.hs index 3516fa58..c8949f17 100644 --- a/yesod-static/Yesod/Static.hs +++ b/yesod-static/Yesod/Static.hs @@ -73,7 +73,7 @@ import Language.Haskell.TH import Language.Haskell.TH.Syntax as TH import Crypto.Conduit (hashFile, sinkHash) -import Crypto.Hash.MD5 (MD5) +import Crypto.Hash.CryptoAPI (MD5) import Control.Monad.Trans.State import qualified Data.ByteString.Base64 diff --git a/yesod-static/yesod-static.cabal b/yesod-static/yesod-static.cabal index 62e819e9..99cc4897 100644 --- a/yesod-static/yesod-static.cabal +++ b/yesod-static/yesod-static.cabal @@ -38,7 +38,7 @@ library , unix-compat >= 0.2 , conduit >= 0.5 , crypto-conduit >= 0.4 - , cryptohash >= 0.6.1 + , cryptohash-cryptoapi >= 0.1.0 , system-filepath >= 0.4.6 && < 0.5 , system-fileio >= 0.3 , data-default @@ -71,7 +71,7 @@ test-suite tests , unix-compat , conduit , crypto-conduit - , cryptohash + , cryptohash-cryptoapi , system-filepath , system-fileio , data-default From 56424898414ec321073f2f5a65fcc909a304e9d3 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Sun, 1 Sep 2013 16:15:03 +0300 Subject: [PATCH 08/11] Minor tweaks for #590 --- yesod-form/Yesod/Form/Fields.hs | 6 +++++- yesod-form/yesod-form.cabal | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/yesod-form/Yesod/Form/Fields.hs b/yesod-form/Yesod/Form/Fields.hs index e34e2e4e..d2aecf8a 100644 --- a/yesod-form/Yesod/Form/Fields.hs +++ b/yesod-form/Yesod/Form/Fields.hs @@ -516,6 +516,10 @@ optionsPersist filts ords toDisplay = fmap mkOptionList $ do , optionExternalValue = toPathPiece key }) pairs +-- | An alternative to 'optionsPersist' which returns just the @Key@ instead of +-- the entire @Entity@. +-- +-- Since 1.3.2 optionsPersistKey :: (YesodPersist site , PersistEntity a @@ -531,7 +535,7 @@ optionsPersistKey optionsPersistKey filts ords toDisplay = fmap mkOptionList $ do mr <- getMessageRender pairs <- runDB $ selectList filts ords - return $ Import.map (\(Entity key value) -> Option + return $ map (\(Entity key value) -> Option { optionDisplay = mr (toDisplay value) , optionInternalValue = key , optionExternalValue = toPathPiece key diff --git a/yesod-form/yesod-form.cabal b/yesod-form/yesod-form.cabal index a6c447f8..7767c390 100644 --- a/yesod-form/yesod-form.cabal +++ b/yesod-form/yesod-form.cabal @@ -1,5 +1,5 @@ name: yesod-form -version: 1.3.1 +version: 1.3.2 license: MIT license-file: LICENSE author: Michael Snoyman From e29cd12ff88c082c7ce789da7588b9f1782f7226 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Sun, 8 Sep 2013 10:46:37 +0200 Subject: [PATCH 09/11] Version bumps --- yesod-bin/yesod-bin.cabal | 2 +- yesod-core/yesod-core.cabal | 2 +- yesod-static/yesod-static.cabal | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/yesod-bin/yesod-bin.cabal b/yesod-bin/yesod-bin.cabal index f79855c4..a538b3a3 100644 --- a/yesod-bin/yesod-bin.cabal +++ b/yesod-bin/yesod-bin.cabal @@ -1,5 +1,5 @@ name: yesod-bin -version: 1.2.2.1 +version: 1.2.3 license: MIT license-file: LICENSE author: Michael Snoyman diff --git a/yesod-core/yesod-core.cabal b/yesod-core/yesod-core.cabal index ce3217e3..0381abe1 100644 --- a/yesod-core/yesod-core.cabal +++ b/yesod-core/yesod-core.cabal @@ -1,5 +1,5 @@ name: yesod-core -version: 1.2.4 +version: 1.2.4.1 license: MIT license-file: LICENSE author: Michael Snoyman diff --git a/yesod-static/yesod-static.cabal b/yesod-static/yesod-static.cabal index 99cc4897..f0d4db22 100644 --- a/yesod-static/yesod-static.cabal +++ b/yesod-static/yesod-static.cabal @@ -1,5 +1,5 @@ name: yesod-static -version: 1.2.0 +version: 1.2.0.1 license: MIT license-file: LICENSE author: Michael Snoyman From 1005c3f009ea515d55fc380947e02cce6e2eeb69 Mon Sep 17 00:00:00 2001 From: Arash Rouhani Date: Sun, 8 Sep 2013 12:08:01 +0200 Subject: [PATCH 10/11] Update README.md --- yesod/README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/yesod/README.md b/yesod/README.md index 9bc0e040..219f92d2 100644 --- a/yesod/README.md +++ b/yesod/README.md @@ -1,11 +1,8 @@ # Overview -The yesod package +The yesod package groups together the various Yesod related packages into one cohesive whole. -* groups together the various Yesod related packages into one cohesive whole. -* contains the executable yesod - * yesod devel - start a development environment - * yesod init - create a scaffolded site +For the yesod executeable, see [yesod-bin](/yesod-bin) # Scaffolding From e4c39d22bb73753e6d73fe64019632f02c10a715 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Sun, 8 Sep 2013 13:08:59 +0200 Subject: [PATCH 11/11] yesod-platform update --- yesod-platform/yesod-platform.cabal | 85 +++++++++++++++-------------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/yesod-platform/yesod-platform.cabal b/yesod-platform/yesod-platform.cabal index ffbe374a..22c18273 100644 --- a/yesod-platform/yesod-platform.cabal +++ b/yesod-platform/yesod-platform.cabal @@ -1,5 +1,5 @@ name: yesod-platform -version: 1.2.3 +version: 1.2.4 license: MIT license-file: LICENSE author: Michael Snoyman @@ -15,7 +15,7 @@ homepage: http://www.yesodweb.com/ library build-depends: base >= 4 && < 5 , SHA == 1.6.1 - , aeson == 0.6.1.0 + , aeson == 0.6.2.0 , ansi-terminal == 0.6 , asn1-data == 0.7.1 , asn1-types == 0.2.0 @@ -30,22 +30,24 @@ library , blaze-markup == 0.5.1.5 , byteable == 0.1.1 , byteorder == 1.0.4 - , case-insensitive == 1.0.0.2 + , case-insensitive == 1.1 , cereal == 0.3.5.2 , certificate == 1.3.8 - , cipher-aes == 0.1.8 + , cipher-aes == 0.2.5 , cipher-rc4 == 0.1.2 - , clientsession == 0.9 - , conduit == 1.0.7.3 + , clientsession == 0.9.0.3 + , conduit == 1.0.7.4 , cookie == 0.4.0.1 - , cprng-aes == 0.3.4 - , crypto-api == 0.12.2.1 + , cprng-aes == 0.5.2 + , crypto-api == 0.12.2.2 + , crypto-cipher-types == 0.0.4 , crypto-conduit == 0.5.2 - , crypto-numbers == 0.1.3 - , crypto-pubkey == 0.1.4 + , crypto-numbers == 0.2.1 + , crypto-pubkey == 0.2.1 , crypto-pubkey-types == 0.4.0 - , crypto-random-api == 0.2.0 - , cryptohash == 0.9.1 + , crypto-random == 0.0.7 + , cryptohash == 0.10.0 + , cryptohash-cryptoapi == 0.1.0 , css-text == 0.1.1 , data-default == 0.5.3 , data-default-class == 0.0.1 @@ -56,23 +58,23 @@ library , date-cache == 0.3.0 , dlist == 0.5 , email-validate == 1.0.0 - , entropy == 0.2.2.1 + , entropy == 0.2.2.2 , failure == 0.2.0.1 - , fast-logger == 0.3.2 + , fast-logger == 0.3.3 , file-embed == 0.0.4.9 , filesystem-conduit == 1.0.0.1 , hamlet == 1.1.7.1 , hjsmin == 0.1.4.1 - , hspec == 1.6.1 - , hspec-expectations == 0.3.2 + , hspec == 1.7.2 + , hspec-expectations == 0.3.3 , html-conduit == 1.1.0 , http-attoparsec == 0.1.0 - , http-conduit == 1.9.4.1 + , http-conduit == 1.9.4.5 , http-date == 0.0.4 - , http-types == 0.8.0 + , http-types == 0.8.1 , language-javascript == 0.5.7 , lifted-base == 0.2.1.0 - , mime-mail == 0.4.2 + , mime-mail == 0.4.2.1 , mime-types == 0.1.0.3 , mmorph == 1.0.0 , monad-control == 0.3.2.1 @@ -80,7 +82,7 @@ library , network-conduit == 1.0.0 , path-pieces == 0.1.2 , pem == 0.1.2 - , persistent == 1.2.2.0 + , persistent == 1.2.3.0 , persistent-template == 1.2.0.2 , pool-conduit == 0.1.2 , primitive == 0.5.0.1 @@ -89,54 +91,55 @@ library , pwstore-fast == 2.3 , quickcheck-io == 0.1.0 , resource-pool == 0.2.1.1 - , resourcet == 0.4.7.1 + , resourcet == 0.4.8 , safe == 0.3.3 + , securemem == 0.1.3 , semigroups == 0.9.2 , setenv == 0.1.0 - , shakespeare == 1.0.5 + , shakespeare == 1.0.5.1 , shakespeare-css == 1.0.6.2 , shakespeare-i18n == 1.0.0.3 , shakespeare-js == 1.1.4.1 , shakespeare-text == 1.0.0.6 , silently == 1.2.4.1 , simple-sendfile == 0.2.12 - , skein == 1.0.3 + , skein == 1.0.6 , socks == 0.5.1 , stringsearch == 0.3.6.4 , system-fileio == 0.3.11 , system-filepath == 0.4.7 - , tagged == 0.6.1 - , tagsoup == 0.12.8 + , tagged == 0.7 + , tagsoup == 0.13 , tagstream-conduit == 0.5.4 - , tls == 1.1.2 - , tls-extra == 0.6.4 + , tls == 1.1.5 + , tls-extra == 0.6.5 , transformers-base == 0.4.1 , unix-compat == 0.4.1.1 - , unordered-containers == 0.2.3.1 + , unordered-containers == 0.2.3.2 , utf8-light == 0.4.0.1 , utf8-string == 0.3.7 - , vault == 0.2.0.4 + , vault == 0.3.0.0 , vector == 0.10.0.1 , void == 0.6.1 - , wai == 1.4.0.1 - , wai-app-static == 1.3.1.3 - , wai-extra == 1.3.4.2 + , wai == 1.4.0.2 + , wai-app-static == 1.3.1.4 + , wai-extra == 1.3.4.4 , wai-logger == 0.3.1 , wai-test == 1.3.1.1 - , warp == 1.3.9 + , warp == 1.3.9.2 , word8 == 0.0.3 - , xml-conduit == 1.1.0.5 + , xml-conduit == 1.1.0.7 , xml-types == 0.3.4 , xss-sanitize == 0.3.4 - , yaml == 0.8.4 - , yesod == 1.2.1.1 - , yesod-auth == 1.2.0.2 - , yesod-core == 1.2.3 - , yesod-form == 1.3.0.1 + , yaml == 0.8.4.1 + , yesod == 1.2.2 + , yesod-auth == 1.2.2 + , yesod-core == 1.2.4.1 + , yesod-form == 1.3.2 , yesod-persistent == 1.2.1 , yesod-routes == 1.2.0.1 - , yesod-static == 1.2.0 - , yesod-test == 1.2.0 + , yesod-static == 1.2.0.1 + , yesod-test == 1.2.1 , zlib-bindings == 0.1.1.3 , zlib-conduit == 1.0.0