Skip to content

Commit

Permalink
final tidying up for release 1.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
herzbube committed Feb 26, 2021
1 parent 81e766c commit 789ee44
Show file tree
Hide file tree
Showing 13 changed files with 210 additions and 37 deletions.
8 changes: 8 additions & 0 deletions Little Go.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3565,11 +3565,13 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = "";
EXCLUDED_SOURCE_FILE_NAMES = "GoogleService-Info.plist";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = src/main/Prefix.pch;
INFOPLIST_FILE = resource/plist/Info.plist;
MARKETING_VERSION = 1.6.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -3585,10 +3587,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = "";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = src/main/Prefix.pch;
INFOPLIST_FILE = resource/plist/Info.plist;
MARKETING_VERSION = 1.6.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down Expand Up @@ -3788,10 +3792,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = "";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = src/main/Prefix.pch;
INFOPLIST_FILE = resource/plist/Info.plist;
MARKETING_VERSION = 1.6.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down Expand Up @@ -4109,10 +4115,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23;
DEVELOPMENT_TEAM = "";
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = src/main/Prefix.pch;
INFOPLIST_FILE = resource/plist/Info.plist;
MARKETING_VERSION = 1.6.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Introduction

Little Go is a free and open source iOS application that lets you play the game of Go on the iPhone or iPad. You can play against another human (on the same device), or against the computer. The computer player is powered by the open source software library [Fuego](http://fuego.sf.net/). The minimum requirement for running the most recent version of Little Go is iOS 8.1.
Little Go is a free and open source iOS application that lets you play the game of Go on the iPhone or iPad. You can play against another human (on the same device), or against the computer. The computer player is powered by the open source software library [Fuego](http://fuego.sf.net/). The minimum requirement for running the most recent version of Little Go is iOS 9.0.

For more information about Little Go's features have a look at its [App Store page](https://apps.apple.com/us/app/little-go/id490753989?ls=1). A manual is also available in the "Help" UI area when you launch the app.

Expand All @@ -9,9 +9,14 @@ Little Go is released under the [Apache License](http://www.apache.org/licenses/

## Changes in this release

This is the Little Go bugfix release 1.5.1. It contains a fix for a bug that causes the app to crash during launch on iOS 9.x and below (#332). Thanks to Li Chen Ke and Dennis for reporting the issue.
This is the Little Go feature release 1.6.0. A selection of the most important changes are:

The previous release was the Little Go feature release 1.5.0. It adds a single new feature: 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.
- Addition of 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.
- 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).
- 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.
- The project has received its first code contribution! Thanks to Dan Hassin for making a user interface improvement (#346) and improving the project's software build (cf. pull rquests on GitHub) so that it now works out of the box for new contributors.

A number of bugs have also been fixed, among them three app crashes (#357, #361 and #362) and a major regression (#359).

The [ChangeLog](doc/ChangeLog) document has more details.

Expand Down
21 changes: 21 additions & 0 deletions doc/BUGS
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,13 @@ network-related.
2019-01-09 22:13:39.822132+0100 Little Go[17873:3109275] TIC Read Status [1:0x0]: 1:57


This message appears when the "More game actions" alert controller is displayed
on most devices and iOS versions (12, 13, 14):
2021-01-31 20:16:30.830921+0100 Little Go[12075:361501] [LayoutConstraints] Unable to simultaneously satisfy constraints.
I have been unable to find the cause for the problem even after extensive
debugging of the view hierarchy generated by UIAlertController.


Crash reports
-------------
For version 1.3.1 there were 3 exotic-looking crashes in the Crashlytics
Expand All @@ -155,3 +162,17 @@ seconds. After more than 15 minutes of calculations at full throttle there were
no signs of any problems. Tested while Instruments was attached to the session.
Since I currently don't know how to reproduce the crashes, I also can't provide
sensible counter-measures.


Minor bugs
----------
Minor bugs currently considered not to be worth to be recorded on the GitHub
issue tracker.

- Possibly only on iPad: Hold the device in Landscape. Make sure a board
position is selected in the board position table view (table view cell has
orange background color). Switch to another app for a few seconds. Switch
back. The table view cell is no longer selected. Tried to fix this by
setting the cell's "selected" and "highlighted" properties to YES, but didn't
work.

111 changes: 111 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,114 @@
--------------------------------------------------------------------------------
Version 1.6.0 (Feburary 26 2021)
--------------------------------------------------------------------------------
========
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 convenient
shortcut 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.

=================
GitHub issue list
=================
A list of all issues closed for this release is available on GitHub:
https://github.com/herzbube/littlego/milestone/18?closed=1


--------------------------------------------------------------------------------
Version 1.5.1 (March 23 2019)
--------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion doc/MediaFiles
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ wood-on-wood-12.aiff
the tool a second time. The values should now be correctly adjusted to the
noise level in the recording, so that you can simply click the "OK" button.
After the tool has applied its effect, you can playback the recording to
confirm that the noise has really been eliminiated.
confirm that the noise has really been eliminated.
- Select the portion of the recording that you want to use as the media file.
Select "File > Export Selection", in the following dialog click the "Clear"
button to remove the metadata stored by the iPhone in the recording, then
Expand Down
5 changes: 3 additions & 2 deletions doc/NOTES.Architecture
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ This document contains architecture notes on a variety of subjects.
Memory management
-----------------
This project uses manual reference counting using retain/release, i.e. no ARC.
An exception is the source code built for the "UI tests" target, which uses ARC.


Communication with Fuego
Expand Down Expand Up @@ -139,7 +140,7 @@ About the Play UI area
hierarchy. With a few exceptions, the view hierarchy is represented by a
corresponding hierarchy of container/child UIViewControllers. Not all
controller classes are view controllers, though: There are also a number of
controllers that manage gesture recognizing and alert messages.
controllers that manage gesture recognizing, animations and alert messages.
- Dynamic design: When the application launches, the main application view
controller creates an instance of the appropriate PlayRootViewController
subclass. This starts a first cascade of object creation during which all the
Expand All @@ -166,7 +167,7 @@ iPhone UI design:
that the user can place a stone. 3) Display scoring information (territory
markup, dead stones, etc.). 4) Provide user interaction so that the user
can mark dead stones during scoring.
- Because the Go board is square, but iOS device screens are oblong, the
- Because the Go board is square, but iOS device screens are rectangular, the
game view cannot take full advantage of all the available screen estate.
The game view is responsible for making the most of the current situation,
dynamically adjusting to any changes such as device orientation changes.
Expand Down
20 changes: 10 additions & 10 deletions doc/NOTES.Build
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,18 @@ used by the project.

Xcode version
-------------
Since version 1.4.0, the current build should work out of the box for
Since version 1.6.0, the current build should work out of the box for

Xcode 10.1
iOS base SDK 12.1
Xcode 12.3
iOS base SDK 14.3

If you want to build with a different setup you will probably encounter errors.
The most important thing to keep in mind is that the Xcode project's base SDK
and deployment target versions must match the versions you have in your
script/build-env.sh file, and that the Xcode deployment target must match the
deployment target in the Podfile.
deployment target in the Podfile. Since version 1.6.0 the base SDK version in
build-env.sh is found automatically, so in effect you should only need to make
changes to files if you change the deployment target.

If your setup is newer, the build may or may not work, depending on how much
Apple changed the compiler toolchain inside Xcode. If the build does not work,
Expand All @@ -36,6 +38,7 @@ list of configurations that have worked in the past:
- Xcode 5.1.1, iOS base SDK 7.1, available in 1.1.x
- Xcode 6.1.1, iOS base SDK 8.1, available in 1.2.x
- Xcode 7.3.1, iOS base SDK 9.3, available in 1.3.x
- Xcode 10.1, iOS base SDK 12.1, available in 1.4.x and 1.5.x


Device builds
Expand Down Expand Up @@ -148,7 +151,7 @@ Xcode build system configuration
--------------------------------
Important configuration settings in Xcode (both for the "Little Go" and the
"Unit tests" targets):
- IPHONEOS_DEPLOYMENT_TARGET = 8.1
- IPHONEOS_DEPLOYMENT_TARGET = 9.0
- This must match the deployment target in script/build-env.sh and in Podfile.
- FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/3rdparty/install"
- This is required to find the Fuego, Boost, SgfcKit and libsgfc++ frameworks.
Expand All @@ -173,7 +176,6 @@ Important configuration settings in Xcode (both for the "Little Go" and the
forked the project to create your own App Store build then you must register
a Firebase account and get your own Firebase configuration file.


Configuration settings for the "Unit tests" target
- All tests in this target are what Apple used to call "logic tests", i.e. unit
tests that exercise more or less isolated classes. The test source code is
Expand Down Expand Up @@ -272,17 +274,15 @@ Platform notes
iPhone Simulator.
- The base SDK is "Latest" so that a simple rebuild is sufficient after an
Xcode upgrade.
- The deployment target is set to 8.1 so that the application keeps running on
iOS 8.1 devices.
- The deployment target is set to 9.0 so that the application keeps running on
iOS 9.0 devices.


Upgrading the iOS SDK
---------------------
A few rough notes on what needs to be done when a new iOS SDK is installed on
the development machine:
- Delete (or backup) the 3rdparty folder
- Edit script/build-env.sh: Update the "Base SDK" variables to refer to the new
SDK version that was just installed
- In Terminal.app, run script/build-3rdparty-software.sh to perform a full
rebuild of all 3rdparty software packages
- If you haven't restarted Xcode, it might be a good idea to do so now
Expand Down
2 changes: 1 addition & 1 deletion doc/NOTES.Design
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ UI elements design notes
TableViewCell
- TableViewCellFactory creates a couple of table cell types that are not
available from the UIKit
- For the cell type that has a slider, I did a bit off debugging/inspection of
- For the cell type that has a slider, I did a bit of debugging/inspection of
the default UITableViewCell and its subviews; following are the results
- Size of a UITableViewCell (from its frame rect) = 320x45
- In a cell with style UITableViewCellStyleValue1 and accessoryType
Expand Down
Loading

0 comments on commit 789ee44

Please sign in to comment.