[FLINK-13922][docs] Translate headings of task_failure_recovery.zh.md into English

What is the purpose of the change
Translate headings of task_failure_recovery.zh.md into English in order to support
anchors in the English and Chinese documentation to subsections of this page.
Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable)

Thanks Till for fixing it.
Manually verified it and the anchors in zh docs are working as expected.
So +1 for merging it.

Thanks for the review @zhuzhurk and @wuchong. Merging this PR now.


Installing OpenCV Error

Everytime I try to install OpenCV with the given Command pip3 install Pillow opencv-python opencv-contrib-python
I get the Error:
Collecting Pillow
Using cached https://files.pythonhosted.org/packages/5b/bb/cdc8086db1f15d0664dd22a62c69613cdc00f1dd430b5b19df1bea83f2a3/Pillow-6.2.1.tar.gz
Collecting opencv-python
Could not find a version that satisfies the requirement opencv-python (from versions: )
No matching distribution found for opencv-python
I use the Google Coral Dev Board.
Hopefully somebody can tell me how I can fix this problem

I've also been running into this issue.

The package you need is python3-opencv
However, the easiest way is just to run this install_script in this repo (under opencv) which should work out of the box on devboard.
https://github.com/google-coral/examples-camera/blob/master/opencv/install_requirements.sh
bash opencv/install_requirements.sh
And you should be good to go.

Please feel free to reopen this bug if the issue persists.


Allow logging in to more than one account

Right now, if you want to switch accounts, you have to log out and log back in. Ideally there should be a way to log in to multiple accounts and easily switch between them or better yet, show multiple views.
I'm thinking for starters a nice view of:

Microsoft account
Work or School account

would be nice

This kinda works today. Just run the Microsoft To Do (Unofficial): Login command and choose the opposite of what you're currently logged in as and you can swap between accounts.

@TylerLeonhardt  how does one logout?

@razamiDev here:

though if you're wanting to switch between MSA & Work & School that is supported with the "Microsoft To Do (Unofficial): Login" command

Thanks @TylerLeonhardt!
This is a really cool extension!


Define DLL_EXPORT when building shared libraries for Windows

Right now, a CMake build with -DBUILD_SHARED_LIBS=ON ends up building a DLL with no exports (or lib file). DLL_EXPORT must be defined for our exports to actually be exported.

Does this change need to be made for SDL_image and SDL_mixer as well?

It looks like they both already handle it.
https://github.com/libsdl-org/SDL_image/blob/ce7b232f58e0a7f0dcaa03c68fdaebefae5c8167/CMakeLists.txt#L102-L104
https://github.com/libsdl-org/SDL_mixer/blob/9425f0e422e1b2dea3d8e9a43f69c2209ba8e2bc/CMakeLists.txt#L91-L93

Okay, great.


Image shape

why Input Image Size is the same? does it depend on my dataset?

For a specific network, the input image size is a fixed value. During training, the program scales the width and height of the image in the dataset to this particular size and then feeds it into the network.


PathLayer perf improvements

do not construct intermediate arrays
replace prevPositions and nextPositions with delta (prep for 64bit version)
add benchmark

After some poking around, unfortunately copyWith has a huge hit on perf. I'm favoring for loops for now.


Add build-time tracking tool for image-build

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[x] The toolchain has been rebuilt successfully (or no changes were made to it)
[x] The toolchain/worker package manifests are up-to-date
[x] Any updated packages successfully build (or no packages were changed)
[x] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[x] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[x] All package sources are available
[x] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/tools/cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[x] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[x] All source files have up-to-date hashes in the *.signatures.json files
[x] sudo make go-tidy-all and sudo make go-test-coverage pass
[x] Documentation has been updated to match any changes to the build system
[ ] Ready to merge

Summary

This is a PR of a timestamping tool for the image build. At the end of an image build, measurements of the runtime for the steps of each individual tool are output into the terminal. The total build duration is also displayed. This is needed as information to help developers contextualize the length of a build.
Change Log

Create toolkit/tools/internal/timestamp/timestamp.go to record timestamps for go programs used during image-build.
Create toolkit/tools/bldtracker/bldtracker.go to record timestamps for shell scripts used during image-build.
Create toolkit/tools/internal/csvparser/csvparser.go to parse recorded timestamps in CSVs and output them into the terminal at the end of the image-build.
Change a few makefile to incorporate the build-time tracking tool into image-build.
Add documentations to explain the build-time tracking tool.
Add function calls in go programs and shell scripts used in the image-build to use the build-time tracking tool.

Does this affect the toolchain?

NO
Associated issues

#xxxx

Links to CVEs

Not applicable.

Test Methodology

Pipeline build id: xxxx

Can you make sure to run sudo make go-tidy-all to clean up the module files etc.

Going to move this into a staging branch for futher work, including pulling in the new json based data format.


Add a getRecordID method to the DNS endpoint

Very similar to the method getZoneID for the Zones endpoint

Why is this still open?


InMemoryChannel causes lock contention

Repro Steps

In a Unit test, create a TelemetryClient
Launch 400 threads
In each thread call TelemetryClient.Track 250 times
Profile the behavior

It will total with 100,000 calls and a possible runtime of 8-10 seconds. Just increase 250 to 2500 if you want a better profiling picture.
A comparable library which internally uses ETW to pipe the events is running 10 times faster with no locking. Even when having a "BatchBlock-ActionBlock pipe from TPL DataFlow writing on local disk with SemaphoreSlim-lock only in ActionBlock" runs 60 times faster (of course, locking each thread to write to disk runs slower).
Actual Behavior
65% is spent in Lock contention. 27% is due to GC Wait lock. All the rest 38% is actual locking.
Only 7% of time is spent in OnBufferFull handler - the test is not blasting too heavy with events.
Such heavy locking gets strongest impacts on the ThreadPool as all our code is asynchronous with Tasks, but if a Task locks, then it cannot release a thread and causes either thread starvation or thread pool growth which is already a CPU starvation. Eventually machine peaks at 100% CPU and unable to respond to actual HTTP calls.
Expected Behavior
No locking on threads sourcing the events.
Version Info
Library Version: Microsoft.ApplicationInsights 2.9.1
.NET Version: 4.7.2
Details
With high load applications the implementation of TelemetryBuffer becomes the bottleneck, that slows down all requests and causes high latency.
The reason behind having that many calls is because property dictionaries in those cases are different and cannot be just aggregated into a single Metric. All those properties are used as custom dimensions for search. There are 20 properties, each can have somewhere between 5 to 100 different values.
Possible options:

Allow custom implementation of TelemetryBuffer. Testing shows that using TPL Dataflow to post events and then process them in a single Task (ActionBlock with parallelism 1) improves performance. Of course, standard implementation should not rely on yet another heavy library, but having the possibility to override just one class for our narrow use case can be beneficial. Current implementation does not allow such extensibility as InMemoryTransmitter requires exactly TelemetryBuffer class and not an interface and anyway all those classes are internal except InMemoryChannel's default constructor, which hints a requirement to reimplement the whole ITelemetryChannel.

Provide interface with batching support of an IEnumerable with, say, ITelemetry. There is a similar support with TrackEvent where for the same properties it is possible to send multiple metrics. Having similar interface but for different property sets could allow having a lock just once instead of N-times. Aggregation into a batch will be done in caller's code, not in library.

Provide ETW-version of TelemetryClient to send events into asynchronous pipe. Sadly, right now TelemetryClient implements no interfaces and is sealed, meaning a lot of work to cut it out for another implementation.

Provide asynchronous version of TelemetryClient or just add Track***Async which must use at most Task-friendly SemaphoreSlim to maintain a lock.

May relate to issues in #1026

May relate to issues in #895

Thanks for the detailed post. Could you share the repro app you are using? I typically use something similar to the one here: https://github.com/Microsoft/ApplicationInsights-dotnet/tree/cithomas/perfapp/Test/PerfTest
Would be great if you can share the repro app and we'll see what perf improvements can be done here.

Main reason to get repro code is to make sure that no obvious error in the way SDK is used.!

I've created a gist of my unit tests: https://gist.github.com/ionsphere/bf2af2bba9047e0dde04a981b5a58c1c
There are two tests:

AppInsightsMetricTrackValueIsolatedTest - testing calls to GetMetric(...).TrackValue(...)
AppInsightsMetricTrackTraceIsolatedTest - testing calls to TrackTrace(...)

The performance difference of the two tests fluctuates. For GetMetric it is stable and always shows 200+ events per millisecond. But for TrackTrace it was up to 100 events per millisecond but also down to 15 events per millisecond. That means TrackTrace usage should be minimized, or the implementation changed.
Notice: running those tests took 2.5 minutes on my box.
Profile shows that for TrackTrace timeline 22% is spent in System code, 43% in Lock contention, 10% in GC wait, 13% in CPU wait.
Quite noticeable time was spent in CopyDictionary (16%).
But still main time was contributed by TelemetryBuffer.Enqueue (72%).
To compare TrackValue has 22% spent in System code, 21% in GC wait, 42% in CPU wait.
While 18% of time was spent in TryGetDataSeries, main time was in BuildPointMoniker (63%).


Have gazelle_haskell_module discover source files

Currently, gazelle_haskell_modules requires haskell_library/binary/test to list all source files explicitly in the srcs attribute in order to find them.
This could be relaxed by providing some comment attached to the rule with a path to use for source files. Adding a new source file under the given path would have a corresponding haskell_module rule generated and referenced from the enclosing library/binary/test. e.g.
# gazelle_haskell_modules:srcs: src/
haskell_library(
    name = "lib",
    modules = ["lib.A", "lib.B", "lib.C"],
)

After creating a file src/D.hs, the above would be updated to
# gazelle_haskell_modules:srcs: src/
haskell_library(
    name = "lib",
    modules = ["lib.A", "lib.B", "lib.C", "lib.D"],
)

haskell_module(
    name = "lib.D",
    src = "src/D.hs",
    src_strip_prefix = "src/",
)

