Extraction of Coureware area from Activities to Fragment and new design

Description
LEARNER-2939

Code for courseware area has been extracted from multiple activities and fragments into a single fragment named NewCourseOutlineFragment which has now the sole ownership for whatever gets displayed on the screen.
Course card and Last accessed bar have been added to the course content listview on the Course Outline screen.
Left alignment of a course item and last accessed bar are now the same to match the design provided.
This new design is behind a feature flag named "TABS_DASHBOARD_ENABLED" which is disabled by default.

Note:
I haven't put much thought into names of newly made Fragment, Activity and Adapter cuz ultimately their current counterparts would get deleted when we switch to the Tabs Layout fully. So, bare with me for not giving fancy names to newly added classes 🙏 😉

FYI @staubina

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@6368e96). Click here to learn what that means.
The diff coverage is 0.34%.

@@            Coverage Diff            @@
##             master    #1025   +/-   ##
=========================================
  Coverage          ?   16.27%
  Complexity        ?     1050
=========================================
  Files             ?      488
  Lines             ?    21451
  Branches          ?     2481
=========================================
  Hits              ?     3491
  Misses            ?    17562
  Partials          ?      398

Impacted Files
Coverage Δ
Complexity Δ

.../mobile/view/adapters/NewCourseOutlineAdapter.java
0% <0%> (ø)
0 <0> (?)

.../org/edx/mobile/view/NewCourseOutlineFragment.java
0% <0%> (ø)
0 <0> (?)

.../org/edx/mobile/view/NewCourseOutlineActivity.java
0% <0%> (ø)
0 <0> (?)

...bile/src/main/java/org/edx/mobile/util/Config.java
61.34% <100%> (ø)
30 <1> (?)

...bile/src/main/java/org/edx/mobile/view/Router.java
15.65% <33.33%> (ø)
8 <0> (?)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6368e96...0e27396. Read the comment docs.

Changes in course outline loading mechanism is not sane. Either we should go for old full screen mechanism (will be in parity with iOS as well) or show spinner in the middle area of loading part only.

App crashing in network connectivity scenarios.
11-15 17:36:10.526 14505-14505/org.edx.mobile E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.edx.mobile, PID: 14505
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
at org.edx.mobile.util.NetworkUtil.isConnected(NetworkUtil.java:31)
at org.edx.mobile.view.NewCourseOutlineFragment.showLastAccessedView(NewCourseOutlineFragment.java:486)
at org.edx.mobile.services.LastAccessManager.syncWithServerOnSuccess(LastAccessManager.java:95)
at org.edx.mobile.services.LastAccessManager.access$000(LastAccessManager.java:21)
at org.edx.mobile.services.LastAccessManager$1.onResponse(LastAccessManager.java:64)
at org.edx.mobile.services.LastAccessManager$1.onResponse(LastAccessManager.java:61)
at org.edx.mobile.http.callback.ErrorHandlingCallback.onResponse(ErrorHandlingCallback.java:222)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

It doesn't come in this PR but will be awesome if we add pressed state of bulk download button.
https://github.com/edx/edx-app-android/pull/1025/files#diff-9591e57898d3f803f777c77b6b2a7768R139

Course tabs hangs sometimes and outline screen gets load without showing progress spiral, probably very first time when you opens the courseoutline screen.

Ready for another pass @farhan.

Course tab hangs sometimes and outline screen gets load without showing progress spiral, probably very first time when you opens the courseoutline screen.

Regarding this, I didn't face this issue on any of the devices/emulators I tested on. Please, verify if this is still a problem and isn't a device specific issue.

@farhan review done?

@miankhalid nops, will tag you.

@miankhalid, done with the pass. Next step, regression testing.

Course tab hangs sometimes and outline screen gets load without showing progress spiral,
probably very first time when you opens the courseoutline screen.

Regarding this, I didn't face this issue on any of the devices/emulators I tested on. Please, verify if > this is still a problem and isn't a device specific issue.

It was occurring before but not now.

It doesn't come in this PR but will be awesome if we add pressed state of bulk download button.
https://github.com/edx/edx-app-android/pull/1025/files#diff-9591e57898d3f803f777c77b6b2a7768R139

Added in this PR. cc @saeedbashir & @farhan

View is in caps in new designs.

Pressed state of bulk downloading button needs improvements.

It has un-equal left and right padding
Pressed state of progress spiral (appear once you press the download button) also needs padding improvement.

@miankhalid Master has been rebased on it, We should attach Course Outline and Videos Fragments to Tabs Layout now.
Note: We should remove TestFragment exist in CourseTabsDashboardFragment class now.

@miankhalid done with the pass and regression testing.

@farhan Fragments have been added to Tabs and view text has been capitalized. Also removed the ripple bg on download icons for now.
Ready for another pass.

App is hanging:
Kill the app, tap on any course from My Courses screen and device will hang for some time and then load the Course Tabs screen without any loading.
Tested on Samsung Galaxy S5.

@miankhalid Following 2 points needs to be addressed, done with the pass.
https://github.com/edx/edx-app-android/pull/1025#discussion_r151626849
https://github.com/edx/edx-app-android/pull/1025#issuecomment-345693896

App is hanging:
Kill the app, tap on any course from My Courses screen and device will hang for some time and then load the Course Tabs screen without any loading.
Tested on Samsung Galaxy S5.

Lets handle this as part of this ticket: https://openedx.atlassian.net/browse/LEARNER-3176


Certificate rotation broken in long running environments

Bug description:
I noticed that in 2 of my setups running for several days, certificate rotation is broken. This leads to expired certificates in Envoy never being rotated, leading to complete traffic disruption between apps.
Log on the client:
{"bytes_received":0,"response_flags":"UF","upstream_service_time":null,"response_code":503,"start_time":"2022-08-15T18:02:56.864Z","authority":"fortio.demo.svc.cluster.local:8080","duration":1,"bytes_sent":195,"protocol":"HTTP/1.1","x_forwarded_for":null,"path":"/","request_id":"26aa1f49-a09b-4b13-81bd-0acfa49852b8","user_agent":"fortio.org/fortio-1.34.1","response_code_details":"upstream_reset_before_response_started{connection_failure,TLS_error:_268435581:SSL_routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED}","time_to_first_byte":null,"requested_server_name":null,"upstream_host":"<IP_ADDRESS>:8080","method":"GET","upstream_cluster":"demo/fortio|8080"}

Stat on the client:
cluster.demo/fortio|8080.ssl.fail_verify_error: 50
The certs stat osm_bug_report_2928885602/namespaces/demo/pods/fortio-client-b9b7bbfb8-hc9wr/commands/osm_proxy_get_certs_fortio-client-b9b7bbfb8-hc9wr_-n_demo confirms the cert not being updated, with its client cert having an expiration date of 2022-08-12T19:05:52Z. The expiration date should be past 2022-08-15 (current date).
Both the client and server are connected to the controller as per the XDS cluster stats collected in the bug-report.
osm-controller indicates the cert default.demo.svc.cluster.local has expired but has not been rotated:
	 Common Name: "default.demo.cluster.local"
	 Valid Until: 2022-08-12 19:05:52.0391624 +0000 UTC m=+86504.429431801 (16h45m27.4651171s remaining)
	 Issuing CA (SHA256): d4bc5ec6f2ab02a7f484f5c36ee90222435250592d0942c686737ba0a77e857e
	 Trusted CAs (SHA256): d4bc5ec6f2ab02a7f484f5c36ee90222435250592d0942c686737ba0a77e857e
	 Cert Chain (SHA256): c4b68f17387579bff64ee155ae7263687c2d3fbea929ad56b0489b6ebd074dd8
	 x509.SignatureAlgorithm: SHA256-RSA
	 x509.PublicKeyAlgorithm: RSA
	 x509.Version: 3
	 x509.SerialNumber: 980b07dedb46443624884fcfcd9b9f03
	 x509.Issuer: CN=osm-ca.openservicemesh.io,O=Open Service Mesh,L=CA,C=US
	 x509.Subject: CN=default.demo.cluster.local,O=Open Service Mesh
	 x509.NotBefore (begin): 2022-08-11 19:05:52 +0000 UTC (95h30m32.0984793s ago)
	 x509.NotAfter (end): 2022-08-12 19:05:52 +0000 UTC (-71h30m32.0984815s remaining)
	 x509.BasicConstraintsValid: true
	 x509.IsCA: false
	 x509.DNSNames: [default.demo.cluster.local]
	 Cert struct expiration vs. x509.NotAfter: -39.1624ms

x509.NotBefore (begin): 2022-08-11 19:05:52 +0000 UTC (95h30m32.0984793s ago)
x509.NotAfter (end): 2022-08-12 19:05:52 +0000 UTC (-71h30m32.0984815s remaining)

Affected area (please mark with X where applicable):

Certificate Management     [X]

Expected behavior:
Certificates should be rotated in long running environments.
Steps to reproduce the bug (as precisely as possible):
I observed this bug twice while executing the demo global rate limit demo over multiple days.
How was OSM installed?:
osm install --set osm.image.registry=$CTR_REGISTRY --set osm.image.tag=$CTR_TAG --set osm.image.pullPolicy=Always --set osm.enablePermissiveTrafficPolicy=true

Bug report archive:

2313848016_osm-bug-report.tar.gz
Environment:

OSM version (use osm version): latest-main
Kubernetes version (use kubectl version): v1.23.4

The attached files are all showing that the days_until_expiration is in the future.
I've also setup a local cluster with a 30s service validity duration and have verified that certs are both being rotated and properly propagated to the sidecar

The attached files are all showing that the days_until_expiration is in the future.
I've also setup a local cluster with a 30s service validity duration and have verified that certs are both being rotated and properly propagated to the sidecar

I don't think the days_until_expiration is accurate. It may have overflowed. The expiration date is in the past as seen below.
     "days_until_expiration": "18446744073709551614",
     "valid_from": "2022-08-11T19:05:52Z",
     "expiration_time": "2022-08-12T19:05:52Z"

Oh interesting, I missed that.
Would you be able to upgrade to debug/trace logs on the controller to get more info as well?

I have trace logging enabled.
Strangely, none of the cert serial no I see in the logs below match the ones displayed in the debug server's /debug/certs output:
{"level":"trace","component":"certificate","time":"2022-08-15T19:42:07Z","file":"manager.go:249","message":"Certificate found in cache SerialNumber=29871855943509303830645595579115296839"}
{"level":"trace","component":"certificate","time":"2022-08-15T19:42:07Z","file":"manager.go:249","message":"Certificate found in cache SerialNumber=155024194875030960472719792658873311581"}
{"level":"trace","component":"certificate","time":"2022-08-15T19:42:07Z","file":"manager.go:249","message":"Certificate found in cache SerialNumber=202099930258132563591593472965020983043"}
{"level":"trace","component":"certificate","time":"2022-08-15T19:42:12Z","file":"manager.go:249","message":"Certificate found in cache SerialNumber=202099930258132563591593472965020983043"}
{"level":"trace","component":"certificate","time":"2022-08-15T19:42:12Z","file":"manager.go:249","message":"Certificate found in cache SerialNumber=29871855943509303830645595579115296839"}
{"level":"trace","component":"certificate","time":"2022-08-15T19:42:12Z","file":"manager.go:249","message":"Certificate found in cache SerialNumber=155024194875030960472719792658873311581"}

