diff -ru orig/src/Graphics/UI/Threepenny/Internal/Driver.hs new/src/Graphics/UI/Threepenny/Internal/Driver.hs --- orig/src/Graphics/UI/Threepenny/Internal/Driver.hs 2014-03-13 10:29:00.049732639 +0200 +++ new/src/Graphics/UI/Threepenny/Internal/Driver.hs 2014-03-13 10:28:59.000000000 +0200 @@ -248,7 +248,7 @@ signal Session{..} = do input <- getParam "signal" let err = error $ "Unable to parse " ++ show input - case JSON.decode . LBS.fromStrict =<< input of + case JSON.decode . LBS.fromChunks . return =<< input of Just signal -> liftIO $ writeChan sSignals signal Nothing -> err diff -ru orig/src/Graphics/UI/Threepenny/Internal/Types.hs new/src/Graphics/UI/Threepenny/Internal/Types.hs --- orig/src/Graphics/UI/Threepenny/Internal/Types.hs 2014-03-13 10:29:00.049732639 +0200 +++ new/src/Graphics/UI/Threepenny/Internal/Types.hs 2014-03-13 10:28:59.000000000 +0200 @@ -17,6 +17,7 @@ import Data.Map (Map) import Data.String (fromString) import Data.Time +import Data.Text.Encoding (encodeUtf8, decodeUtf8) import Network.URI import Data.Data @@ -62,9 +63,9 @@ -- Marshalling ElementId instance ToJSON ElementId where - toJSON (ElementId o) = toJSON o + toJSON (ElementId o) = toJSON $ decodeUtf8 o instance FromJSON ElementId where - parseJSON (Object v) = ElementId <$> v .: "Element" + parseJSON (Object v) = (ElementId . encodeUtf8) <$> v .: "Element" parseJSON _ = mzero diff -ru orig/threepenny-gui.cabal new/threepenny-gui.cabal --- orig/threepenny-gui.cabal 2014-03-13 10:29:00.057732639 +0200 +++ new/threepenny-gui.cabal 2014-03-13 10:28:59.000000000 +0200 @@ -92,7 +92,7 @@ cpp-options: -DREBUG ghc-options: -O2 build-depends: base >= 4 && < 5 - ,aeson == 0.6.* + ,aeson >= 0.6 ,attoparsec-enumerator == 0.3.* ,bytestring >= 0.9.2 && < 0.11 ,containers >= 0.4.2 && < 0.6