[video_player] Video getting stuck at app launch on some devices.

I am getting Future Already Completed in firebase crashlytics ARN. No issues on iOS.
I am playing the video during app launch via asset file. And it makes the app unresponsive for some users. And what i observed clearing the cache of app makes it run properly.
video which is used for running on the devices.
https://github.com/user-attachments/assets/e9297888-685a-41e3-8c6c-0ba2848b17d0
source code for reference
class SplashScreen extends ConsumerStatefulWidget {
  const SplashScreen({super.key});

  @override
  ConsumerState<SplashScreen> createState() => _SplashScreenState();
}

class _SplashScreenState extends ConsumerState<SplashScreen>
    with AppStorageMixin {
  final videoPlayer =
      VideoPlayerController.asset(RiverAsset.fullscreenLogoAnimation);

  @override
  void initState() {
    super.initState();

    WidgetsBinding.instance.addPostFrameCallback((_) {
      initalize();
    });
  }

  Future<void> initalize() async {
    try {
      getRef<AnalyticsService>().logEvent(
        '$runtimeType',
        description: 'Started',
      );

      await videoPlayer.initialize().then((_) async {
        if (mounted) {
          setState(() {
            /// Refresh Ui
          });
        }
        await Future.delayed(Duration(milliseconds: 100));
        if (mounted) {
          setState(() {
            videoPlayer.play();
          });
        }
      });

      if (!getRef<AuthService>().loggedStatus)
        getRef<AuthService>().shuffleTokens();
      await Future.delayed(videoPlayer.value.duration);

      context.go(
        getRef<AuthService>().navigationRedirect ?? HomeScreenRoute.path,
      );

      getRef<AnalyticsService>().logEvent(
        '$runtimeType',
        description: 'Ended',
      );
    } catch (e) {
      getRef<AnalyticsService>().logEvent(
        '$runtimeType',
        description: 'Error : $e',
      );

      if (e is DioException) {
        if (e.response?.statusCode == 403) {
          late final OverlayEntry entry;

          entry = OverlayEntry(
            builder: (context) => ReloginPopup(callback: entry.remove),
          );

          Overlay.of(context).insert(entry);
        }
      }

      context.go(
          getRef<AuthService>().navigationRedirect ?? EnterMobileRoute.path);
    }
  }

  @override
  Widget build(BuildContext context) {
    return AnnotatedRegion<SystemUiOverlayStyle>(
      value: const SystemUiOverlayStyle(
        systemNavigationBarColor: RiverColorPalette.riverBlue05,
        systemNavigationBarIconBrightness: Brightness.dark,
        systemNavigationBarDividerColor: RiverColorPalette.riverBlue05,
        statusBarIconBrightness: Brightness.light,
        statusBarColor: Colors.transparent,
        statusBarBrightness: Brightness.dark,
      ),
      child: Material(
        color: RiverColorPalette.riverBlue05,
        child: videoPlayer.value.isInitialized
            ? SizedBox(
                height: 100.hs(context),
                width: 100.ws(context),
                child: OverflowBox(
                  minHeight: 110.hs(context),
                  maxHeight: 110.hs(context),
                  maxWidth: 100.ws(context),
                  minWidth: 100.ws(context),
                  child: AspectRatio(
                    aspectRatio: videoPlayer.value.aspectRatio,
                    child: VideoPlayer(videoPlayer),
                  ),
                ),
              )
            : const SizedBox.shrink(),
      ),
    );
  }
}

Stack trace from the firebase crashlytics

Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: Bad state: Future already completed
at _AsyncCompleter.complete(dart:async)
at VideoPlayerController.initialize.eventListener(video_player.dart:468)

plugin version - video_player: 2.9.1
flutter version
[✓] Flutter (Channel stable, 3.24.3, on macOS 14.6.1 23G93 darwin-arm64, locale en-IN)
• Flutter version 3.24.3 on channel stable at /Users/dishankjindal/.puro/envs/3.24.3/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 2663184aa7 (4 weeks ago), 2024-09-11 16:27:48 -0500
• Engine revision 36335019a8
• Dart version 3.5.3
• DevTools version 2.37.3
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
• Android SDK at /Users/dishankjindal/Library/Android/sdk
• Platform android-34, build-tools 34.0.0
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 16A242d
• CocoaPods version 1.15.2
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2022.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
[✓] VS Code (version 1.94.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.98.0

Hi @dishankjindal1
Do you see any stack trace of ANR on the crashlytic report? Please share it if any.
Can you reproduce the ANR locally if running project in release mode? If it appears this case, please try to narrow sample code down into a minimal one (without 3rd party packages) and share it here.
And please also provide:

Flutter and video_player_android versions used when you build the project
List of affected device information (model, OS version) along with the percentage occurrence of the crash

@huycozy - updated my response above.

This was already fixed in video_player_android: ^2.7.6 (https://pub.dev/packages/video_player_android/changelog#276).

@matanlurey - I am on plugin version - video_player: 2.9.1
Which means, this still requires some attention, maybe you can keep this issue open. Because my prod customers are facing this issue.

Your two options are using an older version that works for you or using the newer version with the fix, there is nothing we can do for an already published version.

Just to be clear @dishankjindal1,

@matanlurey - I had pushed the app to prod users with the latest video player version. I am seeing a lot of events.

Without a repro we won't be able to help.

@matanlurey - by any change, can the video be a problem in my simple usecase? because previously it never use to run, and after converting the video encoding to a different format worked.

@matanlurey You can use the video i provided just after the app launch, using initState call. No special code is required.


Feature: Path Finding Edge

Adds a new type of edge pathfinding. This edge never overlaps with other nodes:
https://user-images.githubusercontent.com/28565117/139601957-291a28fd-0633-45a9-af20-2f9dd99af2e1.mp4
Solves issue:
https://github.com/wbkd/react-flow/issues/1014
Feature:
https://github.com/wbkd/react-flow/discussions/1577
Caveats:

Had to simplify the problem by making the path-finding algorithm work on a smaller grid, where each cell is equivalent to an area of 10x10 px in the graph, otherwise it had performance problems. This means there's a small loss of precision when drawing the path
The edge itself is debounced by 200ms, otherwise very large graphs could freeze the browser as the user drags a node around
Even with those, performance is still poor on very large graphs

All configurations are currently hard-coded (padding between nodes, grid ratio, debounce time, line shape, path-finding options), but I'm unsure where/if I should expose them to the user, so I decided to open this PR to have this discussion here. Also unsure how to correctly display edge labels on this one.
I'm open to suggestions on how to improve performance or other aspects of this edge.

I'll be closing this PR for the time being, but for anyone interested I've published a NPM package:
@tisoap/react-flow-smart-edge

Hey @tisoap
This looks really cool and can be useful for others too :)
We will add a "community additions" section in the readme and list your project there. When there are critical changes we will open an issue or PR in your repo.
Thanks for your work here!


Change reconfigure setup to include values configured with originally

This is simply the backend counterpart to this UI PR. The problem is that for most dialogs, we don't need to inject values on the initial load, because they are expecting to be presented with the defaults. This was causing an issue since the users wanted to see what they had previously selected from a first configuration, but when clicking on the reconfigure button, they were shown the defaults.
This problem is furthered by the fact that some fields are dynamic and depend on the values of others, so if the defaults are simply shown, some fields like drop downs may not even contain the right options to pick from!
The solution is ultimately that we set up the dialog such that all of its fields have a given value coming from what the service knows about how it was configured initially, and then we call the automate method to potentially do some calculations. In the case of a text box, whatever comes back will get thrown away, since we want to use the value that was known from initial configuration, but for a drop-down, for example, the options need to be recalculated and the correct one selected. I know that sounds extremely confusing, and unfortunately, it is 😢
https://bugzilla.redhat.com/show_bug.cgi?id=1591484
This should go in before the UI PR.
@miq-bot add_label gaprindashvili/yes, blocker, bug
/cc @gmcculloug @tinaafitz
@d-m-u I realize this is a rather large undertaking but can you test and review for me?
@syncrou Can you review please?

I guess the only thing I'm seeing that feels a little weird is that if you reconfigure the service, change the values, submit it, and then go back into the reconfigure screen, the values won't be the most recently updated values you put in.

@d-m-u Good find, but I believe that was the previous behavior in the Fine branch.  Can you verify this?

With my test dialog, the tag control didn't load with the value I'd sent. Can we possibly address later?

@eclarizio Would the tag control be an issue since we do not support setting a default value for that today?  @d-m-u Based on that I suspect that multi-select drop-downs may not work either.  Please test that as well.
We may need to address those in a separate PR.

@gmcculloug yeah, the multiselect gets an api error:

@eclarizio If you're going to push another commit, please update BZ link to the 'master' BZ (https://bugzilla.redhat.com/show_bug.cgi?id=1580987), so the correct BZ will be commented.

The timepicker also gets set back to the default, but I think that's expected behavior because I think eclarizio was getting to that before this ugliness became a prio.

Travis failure looks unrelated?

Gaprindashvili backport details:
$ git log -1
commit e33d35b833a01523280cdb17d049561753aadbc5
Author: Greg McCullough<EMAIL_ADDRESS>Date:   Fri Jun 29 08:49:55 2018 -0400

    Merge pull request #17647 from eclarizio/BZ1591484-Reconfigure

    Change reconfigure setup to include values configured with originally
    (cherry picked from commit e13f77de072210a43d1ca0a1d7b7e8885f5936ed)

    https://bugzilla.redhat.com/show_bug.cgi?id=1591484


Added Eurus mainnet and testnet network ID.

We require the networks to be at https://chainlist.org/ before adding

We require the networks to be at https://chainlist.org/ before adding

The networks have already been listed in https://chainlist.org/. Please check Eurus Mainnet(1008) and Eurus Testnet(1984) respectively. Thanks.

Eurus Testnet appears as BTCIX Network on chainlist.org

I could not find the problem mentioned. Eurus testnet(1984) is displayed normally in chainlist.
https://github.com/ethereum-lists/chains/blob/master/_data/chains/eip155-1984.json

I could not find the problem mentioned. Eurus testnet(1984) is displayed normally in chainlist.
https://github.com/ethereum-lists/chains/blob/master/_data/chains/eip155-1984.json

You are right, I missed the testnet flag on the website 🤦🏻

Coverage decreased (-5.8%) to 84.894% when pulling 88bb2b27f7398d5d2236b60da0045dc150c74115 on eurus-chain:master into d2bb4748d2605f7a72938fc4fb23f91194860270 on gnosis:master.


 It turns out to be only 55 files (weird). And in each file, there are 1000 lines, which match with SHREC16 requirement. But the sorted ids are strange, all of them are double digits, e.g.
file 000000
000000 0.000000
000048 0.065430
000054 0.100580
000052 0.107867
000036 0.122333
000050 0.124427
000044 0.126996
000054 0.128756
000040 0.146189
000053 0.147754
000010 0.148218
000033 0.149304
000052 0.155951
000031 0.157031
000030 0.157686
000050 0.161438
000014 0.163000
000038 0.166047
000007 0.166474
000053 0.166583
000011 0.169018
000042 0.170448
000052 0.171148
000041 0.171711
000046 0.173249
000003 0.174657
000035 0.175464
000009 0.177142
000009 0.177213
000018 0.179162
000042 0.179293
000016 0.180040
000050 0.180699
000040 0.181859
000034 0.183287
000021 0.184157
000014 0.186218
000005 0.189774
000044 0.191259
000005 0.192165
......
I m working on this problem now, if you have any idea please let me know. I will update if I find anything.
Thanks for being patient :)