---[ 0 ]---
	 Common Name: "ads.cluster.local"
	 Valid Until: 2032-08-08 19:04:08.8324488 +0000 UTC m=+315360001.222718401 (87591h38m59.6801654s remaining)
	 Issuing CA (SHA256): d4bc5ec6f2ab02a7f484f5c36ee90222435250592d0942c686737ba0a77e857e
	 Trusted CAs (SHA256): d4bc5ec6f2ab02a7f484f5c36ee90222435250592d0942c686737ba0a77e857e
	 Cert Chain (SHA256): 9ea1f7a851a3e79137e828309fbf78eed86ab5e61a5c7c3b3a4512467fad92d3
	 x509.SignatureAlgorithm: SHA256-RSA
	 x509.PublicKeyAlgorithm: RSA
	 x509.Version: 3
	 x509.SerialNumber: 74a092eb34540b1f1a023005de73e15d
	 x509.Issuer: CN=osm-ca.openservicemesh.io,O=Open Service Mesh,L=CA,C=US
	 x509.Subject: CN=ads.cluster.local,O=Open Service Mesh
	 x509.NotBefore (begin): 2022-08-11 19:04:08 +0000 UTC (96h37m0.6772795s ago)
	 x509.NotAfter (end): 2032-08-08 19:04:08 +0000 UTC (87503h22m59.3226904s remaining)
	 x509.BasicConstraintsValid: true
	 x509.IsCA: false
	 x509.DNSNames: [ads.cluster.local]
	 Cert struct expiration vs. x509.NotAfter: -832.4488ms

---[ 1 ]---
	 Common Name: "default.demo.cluster.local"
	 Valid Until: 2022-08-12 19:05:52.0391624 +0000 UTC m=+86504.429431801 (15h40m42.8860671s remaining)
	 Issuing CA (SHA256): d4bc5ec6f2ab02a7f484f5c36ee90222435250592d0942c686737ba0a77e857e
	 Trusted CAs (SHA256): d4bc5ec6f2ab02a7f484f5c36ee90222435250592d0942c686737ba0a77e857e
	 Cert Chain (SHA256): c4b68f17387579bff64ee155ae7263687c2d3fbea929ad56b0489b6ebd074dd8
	 x509.SignatureAlgorithm: SHA256-RSA
	 x509.PublicKeyAlgorithm: RSA
	 x509.Version: 3
	 x509.SerialNumber: 980b07dedb46443624884fcfcd9b9f03
	 x509.Issuer: CN=osm-ca.openservicemesh.io,O=Open Service Mesh,L=CA,C=US
	 x509.Subject: CN=default.demo.cluster.local,O=Open Service Mesh
	 x509.NotBefore (begin): 2022-08-11 19:05:52 +0000 UTC (96h35m16.6775508s ago)
	 x509.NotAfter (end): 2022-08-12 19:05:52 +0000 UTC (-72h35m16.6775541s remaining)
	 x509.BasicConstraintsValid: true
	 x509.IsCA: false
	 x509.DNSNames: [default.demo.cluster.local]
	 Cert struct expiration vs. x509.NotAfter: -39.1624ms

---[ 2 ]---
	 Common Name: "osm-validator.osm-system.svc"
	 Valid Until: 2032-08-08 19:04:09.4120288 +0000 UTC m=+315360001.802298401 (87591h39m0.2587751s remaining)
	 Issuing CA (SHA256): d4bc5ec6f2ab02a7f484f5c36ee90222435250592d0942c686737ba0a77e857e
	 Trusted CAs (SHA256): d4bc5ec6f2ab02a7f484f5c36ee90222435250592d0942c686737ba0a77e857e
	 Cert Chain (SHA256): 6091bcc712056568dee59db18f4075fd4c8b2c47e02319370f5d6e253a0f2123
	 x509.SignatureAlgorithm: SHA256-RSA
	 x509.PublicKeyAlgorithm: RSA
	 x509.Version: 3
	 x509.SerialNumber: 16791c351fa7d38f6664d772e452d847
	 x509.Issuer: CN=osm-ca.openservicemesh.io,O=Open Service Mesh,L=CA,C=US
	 x509.Subject: CN=osm-validator.osm-system.svc,O=Open Service Mesh
	 x509.NotBefore (begin): 2022-08-11 19:04:09 +0000 UTC (96h36m59.6777024s ago)
	 x509.NotAfter (end): 2032-08-08 19:04:09 +0000 UTC (87503h23m0.3222948s remaining)
	 x509.BasicConstraintsValid: true
	 x509.IsCA: false
	 x509.DNSNames: [osm-validator.osm-system.svc]
	 Cert struct expiration vs. x509.NotAfter: -412.0288ms

and the logs in the bug report are all INFO logs unfortunately. Are you seeing any logs with the message Certificate has been updated for proxy, which would be at the debug level?

With the current validity duration (24h), I don't see this log after enabling trace logging.
Interestingly, none of the cert serial no I see in the logs match the ones in the output of /debug/certs. That seems incorrect.

FWIW I'm unable to reproduce this locally

I have seen this twice on a long running testbed. It could likely be a race somewhere or an issue with an XDS response erroring with no retries in place like you mentioned.
I've also not seen this issue in short lived testbeds.
Restarting the pods will likely result in fixing this, but I didn't want to till we have analyzed all the info from the bug-report.
Also were you able to determine why there is a mismatch between the debug server output and the certs within the cache?

I can't see how that can happen since they're pulling off the same cache, unless your browser is caching some old results?

I can't see how that can happen since they're pulling off the same cache, unless your browser is caching some old results?

Nope, I am refreshing the API request and see the timestamp change for the problematic cert:
	 x509.NotBefore (begin): 2022-08-11 19:05:52 +0000 UTC (97h27m45.3234176s ago)
	 x509.NotAfter (end): 2022-08-12 19:05:52 +0000 UTC (-73h27m45.3234191s remaining)

This seems to indicate there is some bug where the cert for CN default.demo.cluster.local is never being refreshed, or there are multiple certs corresponding to this CN in the cache and the debugger is picking the expired one, which is also incorrect.

This could be related to a side-effect of #5002, where a cert that needs to be rotated is not being rotated due to a call to IssueCertificate(), which tries to return a cached copy if possible. Rotated certs must always be issued, and invalidate the existing key for that cert in the cache instead.

When IssueCertificate() is called on a certificate that needs to be rotated and is in the cache, shouldRotate() is called on the cert. If the cert needs to be rotated shouldRotate() should return true, and a new cert is issued using the same prefix as the old certificate. The existing entry in the cache for the prefix is updated.
Previously, there was a RotateCertificate method which called IssueCertificate(). In IssueCertificate() we checked if the cert was in the cache and returned the cert if it was in the cache and didn't need to be rotated. So even if the RotateCertificate was called, the cert could still not have been rotated.
I believe this PR captures the previous behavior of rotation https://github.com/openservicemesh/osm/pull/4580. Just want to make sure we understand the key functional changes.

This could be related to a side-effect of #5002, where a cert that needs to be rotated is not being rotated due to a call to IssueCertificate(), which tries to return a cached copy if possible. Rotated certs must always be issued, and invalidate the existing key for that cert in the cache instead.

When IssueCertificate() is called on a certificate that needs to be rotated and is in the cache, shouldRotate() is called on the cert. If the cert needs to be rotated shouldRotate() should return true, and a new cert is issued using the same prefix as the old certificate. The existing entry in the cache for the prefix is updated.
Previously, there was a RotateCertificate method which called IssueCertificate(). In IssueCertificate() we checked if the cert was in the cache and returned the cert if it was in the cache and didn't need to be rotated. So even if the RotateCertificate was called, the cert could still not have been rotated.
I believe this PR captures the previous behavior of rotation #4580. Just want to make sure we understand the key functional changes.

There's also the addition of singleflight.Group.Do() which is another layer of caching that can result in unintended behavior if there are multiple calls to IssueCertificate() at the same instant, which which case the result from the first call is shared as a response to subsequent calls:
	// a singleflight group is used here to ensure that only one issueCertificate is in
	// flight at a time for a given certificate prefix. Helps avoid a race condition if
	// issueCertificate is called multiple times in a row for the same certificate prefix.
	cert, err, shared := m.group.Do(prefix, func() (interface{}, error) {
		return m.issueCertificate(prefix, ct, opts...)
	})

I'd rather have the rotation be an atomic operation, which checks if a cert needs to be rotated, then issues a new certificate for the CN and invalidates the previous cache entry. Further, this would imply not checking if a certificate should be rotated in the IssueCertificate() function, and letting the rotation handle the flow of issuing a new cert and having clients issue a subsequent Get on the cert through an event.

So agreed the above can be better, but I don't think that is what is causing the issues we are seeing. There's nothing to make me think a race condition can occur here that would perpetuate after a cert has expired (assuming a new Issue cert request is generated, which we have seen in our debugging session).
It also doesn't explain the debugger mismatch.
Anyways, I have some thoughts on a potential fix:

Remove the concept of Rotating certs based on what's in the cache. This is flawed for a couple reasons:
a) A cert that lives outside the osm-controller's (or injectors) memory still needs rotation, however if the pod restarts it will no longer be in the cache. This requires tracking these certs externally.
b) The cache is virtually unbounded. We never remove any service certs.

Abstract the cache into a new interface behind a Get/Store method. The implementation will only return non-expired certificates (or certificates with some amount of time left on them), and can have a goroutine to remove expired certs to remove the current memory leak.

This poses the following problems:

In the new flow, a request to CertManager won't know the difference between a brand new Issue and a rotation, meaning we need to remove our reliance of the service cert pubsub.

A service cert may expire, and no new events would cause the cert to not be rotated.

We can solve both problems mentioned through the use of something like the Ticker. However more concretely, I recommend we remove the ticker, but add a new timer to the message broker's runProxyUpdateDispatcher that triggers after some duration D in which we have not sent out a proxy update. This ensure's the CertManager's IssueCertificate is called to reinstantiate any expired certs, removes the reliance of the certmanager's service pubsub instance, and removes our memory leak in the cert cache.

If anybody is digging into this tomorrow, I think a good line of investigation would be if the pubsub is getting backed up and with singleflight, preventing new IssueCertificate calls from actually doing anything https://github.com/openservicemesh/osm/issues/4847.

If anybody is digging into this tomorrow, I think a good line of investigation would be if the pubsub is getting backed up and with singleflight, preventing new IssueCertificate calls from actually doing anything #4847.

I am curious to know if we still need to rely on the pub-sub model for generating Envoy configs with the snapshot cache. I am hoping using the snapshot cache is simple enough such that on an event (or batch of events), simply writing to the cache suffices, vs waking up individual gRPC stream goroutines per proxy via events.

