%bcond docs 1 %bcond tests 1 # The libipuz shared library version %global ipuz_soversion 0.5 Name: crosswords Version: 0.3.16.21.5.0 Release: 1.20251126214230229691.master.275.g31deafdd%{?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.16.21.5.0.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.16.21.5.0 # 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 * Wed Nov 26 2025 Packit - 0.3.16.21.5.0-1.20251126214230229691.master.275.g31deafdd - Fix bad C code (Jonathan Blandford) - Make tooltip more precise (Jonathan Blandford) - Hook up update_sensitivity to page-changed as well (Jonathan Blandford) - pass in the new page number to update_sensitivity. (Jonathan Blandford) - Remove hint carousel from welcome screen (Jonathan Blandford) - Hook up play hint dialog to the main window (Jonathan Blandford) - New dialog: PlayHintsDialog (Jonathan Blandford) - Migrate to from a PreferenceDialog to a plain dialog (Jonathan Blandford) - Be conservative on showing the file chooser build (Jonathan Blandford) - Show the empty page warning iff the main dialog is empty (Jonathan Blandford) - Hook up puzzle info dialog to the info button (Jonathan Blandford) - Raw conversion of popover to a dialog (Jonathan Blandford) - Convert info_menu_button to a regular button (Jonathan Blandford) - Bring back the padding of the hover highlight (Jonathan Blandford) - Clean up style of title-menu-button (Jonathan Blandford) - Change default window size to 1440x720 (Jonathan Blandford) - Change the sidebar style to match best practices (Jonathan Blandford) - Remove stress-inducing counter from puzzle-set list (Jonathan Blandford) - One more place that says GNOME Crosswords (Jonathan Blandford) - Add a few more default puzzle sets (Jonathan Blandford) - Remove border from tags (Jonathan Blandford) - Cats and Dogs: Remove small caps, and set a font (Jonathan Blandford) - Change welcome list item to just "Welcome" (Jonathan Blandford) - When moving it to its own widget, we duplcated the info_location_file (Jonathan Blandford) - Clear toast on update (Jonathan Blandford) - Set the title of the app to 'Crosswords' (Jonathan Blandford) - Fix blueprint file syntax (Jonathan Blandford) - Use the description instead of the title for hints (Jonathan Blandford) - Change win.fullscreen to a property action (Jonathan Blandford) - Cleanup text (Jonathan Blandford) - Activating info rows puts their text on the clipboard (Jonathan Blandford) - Add a few more tips to the main screen to keep testing (Jonathan Blandford) - Hook up the next tip button to the carousel (Jonathan Blandford) - Add -lm to ipuz2pdf (Jonathan Blandford) - Remove redundant 'box' member/id (Jonathan Blandford) - Initial mockup of a possible welcome page (Jonathan Blandford) - Only show the main group if there's actual metadata to show (Jonathan Blandford) - Use getters instead of object_properties (Jonathan Blandford) - Migrate PlayWindow to use the new PuzzleInfoPopover widget (Jonathan Blandford) - Compile PuzzleInfoPopover (Jonathan Blandford) - Move PuzzleInfoPopover to its own widget (Jonathan Blandford) - Add a gitignore to skip temporary files (Jonathan Blandford) - Hook up the hide-solved-puzzles menu option. (Jonathan Blandford) - Keep the sort-order action in the PlayWindow class (Jonathan Blandford) - Add picker_sort_order_to/from_str (Jonathan Blandford) - Change list.sort-order to a stateful action (Jonathan Blandford) - Remove xword.zoom completely (Jonathan Blandford) - Move stateful actions to play-window-actions.c (Jonathan Blandford) - Missed a casefold to remove (Jonathan Blandford) - Remove spurious print statment (Jonathan Blandford) - Always reset to the default sort order when changing puzzle sets (Jonathan Blandford) - Improve sort function significantly (Jonathan Blandford) - Add a new completion % sort order (Jonathan Blandford) - Remove garbage pointer comparison for sorting (Jonathan Blandford) - Add puzzle_set_model_row_get_index() (Jonathan Blandford) - Add missing image (Jonathan Blandford) - Toplevel labels don't use mnemonics (Jonathan Blandford) - Ctrl-KP_subtract should zoom out instead of in (Jonathan Blandford) - Fix capitalization on toast (Jonathan Blandford) - Initial work on picker list sort filter menu (Jonathan Blandford) - Add a filter menu to PickerList (Jonathan Blandford) - Add G_ENABLE_DIAGNOSTIC=1 to run.in (Jonathan Blandford) - ci/*.sh - Fix various shellcheck warnings (Federico Mena Quintero) - (#335): Don't use "set -u" because MESON_EXTRA_FLAGS may not be set (Federico Mena Quintero) - remove code from add/remove page from preferences (Jonathan Blandford) - Change PlayAddremove layout to mirror PickerList (Jonathan Blandford) - Remove redundant #include (Jonathan Blandford) - Clear the current game when going to the welcome game (Jonathan Blandford) - Add the add_remove dialog to PlayWindow (Jonathan Blandford) - Mark add_tag_widget as static (Jonathan Blandford) - Move the add/remove puzzle set to its own widget (Jonathan Blandford) - Quick fix to make zoom action work again. (Jonathan Blandford) - Fix format-security warning (Vinson Lee) - Change Zoom UI to inline items (Jonathan Blandford) - Explcitily enable/disable actions based on the mode (Jonathan Blandford) - Merge the help and game info actions into one kebab menu (Jonathan Blandford) - Remove old code to g_assert the ref_count is on creation (Jonathan Blandford) - Change selection mode of the side panel to browse, (Jonathan Blandford) - Use the correct identifier for the callbacks in the blueprint file (Jonathan Blandford) - Remove unused widget code (Jonathan Blandford) - Enable the info popover (Jonathan Blandford) - Bring back the undo/redo button (Jonathan Blandford) - Remove dead heeader (Jonathan Blandford) - remove selected_puzzle_name (Jonathan Blandford) - Fix puzzle_set_get_uri() (Jonathan Blandford) - move win.open-location to play-window-actions (Jonathan Blandford) - Remove "icon-name" property (Jonathan Blandford) - Update screenshot (Victor Ma) - Change from draft to approved (Victor Ma) - Change unsolved_label to a pill-like style (Jonathan Blandford) - Add a home icon to the welcome screen (Jonathan Blandford) - Clear the attributes of the title/subtitle if there's no face set (Jonathan Blandford) - Set visibility of the download button based on presence of downloader (Jonathan Blandford) - Set a different header for the demos for testing (Jonathan Blandford) - Update Ukrainian translation (Yuri Chornoivan) - Add a welcome puzzle set (Jonathan Blandford) - Remove the word 'puzzle' from the secondary label (Jonathan Blandford) - set a max width of the sidebar (Jonathan Blandford) - Edit (Victor Ma) - Edit (Victor Ma) - Style update: make puzzle-set list transparent (Jonathan Blandford) - Edit (Victor Ma) - Remove extra ToolbarView and NavPage (Jonathan Blandford) - Edit (Victor Ma) - Edit (Victor Ma) - Edit (Victor Ma) - Backup (Victor Ma) - Add parentheses (Victor Ma) - Add hyphen (Victor Ma) - Edit (Victor Ma) - Rename "slot" (Victor Ma) - Make small edit (Victor Ma) - Add "optionally" (Victor Ma) - Add colons to introduce sub-list (Victor Ma) - Force an update when the puzzle set changes (Jonathan Blandford) - Reword (Victor Ma) - Backup (Victor Ma) - Reword (Victor Ma) - Fix table markup (Victor Ma) - Keep a reference to the current_picker (Jonathan Blandford) - Rename active_puzzle_set to current_puzzle_set (Jonathan Blandford) - Remove won_changed handler from the picker (Jonathan Blandford) - Remove unnecessary g_strdup (Jonathan Blandford) - Add a faq with the problem with a missing en_US.UTF-8 locale (Jonathan Blandford) - Hook up download back to the picker (Jonathan Blandford) - Rename "grid aid" (Victor Ma) - Add detector grid helpers (Victor Ma) - Split grid helpers into two tables (Victor Ma) - Rename all remaining instances of "slot" to "clue" (Victor Ma) - Remove unnecessary text (Victor Ma) - Rename "crossword aids" to "grid helpers" (Victor Ma) - Edit dead-end word definition (Victor Ma) - Add links to word-suggestion.md (Victor Ma) - Add algorithm comparison table (Victor Ma) - Remove unnecessary text (Victor Ma) - Break up long lines (Victor Ma) - Edit comments (Victor Ma) - ipuz-convertor is now in the tools/convertor directory (Jonathan Blandford) - make puzzle-set download externally called (Jonathan Blandford) - Drive by indentation fix (Jonathan Blandford) - Change the downloader state to a property (Jonathan Blandford) - Update Slovenian translation (Martin) - Add caching section (Victor Ma) - Clean up diminishing returns section (Victor Ma) - Add note about higher level lookahead (Victor Ma) - Clear implementation section (Victor Ma) - Edit limitations sub-sections (Victor Ma) - Add limitations sub-sections (Victor Ma) - Remove some limitations sub-sections (Victor Ma) - Update Russian translation (Александр Вахрамеев) - Update Brazilian Portuguese translation (Juliano de Souza Camargo) - Remove xword widget from puzzle-set (Jonathan Blandford) - Remove dead code (Jonathan Blandford) - Hook up signals from PlayXword (Jonathan Blandford) - Update the UI when it's collapsed (Jonathan Blandford) - Finish removing PuzzleSet control flow (Jonathan Blandford) - play_window_save_state uses the new method (Jonathan Blandford) - Cleanup indentation (Jonathan Blandford) - Save the game when changing state or quitting (Jonathan Blandford) - Add `_puzzle_window_save_current_game ()` (Jonathan Blandford) - Add final sections (Victor Ma) - Update the actions to work with the new state system (Jonathan Blandford) - Collapse the overlay when playing a game (Jonathan Blandford) - Change semantics of puzzle_set_get_puzzle() (Jonathan Blandford) - Update enum wording (Jonathan Blandford) - Switch to an OverlaySplitView (Jonathan Blandford) - Expand AC-3 algorithm section (Victor Ma) - Move definition inside of set (Victor Ma) - Move definition inside of set (Victor Ma) - Change domain definition (Victor Ma) - Update CSP model intro (Victor Ma) - Add implementation section (Victor Ma) - Add AC-3 algorithm section (Victor Ma) - Add PlayState (Jonathan Blandford) - Add a PlayXword to the stack (Jonathan Blandford) - Remove assertion when priv->layout is NULL (Jonathan Blandford) - Reorder actions to more closely match the UI (Jonathan Blandford) - Forgot to migrate a key binding (Jonathan Blandford) - Migrate actions (Jonathan Blandford) - Migrate actions (Jonathan Blandford) - Migrat actions (Jonathan Blandford) - Migrate actions (Jonathan Blandford) - Migrate actions (Jonathan Blandford) - Migrate actions (Jonathan Blandford) - Minor fix: reorder protos (Jonathan Blandford) - Migrate actions (Jonathan Blandford) - Migrate actions (Jonathan Blandford) - Migrate actions (Jonathan Blandford) - Start migrating actions to play-window-actions.c (Jonathan Blandford) - Add PLAY_IS_WINDOW_CLASS macro (Jonathan Blandford) - Move PlayWindow out of play-window.c (Jonathan Blandford) - Start the stateless refactor (Jonathan Blandford) - Start moving the puzzle set control to puzzle window (Jonathan Blandford) - Move "closer slots" section (Victor Ma) - Edit (Victor Ma) - Update LaTeX (Victor Ma) - Edit LaTeX (Victor Ma) - Edit LaTeX (Victor Ma) - Fix LaTeX overflow (Victor Ma) - Replace "slot" with "clue" (Victor Ma) - Reword (Victor Ma) - Reword CSP model introduction (Victor Ma) - Remove resources sections (Victor Ma) - Introduce CSPs (Victor Ma) - Add introduction section (Victor Ma) - Add TODO sections (Victor Ma) - Rework "Unsolveable" section (Victor Ma) - Remove "additional levels" section (Victor Ma) - Edit wording (Victor Ma) - Edit wording (Victor Ma) - Remove asynchronous section (Victor Ma) - Add advantages over intersection algorithm (Victor Ma) - Edit wording (Victor Ma) - Edit algorithm description (Victor Ma) - Edit wording (Victor Ma) - Write "Benefits" section (Victor Ma) - Replace "slot" with "clue" (Victor Ma) - Create the introduction to the algorithm section (Victor Ma) - Mention the function that implements the algorithm (Victor Ma) - Update intersection algorithm introduction (Victor Ma) - Write introduction (Victor Ma) - Create new buttons and remove the old ones (Jonathan Blandford) - Move the n_won_changed handler to the parent class (Jonathan Blandford) - Add an _update() function to the picker (Jonathan Blandford) - Remove print statement (Jonathan Blandford) - Use the precreated picker_grid/picker_list (Jonathan Blandford) - Export details of PuzzleSet (Jonathan Blandford) - Display in enum order (Jonathan Blandford) - Change wording (Victor Ma) - Fix word wrap (Victor Ma) - Replace "step" with "phase" (Victor Ma) - Use "intersecting clue" instead of "secondary clue" (Victor Ma) - Change headings (Victor Ma) - Remove hyperlink to function (Victor Ma) - Add new docs to drafts/index.md (Victor Ma) - Begin moving to a static picker page (Jonathan Blandford) - tidy (Nicole) - Remove undo/redo from the title bar because they are standard behavior (Nicole) - Make info popover a fixed size (Nicole) - Add open file option when built in dev (Nicole) - Format info window using the same style as TextEdit (Nicole) - Add info button to title area (Nicole) - Add puzzle author as subtitle (Nicole) - Move lookahead implementation section (Victor Ma) - Create standalone doc for crossword aids (Victor Ma) - Create standalone doc for AC-3 algorithm (Victor Ma) - Create standalone doc for forward checking algorithm (Victor Ma) - Add introduction (Victor Ma) - Replace "slot" with "clue" (Victor Ma) - Create standalone doc for intersection algorithm (Victor Ma) - Remove unnecessary g_strdup (Jonathan Blandford) - Add a faq with the problem with a missing en_US.UTF-8 locale (Jonathan Blandford) - Update screenshots for new release (Jonathan Blandford) - More widget moving (Jonathan Blandford) - Start adding a sidebar (Jonathan Blandford) - Quick-and-dirty fullsceen implementation (Jonathan Blandford) - Change the tags pill style to have a border of 1px (Jonathan Blandford) - Restyle clear/delete buttons in PickerListRow (Jonathan Blandford) - Change reset icon to the entry-clear icon (Jonathan Blandford)