Don't be so apologetic. I should have made the shrec16/test.py better. I have updated the codes just now, at least it works on my desktop without any problem now.

Thanks for your quick reply. I have another question, in modelnet_shrec_loader.py line 107
107:  name, category = line, int(line) % 55
why do you set category by name_id%55 ?

It is simple a way to get a integer id for each category.


Ultrasound conflicting with Video Recording in multiple social media apps

Multiple apps like Instagram, WhatsApp, Snapchat allow you to start recording video by holding down the volume down button.
While having ultrasound, that functionality breaks.

Does it work in the stock camera app?

Yes

From: Ayden Panhuyzen<EMAIL_ADDRESS>Sent: Wednesday, June 19, 2019 1:54:03 PM
To: aydenp/Ultrasound
Cc: Bhagirath Bhardwaj; Author
Subject: Re: [aydenp/Ultrasound] Ultrasound conflicting with Video Recording in multiple social media apps (#1)
Does it work in the stock camera app?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/aydenp/Ultrasound/issues/1?email_source=notifications&email_token=ADDYCJLG3YOJRHWBHPZG3VTP3JXDXA5CNFSM4HZIWKI2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYCU74Q#issuecomment-503664626, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ADDYCJIAHFSCW4J4BXDKMLTP3JXDXANCNFSM4HZIWKIQ.

@aydenp It works only in the camera app but if you try it on snapchat,instagram,whatsapp anything else it invokes ultrasound volume control rather than the record functionality.

I'll take a look. Thanks!

Works fine for me here. You most likely have another tweak interfering with the buttons. Try disabling other tweaks in iCleaner.

Fixed it working by allowing snapchat on unsub and liberty lite.


Implement concrete configuration

using the yaml and models implement a feature that deserializes the yaml into a concrete Nox Configuration object
Add extensions to inject the configuration into the DI

Done


Refactor storage tests in KEB

Description
What can be done:

split storage_test.go to separate files so e.g.

operation_test.go
instance_test.go
lmsTenant_test.go
...

place above tests in a separate package // maybe internal/storage/driver/postsql is a good place for this kind of tests
fulfil every structures' fields with a test data and assert if it was propagated through the storage
fixtures can be moved to the separate place fixtures.go
think about splitting tests to a smaller parts - test only the particular functions without having something like e2e storage test for operations

AC

Tests covers all scenarios, more assertions etc
Developer can run single test (without commenting out other tests etc)
No single monolith test file
Decrease test execution from 2 min to 30 seconds

Suggestion: we could move fixtures next to the model in code, instead of creating separate fixtures in each place where for example Instance is needed

Proposed changes have been implemented. Closing.


add RadioactiveWasteBarrelIntegration - fix digitalminer reset/start bug

add RadioactiveWasteBarrelIntegration
fix miner reset/start bug (the miner searcher thread couldn't find any ores do to a problem with the way the start method was called)
changed the signature to be in line with: https://docs.google.com/spreadsheets/d/1sheh1BIeP_vSto881H6UtgXvxdbyJEfILM_uUW_UD7Q/edit#gid=1674588729
so, that programs will continue to work with Mekanism 10.1 Computer Integration

now this won´t work on dedicated servers...
due to: Attempted to load class net/minecraft/client/Minecraft for invalid dist DEDICATED_SERVER
very unfortunate. so far i´ve no idea why the original way (just calling the start/reset functions) didn´t work.
it´s a bummer

Yes, because sendToServer from the packetHandler from Mekanism calls SimpleChannel#sendToServer which calls Minecraft#getInstance().
But only call start() should work, mekanism does that too in V10.1

in V10.1 it indeed does work. but (as in v10) not with the PeripheralProxy. reset, stop and start does work to some extend but (at least in my testing) when for example resetting with an turtle and starting oresToMine is always 0 and the miner isn´t doing anything.
if i reset and start through the gui it works. the computer can also start and stop as long as the the reset came from the gui.
there is something a little wierd happening cause even in v10.1 calling the start method from the proxy doesn´t work.. hmm

I will not close this PR, but will you keep workink on this PR?

WasteBarrel Integration was added, and the start bug is not fixable. #108


Feature: Signature cache warmup via MapperBuilder#warmup

As requested in #115, it would be awesome to have the ability to warmup known signatures (e.g. during build time).
One suggestion was to provide a dedicated method for this in the MapperBuilder (which is also used to specify the cache directory).
So this Pull-Request does provide that MapperBuilder#warmup method and consumes at least 1 but also multiple signature(s) which will be parsed and pre-cached to the underlying filesystem cache.

Hi @boesing, very good work overall!
I think one interesting feature would be to loop on every type that was declared inside classes to recursively warmup every class.
For instance:
final class Foo
{
    public Bar $bar;
}

final class Bar
{
    public string $value;
}

If the warmup method is called for Foo, then the Bar class should be warmed up as well.
As we need to handle complex types (union types containing objects, or array shapes containing objects), I will add a helper for this and keep you updated here. 🙂

I tried to wrap my head around this yesterday evening.
I wanted to ensure that we do not double-warmup the same class-name and thus the code became quite - complex...
Maybe we just don't care about double-warmup (as the memory cache might kick-in anyways) and thus we can just pass every ClassType to the repository.
Will see if I give this another try in the next days.

I think it would not be an issue to warmup the same class multiple times, but I also think it would be really easy to prevent that from happening — keeping a list of already loaded classes up to date should be enough IMO.
The code that does the job should also be moved in a specific service, to prevent MapperBuilder from becoming too huge. 🙂
If you need any advice or help please don't hesitate!

I guess I got a working prototype.
Would love to get some feedback.

Hi @boesing, thanks to #132 the implementation could be changed in a cleaner way, can you take a look if you're good with it?

LGTM, the changes are still reflecting the initial feature request. 👍🏼
Thanks for taking over here!

Thank you for the original work, that was a great contribution!


Add 32-bit alignment check for row major tensors on device

Passing pipelines: https://github.com/tenstorrent/tt-metal/actions/runs/8929019051


Add BookingSync provider to 3rd party list

Coverage remained the same at 99.82% when pulling b5863cf3feed2c768965e8829a2e5dbfea22e065 on ZenCocoon:oauth2-bookingsync-php into bbbeeacd5d9acce11cad965cc9680727b82f25a4 on thephpleague:master.

Thanks!

Thanks to you!


Make able to declare sequential without name of module

In pytorch, there are two ways for declare sequential.
model = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )

# Using Sequential with OrderedDict. This is functionally the same as the above code
model = nn.Sequential(OrderedDict([
          ('conv1', nn.Conv2d(1,20,5)),
          ('relu1', nn.ReLU()),
          ('conv2', nn.Conv2d(20,64,5)),
          ('relu2', nn.ReLU())
        ]))

But torchsharp only has second way. So I added first way.
var model = nn.Sequential(
    nn.Conv2d(1, 20, 5),
    nn.ReLU(),
    nn.Conv2d(20, 64, 5),
    nn.ReLU()
);

This works same with first python code.
In my commit, when using first way, It will set name by type name of module. And I add test for new sequential(Save and loading, nn in sequential)
I think using torch.torchvision in #433 was just mistake :D

Since this is failing on F#, I'll merge into my own forked repo and see if I can address the problem.

@dayo05 I just sent a PR to your repo.


Upgrade Sanity

We have not updated Sanity since the release, so we should do this now

Seems to be OK?

We should make a checklist of things to test after updating Sanity - and we should put that in the runbook.


Missing deps of libjpeg8

libjpeg8 does not exist in debian bullseye bookworm, but exists on ubuntu. This application that use libtamoya like parsec throw missing MTY_SOLoad: libjpeg.so.8: cannot open shared object file: No such file or directory
❯ dpkg-query -L  libjpeg62-turbo:amd64
/.
/usr
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libjpeg.so.62.3.0
/usr/share
/usr/share/doc
/usr/share/doc/libjpeg62-turbo
/usr/share/doc/libjpeg62-turbo/changelog.Debian.gz
/usr/share/doc/libjpeg62-turbo/changelog.gz
/usr/share/doc/libjpeg62-turbo/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libjpeg62-turbo
/usr/lib/x86_64-linux-gnu/libjpeg.so.62

There is hacky way of directly dirty linking libjpeg.so.8 to libjpeg.so.62.3.0 but not preferred.

Is the interface actually different or is it just a naming issue? Perhaps libmatoya can just check for libjpeg.so.62.3.0 as well?

From my point of view, it is just about the naming issue, but on the backend I can't tell how the libjpeg is used by parsec.

I have the same issue, I installed libjpeg62, libjpeg89, libjpeg8-dev, all of the possible available libraries.
Parsec does work, even if there's a message about the missing dependencies.
The problem however is that when I run upgrades, it wants to remove it. So I have to keep re-install it, remove dependencies check and reinstall it.
Also when there's a new parsec .deb version, I have to redo all of this.
_The following packages have unmet dependencies:
parsec : Depends: libjpeg8 which is a virtual package and is not provided by any available package
The following actions will resolve these dependencies:
Remove the following packages:

parsec [150-91a (now)]

Accept this solution? [Y/n/q/?] n_


Initial Github Actions CI

This patch provides an initial port of the current Travis CI
configuration to Github Actions to improve our CI overall and be more
consistent with the other stm32-hal crates. It also enables a basic
clippy lint check on the crate. At the moment, there are quite a few
warnings and errors that should be fixed in the future. Travis CI
support has been left unmodified for now, but should be removed later
too.
This is part 1 of #89

Looks good to me! Not sure, if it should already run on this pull request, or if that requires the configuration to be in master. I guess we'll see soon.

Everything runs fine on master. The only thing left to test is whether it runs on pull requests too. Good job, @mvertescher!

Looks like it ran on #91, seems good to me :+1:


Import or depend on compiled binary flutter packages

I'm planning to create a plug-ins based rich client platform application like Eclipse or VS Code. The flutter main application will include any views (widgets / screens) which are contributed by other flutter packages. Currently to do that, the main application project has to import source codes of the sub-views' packages to build together. I have no ideas how can I depend or import sub-view package in compiled binary format, not in .dart source code format. Any idea or any  RCP application examples based on flutter are welcomed.

Hi @trigchen,
This issue doesn't seem to describe a bug or a feature request. Please see https://flutter.dev/community#community-grid for resources and asking questions like this. You may also get some help if you post it on Stackoverflow with a minimal code sample that clearly describes your problem.
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and we will reopen it.
Thank you


Does a package include tests?

If it does

The score should be higher
There should be a visual indicator of this on the package page

Precise details of how this will work still to be discussed, but this is the basics of the feature.

What is the source here? A few random examples (not saying I actually support all of these but good for conversation!)

Code Coverage?

This could be picked up if the library supports something like Coveralls, but that's not a given?

Number of Test Files?

Possibly a ratio of test files to source files?

The existence of a test target/directory?

Should a package's score increase if it doesn't have CI running the tests? Perhaps +X points if it has tests +Y points if it also runs them on CI...

We could establish a precedent (much like that of “put a file in your repository named LICENSE.txt) or committing the JSON output of swift test --enable-code-coverage to the repository with a certain name. That’s a pain, though.

Had a brief conversation with Dave on Slack, it seems there may be a longer-term ambition to actually build and test packages automatically - so would likely end up calculating the code coverage from that.
Much to your sentiment, encouraging an entire community to commit coverage information like that is unlikely to gain massive traction IMO

longer-term ambition to actually build and test packages automatically

That’s ambitious! Would be very cool.

Building on the idea that packages will be built by the indexer, it would be relatively easy to get the code coverage percentage (whether to display correctly, or even just to give each package some sort of letter grade specific to coverage).
Maybe not even a letter grade because code coverage can mean different things for different packages, but something like "Test Coverage: Stellar" and similar.
Subjective criteria like 0% -> "No Coverage", <50% -> "Limited Coverage", 50%-75% -> "Moderate Coverage", 75%-85% -> "Decent Coverage", 85%-97% -> "Good Coverage", 97%-100% -> "Stellar Coverage".
Anyway, if useful, determining the percentage is a small lift (and barring other plans, feel free to use my library or even just snag the very small amount of code that currently is capable of deserializing the codecov JSON output by swift test: https://github.com/mattpolzin/swift-test-codecov/blob/master/Sources/SwiftTestCodecovLib/CodeCov.swift).

For test coverage we can build a GH actions to make sure the test runs are fair but at the same time aren't run on the SPI servers.
Same for the documentation coverage.
Does it sound like something that SPI could benefit from?

Yep!


added hyperscore calculation to PEP

I think it goes a bit higher. Nonetheless it is not meant to prevent overflow. When overflow happens a negative number is returned. This check will substitute ulong max for that negative number   The answer won't be correct but it will be large. In fact it will be much larger than a decoy.


vale: install documentation and example styles

"vale" is style checker for natural language. Currently, derivation only
installs binary, without any documentation on how to use it.  To
actually have "vale" to generate suggestions, config file with
specification of location of style files must be written.
This changeset adds "doc" output, which contains instructions on writing
config file and "data" output which contains style files.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Thank you, and sorry for the delay


Add unit tests for Query classes

For example, the builders for StructuredQuery don't seem to be tested.

Doesn't seem like a good idea to skip, however, if you have Integration tests that include this, I'm Ok with it not blocking GA.  @garrettjonesgoogle PTAL

I'm going to mark this as blocking GA because we need to make sure that integration tests cover this code.

I'm no longer working on this repo :p
Reopening the issue for the team to triage.


Alternative: Create Image with Molecule Docker Driver + docker commit

I would like to propose an alternative solution for Ansible-based Docker image creation, by using Molecule Docker driver + docker commit.
The key benefit include:

No buildah or podman required (anyway, both docker-based or podman-based are supported by Molecule's drivers), therefore Travis CI friendly
Simply define meta data or initial patches with RUN into Dockerfile.j2
All standard Ansible features are supported (e.g. include_playbook, include_role, group_vars, etc) during core provision phase
Simple debug with docker exec into running container, as standard Molecule-based debug workflow

Create a standard Ansible Role
molecule init role -d docker dummy

Create molecule/default/create.yml
Here the key points are:

If molecule/default/Dockerfile.j2 provided then build a temporary docker image with unique name role_name/scenario_name:instance_name
Else if image: ubuntu-18.04 provided in molecule.yml then just re-tag it with unique name role_name/scenario_name:instance_name

Such role_name/scenario_name:instance_name will therefore being reused in verify phase, in order to figure our original base image's ENTRYPOINT and CMD
E.g. download my create.yml which patched with above logic.
Prepare molecule/default/Dockerfile.j2
Here the key points are:

Define the result image's ENTRYPOINT and CMD here (which will be overwrite during initial provision phase by Molecule with /bin/sh -c bash -c "sleep infinity")
Define other else meta data for the result image
As simple as possible initial patch with RUN, e.g. enable systemd support for ubuntu:18.04

E.g. my example for Ubuntu 18.04 + systemd support.
Implement molecule/default/converge.yml
E.g. my core logic for install sshd with Ansible role
Create molecule/default/verify.yml
Here the key points are:

Cleanup build caches, e.g. APT/RPM package cache
Fetch original base image's ENTRYPOINT and CMD
docker commit the result running container as new image, with fetched original base image's ENTRYPOINT and CMD, named role_name/scenario_name:instance_name-commit

E.g. download my verify.yml which patched with above logic.
Run with molecule test -s default
Once completed you could re-tag the result image from role_name/scenario_name:instance_name-commit into your new name, e.g. my alvistack/sshd:7.6

Hey, thanks for taking time to write this down so thoroughly.
I'm not sure I understand the point of this issue - what is the action item to do in this repository?

@TomasTomecek what if we add some documentation for compare different methods PROS and CONS? e.g.

By Dockerfile, with raw shell scripting
By Dockerfile, install Python and Ansible, copy playbook into container, run playbook via localhost inside container
By ansible-bender, everything basically goes into single playbook file
By Ansible + Molecule Docker driver + docker commit

Yup, documentation sounds like a good idea - I'd suggest add it to molecule though - we're in a process of establishing documentation here so it would take some time to publish such documentation in bender's docs.

Now I just use packer for docker build, much simple ;-)


Draw.io images broken

Describe the bug
Draw.io images are not loading, HTTP 404
Steps To Reproduce
Steps to reproduce the behavior:

Go to any page
Click on drawing
Make any image, File -> Save
See error

Expected behavior
Images to show up both in edit mode and viewing mode
Screenshots
If applicable, add screenshots to help explain your problem.
https://imgur.com/a/FdY8s0C
Your Configuration (please complete the following information):

Exact BookStack Version (Found in settings): BookStack v0.27.4
PHP Version: 7.3.10
Hosting Method (Nginx/Apache/Docker): Docker

Additional context
Config file:
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:<REDACTED>
APP_URL=https://<REDACTED>
APP_LANG=en
APP_AUTO_LANG_PUBLIC=true
DB_HOST=<REDACTED>
DB_PORT=<REDACTED>
DB_DATABASE=<REDACTED>
DB_USERNAME=<REDACTED>
DB_PASSWORD=<REDACTED>
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_COOKIE_NAME=<REDACTED>
SESSION_SECURE_COOKIE=false
CACHE_PREFIX=bookstack
QUEUE_DRIVER=sync
STORAGE_TYPE=local_secure
AUTH_METHOD=standard
DISABLE_EXTERNAL_SERVICES=false
AVATAR_URL=https://seccdn.libravatar.org/avatar/${hash}?s=${size}&d=identicon
DRAWIO=true
APP_VIEWS_BOOKS=list
APP_VIEWS_BOOKSHELVES=grid
REVISION_LIMIT=50
ALLOW_CONTENT_SCRIPTS=false
ALLOW_ROBOTS=false

Hi @iamtpage,
Sorry to hear drawings are not working.
Do the image files get created on the server-side? I'm just wondering if this is an issue during image creation/saving or an issue which locating and loading.

Looks like the drawings do get created:
/var/www/html/storage/uploads/images/drawio # ls 2019-10/
Drawing-Tyler-1570569435.png

But the URL to access them 404's in the browser:
HTTP 404: https://<REDACTED>/uploads/images/drawio/2019-10/Drawing-Tyler-1570569435.png

@iamtpage Thanks for checking.
Do other images work okay? Such as user images or normal images in page content?

Other images have the same issue. They upload fine but the images fail to load in certain pages:
/var/www/html/storage/uploads/images/gallery # ls 2019-10/
Capture.PNG     scaled-1680-    thumbs-150-150
/var/www/html/storage/uploads/images/gallery # ls 2019-10/scaled-1680-/
Capture.PNG
/var/www/html/storage/uploads/images/gallery # ls 2019-10/thumbs-150-150/
Capture.PNG
/var/www/html/storage/uploads/images/gallery #

Could it be related to my nginx.conf?
/etc/nginx/conf.d # cat default.conf
server {
        listen 3500 default_server;

        root /var/www/html/public;
        index index.php index.html index.htm;

        server_name _;

        client_max_body_size 0;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
                deny all;
        }

        location ~ \.php(?:$|/) {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
                try_files $uri $uri/ =404;
                fastcgi_pass <IP_ADDRESS>:9000;
                fastcgi_index index.php;

        }

        location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                access_log off;
        }
}