I'll take a swing at this.


Change and forward http status code of response with LUA

hi, I am trying to return an error with lua when sequential backends are called.
for example when calling 2 sequential endpoints, if the first responds 401, return 401 and not a 500 as Krakend does today
"endpoints": [
    {
      "endpoint": "/rests-partners-gateway/cauth/CO/menu/{storeId}",
      "method": "GET",
      "output_encoding": "json",
      "timeout": "10s",
      "headers_to_pass": [ "*" ],
      "querystring_params": [ "*" ],
      "cache_ttl": "0s",
      "extra_config": {
              "github.com/devopsfaith/krakend/proxy": {
                 "sequential": true
              },
              "github.com/devopsfaith/krakend-jose/validator": {
                  "roles_key": "https://example.com/roles",
                  "roles": ["PORTAL_KAM"],
                  "jwk-url" : "https://example/.well-known/jwks.json",
                  "issuer": "https://example.auth0.com/",
                  "disable_jwk_security": true,
                  "alg" : "RS256"
              }
      },
      "backend": [
        {
          "url_pattern": "/rests-partners-accounts/auth/stores/validate",
          "timeout": "10s",
          "encoding": "json",
          "host": ["http://example.com"],
          "disable_host_sanitize": "false",
          "method": "POST",
          "extra_config": {
              "github.com/devopsfaith/krakend-martian": {
                  "fifo.Group": {
                      "scope": ["request"],
                      "aggregateErrors": false,
                      "modifiers": [
                          {
                              "body.Modifier": {
                                  "scope": ["request"],
                                  "body": "eyAic3RvcmVfaWRzIjogWyAxMTkgXSAsImNvdW50cnkiOiJDTyJ9"
                              }
                          },
                          {
                              "header.Modifier": {
                                "scope": ["request"],
                                "name": "Content-type",
                                "value": "application/json"
                              }
                          }
                      ]
                  }
              },
              "github.com/devopsfaith/krakend-lua/proxy/backend": {
                  "post": "local r = response.load(); print(\"Backend StatusCodeResponse: \"..r:statusCode());",
				  					"live": true,
                  "allow_open_libs": true
              }
          }
        },
        {
          "url_pattern": "/api/rests-availability/partner/store/{storeId}/menu",
          "timeout": "8s",
          "encoding": "json",
          "host": ["http://example.com"],
          "disable_host_sanitize": "false",
          "method": "GET",
          "extra_config": {}
        }
      ]
    }
  ]

I need to know the status code of the first response to use the custom_error ("", 403) function, but the status code is always "0"
note: I did the same with "github.com/devopsfaith/krakend-lua/proxy" and it didn't work.
can you help me?

hi, @Castronebe !
the feature you're describing is not supported. Whenever more than one backend is linked to a single endpoint, the internal pipe ignores the actual value of the received status code and goes for an ok/ko aproach (thus, returning a 200 or a 500)
once there is a ko in the pipe, it is really hard for the outer layers to know what happened and why
for such complex workflows, I'd rather:

delegate it to the client, or
build a custom client executor

cheers!


ReplaceConstantWithAnotherConstant: IndexOutOfBoundsException for changing constant in annotation

Hi,
I have encountered a bug in the recipe ReplaceConstantWithAnotherConstant if a constant in an annotation is changed. A IndexOutOfBoundsException is then triggered in line 103 of the JavaTemplateParser:
return statementTemplateGenerator.listTemplatedTrees(cu, Expression.class).get(0);

This is a test reproducing the issue:
@Test
void replaceConstantInAnnotation() {
    rewriteRun(
      spec -> spec.recipe(new ReplaceConstantWithAnotherConstant("com.google.common.base.Charsets.UTF_8", "com.constant.B.UTF_8")),
      java(
        """
          package com.constant;
          public class B {
              public static final String UTF_8 = "UTF_8";
              void method() {
                  String VAR = "";
              }
          }
          """
      ),
      java(
        """
          package com.annotation;

          public @interface Anno {
              String value();
          }
          """
      ),
      java(
        """
          import com.google.common.base.Charsets;

          @Anno(Charsets.UTF_8)
          class Test {
              void foo() {
                  System.out.println("Annotation");
              }
          }
          """,
        """
          import com.constant.B;

          @Anno(B.UTF_8)
          class Test {
              void foo() {
                  System.out.println("Annotation");
              }
          }
          """
      )
    );
}

Kind regards
Thomas

Thanks a lot @thomaszub ! Just to be sure we don't duplicate any work: were you already working on a fix given the above test? Or would you want us or anyone else to pick that up?

Hi @timtebeek, I'm not understanding the JavaTemplateParser in-depth, so I would appreciate a fix from you.


FileDataReader now process only docx, pdf and txt files

I'm not sure this is a good idea. For example we could also process .md or csv files. I think that it's better to let user choose which file to handle passing the file extension list from outside.

I agree


404 Error

Yesterday evening and this evening I've received a 404 error when my automation runs to set my AlphaESS battery overnight charge times.
Is anyone else seeing this??
(Last night I was still on HA 2013.12.x and today I'm on 2024.01.1)
This error originated from a custom integration.
Logger: alphaess.alphaess
Source: custom_components/alphaess/init.py:57
Integration: Alpha ESS (documentation, issues)
First occurred: 22:45:01 (2 occurrences)
Last logged: 22:45:01
404, message='', url=URL('https://openapi.alphaess.com/api/updateChargeConfigInfo')
Error: 404, message='', url=URL('https://openapi.alphaess.com/api/updateChargeConfigInfo') when calling https://openapi.alphaess.com/api/updateChargeConfigInfo

Yes, I’m seeing the same thing now.

Upstream issue here #59


aidev call seems to hang forever

Hi! I think this tool has a ton of promise so I really wanted to try it.
However, I am running into an issue trying to build and run the command locally.
To build, I am using Go 1.20, and running from the top level of the project after cloning:
$ go build -o aidev
Which produces an aidev binary.
Then, I create an OPENAI_API_KEY env var and set it via a .env file with my API key (I have direnv installed as well which I have confirmed properly sources the .env file).
running it:
$ ./aidev
My prompt is: "Add the words 'Hello' to the README.md"
❯ ./aidev
12 ignored:
        .aidev
        .env
        .envrc
        .git/
        .gitignore
        LICENSE
        go.mod
        go.sum
        internal/
        modd.conf
        prompt-apply.txt
        prompt.txt
8 files matched:
        README.md
        ignore.go
        ignore_test.go
        load.go
        main.go
        parse.go
        treeconf.go
        util.go
Code tokens: 9000, max for gpt-4: 8192.
Prompt? (end with EOF)
Add "Hello" to the README

It seems to just hang after running this. So far is been running for 10 minutes.
Any thoughts about things I could check to debug what's going on?

So I still don't understand why I am getting that particular error, but I managed to get the -gpt35 flag working by pointing to a smaller directory called test and making a README.md file in there:
So, create test/README.md that is an empty file.
Then, prompt aidev:
$ ./aidev -p "Add a development section to the README" -d test -gpt35
I see two new files appear in that directory, as per the aidev readme guide:
FILES.draft:
README.md

README.md.draft:

Add development section to the README

1. Open the README file
2. Scroll to the bottom of the file
3. Add a new section titled "Development"
4. Under the "Development" section, add any relevant information about the development process, such as how to contribute to the project, how to set up a development environment, and any coding standards or guidelines that contributors should follow.

These look great! However, the original README.md file is still empty :(
README.md:

So it appears to not actually write to the README.md file for some reason 🤔 . Any thoughts? Apologies, I realize the title of this issue is not exactly accurate any more. Happy to move this to a new issue, or rename this one?


Upgrade Symfony Yaml and Config components

Upgrade the Symfony Yaml component to 3.2
Upgrade the Symfony Config component to 3.3-dev
Update config unit tests
Remove un-used configuration files

Coverage increased (+2.8%) to 13.3% when pulling 5f0c451f5a919f8066342b6d58243b3cb0fb46d8 on pierredup:symfony-upgrade-components into cb047c5e015e32091726de0fa1f53d9746b5ec55 on CSBill:master.

Coverage increased (+2.8%) to 13.3% when pulling 627759b2620b45c1f56458e3ac5de1fb4b82be88 on pierredup:symfony-upgrade-components into cb047c5e015e32091726de0fa1f53d9746b5ec55 on CSBill:master.


No built application for download

WTF guys, you can't make built version of app? so to use it i need to download huge amounts of not needed data and applications? That not how the Linux works.

Mentioned in https://github.com/microsoft/Terminal/issues/428 a bit already

Im not the one)

Have patience, if there is no release, then Terminal hasn't been released yet for preview.
Also, doesn't hurt to be polite.

@DavidDeSloovere if it not released yet, then where i got the link to this repo?
Im very polite as it possible with MS brand.
And also polite mean to make installation for users, and not throwing in their faces some code and say "do it with it what you want". And really i don't see a problem to build executable installation, it's a task for few hours max for one dev.

@creotiv you are looking at the code of the new terminal. There is no official build available yet so you either build it yourself or wait until the first builds come in. It's really not that hard to understand...

Well, the windows universal runtime's version is also important.

DEP3321: 要部署此应用程序，你的部署目标应运行 Windows Universal Runtime 版本 10.0.18362.0 或更>高版本。你当前运行的版本为 10.0.17134.706。请更新你的 OS 或将部署目标更改为具有合适版本的设>备。

The generated .appx file does not contain any certificates, it couldn't be installed by double-click or powershell. The only way I found is select "Deploy Solution" in vs2017 IDE.

@AndreasWebdev so why there is no installer? is it so hard to make?

Why don't you develop your own terminal instead of asking like you are the CEO of Microsoft?

@cjim8889 why i should?

@creotiv why should they?

@wayheming because they published it and advertise it

@creotiv So what?

@wayheming then maybe should think about that before start advertise it? or spent 1-2h and make installation. It's installation and not human like AI system

@creotiv you can always not use analog from the Internet if you don't have enough knowledge to install this terminal

The sense of entitlement is strong with this one

@wayheming strange to hear this in MS repo which is "new era UX"))

