Skip to content

Commit

Permalink
final tidying up for release 1.7.0
Browse files Browse the repository at this point in the history
  • Loading branch information
herzbube committed Sep 18, 2022
1 parent f6d5a54 commit 1f70874
Show file tree
Hide file tree
Showing 12 changed files with 274 additions and 52 deletions.
16 changes: 8 additions & 8 deletions Little Go.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -4465,13 +4465,13 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23;
CURRENT_PROJECT_VERSION = 24;
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;
MARKETING_VERSION = 1.7.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -4487,12 +4487,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23;
CURRENT_PROJECT_VERSION = 24;
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;
MARKETING_VERSION = 1.7.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down Expand Up @@ -4695,12 +4695,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23;
CURRENT_PROJECT_VERSION = 24;
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;
MARKETING_VERSION = 1.7.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down Expand Up @@ -5019,12 +5019,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 23;
CURRENT_PROJECT_VERSION = 24;
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;
MARKETING_VERSION = 1.7.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@ Little Go is released under the [Apache License](http://www.apache.org/licenses/

## Changes in this release

This is the Little Go feature release 1.6.0. A selection of the most important changes are:
This is the Little Go feature release 1.7.0. A selection of the most important changes are:

- 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.
- 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.
- 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.

A number of bugs have also been fixed, among them three app crashes (#357, #361 and #362) and a major regression (#359).
A number of bugs have also been fixed, among them various speculative fixes for app crashes (#366, #369, #370 and #364) and a painful regression that would sometimes break Ko detection (#372).

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

Expand Down
11 changes: 9 additions & 2 deletions doc/BUGS
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ than the platform in Little Go's Podfile (which in turn leads to
IPHONEOS_DEPLOYMENT_TARGET being set). Little Go's Podfile contains a snippet
that should prevent this "minimum supported deployment target" compiler warning,
at the cost of generating other compiler warnings (see next section). If the
warning still occurs thhis means that the platform version in Little Go's
warning still occurs this means that the platform version in Little Go's
Podfile is outdated.


Expand Down Expand Up @@ -60,7 +60,14 @@ these enumerators go away I may have to start using a new zip library.

Xcode analyze issues
--------------------
No issues.
Xcode analyze finds two issues in the nanopb source code, both in the static
function initialize_pointer_field:
- Dereference of null pointer
- Null pointer passed as 1st argument to memory set function
I didn't analyze the caller sites of the function to see for myself whether
these are real issues, I am simply trusting that they are not because Google
protobuf is a heavily used and tested library that does not contain such null
pointer issues.


Runtime messages in the Xcode debub console
Expand Down
105 changes: 105 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,108 @@
--------------------------------------------------------------------------------
Version 1.7.0 (September 16 2022)
--------------------------------------------------------------------------------
========
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 f6aa17eac62bd5594200208d7a657e08297073a4). The manual
testing script in the TESTING document can now be played through by anyone.

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


--------------------------------------------------------------------------------
Version 1.6.0 (Feburary 26 2021)
--------------------------------------------------------------------------------
Expand Down
39 changes: 39 additions & 0 deletions doc/NOTES.Build
Original file line number Diff line number Diff line change
Expand Up @@ -288,3 +288,42 @@ the development machine:
rebuild of all 3rdparty software packages
- If you haven't restarted Xcode, it might be a good idea to do so now
- In the Xcode project, rebuild the "Little Go" target


Xcode/iOS compatibility issue when running a build on the device
----------------------------------------------------------------
Given the device build was done correctly (see "Device builds" further up in
this document) you should be able to just run the build from Xcode. One
obstacle you may encounter, however, is that Xcode refuses to run the build
because it somehow cannot cope with a newer iOS version that is installed on
the device. The error message is this:

Failed to prepare device for development.

This operation can fail if the version of the OS on the device is incompatible
with the installed version of Xcode. You may also need to restart your mac and
device in order to correctly detect compatibility.

If this error persists even after reconnecting the device to your mac, then the
only fix for this problem that I know of is by manually downloading/installing
an Xcode Developer Disk Image. The GitHub project I use as a source for such
disk images is [1].

1. Download the disk image .zip file that matches the iOS version on the device.
2. Go to your XCode app in the Application folder & open its content.
3. Locate the "DeviceSupport" folder of the appropriate platform.
Example path: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
4. Copy the content of the disk image .zip file into the "DeviceSupport" folder.
5. Restart Xcode.

When you now try again to run the build Xcode should display this message for
a few moments:

Planes Objekt is busy: Fetching debug symbols for Planes Objekt

After that the build should run just fine.

Note: I encountered this problem for the first time with Xcode 13.2.1 and the
device having installing iOS 15.4.

[1] https://github.com/mspvirajpatel/Xcode_Developer_Disk_Images
9 changes: 7 additions & 2 deletions doc/NOTES.DeviceSupport
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,16 @@ iOS 10
- iPhone 5C
- iPad 4th Generation

iOS 9
iOS 9 - minimum required version since app version 1.6.0 (Feburary 26 2021)
- iPhone 4S
- iPod Touch 5th Generation
- iPad Mini 1st Generation
- iPad 2
- iPad 3rd Generation

No information about older iOS versions were collected.
No information about device support in older iOS versions was collected.

iOS 8.1 - minimum required version since app version 1.3.0 (September 12 2016)
iOS 7 - minimum required version since app version 1.1.0 (August 10 2014)
iOS 6.1 - minimum required version since app version 1.0.0 (January 06 2014)
iOS 5 - minimum required version since app version 0.10.0 (March 01 2013)
21 changes: 15 additions & 6 deletions doc/NOTES.Marketing
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ to advertise the app in Apple's app store.

App Store page content
----------------------

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 this version of Little Go is iOS 9.0.

Features:
Expand All @@ -21,6 +20,8 @@ Features:
- Discard moves (aka "undo")
- Display move numbers and coordinate labels
- Zoom & scroll board
- Create and edit board and move annotations (e.g. good/bad move, good position for black/white, etc.) and add textual notes to a position
- Mark intersections on the board with symbols, markers and labels, and draw arrows or lines on the board
- Display player influence (aka territory statistics) for an estimate who owns an area
- Computer vs. computer game for entertainment
- Save & load games to/from the archive
Expand Down Expand Up @@ -53,8 +54,12 @@ App Store Screenshots are prepared in the simulator. The content is the same
for all devices. iPhone screenshots are taken in portrait orientation, iPad
screenshots are taken in landscape orientation.

Before starting to take screenshots, prepare each simulator as follows:
Screenshots with the following dimensions are required by the App Store:
- iPhone 6.5 inch display (e.g. iPhone 13 Pro Max)
- iPhone 5.5 inch display (e.g. iPhone 8 Plus)
- iPad 12.9 inch display (e.g. iPad Pro 4th generation)

Before starting to take screenshots, prepare each simulator as follows:
- Remove the app from the simulator
- Install a clean new build
- Add the following .sgf files to the archive:
Expand All @@ -70,16 +75,20 @@ Before starting to take screenshots, prepare each simulator as follows:
- Load "Lee's Broken Ladder Game.sgf" as a human vs. human game
- Go to board position 97


Screenshots
- Screenshot 1: Start placing a stone, then take a screenshot while the
magnifying glass is visible and the cross-hair is at intersection L14
- Screenshot 2: Take a screenshot from the "Human vs. computer" tab in the
"New game" screen
- Load "Ear-reddening game.sgf", then switch to scoring mode
- Screenshot 3: Take a screenshot from board
- Load "Ear-reddening game.sgf", then switch to scoring mode. Mark the stone
on T2 (from the last move of the game) as alive should Fuego detect it as
dead (it's alive because white cannot capture it immediately due to ko).
The game result should be B+3.
- Screenshot 3: Take a screenshot from the board
- Screenshot 4: Take a screenshot from the "Score" tab in the "Game info" screen
- Screenshot 5: Take a screenshot from the "Settings" screen
- Load "Blood-vomiting game.sgf", go to board position 36 and switch the
annotation view to the description page
- Screenshot 5: Take a screenshot from the board
- Screenshot 6: Take a screenshot from the "Settings > Display" screen
- Screenshot 7: Take a screenshot from the "Archive" screen
- Screenshot 8: Take a screenshot from the "View archive content" screen when
Expand Down
7 changes: 7 additions & 0 deletions doc/README.developer
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ Folder structure
| marketing material. See the README file in the folder.
+-- src This folder contains the project's source code.
+-- test This folder contains the project's unit test files.
+-- uitest This folder contains the project's UI test files.


Document reference
Expand Down Expand Up @@ -127,6 +128,12 @@ BUGS
messages printed to the Xcode debug console, unfixed crash reports, etc..
This document complements the issue list on the project's bug tracker.

TESTING
This document has information about how the project's automated testing
facilities work. It also contains a script for manual testing of most of the
application's features. The intent is to execute the script before a new
version is released to the App Store.


Other files
-----------
Expand Down
Loading

0 comments on commit 1f70874

Please sign in to comment.