Looks like initially the bug was with my nginx configuration, changing it to the following now lets regular pictures load without issue:
server {
    listen 80 default_server;

    root /var/www/html/public;
    index index.php index.html index.htm;
    server_name _;
    client_max_body_size 0;
    error_page 599 = @noauth;

    location @noauth {
        try_files $uri $uri/ /index.php?$args;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass <IP_ADDRESS>:9000;
        fastcgi_index index.php;
	}
}

Now draw.io images return an HTTP 500 error when trying to load them, I'm enabling debug in the env file to see if I can dig around some more

Updated stacktrace from loading draw.io images:
(1/1) FatalThrowableError: Call to a member function bind() on null
--
in HigherOrderTapProxy.php (line 34)
at HigherOrderTapProxy->__call('bind', array(object(Request)))in Router.php (line 575)
at Router->respondWithRoute('fallback')in Facade.php (line 221)
at Facade::__callStatic('respondWithRoute', array('fallback'))in Handler.php (line 67)
at Handler->render(object(Request), object(NotFoundHttpException))in Pipeline.php (line 83)
at Pipeline->handleException(object(Request), object(NotFoundHttpException))in Pipeline.php (line 32)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in Controller.php (line 44)
at Controller->BookStack\Http\Controllers\{closure}(object(Request), object(Closure))in Pipeline.php (line 131)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in Authenticate.php (line 48)
at Authenticate->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in Localization.php (line 70)
at Localization->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in SubstituteBindings.php (line 41)
at SubstituteBindings->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in VerifyCsrfToken.php (line 68)
at VerifyCsrfToken->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in ShareErrorsFromSession.php (line 49)
at ShareErrorsFromSession->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in StartSession.php (line 63)
at StartSession->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in AddQueuedCookiesToResponse.php (line 37)
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in EncryptCookies.php (line 66)
at EncryptCookies->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in Pipeline.php (line 102)
at Pipeline->then(object(Closure))in Router.php (line 660)
at Router->runRouteWithinStack(object(Route), object(Request))in Router.php (line 635)
at Router->runRoute(object(Request), object(Route))in Router.php (line 601)
at Router->dispatchToRoute(object(Request))in Router.php (line 590)
at Router->dispatch(object(Request))in Kernel.php (line 176)
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))in Pipeline.php (line 30)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in TrustProxies.php (line 56)
at TrustProxies->handle(object(Request), object(Closure))in TrustProxies.php (line 45)
at TrustProxies->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in TransformsRequest.php (line 30)
at TransformsRequest->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in ValidatePostSize.php (line 27)
at ValidatePostSize->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in CheckForMaintenanceMode.php (line 46)
at CheckForMaintenanceMode->handle(object(Request), object(Closure))in Pipeline.php (line 149)
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))in Pipeline.php (line 53)
at Pipeline->Illuminate\Routing\{closure}(object(Request))in Pipeline.php (line 102)
at Pipeline->then(object(Closure))in Kernel.php (line 151)
at Kernel->sendRequestThroughRouter(object(Request))in Kernel.php (line 116)
at Kernel->handle(object(Request))in index.php (line 54)