@creotiv good luck with learning terminal installation

@creotive
Dear creorive,
I would like to leave you some words, I do mean to end the discussion and not advance it.
There will be a Windows store entry for early adopters sometime this summer. And the release date is set for this Winter.
They advertised this for developers to thinker and contribute, not for anyone to just press a build file or use an installer.
By enabling the current barrier you ensure that the people who are using it have the skills to do so the right way. And therefore are able to contribute correctly.
If there was a simple build file or installer, I, an everyday Joe, will thinker with it and I may screw things up on my computer or make excessive issues on this GitHub. (I would say, one like this.)
So i am convinced that this is the perfect way to tease this product. Mind you that this is a release but not a Launch of the product. This is like an alpha, not representative of the final product and thus not finished.
Would you complain the same way if Valve gave away the source for HL3 but wont give you an installer? No, you should be happy with what you got.
If you are un-able to build this yourself or find it too much of a hassle, this product is probably not made for you. (Sorry)
But I doubt that since I could get this to work and I dont know what i am doing.
I hope this gives you a different perspective on the discussion.
-Jasper
PS: if you really want to have an easy way to install this, fork it, fix it, make a pull request and contribute.

Have patience, if there is no release, then Terminal hasn't been released yet for preview.
Also, doesn't hurt to be polite.

Then why inviting people to try it out?

@warpdesign Twitter account is called Windows Developer and implies that the person will be able to cope with the installation from GitHub

Then why inviting people to try it out?

You're referencing that picture of a tweet, right?  The tweet poster by Windows Developer?  The Twitter account primarily followed by developers?  The one that says "Microsoft Developer is your resource for development tips, tricks, research, case studies...Everything you need to develop apps that users love."?   The tweet I'm assuming is targeted towards developers, not standard users?
You're talking about that one, right?

@notmike101 exactly!

3 month to make an installer for an app)) that's nice)

Then why inviting people to try it out?

You're referencing that picture of a tweet, right? The tweet posted by Windows Developer? The Twitter account primarily followed by developers? The one that says "Microsoft Developer is your resource for development tips, tricks, research, case studies...Everything you need to develop apps that users love."? The tweet I'm assuming is targeted towards developers, not standard users?
You're talking about that one, right?
Even then, my only real question to you is this:
https://github.com/warpdesign/js-x86
Where's your binaries? Just because it's "early and incomplete" (just like this code on this repo is) shouldn't be an excuse.

Because its not a system app))) so it strange to have executable on it)

@creotiv this is open source project you always can create pull request with installer but you can only demand and scoff

Hi there. Thanks for being so excited to jump in.
I'm going to lock this issue, and I'll have to ask you to please remain civil.


Globalnet Controller is not annotating Services without selectors

Setup: Overlapping Clusters with Submariner Globalnet deployed.
Services without selectors i.e no backend pod, are not accessible across clusters if globalnet is enabled. It works when clusters don't have overlapping CIDRs and globalnet is not used.

But what if the service without selectors is pointing to local cluster pods?

Ahh sorry I see it was implemented, cool


Let number of instant execution problems reported at the console match the html report

Ah, just saw #11741, disregard my question above!


Remove gRPC-web and Envoy (replaced by ConnectRPC)

What this PR does / why we need it?
Remove gRPC-web and Envoy part from “Self-Hosted Server” part of the document.
Any background context you want to provide?
https://github.com/yorkie-team/yorkie-js-sdk/pull/698 introduced ConnectRPC to replace gRPC-web and Envoy.
Now we can connect to Yorkie Server from JavaScript SDK directly.
Checklist

[x] Added relevant tests or not required
[x] Didn't break anything

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


fix(prometheus): PrometheusMeterRegistry to support same name with different set of tag keys

Fixes: https://github.com/armory-plugins/armory-observability-plugin/issues/26
Additionally the micrometer libraries are updated to the available LTS.
The work done in this PR is duplicated/imported from https://github.com/micrometer-metrics/micrometer/pull/2653 that attempts to fix the limitation on the micrometer-prometheus library.

Pull Request Test Coverage Report for Build #72

0 of 0   changed or added relevant lines in 0 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage remained the same at 93.309%

Files with Coverage Reduction
New Missed Lines
%

file:/home/runner/work/armory-observability-plugin/armory-observability-plugin/common/src/main/java/io/armory/plugin/observability/newrelic/NewRelicRegistrySupplier.java
1
95.0%

Totals

Change from base Build #71:
0.0%

Covered Lines:
251

Relevant Lines:
269

💛  - Coveralls


32*16 1/2 Scan not correct

