Releases: TwoRingSoft/Pippin
Releases · TwoRingSoft/Pippin
[Pippin 11.0.0] 2018-09-23
Changed
- Make
Defaults
EnvironmentallyConscious
. - Functions on
ActivityIndicator
to show and hide UI now have completion block parameters. - In
Environment.logLevel
, always returnLogLevel.verbose
when running UI tests.
Added
- Extension on
UserDefaults
to set and a key/value pair and immediately synchronize the backing store. - Parameter to specify a title font on
UIButton
factory function, and use it inInfoViewController
for the app detail stack buttons. TouchVisualization
protocol andCOSTouchVisualizer
adapter.- Parameterize
DismissableModalViewController
's insets instead of hardcoding it to inset by 30 from the top to avoid a status bar, something not all apps may want to do. - Extension on
UIView
to round corners and style borders. - Keep a reference to the
Bundle
containing any shared assets catalog, which defaults to the main bundle if one isn't specified inEnvironment
's init. - A
LaunchArgument
to wipe any stored user defaults the app uses at launch. - A static extension function on
ProcessInfo
to test if any launch argument was provided during app launch, to help test app-specific launch arguments.
Fixed
- Fixed layout issues in
DismissableModalViewController
when there is no title to display or in less than full-screen layouts. Date+TimeElapsed
now returns sub-minute scale results as a string describing seconds elapsed.InfoViewController
now shows in-app acknowledgements using a styledNSAttributedString
.
[Pippin 10.0.0] 2018-09-05
Changed
- Rewrite
NSDate+Components
andNSDate+TimeSince
in Swift and rename toDate+Components
andDate+ElapsedTime
, respectively.
Locator
- Make
Locator
s conform toDebuggable
, and provide debugging controls forCoreLocationSimulator
. - Instead of setting a property on
CoreLocationSimulation
with the location data, pass in the raw string from e.g. the environment variable value and parse it internally. - Add new
LocationError
enum and changeLocator
's callback to pass this type. Currently just wrapsNSError
s reported byCoreLocation
.
Debugging
DebugFlowController
now delegates model deletion back to the consumer app, instead of directly deleting the sqlite database files. Prevents a forced restart of the app to reconstruct the database.DatabaseFixsturePickerViewController
now requires a parameter of typeEnvironment
instead ofCoreDataController
, which it can get from the environment parameter, as well as logging/alerting/etc.
Model
- Always require a
NSManagedObjectContext
for fetching, instead of falling back to acquiring a new vended context. Helps with context confinement of model entity instances. - Instead of requiring an instantiated
NSManagedObjectModel
in init, just get the bundle identifer of the bundle that contains it, and use the model name it already has to construct the instance internally.
CrudViewController
- No longer sets the Add Item cell's accessibility label to the reuse identifier of the cell. Now just lets the accessibility subsystem automatically infer it.
- Remove
reloadTableView()
as it is already used inreloadData()
.
Added
- Add case to
LaunchArgument
to delete all core data models on launch. - Add asynchronous
Operation
subclass,AsyncOperation
. - Add function on
CoreDataController
to directly vend a context, instead of through a closure parameter viaperform(with:)
. - Added property on
Environment
to hold reference to aLocator?
.
Fixed
- Hide debugging menu button when the menu is visible.
- Prevent double insertions of the same row in
CrudViewController
, due to multiple callbacks from theNSFetchedResultsController
(in testing, also observed multipleNotification
s sent for the same insertion).
Version 4
Breaking changes
- TextAndAccessoryCell got another accessory UIImageView on the other side of the label, and they've been renamed to "leading" and "trailing".
Other changes
- Standardizes all cell subclasses to be transparent with no selection style by default.
- Add a dimming function for TextCell.
- Add more launch arguments for simulating In App Purchase scenarios.
- Add show/hide cell separator functions in TextCell, with it off by default.
Version 3
Breaking changes
The shared assets have been removed to a private repo. Also, this updates the required platform to iOS 11.
Additions & updates
- Alerter protocol with SwiftMessages adapter
- Debugging protocol, with some refactoring of existing debugging flow/view controllers
- random number extensions on Int/Double
- add disclosure indicators on some custom UITableViewCells
- typaliases for some common closure types
- extension on UIDevice for determining if running in simulator
- more use of the Environment struct internally, and renamed some of its properties
- updates the Travis.ci image to use Xcode 9.2
- updates to InAppPurchaseVendor protocol
Version 2
2.0.0 2017-12-31
Patches
- Fix warnings:
- deprecated usage of
characters
property of a Swift string to determine its length - unreachable code around fatal error
- deprecated usage of
- Improvements:
- FlowController
- Debugging
Additions
- Add Core protocols:
- Alerter + SwiftMessagesAdapter
- InAppPurchaseVendor
- Fonts
- Environment struct
- LaunchArgument/EnvironmentVariable enums
- Allow passing custom managed object model to CoreDataController
- FormController now manages UITextViews
- Theming/customizing CrudViewController:
- Custom cells
- Empty state
- Look/feel
Breaking changes:
- Update String rDNS constructors
- Require iOS 11
- Reorganize debugging sources under Core
- Remove default log level function