Skip to content

Commit

Permalink
final tidying up for release 2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
herzbube committed May 10, 2024
1 parent ce6d137 commit 0a517ad
Show file tree
Hide file tree
Showing 14 changed files with 351 additions and 81 deletions.
16 changes: 8 additions & 8 deletions Little Go.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -4917,13 +4917,13 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 26;
CURRENT_PROJECT_VERSION = 27;
DEVELOPMENT_TEAM = P7NZKNP5L2;
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.7.1;
MARKETING_VERSION = 2.0.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand All @@ -4940,12 +4940,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 26;
CURRENT_PROJECT_VERSION = 27;
DEVELOPMENT_TEAM = P7NZKNP5L2;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = src/main/Prefix.pch;
INFOPLIST_FILE = resource/plist/Info.plist;
MARKETING_VERSION = 1.7.1;
MARKETING_VERSION = 2.0.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down Expand Up @@ -5143,12 +5143,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 26;
CURRENT_PROJECT_VERSION = 27;
DEVELOPMENT_TEAM = P7NZKNP5L2;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = src/main/Prefix.pch;
INFOPLIST_FILE = resource/plist/Info.plist;
MARKETING_VERSION = 1.7.1;
MARKETING_VERSION = 2.0.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down Expand Up @@ -5482,12 +5482,12 @@
CODE_SIGN_ENTITLEMENTS = resource/plist/Entitlements.plist;
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 26;
CURRENT_PROJECT_VERSION = 27;
DEVELOPMENT_TEAM = P7NZKNP5L2;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = src/main/Prefix.pch;
INFOPLIST_FILE = resource/plist/Info.plist;
MARKETING_VERSION = 1.7.1;
MARKETING_VERSION = 2.0.0;
PRODUCT_BUNDLE_IDENTIFIER = ch.herzbube.littlego;
PRODUCT_NAME = "Little Go";
PROVISIONING_PROFILE_SPECIFIER = "";
Expand Down
4 changes: 2 additions & 2 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Little Go
Copyright 2011-2022 Patrick Näf (herzbube@herzbube.ch)
Copyright 2011-2024 Patrick Näf (herzbube@herzbube.ch)

The information in this file is also available when displaying the "About" and
the "Licenses" UI area from within the running application. The license files
Expand Down Expand Up @@ -33,7 +33,7 @@ license, is available from
https://github.com/matej/MBProgressHUD

Logging is achieved via the Cocoa Lumberjack framework, copyright by Deusty LLC
and released under the BSD 2-Clause license. The original source code is
and released under the BSD 3-Clause license. The original source code is
available from
https://github.com/CocoaLumberjack/CocoaLumberjack