Hello ,
First thanks for your library and the work you have done on it.
I m working with a 32x16 P10 led panel 1/2 scan (this one : https://www.aliexpress.com/item/Freeshipping-outdoor-p10-smd-led-display-module-16x32-32x16-160x320-320x160-1-2-scan-high-brightenss/32669606028.html?spm=a2g0s.90423<IP_ADDRESS>e9f4c4dkm11fg )
It seems the 1/2 scan is not working (or not supported ?) pattern test show  the scan like this  (here come beautifull ASCII ART :p )
I use these parameters :
`
display.begin(2);
display.setScanPattern(ZAGGIZ);
display.setMuxPattern(BINARY);
which are the only one to make something similar to test pattern

= Black;  R = Red ; Y  =Yellow ; W = White

RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
WWWWWWWWWWWWWWWWWWWWW
WWWWWWWWWWWWWWWWWWWWW
Regards,

DI you try the current master from github?

I  downloaded the library 2 day ago so i thinked it was the last one but i see  you commited yesterday.
I will try with the new version

Can you post a video of the pattern test? I will need at least two full (red, yello, white) sequences.

Here is the video you asked for , sorry for the bad quality but i got a crappy phone
https://makeagif.com/gif/led-test-HTbG9i

Can your check you cabling ... it looks like you set up the chain to be R1G1B1R2G2B2 where it should be R1R2G1G2B1B2

you were right a cable was not secured in the display causing this behaviour.  So the pattern display  is working correctly (exept the display.print("Pixel"); that dont display anything)
But i will dig into that one.

Btw , thnaks for your time answering my noob question

No problem … let me know what is going on. There aren’t many people with 1/2 scan displays and I want to make sure that  the library works ok with them.

On 12. Jun 2018, at 20:56, Skidouil<EMAIL_ADDRESS>wrote:
Btw , thnaks for your time answering my noob question
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/2dom/PxMatrix/issues/19#issuecomment-396697084, or mute the thread https://github.com/notifications/unsubscribe-auth/AD4vjBw_HwDvDpqQDBIS0va5LVuGmMn3ks5t8A7ggaJpZM4UjO0-.

Here its me again , so here is the feed back :

display.displayTestPattern is working perfectly :  every 2 row got to red => yellow => white
displayTestPixel : does work with a pixel moving on the display in red

But when i try to display some text : display.print("Pixel") or display.drawPixel(1,1,myCYAN); dont work
In attach you will find a photo of the display showing "pixel" word.
I got the same result with pixeltime demo the row seems mismatched

Try playing with setting the scanpattern (see readme)
Sent from my iPhone

On 13. Jun 2018, at 20:39, Skidouil<EMAIL_ADDRESS>wrote:
Here its me again , so here is the feed back :
display.displayTestPattern is working perfectly : every 2 row got to red => yellow => white
displayTestPixel : does work with a pixel moving on the display in red
But when i try to display some text : display.print("Pixel") or display.drawPixel(1,1,myCYAN); dont work
In attach you will find a photo of the display showing "pixel" word.
I got the same result with pixeltime demo the row seems mismatched
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Unfortunatly i tried all 6 combination of scanpattern / Muxpattern and everytime the result is wrong

Ok ... lets try something different. Could you please run the pattern test however substitute
display.displayTestPattern(30)
with
display.displayTestPixel(30)

... and send a video of the result :)

Hello , here the file you requested :)
https://makeagif.com/gif/-fQ3dDB

Hi @Skidouil and @2dom, I'm in the same boat ... I'm trying to control a P10 32x16 1/2 led panel with a esp-wroom-32, it's wired like the diagram but doesn't work.
Here's my test code, follow the link to the video showing the results and the led backpanel/wiring pic:
#include <PxMatrix.h>
#define P_LAT 22
#define P_A 19
#define P_B 23
#define P_C 18
#define P_D 5
#define P_E 15
#define P_OE 2
hw_timer_t * timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
static int taskCore = 0;
// Pins for LED MATRIX
PxMATRIX display(32,16,P_LAT, P_OE,P_A,P_B,P_C);
void setup() {
Serial.begin(9600);
// Define your display layout here, e.g. 1/8 step
display.begin(2);
display.setScanPattern(ZAGGIZ);
display.setMuxPattern(BINARY);
display.fillRect(0,0,8,8,display.color565(0, 255, 0));
}
void loop() {
display.display(30);
//display.displayTestPattern(30);
//display.displayTestPixel(30);
}
Video:
https://photos.app.goo.gl/1UAqKM6oq5QQuMDs7
Led panel backpanel:
https://photos.app.goo.gl/yxbugHRw6iaMecJ56
@Skidouil I see you have good progress in your tests, could you post the code of your .ino project?

Hello,
I use the  pattern_test.ino with configuration adaptation for my panel  , here is the code :
PS i use default scan / mux pattern after trying all combinaison with no success and my panel only use A & B
#include <PxMatrix.h>
#ifdef ESP32
#define P_LAT 22
#define P_A 19
#define P_B 23
#define P_C 18
#define P_D 5
#define P_E 15
#define P_OE 2
hw_timer_t * timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
#endif
#ifdef ESP8266
#include <Ticker.h>
Ticker display_ticker;
#define P_LAT 16
#define P_A 5
#define P_B 4
#define P_C 15
#define P_D 12
#define P_E 0
#define P_OE 2
#endif
// Pins for LED MATRIX
PxMATRIX display(32,16,P_LAT, P_OE,P_A,P_B);
//PxMATRIX display(32,16,P_LAT, P_OE,P_A,P_B,P_C);
//PxMATRIX display(64,32,P_LAT, P_OE,P_A,P_B,P_C,P_D);
//PxMATRIX display(64,64,P_LAT, P_OE,P_A,P_B,P_C,P_D,P_E);
#ifdef ESP8266
// ISR for display refresh
void display_updater()
{
display.displayTestPattern(70);
// display.displayTestPixel(70);
//display.display(70);
}
#endif
#ifdef ESP32
void IRAM_ATTR display_updater(){
// Increment the counter and set the time of ISR
portENTER_CRITICAL_ISR(&timerMux);
//isplay.display(70);
display.displayTestPattern(70);
portEXIT_CRITICAL_ISR(&timerMux);
}
#endif
uint16_t myCYAN = display.color565(0, 255, 255);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
display.begin(2);
display.flushDisplay();
display.setTextColor(myCYAN);
display.setCursor(2,0);
display.print("Pixel");
Serial.println("hello");
#ifdef ESP8266
display_ticker.attach(0.002, display_updater);
#endif
#ifdef ESP32
timer = timerBegin(0, 80, true);
timerAttachInterrupt(timer, &display_updater, true);
timerAlarmWrite(timer, 2000, true);
timerAlarmEnable(timer);
#endif
delay(1000);
}
void loop() {
delay(100);
}`

@lucianolopesjardim New version on master ... let me know what it does

Thanks guys for your help, I think we're almost there. I connected the esp32 ground to the led panel ground and the flickers just disappeared. I updated the master and did the tests with all the examples, I changed only the following lines:
PxMATRIX display (32,16, P_LAT, P_OE, P_A, P_B, P_C);
display.begin (2);
And here are the results, please take a look:
pattern_test
https://photos.app.goo.gl/Z3EFL7pEmw2jC1Ce6
pixeltime
https://photos.app.goo.gl/m7z8Xdt4yMXg31S99
pixeltime_esp32
https://photos.app.goo.gl/LBojEo51rWKc5HBTA

OK ... great ... new version on master

Hello,
I update the librairies with the last version and ..... it work perfectly  , thanks you @2dom  for all the work you put in this library.

I still got a bit of flickering but i suppose it come from my hardware.

Great! You may want to try
display.setFastUpdate(true);
with
display.display(20);
and 160MHz CPU clock.

@lucianolopesjardim Check https://github.com/2dom/PxMatrix ... currently the library only supports horizontal chaining and only works reliable for panels that use scanning pattern LINE.
You may want to open a separate issue to support vertical chaining. This will require some time so do though (which I don't have atm)
Closing this issue now ... glad that it finally works


google workspace app

Purpose of this pull request
See https://jasklabs.atlassian.net/browse/CON-1133
Select the type of change:

[ ] Minor Changes - Typos, formatting, slight revisions
[x] Update Content - Revisions and updating sections
[ ] New Content - New features, sections, pages, tutorials
[ ] Site and Tools - Updates, maintenance, and new packages for the site, Gatsby, React, etc

Hi @MariePMcGarry , added some more changes and did a slight reorg.

@MariePMcGarry , edited your PR and obtained Mohit's approval (see https://jasklabs.atlassian.net/browse/CON-1133).
@stacykor , will merge this.


Ionic2 - nav.setRoot(Component) - Works only first time, unable to navigate after, no errors reported

Short description of the problem:
I am developing an app with Ionic2. I have App.ts as the parent, Welcome.ts as a child page and Featured.ts as a child page as well. I have firebase integrated with the app. Rootpage is first set to Welcome.
this.rootPage = Welcome;

Step 1: I click a button on Welcome to authenicate with Google, once onAuth is called, I set this.nav.setRoot(Featured); All works fine up to now. I get to the Featured page which enables a sidemenu with different pages and i am able to navigate to all of them no problem.
Step 2: Featured enables a sidemenu from App.ts/html, in there I have a logout button that calls unauth.
Unauth does some Firebase unauth and then:
this.menu.close();
let nav = this.app.getComponent('nav');
nav.setRoot(Welcome);

Step 3: Login again same as in step 1. All is fine up to now.
Step 4: Open side menu, selects any of the pages from the sidemenu, navigation doesn't occur. sidemenu closes but page remain the same, navbar icon button disappear and no navigation occurs.
openPage code:
  openPage(page) {
    //1. Loop through and set active attribute to False if it doesn't match.
    //   Set to True if it matches page title
    for(var i = 0; i < this.NavPages.length; i++) {
      if(this.NavPages[i].title == page.title) this.NavPages[i].active = true;
      else this.NavPages[i].active = false;
    }
    for(var i = 0; i < this.ActivityPages.length; i++) {
      if(this.ActivityPages[i].title == page.title) this.ActivityPages[i].active = true;
      else this.ActivityPages[i].active = false;
    }
    for(var i = 0; i < this.PreferencesPages.length; i++) {
      if(this.PreferencesPages[i].title == page.title) this.PreferencesPages[i].active = true;
      else this.PreferencesPages[i].active = false;
    }

    //2. close the menu when clicking a link from the menu
    this.menu.close();
    //3. navigate to the new page if it is not the current page
    let nav = this.app.getComponent('nav');
    nav.setRoot(page.component);
  }

What behavior are you expecting?
I am expecting navigation to continue to occur, similar to what happens in step 1.
Steps to reproduce:
Steps to reproduce included above.
Code included above.

Other information: (e.g. stacktraces, related issues, suggestions how to fix, stackoverflow links, forum links, etc)
No error is being thrown unfortunately. I don't see any erros in the console logs.
Which Ionic Version? 2.x
Run ionic info from terminal/cmd prompt: (paste output below)
Your system information:

Cordova CLI: 6.0.0
Gulp version:  CLI version 3.9.0
Gulp local:   Local version 3.9.1
Ionic Version: 2.0.0-beta.3
Ionic CLI Version: 2.0.0-beta.19
Ionic App Lib Version: 2.0.0-beta.9
ios-deploy version: 1.8.2
ios-sim version: 5.0.3
OS: Mac OS X El Capitan
Node Version: v0.12.7
Xcode version: Xcode 7.2.1 Build version 7C1002

Thank you.

I noticed the following: 2 ion pages are present at once in the dom.

The one I navigated to is "explore" which has a lower z-index(92) than the "featured" page. Therefore I should be on explore but the "featured" is overlayed on top of "explore" with a z-index of 93.

I'm experiencing the same issue but in my case I can't even get redirected after login.
If I'm already logged and land in the login view, nav.setRoot(TabsPage) is executed perfectly.
But if I log-in with facebook after getting the user probile nav.setRoot(TabsPage) is doing nothing. Moreover, nav.push(TabsPage) is also doing nothing, but if I do nav.push(Main) where Main is one of my tabs, is executing correctly, but I don't have tabbar and a back button appears, obviously.
Also if I do nav.setRoot(Main) it works correctly, but I land in a tab without tabbar and with back button.

I add some information. I saw in the docs that setRoot return a promise, so I did this:
this.nav.setRoot(TabsPage)
  .then(data => {
      console.log(data);
  }, (error) => {
      console.log(error);
  })

This throws true when I land on the login page and I'm already logged, but throws nothing when I login with facebook, so it seems that the promise is never resolved.

Ok, another update. If you go to the core of Ionic2 to components/nav/nav-controller.js in the function setPages which is called from setRoot the callback of the transition is never been executed.
If you follow the flow of functions called: setRoot -> setPages -> _transition -> _render -> _postRender
In the _render function:
this.loadPage(enteringView, null, opts, function () {
    if (enteringView.onReady) {
        // this entering view needs to wait for it to be ready
        // this is used by Tabs to wait for the first page of
        // the first selected tab to be loaded
        enteringView.onReady(function () {
            enteringView.loaded();
            _this._postRender(transId, enteringView, leavingView, isAlreadyTransitioning, opts, done);
        });
    }
    else {
        enteringView.loaded();
        _this._postRender(transId, enteringView, leavingView, isAlreadyTransitioning, opts, done);
    }
});

My code enters in enteringView.onReady and the callback is never executed.
If I just call the _postRender method before waiting for enteringView.onReady my app works fine, but It's so dirty.
The problem seems to be waiting for the page of the tab to be ready. I think it never gets ready or never acquire fine the ready state.
Could be this something with my code? Or is likely to be a bug?
Thank you!

I have the same problem with Google or Facebook auth

@privetr this seems to have been fixed with beta4. Can you please check ? Mine is working fine now.

@jorchg Can you check as well ? when you get a chance :)

Hello all! As it looks like this was fixed in beta.4 i will be closing this issue, but if you are still having this issue feel free to comment!

I am still having this issue. I can't get the nav to push or setRoot to my TabsPage after a Facebook login promise.
Cordova CLI: 6.1.1
Gulp version:  CLI version 1.2.1
Gulp local:   Local version 3.9.1
Ionic Framework Version: 2.0.0-beta.4
Ionic CLI Version: 2.0.0-beta.24
Ionic App Lib Version: 2.0.0-beta.14
ios-deploy version: 1.8.5
ios-sim version: 5.0.8
OS: Mac OS X El Capitan
Node Version: v5.9.1
Xcode version: Xcode 7.3 Build version 7D175

I also am experiencing the situation where if I call nav.setRoot(x), the new page doesn't actually appear.  Yet, if I focus an input field in the current page, it disappears and shows the correct page.

@daveshirman are you using tabs to navigate around ? It might be related to tabs, my issue was related to sidemenu. However they both use the navcontroller, not sure why it would work for me and not for you.. Maybe produce a plunker or open a new issue and the ionic team will be able to help out.

I was having the same issue : nav.setRoot(MyComponent) did not seem to do anything. I was running the app in Android using --live-reload, and there were warnings about some events not being fired :
0     195445   log      deviceready has not fired after 5 seconds.
1     195457   log      Channel not fired: onDOMContentLoaded

I also could not test the code in the browser because it's about displaying a certain page when the device goes offline.
So I finally tried to run my code in Android, but without the live reload, and it works fine.
So, there is something about the live reload mode that is preventing it from working. Using Beta4 as my dependency, and the CLI version 2.0.0-beta25.

I have the issue like this: Tabs persist after logging out of app, start stacking on log in

I'm still experiencing the issue I described. I completely forgot, and after a ionic update it stopped working, so I just modified it again as described in my latest post in this thread.

Hi Everyone. Did anyone find a fix for this? I am currently using Ionic<EMAIL_ADDRESS>and the problem is still present!

I too seem to have run into this

I find the problem is less severe in beta.9 (but still consistently reproducible).
In beta.10 subsequent setRoots fail to render properly, much worse than beta9 - even when set within a NgZone.run
I'll see if I can find a similar open issue, if not I'll raise a new one.

I found that calling it from my app.ts seems to work reliably.  Calling it from any other page seems to fail.
Additionally, if I am not on a root page, like 3 pages deep, I also call nav.popToRoot() after the setRoot method, which works:
this.nav.setRoot(xxxx).then(() =>{
    this.nav.popToRoot();
    //....
});

Why is this issue closed? Navigation seems really broken. If i push a page with forms in it it wont work either.

Also breaks when there's a modal window showing too.
On 13 Jul 2016 3:59 a.m., "scorpnode"<EMAIL_ADDRESS>wrote:

Why is this issue closed? Navigation seems really broken. If i push a page
with forms in it it wont work either.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/driftyco/ionic/issues/5883#issuecomment-232241198,
or mute the thread
https://github.com/notifications/unsubscribe/ANnlXmqTT5pf0i-JZNog5F32j8pB785Qks5qVFSZgaJpZM4H0Jz0
.

Hi, this is still occurring to me in 2.0.0-beta.10. I'm getting a blank screen after calling NavController.setRoot. Only occurring on iOS devices
device info:

model: iPad5,4
iOS version: 8.3

I am facing this issue in  2.0.0-beta.10. I'm not able to navigate by NavController.setRoot.
my code looks like this:
this.nav.setRoot(somepage).then(() =>{
this.nav.popToRoot();
});

CLI v2.0.0-beta.32.
Still having issues with
this.nav.setRoot(ListPage)
from hello-ionic.ts of the starter tutorial app.
I wanted to try FB login which has been made effortless with v2 tutorial.
Anyone else?

Having the same issue here!

Hello everyone, if someone could provide a plunker that demonstrates this issue that would be awesome. Thanks for using Ionic!

Hello all! As it seems it has been a while since there was any activity on this issue i will be closing it for now. Feel free to comment if you are still running into this issue. Thanks for using Ionic!

I am using
import {Nav} from 'ionic-angular';
instead of
import {NavController} from 'ionic-angular';
Resolved my issue. Hope that helps anyone.

Sorry for not answering, I was on Holidays 💃
My problem seems to have been related to cordova-plugin-facebook4 https://github.com/jeduan/cordova-plugin-facebook4
When I updated my project to beta.10 and started using Facebook wrapper from ionic-native the problem just stopped. Very strange, taking into account that the wrapper uses the same plugin.
Thank you very much!

No problem, glad its fixed for you!

Hey @jgw96 !  Unfortunately this still seems to be a problem for me in Beta 10.  You can see this in the plnkr below.  Effectively, I have a login modal that sets the root to a "Tabs" page once successfully logged in.  From a page in the "Tabs" i have a "Logout" button, which fires an event that is consumed in app.ts.  In app.ts I try to set the root to the "LoginPage", but nothing seems to happen.  In looking at the DOM while clicking "logout" I can see things firing, and the login page exists underneath the tabs, but the navigation just doesn't seem to occur.  Any ideas?
http://plnkr.co/edit/n6jCzspnEcjQbl9KF10F
Thanks for your time!

Having the same issue here. 2.0.0-beta.11

Same here, this seems to have re-occurred in 2.0.0.beta.11
Pushing to a tabs page (nav.push or nav.setRoot) does not work. This was working in 2.0.0.beta.10.

I filed a new issue for this #7593. Applicable to 2.0.0-beta.10 and 11, possibly others.

I have the same problem with beta 11.
Navigation seems to work well until this.nav.setRoot(xxx) is called. After that, navigation works randomly... When pushing a new page, sometimes nothing happens : the view stay on the current page instead of the new one. When poping, navigation seems other times to pop twice.
Everything seems to be correct with the NavController object and everything fires normally. But it seems there is confusion in the DOM : values of z-index properties for ion-page tags are wrong in these cases, so that the wrong page stays above.

I see exactly the same behaviour as @Troknus regarding double page popping and DOM confusion.
Also first time setRoot, then upon next navigation, the initial root page flickers up, as if it wasn't completely unloaded before.

I have the issue too I try to adding show-page class manually and function but is not good solution

I'm seeing the same behaviour as @Troknus too.

Guys, having same problem as @jorchg said.. considering the tabs error.. it just push to tabs after second time it calls (seems that the push occurs but the current page still on top)
after login if I try to push to tabs view but do not wotk.. if i push to a page that is supposed to be in a tab.. it works..  here is the project

https://github.com/mariohmol/ionic2-meteor-messenger

I have the same problem as @Troknus

@schaergeek updated to beta 11 and it worked.. here is the example https://github.com/mariohmol/ionic2-meteor-messenger-password

I did thumbs up on Troknus post but it's a real problem. We are not allowed to move in production with this bug.
(We are working in beta 11 as Troknus).

I took a look at the plnkr by @joshgarwood. The event publishing seems to be the issue? If instead of publishing the authentication event to have MyApp do the work, you instead set the root via the NavController instance within TabPage, then it works. Trying to set the root via the event listener in MyApp doesn't. So it seems to me like an issue with the different NavController instances that are being injected...? I'm not sure how the DI is supposed to work here but I feel like the consumer shouldn't have to care about which instance of NavController is injected. If I call setRoot(*) then things should just work, right?
Regarding the Z-index problem that @Troknus is talking about, you all may be interested in issue #8042. Though in that case setRoot(*) is not being called at all.

Actually, I just read @jgw96's comment and it seems you're not supposed to use random NavController instances...?
Still, that doesn't change the fact that there is a bug with the Z-indices.

same problem here with beta11...

Does anyone have a different plnkr that will reproduce the DOM getting confused or pages flickering? The plnkr by @joshgarwood doesn't include pushes or pops.

@rcjsuen  Had the same problem in Beta10 & Beta11, I figured out this workaround. Not sure if setRoot is working as intended but this works for now.
Not working
  private initializeApp(): void {
    this.platform.ready().then(() => {

      firebase.auth().onAuthStateChanged(user => {
        if (user) {
          this.nav.setRoot(TabsPage);
        } else {
          this.nav.setRoot(LoginPage);
        }
      });

      StatusBar.styleDefault();
    });
  }
}