That's a great question. I'd be curious to know how "expensive" it is to build out the configs each time, or if it would be deemed acceptable to continuously reconstruct all of the configs on a loop without needing to know that a k8s event is triggering a new event.
Right now we have the message broker acting as a notification mechanism that something changed and needs to be reconstructed and that immediately gets sent out.
With the snapshot cache we abstract away the "sending out" part (and it would be trivial to switch to the DeltaStream with that as well), but we're still missing the "when to construct configs". We can either do it on a loop, or keep the event based system, or use some combination of the 2.
I don't have too much opinion here. The loop would be much simpler, but might use up a lot more CPU if there are long periods of no k8s events.
The loop also solves our retry mechanism issue in certain scenarios, but we could still use a loop in on a less frequent basis (every 2-5 min), in addition to the notification. Whereas with just the loop, I'd say we need to run it virtually continuously

@shashankram so whether we move to snapshot cache (and remove pubsub, fully leveraging loop based approach), or keep snapshot cache (but keep pubsub + a loop based approach), I think the solution I propose in https://github.com/openservicemesh/osm/issues/5000#issuecomment-1217256850 would suffice. In that by moving the rotation to be implicit upon calls to IssueCertificate, we remove the pubsub altogether (the cause of the issue)
Any objections before moving forward with that?

Has the root cause been identified for this issue? If so, could it be reiterated here? Does the solution need to be included in a patch release of v1.2?

@shashankram so whether we move to snapshot cache (and remove pubsub, fully leveraging loop based approach), or keep snapshot cache (but keep pubsub + a loop based approach), I think the solution I propose in #5000 (comment) would suffice. In that by moving the rotation to be implicit upon calls to IssueCertificate, we remove the pubsub altogether (the cause of the issue)
Any objections before moving forward with that?

I think most of your suggestion seems reasonable. The part that bothers me is the need to rely on something like Ticker to periodically update proxy certs when no event appears "for a while" because this could result in traffic loss for the duration until this ticker updates the proxies with the new certs. This is why I think we should continue to immediately update certs that are about to expire or haven't expired yet.

ya that makes sense, although we could mitigate with having ticker time less than cert check time, but in general I do agree with your point. I think having a ticker makes sense for this and a few other cases as well.. solely relying on the ticker has its own problems though as you mention
@jaellio I want to see if i can repro this issue to confirm the cause first.

@steeling Can you please update as soon as you have a repro? This is a high priority issue that I think is worth the time.

Ok, so I have this currently happening, and confirmed its none of the above theories, here's my new one:

Why the serial numbers are different:

The logs print the SerialNumber from the cert object which is an Aliased string, it set via c.SerialNumber = SerialNumber(x509Cert.SerialNumber.String())
The debugger prints the x509Cert.SerialNumber, which a *big.Int, via fmt.Sprintf("... %x", x509Cert.SerialNumber).  This is confirmed with values taken from my environment, and demoed here https://go.dev/play/p/YueNgmGiGmw

Why the certs are expired. The big red flag here is that the Valid Until: line is the debug output shows a positive time until, Valid Until: 2022-08-12 19:05:52.0391624 +0000 UTC m=+86504.429431801 (16h45m27.4651171s remaining), while the x509.NotAfter, shows a negative time until x509.NotAfter (end): 2022-08-12 19:05:52 +0000 UTC (-71h30m32.0984815s remaining), but if you look at the timestamps they look the same, except for the m=+.

What's that? Apparently operating systems maintain both a monotonic clock, and a wall clock. The difference may account for things like time changes. The m+ shows an adjustment to the monotonic clock (my guess is this is when the kind cluster goes to sleep).
Go keeps track of both the monotonic and the wall clock. From the time package: "[...] ater time-measuring operations, specifically comparisons and subtractions, use the monotonic clock reading." This means when we check the time we get the correct time, but when we measure, we add the m=+ (I would expect the number of seconds, 86504, to equal the delta, 71h + 16, or roughly 55 hours, however it's ~24 hours, so that's currently an unknown).
The cert rotation uses a measurement check, which will use the monotonic clock. Again, I'm guessing when the kind cluster shuts down, so does the monotonic clock, and if running on the laptop will create large skews. My guess is the certs will be rotated when the time's idea of the monotonic clock deems expiration is necessary. Because of this, this flaw is mostly likely to be seen in dev environments.
Still, we should maintain parity with the x509 cert. We can fix this by truncating the time on checks with cert.GetExpiration().Round(0) (taken from time's go doc on how to ignore monotonic clock for measurements)

What's that? Apparently operating systems maintain both a monotonic clock, and a wall clock. The difference may account for things like time changes. The m+ shows an adjustment to the monotonic clock (my guess is this is when the kind cluster goes to sleep).

The debugging log above was printed all in one call getCertHandler(). Looking at these log lines:
	 Valid Until: 2022-08-12 19:05:52.0391624 +0000 UTC m=+86504.429431801 (15h40m42.8860671s remaining)
	 x509.NotBefore (begin): 2022-08-11 19:05:52 +0000 UTC (96h35m16.6775508s ago)
	 x509.NotAfter (end): 2022-08-12 19:05:52 +0000 UTC (-72h35m16.6775541s remaining)

From the log, I think the time printing the log is 2022-08-15.
Valid Until and x509.NotAfter have the same timestamp (2022-08-12 19:05:52), and both called time.Until(<time object>) in the debugger but get two very different results.
In the source code of time.Until:
// Until returns the duration until t.
// It is shorthand for t.Sub(time.Now()).
func Until(t Time) Duration {
	var now Time
	if t.wall&hasMonotonic != 0 {
		// Common case optimization: if t has monotonic time, then Sub will use only it.
		now = Time{hasMonotonic, runtimeNano() - startNano, nil}
	} else {
		now = Now()
	}
	return t.Sub(now)
}

Did these two .Until() calls use two different now value? This is mysterious to me.
With the wrong cert.GetExpiration() value, the shouldRotate() will return false. https://github.com/openservicemesh/osm/blob/de4a401c663795a6b3619666f0d45239dfa54270/pkg/certificate/manager.go#L178

@allenlsy that's due to the monotonic time, but you're on the right track!
There's a lot of text in this thread so easy to miss, but the last comment goes over it in more detail, and calls out the issue.


Upgrade from 0.77 to 0.78 - cannot log in

Home Assistant release with the issue:

0.78
Last working Home Assistant release (if known):
0.77
Operating environment (Hass.io/Docker/Windows/etc.):

pyvenv on Ubuntu 16.04
Component/platform:

login
Description of problem:
When I attempt to connect to the front-end (not Lovelace), the webpage gives me the following:

You're about to give https://MYDOMAIN:8443/ access to your Home Assistant instance.
Logging in with Home Assistant Local.
Something went wrong:
There are no errors in hass.log

Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):

Traceback (if applicable):

Additional information:

Check the service itself to see if it had any errors during start up.

Please check your browser console log.
And also can I assume your MYDOMAIN is actual valid domain name? Are you using any reverse proxy?

what guide did you follow to upgrade?  if your installation is in /opt/homeassistant then you did not do a venv install.

I am assuming you are logging INFO level log, however I didn't found any log likes
INFO (MainThread) [homeassistant.components.http.view] Serving / to <IP_ADDRESS> (auth: False)

I am wondering whether your http component is running. You can try to clear your browser cache or open an incognito window to access your instance.

I did the following series of commands:
> sudo systemctl stop hass.service
>  source bin/activate
>  python3 -m pip install --upgrade homeassistant

Yes, I'm at INFO level for logger component. Even with that on, the log is dead... no updates whatsoever. Would it be helpful if I posted my log (~200 lines then ends)? Tried incognito with both Chrome & Safari, no connection

im unable to login on my ios app? is this because i cant login as a specific user?

@IxsharpxI Please open new issue for your problem.

@Juggler00 so, you got "no connection" when you switch to other browser, but got UI dispalyed "something went wrong" in your previous used browser. If so, your HA is not start up successfully. The "something went wrong" UI is previous release's offline frontend cached in your browser.
You can post your config and full log in your bug report, if you cannot figure out which component cause issue.
You can also do trial and error way to disable some of your components each time until you can locate the failure component.

@Juggler00 are you still having issues logging in or did you get it figured out?

I managed to get it figured out. There was a breaking change with snap components.... Once I made the change, it worked.
THanks!


Implemented a basic ref-counting system to terminate glfw

this was a known issue, and was fixed in #125

This seems like a the global init should be split from Window

This seems like a the global init should be split from Window

This is how cherno did initialize it for now. I agree, we should have an abstract GLFW window base class inbetween Window and WindowWindow, but that is up to cherno to decide. For now this is a good implementation, as it was like this previously as well.

I would recommend System class that initializes all required dependencies(dependencies that need to be manually initialized)

I would recommend System class that initializes all required dependencies(dependencies that need to be manually initialized)

I agree, but that is more of a feature. Imo, this is still a valid "get things up and running" PR. When some sort of System is in place, this will have to be removed. I rather have glfw terminating correctly then not at all...

imho, I see this as technical debt over being a 'feature', this commit just compounding the technical debt.
This is an end-of-application clean-up so not really a memory leak just a false-positive with no side-effects that can show up in leak detection

This is an end-of-application clean-up so not really a memory leak just a false-positive with no side-effects that can show up in leak detection

I know, I just want to work on closing that memory leak thread, the less results, the faster we can solve it.


Create Decision Tree Classifier

It can create a Decision tree which can help one to find the hierarchy  most important feature
Related Issue
[Cite any related issue(s) this pull request addresses. If none, simply state “None”]
Description
[Please include a brief description of the changes or features added]
Type of PR

[x] Feature enhancement

Screenshots / videos (if applicable)
[Attach any relevant screenshots or videos demonstrating the changes]
Checklist:

[x] I have performed a self-review of my code
[x] I have read and followed the Contribution Guidelines.
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[x] I have commented my code, particularly in hard-to-understand areas.

Additional context:
[Include any additional information or context that might be helpful for reviewers.]

Good evening sir
Sorry sir actually it was my first PR
I will correct it soon..
On Sat, 8 Jun 2024, 17:54 Sanjay Viswanathan, @.***>
wrote:

@.**** requested changes on this pull request.
why different file. the main idea is to enhance existing file. Kindly look
into it.
—
Reply to this email directly, view it on GitHub
https://github.com/Recode-Hive/Scrape-ML/pull/182#pullrequestreview-2105840560,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BBUDY73YSFKIEEPC2JR3YLDZGLZWLAVCNFSM6AAAAABI75MFZCVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDCMBVHA2DANJWGA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Sorry, sir, but I cannot understand...
Can you please explain.
On Mon, 10 Jun 2024 at 21:30, Sanjay Viswanathan @.***>
wrote:

