-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Fabric] Reanimated for Fabric #3206
Merged
Changes from all commits
Commits
Show all changes
419 commits
Select commit
Hold shift + click to select a range
6a27c00
Use single lock when updating newest shadow node
tomekzaw 312ffed
Make it compile on Android again
tomekzaw f20a321
Improve transaction implementation
tomekzaw 82f14d9
Fabric init on ios
graszka22 e6cbd07
Remove listeners to avoid memory leaks
graszka22 b1f8448
Events on UI thread
piaskowyk db69d0a
Clena up events
piaskowyk 628306f
Add const
piaskowyk 5658b49
Fix a lot of things
tomekzaw 628efa4
Works
piaskowyk 248a59e
Fix crash when animating layout props of recently removed view
tomekzaw ead048b
Remove dispatcher
piaskowyk 88d0857
Add BokehExample
tomekzaw c74d4ae
Fabric Android init - call createAndInstallIfNeeded
graszka22 2af6493
Remove old ShadowNodes from `NewestShadowNodesRegistry`
tomekzaw be73ccc
Merge branch 'fabric-events-v2' into fabric
piaskowyk cf7ab11
Merge branch 'fabric' into @graszka22/fabric-android-init
graszka22 aab6db5
Review changes
graszka22 4e80cca
Review changes
graszka22 35a658e
Review changes
graszka22 0ed82d2
Improve and cleanup `NewestShadowNodesRegistry`
tomekzaw 7f987c9
Return `nullptr` instead of argument
tomekzaw f770359
Move implementation from `cloneWithNewProps` to `performOperations`
tomekzaw cefbcc5
Add `const`
tomekzaw fcb2c24
Rename function to `getUIManagerFromRuntime`
tomekzaw fd6d0d8
Remove initializeForFabric
piaskowyk cdb3996
Apply changes from facebook/react-native#33688
tomekzaw 6d1066a
Replace `getShadowTreeRegistryFromUIManager` with `UIManager::getShad…
tomekzaw 3eeb0af
Patch-package `UIManagerBinding.cpp` so it works on both platforms
tomekzaw 6e0e02b
Improve comments
tomekzaw 542352e
Add weak pointer
piaskowyk 7c64357
Add assert
piaskowyk 25480b6
Bump react-native-gesture-handler in FabricExample to 2.4.1
tomekzaw 4996e70
Weak self
piaskowyk 63b2f4f
Merge branch 'fabric-remove-initForFabric' into fabric
piaskowyk 66d1251
Add asserts and TODOs
tomekzaw 603f901
Added hook
piaskowyk 73b1b5a
Android events
graszka22 7f6b572
Replace `getReactSchedulerFromBinding` with `Binding::getScheduler`
tomekzaw 031fe8b
Move event listener implementation to `NativeReanimatedModule::handle…
tomekzaw 892959d
Keep `jsi::Runtime &` instead of pointer
tomekzaw 8252a26
Remove `getUIManagerFromRuntime`
tomekzaw befe45e
Remove `getUIManagerFromBinding`
tomekzaw 0d5f243
Reorder things
tomekzaw 121e63e
Added Surface
piaskowyk 64570dd
Fix event listeners on iOS reload
graszka22 6181383
Revert patch
piaskowyk a1155cf
Clean up v1
piaskowyk c62de35
Clean up v2
piaskowyk 0776cd4
Refactor v1
piaskowyk 82c9dcf
Refactor v2
piaskowyk 11f55cf
newestShadowNodesRegistry as field
piaskowyk bc864e1
clear patch
piaskowyk 1a24e15
remove assert
piaskowyk 38db3f2
remove unused imports
piaskowyk 0c7ceca
Added ifdef
piaskowyk a330e47
Add BubblesExample
tomekzaw cdd3fce
Add `ShadowNodeWrapper` in TypeScript
tomekzaw 06fcf00
Restore original `ConfigHelper.ts`
tomekzaw 61f026f
Add missing newline
tomekzaw 946838b
Rename back to `REAEventDispatcher.m`
tomekzaw 2736566
Improve App.tsx
tomekzaw cf51c54
Fix handling events from Gesture Handler
tomekzaw e36b9d4
Improve event handling
tomekzaw 2efd0f8
Improvents after review
piaskowyk 0ca3638
Typo
piaskowyk 25b9008
Remove `rt_` field from NativeReanimatedModule
tomekzaw 53517f2
Typo
piaskowyk 592afb4
Typo v2
piaskowyk bbb97ea
Name update
piaskowyk c95174b
Merge branch 'fabric-events-v2' into fabric
piaskowyk 6c8d2dd
Remove `getNewestShadowNodesRegistry`
tomekzaw 2276aa5
Fix `NativeReanimatedModule` constructor call on Android
tomekzaw b6ced4f
Remove `empty` and `clear` methods
tomekzaw fd91360
Rename `installUIManagerBindingAfterReload`
tomekzaw 6d333c7
Merge branch 'main' into fabric
tomekzaw 14ba825
Remove leftover `console.log`
tomekzaw 485d6b2
Fix fast refresh when changing onScroll handler
graszka22 c7bc30b
Set NewestShadowNodeRegistry
piaskowyk 044fc19
Move initialization from `initHybrid` to constructor
tomekzaw f7d17ed
Call `removeEventListener` on Android
tomekzaw 1be47df
Merge branch '@graszka22/fix-onscroll-fast-refresh' into fabric
tomekzaw 0f81a5a
Resolve conflicts
piaskowyk 41956a2
Merge
piaskowyk 46fba26
Add `react-native-gesture-handler`
tomekzaw 94d3e45
Fix runtime warnings related to calling UI API not from main thread
tomekzaw 600a69d
Update `ScreenStackHeaderConfigExample`
tomekzaw 6c338c6
Run `yarn react-native init FabricExample --version 0.69.0-rc.0`
tomekzaw 9a8f37a
Update JS and iOS
piaskowyk 1c8cf66
Bump FabricExample to 0.69.0-rc.0
tomekzaw 61297f8
Update Android updateProps
piaskowyk 36d74cf
Merge branch 'fabric' of github.com:software-mansion/react-native-rea…
piaskowyk cb64df0
Merge branch '@tomekzaw/FabricExample' into fabric
tomekzaw 15bde30
Merge branch 'fabric' of https://github.com/software-mansion/react-na…
tomekzaw 5e42d8a
Start with measure and scrollTo
piaskowyk fd7cb3d
Restore `react-native-screens` on Android
tomekzaw ccf3e1b
Restore `react-native-screens` on iOS
tomekzaw 2e5ae32
Add animated text width example
tomekzaw ffc3c3d
Improve Gesture Handler example
tomekzaw dcc2fae
Add assert
tomekzaw 8da1b8d
Add `RCT_NEW_ARCH_ENABLED` flag in CMakeLists.txt
tomekzaw 425c75d
Update plugin
piaskowyk 0f390df
Merge
piaskowyk 890c112
Compiltion for Paper
piaskowyk d0d65bd
Add UI thread check in event listener on iOS
tomekzaw 1c5c213
Add missing return (thx Wojtek)
tomekzaw abdc18e
Add `useJSThreadKiller` hook
tomekzaw 7eb7d3a
Bump version
tomekzaw f92fdca
Add comment
tomekzaw 5a541bf
Remove unused `uiManagerValue`
tomekzaw ed7e659
Add `_IS_FABRIC` flag on Android
tomekzaw 494eb1c
Bump dependencies
tomekzaw 97b5787
Fix TypeScript errors
tomekzaw b39f6e9
Update Podfile.lock
tomekzaw 75575f1
Move `asObject` outside the loop
tomekzaw 8c62321
Fix example names
tomekzaw 463bdb2
Move `View` component to `Screen`
tomekzaw 29522ff
Update ios/REANodesManager.mm
tomekzaw 691004c
Split `_updateProps` into `_updatePropsPaper` and `_updatePropsFabric`
tomekzaw 65de4ad
Reorder functions
tomekzaw fd38859
Add `#ifdef RCT_NEW_ARCH_ENABLED` in Fabric-only sources
tomekzaw 30043c9
Add `#ifdef` for `dispatchCommand` function
tomekzaw c08799f
Minor TS improvements
tomekzaw e97c7f9
Remove from package.json
tomekzaw a698241
Remove TODO
tomekzaw b13d5c4
Restore `_scrollTo` in global
tomekzaw ed8ce0f
iOS works
piaskowyk c7e82d8
Merge
piaskowyk 235b1d9
UpdateProps definition for Paper
piaskowyk 5c17b5c
Fix example names vol. 2
tomekzaw 78711e5
Move `ShadowNodeWrapper` type to other `commonTypes.ts`
tomekzaw a9bc72d
Update tsconfig.json
tomekzaw 550a484
Remove TODO
tomekzaw 2d43f62
Remove comment
tomekzaw 56f72ca
Reorder method names in warning message
tomekzaw 509f310
Layout props on Paper
piaskowyk 6613d0a
Merge branch 'fabric' of github.com:software-mansion/react-native-rea…
piaskowyk a87f17b
Add `fabric_enabled` in Podspec
tomekzaw 8449eb6
Merge branch 'fabric' of https://github.com/software-mansion/react-na…
tomekzaw 4f92ba5
Fix circular dependency
tomekzaw 466c6bc
Trigger CI
tomekzaw 7863705
Trigger CI again
tomekzaw b68b4c2
Trigger CI again and again
tomekzaw a449e4f
Fix ESLint and Prettier errors
tomekzaw d967696
FabricUIManager Events
piaskowyk 5f57380
Fabric + Paper on Android (#3223)
piaskowyk e49e1ab
Update CMake
piaskowyk 096e1f8
Layout Animation for iOS
piaskowyk 482e591
Fix cpplint errors
tomekzaw 1d8e337
Add ifdefs for `configureProps`
tomekzaw b2867d9
Remove explicit config for building Reanimated in FabricExample from …
tomekzaw 7c927e3
Eliminate code repetition while making linter happy
tomekzaw 7cae530
Fix Java linter
tomekzaw e91bb84
Merge branch 'fabric' of github.com:software-mansion/react-native-rea…
piaskowyk 75c6b1a
Paper+Fabric Improvements
piaskowyk 4cdade4
Improve ifdefs
tomekzaw f6b427d
Temporarily comment out `useJSThreadKiller`
tomekzaw 66ac8b9
CMake+Gradle update v1
piaskowyk 1e044f4
Merge branch 'fabric' of github.com:software-mansion/react-native-rea…
piaskowyk 976f777
Gradle def variable
piaskowyk 20270a8
Revert
piaskowyk 35a9c64
Task ordef for Fabric
piaskowyk 3d64c47
Add missing include for JSC
piaskowyk 8f87e26
Fix ts check
graszka22 fbb8354
Remove unnecessary `#pragma once`
tomekzaw 4cfe61e
Reorder field initialization
tomekzaw 101b41f
Add newlines
tomekzaw 6301cb0
Add min distance
tomekzaw 59397c2
Rename file to `fabricUtils.ts`
tomekzaw 5d43a04
Rename `shareableNode` to `shadowNodeWrapper`
tomekzaw 960de70
Remove duplicated import
tomekzaw e6f940b
Schedule calling `dropAllGestureHandlers on main queue` from software…
tomekzaw 8a1b52b
Uncomment `RCTLogError` call
tomekzaw 79352a1
Minor improvements in `NativeProxy.mm`
tomekzaw 1881606
Fix linking folly for React Native 0.68 on Android
tomekzaw 54716ef
Fix error "Duplicate class com.facebook.jni.CppException" when buildi…
tomekzaw b236434
Clean up Gradle
piaskowyk f17b54c
Merge
piaskowyk 31aa96d
Merge branch 'main' into @piaskowyk/rip-rea-1
tomekzaw b9980e1
Remove rea1 type
piaskowyk b1ac95c
Merge branch '@piaskowyk/rip-rea-1' into @tomekzaw/FabricExample
tomekzaw e2e800e
Merge branch '@tomekzaw/FabricExample' into fabric
tomekzaw 938249e
Propagate `_WORKLET_RUNTIME` change to `REAModule.mm`
tomekzaw cb2a112
Merge branch 'fabric' into @graszka22/fix-ts-check
graszka22 b23891e
Code style improvements
tomekzaw 740bcc3
Move `UpdatePropsFunction` somewhere else
tomekzaw 5b2aeb0
Add newline and comment
tomekzaw d88d5d0
Add ifdef
tomekzaw 5e8897a
Minor improvements
tomekzaw 5783cf3
Update RNReanimated.podspec
tomekzaw 6dd55d0
Update build.gradle
tomekzaw 9fa10df
Update CMakeLists.txt
tomekzaw 72b8011
Update build.gradle
tomekzaw e658041
Update NativeProxy.java
tomekzaw 7b31c85
Move implementation
tomekzaw 3ecde21
Move `castReadableMap` to ifdef
tomekzaw 8c095df
Remove redundant `_IS_FABRIC` assignment
tomekzaw caf3d83
Minor changes
tomekzaw 0848a21
Remove unnecessary stuff
tomekzaw 252f0c3
Add lint:js script
graszka22 5b37790
Move import
tomekzaw 41397c5
Add ifdef
tomekzaw 4c7d1f2
Minor improvements
tomekzaw 979091d
Improve ifdefs
tomekzaw d9b23d5
Remove unnecessary import
tomekzaw 853833c
Minor improvements
tomekzaw 4a890c9
Improve imports
tomekzaw c74e2a4
Update Podfile.lock
tomekzaw 93aa424
Merge branch '@graszka22/add-lintjs' into fabric
tomekzaw 271065b
Merge branch '@graszka22/fix-ts-check' into fabric
tomekzaw 1fa470c
Update version
tomekzaw 4dcd091
Remove Reanimated 1 stuff
tomekzaw 3d12d77
Outstanding move suggested by @piaskowyk
tomekzaw 4d9bffb
Remove comment
tomekzaw b615eb5
Add `overflow: hidden` in examples
tomekzaw 93ee963
Improve FabricExample app
tomekzaw 89ee77b
Improve examples
tomekzaw 0a2c348
Add bouncing box example
tomekzaw 79186e6
Minor improvements
tomekzaw 3185a7e
Minor improvements
tomekzaw 921647c
Minor improvements
tomekzaw 80615b6
Minor improvements
tomekzaw bf0d564
Minor improvements
tomekzaw c7811ad
Minor improvements
tomekzaw 3a6370d
Minor improvements
tomekzaw 5ff4754
Move `configureProps` to ifdef
tomekzaw afb33f7
Restore propObtainer on Android and iOS
tomekzaw e9d1ce3
Don't override UIResponder on Fabric
tomekzaw fd11bfe
Move `enqueueUpdateViewOnNativeThread` to ifdef
tomekzaw 226ef81
Minor improvements
tomekzaw 0598eaa
Reorder methods
tomekzaw 57921a8
Restore excluding `libreact_render*.so`
tomekzaw c052541
Merge branch 'main' into @piaskowyk/rip-rea-1
tomekzaw d9bd106
Merge branch '@piaskowyk/rip-rea-1' into @tomekzaw/FabricExample
tomekzaw 1b3d967
Merge branch '@tomekzaw/FabricExample' into fabric
tomekzaw 0b65c26
Improve FabricExample app
tomekzaw 451b657
Fix linter
tomekzaw d30210d
Remove unnecessary ESLint directive
tomekzaw 0332fae
Add missing `--noEmit` in Example app
tomekzaw b783fa4
Update prettier.config.js
tomekzaw e6104f2
Remove `postRunUpdatesAfterAnimation`
tomekzaw 67be080
Merge branch '@piaskowyk/rip-rea-1' into @tomekzaw/FabricExample
tomekzaw b032755
Merge branch '@tomekzaw/FabricExample' into fabric
tomekzaw 0bf8c9f
Fix linter in Example app
tomekzaw f974fa5
Fix build gradle for RN66
piaskowyk 6459bf0
Add missing task order in Gradle
piaskowyk b675801
Fix TypeScript config
tomekzaw d464f5b
Merge branch 'fabric' of https://github.com/software-mansion/react-na…
tomekzaw 498ffeb
Merge branch 'main' into fabric
tomekzaw 6e14e9d
Remove unnecessary files
tomekzaw File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,8 +2,6 @@ name: Test docs build | |
|
||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
paths: | ||
- 'docs/**' | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,6 @@ | ||
name: Test TypeScript and Lint | ||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
paths: | ||
- 'src/**' | ||
- '*' | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,6 @@ | ||
name: Test tvOS build | ||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
paths: | ||
- 'ios/**' | ||
- 'Common/**' | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,6 @@ | ||
name: Java Lint | ||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
paths: | ||
- 'android/src/main/java/**' | ||
push: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
#ifdef RCT_NEW_ARCH_ENABLED | ||
|
||
#include "FabricUtils.h" | ||
|
||
#include <react/renderer/uimanager/UIManagerBinding.h> | ||
|
||
using namespace facebook::react; | ||
|
||
namespace reanimated { | ||
|
||
#ifdef ANDROID | ||
RuntimeExecutor getRuntimeExecutorFromBinding(Binding *binding) { | ||
BindingPublic *bindingPublic = reinterpret_cast<BindingPublic *>(binding); | ||
SchedulerPublic *schedulerPublic = | ||
reinterpret_cast<SchedulerPublic *>((bindingPublic->scheduler_).get()); | ||
return schedulerPublic->runtimeExecutor_; | ||
} | ||
#endif | ||
|
||
inline static const UIManagerPublic *getUIManagerPublic( | ||
const UIManager *uiManager) { | ||
return reinterpret_cast<const UIManagerPublic *>(uiManager); | ||
} | ||
|
||
std::shared_ptr<const ContextContainer> getContextContainerFromUIManager( | ||
const UIManager *uiManager) { | ||
return getUIManagerPublic(uiManager)->contextContainer_; | ||
} | ||
|
||
inline static UIManagerDelegate *getDelegateFromUIManager( | ||
const UIManager *uiManager) { | ||
return getUIManagerPublic(uiManager)->delegate_; | ||
} | ||
|
||
void UIManager_dispatchCommand( | ||
const std::shared_ptr<UIManager> &uiManager, | ||
const ShadowNode::Shared &shadowNode, | ||
std::string const &commandName, | ||
folly::dynamic const &args) { | ||
auto delegate_ = getDelegateFromUIManager(&*uiManager); | ||
|
||
// copied from UIManager.cpp | ||
if (delegate_) { | ||
delegate_->uiManagerDidDispatchCommand(shadowNode, commandName, args); | ||
} | ||
} | ||
|
||
LayoutMetrics UIManager_getRelativeLayoutMetrics( | ||
const std::shared_ptr<UIManager> &uiManager, | ||
ShadowNode const &shadowNode, | ||
ShadowNode const *ancestorShadowNode, | ||
LayoutableShadowNode::LayoutInspectingPolicy policy) { | ||
// based on implementation from UIManager.cpp | ||
const auto &shadowTreeRegistry = uiManager->getShadowTreeRegistry(); | ||
|
||
// We might store here an owning pointer to `ancestorShadowNode` to ensure | ||
// that the node is not deallocated during method execution lifetime. | ||
auto owningAncestorShadowNode = ShadowNode::Shared{}; | ||
|
||
if (!ancestorShadowNode) { | ||
shadowTreeRegistry.visit( | ||
shadowNode.getSurfaceId(), [&](ShadowTree const &shadowTree) { | ||
owningAncestorShadowNode = | ||
shadowTree.getCurrentRevision().rootShadowNode; | ||
ancestorShadowNode = owningAncestorShadowNode.get(); | ||
}); | ||
} else { | ||
// It is possible for JavaScript (or other callers) to have a reference | ||
// to a previous version of ShadowNodes, but we enforce that | ||
// metrics are only calculated on most recently committed versions. | ||
owningAncestorShadowNode = | ||
uiManager->getNewestCloneOfShadowNode(*ancestorShadowNode); | ||
ancestorShadowNode = owningAncestorShadowNode.get(); | ||
} | ||
|
||
auto layoutableAncestorShadowNode = | ||
traitCast<LayoutableShadowNode const *>(ancestorShadowNode); | ||
|
||
if (!layoutableAncestorShadowNode) { | ||
return EmptyLayoutMetrics; | ||
} | ||
|
||
return LayoutableShadowNode::computeRelativeLayoutMetrics( | ||
shadowNode.getFamily(), *layoutableAncestorShadowNode, policy); | ||
} | ||
|
||
SharedShadowNode UIManager_cloneNode( | ||
const UIManager *uiManager, | ||
const ShadowNode::Shared &shadowNode, | ||
const SharedShadowNodeSharedList &children, | ||
const RawProps *rawProps) { | ||
auto delegate_ = getDelegateFromUIManager(uiManager); | ||
auto contextContainer_ = getContextContainerFromUIManager(uiManager); | ||
|
||
// copied from UIManager.cpp | ||
PropsParserContext propsParserContext{ | ||
shadowNode->getFamily().getSurfaceId(), *contextContainer_.get()}; | ||
|
||
auto &componentDescriptor = shadowNode->getComponentDescriptor(); | ||
auto clonedShadowNode = componentDescriptor.cloneShadowNode( | ||
*shadowNode, | ||
{ | ||
/* .props = */ | ||
rawProps ? componentDescriptor.cloneProps( | ||
propsParserContext, shadowNode->getProps(), *rawProps) | ||
: ShadowNodeFragment::propsPlaceholder(), | ||
/* .children = */ children, | ||
}); | ||
|
||
if (delegate_) { | ||
delegate_->uiManagerDidCloneShadowNode( | ||
*shadowNode.get(), *clonedShadowNode); | ||
} | ||
|
||
return clonedShadowNode; | ||
} | ||
|
||
void UIManager_appendChild( | ||
const ShadowNode::Shared &parentShadowNode, | ||
const ShadowNode::Shared &childShadowNode) { | ||
// copied from UIManager.cpp | ||
auto &componentDescriptor = parentShadowNode->getComponentDescriptor(); | ||
componentDescriptor.appendChild(parentShadowNode, childShadowNode); | ||
} | ||
|
||
} // namespace reanimated | ||
|
||
#endif // RCT_NEW_ARCH_ENABLED |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All changes in workflows should be moved to a separate PR.