Releases: herzbube/littlego
2.0.1: Bugfix release
Summary
Version 2.0.1 is a bugfix release. It was published on the App Store on 12 May 2024.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Bugfixes
- Fixed a bug that caused the app and Fuego to become out of sync when a game with handicap was started, or when a game with black or white setup stones was loaded from the archive (#430).
2.0.0: Feature release
Summary
Version 2.0.0 is a feature release. It was published on the App Store on 10 May 2024.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Features
Support for game variations (#380):
- The app now supports displaying game variations. For that purpose a new view was added at the bottom of the Play tab.
- The new view displays the tree of nodes formed by all variations of the game. The view is therefore named "Node tree" view, or just tree view for short.
- The tree view can be resized, zoomed and scrolled, and you can tap on any node to change the game board to display the content of that node.
- The app also supports creating new game variations: Go back to an older node and play a move and the app will automatically insert a new game variation. Note that in previous versions of the app an alert was displayed in this situation, asking whether you want to discard future board positions.
- A number of new settings were added under "Settings > Tree view" and "Settings > Game variation" that let you control various aspects of how the tree view is rendered and how game variations are inserted.
- If you do not want to work with game variations you can also use the settings to hide the tree view completely and disable creation of new game variations.
Improvements and changes
User manual overhaul (#419):
- The user manual has been rewritten from scratch, complete with icons, illustrations, a few animatons and hyperlinks.
- Besides the in-app version of the user manual there is now also an identical online version that can be accessed in any web browser at https://littlego-usermanual.herzbube.ch/.
- Many users have had trouble with the dry text-only user manual of the past, often being unable to match textual descriptions of icons to the actual buttons in the app. Hopefully this is now an issue of the past. Many thanks go to Andreas Fischlin who gave me the impetus to take on this long overdue task.
Other changes:
- The content of the node list view (formerly called "board position list view") was slightly redesigned. Previous app versions used to show a symbol only for black and white moves, now the app always shows a symbol even if a node does not contain a move. Also the textual representation of some node types was slightly changed.
- The setting "Board position setting > Discard future moves alert" was renamed to the more generic "Discard future nodes alert", because the app now no longer displays only moves, but arbitrary nodes in the node tree view.
- The hotspot icon is now properly centered.
Bugfixes
- In-app web views now continue to display their content after an external link is opened in Safari (#428). Affected views: Help tab, About tab, Credits tab, Source Code tab, and any one of the entries on the Licenses and the Changelog tabs.
- The app no longer crashes when a handicap stone is removed while board setup mode is active (#399).
- Fixed a bug where sometimes handicap stones were not properly marked up while board setup mode was active (#400).
- Labels placed in markup mode are now no longer displayed while board setup mode is active (#420). Because board setup mode has its own markup that is specifically designed to facilitate board setup, it is by design that labels and other graphical elements placed in markup mode are not shown when board setup mode is active.
- When the setting "auto-enable board setup" was enabled and a new game was started with the "rematch" menu option, the app in some cases did not enter board setup mode as designed. This has been fixed (#411).
- Speculative fix for a potential app crash when the UI changes orientation from Portrait to Landscape (#406).
Regressions
- Fixed the "Select player" screen to show a non-transparent background color even when no players are available (#421).
Technical changes
Support for iOS 9 up to 14 has been dropped (#409).
- The minimum required version is now iOS 15.0.
- The following devices are no longer supported:
- iPhone models: iPhone 4S, iPhone 5, iPhone 5C, iPhone 5S, iPhone 6 and iPhone 6 Plus.
- iPad models: iPad Mini 1st generation, iPad 2, iPad 3rd generation, iPad 4th generation, iPad Air 1st generation, iPad Mini 2, and iPad Mini 3.
- iPod models: iPod Touch 5th generation, and iPod Touch 6th generation.
- Although the list of devices is quite long it's not as bad as it might seem because the devices left behind are all quite old. To give an estimate, the newest devices that are now no longer supported were released by Apple 10 years ago, and were discontinued 7-8 years ago.
- The main reason for the change was that new library versions required technical features that older iOS versions could not provide. A secondary reason was to get rid of old cruft in the source code that has accumulated over the years to keep the app running on old iOS versions.
Other technical changes:
- The project has been upgraded to the iOS 17.2 SDK and Xcode 15.1 (#408). One notable change that emerged from the upgrade was that the NSCoding implementation had to be adapted to NSSecureCoding.
- The following third party software has been upgraded to new versions: SgfcKit and libsgfc++ (from 1.0.0 to 2.0.1), Cocoa Lumberjack (from 3.7.4 to 3.8.2) and Firebase Crashlytics (from 8.11.0 to 10.19.0).
- The structure how user preferences are stored has been slightly changed by moving top-level entries into child dictionaries (#404).
- The way how the app internally communicates certain state changes has been changed from the KVO (key-value observing) approach to posting notifications to the global notification centre (#402). The change fixes at least one potential but hard-to-pinpoint bug, but also makes the code more maintainable.
1.7.1: Bugfix release
Summary
Version 1.7.1 is a bugfix release. It was published on the App Store on September 23 2022.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Bugfixes
- Fixed app crash when board position cells are reused after a new game is started or loaded from the archive (#397).
- The app no longer crashes when the user performs a board setup operation (e.g. places a setup stone) and the game has ended without any move because a player immediately resigned without playing a move (#398).
1.7.0: Feature release
Summary
Version 1.7.0 is a feature release. It was published on the App Store on September 18 2022.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Features
Smart Game Format (SGF) support:
- The app now supports reading and writing of all SGF node annotation and move annotation properties (#339). The app also displays these properties' values and lets you edit them. This means that you can now add a valuation to a move (e.g. good/bad move) and/or to the entire board position (e.g. good position for black/white), designate a board position to be a "hotspot" (e.g. it contains a game-deciding move), annotate a board position with an estimated score, and finally you can add textual notes to a board position. Annotation data is displayed by, and can be edited via, an all-new annotation view.
- The app now supports reading and writing of all SGF markup properties (#349). Except for the DD property (dim parts of the board), the app also displays these properties' values and lets you edit them. This means that you can now mark intersections on the board with 5 different symbols (circle, square, triangle, "X" mark, "selected" symbol), place single-character letter markers or single-digit number markers, place a free-form label text, and finally you can draw arrows or plain lines on the board. The app has an all-new markup editing mode for this (accessible via menu icon) that includes drag & drop support to move around existing markup.
- A notable consequence of these additions is that board positions without moves are now possible when loaded from an SGF file (e.g. a board position that contains only markup and/or annotations), but you cannot create such positions yet from within the app. This feature will be added in the next release.
- In the Settings screen there are now a number of user preferences that affect how markup is drawn and that let you tweak some aspects of the markup editing process.
Improvements and changes
- The general user interface (UI) of Little Go now looks and behaves the same on all device types (#371). This unification of UI layouts became necessary because the effort to support different layouts proved to be too much. Also the unification provided the opportunity to get rid of many behind-the-scenes hacks. The main changes are: 1) Smaller iPhone devices which only support the Portrait orientation UI layout, now display board positions and the navigation buttons differently than before. 2) Larger iPhone devices now display a tab bar when in Landscape orientation (alas, reducing the size of the board). 3) iPad devices now always show board positions when in Portrait orientation, and when in Landscape orientation they display board positions and navigation buttons differently than before.
- Changed the icon of the "More Game Actions" button (#377). The previous icon was a "curved arrow" symbol, which seemed to confuse many users so that they couldn't find important actions, such as "New game". The new icon is the established "hamburger menu" icon, which should now more clearly indicate that the button pops up a menu with actions to select from.
- Button boxes and the board position list now support Dark mode by switching to a dark background color (#378 and #379). Thanks to Peter Waldispühl for reporting this.
- Coordinate labels are now drawn at the board edge instead of at the screen edge (#147).
- The "Last move" marker is now drawn in red color, to distinguish it from the new Square markup symbol (#396).
- The Go board is now always properly centered within the screen space that is available to it (#367).
- Little Go has a technical limit for the number of moves that can be played in a single game (in case you wonder: the limit currently is 1394 moves). The app now explicitly checks for this limit when you attempt to place a stone or pass (#381).
Bugfixes
- Board position zero (representing the start of the game) sometimes did not display handicap and komi. This is now fixed (#374).
- Speculative fix for a potential app crash when the board setup is changed but somehow the board displays a position after the start of the game (#366). Instead of crashing the app now displays an alert.
- Two speculative fixes (#369 and #370) for potential app crashes in a wide variety of circumstances.
- Another set of fixes (#364) that helps with app stability and avoids a number of potential app crashes.
Regressions
- A bug was introduced in version 1.6.0 that would cause Ko detection to fail after the app was suspended and was forced to restart by the operating system (a relatively common occurrence). This is now fixed (#372). Because Little Go has struggled with Ko detection many times in the past, this regression was particularly painful.
Technical changes
- The project has been upgraded to the iOS 15.2 SDK and Xcode 13.2.1.
- The following third party software has been upgraded to new versions: Cocoa Lumberjack (from 3.7.0 to 3.7.4) and Firebase Crashlytics (from 4.6.2 to 8.11.0).
- SGF files that were previously locally maintained have now been added to version control (commit f6aa17e). The manual testing script in the TESTING document can now be played through by anyone.
1.6.0: Feature release
Summary
Version 1.6.0 is a feature release. It was published on the App Store on March 27 2021.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Features
Smart Game Format (SGF) data processing:
- Added an SGF parser (#112). Little Go can now read and write SGF data on its own without having to delegate this task to Fuego (the built-in computer player library). The core piece of software is SGFC, the SGF Syntax Checker & Converter. A big thank you to Arno Hollosi for writing this tool and making it available under a free license, and also for helping with integrating it into Little Go.
- When you select an SGF file in the archive you can now see if the file contains more than just one game. For each game you now get a preview of its content and you can select which game to load (#338).
- In the Settings screen there are now a number of user preferences that give you some control over how SGF files are processed (#337). The defaults should be fine, especially for files that were created by Little Go, but if you have imported files from an external source you might need to make adjustments. The in-game manual has all the details.
Other features:
- Added a new user preference to the "Board position" settings screen that lets you choose whether discarding the computer player's last move also discards your own last move (#99). The goal is that if the option is enabled you can immediately play again after a discard and try out a different move.
- Added a new entry to the "More game actions" menu that lets you play a rematch without showing the "New game" screen first (#313). This is a convenientshortcut to quickly start a new game with the same parameters as the last one.
- Added a new user preference that lets you choose what kind of computer assistance you would like to receive. The default is, just like before, to let the computer make a move on your behalf. What's new is that if you prefer you can now tell the computer to insted only make a suggestion how to play (#28). Note that the feature is still a bit rough on the edges. Known issues have been collected in #363, the polish will come in one of the next releases.
Improvements and changes
- The buttons that let the user navigate between board positions have now more space between them (#346), making it less likely that the user taps the wrong button. Thanks to Dan Hassin for both reporting the issue and implementing the fix.
- Loading a game from the archive now benefits from improved error handling. If a game cannot be loaded you will now get better error messages that should be more helpful.
- When a game is saved to the archive the current player names are now written to the SGF data (#237).
- The user interface has been adapted to newer iOS devices with a sensor notch, rounded corners and/or a Home indicator instead of a Home button (#336).
- The app now supports Dark Mode (#345). A new, darker wooden background for the board still needs to be found (#360).
- When Little Go is newly installed from the App Store the default computer player is now weaker (#358). This should give more users a positive first app experience. Users who want a challenge can still increase the difficulty by switching to a stronger computer player. A side effect of this change is that the default computer player no longer uses the "Pondering" setting, which means that the iOS device's battery should now be used up a lot less.
- Added another predefined computer player that has "Pondering" disabled. Users who already have the app installed need to select "Reset to defaults" in the "Players" settings screen to see the new player.
- The app's user interface no longer exposes GTP engine profiles as a separate entity, instead the user interface now only displays players (#211). It should now be easier for users to find the settings for adjusting the computer player's strength.
Bugfixes
- The app no longer crashes when a game with many moves (500 or more) is archived or unarchived (#357).
- The app no longer crashes when a game is loaded while an ended game with non-alternating dispute resolution is present (#361).
- Speculative fix for a potential app crash when an SGF file is imported (#362).
- The information which player resigned is no longer lost when the user switches to an earlier board position (#341).
- On iPhone devices with larger displays, when the device is rotated while the activity indicator is displayed in the status view the activity indicator is now still displayed after the rotation (#343).
Regressions
- All iPhones: When board setup mode was added in version 1.5.0 a bug was introduced that made it possible for board position lists to show erroneous information when moves were discarded and then replayed, or when games were restarted with different characteristics. This bug has now been fixed (#359).
- iPhone devices with smaller displays: When iOS 13 or newer was installed on these devices the current board position view stopped responding to taps. This bug has now been fixed (#344).
Technical changes
- The project has been upgraded to the iOS 14.3 SDK (#335) and Xcode 12.3 (#334).
- The migration from Twitter Fabric to Google Firebase is now complete (#322).
- Support for iOS 8 has been dropped, the minimum required version is now iOS 9.0 (#305). This should not affect any devices unless they are artificially held back at iOS 8.
- The project's software build should now work out of the box for new contributors. Thanks to Dan Hassin for contributing the necessary changes.
1.5.1: Bugfix release
Summary
Version 1.5.1 is a bugfix release. It was published on the App Store on March 24 2019.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Bugfixes
- App no longer crashes during launch on iOS 9.x and below (#332). Thanks to Li Chen Ke and Dennis for reporting the issue.
1.5.0: Feature release
Summary
Version 1.5.0 is a feature release. It was published on the App Store on March 21 2019.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Features
- Added a board setup mode (#276). When you start a new game, instead of beginning to play you can now switch to board setup mode. In this mode you can place black or white stones in any order and combination to set up the initial board before you begin to play moves. In addition to placing stones, you can select the side which is to play the first move. Read the "Board setup" section in the in-game manual for a detailed feature description.
Bugfixes
- Fix for a memory leak in UnarchiveGameCommand (#331)
Technical changes
- Added an initial set of a few automated UI tests (#134)
1.4.1: Bugfix release
Summary
Version 1.4.1 is a bugfix release. It was published on the App Store on January 17 2019.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Bugfixes
- Fixed a bug in Fuego that could cause Fuego to play a stone during the opening game on an intersection that was already occupied by a handicap or setup stone (#328). In addition, Little Go's error handling is now capable of dealing with such a situation so that user's are not stuck in a seemingly endless "computer is thinking" loop. Thanks to Rob Wildschut and Mark Spurlock for reporting the issue.
Maintenance and bugfix release
Summary
Version 1.4.0 is a maintenance and bugfix release. It was published on the App Store on January 15 2019.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Known bugs
- On iPhone Plus devices as well as on iPhone XS Max, when the user navigates to the first or last board position most of the time the new current board position is not displayed with a special background color as it should (#326).
Features
- Added support for loading and saving .sgf files that contain stone and/or player setup nodes (#323). This kind of .sgf files is frequently used for sharing board positions that teach how to play best in certain game situations, or that are puzzles to be solved. Notes:
- It was already possible to load these .sgf files before the change, but Little Go would not display the stones specified by the stone setup nodes, and playing after loading such an .sgf file would usually result in the alert message "Your move was rejected by Fuego".
- Even after this change, only those .sgf files are properly handled which contain setup nodes at the beginning of the file. Little Go still cannot properly handle .sgf file that contain setup nodes after the first move is played.
Improvements and changes
- The "New game" screen now displays a recommendation to use the area scoring system.
- The "Game info" screen now shows stone and player setup information.
- When the app is started for the first time after the update, two new GTP commands "list_setup" and "list_setup_player" are added to the user's list of GTP commands (Diagnostics > GTP commands).
- The way how an archived game can be shared was re-implemented (UIActivityViewController instead of the long deprecated UIDocumentInteractionController). This may result in users now seeing different sharing options.
- The Changelog is now available in-app
Bugfixes
- When playing with area scoring, the Fuego computer player now correctly includes handicap compensation in its score calculation (#319). Before this fix, the Fuego computer player was calculating scores without handicap compensation, which would lead to it resigning (when playing as white) even though it had actually won the game. Or it might not resign (when playing as black) even though it had actually lost the game. This serious bug was reported by dtsudo - thanks a lot!
- The app now synchronizes komi with Fuego when board positions are changed (#324). Up until now the app never synchronized komi. This omission could lead to the following problems:
- An .sgf file is saved with the wrong komi value in it.
- Fuego is likely to play wrong moves. For instance, towards the end of the game Fuego might start to pass because it thinks it is winning, or it might resign because it thinks it is losing. The probability of misplays increases when there is a large difference in komi values.
- These problems would occur only if the user loaded an .sgf file that contained a different komi value than the last game that was started with the "New game" function, and then changed board positions or discarded a move.
- A bug in the board drawing routines was fixed which caused the app to occasionally crash (#308).
Regressions
- White player influence is now shown correctly with white squares (#317). White player influence was erroneously shown with black squares since the release of version 1.1.0. Thanks for reporting this bug go to ecru86.
- Users that do not have automatic crash reporting enabled are now asked whether they want to submit a crash report (#321). The alert that asks for permission was accidentally disabled since the release of version 1.3.0. Because the alert was disabled, no crash reports were submitted at all unless the user had automatic crash reporting enabled.
Technical changes
- The project has been upgraded to the iOS 12.1 SDK (#314) and Xcode 10.1 (#315)
- Code signing overhaul: Code signing is now managed automatically by Xcode
- The project is now built with Bitcode enabled (#295)
- The project now uses libc++ (#181), the C++ standard library implementation provided by the LLVM project, instead of libstdc++, the GNU project's implementation.
- Communication between Little Go and Fuego is no longer based on named pipes, instead it works with a custom stream buffer that acts as an in-memory pipe (#316). This change was necessary because libc++ has a bug [1] that breaks the original named pipe communication channel. [1] https://bugs.llvm.org/show_bug.cgi?id=23078
- Started migration from Twitter Fabric to Google Firebase (#320). A best effort has been made to disable all other Google services and to only keep Crashlytics enabled. Notably, Firebase Analytics data collection has been explicitly disabled! An explanatory side note: This technical change has become necessary because in January 2017 Google acquired Fabric/Crashlytics and, after a grace period of 1.5 years, announced in September 2018 that they will discontinue Fabric in favour of the Firebase platform. It's all very complicated, but the main point is that Little Go wants to continue to use the excellent Crashlytics as its crash reporting service, and since that now requires integration with the Firebase platform, Little Go has no choice but to follow Google's lead.
- All third party software has been upgraded to their newest versions (Boost 1.69.0, CocoaPods 1.5.3, MBProgressHUD 1.1.0, Cocoa Lumberjack 3.4.2, Fabric 1.6.13, Crashlytics 3.8.6)
1.3.1: Bugfix release
Summary
Version 1.3.1 is a bugfix release. It was published on the App Store on January 19 2017.
Below is a summary of changes, taken verbatim from the ChangeLog document. For the full story, a list of issues closed for this release is available here on GitHub.
Features
None
Other improvements and changes
None
Bugfixes
- Another ko detection problem when viewing an old board position is now fixed (#307). This was the root cause for the dreaded alert message "Your move was rejected by Fuego", which must have popped up on quite a few people's devices, but which I had never been able to reproduce despite the bug reports that were kindly sent to me by some of the most patient users. Yesterday, however, I received a report that finally gave me a reproducible case which allowed me to pinpoint and fix the coding error. Many thanks to everybody who sent bug reports, but especially to Manuel Braun for submitting the crucial last bug report.
Technical changes
None