Good evening sir Sorry sir actually it was my first PR I will correct it
soon..
… <#m_5919778780925170073_>
On Sat, 8 Jun 2024, 17:54 Sanjay Viswanathan, @.> wrote: @.**
requested changes on this pull request. why different file. the main idea
is to enhance existing file. Kindly look into it. — Reply to this email
directly, view it on GitHub <#182 (review)
https://github.com/Recode-Hive/Scrape-ML/pull/182#pullrequestreview-2105840560>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BBUDY73YSFKIEEPC2JR3YLDZGLZWLAVCNFSM6AAAAABI75MFZCVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDCMBVHA2DANJWGA
. You are receiving this because you authored the thread.Message ID: @
.**>
you can raise in other repo, in the same organisation. the machine
learning repo
—
Reply to this email directly, view it on GitHub
https://github.com/Recode-Hive/Scrape-ML/pull/182#issuecomment-2158752344,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BBUDY73L2GQXEFCOYRPC5W3ZGXERTAVCNFSM6AAAAABI75MFZCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNJYG42TEMZUGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>

https://github.com/Recode-Hive/machine-learning-repos here you can raise the issue, as it complete beginner friendly

Thanks a lot.
On Wed, 12 Jun 2024, 08:05 Sanjay Viswanathan, @.***>
wrote:

https://github.com/Recode-Hive/machine-learning-repos here you can raise
the issue, as it complete beginner friendly
—
Reply to this email directly, view it on GitHub
https://github.com/Recode-Hive/Scrape-ML/pull/182#issuecomment-2161990558,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BBUDY76HK37BUHIQRVKKUJLZG6XXXAVCNFSM6AAAAABI75MFZCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRRHE4TANJVHA
.
You are receiving this because you commented.Message ID:
@.***>


Added email jaggery module

Added 'email' jaggery module to enterprise store

Closing the PR, since changes are conflicting with the latest changes. Please fix the conflicts and reopen the PR, if you need to add this change


Resolve path separator issue

Resolved platform specific path separator issue.

r? @krishnaIndia
(maidsafe_highfive has picked a reviewer for you, use r? to override)


feature: new verbose option prints filenames as they are compiled

adds a verbose option to display filenames as compiled.  helpful for verifying process still working in a situation where compile was taking a long time for particular items.

not sure why this showed up as not merged on mine.  i see a it merged on mar-8-2017 so i'm self closing this.


WIP: Add AutomatonWeight to a fuzzy_search module

Closes #299
So, I was able to review the range code - I "think" I have the way to go about this, where the AutomatonWeight has a field of type Automaton - but then promptly ran into ownership issues. The other option would be some kind of Fn<Automaton> that would build it up? Def looking for some rust guidance here. :)

@fulmicoton if you have some time I would appreciate any ideas for the ownership issue I've walked smack into around the automation. :) Thank you.

Thanks for pinging me. I rapidly hacked a solution on dss/automaton-weight-suggestion.
This is not "ready as is", but the solution is there.
So... I think it is ok to build the automaton when creating the Weight. Query object are rarely called more than once anyway. We don't want to build the automaton for every single segment though.
I rely on the fact that a reference to an Automaton is also an Automaton thanks to https://docs.rs/fst/0.3.0/fst/automaton/trait.Automaton.html#impl-Automaton.

@drusellers ping me if you are still stuck.

Ok, the code is now compiling. But it seems I have something wrong, as I have to set my distance to 2 to match Japan to Japon when I would expect 1 to be sufficient. Am I understanding the Levenshtein correctly?

t found your bug... In your test case, your index uses the default tokenizer to process your text. This includes a lowercaser, so the term in your term dictionary is in fact "japan" as opposed to "Japan".
In practise, users of your automaton need to make sure to use the same tokenizer to process queries.
You can fix your text by lowercasing "Japon" to "japon"

HAHAHA, yes. Facepalm. I need to start seeing J as being different from j - good stuff, thank you.

Ok, this one is green. Assuming you are happy with the code. I'm ready for the next task. :)

Closes #272

Ok, all but the lazy static changes have been made. :)

Ok, ready for the next review! :)


DuplexConnection

I have modeled this after our learning from RxNetty, particularly the Publisher<Void> write(Publisher<Message> m) API which supports backpressure as we hook into async IO, such as Netty and Aeron.

@niteshkant can you please confirm this is all done correctly as per your learnings with RxNetty?
What should we call this thing?

https://github.com/ReactiveSocket/reactivesocket-java/blob/e38b757ca02e597712139dfb9d01ba5dc7079c40/src/main/java/io/reactivesocket/DuplexConnection.java#L24
Connection? SocketConnection? ReactiveSocketConnection? Leave it as DuplexConnection?

What should we call this thing?

How about calling it ReactiveSocket itself :) as it is one!
The getInput() and write methods look good. Should we be having a close method here too?

We changed it. It's working.


Add support for React 18.*

Hey @iway1 thanks for this package.
Do you have plan to add support for react 18? RIght now the NPM is complaining about the version required by the package.
➜  mobile git:(main) npm i @good-react-native/keyboard-avoider
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving<EMAIL_ADDRESS>npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/react
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR! node_modules/@good-react-native/keyboard-avoider
npm ERR!   @good-react-native/keyboard-avoider@"*" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

Note: I know i can just use the flag to force the installations, but this not sounds right.

@ iway1 This library looks very promising, but it hasn't gotten much love recently. Would you say it's still actively maintained by you?

@ iway1 This library looks very promising, but it hasn't gotten much love recently. Would you say it's still actively maintained?

