%bcond docs 1 %bcond tests 1 # The libipuz shared library version %global ipuz_soversion 0.5 Name: crosswords Version: 0.3.18.10.20.3 Release: 1.20260820002805814022.main.204.g2855be24%{?dist} Summary: Solve crossword puzzles # * crosswords itself is GPL-3.0-or-later # * the puzzle sets it bundles are CC-BY-SA-4.0 # * the broda word list is LicenseRef-Fedora-UltraPermissive per # https://gitlab.com/fedora/legal/fedora-license-data/-/issues/627 # * the wordnik word list is MIT per word-lists/LICENSE.wordnik License: GPL-3.0-or-later AND CC-BY-SA-4.0 AND LicenseRef-Fedora-UltraPermissive AND MIT URL: https://gitlab.gnome.org/jrb/crosswords Source: crosswords-0.3.18.10.20.3.tar.gz # Big endian systems are not supported # https://jrb.pages.gitlab.gnome.org/crosswords/devel-docs/PACKAGING.html ExcludeArch: s390x BuildRequires: blueprint-compiler BuildRequires: desktop-file-utils BuildRequires: cmake BuildRequires: gcc BuildRequires: libappstream-glib BuildRequires: meson BuildRequires: python3-devel BuildRequires: sed %if %{with docs} BuildRequires: python3dist(sphinx) BuildRequires: python3dist(sphinx-rtd-theme) BuildRequires: python3dist(myst-parser) %endif %if %{with tests} # gen-word-list requires en_US.UTF8 # https://gitlab.gnome.org/jrb/crosswords/-/issues/109 BuildRequires: glibc-langpack-en %endif BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gio-unix-2.0) BuildRequires: pkgconfig(gtk4) BuildRequires: pkgconfig(iso-codes) BuildRequires: pkgconfig(json-glib-1.0) BuildRequires: pkgconfig(libadwaita-1) BuildRequires: pkgconfig(libipuz-%{ipuz_soversion}) BuildRequires: pkgconfig(libpanel-1) BuildRequires: pkgconfig(librsvg-2.0) Requires: dbus-common Requires: %{name}-puzzle-sets-cats-and-dogs = %{version}-%{release} Requires: %{name}-puzzle-sets-uri = %{version}-%{release} Recommends: %{name}-thumbnailer = %{version}-%{release} Suggests: crossword-editor = %{version}-%{release} %if %{with docs} Suggests: %{name}-doc = %{version}-%{release} %endif %description A simple and fun game of crosswords. Load your crossword files, or play one of the included games. Features include: - Support for shaped and colored crosswords - Loading .ipuz and .puz files - Hint support, such as showing mistakes and suggesting words - Dark mode support - Locally installed crosswords as well as support for 3rd party downloaders %package puzzle-sets-cats-and-dogs Summary: Puzzles about cats and dogs for GNOME Crosswords Requires: %{name} = %{version}-%{release} BuildArch: noarch %description puzzle-sets-cats-and-dogs This package contains a puzzle set about cats and dogs for GNOME Crosswords. %package puzzle-sets-internal Summary: Load additional puzzles for GNOME Crosswords Requires: %{name} = %{version}-%{release} Provides: crosswords-puzzle-sets-uri = %{version}-%{release} Obsoletes: crosswords-puzzle-sets-uri < 0.3.6-3 BuildArch: noarch # Used to load .puz files from disk Recommends: ipuz-convertor = %{version}-%{release} %description puzzle-sets-internal This package contains puzzle sets used internally by GNOME Crosswords to load additional puzzles from disk. %package thumbnailer Summary: GNOME Crosswords Thumbnailer %description thumbnailer This package provides a thumbnailer for crosswords puzzles in formats supported by GNOME Crosswords. %if %{with docs} %package doc Summary: Documentation for %{name} BuildArch: noarch %description doc This package contains additional documentation for GNOME Crosswords. %endif %package -n crossword-editor Summary: Crossword puzzle editor Requires: %{name}%{?_isa} = %{version}-%{release} Recommends: %{name}-thumbnailer = %{version}-%{release} # Used to load .puz files from disk Recommends: ipuz-convertor = %{version}-%{release} Suggests: ipuz2pdf = %{version}-%{release} %description -n crossword-editor Standalone-tool to create crossword puzzles based on GNOME Crosswords. It can be used to create simple puzzles with grids and clues. It has a pattern solver and grid autofill dialog for filling in hard-to-finish corners, and will make suggestions of words when creating the grid. %package -n ipuz-convertor Summary: Converts puz files to ipuz files BuildArch: noarch Requires: crosswords Requires: python3 Requires: python3dist(beautifulsoup4) Requires: python3dist(dateparser) Requires: python3dist(lxml) Requires: python3dist(puzpy) Requires: python3dist(regex) Requires: python3dist(requests) Requires: python3dist(xdfile) %description -n ipuz-convertor ipuz-convertor is a script to convert puzzle files from puz to ipuz. %package -n ipuz2pdf Summary: Export IPUZ puzzles to printable PDF documents %description -n ipuz2pdf ipuz2pdf is a tool to export IPUZ puzzles to printable PDF documents. %prep %autosetup -p1 -n crosswords-0.3.18.10.20.3 # Relax regex version pin sed -i 's:^regex==.*$:regex:' requirements.txt # Update image references in README mkdir images cp -p data/images/{a-dogs-day,hero}.png images/ sed -i 's:data/images/:images/:g' README.md # Relax lxml version pin on older releases %if 0%{?fedora} < 42 sed -i 's:^lxml>=.*:lxml:' requirements.txt %endif # Generate Python dependencies for the converter %generate_buildrequires %pyproject_buildrequires -N requirements.txt %build %meson -Ddevelopment=false %meson_build %if %{with docs} sphinx-build-3 docs html rm -rf html/.{doctrees,buildinfo} %endif %install %meson_install %find_lang %{name} # https://gitlab.gnome.org/jrb/crosswords/-/blob/master/docs/PACKAGING.md#version-0316 rm -f %{buildroot}%{_libexecdir}/gen-word-list-resource %if %{with tests} %check %meson_test appstream-util validate-relax --nonet \ %{buildroot}%{_metainfodir}/org.gnome.Crosswords.metainfo.xml desktop-file-validate \ %{buildroot}/%{_datadir}/applications/org.gnome.Crosswords.desktop \ %{buildroot}/%{_datadir}/applications/org.gnome.Crosswords.Editor.desktop %endif %files -f %{name}.lang %license COPYING %doc CONTRIBUTING.md NEWS.md README.md TODO.md images %{_bindir}/%{name} %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/puzzle-sets %dir %{_datadir}/%{name}/word-lists/ %{_datadir}/%{name}/word-lists/player.gresource %{_datadir}/applications/org.gnome.Crosswords.desktop %{_datadir}/dbus-1/services/org.gnome.Crosswords.service %{_datadir}/glib-2.0/schemas/org.gnome.Crosswords.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.Crosswords.Editor.gschema.xml %{_datadir}/icons/hicolor/scalable/apps/org.gnome.Crosswords.svg %{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Crosswords-symbolic.svg %{_datadir}/mime/packages/org.gnome.Crosswords.xml %{_metainfodir}/org.gnome.Crosswords.metainfo.xml %if %{with docs} %files doc %license COPYING %doc html %endif %files puzzle-sets-cats-and-dogs %license COPYING %{_datadir}/%{name}/puzzle-sets/cats-and-dogs %files puzzle-sets-internal %license COPYING %{_datadir}/%{name}/puzzle-sets/* %exclude %{_datadir}/%{name}/puzzle-sets/cats-and-dogs %files thumbnailer %license COPYING %{_bindir}/%{name}-thumbnailer %dir %{_datadir}/thumbnailers %{_datadir}/thumbnailers/%{name}.thumbnailer %files -n crossword-editor %license word-lists/LICENSE.wordnik %{_bindir}/crossword-editor %{_datadir}/%{name}/word-lists/broda.gresource %{_datadir}/%{name}/word-lists/wordnik.gresource %{_datadir}/applications/org.gnome.Crosswords.Editor.desktop %{_datadir}/dbus-1/services/org.gnome.Crosswords.Editor.service %{_datadir}/icons/hicolor/scalable/apps/org.gnome.Crosswords.Editor.svg %{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Crosswords.Editor-symbolic.svg %{_metainfodir}/org.gnome.Crosswords.Editor.metainfo.xml %files -n ipuz-convertor %license COPYING %{_datadir}/%{name}/ipuz-convertor %{_libexecdir}/ipuz-convertor %files -n ipuz2pdf %license COPYING %{_bindir}/ipuz2pdf %changelog * Thu Aug 20 2026 Packit - 0.3.18.10.20.3-1.20260820002805814022.main.204.g2855be24 - Add a clear function for the guesses array (Jonathan Blandford) - Change test to just get one result (Jonathan Blandford) - Fix use_auto_cleanup for real (Jonathan Blandford) - fix include-order (Jonathan Blandford) - Fix include_order (Jonathan Blandford) - fix use_auto_cleanup (Jonathan Blandford) - Add a single-line css class to try to improve spacing when n_rows=1x (Jonathan Blandford) - Remove undo/redo when setting new text to a row (Jonathan Blandford) - Make sure the keybindings also honor the visible actions (Jonathan Blandford) - Remove print statements; add comment (Jonathan Blandford) - Use a markup formatter for EditMetadata (Jonathan Blandford) - Change "buffer" from being construct-only (Jonathan Blandford) - Handle case where we're comparing NULL to "" (Jonathan Blandford) - Initial implementation of markup conversion (Jonathan Blandford) - Add a gmarkup parser (Jonathan Blandford) - fix include_order (Jonathan Blandford) - Remove unneeded GtkWidget instance (Jonathan Blandford) - Got buffer_to_str working (Jonathan Blandford) - Get str->buffer working (Jonathan Blandford) - Add a buffer property to XwdRichTextFormat (Jonathan Blandford) - Move dispose to the right location (Jonathan Blandford) - Rename insert_text / insert_str (Jonathan Blandford) - use_g_set_str (Jonathan Blandford) - Add visible_actions to XwdRichTextRow (Jonathan Blandford) - Add xwd-rich-text-format.[ch] to meson (Jonathan Blandford) - Recalculate the converted text after buffer changes (Jonathan Blandford) - Add XwdRichTextFormat to the row (Jonathan Blandford) - Hook up XwdRichTextRow to EditMetadata (Jonathan Blandford) - Fix indentation (Jonathan Blandford) - implement str_to_buffer fallback (Jonathan Blandford) - New object: XwdRichTextFormat (Jonathan Blandford) - Hide/Show the toolbar based on hover and focus state (Jonathan Blandford) - Add 6px of padding under the buttons (Jonathan Blandford) - set focus-on-click to false in the toggle buttons (Jonathan Blandford) - Make sure smaller/larger and sub/sup are exclusively applied (Jonathan Blandford) - return focus to the textview after clicking on a toggle (Jonathan Blandford) - Minor cleanups (Jonathan Blandford) - add tag (Jonathan Blandford) - Add tag (Jonathan Blandford) - add tag (Jonathan Blandford) - Add tag (Jonathan Blandford) - Add tag (Jonathan Blandford) - Add underline support (Jonathan Blandford) - Clean up the pending mark and make it simpler (Jonathan Blandford) - Add the forgotten layers to git (Jonathan Blandford) - Add the forgotten layers to git (Jonathan Blandford) - Initial attempt at adding italic as well (Jonathan Blandford) - Switch to a bitfield for the next_insert_flag (Jonathan Blandford) - Fix get_tag_state (Jonathan Blandford) - Set the italic flag correctly (Jonathan Blandford) - Tag flags for the enum (Jonathan Blandford) - Initial support for italic tag (Jonathan Blandford) - Handle deleting text as well (Jonathan Blandford) - Add a pending_mark so we can insert bold text without being in a bold section (Jonathan Blandford) - Fix state-flags-changed propagation source (Jonathan Blandford) - Add an explicit focus handler (Jonathan Blandford) - Trim comments (Laureen Caliman) - Set the buffer from the blp file, and hook it up to mark-set (Jonathan Blandford) - Set up and update_toggles() function (Jonathan Blandford) - Hook up bold_toggle button (Jonathan Blandford) - Try and improve a little bit on the toggle buttons (Jonathan Blandford) - Add a TagState enum and next_insert_bold member (Jonathan Blandford) - Keep a copy of buffer in self (Jonathan Blandford) - Move CrossingLocation struct to .c file (Laureen Caliman) - Unit test to look at varied grids! (Laureen Caliman) - Viable grids to choose from (Laureen Caliman) - Hook up puzzle notes -> widget (Jonathan Blandford) - Add additional padding around the internal header box (Jonathan Blandford) - Propagate grab_focus to the text_view (Jonathan Blandford) - Mark the XwdRichTextRow as non-focusable (Jonathan Blandford) - Propagate child text_view focused state to parent CSS (Jonathan Blandford) - Adjusting the appearance of the RichText widget (Jonathan Blandford) - Minor style tweaks (Jonathan Blandford) - Make n_rows size correctly (Jonathan Blandford) - Indenting, index fix, adding static to resize_final_grid() (Laureen Caliman) - New function to trim excess board space (Laureen Caliman) - Add an XwdRichTextRow to metadata (Jonathan Blandford) - Initial implementation of XwdRichTextRow (Jonathan Blandford) - Warn when there are charaters not in the charset and 2-cell clues (Jonathan Blandford) - Remove homogenous filling from the Grid properties (Jonathan Blandford) - Drop "Enable" from menu (Jonathan Blandford) - Remove old layers_menu (Jonathan Blandford) - Remove spacing between label and checkbox (Jonathan Blandford) - the styles slipped when I wrote the popover code (Jonathan Blandford) - Move the layers menu to a popover with icons (Jonathan Blandford) - Clean up text (Jonathan Blandford) - Tweak the colors a little more for the unch and charset overlays (Jonathan Blandford) - Set a locale/alphabet on new puzzle creation (Jonathan Blandford) - Realign prototypes (Laureen Caliman) - Adding prototypes to top of file (Laureen Caliman) - Actually load TASKS_CHARSET on starting (Jonathan Blandford) - Adjust edit_grid_update_tasks to draw the charset warnings (Jonathan Blandford) - Add a new layer option TASKS_CHARSET (Jonathan Blandford) - Alphabetize the include order (Jonathan Blandford) - use g_autoptr for LangItem (Jonathan Blandford) - use G_DEFINE_FINAL_TYPE_WITH_CODE (Jonathan Blandford) - Add tooltips to the country/locale string (Jonathan Blandford) - Enable search for EditLanguageRow (Jonathan Blandford) - Add two more sections to the `File order` styling (Jonathan Blandford) - Special case some english languages to change the country as well (Jonathan Blandford) - Special case some languages. In particular (Jonathan Blandford) - Change the charset when the locale is changed (Jonathan Blandford) - Hook up locale all the way back to the puzzle (Jonathan Blandford) - Initial implementation of EditCountryRow.update() (Jonathan Blandford) - Make sure the None item and (optionally) LANG item are at the top (Jonathan Blandford) - Add a header to the top of the country model (Jonathan Blandford) - s/HEADER_CUTOFF/LANGUAGE_HEADER_CUTOFF/g (Jonathan Blandford) - Enable search (Jonathan Blandford) - Iterate through all the languages for each country codex (Jonathan Blandford) - Actually return the display name (Jonathan Blandford) - Sort country by display name (Jonathan Blandford) - Add country row to the metadata tab (Jonathan Blandford) - New country row (Jonathan Blandford) - Initial country / lang data table (Jonathan Blandford) - Reindent file and clean line ends (Jonathan Blandford) - Add a test to build a grid based on the countries.ipuz file (Jonathan Blandford) - Fix indentation (Jonathan Blandford) - Search through all words at a level in the remaining list (Jonathan Blandford) - undo our previous guess correctly (Jonathan Blandford) - STyle cleanups (Jonathan Blandford) - Add a country_code member to LangItem (Jonathan Blandford) - s/LanguageItem/LangItem/g (Jonathan Blandford) - Stub out CountryModel (Jonathan Blandford) - s/edit-language-model/lang-model/g (Jonathan Blandford) - Add a changed signal to EditLanguageRow and hook it up (Jonathan Blandford) - Hook up the entry in the popover to update (Jonathan Blandford) - Fix the signal block when updating combo value (Jonathan Blandford) - Hook up the Custom menu item (Jonathan Blandford) - Add a row_type to LanguageItem (Jonathan Blandford) - Add a 'Custom' item to the language list (Jonathan Blandford) - Rearrange Metadata Page (Jonathan Blandford) - Add styling for EditLanguageRow (Jonathan Blandford) - Move notify::selected-item to the blp file (Jonathan Blandford) - Convert LanguageModel into a custom model object (Jonathan Blandford) - Refactor EditLanguageRow (Jonathan Blandford) - Make update() work reasonably well (Jonathan Blandford) - Store the alphabet in the language_model as well (Jonathan Blandford) - Allow NULL charsets (Jonathan Blandford) - Test helper function (Laureen Caliman) - Cleanup (Laureen Caliman) - Remove fallback to LANG (Jonathan Blandford) - Initial implementation of update (Jonathan Blandford) - Hook up the language row to update() (Jonathan Blandford) - shedding weight from code (Laureen Caliman) - fixing bounds checking (Laureen Caliman) - consistent variable naming (Laureen Caliman) - Set the current charset as the alphabet (Jonathan Blandford) - Set up a LanguageItem row to store the lang code as well as the name (Jonathan Blandford) - Words in bounds (Laureen Caliman) - Install the language row in the metadata tab (Jonathan Blandford) - Add an initial language row (Jonathan Blandford) - Bounds checking (Laureen Caliman) - Head/tail check plus side-by-side (Laureen Caliman) - Limit the selection box to the type/template buttons (Jonathan Blandford) - Minor cleanups (Jonathan Blandford) - Add a preferences dialog to the greeter (Jonathan Blandford) - Add support for the CH digraph to mirror IJ digraph (Jonathan Blandford) - Add a CH digraph for Czech (Jonathan Blandford) - shedding to do (Laureen Caliman) - Test of filling a set of words in a blank grid (Jonathan Blandford) - Prepend word to array when done with loop (Jonathan Blandford) - Don't double remove a word (Jonathan Blandford) - test_check_crossing (Laureen Caliman) - test_pick_next_word (Laureen Caliman) - Shedding to-dos (Laureen Caliman) - test_place_first_word function (Laureen Caliman) - Pass use_explicit_default_flags (Jonathan Blandford) - Calc_old_str and place_crossing unit test (Laureen Caliman) - Strlen to g_utf8_strlen (Laureen Caliman) - Calculate_old_str unit test (Laureen Caliman) - Unit test intersect calc old str (Laureen Caliman) - Countries test (Laureen Caliman) - adding expanded countries puzzle for test (Laureen Caliman) - Moved Vocab Tests for Convention (Laureen Caliman) - Improving Testing (Laureen Caliman) - Need to bump the BASE to rebuild rust (Jonathan Blandford) - Bump RUST version for goblint (Jonathan Blandford) - Bump BASE_TAG to force a rebuild of the opensuse image (Jonathan Blandford) - Remove old ignore directive (Jonathan Blandford) - Fix include_order (Jonathan Blandford) - Fix unnecessary_null_check (Jonathan Blandford) - Fix use_g_source_once (Jonathan Blandford) - Fix use_clear_functions (Jonathan Blandford) - Add Flathub badges (Jonathan Blandford) - Origin calculating (Laureen Caliman) - Declarations and .h (Laureen Caliman) - Run function (Laureen Caliman) - Calculate_old_string function (Laureen Caliman) - Helper function (Laureen Caliman) - Pick_next_word function (Laureen Caliman) - Testing word against countries (Laureen Caliman) - Place_crossing function (Laureen Caliman) - Vocab support in meson.build (Laureen Caliman) - New unit test (Laureen Caliman) - Updated path checking and intersections fxns (Laureen Caliman) - Coordinate length (Laureen Caliman) - Path_checking optimization (Laureen Caliman) - V2 approach (Laureen Caliman) - Recursive helper (Laureen Caliman) - Intersection function (Laureen Caliman) - From infinite grid to 30x30 grid (Laureen Caliman) - Implementation of new vocab puzzle (Laureen Caliman)