Stacktrace caused by images that no longer existed. Will close and open a new issue to address draw.io images being blank.


bug: apisix keep restart after rebuild Docker image

Issue description
I upgrade the APISIX to lastest（in docker）
but the apisix keep restart
Environment

apisix version (cmd: apisix version): Master
OS:

What's the actual result? (including assertion message & call stack if applicable)
test_api_gateway |      [C]: at 0x7f67ffa212c0
test_api_gateway | /usr/local/openresty/luajit/bin/luajit: /usr/bin/apisix:488: bad argument #1 to 'pairs' (table expected, got nil)
test_api_gateway | stack traceback:
test_api_gateway |      [C]: in function 'pairs'
test_api_gateway |      /usr/bin/apisix:488: in function </usr/bin/apisix:458>
test_api_gateway |      /usr/bin/apisix:593: in main chunk
test_api_gateway |      [C]: at 0x7f1171dd62c0
test_api_gateway | /usr/local/openresty/luajit/bin/luajit: /usr/bin/apisix:488: bad argument #1 to 'pairs' (table expected, got nil)
test_api_gateway | stack traceback:
test_api_gateway |      [C]: in function 'pairs'
test_api_gateway |      /usr/bin/apisix:488: in function </usr/bin/apisix:458>
test_api_gateway |      /usr/bin/apisix:593: in main chunk
test_api_gateway |      [C]: at 0x7f66046102c0

What's the expected result?
apisix could start with default configuration，while the config format changed

did you use the conf/config.yaml in master branch?

@moonming  I reilized that I  missed the nginx_conf field and ssl field.
I think we can output a friendly error message

welcome PR


Rearrange C++ release notes order to tell a consecutive story

Core 1.8.2, then core 1.9.0, then 1.10.0-beta.1, then identity, then all keyvault alphabetically, then all storage alphabetically.

@weshaggard, on this page - https://azure.github.io/azure-sdk/releases/2023-05/cpp.html - the order of core releases is not incremental. Can we/should we automate that, so that in the combined html we first get Core from oldest to newest version, then the rest of the packages alphabetically, also in case of multiple versions, each of them from oldest to newest version? Let me know if you agree, I can log it as issue.

I'll leave that up to @czubair as of now we have preferred the order in which things have shipped which is when they come in.

If we wanted to change the sorting it would simply take a well placed sort call before we write these yml files in our automation scripts at https://github.com/Azure/azure-sdk/blob/main/eng/scripts/Generate-ReleaseNotes.ps1#L209


Supportting Swift?

hi, I'm trying to use your calendar. I cloned the repository but couldn't find any swift codes.
I read older issue with contains screen shot of swift source codes. So I suppose your calendar supports swift.
Thanks in advance,
Satoko

Hi,
This controls is written in Objective C only.
Thanks.


Docs: Document SSE

Summary
The SSE documentation is currently lacking:

Docs for ServerSentEventMessage
Sending messages a dicts

[!NOTE]
While we are open for sponsoring on GitHub Sponsors and
OpenCollective, we also utilize Polar.sh to engage in pledge-based sponsorship.
Check out all issues funded or available for funding on our Polar.sh dashboard

If you would like to see an issue prioritized, make a pledge towards it!
We receive the pledge once the issue is completed & verified
This, along with engagement in the community, helps us know which features are a priority to our users.

Any suggestions here @euri10?

ok just reading the current docs here:
https://docs.litestar.dev/latest/usage/responses.html#server-sent-event-responses
I think everything @provinzkraut mentions is currently in the docs:
ServerSentEventMessage is mentionned, the dict option as well
now I see room for improvment I'd say in the example given; it currently only yield a str and we "should" maybe yield a ServerSentEventMessage and show it that way with all the other possibilities we test,
if agree I can tweak the example, does that make sense to you >?


remove snake_case from indentFound