I have same question but If nobody replied since july to you, maybe not :(


Use @threads when populating expression containers.

In many cases, we create expressions that are re-used for constraint creation for example the ThermalGeneration bounds with services or the initial conditions.
In large systems, this can be a bottle neck and although we can't parallelize the creation of constraints, we can parallelize writing into the container of expressions. This is critical for large systems that need to pay the cost of making the expression and then posting the constraint.

After some experiments, this solution didn't seem to be viable. Closing until future experimentation.


yarn dev not work

jun@zhangjunshengdeMacBook-Pro nft-app % yarn dev
yarn run v1.22.4
warning ../../package.json: No license field
$ vite
Pre-bundling dependencies:
react
react-dom
@web3-react/core
ethers
react-hot-toast
(...and 9 more)
(this will be run only when your dependencies or config have changed)
vite v2.7.3 dev server running at:

Local: http://localhost:3000/
Network: use --host to expose

ready in 1094ms.
ERROR(TypeScript)  Subsequent variable declarations must have the same type.  Variable 'beforeEach' must be of type 'HookFunction', but here has type 'Lifecycle'.
FILE  /Users/jun/node_modules/@types/jest/index.d.ts:35:13
33 |
34 | declare var beforeAll: jest.Lifecycle;

35 | declare var beforeEach: jest.Lifecycle;
|             ^^^^^^^^^^
36 | declare var afterAll: jest.Lifecycle;
37 | declare var afterEach: jest.Lifecycle;
38 | declare var describe: jest.Describe;

ERROR(TypeScript)  Subsequent variable declarations must have the same type.  Variable 'afterEach' must be of type 'HookFunction', but here has type 'Lifecycle'.
FILE  /Users/jun/node_modules/@types/jest/index.d.ts:37:13
35 | declare var beforeEach: jest.Lifecycle;
36 | declare var afterAll: jest.Lifecycle;

37 | declare var afterEach: jest.Lifecycle;
|             ^^^^^^^^^
38 | declare var describe: jest.Describe;
39 | declare var fdescribe: jest.Describe;
40 | declare var xdescribe: jest.Describe;

ERROR(TypeScript)  Subsequent variable declarations must have the same type.  Variable 'describe' must be of type 'SuiteFunction', but here has type 'Describe'.
FILE  /Users/jun/node_modules/@types/jest/index.d.ts:38:13
36 | declare var afterAll: jest.Lifecycle;
37 | declare var afterEach: jest.Lifecycle;

38 | declare var describe: jest.Describe;
|             ^^^^^^^^
39 | declare var fdescribe: jest.Describe;
40 | declare var xdescribe: jest.Describe;
41 | declare var it: jest.It;

Thanks @Marchccc Could you try again on the master branch? I have just tried and it works fine for me. Thanks.


Added documentation for k8s installation and community slack channel

Somehow messed up the git log in this pull request. Closing and recreating.


Done login page

as of now i connected contact page after login ,so after creating menu page we can link to that page bro

done


[IDE] Loading indicator

Is your feature request related to a problem? Please describe.
There's no easy way to describe if something is loading or if it's loaded and no information is shown.
Describe the solution you'd like
Whenever a view is loading content, there needs to be an indicator.
fundamentals-ngx defines budy indicator - https://sap.github.io/fundamental-ngx/#/core/busy-indicator

Progress to be tracked in:

https://github.com/eclipse/dirigible/issues/1221

@dpanayotov please transfer this issue to: https://github.com/eclipse/dirigible/issues

to be covered with #749


Use -prune for "REPLACE_ENV_VARIABLES_EXCLUDE_PATHS" feature.

Using the -prune option to exclude paths in "find" should be a lot more efficient than -not since it prevents find from traversing excluded directories / files.

This is now pushed to Docker Hub


"More Tweets" not being hidden when tab is opened in background on Chrome

If I click "open in another tab" on a link to some tweet page and then go there, "More Tweets" is being shown when "Hide "discover on" tweets" is checked. This is still true if I switch to the new tab very shortly after that while the page is still being loaded. This does not happen if the tab is active when the tweet page starts loading.
Latest Chrome & plugin version.

This works: https://greasyfork.org/en/scripts/446736-remove-more-tweets-on-twitter
Maybe use that code?


Build and run containers

Hey im running into an issue initially when on the "Build and run Container step"
here is the output i am receiving.. I have looked on stack overflow and seen discussions that the image may not exist on docker...I changed the image from Ubuntu:17.10 to just Ubuntu and still no luck. Any idea why this would be happening?
Error response from daemon: pull access denied for ansible_host, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

Hey, there are two changes I have made that resolved the exact same problem:

In ./base/Dockerfile modify Ubuntu:17.10 to Ubuntu:22.04
In docker-compose.yml set version: "3" instead of version: "2"


Revert "Add integrity check on file uploads"

Reverts balena-os/leviathan#359

@balena-ci retest

@balena-ci I self-certify!


Created guide to git and GitHub

Wrote a Git/Github guide and added an assets folder for relevant images/resources.

Looks good. Thanks, Michail!


Update README.md

getting started link was old and dead
Purpose

dead link

Does this introduce a breaking change?

[ ] Yes
[X ] No

Pull Request Type
What kind of change does this Pull Request introduce?

[x ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Documentation content changes
[ ] Other... Please describe:

How to Test

Get the code

git clone [repo-address]
cd [repo-name]
git checkout [branch-name]
npm install

Test the code

What to Check
Verify that the following are valid

...

Other Information

Fixed, thanks!


SQLi: add starts_with()

Description
SQLi bypass submitted by Shivam Bathla.
Example payload:
id=starts_with(password,%20%27t%27)::int
Todo: add function starts_with(), startswith, ends_with and endswith.

-> Add to rule 942151 at PL1.


how to remove all content from a graph without dropping collections ( document and edges )

My Environment
version 3.10.1
Single Server
Manual Start
Singleton on ubuntu
AWS EC2
Ubuntu 20.04
Total RAM in your machine:  N/A
Disks in use: N/A
Ubuntu.deb
I have a graph with document collections and edge collections.  I'm populating it from external json objects and am working though issues.  Periodically I want to clean the whole db/graph but don't want to drop the collections.
I've built a number of relations in my graph settings and I'm afraid they will get lost if I drop a collection.
Do I have to do a find/remove all for each collection?  Is there a way to wildcard remove all?
Do the collections have a wild card remove?
for instance:
REMOVE * from location

Hi,
you can use the truncate operation on collections, which could be faster than dropping.
Edges point do collection names; if you re-create vertex collections with documents with similar keys, the edges will remain valid.
However, this definitely spoils graph integrity warranties; hence if you don't re-create all referenced vertices you will get dangling edges.
You should use an Outer Join to find dangling edges, and take care of them.


scatter plot bug-fix and enhancement

fixed color option for scatter plot
enabled bubble plot by size

please look why it is failing


Feature / labels

This PR fixes #6 with easy handling of PostType labels.
All post types require labels at registration time.  Previously, registering a post type with Silk did not set post type labels for all labels which referenced the single or plural forms of the label.
This feature enables the most common use cases to set all custom post type labels using the provided methods:
$post_type->oneIs('Book')
    ->manyAre('Books')
    ->register();

Changes Unknown when pulling 19d2f5d5bd784c308dcb22f53acad5136a242a5e on feature/labels into ** on master**.


Incorrect EloquentBuilder stub param types for Expression

Larastan Version: v2.6.0
--level used: 5
Pull request with failing test: There is already a test, but it's not failing and I am unclear why? I don't think it should be?

Description
In a Laravel 10 app, for the below snippet, I am getting an error for the first parameter. I believe this is because the EloquentBuilder.stub has the concrete Expression listed, instead of the interface?
 160    Parameter #1 $column of method
         Illuminate\Database\Eloquent\Builder<Illuminate\Database\Eloquent\Model>::where() expects array<int|string,
         mixed>|(Closure(Illuminate\Database\Eloquent\Builder): void)|(Closure(Illuminate\Database\Eloquent\Builder):
         Illuminate\Database\Eloquent\Builder)|Illuminate\Database\Query\Expression|string,
         Illuminate\Contracts\Database\Query\Expression given.

DB::raw() should return Illuminate\Contracts\Database\Query\Expression per the facade's type info.
The Illuminate\Database\Eloquent\Builder::where() should accept that, according to its docblock.
The above error from Larastan does not have the builder from the Contracts namespace listed though? That seems incorrect?
The stub file in Larastan lists the concrete implementation of the Builder, and not the interface in Contracts: https://github.com/nunomaduro/larastan/blob/63326ddbfe83c395d339dd419b705de69f5d57f9/stubs/EloquentBuilder.stub#L221
I think that should be corrected for where, orWhere, orWhereRelation, firstWhere, value, and whereRelation.
Laravel code where the issue was found
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;

public function scopeFulltextSearch(Builder $query, string $term)
{
    return $query->where(DB::raw("first_name || ' ' || last_name"), 'ilike', $term);
}

Hi,
This is a duplicate of this issue: https://github.com/nunomaduro/larastan/issues/1547
And here I wrote a short answer what the possible solution can be. Feel free to send a PR 👍🏽


ci: Cleanup GitHub Actions workflows

Description

Adds sentiment analysis to the github workflow
Removes .github/FUNDING.yml
Renames pull_request => pull_request_target in welcome-first-time-contrib.yml
Creates automerge.yml file

Related issue(s)
Resolves #7

@sharkham could you share with me how did you learn about AsyncAPI? was it Discord?
How was your experience? what could we do more for next even?

Thanks @derberg ! And yes, I learned about AsyncAPI through the Hacktoberfest Discord. My experience was great, and I honestly can't think of anything more you could do for the next event! I found the project in the project sharing channel, I really appreciated the Sheets file with what issues were left and their difficulty level, and the instructions on the issue itself were clear and concise. And the only questions I had remaining after that you were quick to answer!

@sharkham sounds great. Thanks for answering 🙇 Happy you enjoyed it!


Customization for lights

It has some settings for FOV.
Is it possible to add new settings for Radius, Colors, etc..?
What is this stuff about armors? Managing equipped armor, hiding, showing etc..? I'm interested lol.

It's possible, for now I've only added stuff that can't be changed on light forms, at some point I might make it possible to configure everything from the UI. This would effectively make using forms redundant, lights could simply be attached to anything. For now, you'll have to stick with making new forms though.

What is this stuff about armors? Managing equipped armor, hiding, showing etc..? I'm interested lol.

It's for conditionally equipping outfits. There's another part that allows creating outfit forms in-game which ties the whole thing together, but that's completely unsuitable for the public because it writes to the save (not the skse co-save like plugins normally do).

For now, you'll have to stick with making new forms though

Alright.

It's for conditionally equipping outfits. There's another part that allows creating outfit forms in-game which ties the whole thing together, but that's completely unsuitable for the public because it writes to the save (not the skse co-save like plugins normally do).

Sounds really interesting, will you release the builds here?

Ah, that makes sense. With SKSE plugins that can be installed and uninstalled at will without the need to worry about corruption or other issues, it's best to keep that way lol.

Speaking of lights, there are two options to not light water and ground. But what about Grass?
Well, in vanilla there's no light for grass, but it could be done with ENB or the recent Grass Lighting mod.
Don't really know if it's possible to integrate IED's function with the other mods, but just putting here as something to consider.

Don't really know if it's possible to integrate IED's function with the other mods

It's not possible to control on a per-object basis. These mods would have to provide options for that, I don't think that's likely to happen.

Yeah, I figured it would use what the game uses for light. The Grass Lighting mod changes something in the engine to affect grass, which in turn affects the lights created with IED too.
I was just wondering if there was a way to disable grass lightning with IED the same way as the water and ground options, might be useful fote someone, but how IED would tell the mods to not light grass, right? Lol

Just a question, since this is related to lights.
Right now, you can't use light forms that don't have models; you get this error in the log: "couldn't get model params".

at some point I might make it possible to configure everything from the UI. This would effectively make using forms redundant, lights could simply be attached to anything.

I guess this is what you meant?

I guess this is what you meant?

I meant something similar to how effect shaders are implemented, a separate area for lights, fully configurable params (stuff that's on forms now) with an option to select the attachment node for the light

Oh, that would be cool.
Right now I'm just assigning an "invisible" mesh to the light records to be able to use them with IED an illuminate stuff.

Right now I'm just assigning an "invisible" mesh to the light records to be able to use them with IED and illuminate stuff.

Imo that's not that much of a PITA, where configurable lights would really come in handy is attaching to any random object want. Right now that's impossible.


In user account creation, the provided username is added as the last name in the profile

Describe the issue:
Refer - https://is.docs.wso2.com/en/latest/learn/configuring-user-name-recovery
When we create a user [from Identity > Users and Roles > Add] we provide a username (e.g. Alex). Then it will also be added as the last name of the user profile. But not even as the first name.
How to reproduce:
Shouldn't it be better if the username is not added as the first name instead of the last name.
Expected behavior:
Username is not added as the last name. Instead, provide a better solution.
Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: [IS 5.11.0]
OS: [Linux]
Database: [H2]
Userstore: [LDAP]

Optional Fields
Related issues:
N/A
Suggested labels:

This will happen only for LDAP user store. SN is mandator and if it was not specified, usual practice is to use uid attribute for the lastname.


Use Fabric to deploy

store secrets in secrets.py (and add to gitignore); this avoids storing them in the docker image
use fabric to:

build image
push to docker hub
ssh to production server
pull image from docker hub
do docker run and set secrets as environment variables

also move root password from root_password to secrets.py


Add a client to google cloud document indexing and search

Request to add client for indexing documents and search.

Does this help? https://github.com/googleapis/google-api-java-client-services/tree/master/clients/1.28.0/google-api-services-cloudsearch/v1

@chayki, I'm going to close this.  Please reopen this issue or another issue if the information provided doesn't not answer your question.


Support shadow properties in fluent builder when defining Unique indexes

My User entity has a shadow property for TenantId.
Typically a unique index is applied on Username, but in my case, I'd like the unique index to be applied on Username + TenantId
However I cannot think of how to achieve this. I have tried the following but HasIndex expects an anon object for which you can only use simple property access for its members - i.e the following is not valid syntax:
                b.HasIndex(u => new { u.NormalizedUserName, EF.Property<int?>(u,
             TenantIdPropertyName) }).HasName("UserNameIndex").IsUnique();

Is there a way I can achieve the above?

If there is no way to achieve this, perhaps consider fluent method for configuring an index that can be used with shadow properties.

Ah sorry I missed the overload that takes just the string property names. I'll try that and hope it honors shadow properties:
                b.HasIndex(nameof(User.NormalizedUserName), TenantIdPropertyName).HasName("UserNameIndex").IsUnique();

Will reopen if not.


perf(continuations): Have bounded number of segment data while proving

Proving with continuations requires to first generate segment data for all segment payloads within a block. This has a negative effect on memory as these segments are persisted until consumed, which happens at a much slower rate.
We should consider having some buffered approach to not hold in memory more than N segment data ahead (where N most likely would be the runtime number of workers to make sure that they can all pick up a next job if they happened to finish their current one at the same time).

Related, may be solved by https://github.com/0xPolygonZero/zk_evm/issues/627

In the PR https://github.com/0xPolygonZero/zk_evm/pull/793, segment generation is performed separately from the proving, and new segments are communicated to the proving task with the channel. It is easy to limit their number by adding new semaphore to task generation of the number of segments in the batch that will be proven in parallel. I have decided  not to do that, as we have already implemented block_pool_size limitation that manages the number of blocks proven in parallel.


Fix TPM error failure fix for NVIndex failure

Multi Android VM support TPM error failure fix for NVIndex failure
Tracked-On: OAM-111783

Have we tested this with non-secure boot loader?
What if the OVMF.fd file does not exists for the copy operation?

update the patch adding changes handling above
verified with/without secure boot VM launch no issues observed


Lesson 7 : Version Imcompatible between LinkToken.sol and brownie

I was trying to brownie  compile after copy LinkToken.sol MockV3Aggregator.sol VRFCoordinatorMock.sol and put in my contracts/test folder.
But I kept getting error about version of sol. file
After checking  LinkToken.sol I found that it use v0.4.11,
however, my Brownie said that it only supports >=v0.4.22
I also tried to do some manually 'flattening', but it was definitely not ideal cause I had to drop in tons of files
Can anyone give me some suggestions?
p.s. yt link's here
https://youtu.be/M576WGiDBdQ?t=27261

I hope in the files it is written as pragma solidity ^0.4.11; and not pragma solidity 0.4.11;.   And you have set the Global Compiler Version to 0.6.6.

I hope in the files it is written as pragma solidity ^0.4.11; and not pragma solidity 0.4.11;. And you have set the Global Compiler Version to 0.6.6.
thanks for replying!
I tried to set my global compiler version as v0.6.6 but still got error
Couldn't figure out where goes wrong lol

I hope in the files it is written as pragma solidity ^0.4.11; and not pragma solidity 0.4.11;. And you have set the Global Compiler Version to 0.6.6.

Also I found the following explanation in solidity official docs:

The version pragma is used as follows: pragma solidity ^0.5.2;
A source file with the line above does not compile with a compiler earlier than version 0.5.2, and it also does not work on a compiler starting from version 0.6.0 (this second condition is added by using ^)

so I thought that pragma solidity ^0.4.11;  was unable to compile version  above v0.5.x , am I correct?

pragma solidity ^0.4.11 should work with higher versions too though,
Can you check the config file and see if it matches with what I have written below
dependencies:
  -<EMAIL_ADDRESS>  -<EMAIL_ADDRESS>
compiler:
  solc:
    remappings :
      - "<EMAIL_ADDRESS>      - "<EMAIL_ADDRESS>

thanks @bot-eth-dev  I managed to solve this.
The problem is that I specified the solc version in config and forgot to delete it when trying to compile the LinkToken.sol


Using incorrect argument in aggregate crashes server

repro:
  match
    people= [#person]
    foo = count[the: people]
  bind
    [#div text: "foo"]

This crash is because the schema matching stuff isn't plumbed through the error system yet, so throws an error which isn't caught and terminates the server.


List Receives Click While Scrolling

So I have an app that display a list using collection-repeat. When I flick the list to have it scroll, normally I would expect to tap an item to stop the scrolling but instead a click event is fired as Ionic translates it as a tap or click event and takes me to the detail page of the item I have clicked.
A possible fix will be disable tap events while scrolling is happening or detect the intensity of the click or tap event such that the subtle tap events while scrol should stop the scroll not fire the tap event.
This issue has been experienced on IOS but I can be sure it is same on Android.

This should be solved now, thanks: https://github.com/driftyco/ionic/issues/1438


PropertyFieldFilePicker not working in Viva ACE Property Panes

Category
[ ] Enhancement
[ x] Bug
[ ] Question
Version
Please specify what version of the library you are using: [     3.2.0    ]
Expected Behaviour
Expected the control to work when implemented with a Viva Adaptive Card
Observed Behaviour
When implementing the control, I initially sort of got it working inside the separate Property Control Pane file that comes scaffolded with the Adaptive Card generated in yeoman. However, since it couldn't obtain the correct web part context in the separate file, my colleague and I tried migrating it to the main .ts file where the render function lives. This worked fine with the other controls I had implemented (some custom filtering functions that use PropertyPaneTextField to take in a query string) but as soon as I tried to add in the File Picker, I suddenly received an entry point error telling me that the module "PropertyControlStrings" couldn't be found. After pairing with a more experienced dev we were unable to find a way to resolve the issue.
Steps to Reproduce

Clone the repo HERE
In the project repo, run npm install
Implement the file picker as shown in the docs OR migrate the property pane into the HelloWorldAdaptivecardExtension.ts file and then attempt to implement the file picker as per docs. Both methods have caused the issue for me.

Thank you so much for your help and apologies if I'm doing something stupid - I'm only a junior and struggling with developing Viva ACEs

@Theosaurus-Rex issue transferred to the correct repository

Hi @Theosaurus-Rex - what exactly doesn't work for you?
I don't see any issues:

I took your example, installed property controls in there.
This is the code for property pane:
import { IPropertyPaneConfiguration, PropertyPaneTextField, PropertyPaneDropdown } from '@microsoft/sp-property-pane';
import * as strings from 'HelloWorldAdaptiveCardExtensionStrings';
import { IHelloWorldAdaptiveCardExtensionProps } from './HelloWorldAdaptiveCardExtension';
import { PropertyFieldFilePicker, IPropertyFieldFilePickerProps, IFilePickerResult } from "@pnp/spfx-property-controls/lib/PropertyFieldFilePicker";
import { BaseComponentContext } from '@microsoft/sp-component-base';

export class HelloWorldPropertyPane {
  public getPropertyPaneConfiguration(properties: IHelloWorldAdaptiveCardExtensionProps,
    context: BaseComponentContext,
    onPropertyPaneFieldChanged: () => void): IPropertyPaneConfiguration {
    return {
      pages: [
        {
          header: {
            description: 'Card Settings'
          },
          groups: [
            {
              groupName: "Filters",
              groupFields: [
                PropertyPaneTextField('filterBySenderEmail', {
                  label: 'Filter by Sender',
                }),
                PropertyPaneTextField('filterBySubject', {
                  label: 'Filter by Subject'
                }),
                PropertyFieldFilePicker('filePicker', {
                  context: context as any,
                  filePickerResult: properties.filePickerResult,
                  onPropertyChange: onPropertyPaneFieldChanged,
                  properties: properties,
                  onSave: (e: IFilePickerResult) => { console.log(e); properties.filePickerResult = e; },
                  onChanged: (e: IFilePickerResult) => { console.log(e); properties.filePickerResult = e; },
                  key: "filePickerId",
                  buttonLabel: "File Picker",
                  label: "File Picker",
                })
              ]
            }
          ]
        }
      ]
    };
  }
}

And here is how it's called:
protected getPropertyPaneConfiguration(): IPropertyPaneConfiguration {
    return this._deferredPropertyPane!.getPropertyPaneConfiguration(this.properties, this.context, this.onPropertyPaneFieldChanged);
  }


nvim to tmux does not work

It seems TmuxNavigator can't find  the tmux process because :TmuxNavigatorProcessList shows:
Ss   -zsh
S+   nvim

Switching works from tmux to nvim and within nvim but not nvim to tmux. Not sure if I am doing something wrong.
Would appreciate any help.

Just to confirm, do you have the vim plugin installed? (https://github.com/christoomey/vim-tmux-navigator#vim)
Likewise, can you check the Vim key mappings per https://github.com/christoomey/vim-tmux-navigator#vim---tmux-doesnt-work?

Yes I have the vim-tmux-navigator plugin installed and the mappings have been set too. Here are my plugins.lua and mappings.lua (I'm running nvchad):
plugins.lua:
local plugins = {
  {
    "christoomey/vim-tmux-navigator",
    lazy = false,
  },
  {
    "vim-crystal/vim-crystal",
    ft = "crystal"
  },
  {
    "neovim/nvim-lspconfig",
    config = function()
      require "plugins.configs.lspconfig"
      require "custom.configs.lspconfig"
    end,
  },
  {
    "williamboman/mason.nvim",
    opts = {
      ensure_installed = {
        "rust-analyzer",
      },
    },
  }
}
return plugins

mappings.lua
local M = {}

M.general = {
  n = {
    ["<C-h>"] = { "<cmd> TmuxNavigationLeft<CR>", "window left" },
    ["<C-l>"] = { "<cmd> TmuxNavigationRight<CR>", "window right" },
    ["<C-j>"] = { "<cmd> TmuxNavigationDown<CR>", "window down" },
    ["<C-k>"] = { "<cmd> TmuxNavigationUp<CR>", "window up" },
  }
}

Just to confirm as the mappings can be overriden by later config lines, can you check them as per https://github.com/christoomey/vim-tmux-navigator#vim---tmux-doesnt-work?

Yes I checked and I don’t think that is the case. In fact the key mappings are working within neovim. For example when nvim-tree is open I am able to switch between the editor and the nvim-tree using C-h, C-L. It’s only switching out of nvim that isn’t working.On 11 Jun 2023, at 8:04 PM, Chris Toomey @.***> wrote:
Just to confirm as the mappings can be overriden by later config lines, can you check them as per https://github.com/christoomey/vim-tmux-navigator#vim---tmux-doesnt-work?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

TmuxNavigationLeft

This is almost the correct command. It should be TmuxNavigateLeft, etc.

Good spot thanks. Unfortunately it didn't fix the issue.

I'm having the same issue. Also running nvchad and my plugin.lua and mappings.lua look the same as what aziz76 has. Also have the exact same behaviour as described by him above. I'm on Fedora 38.

Yes I checked and I don’t think that is the case. In fact the key mappings are working within neovim. For example when nvim-tree is open I am able to switch between the editor and the nvim-tree using C-h, C-L. It’s only switching out of nvim that isn’t working.

@aziz76 just to double check here, can you share the output of :verbose nmap <C-h>? It's possible you have a mapping like nmap <C-h> <C-w>h which would let navigation in Vim work, but would not allow for the vim<>tmux integration.

Hi Chris,
This is the output of : verbose nmap :
n         * h
Window left
Last set from Lua

On 4 Jul 2023, at 7:16 PM, Chris Toomey @.***> wrote:
Yes I checked and I don’t think that is the case. In fact the key mappings are working within neovim. For example when nvim-tree is open I am able to switch between the editor and the nvim-tree using C-h, C-L. It’s only switching out of nvim that isn’t working.
@aziz76 https://github.com/aziz76 just to double check here, can you share the output of :verbose nmap ? It's possible you have a mapping like nmap  h which would let navigation in Vim work, but would not allow for the vim<>tmux integration.
—
Reply to this email directly, view it on GitHub https://github.com/christoomey/vim-tmux-navigator/issues/355#issuecomment-1620502663, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADLVADUWJTNPWGXUWJ2OJ3XOQ6WBANCNFSM6AAAAAAZBRVY6E.
You are receiving this because you were mentioned.

Yup, looks like you've got a conflicting mapping somewhere else in your config -- you'll need to find those conflicting config lines and remove them to get things working. Going to close this issue now as it looks like the issue is in your config rather than the plugin.

@aziz76  Hey hello, just to know that if you've fixed the issue in your config file. Because I was having the same issue from yesterday(I started setting up nvim with 'NV Chad' 1.5 days ago) , & I solved the problem in my config file few moments ago. Now I can seamlessly move from nvim to tmux and vice versa with shortcuts (<Ctrl+h>, <Ctrl+j>, <Ctrl+k> and <Ctrl+l>). Will be glad if I be able to help.

ref https://github.com/NvChad/NvChad/issues/1984
M.disabled = {
  n = {
    -- Disable to allow the plugin nvim-tmux-navigator to bind (see custom/plugins.lua)
    ["<C-h>"] = "",
    ["<C-l>"] = "",
    ["<C-j>"] = "",
    ["<C-k>"] = "",
  }
}

Not sure I understand, do I put these lines in custom/mappings.lua or custom/plugins.lua? I couldn't find any conflicting bindings as I have not assigned them anywhere else?

@aziz76    I see you didn't return M at the last line in your mappings.lua file.  and you can see the lines in my tmux.conf file below. If you find anything missing in your file you can add it there and see if starts to work. After adding those lines of Vim style pane selection and Shift Alt Vim keys to swich windows section, I can easily switch from nvim to tmux and vice versa using Ctrl+h or j or k or l based on direction.
set-option -sa terminal-overrides ",xterm*:Tc"
set -g mouse on

# Vim style pane selection
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# Use Alt-arrow keys without prefix key to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Shift Alt vim keys to switch windows
bind -n M-H previous-window
bind -n M-L next-window

set -sg escape-time 1
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'christoomey/vim-tmux-navigator'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'```

Also make sure you have the line M.mappings = require "custom.mappings" in your chadrc.lua file.
local M = {}

M.general = {
  n = {
    ["<C-h>"] = { "<cmd> TmuxNavigateLeft<CR>", "window left" },
    ["<C-l>"] = { "<cmd> TmuxNavigateRight<CR>", "window right" },
    ["<C-j>"] = { "<cmd> TmuxNavigateDown<CR>", "window down" },
    ["<C-k>"] = { "<cmd> TmuxNavigateUp<CR>", "window up" },
  }
}

return M

And keep your mappings.lua file same as above. After all of these configurations, your navigation from nvim to tmux and tmux to nvim should work.

I fixed it defining the custom keymappings as you can see here.


github/workflows: Remove branch restriction

This allows the tests to run on forks too.
As requested by @wpoely86.

Any idea why @wpoely86 doesn't show up as a reviewer?

Because I don't have any rights on this repo? Approved in any case. Thanks @jrha

Well that's easy to fix! I've sent you an invite to join the developers team.


View not refreshing (No change detection)

Angular 5.0.0
Dart VM version: 2.0.0 (Fri Aug 3 10:53:23 2018 +0200) on "macos_x64"
MacOS X 10.13.6
Chrome

pubspec.yaml:
name: places
description: Cool Places
version: 0.0.1
environment:
sdk: '>=2.0.0 <3.0.0'
dependencies:
angular: ^5.0.0
angular_forms: ^2.0.0
angular_router: ^2.0.0-alpha
http: ^0.11.0
stream_transform: ^0.0.6
angular_components: ^0.9.0
dev_dependencies:
sass_builder: ^2.0.0
angular_test: ^2.0.0-beta
build_runner: ^0.9.0
build_test: ^0.10.2
build_web_compilers: ^0.4.0
test: ^1.0.0
I want to notify a parent component from a child component to update a view in the parent component, after saving an entry. I'm using the @output annotation to parse back an event.
In the parent component the function "loadPosts()" is actually invoked, but the view is not updated. Not even with ChangeDetectorRef.
What happens:

place_component contains a "list-post" directive, which displays all posts.
place_component contains a modal, to add a new post with a directive "new-post"
When a new post is saved, a message is parsed back over @output to the "new-post" directive in the modal: (doneIt)="loadPosts()"
The loadPosts() function is executed, but the "list-post" directive does not reload.

See following Stackoverflow for details:
https://stackoverflow.com/questions/52295624/how-to-notify-parent-component-of-change-and-refresh-view

I have also tried with an EventBus: https://stackoverflow.com/questions/44170126/angulardart-how-do-you-pass-an-event-from-a-child-component-to-a-second-level-p
It's the same behaviour, loadPosts function is executed, but the view is not updated.

This also didn't do the trick....
PlaceComponent(this._placeService, this._location, this._postEvent, this.cdRef) {
postEvent.onEventStream.listen((int id) => loadPosts().then((){cdRef.markForCheck();}));
}

Unfortunately we aren't going to be able to debug your code for you on this repository.
Feel free to file again with a minimal reproducible sample (i.e. one we can run ourselves).


Shulks can't break sandstone

The shulk's strong-arms property allows them to break "natural stones" with their bare hands, but they can't break sandstone. Is this a bug or a feature? Sandstone should be considered a natural stone as it generates naturally (and literally has stone in the name).

They can now break sandstone, smooth sandstone, and its red variants. :)


Short solution needed: "Using Redis keepalive (persistent) connections" (php-redis)

Please help us write most modern and shortest code solution for this issue:
Using Redis keepalive (persistent) connections (technology: php-redis)
Fast way
Just write the code solution in the comments.
Prefered way

Create pull request with a new code file inside inbox folder.
Don't forget to use comments to make solution explained.
Link to this issue in comments of pull request.

Using Redis persistent (keepalive) connections


Reintroduce zones to terraform

We will need to provide a zone when creating a PowerVS service.

Linters and format should be fixed

Forgot to actually use the zone tfvars. Fixed.


Document how to use the bots and what can and cannot be expected

Provide some simple documentation that explains how to use the bots, what their features/capabilities are.
In no particular order, here are some random things I learned when trying to use them today:

there are actually 2 different bots.  One of the is only for all of the AgileVentures Slack instance and the other runs 1 per channel
using a bot means it's tied up and no one can use it to vote on anything else until you're done with it

How do you "run" each bot?
How do you "release" each bot?
How do you get the results?
What if you have trouble?  Can you kill/restart it?
Can you 'undo' or 'subtract' a vote or do you have to just re-do the whole vote?
What's the syntax?   Is there a help command or flag?

thanks @weedySeaDragon - we need to take the old bot offline - the new one from @arreche that works one per channel is the replacement that we need to consolidate on.
I'm taking the old AsyncVoterBot that worked on DMs offline right now

and yes, more detailed documentation required - it's not an allergy on documentation on our part - more a question of resources.  We're following an agile model of getting something bare bones up - now we have to flesh it out (including documentation) ... huge kudos to @arreche for putting in the effort to get us to this new and improved interface!

I don't think there's an allergy to documentation.
I'm just being an active user and giving my feedback.  :-)
From my perspective, this tool was made available to us (the shf-project), which is great.  But it came with no documentation and we didn't really know how to make it work for us.
(Just had a hangout today after our client meeting and 3 of us had the same questions:  We want to use this, we all were kind of unsure and said things like "how does that work again?"  "do we use the slash to get it to work?")
The good news is that users (me & others on shf-project) want to use this!  It's evidence that your tool is actually being used, and people like it so much that they want more. :-)
== Real life asynchronous user feedback
@arreche has already got #12 which will be a great start.


Add snippet to search api result

Issues #46 and #47 require text snippets about what matched in search results.  This requires modifications to the search api and possibly a new API endpoint.

snippet is not appearing correctly when search results are faceted.

snippet is not appearing correctly when search results are faceted.


Auto Naming of the files disabled after the previous update

Automatic file naming convention isn't working after the previous update you rolled out. Please fix that.

Published the fix to the webstore, might take few days to go live - https://github.com/Presto412/Enhancer-for-VIT-Vellore-Academics/pull/10

Live on the web store.


(User Interview Script Prep) Placeholder for questions to ask users

This is the issue where you should put any potential questions you have for end users of func

probably a failed experiment


alternative way of setting release version from file

Was just looking around and noticed the use of a rebar.config.script for this instead of relx's cmd option. I should probably make a better way in relx to do this that doesn't require the tr -d ..., but yea, just thought I'd mention it.

I am taking liberty of labelling as WIP - did not see update in http://www.rebar3.org/docs/releases yet.
See also #1330

I've updated the getting started section to include the options for release version, http://www.rebar3.org/docs/releases#section-getting-started

Closing in favour of #1330 (that is the same as this plus one small follow-up commit).


Address 9154 and CM/AC DNS-SD convergence

Problem
What is being fixed?  Examples:

Fix https://github.com/project-chip/connectedhomeip/issues/9154: DNS-SD commissionable node discovery does not time out
Fix SDK to address https://github.com/CHIP-Specifications/connectedhomeip-spec/issues/3805: DNS-SD fields - CM and AC fields are unnecessarily confusing, error prone

Change overview

add timers for commissionable node discovery timeout and extended discovery timeout
make extended discovery configurable per the spec, add shell commands for configuring
code to match latest DNS-SD commissionable node discovery changes (CM/AC convergence)

Testing
How was this tested? (at least one bullet point required)

tv-app and lighting app shell commands to toggle commissioning mode (disabled, basic, enhanced)
chip-tool to discovery and print out DNS-SD values

Does anyone recognize the cirque error?
otbr-agent[55]: [CRIT]-PLAT----: Init() at ../../third_party/openthread/repo/src/posix/platform/hdlc_interface.cpp:150: InvalidArgument
I've seen this on another PR recently, but I'm not familiar with that area of the code.
As far as I can tell, the cirque failure is unrelated to this PR. CRA/CRI change looks good. I'm less familar with the spec about the timing, but it looks correct from my reading.

I couldn't figure out why this would have anything to do with this PR. I'll check with the larger group on whether this is known

This PR broke commissioning ESP32 using chip-tool. ESP32 gets on the network and can be discovered but chip-tool never actually discovers it, and instead hangs until the whole process times out.
Repro:
chip-tool pairing ble-wifi<PHONE_NUMBER>2021 3840


docs: add read only examples

Add a read only example to CI

what does adding a file to ci/ do?

@bvs-langchain rujs it in the helm-test action


Multiple origin whitelist

currently referrers are restricted to the origin (SITE_URL)
but mobile requirements mean that we need to be able to whitelist multiple domains via the supabase dashboard

@awalias close the issue please


feature: just show gifs with a height <= 400

close #17

Are there enough GIFs that bypass the filter? :)

Here is a small test case https://jsbin.com/jizipideyu/edit?js,console :)

Merged, thanks!


fix for issue #1663

Moved rendered counter increment after slicing the suggestions array.

dist not rebuilded

:+1:

 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.Viktor Mitev seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Adding sub day seconds to Date64 is ignored.

Describe the bug
The second part of add_month_day_nano is seemingly ignored, so if you try to add like an hour to a Date64Type, you actually get back the same date.
To Reproduce
This test will pass on main, but it shouldn't (added to arrow-array/src/types.rs).
#[cfg(test)]
mod tests {
    use super::*;
    use arrow_data::{layout, BufferSpec};

    #[test]
    fn add_month_day_nano() {
        let date_64 = Date64Type::default_value();
        let interval = IntervalMonthDayNanoType::make_value(0, 0, 1_000_000_000 * 3600);

        let result = Date64Type::add_month_day_nano(date_64, interval);

        // result equals date_64, but should be an hour after.
        assert_eq!(result, date_64);
    }
}

Expected behavior
For date64s adding increments less than a day should be supported.
Additional context
I think the result is from coercion to a NaiveDate instead of a NaiveDateTime. I have a working branch, I'll open a PR for... https://github.com/apache/arrow-rs/compare/master...tshauck:add-sub-day-increments-to-date64type?expand=1

See discussion on #6199


Anomally on modal save & reopen quickly

This seems to be a bug on modal pro component. Steps to reproduce:

Click to open the modal:

<button
    type="button"
    onclick="Livewire.dispatch('modal.open', { component: 'create-model' })"
>
    Open modal
</button>

Press the submit button. My code looks like:

<x-wire-elements-pro::bootstrap.modal on-submit="save">
    ...
    <x-slot name="buttons">

            <button type="submit">
                Save
            </button>

    </x-slot>
</x-wire-elements-pro::bootstrap.modal>

public function save()
{
    $this->authorize('save', $this->form->model);

    $model = $this->form->store();

    $this->close(
        andDispatch: [
            'modelSaved',
        ]
    );
}

Quickly click to open the modal again.

The error in console:
Uncaught Snapshot missing on Livewire component with id: NWq3XntmBYjxHS3l8mVr

PS: If the error doesn't appear on the first try, repeat again all the steps.

I don't use any placeholder. My modal looks like:
<x-wire-elements-pro::bootstrap.modal on-submit="store" :content-padding="false">
    <x-slot name="title">
        {{ __('Title') }}
    </x-slot>

                {{ __('Product') }}

                {{ $form->product->name }}

        ...

    <x-slot name="buttons">

            @can('delete', $form->product)
            <button type="button" wire:loading.attr="disabled" wire:click="delete">

            </button>
            @endcan
            <button type="submit" class="btn btn-tertiary btn-lg mx-2" wire:loading.attr="disabled">
                {{ __('Save') }}
            </button>

    </x-slot>
</x-wire-elements-pro::bootstrap.modal>

We also have this problem. The issue also arise when the modal is simply closed (button, click-away or ESC key). Thank you for your time. I bought the PRO license and this is a BIG issue for us

Can you provide a simple example component that reproduces the problem?
I've been unable to reproduce the issue following the steps mentioned: https://d.pr/v/Oid3ne

Please check this recording.
If needed I can provide the code related to the submitted form which contains multiple select2 elements, foreach loops, if/else conditions and alpine js code.
https://github.com/wire-elements/modal/assets/105241697/46440e75-7bba-4d04-ba79-0c834a9b43e1

Can you provide a repository with a fresh Laravel & Livewire install that reproduces the issue? There are so many factors at play due to third-party dependencies that it's very difficult to figure out the problem without having access to a working app that contains an example.

Can you provide a simple example component that reproduces the problem? I've been unable to reproduce the issue following the steps mentioned: https://d.pr/v/Oid3ne

I'm suspecting some kind of timing issue with the DOM at removal/creation of modal components...
I have identified two problems,
In the video, since your test page and test modal are very lite the issue doesn't happen. I'm pretty sure you can still recreate problem #1 with this environment by using the ESC key to close the modal and quickly click on the trigger link (as fast as you can). At some point, you will get the blurred overlay showed without the actual modal, user has to refresh page. That's problem #1 for me.
I agree this is not a real-world action for a user to do, but, it can happen. Also, we had some workflows that made it happen programmatically too.
As for problem #2 (OP's exact issue i.e. Uncaught Snapshot missing on Livewire component with id: y8ItIRaMcNPXta5npwZE), it looks like it's triggered by the same mechanism (re-opening a modal too quickly) but we only could reproduce with Big livewire components that are [as I imagine] taking more time to be evaluated client-side. If I wait 1 or 2 seconds after the modal is closed, I can always re-open it without errors. But if I click too quickly, scripting stops and outputs the dreaded error. Note that the issue also happens when another record's modal is requested (does not have to be the same trigger btn/modal).
To recap:

Problem #1: When user tries to re-open any modal too quickly. Modal doesn't pop. Blurred overlay is displayed. Script doesn't output error in console nor break. User has to refresh.

Problem #2: When user re-opens an heavy component's modal too quickly. Modal doesn't pop. Blurred overlay is not shown. Outputs error and break. User has to refresh page.

So, is problem 2 linked to problem 1? Are these big components of ours misconfigured or poorly written (hydration/datatypes/wire:keys/etc)?... maybe, probably! But is this the cause of problem 2 or not? That's what I'd like to know.
Hope it helps. I love wire-elements btw!
Thank you very much,
Jim

Thanks @jmitech
So far I haven't been able to reproduce this issue so I have an assumption about what might be going on. When all modals are closed the state is destroyed (a request is made to the server to do this). A new modal is requested before the previous request has finished, which causes the state to be destroyed after the new modal has opened. The question is, why is the request to destroy the modal slower compared to opening a new modal? Because the latter should be slower.
Would you mind checking your devtools and watch the update events and see if this is the case? For me, the open request always seems to be slower in milliseconds compared closing.
Thanks!

In my situation, this issue happens because a second modal is opened while resetState is in flight.

setActiveComponent is called to set the component and show the modal
setShowPropertyTo(false) is later called to close the modal
setShowPropertyTo invokes $wire.resetState after 300ms, which starts an HTTP request with the current component state
setActiveComponent is called to set the component and show a second modal before the request is complete
$wire.resetState's HTTP request completes and updates the component, overwriting the change that was made in  step 4, and sometimes causing corruption of the component state.

Because $wire.resetState returns a promise, it is likely possible to make subsequent setActiveComponent calls wait until it is complete first.

I've added a click throttle in v4.0.14 that might also solve this problem. It does require you to use the wire:modal or wire:slide-over directives like: <button wire:modal="assets-show, @js(['releaseId' => $release->id)">Open</button>

Hi Philo! Adding wire:modal seems to works in that scenarios!. But which is the right way to use "wire:modal" in Blade context calls? Like: Open ¿?
Thanks!

Hi Philo! Adding wire:modal seems to works in that scenarios!. But which is the right way to use "wire:modal" in Blade context calls? Like: <button onclick="Livewire.dispatch('modal.open', {component: 'edit-user', arguments: {'user': 1}})">Open</button> ¿? Thanks!

Hi Philo! Adding wire:modal seems to works in that scenarios!. But which is the right way to use "wire:modal" in Blade context calls? Like: <button onclick="Livewire.dispatch('modal.open', {component: 'edit-user', arguments: {'user': 1}})">Open</button> ¿? Thanks!

<button wire:modal="edit-user, @js(['user' => 1)">Open</button>

Dear @PhiloNL  this solution <button wire:modal="edit-user, @js(['user' => 1)">Open</button> works perfectly on the blade page, but how to use this wire:modal call from Livewire controler ?
Correctly for this scenario when i need to open new modal from backend.
$this->dispatch('modal.open', component: 'modals.users.edit-deactivated-user', arguments: ['uuid' => $this->form->user?->uuid]);
Thanks in advance
Nenad

Dear @PhiloNL this solution <button wire:modal="edit-user, @js(['user' => 1)">Open</button> works perfectly on the blade page, but how to use this wire:modal call from Livewire controler ? Correctly for this scenario when i need to open new modal from backend. $this->dispatch('modal.open', component: 'modals.edit-user', arguments: ['uuid' => 'test-1212-123-test']); Thanks in advance Nenad

Hi there! Also what if we open the modal from a non livewire page (where wire:modal directive is not available). For example like this:
            <button onclick="Livewire.dispatch('modal.open', { component: 'show-warehouses-modal', arguments: { arg1: 1 } })">
                Manage Warehouses
            </button>

I've added a click throttle in v4.0.14 that might also solve this problem. It does require you to use the wire:modal or wire:slide-over directives like: <button wire:modal="assets-show, @js(['releaseId' => $release->id)">Open</button>

Is this available on the PRO version?

I've added a click throttle in v4.0.14 that might also solve this problem. It does require you to use the wire:modal or wire:slide-over directives like: <button wire:modal="assets-show, @js(['releaseId' => $release->id)">Open</button>

Is this available on the PRO version?

Yes

Can you provide a simple example component that reproduces the problem? I've been unable to reproduce the issue following the steps mentioned: https://d.pr/v/Oid3ne

This is still an issue for us from what I can see. Can you double click (quickly) the same button in your example project that opens the modal? then when you close that modal you'll just get the blurred background and an Uncaught (in promise) Component not found:##### error in your console.

Can you provide a simple example component that reproduces the problem? I've been unable to reproduce the issue following the steps mentioned: https://d.pr/v/Oid3ne

This is still an issue for us from what I can see. Can you double click (quickly) the same button in your example project that opens the modal? then when you close that modal you'll just get the blurred background and an Uncaught (in promise) Component not found:##### error in your console.

The demo repository still uses wire:click instead of wire:modal, if you use the latter, it should solve the double click issue.


Use Differ in place of Diff.swift

I've forked Diff.swift (with the maintainer's blessing), and updated it to use Swift 4 syntax. This PR makes Bond rely on the new library, Differ.
Version 1.0.0 of Differ has been tagged, and is also available on CocoaPods.

You've saved the batch updates @tonyarnold! Also, I love the name you chose 😄
I'll update Bond to Swift 4 later today.

🎉  I'll have a look at why that's failing on Travis.


In customizing a map in Carla, there's an issue with importing OpenCRG format files associated with OpenDRIVE files.

Using RoadRunner to customize the map, a road segment's surface was customized in OpenCRG format, with the OpenCRG format surface linked to an OpenDRIVE format file. However, upon importing the map using make import, the customized surface does not appear.


Freeze of the app

SDWebImageSwiftUI causes freeze of the app in LazyVStack
this is my code of that part
ScrollView {
LazyVStack {
  CommentTextField().environmentObject(self.profileVM)

  ForEach( self.profileVM.comments, id: \.id ) { comment in
      NavigationLink(destination: VisitedProfile(userID: comment.user.id, theme: self.theme)) {
          PostSingleComment(comment: comment, theme: self.theme, toggler: self.$userFullNameColorToggler)
              .environmentObject(self.profileVM)
      }
  }

}
}
struct PostSingleComment: View {
@EnvironmentObject var profileVM: ProfileViewModel
@State private var isExpanded: Bool = false
let comment: CommentModel
let theme: Theme
@Binding var toggler: Bool
var body: some View {

    HStack( alignment: .top ) {
        WebImage(url: URL(string: comment.user.profile_image))
            .resizable()
            .aspectRatio(contentMode: .fill)
            .frame(width: 40, height: 40)

        VStack( alignment: .leading) {
            Text( comment.user.fullName )
                .foregroundColor( toggler ? Color(UIColor(red: 0/255, green: 255/255, blue: 224/255, alpha: 1)) : .white)
                .font(.custom("Avenir", size: 18))
                .fontWeight(.heavy)

            Text( comment.comment )
                .foregroundColor(.gray )
                .font(.custom("Avenir", size: 16))
                .lineLimit( isExpanded ? nil : 2)

            Button(action: {
                isExpanded.toggle()
            }) {
                HStack {
                    Spacer()
                    Text(isExpanded ? "Less" : "More")  // add to localizable
                        .font(.custom("Avenir", size: 16))
                        .foregroundColor(.white)
                        .padding(.leading, 8.0)
                        .padding(.top, 0)
                }
            }

            Text( comment.created_at )
                .foregroundColor(.gray)
                .font(.custom("Avenir", size: 14))
                .padding(.top, 8)
        }.padding(.leading)

    }.padding()
}

Known bug...Move this into #121
SDWebImageSwiftUI current version can not use with LazyStack in iOS 14. I'll investigate this issue soon.

Seems related to the iOS 14's LazyVStack, which will reset the @State for any item inside him. Which cause a recursive call to SDWebImageManager to load image again...

as I understood this can be done with changing NavigationLink to isActive: Bool
this solves this issue but its not correct solution I think

the problem is connected somehow with SDWebImageSiwftUI and navigation

@KALIMI Maybe solved by #162. Reason is in #121

Solved by v2.0.0