Composed 2.0.0-beta.3
- Tags:
- open-source
This is not the final fix, but it will at least prevent the crash.
We still need to find the root cause of this because it causes headers to not be refreshed, leading to visual bugs.
It'll be interesting to see if this also reduces the crash rate on iOS 16.
Initial release with support for adding Hashable
conformance on iOS, macOS, watchOS, tvOS, visionOS, and Linux.
Add PrivacyInfo.xcprivacy
Add PrivacyInfo.xcprivacy
Without this change we can see a crash in the app because the size for an unknown cell is requested. I think this is caused by the call to performBatchUpdates
triggering a layout before the indexes have updated.
This works around a bug from ~iOS 14 that causes the last N items in a section to ignore any updates applied to them when N items are deleted from the same section and the items are at the end of the section.
This also removes the conversion of inserts/removals in to updates, which reduces the need to account for these synthesised updates and also more closely matches the intent of the user; if something has truly moved or been updated the appropriate methods can be used, while removals and inserts that happen to result in the same position will not animate as a refresh.
This also fixes the crash that #6 was originally aiming to fix. It became much easier to reason about the changes once the reloads were not synthesised and were using the post-updates index paths. I think this probably fixes some other bugs. At a minimum the existing tests were updated or still passed, plus new tests have been added.
I also created https://github.com/opennetltd/ComposedUITests/pull/1, which adds some more tests to the integration project. These are mostly used to validate that the unit tests here are correct according to UICollectionView
, e.g. it does not crash, request any unexpected cells, or fallback to a reloadData
.
This is an improvement but it's not quite a fix yet.
I think the issue is in the transforming of the index paths. We probably need to work with a mixture of the current and the transformed index paths in ChangesReducer.removeElements(at:)
but I can't figure out the right mix and need to step away for a bit to clear my head of this, hopefully coming back with "fresh eyes."
I'm hoping this is a clearer API compared to using SelectionHandler.shouldSelect(at:)
or SelectionHandler.didSelect(at:)
.
The primary change here is to enable strict concurrency checks via ~~-Xfrontend -strict-concurrency=complete
~~ the StrictConcurrency
experimental featyre. The main knock-on effect of this is that @MainActor
has been added to most protocols and types.
I also:
name
parameter on the dependency declaration has been deprecatedUICollectionView
s
UITableView
. The PR in the main repo now includes these extensionsrequired
initialisers on ArraySection
have been removed
assertMacroExpansion
fails, it incorrectly displayed the expected source as the expanded source.assertMacroExpansion
test functionXCTFail
While using this function I was confused by the error message. I think it should include the actual expansion, not what's expected?
I also renamed the variable to try and make it a little clearer and (assuming this is correct) prevent a mistake like this again. This was done in 3c46da3712dec11e5d485c96b6b7d9d40b7c8f25 so can be easily reverted.
Fix crash when multiple updates create publishers simultaneously
Initial support for caching values in-memory
Fix deadlock when adding a new subscriber inside the closure of an update listener
Whenever Dependabot updates @hCaptcha/react-hcaptcha it doesn't provide the changelog. npm also doesn't link to the repo.
I think adding this key would fix both of these.
Support xcode-version-badge-markdown-file
option
This is a counterpart to https://github.com/Quick/Nimble/pull/916, which added support for watchOS to Nimble.
Note that this is a draft until a new version of Nimble is released with watchOS support. Until then this points at main
.
I'm also not sure if the tests will run on CI correctly because the tests require watchOS 7.4 to run and I'm not sure what version of watchOS the simulators are configured with.
I also found that the tests weren't compiling (using Xcode 13.2.1) so I've updated these too.
Support animations when using Binding
provided via PersistStorage.projectedValue
Increase deployment targets to fix archive builds using Xcode 13
Action will no longer push to existing branch when there are no changes
Thread-safety has been improved, including:
InMemoryStorage
Here's a small PR for a bug that I think has just gone unnoticed because we've never used the sectionInset
property of the UICollectionViewFlowLayout
, and we've never used the contentInset
property of UICollectionView
.
The issues looks to be that the layout's sectionInset
property is applied on a per-section basis, but the collection view's contentInset
was not being honoured.
It was also calculated using insetBy(dx:dy:)
, which will modify the width by -dx * 2
, which would double the expected insets.
Hotfix for changes to Google image searches. Clicking links will no longer open the AMP popover and the AMP popover should be removed from the bottom of the screen
Initial release
bundle exec rspec
from the root directory to see all new and existing tests passbundle exec rubocop -a
to ensure the code style is validIf the simulator is not booted when the status bar is updated it does not do anything and the default status bar is used.
Resolves #19317
xcrun instruments
fails with the error "xcrun: error: Failed to locate 'instruments'." This command will boot the simulator if it's not curerntly booted and then wait for it finish booting before terminating.
Use snapshot
while the override_status_bar
option is true
.
rspec ./fastlane/spec/actions_specs/app_store_connect_api_key_spec.rb:95 # Fastlane Fastlane::FastFile App Store Connect API Key raise error when no key_filepath or key_content
rspec ./fastlane/spec/actions_specs/import_from_git_spec.rb:162 # Fastlane Fastlane::FastFile import_from_git with caching works with new tags
rspec ./fastlane/spec/actions_specs/import_from_git_spec.rb:200 # Fastlane Fastlane::FastFile import_from_git with caching works with branch
rspec ./match/spec/importer_spec.rb:47 # Match Match::Runner imports a .cert, .p12 and .mobileprovision (iOS provision) into the match repo
rspec ./match/spec/importer_spec.rb:64 # Match Match::Runner imports a .cert, .p12 and .provisionprofile (osx provision) into the match repo
rspec ./match/spec/importer_spec.rb:81 # Match Match::Runner imports a .cert and .p12 without profile into the match repo (backwards compatibility)
rspec ./match/spec/importer_spec.rb:98 # Match Match::Runner imports a .cert and .p12 when the type is set to developer_id
rspec ./pilot/spec/build_manager_spec.rb:661 # Build Manager #transporter_for_selected_team with one team id
rspec ./pilot/spec/build_manager_spec.rb:677 # Build Manager #transporter_for_selected_team with inferred provider id
rspec ./pilot/spec/build_manager_spec.rb:633 # Build Manager #transporter_for_selected_team with itc_provider with nil Spaceship::TunesClient
rspec ./pilot/spec/build_manager_spec.rb:646 # Build Manager #transporter_for_selected_team with itc_provider with nil Spaceship::TunesClient
rspec ./pilot/spec/manager_spec.rb[1:1:2:2:1:1:1] # Pilot Pilot::Manager what happens on 'login' when using web session when username input param is given behaves like performing the spaceship login using username and password by pilot performs the login using username and password
rspec ./pilot/spec/manager_spec.rb[1:1:2:2:2:1:1] # Pilot Pilot::Manager what happens on 'login' when using web session when username input param is not given but found apple_id in AppFile behaves like performing the spaceship login using username and password by pilot performs the login using username and password
rspec ./sigh/spec/runner_spec.rb:142 # Sigh Sigh::Runner#devices_to_use devices for development
rspec ./sigh/spec/runner_spec.rb:152 # Sigh Sigh::Runner#devices_to_use devices for adhoc
Support for Date
s in UserDefaultsStorage
In RSS 2 the description may contain the full text and the content can be omitted when there is not a short version available: https://cyber.harvard.edu/rss/rss.html#hrelementsOfLtitemgt
However a JSON feed will not contain a content_html
field when the content is not provided.
This makes it hard to create both a JSON feed and an RSS 2 feed because providing content without a description will create a content:encoded
field but not a description
field in the RSS 2 feed.
My solution to this is to fallback to the item.description
when item.content
is not provided and generating a JSON feed.
This PR is to add support for running on watchOS. Since Xcode 12.5 watchOS has been supported but Nimble doesn't currently compile for watchOS.
A new target has been added to the project, along with explicit support in the Package.swift.
I don't believe anything here is a breaking change.
I have a fork of Quick that also supports watchOS. I'll create a PR for that if this PR gets approved and merged.
The package(s) being submitted are:
I have either:
swift ./validate.swift
.Or, checked that:
Package.swift
file in the root folder.swift package dump-package
with the latest Swift toolchain.https
) and the .git
extension.Partial fix for #31
Added to work around https://bugs.swift.org/browse/SR-14103
Overall this is pretty minor but when dealing with a lot of SingleElementSections
that are infrequently updated is does start to slow down.
I thought a faster approach would be to use generics on replace(element:)
to only check for nil
when the value is Optional
, but generics don't allow for this kind of overload.
Also added some basic tests. The performance tests show a ~9% performance increase.
Replacing https://github.com/composed-swift/ComposedUI/pull/15
This PR is being used to diff between the OpenNet fork.
Hopefully other PRs will be merged before this (e.g. https://github.com/composed-swift/Composed/pull/21), which should lead to this PR having no changes and purely to ensure some of the history is not lost.
We've discussed returning -1
not being great previously, but now we have the 2.0
branch we can make this change :)
Updated to match syntax in README.md.
Maybe these were intentionally left because the package has a minimum tools version of 4.2?
@bill201207 found that UINib(nibName:bundle:)
is a big part of the poor performance when our app launches.
Ultimately batching updates will help with a lot of things like this, but really that'll just be masking some of the performance issues so it's useful to find issues like this now.
This adds the ComposedLayout
and ComposedUI
packages, which will close #16.
The base for this is 2.0-beta
, which we can use for testing new changes, which can also break API.
If you go to the repo settings you can (temporarily) set the default branch to 2.0-beta
and we can add a note to the README stating this is the beta release and the stable release is available in the master
branch.
Once merged and these changes are made the READMEs for ComposedLayout
and ComposedUI
repos can be updated to point to this repo and their repos archived.
This is a new type of section that is similar to ComposedSectionProvider
, but rather than flattening each of the children in to a single SectionProvider
it flattens them in to a single Section
.
The ComposedUI
side of this has been updated to support multiple cells per section, with a convenience for FlatSection
that delegates the calls to each of the flattened sections.
This is a breaking change since the protocol requirements have changed. I have set the base of the PR to merge-all-libraries
since that's also a breaking change and this PR relies on those changes.
edit: We've moved to our own fork to allow for more rapid development. The latest changes are in https://github.com/opennetltd/Composed/tree/feature/FlatSection, which will eventually be merged back in to this repo once some of the other PRs/issues have been resolved.
Add Persister
/Persisted
extensions on watchOS
builder(for:)
function to aid with building complex type (thanks to @randomeizer)Improve API for Subscription/Cancellable
Add documentation
Much better handling of optional values, which also allows for non-optional values
Add support for --output
flag to select
subcommand
Build docs and attach a release binary to releases
Release candidate 1 for 1.0 stable release
Has lots of tests but little documentation. API has changes a lot since initial 0.1.0 but I’m happy with it now. Hopefully it is consistent and (once docs are added) easy to use.
Updated App Store URL generation
Fixed error when loading app store from generated URLs Moved logic for generating App Store URL to the AppMetaData struct Improved documentation around App Store URLs