Expand Down
17 changes: 8 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
## 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 9.0.
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 15.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.
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 user manual is also available, both within the app (in the "Help" UI area when you launch the app) and [online](https://littlego-usermanual.herzbube.ch/).

Little Go is released under the [Apache License](http://www.apache.org/licenses/LICENSE-2.0) (2.0).


## Changes in this release

This is the Little Go bugfix release 1.7.1. It contains two fixes for bugs that caused the app to crash (#397 and #398).
This is the Little Go feature release 2.0.0. A selection of the most important changes are:

The previous release was the Little Go feature release 1.7.0. A selection of the most important changes are:
- The app now has support for game variations (#380). A new tree view was added at the bottom of the Play tab that displays the tree of nodes formed by all variations of the game. New game variations can be created by going back to an older node and playing a move - the app will automatically insert a new game variation. Finally, a number of new settings were added under "Settings > Tree view" and "Settings > Game variation".
- 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](https://littlego-usermanual.herzbube.ch/). Many thanks go to Andreas Fischlin who gave me the impetus to take on this long overdue task.
- Support for iOS 9 up to 14 has been dropped (#409). The minimum required version is now iOS 15.0. This cut is not as bad as it may seem at first glance because even the newest devices that are now no longer supported are quite old - the newest of these devices were released by Apple 10 years ago, and were discontinued 7-8 years ago.

- 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 various speculative fixes for app crashes (#366, #369, #370 and #364) and a painful regression that would sometimes break Ko detection (#372).
As usual a number of bugs have also been fixed, although most of them are rather obscure and/or not very impactful.

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

Expand All @@ -31,4 +29,5 @@ If you are interested in Little Go as a developer, you should clone the GitHub s

* [Project website](https://littlego.herzbube.ch/)
* [App Store page](https://apps.apple.com/us/app/little-go/id490753989?ls=1)
* [User manual](https://littlego-usermanual.herzbube.ch/)
* [This Open Hub page](https://www.openhub.net/p/littlego) provides mildly interesting source code statistics
118 changes: 118 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,121 @@
--------------------------------------------------------------------------------
Version 2.0.0 (2024-05-09)
--------------------------------------------------------------------------------
========
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.

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


--------------------------------------------------------------------------------
Version 1.7.1 (2022-09-23)
--------------------------------------------------------------------------------
Expand Down
6 changes: 6 additions & 0 deletions doc/CodingGuidelines
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,9 @@ Other stuff
-----------
- Everything should be documented with Doxygen documentation blocks; exceptions
are possible but should remain rare
- Use property chaining sparingly. When interfacing with SgfcKit property
chaining like this
SGFCReal someRealValue = sgfProperty.propertyValue.toSingleValue.toRealValue.realValue;
is acceptable because SgfcKit/libsgfc++/SGFC can be relied upon to contain
enough pre-processing checks and sanitizing that a property value matches the
requirements of the property.
52 changes: 50 additions & 2 deletions doc/MediaFiles
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,19 @@ wood-on-wood-12.aiff
that the System Sound Services function AudioServicesPlaySystemSound() is
capable of playing.

wooden-background-tile.png
--------------------------
The source for the image is this:
http://www.psdgraphics.com/backgrounds/light-wooden-background/

To make the image tileable, I edited the original image in The Gimp like this:
- Cut 11 pixels at the bottom to get rid of the watermark "www.psdgraphics.com".
The resulting image is sized 1280x949.
- Increase the image size to 1280x1898, i.e. double the height.
- Copy the image to a second layer and flip it vertically.
- Align the second layer so that it becomes a continuation of the original
image. For alignment I use a horizontal guide line at y-coordinate 949.
- Adjust the size of both layers to the image size.

Icon files
----------
Expand Down Expand Up @@ -64,7 +77,6 @@ Icon files

[1] https://developer.apple.com/design/human-interface-guidelines/ios/icons-and-images/


stone-black.png, stone-white.png, stone-crosshair.png
-----------------------------------------------------
- The original source for these files is the file stones.svg, which in turn
Expand Down Expand Up @@ -115,7 +127,6 @@ stone-black.png, stone-white.png, stone-crosshair.png

[1] https://github.com/justinweiss/dragongoclient


App Store icon
--------------
The original App Store icon used transparency. It was not shipped as part of
Expand All @@ -134,6 +145,43 @@ If the original image with transparency is needed in the future, it can be
restored from vesion control history. The file was originally located under
"resource/image/appicon-appstore@2x-with-transparency.png".

gogrid2x2.svg
-------------
- The icon is supposed to depict a section of a Go board with 2 stones
- Icon design guidelines:
- The width of the Go board grid lines must be 1 point. 2 points is
already too bulky.
- The stones must be relatively small. If they are drawn with a realistic
size (in relation to the cells formed by the grid lines) they make the
icon look too heavy.
- The icon is designed for 23x23 points, not for 22x22 points as recommended
by the HIG for bar button icons. The reason: The icon design requires
the icon to be split into three equally large parts. Together with 1 point
width for the Go board grid lines there is no way to make use of exactly
22 points - there is either a choice of making the icon smaller or larger
than 22 points. Smaller = 20 points, larger = 23 points. I decided to make
the icon larger so that it can also be used as a tab bar icon.
- Bitmaps for resolutions greater than 1x can be created by simply
downscaling the vector graphics
- To create the bitmap for the 1x resolution, first downscale the vector
graphics, then translate all parts of the icon by +/- 0.5 pixels, for both
x- and y-axis. The goal is to align the grid lines with pixel boundaries.
If no translation is made before the export then the lines will appear
anti-aliased in the resulting bitmap.

pass.svg
--------
- The icon is supposed to depict something like an ellipsis ("..."), indicating
that "time passes".
- Maybe not the most logical depiction, but at least it's a distinct and simple
symbol - it's also stolen from Sente's Goban.
- A bit unfortunate is that the "More" navigation controller uses practically
the same icon.

computer-play.svg
-----------------
- The icon combines the icon for "play" with a computer icon, trying to
transport the meaning "computer plays" or "computer makes a move".

go-motifs: stone-black-icon.svg, stone-white-icon.svg
-----------------------------------------------------
Expand Down
Loading

0 comments on commit 0a517ad

Please sign in to comment.