Working
private initializeApp(): void {
   this.platform.ready().then(() => {

     firebase.auth().onAuthStateChanged(user => {
       if (user) {
         this.setRoot(TabsPage);
       } else {
         this.setRoot(LoginPage);
       }
     });

     StatusBar.styleDefault();
   });
 }

 private setRoot(newRootPage: any){
   this.rootPage = newRootPage;
 }
}

@Vanclief Have same problem - but even this solution you've proposed didn't work for me.
My code was as yours to begin with - then I tried upgrading to ionic 2 rc0 and angular 2.0.1, but that didn't work well with firebase (nor angularfire), so I rolled back to:
@angular/common": "2.0.0-rc.4",     "@angular/compiler": "2.0.0-rc.4",     "@angular/core": "2.0.0-rc.4",     "@angular/forms": "^0.2.0",     "@angular/http": "2.0.0-rc.4",     "@angular/platform-browser": "2.0.0-rc.4",     "@angular/platform-browser-dynamic": "2.0.0-rc.4",     "@angular/router": "^2.0.0-rc.2",     "firebase": "^3.3.0",     "ionic-angular": "2.0.0-beta.11",     "ionic-native": "1.2.2",
deleted node_modules/ did npm install and now I'm facing this problem.

@Peter-Piper
I did not update, but I kept having some problems that went away once I upgraded to RC0. For one of my projects Im also using firebase and had some problems updating but now everything is working.
I do not use AngularFire, but this tutorial covers it: https://playcode.org/getting-started-with-ionic-2-rc0-firebase-3-angularfire-2/

@Vanclief
Thanks, I did already try this approach - and it did work. But the fact that I have to do hacks in a node module combined with ionic RC_0 crashing when watching files when doing ionic serve made me abort upgrading and stick to the older version.
Anyways, I did solve the issue mentioned above where setting root page in a callback never works unless it has been set before, by checking if firbase.auth.currentUser is set and then setting the rootPage
        const page = firebase.auth().currentUser ? TeamPage : LoginPage;
        this.setRoot(page);

        firebase.auth().onAuthStateChanged(user => {
            // If there's a user take him to the Teams page otherwise send him to LoginPage
            const page = user ? TeamPage : LoginPage;
            this.setRoot(page);
        });

and then doing a check in the setRoot method so it doesn't navigate to the same page twice.
This is also a hack and doesn't address the underlying problem. Unfortunately I don't have the time to go in to an in depth investigation of the issue the next week.

This is still a problem.  Using this.nav.push(...) works fine, but using this.nav.setRoot(...) does not work after the first time.  Here's my ionic info:
Your system information:

Cordova CLI: 6.3.1
Gulp version:  CLI version 3.9.1
Gulp local:
Ionic Framework Version: 2.0.0-rc.0
Ionic CLI Version: 2.1.0
Ionic App Lib Version: 2.1.0-beta.1
OS: Distributor ID:	Ubuntu Description:	Ubuntu 16.04.1 LTS
Node Version: v4.6.0

