Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ghc-brick for openSUSE:Factory checked in at 2024-07-22 17:16:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-brick (Old) and /work/SRC/openSUSE:Factory/.ghc-brick.new.17339 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-brick" Mon Jul 22 17:16:07 2024 rev:29 rq:1188624 version:2.3.2 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-brick/ghc-brick.changes 2024-03-20 21:15:48.297212144 +0100 +++ /work/SRC/openSUSE:Factory/.ghc-brick.new.17339/ghc-brick.changes 2024-07-22 17:16:40.070084960 +0200 @@ -1,0 +2,18 @@ +Sun Jun 30 16:04:50 UTC 2024 - Peter Simons <psim...@suse.com> + +- Update brick to version 2.3.2. + 2.3.2 + ----- + + Bug fixes: + * `FileBrowser`: if the `FileBrowser` was initialized with a `FilePath` + that ended in a slash, then if the user hit `Enter` on the `../` entry + to move to the parent directory, the only effect was the removal of + that trailing slash. This change trims the trailing slash so that the + expected move occurs whenever the `../` entry is selected. + * `Brick.Keybindings.Pretty.keybindingHelpWidget`: fixed a problem where + a key event with no name in a `KeyEvents` would cause a `fromJust` + exception. The pretty-printer now falls back to a placeholder + representation for such unnamed key events. + +------------------------------------------------------------------- Old: ---- brick-2.3.1.tar.gz New: ---- brick-2.3.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-brick.spec ++++++ --- /var/tmp/diff_new_pack.GB0j0a/_old 2024-07-22 17:16:41.458140811 +0200 +++ /var/tmp/diff_new_pack.GB0j0a/_new 2024-07-22 17:16:41.462140972 +0200 @@ -1,7 +1,7 @@ # # spec file for package ghc-brick # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,12 +20,13 @@ %global pkgver %{pkg_name}-%{version} %bcond_with tests Name: ghc-%{pkg_name} -Version: 2.3.1 +Version: 2.3.2 Release: 0 Summary: A declarative terminal user interface library License: BSD-3-Clause URL: https://hackage.haskell.org/package/%{pkg_name} Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz +BuildRequires: chrpath BuildRequires: ghc-Cabal-devel BuildRequires: ghc-base-devel BuildRequires: ghc-base-prof @@ -66,6 +67,8 @@ BuildRequires: ghc-text-zipper-prof BuildRequires: ghc-unix-compat-devel BuildRequires: ghc-unix-compat-prof +BuildRequires: ghc-unix-devel +BuildRequires: ghc-unix-prof BuildRequires: ghc-vector-devel BuildRequires: ghc-vector-prof BuildRequires: ghc-vty-crossplatform-devel @@ -132,6 +135,7 @@ %install %ghc_lib_install +%ghc_fix_rpath %{pkg_name}-%{version} %check %cabal_test @@ -144,6 +148,7 @@ %files -f %{name}.files %license LICENSE +%{_bindir}/brick-unix-suspend-demo %files devel -f %{name}-devel.files %doc CHANGELOG.md README.md docs ++++++ brick-2.3.1.tar.gz -> brick-2.3.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-2.3.1/CHANGELOG.md new/brick-2.3.2/CHANGELOG.md --- old/brick-2.3.1/CHANGELOG.md 2001-09-09 03:46:40.000000000 +0200 +++ new/brick-2.3.2/CHANGELOG.md 2001-09-09 03:46:40.000000000 +0200 @@ -2,6 +2,20 @@ Brick changelog --------------- +2.3.2 +----- + +Bug fixes: +* `FileBrowser`: if the `FileBrowser` was initialized with a `FilePath` + that ended in a slash, then if the user hit `Enter` on the `../` entry + to move to the parent directory, the only effect was the removal of + that trailing slash. This change trims the trailing slash so that the + expected move occurs whenever the `../` entry is selected. +* `Brick.Keybindings.Pretty.keybindingHelpWidget`: fixed a problem where + a key event with no name in a `KeyEvents` would cause a `fromJust` + exception. The pretty-printer now falls back to a placeholder + representation for such unnamed key events. + 2.3.1 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-2.3.1/README.md new/brick-2.3.2/README.md --- old/brick-2.3.1/README.md 2001-09-09 03:46:40.000000000 +0200 +++ new/brick-2.3.2/README.md 2001-09-09 03:46:40.000000000 +0200 @@ -50,54 +50,56 @@ | Project | Description | | ------- | ----------- | -| [`tetris`](https://github.com/SamTay/tetris) | An implementation of the Tetris game | -| [`gotta-go-fast`](https://github.com/callum-oakley/gotta-go-fast) | A typing tutor | -| [`haskell-player`](https://github.com/potomak/haskell-player) | An `afplay` frontend | -| [`mushu`](https://github.com/elaye/mushu) | An `MPD` client | -| [`matterhorn`](https://github.com/matterhorn-chat/matterhorn) | A client for [Mattermost](https://about.mattermost.com/) | -| [`viewprof`](https://github.com/maoe/viewprof) | A GHC profile viewer | -| [`tart`](https://github.com/jtdaugherty/tart) | A mouse-driven ASCII art drawing program | -| [`silly-joy`](https://github.com/rootmos/silly-joy) | An interpreter for Joy | -| [`herms`](https://github.com/jackkiefer/herms) | A command-line tool for managing kitchen recipes | -| [`purebred`](https://github.com/purebred-mua/purebred) | A mail user agent | | [`2048Haskell`](https://github.com/8Gitbrix/2048Haskell) | An implementation of the 2048 game | +| [`babel-cards`](https://github.com/srhoulam/babel-cards) | A TUI spaced-repetition memorization tool. Similar to Anki. | | [`bhoogle`](https://github.com/andrevdm/bhoogle) | A [Hoogle](https://www.haskell.org/hoogle/) client | +| [`brewsage`](https://github.com/gerdreiss/brewsage#readme) | A TUI for Homebrew | +| [`brick-trading-journal`](https://codeberg.org/amano.kenji/brick-trading-journal) | A TUI program that calculates basic statistics from trades | +| [`Brickudoku`](https://github.com/Thecentury/brickudoku) | A hybrid of Tetris and Sudoku | +| [`cbookview`](https://github.com/mlang/chessIO) | A TUI for exploring polyglot chess opening book files | | [`clifm`](https://github.com/pasqu4le/clifm) | A file manager | -| [`towerHanoi`](https://github.com/shajenM/projects/tree/master/towerHanoi) | Animated solutions to The Tower of Hanoi | -| [`VOIDSPACE`](https://github.com/ChrisPenner/void-space) | A space-themed typing-tutor game | -| [`solitaire`](https://github.com/ambuc/solitaire) | The card game | -| [`sudoku-tui`](https://github.com/evanrelf/sudoku-tui) | A Sudoku implementation | -| [`summoner-tui`](https://github.com/kowainik/summoner/tree/master/summoner-tui) | An interactive frontend to the Summoner tool | -| [`wrapping-editor`](https://github.com/ta0kira/wrapping-editor) | An embeddable editor with support for Brick | +| [`codenames-haskell`](https://github.com/VigneshN1997/codenames-haskell) | An implementation of the Codenames game | +| [`fifteen`](https://github.com/benjaminselfridge/fifteen) | An implementation of the [15 puzzle](https://en.wikipedia.org/wiki/15_puzzle) | +| [`ghcup`](https://www.haskell.org/ghcup/) | A TUI for `ghcup`, the Haskell toolchain manager | | [`git-brunch`](https://github.com/andys8/git-brunch) | A git branch checkout utility | +| [`Giter`](https://gitlab.com/refaelsh/giter) | A UI wrapper around Git CLI inspired by [Magit](https://magit.vc/). | +| [`gotta-go-fast`](https://github.com/callum-oakley/gotta-go-fast) | A typing tutor | +| [`haradict`](https://github.com/srhoulam/haradict) | A TUI Arabic dictionary powered by [ElixirFM](https://github.com/otakar-smrz/elixir-fm) | | [`hascard`](https://github.com/Yvee1/hascard) | A program for reviewing "flash card" notes | -| [`ttyme`](https://github.com/evuez/ttyme) | A TUI for [Harvest](https://www.getharvest.com/) | -| [`ghcup`](https://www.haskell.org/ghcup/) | A TUI for `ghcup`, the Haskell toolchain manager | -| [`cbookview`](https://github.com/mlang/chessIO) | A TUI for exploring polyglot chess opening book files | -| [`thock`](https://github.com/rmehri01/thock) | A modern TUI typing game featuring online racing against friends | -| [`fifteen`](https://github.com/benjaminselfridge/fifteen) | An implementation of the [15 puzzle](https://en.wikipedia.org/wiki/15_puzzle) | +| [`haskell-player`](https://github.com/potomak/haskell-player) | An `afplay` frontend | +| [`herms`](https://github.com/jackkiefer/herms) | A command-line tool for managing kitchen recipes | +| [`hic-hac-hoe`](https://github.com/blastwind/hic-hac-hoe) | Play tic tac toe in terminal! | +| [`hledger-iadd`](http://github.com/rootzlevel/hledger-iadd) | An interactive terminal UI for adding hledger journal entries | +| [`hledger-ui`](https://github.com/simonmichael/hledger) | A terminal UI for the hledger accounting system. | +| [`homodoro`](https://github.com/c0nradLC/homodoro) | A terminal application to use the pomodoro technique and keep track of daily tasks | +| [`htyper`](https://github.com/Simon-Hostettler/htyper) | A typing speed test program | +| [`hyahtzee2`](https://github.com/DamienCassou/hyahtzee2#readme) | Famous Yahtzee dice game | +| [`kpxhs`](https://github.com/akazukin5151/kpxhs) | An interactive [Keepass](https://github.com/keepassxreboot/keepassxc/) database viewer | +| [`matterhorn`](https://github.com/matterhorn-chat/matterhorn) | A client for [Mattermost](https://about.mattermost.com/) | | [`maze`](https://github.com/benjaminselfridge/maze) | A Brick-based maze game | +| [`monalog`](https://github.com/goosedb/Monalog) | Terminal logs observer | +| [`mushu`](https://github.com/elaye/mushu) | An `MPD` client | +| [`mywork`](https://github.com/kquick/mywork) [[Hackage]](https://hackage.haskell.org/package/mywork) | A tool to keep track of the projects you are working on | | [`pboy`](https://github.com/2mol/pboy) | A tiny PDF organizer | -| [`hyahtzee2`](https://github.com/DamienCassou/hyahtzee2#readme) | Famous Yahtzee dice game | -| [`brewsage`](https://github.com/gerdreiss/brewsage#readme) | A TUI for Homebrew | +| [`purebred`](https://github.com/purebred-mua/purebred) | A mail user agent | | [`sandwich`](https://codedownio.github.io/sandwich/) | A test framework with a TUI interface | -| [`youbrick`](https://github.com/florentc/youbrick) | A feed aggregator and launcher for Youtube channels | +| [`silly-joy`](https://github.com/rootmos/silly-joy) | An interpreter for Joy | +| [`solitaire`](https://github.com/ambuc/solitaire) | The card game | +| [`sudoku-tui`](https://github.com/evanrelf/sudoku-tui) | A Sudoku implementation | +| [`summoner-tui`](https://github.com/kowainik/summoner/tree/master/summoner-tui) | An interactive frontend to the Summoner tool | | [`swarm`](https://github.com/byorgey/swarm/) | A 2D programming and resource gathering game | -| [`hledger-ui`](https://github.com/simonmichael/hledger) | A terminal UI for the hledger accounting system. | -| [`hledger-iadd`](http://github.com/rootzlevel/hledger-iadd) | An interactive terminal UI for adding hledger journal entries | -| [`wordle`](https://github.com/ivanjermakov/wordle) | An implementation of the Wordle game | -| [`kpxhs`](https://github.com/akazukin5151/kpxhs) | An interactive [Keepass](https://github.com/keepassxreboot/keepassxc/) database viewer | -| [`htyper`](https://github.com/Simon-Hostettler/htyper) | A typing speed test program | -| [`ullekha`](https://github.com/ajithnn/ullekha) | An interactive terminal notes/todo app with file/redis persistence | -| [`mywork`](https://github.com/kquick/mywork) [[Hackage]](https://hackage.haskell.org/package/mywork) | A tool to keep track of the projects you are working on | -| [`hic-hac-hoe`](https://github.com/blastwind/hic-hac-hoe) | Play tic tac toe in terminal! | -| [`babel-cards`](https://github.com/srhoulam/babel-cards) | A TUI spaced-repetition memorization tool. Similar to Anki. | -| [`codenames-haskell`](https://github.com/VigneshN1997/codenames-haskell) | An implementation of the Codenames game | -| [`haradict`](https://github.com/srhoulam/haradict) | A TUI Arabic dictionary powered by [ElixirFM](https://github.com/otakar-smrz/elixir-fm) | -| [`Giter`](https://gitlab.com/refaelsh/giter) | A UI wrapper around Git CLI inspired by [Magit](https://magit.vc/). | -| [`Brickudoku`](https://github.com/Thecentury/brickudoku) | A hybrid of Tetris and Sudoku | +| [`tart`](https://github.com/jtdaugherty/tart) | A mouse-driven ASCII art drawing program | +| [`tetris`](https://github.com/SamTay/tetris) | An implementation of the Tetris game | +| [`thock`](https://github.com/rmehri01/thock) | A modern TUI typing game featuring online racing against friends | | [`timeloop`](https://github.com/cdupont/timeloop) | A time-travelling demonstrator | -| [`brick-trading-journal`](https://codeberg.org/amano.kenji/brick-trading-journal) | A TUI program that calculates basic statistics from trades | +| [`towerHanoi`](https://github.com/shajenM/projects/tree/master/towerHanoi) | Animated solutions to The Tower of Hanoi | +| [`ttyme`](https://github.com/evuez/ttyme) | A TUI for [Harvest](https://www.getharvest.com/) | +| [`ullekha`](https://github.com/ajithnn/ullekha) | An interactive terminal notes/todo app with file/redis persistence | +| [`viewprof`](https://github.com/maoe/viewprof) | A GHC profile viewer | +| [`VOIDSPACE`](https://github.com/ChrisPenner/void-space) | A space-themed typing-tutor game | +| [`wordle`](https://github.com/ivanjermakov/wordle) | An implementation of the Wordle game | +| [`wrapping-editor`](https://github.com/ta0kira/wrapping-editor) | An embeddable editor with support for Brick | +| [`youbrick`](https://github.com/florentc/youbrick) | A feed aggregator and launcher for Youtube channels | These third-party packages also extend `brick`: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-2.3.1/brick.cabal new/brick-2.3.2/brick.cabal --- old/brick-2.3.1/brick.cabal 2001-09-09 03:46:40.000000000 +0200 +++ new/brick-2.3.2/brick.cabal 2001-09-09 03:46:40.000000000 +0200 @@ -1,5 +1,5 @@ name: brick -version: 2.3.1 +version: 2.3.2 synopsis: A declarative terminal user interface library description: Write terminal user interfaces (TUIs) painlessly with 'brick'! You @@ -32,13 +32,22 @@ license-file: LICENSE author: Jonathan Daugherty <cyg...@foobox.com> maintainer: Jonathan Daugherty <cyg...@foobox.com> -copyright: (c) Jonathan Daugherty 2015-2023 +copyright: (c) Jonathan Daugherty 2015-2024 category: Graphics build-type: Simple cabal-version: 1.18 Homepage: https://github.com/jtdaugherty/brick/ Bug-reports: https://github.com/jtdaugherty/brick/issues -tested-with: GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.4, GHC == 9.4.2 +tested-with: GHC == 8.2.2 + || == 8.4.4 + || == 8.6.5 + || == 8.8.4 + || == 8.10.7 + || == 9.0.2 + || == 9.2.8 + || == 9.4.8 + || == 9.6.3 + || == 9.8.1 extra-doc-files: README.md, docs/guide.rst, @@ -484,6 +493,22 @@ text, microlens +executable brick-unix-suspend-demo + hs-source-dirs: programs + ghc-options: -threaded -Wall -Wcompat -O2 + default-language: Haskell2010 + main-is: UnixSuspendDemo.hs + build-depends: base, + brick, + vty, + text, + vector, + mtl, + microlens >= 0.3.0.0, + microlens-th, + microlens-mtl, + unix + executable brick-edit-demo if !flag(demos) Buildable: False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-2.3.1/programs/UnixSuspendDemo.hs new/brick-2.3.2/programs/UnixSuspendDemo.hs --- old/brick-2.3.1/programs/UnixSuspendDemo.hs 1970-01-01 01:00:00.000000000 +0100 +++ new/brick-2.3.2/programs/UnixSuspendDemo.hs 2001-09-09 03:46:40.000000000 +0200 @@ -0,0 +1,33 @@ +module Main where + +import qualified Graphics.Vty as V + +import qualified Brick.Main as M +import qualified Brick.Types as T +import Brick.Widgets.Core (str) +import qualified Brick.AttrMap as A +import System.Posix.Signals + +drawUI :: () -> [T.Widget ()] +drawUI () = [str "Press C-z to suspend or any other key to quit"] + +appEvent :: T.BrickEvent () e -> T.EventM () () () +appEvent (T.VtyEvent (V.EvKey (V.KChar 'z') [V.MCtrl])) = do + st <- T.get + M.suspendAndResume $ do + raiseSignal keyboardStop + return st +appEvent _ = + M.halt + +theApp :: M.App () e () +theApp = + M.App { M.appDraw = drawUI + , M.appChooseCursor = M.neverShowCursor + , M.appHandleEvent = appEvent + , M.appStartEvent = return () + , M.appAttrMap = const $ A.attrMap V.defAttr [] + } + +main :: IO () +main = M.defaultMain theApp () diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-2.3.1/src/Brick/Keybindings/Pretty.hs new/brick-2.3.2/src/Brick/Keybindings/Pretty.hs --- old/brick-2.3.1/src/Brick/Keybindings/Pretty.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/brick-2.3.2/src/Brick/Keybindings/Pretty.hs 2001-09-09 03:46:40.000000000 +0200 @@ -25,7 +25,6 @@ import Brick import Data.List (sort, intersperse) -import Data.Maybe (fromJust) #if !(MIN_VERSION_base(4,11,0)) import Data.Monoid ((<>)) #endif @@ -124,19 +123,19 @@ ByKey b -> (Comment "(non-customizable key)", [Verbatim $ ppBinding b]) ByEvent ev -> - let name = fromJust $ keyEventName (keyConfigEvents kc) ev + let name = maybe (Comment "(unnamed)") Verbatim $ keyEventName (keyConfigEvents kc) ev in case lookupKeyConfigBindings kc ev of Nothing -> if not (null (allDefaultBindings kc ev)) - then (Verbatim name, Verbatim <$> ppBinding <$> allDefaultBindings kc ev) - else (Verbatim name, unbound) + then (name, Verbatim <$> ppBinding <$> allDefaultBindings kc ev) + else (name, unbound) Just Unbound -> - (Verbatim name, unbound) + (name, unbound) Just (BindingList bs) -> let result = if not (null bs) then Verbatim <$> ppBinding <$> bs else unbound - in (Verbatim name, result) + in (name, result) in (label, handlerDescription $ kehHandler h, evText) -- | Build a 'Widget' displaying key binding information for a single @@ -164,8 +163,8 @@ getText (Comment s) = s getText (Verbatim s) = s label = withDefAttr eventNameAttr $ case evName of - Comment s -> txt s -- TODO: was "; " <> s - Verbatim s -> txt s -- TODO: was: emph $ txt s + Comment s -> txt s + Verbatim s -> txt s in vBox [ withDefAttr eventDescriptionAttr $ txt desc , label <+> txt " = " <+> withDefAttr keybindingAttr (txt evText) ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/brick-2.3.1/src/Brick/Widgets/FileBrowser.hs new/brick-2.3.2/src/Brick/Widgets/FileBrowser.hs --- old/brick-2.3.1/src/Brick/Widgets/FileBrowser.hs 2001-09-09 03:46:40.000000000 +0200 +++ new/brick-2.3.2/src/Brick/Widgets/FileBrowser.hs 2001-09-09 03:46:40.000000000 +0200 @@ -154,7 +154,7 @@ import Data.Monoid #endif import Data.Int (Int64) -import Data.List (sortBy, isSuffixOf) +import Data.List (sortBy, isSuffixOf, dropWhileEnd) import qualified Data.Set as Set import qualified Data.Vector as V import Lens.Micro @@ -282,7 +282,7 @@ -> IO (FileBrowser n) newFileBrowser selPredicate name mCwd = do initialCwd <- FP.normalise <$> case mCwd of - Just path -> return path + Just path -> return $ removeTrailingSlash path Nothing -> D.getCurrentDirectory let b = FileBrowser { fileBrowserWorkingDirectory = initialCwd @@ -298,6 +298,22 @@ setWorkingDirectory initialCwd b +-- | Removes any trailing slash(es) from the supplied FilePath (which should +-- indicate a directory). This does not remove a sole slash indicating the root +-- directory. +-- +-- This is done because if the FileBrowser is initialized with an initial working +-- directory that ends in a slash, then selecting the "../" entry to move to the +-- parent directory will cause the removal of the trailing slash, but it will not +-- otherwise cause any change, misleading the user into thinking no action was +-- taken (the disappearance of the trailing slash is unlikely to be noticed). +-- All subsequent parent directory selection operations are processed normally, +-- and the 'fileBrowserWorkingDirectory' never ends in a trailing slash +-- thereafter (except at the root directory). +removeTrailingSlash :: FilePath -> FilePath +removeTrailingSlash "/" = "/" +removeTrailingSlash d = dropWhileEnd (== '/') d + -- | A file entry selector that permits selection of all file entries -- except directories. Use this if you want users to be able to navigate -- directories in the browser. If you want users to be able to select