glirc 2.25 → 2.26
raw patch · 9 files changed
+65/−16 lines, 9 filesdep ~basedep ~containersdep ~freesetup-changedPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, containers, free, kan-extensions, lens, network, semigroupoids, template-haskell, vty
API changes (from Hackage documentation)
- Client.Commands.Recognizer: instance Data.Semigroup.Semigroup (Client.Commands.Recognizer.Recognizer a)
- Client.Hook: instance Data.Semigroup.Semigroup Client.Hook.MessageResult
- Client.Image.PackedImage: instance Data.Semigroup.Semigroup Client.Image.PackedImage.Image'
+ Client.Commands.Recognizer: instance GHC.Base.Semigroup (Client.Commands.Recognizer.Recognizer a)
+ Client.Configuration: [_configShowPing] :: Configuration -> Bool
+ Client.Configuration: configShowPing :: Lens' Configuration Bool
+ Client.Hook: instance GHC.Base.Semigroup Client.Hook.MessageResult
+ Client.Image.PackedImage: instance GHC.Base.Semigroup Client.Image.PackedImage.Image'
+ Client.State: [_clientShowPing] :: ClientState -> !Bool
+ Client.State: clientShowPing :: Lens' ClientState Bool
- Client.Configuration: Configuration :: ServerSettings -> (HashMap Text ServerSettings) -> Palette -> Text -> HashSet Identifier -> PaddingMode -> Recognizer Macro -> [FilePath] -> Maybe FilePath -> [Text] -> Bool -> Bool -> Bool -> KeyMap -> LayoutMode -> [Modifier] -> Configuration
+ Client.Configuration: Configuration :: ServerSettings -> (HashMap Text ServerSettings) -> Palette -> Text -> HashSet Identifier -> PaddingMode -> Recognizer Macro -> [FilePath] -> Maybe FilePath -> [Text] -> Bool -> Bool -> Bool -> KeyMap -> LayoutMode -> Bool -> [Modifier] -> Configuration
- Client.Hook: MessageHook :: Text -> Bool -> (IrcMsg -> MessageResult) -> MessageHook
+ Client.Hook: MessageHook :: Text -> Bool -> IrcMsg -> MessageResult -> MessageHook
- Client.State: ClientState :: !(Map Focus Window) -> !Focus -> !Focus -> !Focus -> !Subfocus -> ![Focus] -> !(IntMap NetworkState) -> !(TQueue NetworkEvent) -> !(HashMap Text NetworkId) -> !Configuration -> !(Maybe FilePath) -> !EditBox -> !Int -> !Int -> !Int -> !Int -> !Bool -> !Bool -> Maybe Regex -> !LayoutMode -> !Bool -> !(HashSet Identifier) -> Mask -> !ExtensionState -> ![LogLine] -> Maybe Text -> Maybe Stats -> ClientState
+ Client.State: ClientState :: !(Map Focus Window) -> !Focus -> !Focus -> !Focus -> !Subfocus -> ![Focus] -> !(IntMap NetworkState) -> !(TQueue NetworkEvent) -> !(HashMap Text NetworkId) -> !Configuration -> !(Maybe FilePath) -> !EditBox -> !Int -> !Int -> !Int -> !Int -> !Bool -> !Bool -> !Bool -> Maybe Regex -> !LayoutMode -> !Bool -> !(HashSet Identifier) -> Mask -> !ExtensionState -> ![LogLine] -> Maybe Text -> Maybe Stats -> ClientState
- Client.State.EditBox: class HasLine c_a1bGv
+ Client.State.EditBox: class HasLine c_a17If
- Client.State.EditBox: line :: HasLine c_a1bGv => Lens' c_a1bGv Line
+ Client.State.EditBox: line :: HasLine c_a17If => Lens' c_a17If Line
- Client.State.EditBox: pos :: HasLine c_a1bGv => Lens' c_a1bGv Int
+ Client.State.EditBox: pos :: HasLine c_a17If => Lens' c_a17If Int
- Client.State.EditBox: text :: HasLine c_a1bGv => Lens' c_a1bGv String
+ Client.State.EditBox: text :: HasLine c_a17If => Lens' c_a17If String
- Client.State.EditBox.Content: class HasLine c_a1bGv
+ Client.State.EditBox.Content: class HasLine c_a17If
- Client.State.EditBox.Content: line :: HasLine c_a1bGv => Lens' c_a1bGv Line
+ Client.State.EditBox.Content: line :: HasLine c_a17If => Lens' c_a17If Line
- Client.State.EditBox.Content: pos :: HasLine c_a1bGv => Lens' c_a1bGv Int
+ Client.State.EditBox.Content: pos :: HasLine c_a17If => Lens' c_a17If Int
- Client.State.EditBox.Content: text :: HasLine c_a1bGv => Lens' c_a1bGv String
+ Client.State.EditBox.Content: text :: HasLine c_a17If => Lens' c_a17If String
Files
- ChangeLog.md +5/−0
- README.md +9/−1
- Setup.hs +19/−3
- glirc.cabal +7/−7
- src/Client/Commands.hs +9/−0
- src/Client/Configuration.hs +4/−0
- src/Client/Image/StatusLine.hs +5/−1
- src/Client/State.hs +3/−0
- src/Client/State/Network.hs +4/−4
ChangeLog.md view
@@ -1,5 +1,10 @@ # Revision history for glirc2 +## 2.26+* Updates for GHC 8.4.1+* Added `/toggle-show-ping` and `show-ping` configuration setting+ to toggle visibility of the ping roundtrip times.+ ## 2.25 * `/ignore` can list ignores and supports full wildcard masks * Updated C extension API
README.md view
@@ -283,6 +283,12 @@ * `/exec [-n network] [-c channel] <command> <arguments...>` - Execute a command, If no network or channel are provided send output to client window, if network and channel are provided send output as messages, if network is provided send output as raw IRC messages. * `/url [n]` - Execute url-opener on the nth URL in the current window (defaults to first) +View toggles+* `/toggle-detail` - toggle full detail view of messages+* `/toggle-activity-bar` - toggle channel names in activity bar+* `/toggle-metadata` - toggle visibility of channel metadata+* `/toggle-layout` - toggle split-screen layout between 1 and 2 column view+ Connection commands * `/nick <nick>` - Change nickname@@ -294,7 +300,8 @@ * `/focus <server>` - Change focus to server window * `/focus <server> <channel>` - Change focus to channel window * `/clear [network] [channel]` - Clear contents of current or specified window-* `/ignore <nick>` - Toggle ignore of a user+* `/ignore` - Show all ignore masks+* `/ignore <mask>...` - Toggle ignore status on a list of masks * `/channel <channel>` - Change focus to channel on current network (alias: `/c`) * `/splits [focuses...]` - Enable split-screen view. Focuses should be space delimited list of NETWORK:CHANNEL * `/splits+ [focuses...]` - Incremental addition to splits@@ -307,6 +314,7 @@ Chat commands +* `/query <target> [<msg>]` - Switch focus to target window on current server, optionally send message * `/msg <target> <msg>` - Send a message on the current server to target * `/notice <target> <msg>` - Send a notice message on the current server to target * `/ctcp <target> <command> <args>` - Send a ctcp command on the current server to target
Setup.hs view
@@ -35,7 +35,11 @@ import Distribution.Simple.BuildPaths (autogenModulesDir) #endif +#if MIN_VERSION_Cabal(2,2,0)+import qualified Distribution.SPDX as SPDX+#endif + -- | Default Setup main extended to generate a Build module and to validate -- the licenses of transitive dependencies. main :: IO ()@@ -148,15 +152,27 @@ [InstalledPackageInfo] {- ^ transitive package dependencies -} -> IO () validateLicenses pkgs =- do let p pkg = license pkg `notElem` freeLicenses+ do let p pkg = toLicense (license pkg) `notElem` freeLicenses badPkgs = filter p pkgs unless (null badPkgs) $- do mapM_ print badPkgs+ do mapM_ print [ toLicense (license p) | p <- badPkgs ] fail "BAD LICENSE" +class ToLicense a where toLicense :: a -> License+instance ToLicense License where toLicense = id +#if MIN_VERSION_Cabal(2,2,0)+instance (ToLicense a, ToLicense b) => ToLicense (Either a b) where+ toLicense (Right x) = toLicense x+ toLicense (Left x) = toLicense x+instance ToLicense SPDX.License where+ toLicense = licenseFromSPDX+#endif+++ -- | The set of permissive licenses that are acceptable for transitive dependencies -- of this package: BSD2, BSD3, ISC, MIT, PublicDomain freeLicenses :: [License]-freeLicenses = [BSD2, BSD3, ISC, MIT, PublicDomain]+freeLicenses = [BSD2, BSD3, ISC, MIT, PublicDomain, UnknownLicense "LicenseRefPublicDomain"]
glirc.cabal view
@@ -1,5 +1,5 @@ name: glirc-version: 2.25+version: 2.26 synopsis: Console IRC client description: Console IRC client .@@ -23,9 +23,9 @@ tested-with: GHC==8.0.2 custom-setup- setup-depends: base >=4.9 && <4.11,+ setup-depends: base >=4.9 && <4.12, filepath >=1.4 && <1.5,- Cabal >=1.24 && <2.1+ Cabal >=1.24 && <2.3 source-repository head type: git@@ -124,9 +124,9 @@ Paths_glirc Build_glirc - build-depends: base >=4.9 && <4.11,+ build-depends: base >=4.9 && <4.12, HsOpenSSL >=0.11 && <0.12,- async >=2.1 && <2.2,+ async >=2.1 && <2.3, attoparsec >=0.13 && <0.14, base64-bytestring >=1.0.0.1&& <1.1, bytestring >=0.10.8 && <0.11,@@ -149,14 +149,14 @@ socks >=0.5.5 && <0.6, split >=0.2 && <0.3, stm >=2.4 && <2.5,- template-haskell >=2.11 && <2.13,+ template-haskell >=2.11 && <2.14, text >=1.2.2 && <1.3, time >=1.6 && <1.10, transformers >=0.5.2 && <0.6, unix >=2.7 && <2.8, unordered-containers >=0.2.7 && <0.3, vector >=0.11 && <0.13,- vty >=5.11.1 && <5.20+ vty >=5.11.1 && <5.22 test-suite test type: exitcode-stdio-1.0
src/Client/Commands.hs view
@@ -420,6 +420,12 @@ $ ClientCommand cmdToggleActivityBar noClientTab , Command+ (pure "toggle-show-ping")+ (pure ())+ "Toggle visibility of ping round-trip time.\n"+ $ ClientCommand cmdToggleShowPing noClientTab++ , Command (pure "toggle-metadata") (pure ()) "Toggle visibility of metadata in chat windows.\n"@@ -1165,6 +1171,9 @@ cmdToggleActivityBar :: ClientCommand () cmdToggleActivityBar st _ = commandSuccess (over clientActivityBar not st)++cmdToggleShowPing :: ClientCommand ()+cmdToggleShowPing st _ = commandSuccess (over clientShowPing not st) cmdToggleMetadata :: ClientCommand () cmdToggleMetadata st _ = commandSuccess (clientToggleHideMeta st)
src/Client/Configuration.hs view
@@ -38,6 +38,7 @@ , configHideMeta , configKeyMap , configLayout+ , configShowPing , configJumpModifier -- * Loading configuration@@ -99,6 +100,7 @@ , _configHideMeta :: Bool -- ^ default setting for hidemeta on new windows , _configKeyMap :: KeyMap -- ^ keyboard bindings , _configLayout :: LayoutMode -- ^ Default layout on startup+ , _configShowPing :: Bool -- ^ visibility of ping time , _configJumpModifier :: [Modifier] -- ^ Modifier used for jumping windows } deriving Show@@ -286,6 +288,8 @@ "Extra key bindings" _configLayout <- sec' OneColumn "layout" layoutSpec "Initial setting for window layout"+ _configShowPing <- sec' True "show-ping" yesOrNoSpec+ "Initial setting for visibility of ping times" return (\def -> let _configDefaults = ssDefUpdate def _configServers = buildServerMap _configDefaults ssUpdates
src/Client/Image/StatusLine.hs view
@@ -56,8 +56,12 @@ , nometaImage (view clientFocus st) st , scrollImage st , filterImage st- , latencyImage st+ , latency ]++ latency+ | view clientShowPing st = latencyImage st+ | otherwise = mempty activity | view clientActivityBar st = activityBarImages st
src/Client/State.hs view
@@ -30,6 +30,7 @@ , clientScroll , clientDetailView , clientActivityBar+ , clientShowPing , clientSubfocus , clientNetworkMap , clientIgnores@@ -178,6 +179,7 @@ , _clientScroll :: !Int -- ^ buffer scroll lines , _clientDetailView :: !Bool -- ^ use detailed rendering mode , _clientActivityBar :: !Bool -- ^ visible activity bar+ , _clientShowPing :: !Bool -- ^ visible ping time , _clientRegex :: Maybe Regex -- ^ optional persistent filter , _clientLayout :: !LayoutMode -- ^ layout mode for split screen @@ -268,6 +270,7 @@ , _clientRegex = Nothing , _clientLayout = view configLayout cfg , _clientActivityBar = view configActivityBar cfg+ , _clientShowPing = view configShowPing cfg , _clientBell = False , _clientExtensions = exts , _clientLogQueue = []
src/Client/State/Network.hs view
@@ -129,10 +129,10 @@ -- | State of the authentication transaction data AuthenticateState- = AS_None -- ^ no active transaction- | AS_PlainStarted -- ^ PLAIN mode initiated- | AS_EcdsaStarted -- ^ ECDSA-NIST mode initiated- | AS_EcdsaWaitChallenge -- ^ ECDSA_NIST user sent waiting for challenge+ = AS_None -- ^ no active transaction+ | AS_PlainStarted -- ^ PLAIN mode initiated+ | AS_EcdsaStarted -- ^ ECDSA-NIST mode initiated+ | AS_EcdsaWaitChallenge -- ^ ECDSA-NIST user sent waiting for challenge deriving Show -- | Pair of username and hostname. Empty strings represent missing information.