From package.json
  "dependencies": {
    "@ionic/storage": "^1.0.3",
    "firebase": "^3.4.1",
    "ionic-angular": "^2.0.0-rc.0",
    "ionic-native": "^2.2.2",
    "ionicons": "^3.0.0"
  },

@jgw96 Why is this closed? Clearly this is an open case as setRoot is not working properly.

@daveshirman, i was facing the same problem, it is not a navigation problem, but here is how i solved it.
in my app.ts is have this
firebase.initializeApp(config);
platform.ready().then(() => {
  firebase.auth().onAuthStateChanged((user) => {
    if (user) {
      // If there's a user take him to the TabsPage page.
      this.rootPage = TabsPage;
    } else {
      // If there's no user logged in send him to the LoginPage
      this.rootPage = LoginPage;
    }
  });
  // Okay, so the platform is ready and our plugins are available.
  // Here you can do any higher level native things you might need.
  StatusBar.styleDefault();
});

the if statement above is saying  // If there's a user SET THE ROOTPAGE TO  TabsPage page.
and else it should remain in the LoginPage, you will note that if you use normal firebase login method, the if part will execute (i.e it will navigate to the rootPage, but when using Facebook the else part will execute (i.e it stays on the LoginPage
I solved it like this.
facebookLogin() {
Facebook.login(['email']).then((result=>{
  let credentials = firebase.auth.FacebookAuthProvider['credential'](result.authResponse.accessToken)

   return firebase.auth().signInWithCredential(credentials);
})).then((user)=>{
    //alert(firebase.auth().currentUser.uid);
    this.userProfileRef.child(firebase.auth().currentUser.uid).set({
      id:firebase.auth().currentUser.uid,
      email: user.email,
      displayName:user.displayName,
      profilePictureURL:user.photoURL
    });

   this.navCtrl.setRoot(TabsPage);
}).catch((error)=>{
  alert(error);
})

}
what happened in the code above is that,
1st you need to login to facebook, which i did with
Facebook.login(['public_profile']).then((result=>
2nd you need to set a credentials that will help you login to the firebase using the accessToken sent to you by Facebook login result which is what i did here
let credentials = firebase.auth.FacebookAuthProvider'credential';
3rd you need to login to firebase with credentials you set, which is what i did here
return firebase.auth().signInWithCredential(credentials);
NOTE: this the exact reason why your  this.navCtrl.setRoot(TabsPage); did not work (because the user is yet to login on firebase.
so you can now navigate to the rootPath at the then() path of the code.
and please kindly make sure you your facebook appId and appSecrete is configured on firebase>authentication>facebook panel.
HOPE THIS HELP
okLogin() {
Facebook.login(['email']).then((result=>{
  let credentials = firebase.auth.FacebookAuthProvider['credential'](result.authResponse.accessToken)

   return firebase.auth().signInWithCredential(credentials);
})).then((user)=>{
    //alert(firebase.auth().currentUser.uid);
    this.userProfileRef.child(firebase.auth().currentUser.uid).set({
      id:firebase.auth().currentUser.uid,
      email: user.email,
      displayName:user.displayName,
      profilePictureURL:user.photoURL
    });

   this.navCtrl.setRoot(TabsPage);
}).catch((error)=>{
  alert(error);
})

}
what happened in the code above is that,
1st you need to login to facebook, which i did with
Facebook.login(['public_profile']).then((result=>
2nd you need to set a credentials that will help you login to the firebase using the accessToken sent to you by Facebook login result which is what i did here
let credentials = firebase.auth.FacebookAuthProvider'credential';
3rd you need to login to firebase with credentials you set, which is what i did here
return firebase.auth().signInWithCredential(credentials);
NOTE: this the exact reason why your  this.navCtrl.setRoot(TabsPage); did not work (because the user is yet to login on firebase.
so you can now navigate to the rootPath at the then() path of the code.
and please kindly make sure you your facebook appId and appSecrete is configured on firebase>authentication>facebook panel.
HOPE THIS HELP

@OyebisiJemil Thanks for your long explanation of what you did. But I meant I was having the same problem conceptually in that setRoot doesn't work properly, not with using facebook or anything.  Thanks again though.  This issue shouldn't be closed, unless there is another open with the same description.

I'm also hitting this issue with very similar circumstances. In my case switching to push(view) instead of setRoot(view) resolved the problem and doesn't really jack with my app flow.

I'm still facing same issue as of today in latest build:
logOut() {
this.authData.logoutUser().then(() => {
this.nav.setRoot(LoginPage);
});
}
does NOT work. Plz help. Thnx. Lis

Use push insted of setRoot...

@jgw96, @adamdbradley  this is still a major issue. Please reopen it and assign a milestone. Many people are having this issue and is essential functionality for an app.

@dejancencelj that is not a solution to this issue.
@lisaiceland to get around this problem I followed this suggestion:
https://forum.ionicframework.com/t/cant-access-rootnav-after-upgrade-to-beta-11/59889/15?u=niallr

@niallr12 @daveshirman is this still an issue in RC3?

@manucorporat I am unsure if this is a problem in RC3 but I don't see a fix for it in the changelog. I am happy with my fix and feel it is an overall better approach anyways.
I can test for you in RC3 if you like.

@niallr12 well, I never was able to reproduce this particular problem. But I have spend weeks hardening  NavController, with tons of little fixes and tests. Like this one: Worst Case that stresses the navigation stack with a crazy flow.

@manucorporat I can still replicate the problem in rc3. In my particular case it doesn't seem to be dismissing the current view when I am setting root. If I dismiss the current view and then set root it works fine. Pushing the view works completely fine.

Hey,
I'm not sure whether my answer will help anybody since I have not read all previous messages, but when I encountered on such issue in my project I resolved it by referring to parent navigation stack, for that reason I was able to move back to welcome page e.g:
Welcome page (root page)
gotoFeature(): void {
  this.navCtrl.push(feature);
}

Feature page (with tabs)
logout(): void {
  this.navCtrl.parent.parent.pop() //  back to welcome
}

It needs to be handled in that way since tabs have their own navigation stack what means that every use of setRoot in tabs navigation object level will redirect to different page but tabs block in footer would be still visible.

Why is this issues closed? I have same problem. I'm using setRoot function in my sample provider. App setRoot and changed page but navigation (menu) is disabled when finished.
It's my code in provider
`private _leaveGroup(user: modelUser, room: modelRoom): Promise {
return new Promise((resolve, reject) => {
let loading = this.loadingCtrl.create({dismissOnPageChange: false});
loading.present();
  this.ref.child(room.id).child('users').child(user.id).remove()
    .then(() => this.navCtrl.setRoot(PageDashboard))
    .then(() => loading.dismiss())
    .then(() => resolve())
    .catch(err => loading.dismiss().then(() => reject(err)));
});

}`
It's my info
`--------------------------------
Your system information:
Cordova CLI: 6.3.1
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.4
Ionic App Lib Version: 2.1.2
Ionic App Scripts Version: 0.0.45
ios-deploy version: 1.9.0
ios-sim version: 5.0.9
OS: Mac OS X Sierra
Node Version: v6.9.1
Xcode version: Xcode 8.1 Build version 8B62
--------------------------------`

I had same problem. However after I ensured that at any given time if only setrroot statement is executed everything works perfect. But for various reason if multiple setroot statements are executed at any given time, Ionic is creating multiple pages dues to which the navigation is getting hanged in my case.

Seems this issue mutated to something stranger in RC4. Same type of issue except that when setting root now from the exampled login page to a menu/dashboard the login page remains in the view stack which displays the back button in the header, causing all kinds of mayham

I create event for logout.
// app.component.ts
events.subscribe('logout', () => {
  localStorage.removeItem('token');
  this.rootPage = LoginPage;
 });

now logout:
// pages/home/home.ts
  logout() {
    this.events.publish('logout');
  }

Hi Everyone. Did anyone find a fix for this? I am currently using Ionic 2.0.0-rc.4 and the problem is still present!

Hi,
`
//import these classes
import { Component, ViewChild } from '@angular/core';
import { Platform, MenuController, Nav } from 'ionic-angular';
export class MyApp {
//Set this property
@ViewChild(Nav) nav: Nav;
//implement this method, and works perfectly
private openPage(page: any): any {
//validate token
this.loggedIn = this.service.canActivate();
if (!this.loggedIn) {
//not logged
this.nav.setRoot(LoginPage);
} else {
//logged
this.nav.setRoot(HomePage);
}
this.menuCtrl.close();
}
`
Hugs!

import {
  NavController,
  LoadingController,
  App,
} from 'ionic-angular';

//=====================//
 logout() {
    localStorage.removeItem('token');
    let nav = this.app.getRootNav();
    nav.setRoot(LoginPage);
  }

Has anyone found at least a workaround to this ?

Same issue as @joshuaohana.
If I do setRoot BEFORE facebook login, everything works as expected.
If I do setRoot AFTER facebook, I get the same behaviour as @joshuaohana.
Thanks.

create event for logout works.
also, find below a detail explanation about nav with another working solution
https://webcake.co/exploring-nav-hierarchy-in-the-ionic-2-tabs-page/
most valuable piece of the code pasted below.
import { App } from 'ionic-angular';
...
constructor(private _app: App) {}
logout() {
...
    // Now I'll access the root NavController for the app,
    // and use that to reset the nav stack

    const root = this._app.getRootNav();
    root.popToRoot();

    // since I only have two items in the root NavController,
    // I could also have run root.pop() instead

}
...

Maybe some of you made the same mistake as me:
I used navigation via "setRoot" but missed that at the same time the binding "[root]=.." is still available on the HTML template. Bringing the two infos in synch again fixed my problem. In this case i removed the model binding and managed the root only via API.
Regards, Michael

Hi guys,
@ly-dev solution worked for me. I just did this._app.getRootNav().setRoot(EntryPage); and it works.

First, import Nav from ionic-angular, same place as navController
import { App, NavController } from 'ionic-angular';
then provide it in your constructor :
constructor(public navCtrl: NavController, public appCtrl: App)
now you can acces the rootnav:
this.appCtrl.getRootNav().setRoot(YourComponent);

@AmitPoojary That solution has not worked. When the user goes to multiple tabs.
Example: Home tab with multiple pages. When the user clicks through to the multiple pages. Then doesn't go back but switches over to Account tab & then logs out it will stay on the Account tab until refresh.
I've figured out if the user clicks on the Home tab & doesn't go any further it will log the user out correctly.
I'm thinking it's all about getting to many tabs in the dom & getRootNav isn't going back that far when the user goes in to many pages.

I faced the same Issue, after the promise of facebook or google oauth i made a
this.navCtrl.setRoot(MyPageComponent);

but when this new component being loaded the touch event didn't works, by mistake i discovered if you touch some element like an input right after the promise and just before the transition is made, this problem wont happen, for this reason I assigned an ID to a input and just before the promise return I run this code
$('#miIdOfInput').focus()
$('#miIdOfInput').click()

It works for me

This is still an issue.

I can also confirm that it's still an issue. It works fine when it's called directly as an event (<button (click)="onClickSubmit()" ...> for example), but not if it's inside a callback, that is triggered by an event emitter (if you have a child component, to which you want to send the callback from the parent).

Yes, still an issue for me as Im using Tab's as the main landing page of application. By calling _navCtrl.setRoot() from any of the pages inside the tabComponent, only that page is set to rootPage but the tab interface at the bottom stays in place.

The right solution to this is:
let _nav = this.app.getRootNav();         _nav.setRoot(LoginPage);

I also have similar problem on my new app, my application is working only first push to the device, where I make socket connection and perform some socket communication. I kill the app, disconnect from the from my development computer, re-run the application, I did not see no connectivity activity on server side. I have not implement uiktiomasfeliz recommendation, I will try that later today. But just an heads up.

Having the similar issue. I have a sidemenu inside my TabsPage and it is missing whenever I logout and afterwards login again.
The strange part is: If i run two devices in the browser (serve -l) the device I did not activly logout at, works fine, while the menu is missing on the device, I performed the logout/login on.
Also, when I refresh the page (I am still logged in from the old session), it works on both devices too.
Here are two images showing the issue:

After the relog on the right (iOS) device:

I did the logout/login on the iOS device (it doesn't matter, which one I take tho), and because of my onAuthStateChanged-Trigger, the other device is performing the relog too (in a correct way).

Yes. I also accomplished the same with:
this.app.getRootNav().setRoot(SetupPage);
However, it breaks the images paths on devices...

(getRootNav) is deprecated and will be removed in the next major release. Use getRootNavById instead.
So... this error was never fixed and the previous patch is not working anymore.. :/

this.app.getRootNav().setRoot(LoginPage);
This is not woking for me...

still an issue

welp, 3.5.3 did not fix it for me.

iam using ionic 4 guys and still having this problem sidebar not working after setRoot();
i only use this :        this.navCtrl.setRoot(HomePage);

I tried all solution here but still having this problem

i solved like that
import App
import { IonicPage, NavController, Nav, App } from 'ionic-angular';
AND now use
const root = this.app.getRootNav();
root.popToRoot();
root.setRoot("LoginPage");

Hello, i am testing a the hello world app on an iPhone4 and some others devices with Android.
Last Ionic and CLI version.
The main huge problem is with the iPhone, the call to setRoot is not working.
void onGoClick(){
// this line DOES NOTHING and no error is thrown.
this.navCtrl.setRoot(HomePage);
}
regards.

I think it is the way in which you are calling the routes, for example if you define like a text or like a object, whatever,
if you want to avoid problems, call like a text ( "HomePage" ) and create this variable
const root = this.app.getRootNav();
and call the following method
root.popToRoot();
root.setRoot("LoginPage");
import this object
import { IonicPage, NavController, NavParams, Nav, App } from 'ionic-angular';
constructor(
public app: App
) {
first is the popToRoot and second define new root ;)

@spidermay Thanks for the answer but still not working.
I imported
import { IonicPage, NavController, NavParams, Nav, App } from 'ionic-angular';
and executed
const root = this.app.getRootNav();
root.popToRoot();
root.setRoot("HomePage");

I am seeing this on 3.7.1.

Use the following code it must work or give you an error message
this.menu.close();
this.nav.setRoot(HomePage).then(()=>{
this.nav.popToRoot();
}).catch(err=>{
alert(err.toString());
});

Hi @FatehiAlqadasi, thanks.
An error is thrown, here is the log.

err:
C@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21236
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21702
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21967
reduce@[native code]
O@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21927
format@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:12952
transform@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:14339
Ce@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:3:23348
Ie@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:1046
Te@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:518
no@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:5140
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:42:25653
updateRenderer@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:4409
Se@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:328
We@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:3041
Ge@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:2439
Se@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:336
detectChanges@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:6:5799
_viewAttachToDOM@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:22059
_transition@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:23173
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:19213
invoke@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9288
onInvoke@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1143
invoke@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9231
run@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:4458
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:14079
invokeTask@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9972
onInvokeTask@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1047
invokeTask@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9900
runTask@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:5153
o@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:2210
invoke@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:10986
err:
C@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21236
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21702
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21967
reduce@[native code]
O@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:7:21927
format@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:12952
transform@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:8:14339
Ce@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:3:23348
Ie@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:1046
Te@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:518
no@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:5140
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:42:25653
updateRenderer@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:4409
Se@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:328
We@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:3041
Ge@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:2439
Se@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:4:336
detectChanges@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:6:5799
_viewAttachToDOM@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:22059
_transition@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:23173
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:17:19213
invoke@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9288
onInvoke@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1143
invoke@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9231
run@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:4458
file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:14079
invokeTask@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9972
onInvokeTask@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:5:1047
invokeTask@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:9900
runTask@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:5153
o@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:2210
invoke@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/polyfills.js:3:10986
dispatchEvent@[native code]
handleTapPolyfill@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:18:6423
pointerEnd@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:18:5144
[native code]
handleTouchEnd@file:///var/containers/Bundle/Application/B7F05CCA-3B74-4F26-A691-B0D9F669E526/SGI.app/www/build/main.js:19:19943
[native code]

I don't know if this answers the question, but it worked for me:
    firebase.auth().signOut().then(function() {
      // Sign-out successful.
      self.app.getRootNav().setRoot(LoginPage);
    }).catch(function(error) {
      // An error happened.
    });

Hello @tonyawad88
I tried to fix this by using
`logout(){
this.navCtrl.setRoot("LoginPage");
this.navCtrl.push("LoginPage");
}`
This works like charm here

@tonyawad88
This fixed the issue
logout(){
this.navCtrl.setRoot("LoginPage");
this.navCtrl.push("LoginPage");

}

2 years old bug, still nobody dare to fix it... I'm having the same issue in Ionic 3

Hello all,
I can get all my data from the root page also navigate but can't navigate the page out of tabs, its open like a child of tabs.
Tried all possibilities to solve it but no operation works.
Tab page where my data.

After clicking on the fetched data it will redirect to the detail page of the data, it was redirect but inside the tab page. like this...

help me out,
Thanks in Advance.

I have noticed this bug as of<EMAIL_ADDRESS>It seems to be associated with the DeepLinkConfig, because if I remove that from my app.module then I can call nav.setRoot() all day long without issues. My hypothesis is that, after a subsequent call of of setRoot(), the deep link logic gets into a state where the nav stack changes before window.location, the deep link code sees that window.location points to a page that is not on the stack (because you've setRoot() away from it), and so it returns you to the page you just tried to nav away from.
Regardless, here is a workaround that works for me.
await this.nav.push(page, params)
this.nav.remove(0, this.nav.length() - 1)

Thank you so much,
I solved my issue with this.
detailEvent(eventItem) {
    this.app.getRootNav().push(DetailEventsPage, { itemUp: eventItem });
  }

This code will redirect me to new page and diffrent layout(not under the tab page) too.

Just leaving this here for posterity. This logout function seems to be working for me without any side-effects. Thanks to @uiktiomasfeliz.
cli packages: (/usr/local/lib/node_modules)
@ionic/cli-utils  : 1.19.2
ionic (Ionic CLI) : 3.20.0

global packages:
cordova (Cordova CLI) : 7.1.0

local packages:
@ionic/app-scripts : 3.1.2
Cordova Platforms  : android 6.3.0 ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2

System:
ios-deploy : 1.9.2
Node       : v8.9.1
npm        : 5.7.1
OS         : macOS High Sierra
Xcode      : Xcode 9.3 Build version 9E145

async logOut() {
    await this.authProvider.logout();
    await this.app.getRootNav().setRoot('LoginPage');
  }

This is the way I found to set a new nav stack and removing the old nav stack. This was done for ion-angular 3.9.2
this.navCtrl.remove(0, this.navCtrl.length() - 1);
this.navCtrl.insert(0, MainPage);
this.navCtrl.pop();

In mi case, when I try to "come back" to root page with the method setRoot() and after that, inside the callback, call to popToRoot() it works but the page doesn't refresh. I know that worked because I can click on root page's buttons.


Add property based testing for felt operations

Add property based testing using proptest to ensure operations done with felts are working correctly. These are all the current operations available for felts. Those marked as done have been tested using proptest.

[x] Add
[x] AddAssign
[x] BitAnd
[x] BitOr
[x] BitXor
[ ] Bounded
[x] Div
[ ] FromPrimitive
[x] Mul

[x] Mul Zeros

[x] MulAssign
[x] Neg
[ ] Num
[ ] One
[x] Pow
[ ] Rem
[ ] Signed
[x] Shl
[x] Shr
[x] ShrAssign
[x] Sub
[x] SubAssign
[x] Sum

[x] Sum Zeros

[ ] ToPrimitive
[ ] Zero

Something to improve: due to the way we wrote the regexes, zeroes are overrepresented.

I need to fix the iter::sum test, since it tests simple addition and not iterative sum

Sum Zeros is actually testing Add Zeros, fix this


custom vite plugin options break the app

Describe the Bug
when using custom vite plugin options, routes will correctly detect, but the app will render nothing
the reproduction project is a fork of solid-router example, just change dir pages -> page1 and setup the vite plugin options.
Generouted Version
0.8.3
Your Example Website or App or Reproduction
https://stackblitz.com/edit/github-4k36rh?file=vite.config.ts
Steps to Reproduce the Bug or Issue

wait for deps install and run dev server
can not see anything in right panel

Expected Behavior
correctly render page routes
Screenshots or Videos
No response
Platform

OS: Windows
Browser: Chrome
Browser version: 115

Additional context
No response

@subframe7536 That's expected, as the src/pages directory structure is required by convention, similar to Next.js, Astro and other routing systems.
However, there was a recent update to support src/pages within other directories such as client/src/pages or js/src/pages for projects that enforces certain structure to support some monorepos and non-node projects #73, #90, #107. The Vite plugin config customization is mainly for that.
Another thing I've noticed with your repro, that you're using custom plugin config without adding a custom src/routes.tsx for Vite to detect the routes as well. Here's an example for custom path usage with react-router-dom and its readme include the differences that you could follow with @solidjs/router as well.
Hope that clarifies your issue. Let me know your need for the customization and I'll be happy to help.

Thanks for your reply!
Finally I make all work in my local monorepo project, according to react-router-custom-path.
Please allow me to offer you some questions, suggestions or feature requests:

Adding jsdocs on vite plugin options and exposed functions is more convient for beginners to figure out the descriptions and example usages directly in the editor.
I'm not sure if I missed it or misunderstanded, but I couldn't find any relevant documentation that paths in import.meta.glob must use absolute path instead of relative path that start with .. Using relative path will need to add path prefix to URL to work it out.
Please allow to add some params in the built-in route entry function like https://github.com/oedotme/generouted/blob/407b32239dd908661b9fff207e0389b74a0728de/packages/generouted/src/solid-router.tsx#L45 so there will no need to copy-paste source code in the example and some other cases. For instance:

import { render } from 'solid-js/web'
import { Routes } from '@generouted/solid-router'

render(
  () => Routes({
    preserved: import.meta.glob<Module>('/apps/web/src/pages/(_app|404).{jsx,tsx}', { eager: true })
    modals: import.meta.glob<Pick<Module, 'default'>>('/apps/web/src/pages/**/[+]*.{jsx,tsx}', { eager: true })
    routes: import.meta.glob<Module>(['/apps/web/src/pages/**/[\\w[-]*.{jsx,tsx}', '!**/(_app|404).*'])
  }),
  document.getElementById('app')!
)

Hey @subframe7536, thanks a lot for your feedback and suggestions!

Definitely
Adding a note and link to Vite's docs for reference would help
4, would be tricky because if I recall correctly there are limitations to using import.meta.glob. Also to clarify, generouted is compatible with monorepos without any customization. The main purpose for customization is to customize the route-based exports and the components builder function, and for that you'd need to have a full copy of the integration. Customization was noted to not be recommended in general, but it's there in case needed.

Please let me what kind of monorepo setup you're using, and as I mentioned you might not need customization in the first place.
Thanks!

After some tries, I have successfully completed the majority of tasks that can be accomplished with the default configuration. However, the usage of built-in router will cause ReferenceError: Cannot access 'default' before initialization.
Here is reproduction repo and steps record

Could you use the lazy import at src/pages/_app.tsx as well? If you mix lazy and non-lazy imports from generouted you'd get an intialization error.
You can find a related note on the docs, and here's a related issue #98

Thanks, it works! Sorry for not reading the document carefully😢

No worries, thanks for the update.


Fix table transformers cuda export

As per title!
Issue: #1774

@mht-sharma I'm not sure about this


snap: fixes for core24

One thing I didn't understand is the need of SNAP_REAL_HOME. You should never do that. What's the need for that? I might help you with a better implementation.
Also, you should ask for aliases for the other commands, they can't be invoked directly.

@soumyaDghosh Did you test these changes before submitting them? They will likely fail or not be usable.
The reason for overriding HOME is to force all of the code which explicitly uses $HOME for XDG dirs (~/.cache, ~/.local/share, or ~/.config) to instead store them in the users real home. This allows commands such as ronin-db to utilize a shared sqlite3 file within the users true ~/.local/share/ronin-db/.
I have already requested and received command aliases.


set max download task

hi
i want to set one task to max download task
it,s mean when  task 1 is running and i start task 2, then task 2 Go into the queue. and when task 1 finished, task 2 start  Automatically.
Thank you.

Okey, FileDownloader has already supported this feature.

If you want to download tasks one by one, just start a queue in serial, more detail Ref: Start downloading task queue.
If you want to set max download task what you want, just set download.max-network-thread-count=[max-count] in filedownloader.properties.

thanx dear
but i dont undrestand yet,
i have activity like google play app page act, how can i have public  queue? this activity has diffrent url each time. do you get the point?

sorry, what is the 'public queue'?

the queue that not bound on activity
it,s mean i can access them from anywhere of activity

Okey, You ref here.


Create New Version Tag

Please create a new version tag, because package control like glide detecting version by default.
It seems your tag 0.1 have old code(Payload is function).

Thank you for the note. Made a cut - v0.2 based on master.


Module Federation

Has the team thought of including some way to work with Module Federation?
I have tried using scopes but have not been able to get it to work.

Basically the issue is with providedIn: "root" in TranslocoService.
In federated modules Shell and any federated module creates a separate injector root. And even if @ngneat/transloco library is declared as a shared lib in  a webpack.config for the federation plugin, there still will be two (or more) different instances of TranslocoService in runtime - one for a shell and a one per federated module.
The general approach should be avoid of using providedIn in libraries, instead use SomeModule.forRoot() to return a set of providers. That's how it could be fixed here. Probably a bit later I'll create a PR for it. We'll see if I could avoid a breaking change.
@NetanelBasal What do you think?

I'm gonna chime in.
I don't think the right solution is to change Transloco and stop it from using providedIn which is the defacto option from Angular as it supports Tree-Shaking.
We shouldn't be trying to change a ThirdParty lib and how it works simply for Module Federation.
Now, what you could do instead, is create a local library in your repo that uses an InjectionToken that registers TranslocoService, then share that local library with your shell and remote.
It's easy to do if you're using Nx

I'll create an example to showcase it. I'm sure there were two different instances. And if I remove providedIn: root from service metadata and add provider for shell only - that works. For my case I have a working workaround, but going back to what you've said:
I think, library must not "decide" on what level its services will be provided. What if I need translation support only for one lazy loaded module, for example? Why should I be forced to provide service in root ? That's not the responsibility of library to decide such kind of things. That's basically not about changing the lib to support federation, rather to change the lib, removing the responsibility which it should not handle. And then it would work for any described scenario. I completely agree with you we should not change 3rd party for a specific case. But here we have, I would say, an opposite: when 3rd party lib trying to change the application in its own way which is not the right thing to do.

I'm not quite sure you fully understand providedIn: 'root', or perhaps I'm not understanding you correctly.
providedIn: 'root' will only set the Provider at the root level of the Injection Tree, when the lazy loaded module has been loaded.

If that InjectionToken already exists at root (from a previously loaded module), then the instance already in the root of the Tree is used.
This actually prevents multiple instances from being added to different levels of the InjectionTree which would actually create even more adverse effects and difficult to solve bugs for a lot of applications.

OK, let me describe it in another way. I understand the way providedIn root works and anyway you've already described it in details so let's start from that point.
Let's imagine: I have an app with a lazy-loaded module and a 3rd-party lib. I use 3rd-party lib only in that lazy-loaded module. I import lib module in lazy-loaded module and then I navigate to that module - service from lib will be provided in root injector and then singleton instance will be created.
The question is - what if I don't want to keep that service in memory after module destruction ? If 3rd-party lib developer used providedIn: root there is no easy way for me to achieve that. That's why I'm saying 3rd party lib should not "decide" whether it should be a root injector or a module injector. If library relies on some services to be provided in root - library module should expose .forRoot() method to register the module. (forRoot() method name is not really good but it's some kind of standard already... )
I guess that's easy to imagine some examples: 3rdparty lib patches console methods and never un-patches until application destroy etc.

Both of you have some reasonable arguments. I was testing module federation by myself just for fun and I encountered an issue with ngx-translate so I simply start to look for something which could provide me with a better approach. I ended here 😄
But my architectural idea at the beginning was the same as @Coly010 provided as a workaround.
From what I know, translation files could be a real mess when the application grows over years. Therefore I wanted to keep all translations in one place and just bundle it properly so I can reuse a lot of them.
I would love if anybody provides an idea of how this should be solved. Also, I think this topic is going to be very hot in near future.


added lint rule that allows only max one break per while/for/do loop

As requested on https://augur.net/bounties/. Added a lint rule to flag for/while/do loops which contain too many break statements.

i think the augur bounty rules are probably better as PRs on https://github.com/duaraghav8/solium-plugin-security

@artemlitch awesome!
As mentioned by Beau, could you please redirect this PR to  https://github.com/duaraghav8/solium-plugin-security
Implementing & testing rules in plugins is same as that in core linter, so no major disruptions.
See working with plugins.
The config object you need to use in your tests is:
{
    "rules": {
        "security/max-one-break-per-loop": "error"
    }
}

Rest everything looks perfect
Feel free to reach out at<EMAIL_ADDRESS>or https://gitter.im/Solium-linter/Lobby# with any issues you face

Moved to security plugin https://github.com/duaraghav8/solium-plugin-security/pull/3