Sorry, i tend to reject. We use snake_case in many places for internal vars (that's a question of taste, subjective), and i done see reason in partial replace that changes nothing.

The idea behind this is to use a naming convention that is consistent within the markdown-it codebase, and with JavaScript as a whole. It does not change any functionality, but does improve readability.
I redid the commit and included it in https://github.com/markdown-it/markdown-it/pull/223

I have opposite opinion - sometime snake_case is more readable for me. We follow node's convention in API, but don't follow it in internal things.

Yeah, purely in terms of snake_case vs camelCase, I find snake_case to be easier to read. For example, if I were designing a new language I'd probably follow Python naming semantics and use snake_case for variables and functions.
However, when you start to mix the two it becomes a pain due to the inconsistency. At least personally, I remember variable names as a series of morphemes, rather than characters. So if I read indent_found I'll remember it as "indent found" and (in JS) will write it as indentFound if I don't remember the specific way it was written first.

I don't see problems with inconsistency. Since this is subjective, let's leave everything as is, without changes.

That's interesting that you aren't bothered by the inconsistency. From what I understand, the conversion of familiar words into morphemes is a well-accepted part of the modern reading model. So, needing to switch randomly between two ways of writing (like indent_found vs indentFound) depending upon the context, should place a significant burden on the writer. Do you use tab-completion in your editor or something else that would remove the need to remember how a given identifier is written?
And I don't think that this is subjective at all. The visual representation of code has a direct impact on how easily someone can understand and modify it. See Brainfuck (or even minified JS) if you need an example of this. We should be able to measure that difference in ease of understanding and pick one way of formatting that is objectively superior.

Do you use tab-completion in your editor or something else that would remove the need to remember how a given identifier is written?

yes.


Fix: Avoid passing if-match header for insert_or_replace ops

#1207 if-match header enforces that the entity already exists whiich breaks the insert new scenarios.

The If-Match implementation is aligned with the documentation for update, delete, and merge.


Fix WPF resource dictionary errors.

This fixes a wpf compile error that was introduced when the DataGrid changes were merged.

Cool, thanks for looking into it!


Change all our Set* methods to With* methods.

It came up that our Set* methods were misleading (#7) may be misleading
or confusing, and that it would be better to have them as With* methods.
I updated the names, updated the godoc comments, and made sure the tests
still pass (that line number thing is annoying, but what can you do?).
This should make things clearer.
/cc @DramaFever/gophers

LGTM


waybar-mpris: fix updateScript; unstable-2022-01-27 -> 0.1.0-unstable-2022-01-27

Things done
Fix update script that was crashing and version to use expected unstable versioning to make sure update detection is done correctly.
https://nixpkgs-update-logs.nix-community.org/waybar-mpris/2024-10-07.log

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 350499

x86_64-linux

:white_check_mark: 1 package built:

waybar-mpris

aarch64-linux

:white_check_mark: 1 package built:

waybar-mpris

x86_64-darwin

:white_check_mark: 1 package built:

waybar-mpris

aarch64-darwin

:white_check_mark: 1 package built:

waybar-mpris


PubSub Actor Subscription

Description
Actors Pubsub let actors be able to subscribe to a specific pubsub topic and receive events.
Added Pubsub Actor configuration support to the ActorRuntimeConfiguration and example on how it works. Update example tests and unit test cases.
Issue reference
Please reference the issue this PR will close: WIP #501 Support pubsub for Actors
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[X] Code compiles correctly
[X] Created/updated tests
[ ] Extended the documentation

This is into a feature branch.


f missing after return

from >>> return "You are not signed in! {web.sign_in_snippet}"
to >>> return f"You are not signed in! {web.sign_in_snippet}"

Thanks, missed this one!


Battle.net failing to import games

Describe the bug
For the past ~2-3 weeks my Battle.net library extension will say it has failed to import games as I'm not logged in. I'd say I get this notification about every 4 or so days. Obviously I'll click the notification and click authenticate, log in, and it will say it's authenticated. However, this only lasts a few days until I get the same problem. I have tried launching Battle.net, logging out then in, but this has not fixed it. See screenshot below for the exact notification.
To Reproduce
Not sure how to reproduce. Happens randomly.
Screenshots

Diagnostics ID
c3ba97fd-9d56-4392-8ccb-5a10c4fe2ccb

I am experiencing the same issue.

Do what the wiki says and enable import of installed games only.

I have the same issue with GoG <-> battle.net integration, so I have every expectation that this is Blizzard being stupid

My issue is that I am never able to complete even a single authentication. The addon says "Requires authentication" in the settings section. After clicking Authenticate, I can go through the login process. After logging in, there is a "Checking authentication result" displayed for a short time, then it goes back to "Requires authentication". I am never able to get the addon to work at all. My credentials are correct though, I can login to the battle.net website just fine.


Using useSearch with SSR throws a hydration warning

How to reproduce:

Create a web-server and render wouter app with <Router ssrPath={requestUrl.pathname} ssrSearch={requestUrl.search}>
On the client-side render your app wrapped in just <Router />
You will see the hydration warning.

Expected: when wouter runs in the browser, by default it should fill in ssrPath and ssrSearch with current pathname and search string extracted from location

Looks like this is the reason 🤔

It’s not recommended to suspend a render based on a store value returned by useSyncExternalStore. The reason is that mutations to the external store cannot be marked as non-blocking Transition updates, so they will trigger the nearest Suspense fallback, replacing already-rendered content on screen with a loading spinner, which typically makes a poor UX.
https://react.dev/reference/react/useSyncExternalStore#caveats

Not sure if you are accepting new code, based on the last open PRs

Not sure if you are accepting new code, based on the last open PRs

We are accepting new code! The current open PRs are quite difficult to merge, since there were intended for v2, but I stopped adding new features when I was working on v3 release. I think these PRs have to be closed unfortunately and reimplemented from scratch.
Your contributions are always welcome!

Oh cool! I'll work on a fix this weekend :D
Thanks @molefrog!

Hi! I created this as a "hotfix" locally - just works™
import { IS_BROWSER } from 'powership';
import { startTransition } from 'react';

function parseLocationEntries() {
  return [
    ['path', window.location.pathname],
    ['search', window.location.search],
  ] as const;
}

export type LocationEntry = ReturnType<typeof parseLocationEntries>;

export type RouteChangeCallback = (changes: LocationEntry) => void;

const subscribers = new Set<RouteChangeCallback>();

if (IS_BROWSER) {
  let current = parseLocationEntries();
  const callback = () => {
    if (!subscribers.size) return;
    startTransition(() => {
      const next = parseLocationEntries();
      const changed = next.filter((el, idx) => el[1] !== current[idx][1]);
      if (!changed.length) return;
      current = next;
      subscribers.forEach((fn) => {
        fn(current);
      });
    });
  };

  const events = ['popstate', 'pushState', 'replaceState', 'hashchange'];

  for (const event of events) {
    addEventListener(event, callback);
  }
}

export function observeRouteChange(cb: RouteChangeCallback) {
  subscribers.add(cb);
  return () => {
    subscribers.delete(cb);
  };
}

// example
function useRoute() {
  const router = useWouter();
  const [route, setRoute] = React.useState(() => {
    return {
      search: router.ssrSearch || '',
      path: router.ssrPath || '',
    };
  });

  useEffect(() => {
    return observeRouteChange((changes) => {
      setRoute((state) => {
        changes.forEach(([k, v]) => {
          state = { ...state, [k]: v };
        });
        return state;
      });
    });
  }, []);

  return route;
}


[opentelemetry-operator] - BUMP to version 0.56.0

Addresses https://github.com/open-telemetry/opentelemetry-helm-charts/issues/296

@TylerHelmuth not sure how to debug this:
logger.go:42: 10:18:51 | autoscale | 2022-07-30 10:16:25 +0000 UTC	Warning	HorizontalPodAutoscaler.autoscaling simplest-collector		FailedComputeMetricsReplicas	invalid metrics (1 invalid out of 1), first error is: failed to get cpu utilization: unable to get metrics for resource cpu: unable to fetch metrics from resource metrics API: the server could not find the requested resource (get pods.metrics.k8s.io)

@Allex1 I think that test on the operator side is kinda flakey

@Allex1 I think that test on the operator side is kinda flakey

I reran the tests 2 times but it still failed. Id recommend looking at the change history for those tests in the operator repo to see if something changed.

@Allex1 normally the CRDs don't have this many changes, did something big happen over in the operator space? Normally only the additions are added to the files, not copy and paste the whole thing.

@TylerHelmuth  Actually there are very many differences between 0.54.0 and 0.56.0 crds in the opentelemetry repo. Mostly indentation.
git diff v0.56.0 v0.54.0 config/crd/bases/opentelemetry.io_opentelemetrycollectors.yaml
On my last pr upgrading from 0.54.0 to 0.55.0 I only checked the diff on the operator repo (and saw no diff) and not compared to what was in this master ...

Would be good if we could add a make target in this repo that would automatically update the CRDs. Then we could run a test in the CI similar to Check Examples that would verify things.

@Allex1 my guess is the failing tests are because of this PR: https://github.com/open-telemetry/opentelemetry-operator/pull/984.  Looks like a new e2e test was added that has a dependency on a "metrics-server".  Our CI doesn't know about it and will need updated to install it: https://github.com/open-telemetry/opentelemetry-operator/blob/main/hack/install-metrics-server.sh

@TylerHelmuth @dmitryax PTAL


Return context.Cacnceled in kube.WatchLeases

Description

Currently when we use kubernetes subnet manager with
VXLAN backend, and flannel got tried to be gracefully
stopped by sending SIGTERM, flannel would stuck and sometimes
tried to delete arp, fdb, fib because WatchLeases would not return
context.Canceled which trigger cancel logic and insted just return
empty lease object which trigger reset functionality generate
deletedEvent for all of leases.
That's why to fix that, we need to return context.Cacnceled
for more details, please check following issue page

https://github.com/coreos/flannel/issues/1308

Todos

[x] Tests
[ ] Documentation
[ ] Release note

Release Note

None required

Rebase please? Thanks.

gofmt please

this can be closed, i added this change to this PR:
https://github.com/coreos/flannel/pull/1372/commits/ba8c21659ec52c4d522eebb6ab92e8c6cf5aec4c#diff-c172dac8df19f5fd70fc88379b14339cbd104d11369d31f2d217e389dcff3c1aR294


Improve API surface for using fields with navigation properties

Because navigation properties are configured using the relationship API there is not currently any way to easily address the navigation properties such that backing fields can be easily configured.

This is the current code needed to set property access mode for a navigation property:
modelBuilder.Entity<Blog>()
    .Metadata
    .FindNavigation(nameof(Blog.Posts))
    .SetPropertyAccessMode(PropertyAccessMode.Field);

Proposal 1:
modelBuilder.Entity<Blog>()
    .HasMany(e => e.Posts)
    .WithOne(e => e.Blog)
    .UsePropertyAccessMode(PropertyAccessMode.Field);

This would set the property access mode for all navigation properties of the relationship. This is probably sufficient granularity for almost all applications. Dropping down to core metadata can still be used if each navigation property needs different access.
Proposal 2:
As above, but also sets the property access mode of the FK. This makes the following a little less ambiguous:
modelBuilder.Entity<Blog>()
    .HasMany(e => e.Posts)
    .WithOne(e => e.Blog)
    .HasForeignKey(e => e.BlogId)
    .UsePropertyAccessMode(PropertyAccessMode.Field);

Proposal 3:
As above, but with a modifier flag to choose which of the dependent/principal/FK property to set the access mode for. The default would be to set it for all--i.e. collapsing into proposal 2.
modelBuilder.Entity<Blog>()
    .HasMany(e => e.Posts)
    .WithOne(e => e.Blog)
    .HasForeignKey(e => e.BlogId)
    .UsePropertyAccessMode(
       PropertyAccessMode.Field,
       Navigation.Dependant | Navigation.Principal);

Proposal 4:
Add an optional second argument to HasMany, WithOne, etc. that allows a nested closure of configuration for the navigation property.
modelBuilder.Entity<Blog>()
    .HasMany(
        e => e.Posts,
        nb => nb.UsePropertyAccessMode(PropertyAccessMode.Field))
    .WithOne(
        e => e.Blog,
        nb => nb.UsePropertyAccessMode(PropertyAccessMode.Field))

This has the advantage that it is a more general solution for the addressing of navigation properties in the fluent API, but may be over-kill.

We will do #4 and can look at sugar in the future if folks get confused

With the current workaround syntax that allows us to use the Metadata to identify a backing field for a navigation property, is there a way to do that when you've made the navigation property totally private? Thanks

@julielerman Can you post a code snippet that is not working? It should not matter if the navigation is private or not, but maybe there is something not working correctly in the metadata lookup?

will do  as soon as I can
On Jul 12, 2017, at 11:40 AM, Arthur Vickers <notifications<EMAIL_ADDRESS>wrote:
@julielermanhttps://github.com/julielerman Can you post a code snippet that is not working? It should not matter if the navigation is private or not, but maybe there is something not working correctly in the metadata lookup?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/aspnet/EntityFramework/issues/6674#issuecomment-314809529, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AExnEOyvvZSgy4zMDMThR1H8YisZ8zTdks5sNOjzgaJpZM4KNJ1q.

mini repro still fails. I'll show it to you if you aren't having the problem (e.g. I'm doing something wrong )  FWIW I'm using rtm-* and
Product Information:
 Version:            2.0.0-preview3-006736
 Commit SHA-1 hash:  49dfa8e96b

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  10.12
 OS Platform: Darwin
 RID:         osx.10.12-x64
 Base Path:   /usr/local/share/dotnet/sdk/2.0.0-preview3-006736/

Microsoft .NET Core Shared Framework Host

  Version  : 2.0.0-preview3-25511-03
  Build    : 6e7dadfdaed031624319dfd61415b2ce3498aa51

@julielerman I am not able to reproduce this. Can you post the entity types and OnModelCreating code?

Ah, it might be this. If the relationship is configured like this:
modelBuilder.Entity<Samurai>().HasOne("Entrance").WithOne();

which looks reasonable, but is wrong, then it will result in no exception, but also will not configure the relationship correctly. This is because in the single string overload the string is the entity type name, not the navigation name. This is pretty confusing. @AndriySvyryd @divega. (It should ultimately result in model validation failure, but the null ref on the missing navigation is likely happening before then.)
The correct way to configure it is something like:
modelBuilder.Entity<Samurai>().HasOne(typeof(Entrance), "Entrance").WithOne();

There isn't overload of HasOne which takes 1 string parameter. How the first one would compile?

@smitpatel It compiled for me...

 public virtual ReferenceNavigationBuilder HasOne(
            [NotNull] string relatedTypeName,
            [CanBeNull] string navigationName = null)

Oh! I didn’t explicitly configure the relationship. It’s one of those nice FK in the dependent mappings that EF Core can figure out.
I’ll try that first! Can’t do it right away though. But good to know there IS a way! Thanks
On Jul 12, 2017, at 4:44 PM, Arthur Vickers <notifications<EMAIL_ADDRESS>wrote:
public virtual ReferenceNavigationBuilder HasOne(
[NotNull] string relatedTypeName,
[CanBeNull] string navigationName = null)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/aspnet/EntityFramework/issues/6674#issuecomment-314891071, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AExnEOKZbrb0dX7SqtHMPXNDfcY06kQxks5sNTAegaJpZM4KNJ1q.

@ajcvickers I agree that is confusing :disappointed: The fact that the type isn't being specified as a generic argument but is still needed is very easy to miss. I wonder if this is the only API in which this happens.
If we believe it is worth addressing it, something like this may help:

Obsolete this version of HasOne that doesn't take a generic argument
Create a new API called HasOneOfType for this case. It would look like this:

modelBuilder.Entity<Samurai>().HasOneOfType("Entrance", navigationName: "Entrance")
    .WithOne();

I think it helps because it reads like the (first) argument is the type.
This looks complicated though:
modelBuilder.Entity<Samurai>().HasOneOfType(typeof(Entrance), navigationName: "Entrance")
    .WithOne();

Maybe we do it only for the one that works with strings?
Perhaps there is a better solution.

I'm still messing about with this trying to find the pattern that works.
I'll go back to my original setup:
public class Samurai {
  public int Id { get; set; }
  public string Name { get; set; }
  private Entrance Entrance{get; set;}
  public void CreateEntrance(string description){
    Entrance=new Entrance{Description=description};
  }
  public string EntranceDescription=>Entrance.Description;
  public int EntranceId=>Entrance.Id;  //this was just for testing :)
}
public class Entrance {
  public int Id { get; set; }
  public string Description { get; set; }
  public int SamuraiId { get; set; }
}

Before trying to encapsulate the Entrance property, this was fine with the EFCore groking the 1:1 relationship and that Entrance was the dependent.
I had no other configs in the context than those listed above.
I had to use the propertyinfo setup since Entrance wasn't visible to the compiler.
This ran but caused FindNavigation to return null.
Focusing on the fact that you seem to have explicit Fluent Api configuration, I first tried  adding in Arthurs first suggestion .... even trying with no parameter in withOne and still not adding the samurai navigation property to Entrance:
protected override void OnModelCreating (ModelBuilder modelBuilder) {
   modelBuilder.Entity<Samurai> ()
     .HasOne (typeof (Entrance), "Entrance")
     .WithOne ();
   var propinfo = typeof (Samurai).GetProperty ("Entrance");
   modelBuilder.Entity<Samurai> ()
     .Metadata
     .FindNavigation (propinfo)
     .SetPropertyAccessMode (PropertyAccessMode.Field);
   base.OnModelCreating (modelBuilder);
 }

Again, it threw when it hit FindNavigation.
Next I added in the Samurai navigation property to Entrance and added "Samurai" as the parameter of WithOne(). (Interesting that I couldn't use a lambda. Is that because I didn't use a lambda with the HasOne?)
Here's what it looks like for this iteration
    modelBuilder.Entity<Samurai> ()
      .HasOne (typeof (Entrance), "Entrance")
      .WithOne ("Samurai");
    var propinfo = typeof (Samurai).GetProperty ("Entrance");
    modelBuilder.Entity<Samurai> ()
      .Metadata
      .FindNavigation (propinfo)
      .SetPropertyAccessMode (PropertyAccessMode.Field);
    }```

I got the same result...null error on FindNavigation.

Do you see yet what I'm doing differently than you?

There are quite a few things going on here, so I'll try to explain them one by one. First the relationship discovery. Using this code:
public class Samurai
{
    public int Id { get; set; }

    public string Name { get; set; }

    public Entrance Entrance { get; set; }

    public void CreateEntrance(string description)
        => Entrance = new Entrance { Description = description };

    public string EntranceDescription => Entrance.Description;

    public int EntranceId => Entrance.Id;
}

public class Entrance
{
    public int Id { get; set; }

    public string Description { get; set; }

    public int SamuraiId { get; set; }
}

public class SamuraiContext : DbContext
{
    public DbSet<Samurai> Samurais { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        => optionsBuilder.UseSqlServer(
            @"Server=(localdb)\mssqllocaldb;Database=Test;Trusted_Connection=True;ConnectRetryCount=0");

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
}

Notice that the navigation property is public. Conventions only use public navigation properties when traversing the graph to discover relationships. (We tried various other options early in EF Core pre-releases, but trying to use non-public members tended to bring in too many things erroneously.) So because there is a public navigation from Samurai to Entrance, Entrance is brought into the model together with the association between the types. At this point the relationship exists, so the FK can be discovered, etc. and the relationship becomes a unidirectional 1:1.
Now if the navigation property is made private it will no longer be found by convention. Therefore, it has to be configured explicitly--this is generally true for navigations and properties; once they are made private, they need to be configured. The way to configure navigation properties in EF is to use the relationship API:
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Samurai>().HasOne(typeof(Entrance), "Entrance").WithOne();
    }
}

Notice that the FK still does not need to be configured because once EF knows about the private navigation property it can then find the public FK by convention.
Also notice that I use a string here for the navigation name. If it were public I could have the compiler help me generate the string and keep in sync with the code using nameof(Samurai.Entrance). But after compilation the result is the same--call to HasOne with a string as the second argument.
Now, moving on to the code to force use of a backing field, for which we need to find the navigation property in the underlying metadata. The easiest way to do this with a private navigation is again to use its name as a string:
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Samurai>().HasOne(typeof(Entrance), "Entrance").WithOne();

        var navigation = modelBuilder.Entity<Samurai>()
            .Metadata
            .FindNavigation("Entrance");

        navigation.SetPropertyAccessMode(PropertyAccessMode.Field);
    }

I'm not using nameof as before because the navigation is private, but the code is again exactly the same after compilation.
Notice that this is only a call to find an existing navigation from metadata--it will never create the navigation in the way that a fluent API might.
It is possible to use the PropertyInfo instead of the string, but this doesn't usually help anything because you need to use the string anyway to find the PropertyInfo. (The PropertyInfo overloads are useful when you already have a PropertyInfo from doing other things and don't want EF to go look it up again.) Now if the navigation property is public, then this will work:
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Samurai>().HasOne(typeof(Entrance), "Entrance").WithOne();

        var propinfo = typeof(Samurai).GetProperty("Entrance");

        var navigation = modelBuilder.Entity<Samurai>()
            .Metadata
            .FindNavigation(propinfo);

        navigation.SetPropertyAccessMode(PropertyAccessMode.Field);
    }

But if the navigation is private then GetProperty returns null because it only finds public properties. Of course, there are ways of getting the PropertyInfo for a private property, and then this would work, but I think it's much easier just to use the string directly and let EF take care of the rest.
Hope this helps!

Thanks Arthur.
The bottom line was that the only change I needed was to use the string in FindNavigation. That was one thing I had either never tried, or tried with the wrong set up and didn't try again after adjusting things.
My entities:
public class Samurai {
  public int Id { get; set; }
  public string Name { get; set; }
  private Entrance Entrance {get; set;} //note this is private YAY
  public void CreateEntrance(string description){
    Entrance=new Entrance{Description=description};
  }
   public string EntranceDescription=>Entrance.Description;
}
public class Entrance {
  public int Id { get; set; }
  public string Description { get; set; }
  public int SamuraiId { get; set; }  //note there is no navigation property YAY
 }

My context:
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
public class MyContext : DbContext {
  public DbSet<Samurai> Samurais { get; set; }
  protected override void OnModelCreating (ModelBuilder modelBuilder) {
    modelBuilder.Entity<Samurai>().HasOne (typeof (Entrance), "Entrance").WithOne ();
    modelBuilder.Entity<Samurai> ()
      .Metadata
      .FindNavigation ("Entrance")
      .SetPropertyAccessMode (PropertyAccessMode.Field);
  }
  protected override void OnConfiguring (DbContextOptionsBuilder optionsBuilder) {
    optionsBuilder.UseInMemoryDatabase ("OwnedOneToOne");
  }
}

I'm able to build and store Samurai/Entrance graphs and even query using Include (with the string).
Thank you.

@julielerman Curious, are you actually going to create a backing field for Entrance? As the code is now the behavior should be the same regardless of whether you set PropertyAccessMode.Field or not, since the property is an auto-property and there is no difference accessing through the property or field.

This is interesting and a really nice surprise. With the hasone/withone I can make the Entrance private with {get;set;} and EF sees it.  Is that because the backing field logic is picking up the auto property? I would never have thought to try that.
Now I will add in a backing field and see the difference (with/without the setpropertyaccessmode config)

ok, i see that with the backing field there but without the setpropertyaccessmode config, the property isn't materialized and with the config, it is.
Lots of great options available here!
Still curious about the question: with PRIVATE navigation and auto-properties PLUS the has/one config to tell EF Core about the navigation property, does that all work because of the backing fields?

@julielerman  Looking at the code above (posted in this comment: https://github.com/aspnet/EntityFramework/issues/6674#issuecomment-315078717) there are no backing fields involved. (Other than the compiler-generated ones for the auto-properties, which can be ignored since they have no functional impact.) So I'm not sure what you are referring to by "backing field logic" or "work because of the backing fields?" Can you provide a bit more detail about what you are asking?

I'm sorry. I do weird things. :) You've said that if I don't have a backing field (same as your code, except Entrance is now private), I don't need to use the extra config (to set property access mode). (Also, based on what I've done, I don't think you need it either and I thought that's what you were suggesting when you asked about the backing fields...) removed that configuration and indeed my tests work...samurai/ entrance graph is inserted into the data store and the same is materialized in response to a query.
When I modify Samurai so that I have an _entrance field, use that in the getter ala:
  private Entrance Entrance { get{return _entrance;} set{} }
  private Entrance _entrance; // <-my backing field
  public void CreateEntrance (string description) {
    _entrance = new Entrance { Description = description };
  }
  public string EntranceDescription => _entrance?.Description;

and in my methods, at first my tests fail in that I'm not getting the Entrance data back. But when I add the config back:
  modelBuilder.Entity<Samurai> ()
      .Metadata
      .FindNavigation ("Entrance")
      .SetPropertyAccessMode (PropertyAccessMode.Field);

the entrance data that I saved is materialized again in a query.

Okay, yes. That makes sense. It fails because the property setter does nothing in your code, but changing EF to always use the backing field means it never calls the setter, but instead writes directly to the backing field. (Of course, usually you would just not have the setter, rather than having a do-nothing setter, but I assume you are only doing this to experiment.)

"makes sense" : phew! And because I try all the things, I can change the name of the backing field and set it with a second metadata config:
modelBuilder.Entity ()
.Metadata
.FindNavigation ("Entrance")
.SetField("_entranceX");

Ok ....now with
 private Entrance Entrance { get{return _entrance;} }
 private Entrance _entrance;

I seem to have no reason at all to explicitly configure the property access mode. Does that sound right?

Yes, because there is a backing field and there is no setter, so EF just uses the backing field since there is nothing else it can use.

"because there is nothing else to use" ....that's important. It's figuring it out (well you guys wrote it to be smart enough to do that thank you)
Also I just want to clarify that for the navigation property, there seems to be no reason to explicitly configure property access whether or not I have a backing field. Period.

The reason to configure it would be if you have some logic in the property setter that you want EF to by-pass when it is setting the value. In other words, your property setter might do more than just setting the value, but you want EF to really just set the value.

That would be the real use case for the backing field. But honestly, I found that in that scenario I still was getting results without using the configuration.
(Also, the fieldname configuration is needed (makes sense) when the backing field doesn't follow convention)

 private Entrance Entrance {
    get { return _entrance; }
    set {
         if (value.Description == "abcde") { Console.WriteLine ($"we got {value.Description}"); }
          _entrance = value;
    }
  }

works without the configuration. In other words:

it compiled,
it ran without exceptions,
when I called CreateEntrance, I got the message output.
When I did a query, it did not output the message

So that we can both get back to work, I'm going to leave it at this  ("don't need the config but do read this issue for more info!") with the article which will clearly be marked as using preview bits when it gets published.

Poaching.

@lajones Take a look at https://github.com/dotnet/efcore/pull/11610, especially the tests should be useful

Thanks @AndriySvyryd . I came to the same conclusion. Only I didn't want to use NonRelationshipTestBase as my tests are specifically about navigations - so created a new class in the same directory.

[ ] Whichever approach the team likes remove the other one


Intellisense auto complete not working (VS2019)

VS2019's auto complete doesn't seem to work with this project. And virtually all of the using statements in files are highlighted by VS as being unnecessary (incorrectly).
You know what's really strange tho?
You can get it all working again by commenting this line for the SourceRevisionId property.
<!--<SourceRevisionId>$(SourceRevisionId.Substring(0,7))</SourceRevisionId>-->

That line seems to be related to the dll version when you build so I guess i'll just keep it commented locally for now. Curious tho.

https://www.nexusmods.com/mountandblade2bannerlord/mods/186?tab=description

use JetBrains Rider as an IDE, load the CommunityPatch.sln solution file.

https://www.nexusmods.com/mountandblade2bannerlord/mods/186?tab=description

use JetBrains Rider as an IDE, load the CommunityPatch.sln solution file.

Idk I can't afford it and i'm not a student. I did just notice that they give out free licenses to open source projects (which we are) which is pretty cool. Idk how that works though.

@iPherian you can use 30-days evaluation which includes all features (even for commercial purposes) or you can hack it and use for free (but only versions <= 2019.3)

I don't think that project meets jebrains open source criterias, it should have > 500 contributors (if i recall correctly)

@xahon That would be a shame. You sure tho? I can't find that requirement anywhere.

Back when the project first started @Tyler-IN talked about open source licenses for Rider. Not sure what happened. BTW > 500 contributors is not a requirement.


Why is NavigationExperimental part of react-native core?

The work done by @ericvicenti is great but the API is still quite unstable, documentation missing etc. I think adding another navigator in addition to Navigator and NavigatorIOS will confuse people more than help them. As NavigationExperimental was pulled in from ericvicenti/navigation-rfc i'm sure there's a reason for this?
Pulling out NavigationExperimental into it's own repo, for instance facebook/react-native-navigator-next, has a couple benefits:

Allows API, docs and examples to stabilize independent from react-native
Issues & pull requests can be tracked separately, generally less clutter in main repo
Potentially less confusion for people looking for a navigation solution, having it part of core (and in UIExplorer) makes it currently look like an officially blessed way of doing things

Navigation is a such a core part of any app and i love the thinking that's gone into NavigationExperimental. Would be great to get NavigationExperimental to a good solid place and only then recommend it as the way to do navigation.

I completely agree. I've put a lot of effort into getting the Navigator component to work the way I want it to. I decided to stick with that component since I assumed it would be consistently maintained and improved by the core team and community. Now I'm not sure whether that was a good move or whether I should start worrying about switching to the NavigationExperimental version. Navigators are a core part of any app as @akupila mentioned and replacing one Navigator for another in a non-trivial app can be huge amount of work.
Should I commit on the Navigator component and continue development with it's API in mind or should I avoid putting much effort into navigation related logic and be prepared to switch in the near future?

@akupila

The work done by @ericvicenti is great but the API is still quite unstable, documentation missing etc

Even if it's in the main repo, it's named as NavigationExperimental, which should be enough to imply that's it's experimental. Of course, before finalizing it, we will need to improve the docs and all.
IMO putting it to a separate repo will increase the maintenance cost rather than decreasing it. And we'll need to have tooling for 2 different repos.
@eysi09
Your reasons are completely different I think. I think we can move the current Navigator to a separate repo when NavigationExperimental becomes the default navigator. Same goes for NavigatorIOS. People who are already happy with the current navigator shouldn't need to change anything.
cc @ericvicenti

I decided to stick with that component since I assumed it would be consistently maintained and improved by the core team and community.

@eysi09 Doesn't appear to be a safe assumption. Refer to the Navigator Comparison Docs which state...

Facebook is dropping support for Navigator and will focus on NavigationExperimental from now on

I was under the impression that it was going to replace the current Navigator given the way the Product Pain post was titled?

@geirman You're right, thanks. That comment is only 22 hours old though, wish I would've seen it last week. Is there a rough estimate for when it will become the default? And is it production ready at the moment (apart from the missing docs)?

@eysi09 Using it in prod and it's working fine. But the API is still in flux. So may be hold off a bit.

I think my biggest issue here is that it's a bit unclear where discussion or questions should happen. Previously an issue could be opened on the ericvicenti/navigation-rfc/ repo but now i just feel bad doing it as there are so many open issues in the main repo already. Same thing goes for community contributed docs updates, examples etc, what's a good approach for that now?
@satya164

IMO putting it to a separate repo will increase the maintenance cost rather than decreasing it. And we'll need to have tooling for 2 different repos.

As NavigationExperimental doesn't depend on any native code (just Animated which already is in core) i don't think the tooling overhead is that bad. Sure there's some with setting up tests etc but that applies to any 3rd party library. In a sense this is very similar to reactjs/react-router which happily can live outside of React core.
All this said I think React Native is a bit different that React; an app without navigation is basically non-existent in the native world so eventually it'd be good to have a core team blessed router part of core and UIExplorer. I just don't think NavigatorExperimental is mature enough for that yet and keeping it part of core slows down progress. Happy to be proven wrong!

I think my biggest issue here is that it's a bit unclear where discussion or questions should happen. Previously an issue could be opened on the ericvicenti/navigation-rfc/ repo but now i just feel bad doing it as there are so many open issues in the main repo already. Same thing goes for community contributed docs updates, examples etc, what's a good approach for that now?

Discussions should happen in the main repo. Keeping it in the main repo means more people will try it, rather than only few people who discover that another repo exists.
@ericvicenti should the other repo be deleted/or issues could be disabled there?

As NavigationExperimental doesn't depend on any native code (just Animated which already is in core) i don't think the tooling overhead is that bad. Sure there's some with setting up tests etc but that applies to any 3rd party library. In a sense this is very similar to reactjs/react-router which happily can live outside of React core.

There is a lot of tooling needed, bots for importing PRs to phabricator, bots to comment on issues, running tests on CI, syncing the code into FB codebase etc. Even now it's pretty huge work load to keep everything working properly and fix bugs. Splitting it into two repos will be immensely difficult to manage.
Also after it's finished, when we've documentations, examples etc., it'll be much harder to integrate them back.

I just don't think NavigatorExperimental is mature enough for that yet

NavigatorExperimental is being used inside Facebook. It might not be mature, but it works pretty good right now. Also it's named as Experimental, so I think its obvious that the API is not stable.

keeping it part of core slows down progress.

I don't think it slows down the progress. Why would you think so?
Note that all of these are my personal opinion. I understand why you're saying this, but I don't think it makes much sense in context of React Native.

All valid points. I didn't consider the depth of the tooling needed as i'm not all that familiar with the build process & CI here.
I guess it makes sense to fix forward rather than reverting back and keeping everything in one place is definitely a good thing for anybody in the future googling things. Would be nice to clear some confusion here though, perhaps by adding something about NavigatorExperimental to Navigator Comparison, maybe merging stuff from ericvicenti/navigation-rfc/blob/master/Docs/NavigationOverview.md? I'm also curious to know if there's an ETA for this to be finalized? Or at least for some basic documentation to show up?

Thanks for the constructive discussion around this, folks. I agree that we're not in an ideal state. @satya164 is right, we have it this way for now for maintainability reasons. It is much easier for us to open-source RN modules this way because of shared testing, code syncing and versioning infrastructure. We also want to make it clear that NavigationExperimental is going to fully replace Navigator (which is already in RN core).
I'm working on documentation today and I hope to get some of it landed in the main RN docs by tomorrow. I know its a big concern for adopters!
I agree with @akupila about the biggest problem- that GH issues inside the RN repo will not scale well. At the moment I am happy to respond to issues on the RFC repo, or when people tag me on issues in RN. Otherwise I'm afraid that I will miss things. Does anybody have any suggestions? I could close issues in the other repo, but it still might be a useful channel. Maybe we can add a label for this and configure a bot to tag a few of us Nav-heads?
cc @vjeux , there are a lot of shared concerns with this and Animated.

For animated, work on a next version is being done on https://github.com/animatedjs/animated in a very ad-hoc way. Unsure if it's a path we should follow

Thanks for confirming and clarifying. Can I ask questions about NavigationExperimental here?

Would it make sense to start a #Navigation or #NavigationExperimental channel in Discord's reactiflux? Might cut down on the random, one off questions... leaving github issues focused on work items.

Ok, lets do this for now:
Questions on Usage:
Post on StackOverflow and tag @ericvicenti . Long term we should create a tag for this that people can subscribe to (I would do it but I don't have enough SO reputation)
Bug Reports and API feedback
Post issue in react-native and tag me (@ericvicenti). Title should include "NavigationExperimental"
OR:
Post issue in https://github.com/ericvicenti/navigation-rfc/issues
Neither option will be appropriate long term. I'm open to ideas on how to fix this!
Discussion
We just opened a new discord channel. Feel free to drop in here and discuss:  https://discordapp.com/channels/102860784329052160/154015578669973504

I'm really hurt by NavigationExperimental, Poor document, Too complex, Missing feature.
I have spend one week on this, maybe it's too early to merge it into master.

My apologies for the sparse documentation. The work-in-progress is available here: https://github.com/ericvicenti/navigation-rfc/tree/master/Docs

Contributions would be very welcome!

Is there some complexity that you would like to see removed, without sacrificing flexibility?

If so, file an issue and explain how we can simplify things
You may be interested in higher-level components like the new NavigationCardStack, which cuts down on the boilerplate for simple apps.

We can't possibly support every feature, but now it is easier to add your own features.

If you have questions on how to do something with the API, tag me on StackOverflow.
Any specific features that you think should be built in? File that as an issue or on ProductPains.

Lastly, this is "Experimental" for a reason- it may not be ready for everybody.

If you know of other libraries that cause you less pain, feel free to use them and tell us how they compare!

Are you able to tell anything about when to expect it to be "less experimental"? I'm starting new project, I have a lot of pain understanding current Navigator or finding some good docs about it and I'm not sure what to do now.

NavigationExperimental is the supported option going forward. We will remove the 'experimental' name once the API changes have died down and we've adopted it in Facebook apps.

If I'd start using it now, are you able to tell how big potential api changes could be? Could it be something that will require big effort to fit into potential new one?

The API changes will be tiny in comparison to the difference between Navigator and NavigationExperimental.
For example, the reducer API may change or get more advanced, but your views would remain unaffected

I think adding NavigatorExperimental docs to the official docs would help with some of the pains here. The reason i opened the issue in the first place is very similar to @adampietrasiak, starting a new project and not really knowing where to start with navigation. If the code is part of the main repo, doesn't it make sense to keep the docs in the main repo too, instead of https://github.com/ericvicenti/navigation-rfc/tree/master/Docs?

I hope there's better documentation.  I have to look at the example code to understand but even the example is not easy to digest.

@5amfung this maybe helpful. https://github.com/jlyman/RN-NavigationExperimental-Redux-Example

how to migrate from Navigator to NavigationExperimental?

I migrated the f8 app from Navigator to NavigationExperimental: https://github.com/fbsamples/f8app/pull/37

@ericvicenti thnx!

Just found this page, because I was looking for documentation / information for the NavigationExperimental API from official sources.
It's totally clear, that an ExperimentAPI can change very often even without proper versioning. But we need at least some kind of official source to look at the changelogs to this special topic.
Because I am starting a new application right now, I would like to know, which Navigation solution to choose. I guess the direction goes clear to the new one. So, could someone from the core team tell, what the plans are to release a first draft of documentation on this?
This would be really helpful!

@dropfen my philosophy is, it is really terrible technical debt to work with a technology that's about to be deprecated.
The only thing that could be worse, is working with another technology that is so alpha that it is a moving target.
My suggestion is, unless you really want to shape the future of Navigation Experimental, stick with the old navigation system.

@ericvicenti Its been a couple of months since this discussion took place, i am now in the process of beginning work on a new, midly complex app, and need a navigation solution. Is NavExp at the point where you would recommend it over the original one?

Yep, absolutely. Compared to Navigator, it is far more maintainable and hackable. We are adopting it for a few things at Facebook. It is still changing in small ways, but it is the supported navigation solution moving forward.

Hello Eric (@ericvicenti),
is there an "expected" React Native version for the NavigationExperimental renaming (i.e. getting out of experimental)?
The Github tracker is full of issues and I have difficulties to understanding what is left to do for the NavigationExperimental.  Is a "big vision" Trello/Asana/Jira/... progress tracker available somewhere (if it is public of course)?
cheers and thank you for your work :)
Jerome

Hi, I answer my previous post, the RN team published a blog post about releasing a roadmap: http://facebook.github.io/react-native/blog/2016/11/08/introducing-button-yarn-and-a-public-roadmap.html - basically NavigationExperimental is going to be deprecated in favor a new solution which would be excellent :) I also saw that there is an interest for the new navigation to work on react-native-web which would be wonderful for the react-native-web project :) Cheers, Jerome.

So, which navigator should we use now to easily move to the new solution when it comes?

@rodrigoruiz check it out: https://github.com/wix/react-native-navigation

I'm guessing it has native code dependencies right? so I would be able to use with Exponent?

For now, I would recommend using ExNavigation, which currently provides a bunch of features on top of NavigationExperimental, and it will be pretty easy to switch to the new solution.

Hopefully this will save ya'll 10m of google searching.
mkonicek's comment on product pains Jan 26, 2017 says to check out React Navigation


fix(useLocale): missing import in various components

🔗 Linked issue
Resolves #2602
❓ Type of change

[ ] 📖 Documentation (updates to the documentation or readme)
[x] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
useLocale isn't imported in various components, causing 500 errors

📝 Checklist

[ ] I have linked an issue or discussion.
[ ] I have updated the documentation accordingly.

Thanks @sandros94! 😊

Thanks @sandros94! 😊

Always glad to help 🙏


Importing an Actor does reset item-macro settings

Describe the bug
Importing an Actor does reset item-macro settings.
https://github.com/Foundry-Workshop/Item-Macro/issues/1
To Reproduce
Steps to reproduce the behavior:

Create Actor
Click on ddb-url and paste any
import with default settings
item-macro settings have been reset to defaults

Expected behavior
Should not have any interaction with any other module's settings.
Environment:

Browser Chrome fully updated
Foundry Version 11.315
5e System Version 2.4 and 3.0
Module Version fully updated, problem exists at least since Oct 27, 2023
it is an interaction with item-macro probably (the bug is that item-macro settings are reset)

It doens't reset all itemacro settings, just the charsheet macro, which needs to be disabled for the automation created by DDB Inmporter and most midi/dae effects.

It is intentional? Then how about restoring the setting after the import or better a setting on your side to not do it optionally? Or is it only done if other settings on your side are set in a way to indicate that one wants to use midi/dae stuff?

don't think so:

and also neither midiQoL nor DAE installed.


[bugfix] fix column name for record metadata in quickstart

header and metadata columns are prefixed with __

@KKcorps


make lifetime profit of a player available

https://github.com/sopra-fs23-group-33/sopra-server/commit/7ce788ea7ddf0f5376d6ca91e60fab984338c864