Add CCEnhancer

Microsoft Reviewers: Open in CodeFlow

Sha256 and URL are correct and a local winget install -m manifests\SingularLabs\CCEnhancer\4.5.6.yaml succeeds without any Windows Defender alert ; stange :/

@ath0mas Try that url instead:
https://www.winget.it/dl/2a0bc49873bffacd1681ede3abcb3e61936524f132be5684e7a474cc124a5c54/https%3A%2F%2Fsingularlabs.com%2Fdownload%2F13238%2F?&fn=ccenhancer-install-4.5.6.exe

@SoftCreatR what do you mean? I don't have a Windows Defender alert either with the installer downloaded with the url you suggest

There's no Windows Defender alert.

@ath0mas Same issue as before. Try the URL I posted above and see, if that works (it should).

@SoftCreatR Changing the URL in the manifest file?

@SoftCreatR Changing the URL in the manifest file?

Yeah.

@SoftCreatR what is the principle of this winget.it/dl.. prefixed url ?

@SoftCreatR what is the principle of this winget.it/dl.. prefixed url ?

https://github.com/microsoft/winget-pkgs/issues/1515#issuecomment-639479851


fix: support previous timezones

Support timezones like America/Buenos_Aires which are often sent by browsers in validation.
timezone_identifiers_list() currently does not contain backward compatible timezone links (see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), while the Intl extension plugin does support those when choosing TYPE_CANONICAL_LOCATION.

This seems to break the test suite. Feel free to resend this once tests are passing 👍


Shinyproxy with Flask App Prefix Issue

I have built a Flask app with some templates and static files like css, js, local csv, db, etc. And then I create a docker image for this app.
I also put this app image into my application.yml file for my shinyproxy. My shinyproxy can load my landing page without css, js, or other files because they are in different url. My Flask is looking for url_for 'statics' but the proxy can't find it.
I think Dash has a solution to config prefix so the shinyproxy can read it but how about Flask app.
Please let me know if you need more information.

Recently I had to setup a Flask app inside ShinyProxy. The information in this blog was very helpful: https://dlukes.github.io/flask-wsgi-url-prefix.html
If you are using ShinyProxy 2.5.0, you can add the following code to your app.py:
@app.context_processor
def prefix_url_for():
    prefix = ""
    if "SHINYPROXY_PUBLIC_PATH" in os.environ:
        prefix = os.environ["SHINYPROXY_PUBLIC_PATH"]
    def func(url, **args):
        res = url_for(url, **args)
        if res[0] == '/':
            res = prefix + res[1:]
        return res
    return dict(prefix_url_for=func)

Then every time you refer to a static file in your templates, you have to use:


Unable to locate package libgmp3c2

Under LinuxMint 18 (Ubuntu 16.04), cannot complete the "sudo apt-get install python-setuptools libxslt1-dev python-dev zlib1g-dev build-essential libgmp3c2 pypy-dev" line, because it can't find libgmp3c2.  Hat to try the alternative commands, because I couldn't get the python/pip setup to work for installing this utility either.

It seems libgmp3c2 has been removed from the Ubuntu packages. Try replacing it with libgmp10.

The Linux build steps should be fixed in https://github.com/wileyyugioh/kissanime_dl/commit/4f0172b556b137bb1839eb842fb843c373c7f8ab

Changes worked for me, tested on Mint18 as above.


Page doesn't scroll down on mobile.

On a mobile phone the docs here don't allow to scroll down - the currently visible item lighs up on the method list and the view is scrolled back there.

Solved


Update dockerfile to node 11 and alpine linux

The old Dockerfile was broken and bloated.
I switched it to alpine linux since the debian graphicsmagicks dependency is no longer required.
I also pinned it to node 11 because one of the dependencies failed to build on node 12.

Thanks for this, I'll take a look at it this weekend

Don't bother, removing ffmpeg and graphicsmagick without a replacement isn't gonna make this work.

My apologies for this oversight. I've added ffmpeg and graphicsmagick back and can confirm that thumbnail functionality works.

Hey guys, any chance you could give this issue some visibility?

graphicsmagick is no longer required due to the following commit.
https://github.com/WeebDev/lolisafe/commit/05c17f2dc9fcc4fc912f83558ae821ca2277ba9f
Only ffmpeg is required.

Thanks for bringing this up, I had added it because of @iCrawl's concerns. I have removed the graphicsmagick package.

This PR is now obsolete as we moved to the new chibisafe version that already includes an official docker image

This PR is now obsolete as we moved to the new chibisafe version that already includes an official docker image


Add option to sort muted streams to the bottom of the list

This may overlap with #1085, so feel free to close if so.
It would be great if there was an option that changed the sort order of streams in the left sidebar so that muted streams were always at the bottom. This would be particularly useful when a user is a member of many streams that they are occasionally pinged from, but don't actively follow the conversations (and so therefore mute them) but don't want those streams to be at the top (or intermixed, depending on the alphabetical sorting, of course) with the streams they are subscribed to and do care about.

We can think about changing this; #1085 is ancient and has a bunch of proposals, so I'd rather discuss the item on this issue than there.
I'll chat with @rishig about whether we want to offer this, but I should mention users can use "pinned streams" to organize what streams they want sorted to the top.

@timabbott Let me know if you and Rishi decide to add this option. I'm now familiar with writing features after writing three features in zulip :)


Please remove ic_launchers

the icons in the lib is cause of error:
"Gradle finished with non-zero exit value 1"

Error:Execution failed for task ':app:processDebugManifest'.

Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:22:9-43
is also present at [com.github.traex.expandablelayout:library:1.2.2] AndroidManifest.xml:13:9-45 value=(@drawable/ic_launcher).
Suggestion: add 'tools:replace="android:icon"' to  element at AndroidManifest.xml:19:5-55:19 to override.

+1

+1

it solved my problem by dasheck0's method

Glad that it helped someone. But as all of us already mentioned it should be removed so that you donÄt need this workaround.

+1


modern-uit-thesis:0.1.0

I am submitting

[x] a new package
[ ] an update for a package

This is a template intended for students to write their bachelor's or master's thesis, or any other similar document. It is styled to meet the official requirements of UiT, the Arctic University of Norway. The template is heavily influenced by this unofficial LaTeX template.

I have read and followed the submission guidelines and, in particular, I

[x] selected a name that isn't the most obvious or canonical name for what the package does
[x] added a typst.toml file with all required keys
[x] added a README.md with documentation for my package
[x] have chosen a license and added a LICENSE file or linked one in my README.md
[x] tested my package locally on my system and it worked
[x] excluded PDFs or README images, if any, but not the LICENSE

[x] ensured that my package is licensed such that users can use and distribute the contents of its template directory without restriction, after modifying them through normal use.

CC: @mrtz-j

Thanks!


Fixed #28239 in 1.10 -- Small documentation error

There is no need to send PR for each version. We'll take care of the backport if required.


Add Scope.addForeignKey()

Add ability for adding foreignkey and update readme
// 1st    fieldname
// 2nd    destination table(id)
// 3rd    ONDELETE
// 4th    ONUPDATE
db.Model(&Post{}).AddForeignKey("category_id", "categories(id)", "CASCADE", "CASCADE")

Closing this pull request and will re-submit pull request with different branch


Is there no way to run this on an Ubuntu Droplet on Digital Ocean?

I am trying to deploy this on an DO droplet running Ubuntu & Nginx. I keep running into an issue connecting to supabase.

Please move to "Help" in "Discussions" tab above - thanks!


Contracts for Token Sale and Vesting period

Request to add Token Sale contract and Vesting period contract as also mentioned in the issue: https://github.com/CosmWasm/cw-examples/issues/60

This is a nice idea, but out of scope for Confio.
Please check out github.com/InterWasm/DAO which should be taking over such projects
Also see the introduction: https://medium.com/cosmwasm/future-of-cosmwasm-ecosystem-development-ba0fc477cbc4


The Comsumption is Blank and the same for “kWh used、gross、net” etc.

Describe the bug
The Comsumption is Blank and the same for “kWh used、gross、net” etc.
Expected behavior
Fill the blank and show the right number.
How to reproduce it (as minimally and precisely as possible):
Every time for driving.
Relevant entries from the logs
teslamate_1  | 2021-07-17 17:40:45.017 car_id=1 [info] Start / :asleep
teslamate_1  | 2021-07-17 17:40:45.021 car_id=1 [info] Disconnecting ...
teslamate_1  | 2021-07-17 19:42:46.416 car_id=1 [info] Start / :online
teslamate_1  | 2021-07-17 19:42:46.423 car_id=1 [info] Connecting ...
teslamate_1  | 2021-07-17 19:43:46.816 car_id=1 [info] Driving / Start
teslamate_1  | 2021-07-17 20:12:16.768 car_id=1 [info] Fetch already in progress ...
teslamate_1  | 2021-07-17 20:12:18.416 [info] GET https://nominatim.openstreetmap.org/reverse -> 200 (1535.643 ms)
teslamate_1  | 2021-07-17 20:12:18.945 [info] GET https://nominatim.openstreetmap.org/reverse -> 200 (526.682 ms)
teslamate_1  | 2021-07-17 20:12:18.953 car_id=1 [info] Driving / Ended / 11 km – 29 min
teslamate_1  | 2021-07-17 20:12:18.953 car_id=1 [info] Start / :online
teslamate_1  | 2021-07-17 20:16:36.447 car_id=1 [info] Suspending logging
teslamate_1  | 2021-07-17 20:46:41.409 car_id=1 [info] Vehicle is still online. Falling asleep for: 33 min
teslamate_1  | 2021-07-17 21:13:31.819 car_id=1 [info] Fetching vehicle state ...
teslamate_1  | 2021-07-17 21:13:31.983 car_id=1 [info] Start / :asleep
teslamate_1  | 2021-07-17 21:13:31.988 car_id=1 [info] Disconnecting ...
teslamate_1  | 2021-07-17 21:16:12.607 car_id=1 [info] Start / :online
teslamate_1  | 2021-07-17 21:16:12.616 car_id=1 [info] Connecting ...
teslamate_1  | 2021-07-17 21:18:43.726 [info] GET https://owner-api.teslamotors.com/api/1/vehicles/1126125266413312/vehicle_data -> 408 (90.397 ms)
teslamate_1  | 2021-07-17 21:18:53.867 car_id=1 [info] Start / :asleep
teslamate_1  | 2021-07-17 21:18:53.871 car_id=1 [info] Disconnecting ...
Screenshots

Trips

Drives

If applicable, add an export of the data for the given period.
cat drives.csv
id,start_date,end_date,outside_temp_avg,speed_max,power_max,power_min,start_ideal_range_km,end_ideal_range_km,start_km,end_km,distance,duration_min,car_id,inside_temp_avg,start_address_id,end_address_id,start_rated_range_km,end_rated_range_km,start_position_id,end_position_id,start_geofence_id,end_geofence_id
1,2021-07-15 12:04:47.406,2021-07-15 13:09:26.488,31.1,82,75,-63,365.18,329.22,382.541069,415.94302,33.401951,65,1,22.9,1,1,365.18,329.22,13,10032,1,1
2,2021-07-17 05:59:36.559,2021-07-17 07:09:01.19,30.3,76,78,-52,322.88,291.16,416.015424,440.127021,24.111597000000017,69,1,23.0,1,2,322.88,291.16,10054,19745,1,
3,2021-07-17 11:43:46.49,2021-07-17 12:12:16.742,29.8,76,59,-64,288.33,274.23,440.155584,451.229021,11.073437000000013,29,1,23.2,2,1,288.33,274.23,19751,23779,,1

Environment

TeslaMate version: 1.23.6
Type of installation: Docker
OS TeslaMate is installed on: Centos
User OS & Browser: Chrome
Others: Model Y LR

Resolved by the FAQ


[5.6] Fixed failing tests

This fixes failing tests on the minimum dependencies builds. The latest version of phpunit mock objects is required.

Hmm. :/


fix(optimizer): push Apply down scalar agg.

I hereby agree to the terms of the Singularity Data, Inc. Contributor License Agreement.
What's changed and what's your intention?
PLEASE DO NOT LEAVE THIS EMPTY !!!
Please explain IN DETAIL what the changes are in this PR and why they are needed:

Summarize your change (mandatory)
We used to treat scalar agg and group agg the same when push Apply down. However this isn't true when it comes to count(*).
This pr fix this bug.
Describe any limitations of the current code (optional)
If we run TranslateApply multiple times, then Apply's left will be rewritten multiple times, but the logic of rewriting Apply's left can only be applied once. We currently rely rewrite() on returning None to remind us that left doesn't need to be rewritten, but returning None actually means left can't be rewritten now, which is an error! So we need a way to prevent us from rewriting left more than once. Maybe we can add a flag to LogicalApply but this is not that elegant........ Please take a look @chenzl25

Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] All checks passed in ./risedev check (or alias, ./risedev c).

Refer to a related PR or issue link (optional)
related #4355

Another way is to copy the specific logic of TranslateApplyRule to ApplyAggRule to deal with scalar agg where we can ensure Apply's left (called D) is legal.


Some problem about the defence detction

Hi, LOTUS is an interesting work, thank you for sharing!
I tried to reproduce the LOTUS performance of the defense method neural cleanse (settings referenced to their code) according to the configuration in the LOTUS paper. But I found that the norm values on resnet18 are NAN for all the class labels. Did I do something wrong during the operation (Maybe I need to change the configuration of resnet18_lotus? or settings of neural cleanse? )? May I ask you to release more details related to the backdoor defence experiment?

Thank you for your interest in our work!
The issue with the norm values being NaN may be due to the configuration/environment inconsistencies.
To help you better, I’ve attached our Neural Cleanse code in the misc/nc.py file. Hope that could be helpful.

Hi. Thanks for you interest and this is a good observation!!
Originally, NC is designed to detect the universal backdoor (victim can be any sample) and it works well. So if you run python nc.py --model_filepath checkpoint/clean.pt --victim -1. It should output an anomaly score as ~0.8.
In our experiment, to enhance NC's ability to detect label-specific backdoor (victim samples should be from the victim class), we only feed validation samples from the victim class and calculate the anomaly score. This could introduce false positive cases, where a clean model is detected as backdoor.
We suspect there are several potential reasons for the false positive case.
(1) The clean model itself may have natural vulnerability after training. For example, it is very easy to flip samples from Class dog to Class cat using a small adversarial perturbation. This is possible as the typical training framework does not consider robust adversarial training.
(2) The samples we select for NC are not confident. For example, some dog samples have 0.5 confidence on Class dog and ~0.3 confidence on Class cat and hence it's easy to flip the prediction.
(3) As you have mentioned, NC's early stop mechanism may stop the optimization before it is optimal or fully converged. For example, the patience=5 value is a bit small and NC will stop when the mask size is not reduced for 5 steps, but it may be reduced at the 6th step.
I think a possible and easiest solution to mitigate the false positive cases is to try different random seeds --seed and probably set a high patience such that NC could have more steps to refine its output.
Hope that could help and thanks again for your comments.

Thank you for your profound insights！ Now the Lotus attack works well on the detection method! Inspired by the impressive and interesting attack Lotus, we'll further explore the backdoor attack and defense.
Meanwhile, I noted that Lotus performed excellently on the backdoor mitigation method. May I ask you to release more detail of the experiment set for the backdoor mitigation method (in the paper Table 3) such as the source code for FP, ANP, and NAD? I would be extremely grateful for your reply.

Hi, thanks again for your continued interest! We are planning to release our mitigation method in the near future.
In the meantime, you can check out another repository of ours that contains implementations of recent mitigation techniques: OrthogLinearBackdoor

Thank you for your good advice! The view of the paper you mentioned is also interesting and pioneering. Your comments solve my problem. I'm looking forward to more backdoor attack work from you, thank you again! I'll close the question later.

Hi. Thanks for revisiting this issue and for your valuable comments!
Regarding your observations, we want to clarify a few points. In our experiments, we used specific hyperparameter settings for the baseline methods to balance backdoor removal and maintain clean accuracy. For instance, in the fine-prune (fp) method, parameters like the pruning rate were carefully chosen. If higher pruning rates or learning rates are applied, it’s expected that the ASR could be reduced further, but this often comes at the cost of clean accuracy. We apologize that we don’t have a record of the exact hyperparameter values used, but this trade-off is critical and may explain the differences in your results compared to the paper.
Additionally, to enhance the resilience of Lotus, we typically employ stronger adversarial training in trigger focusing. This strengthens the binding between the trigger and benign features, making the method more robust. Variations in results across experiments are understandable, as specific hyperparameter choices can affect outcomes. However, we believe that Lotus consistently outperforms existing methods, even if the degree of improvement varies based on the setup.
On your question about viewing Lotus as a targeted BadNet method when the partition count is one, this perspective is conceptually valid. A single partition simplifies the framework, resembling a targeted approach. However, the true strength of Lotus lies in its ability to handle multiple partitions effectively, distinguishing it from traditional methods.
We hope this addresses your questions. Thanks again for your interest and for sharing your observations.


dwmblocks (dwm patch does not compile)

Hi,
This is the first time I open an isues, I hope it done correctly.
I have challenges with the patches that must make all the functionalites accessible.
Both patches show the same error message when I compile dwm. I tried both versions of the patch according to the instructions on the github page.
This one dwm-systray-dwmblocks-6.2.diff I added on top of the systray patch.
This one dwm-systray-dwmblocks-6.2.diff i added without systray patch
This is the error message:
dwm.c: In function ‘motionnotify’: dwm.c:1215:25: error: too few arguments to function ‘unfocus’  1215 |                         unfocus(selmon->sel, 1);       |                         ^~~~~~~ dwm.c:232:13: note: declared here   232 | static void unfocus(Client *c, int setfocus, Client *nextfocus);       |             ^~~~~~~ dwm.c:1210:10: warning: unused variable ‘sel’ [-Wunused-variable]  1210 |  Client *sel;       |          ^~~ make: *** [Makefile:18: dwm.o] Error 1
Any ideas on how this can be solved?

I can't reproduce the issue with vanilla dwm 6.2. You must have used some conflicting patch. I would suggest patching vanilla dwm with systray (if you use it) patch, then using dwmblocks patch then finally using other patches. You will have to resolve conflicts yourself. Morever, I don't see any patch on suckless's site which change unfocus' definition to what your error suggests.

Ok, it was worth a try.
unfocus' definition is in the sources code. dwmblocks patch change som off lines in between @@ -1122,14 +1165,24 @@
I'm pretty sure you're doing something different than me. None of the patches go through clean. Both issue reject files, with many lines compared to the other suckless patches.
But thanks, anyway. I'm trying to find another solution on the status bar.

unfocus' definition is indeed in the source code of dwm but it only has two arguments. Your error message suggests that what you are building has one extra argument Client *nextfocus. That's what I was talking about. Anyway good luck.


add ID to row/col headers; bump version numbers

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.05%) to 91.484%

Totals

Change from base Build<PHONE_NUMBER>:
0.05%

Covered Lines:
259

Relevant Lines:
281

💛  - Coveralls


Dark mode

[ ] Back button is not visible

[ ] I have entered Seed but it is not visible

[ ] Node settings details are not properly visible

Resolved,

Verified this issue on keeper app v 1.1.7(259)


undefined local variable or method `result_batch_size

Trying to run jasmine:ci with phantomjs and jasmine-2.1.0, I get the following error:
jasmine server started.
rake aborted!
NameError: undefined local variable or method `result_batch_size' for #<Jasmine::Runners::PhantomJs:0x000000023455b0>

thanks for the @yhager.  Do me a favor and try this in your gemfile: gem 'jasmine', github: "pivotal/jasmine-gem", ref: '579dba6'  I beleive there's some code I need to update to make them work well in the newer versions

same result


doc: Add memory tuning section to user guide

Which issue does this PR close?

Closes https://github.com/apache/datafusion-comet/issues/595
Rationale for this change

What changes are included in this PR?

How are these changes tested?

Merged. Thanks @andygrove @comphead

Am I correct in assuming I don't have to increase spark.executor.memoryOverhead or spark.memory.offHeap.size when using Comet, only spark.comet.memoryOverhead? How does this interact with YARN memory management?

spark.comet.memoryOverhead configures the memory pool size for native execution. it is not the same as spark.executor.memoryOverhead or spark.memory.offHeap.size.
For YARN memory management, the YARN container respects the spark.executor.memoryOverhead and the Comet override this value in CometDriverPlugin
sc.conf.set(EXECUTOR_MEMORY_OVERHEAD.key, s"${execMemOverhead + cometMemOverhead}M")

If Comet CometPlugin is configured to be used, it will update Spark executor overhead based on the config value spark.comet.memoryOverhead etc. But I don't test it on YARN, not sure Spark plugins comes in before YARN's resource configuration. You probably can test it.

@comphead Hm, interesting, I tried launching the container with and without specifying spark.comet.memoryOverhead and YARN reported the same amount of memory allocated to my application. I'll check again tomorrow with debug enabled, hopefully I'll see this: https://github.com/apache/datafusion-comet/blob/acb78280e495079312a1067b80e91671852389a5/spark/src/main/scala/org/apache/spark/Plugins.scala#L63C7-L63C14

@comphead Hm, interesting, I tried launching the container with and without specifying spark.comet.memoryOverhead and YARN reported the same amount of memory allocated to my application. I'll check again tomorrow with debug enabled, hopefully I'll see this: https://github.com/apache/datafusion-comet/blob/acb78280e495079312a1067b80e91671852389a5/spark/src/main/scala/org/apache/spark/Plugins.scala#L63C7-L63C14

@orthoxerox please try it with applying a separate plugin
--conf spark.plugins=org.apache.spark.CometPlugin


Replace comparator strings with an enum

When comparing Series or filtering with df.F, the comparator should be moved to a string/int enum for maintainability, clarity and better type safety.
type Comparators string
const (
    Eq Comparators = "eq"
    In Comparators = "in"
    ...
)

Done as of commit cb0eba204808842a34838fd909c36369c5cb7711


Converting instrument activations to segments?

I re-read the medleydb paper, and it doesn't actually say how the instrument segment annotations were computed from the activation functions.  Is it just threshold at 0.5 and then run-length encode samples to intervals?  Or is there some smoothing involved?

Is it just threshold at 0.5 and then run-length encode samples to intervals?

Yes exactly. No smoothing.

Rounding activations is often a lot worse than using some threshold on the first-order derivative (i.e. peak picking) to determine local max/min, no? This for example, is really good IMO (even without smoothing).


Created Method page, linked all pages to it, and added new stylesheet

Created Method page, linked all pages to it, and added new stylesheet

Thanks, looks good to me. merging


Add a way to add/remove coins

First of all, thank you for building it, it's really nice!
Currently the list is in fixed size and there's no way to keep coins.length !== 6, it would be nice to have a way to add and/or remove coins.

Thanks, @lucasbento, will look into a good solution for that.

@lucasbento fixed this in the new release

@geraldoramos: nice, thanks!


Add MQTT-Kafka bridge

Describe the solution you'd like
Since external solutions still rely on MQTT, we need an bridge to convert MQTT Messages <-> Kafka Events.
This bridge could be a Kafka plugin or an seperate microservice

It might also make sense to communicate between distant kafka brokers (one the factory, one in the cloud somewhere) via MQTT because one does not want to share all data between factory and the cloud. No fixed opinion here, just throwing it into the idea bucket.

It might also make sense to communicate between distant kafka brokers (one the factory, one in the cloud somewhere) via MQTT because one does not want to share all data between factory and the cloud. No fixed opinion here, just throwing it into the idea bucket.

This should be possible by setting it up like this:
Stack 1 [Internal communication in Kafka] -> [MQTT-Kafka-Bridge] -> Some MQTT Broker (ex: In azure or on premise at stack 1 / 2) -> [MQTT-Kafka-Bridge] -> Stack 2 [Internal communication in Kafka]

We might want to have some kind of config to control which MQTT/Kafka messages will be bridged.

Blocked by #674


fix(agent): added image name/tag to grpc status

Crane only sent image name/tag on the HTTP interface. Added them to the gRPC interface as well.

Codecov Report

Merging #110 (99572dd) into develop (9c1fe29) will decrease coverage by 0.02%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           develop    #110      +/-   ##
==========================================
- Coverage     6.29%   6.27%   -0.03%
==========================================
  Files           62      62
  Lines         4450    4465      +15
==========================================
  Hits           280     280
- Misses        4166    4181      +15
  Partials         4       4

Impacted Files
Coverage Δ

agent/internal/mapper/grpc.go
0.00% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Fragments in a viewpager not being themed properly.

I have three fragments in a FragmentStatePagerAdapter almost done exactly like the demo project, however none of the fragments are theming properly. The parent activity is themed properly and the primary and accent colors are working however the ?backgroundColor attribute is not.
https://github.com/ItsCalebJones/SpaceLaunchNow-Android/tree/dev-new-ui/mobile/src/main/java/me/calebjones/spacelaunchnow/ui/launchdetail
        <com.google.android.material.card.MaterialCardView
            android:id="@+id/summary_card"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/material_card_edge_margin"
            android:animateLayoutChanges="true"
            android:padding="@dimen/material_card_edge_margin"
            android:visibility="visible"
            app:cardBackgroundColor="?backgroundColor"
            card_view:cardCornerRadius="4dp"
            card_view:cardElevation="@dimen/material_card_elevation_resting"
            card_view:cardPreventCornerOverlap="true"
            card_view:cardUseCompatPadding="true">

It seems to be very similar to https://github.com/jaredrummler/Cyanea/issues/41 where at runtime calling getCyanea() can return the correct colors which means I could manually set the colors for each view, however that defeats the purpose of a clean library.
Notice cardBackground is using correct dark styling:

Now a fragment inside the viewpager is not using correct dark styling:

From the fragment if I call the getBackground I can then set that color, but I'd also need to set all textViews as they are not being styled properly either.

Ok i've somewhat reproduced the issue in the demo app:
Setup: Build the app and change the theme around.
https://github.com/ItsCalebJones/Cyanea/commit/6d9d6781c69adf45edb675ab02ed141a503b4a51

Launch the app
Tap the Chipgroup to start the DupMainActivity
Card background color should match the view that is colored at runtime.

Actual Results:
Occasionally - the cards view is some other color.

Any chance this could get looked at? As an explanation - the entire Background Color card in the screenshot above should be #00000 however the card is rendered with the default dark color.


⚠ Bofrost.at has degraded performance

In daeb593, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1855 ms

Resolved: Bofrost.at performance has improved in c8d2bb7 after 14 minutes.


New crates.io release?

Possible to do a new crates.io release soon?
Been 8 months since the last one and there are a few merged PRs that we would like to use in a published release

Soon! Please see https://github.com/graphql-rust/juniper/issues/737


Fix space inconsistency inserting emoji

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/21584
PROPOSAL: https://github.com/Expensify/App/issues/21584#issuecomment-1608765208
Tests

Open any chat
Insert emoji using different methods, short code i.e :smile:, opening emoji picker
Verify that space is added after the emoji if the cursor is at the end of the text

[x] Verify that no errors appear in the JS console

Offline tests

Same as tests
QA Steps

Same as tests

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

https://github.com/Expensify/App/assets/75031127/344556a9-45a9-4b4e-9e38-ea5e138d5882

Mobile Web - Chrome

https://github.com/Expensify/App/assets/75031127/8c333c33-0a00-46e6-b2f4-25e82f73807b

Mobile Web - Safari

https://github.com/Expensify/App/assets/75031127/3a2ba282-e7c9-43f3-a950-451b8edd7d8c

Desktop

https://github.com/Expensify/App/assets/75031127/9246cb10-5a76-4612-8c2b-0e9fe42a9757

iOS

https://github.com/Expensify/App/assets/75031127/527cb4e1-8281-4144-89dc-211bad0a3899

Android

https://github.com/Expensify/App/assets/75031127/bb51f7b2-60f4-4f56-83c2-017d5e174b8a

@getusha based on you video in web - last test - when you have a text before emoji - and insert during typing - i do not see space after it, can you please double check?

@narefyev91 i did that intentionally because i think we only need to add the space if there is no text after it. Can you confirm if we want the space without the above condition?

i think we should - because when you choose an emoji in dropdown or while typing pressing enter - it will add space

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/28352309/51227d7e-a1fe-4083-bc37-4132e289fb63

Mobile Web - Chrome
https://github.com/Expensify/App/assets/28352309/76732a0c-f559-4a07-b8fc-4e5259aa67b6

Mobile Web - Safari
https://github.com/Expensify/App/assets/28352309/8c3ac834-b062-4e05-a189-f15e4202e392

Desktop
https://github.com/Expensify/App/assets/28352309/0003130e-cb4c-4e06-8868-13db0234725a

iOS
https://github.com/Expensify/App/assets/28352309/b71ff231-060a-4a10-b68a-0f9222601534

Android
https://github.com/Expensify/App/assets/28352309/797caf4a-7bfa-4373-9f70-f4f3be9aff61

Thanks for the quick turnaround everyone!

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/luacmartins in version: 1.3.35-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Julesssss in version: 1.3.35-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Julesssss in version: 1.3.35-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Deliverable Planning Meeting, Scheduled, Sunday, October 15, 6:30 pm, Discord

Topics

[x] Review Hazard Analysis rubrics.
[ ] Breakdown tasks.
[x] Prepare questions for TA review session on Monday.

Attendance

[x] @qstommyshu
[ ] @yex33
[ ] @marischan888
[ ] @jiaoa3
[ ] @KehaoHuang

Tasks

[ ] Close SRS peer review issues.
[ ] SRS formatting: page numbers.
[ ]


[Bug]: Linter execution does not report the issues

Bug description
Github actions linter detects the issues but failed to put PR comment, when PR is created from forked repository.
There are also silently failed, but job is finished successfully, the linter execution.
We can observe the log in the inter job of PR# https://github.com/miurahr/aqtinstall/actions/runs/12384038278/job/34567887945
Expected behavior
Successfully put PR comment.
aqt and python version
N.A.
Operating System
Linux/Unix
Relevant log output
time=2024-12-18T00:40:06.471Z level=INFO msg="reviewdog: [start] runner=pylint"
time=2024-12-18T00:40:06.472Z level=INFO msg="reviewdog: [start] runner=flake8"
time=2024-12-18T00:40:06.472Z level=INFO msg="reviewdog: [start] runner=mypy"
time=2024-12-18T00:40:10.588Z level=INFO msg="reviewdog: [finish] runner=flake8"
time=2024-12-18T00:40:13.991Z level=INFO msg="reviewdog: [finish] runner=mypy\terror=exit status 1"
time=2024-12-18T00:40:16.782Z level=INFO msg="reviewdog: [finish] runner=pylint\terror=exit status 30"
aqt/metadata.py:279:24: [mypy] error: Call to untyped function "Version" in typed
aqt/metadata.py:575:23: [mypy] error: Call to untyped function "Version" in typed
aqt/metadata.py:1012:69: [mypy] error: Call to untyped function "Version" in typed
Error: [mypy] reported by reviewdog 🐶
error: Call to untyped function "Version" in typed

Raw Output:
aqt/metadata.py:279:24: error: Call to untyped function "Version" in typed
Error: [mypy] reported by reviewdog 🐶
error: Call to untyped function "Version" in typed

Raw Output:
aqt/metadata.py:575:23: error: Call to untyped function "Version" in typed
Error: [mypy] reported by reviewdog 🐶
error: Call to untyped function "Version" in typed

Raw Output:
aqt/metadata.py:1012:69: error: Call to untyped function "Version" in typed
aqt/metadata.py:279: [pylint] Line too long (101/100) (line-too-long)
aqt/metadata.py:279:8: [pylint] Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)
aqt/metadata.py:574:4: [pylint] Missing function or method docstring (missing-function-docstring)
aqt/metadata.py:576:12: [pylint] Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)
Error: [pylint] reported by reviewdog 🐶
Line too long (101/100) (line-too-long)

Raw Output:
aqt/metadata.py:279:0: C0301: Line too long (101/100) (line-too-long)
Error: [pylint] reported by reviewdog 🐶
Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)

Raw Output:
aqt/metadata.py:279:8: R1705: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)
Error: [pylint] reported by reviewdog 🐶
Missing function or method docstring (missing-function-docstring)

Raw Output:
aqt/metadata.py:574:4: C0116: Missing function or method docstring (missing-function-docstring)
Error: [pylint] reported by reviewdog 🐶
Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)

Raw Output:
aqt/metadata.py:576:12: R1705: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I made one improvement but ran into a Github Large File Storage issue:
Fetching LFS objects
  /usr/bin/git lfs fetch origin refs/remotes/pull/857/merge
  fetch: Fetching reference refs/remotes/pull/857/merge
  batch response: This repository is over its data quota. Account responsible for LFS bandwidth should purchase more data packs to restore access.
  Error: error: failed to fetch some objects from 'https://github.com/miurahr/aqtinstall.git/info/lfs'

https://github.com/miurahr/aqtinstall/actions/runs/12404468523/job/34629662056

@miurahr this looks like something you just changed
9f495dbb .github/workflows/check.yml      (Hiroshi Miura 2024-12-17 11:18:20 +0900 23)         lfs: true

Thanks for my head up for the billing issue.

I don't know why but bandwidth is exceeded. I want to drop LFS configuration and items in it.

Now I think the master branch disables LFS.  Please check a head of master branch.


fix: correct ssh-keys:add warnings

ansible is already a Jinja2 expression, remove extra {{}}
tests as filters are deprecated "|" changed to  "is"

References:
When statement is a Jinja2 expression

Jinja tests used as filters deprecated

Can you manually verify this works? The jinja2 expression change didn't work for me previously...

I manually verified the final or clause by running the following script below and by ssh-ing to the dokku server's authorized_keys at /home/dokku/.ssh/authorized_keys. I ran the script and saw that it was added once only - if you force it by commenting out the when it clearly errors (but doesn't add a duplicate key). I edited the authorized_keys file to remove the key to retest.
---
- hosts: all
  roles:
    - ansible-dokku
  vars:
    ansible_user: root
    ansible_python_interpreter: /usr/bin/python3
    dokku_version: '0.15.2'
    dokku_users:
      - name: test_me
        username: test_me
        ssh_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
    dokku_skip_key_file: false
  become: yes

  pre_tasks:
    - name: Update apt cache if needed
      apt: update_cache=yes cache_valid_time=3600

ansible-playbook playbook.yml --inventory hosts.ini --tags dokku-ssh-keys

PLAY [all] *************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************
ok: [example.com]

TASK [ansible-dokku : sshcommand list dokku] ***************************************************************************
ok: [danna.bcs.io]

TASK [ansible-dokku : dokku ssh-keys:add] ******************************************************************************
skipping: [example.com] => (item=None)
skipping: [example.com]

PLAY RECAP *************************************************************************************************************
example.com               : ok=2    changed=0    unreachable=0    failed=0

There was also a thread about this change and one of the questions was similar to yours:
when: "redis_is_installed.stdout.find('v={{ redis_version }}') == -1"
#  changed to
when: "redis_is_installed.stdout.find('v=' ~ redis_version) == -1"
# the tilda is a string concat apparently

The filter '|' to 'is' changes I don't know how to test but they don't stop the script working.
I am happy to run any further suggested tests.

Really what we should do is create a library for interacting with ssh-keys instead of this hokey jinja2 code...
Regardless, as long as it works, thats good enough for me :)


Understand impact of batching

In general batching is considered good for performance because it can help reduce the number of roundtrips to the database, however understanding more its impact across different database could help us prioritize when to use it and the addition of APIs.
E.g. this would help inform the prioritization of

https://github.com/aspnet/EntityFrameworkCore/issues/10465 Perf: provide a way to batch the generated commands for a complex query
https://github.com/dotnet/corefx/issues/3688 Better API for ADO.NET command batching
https://github.com/dotnet/corefx/issues/8954 Retrieving records affected by statement

Some questions we would like to address/answer:

Concatenated SQL in a SQL command vs. proper multi-statement per network packet support: Depending on the server and protocol capabilities, the first leads to either parsing and splitting the query on the client or to polluting the server's query cache. The second one you can still send multiple statements in one network roundtrip but using an API that allows to collect the individual SQL queries and parameters without stitching them together, which avoids having to parse the SQL on the client and polluting the cache on the server.
How does this affect different database? We need to measure. We know that PostgreSQL could use this and that SqlClient has the basic capability but only when you use DataAdapter APIs (see https://blogs.msdn.microsoft.com/dataaccess/2005/05/19/does-ado-net-update-batching-really-do-something/), therefore things like EF Core can only use concatenated SQL approach.

Multiple calls to ExecuteReader vs. one call to ExecuteReader and multiple calls NextResult: For reading scenarios batching can help too. To understand how much, we would need to measure. ADO.NET already has the right APIs but the question is how much we should be using it in our higher-level APIs. We have precedent in NHibernate's future queries. For things like EF Core this could be used automatically when we generate multiple queries, or we could come up with a similar API to future queries.

Proper multi-statement per network packet is a good choice. We are using System.Data.SqlClient.SqlCommandSet but it is internal. Thanks to NHibernate we are using exactly this implementation.
This solution give us big improvement in performance even if we sending just few records (from 5 statements and higher is unbeatable). Unfortunately for us ASP.NET Core doesn't have that implementation.


Can't type polish letter ż with "Polish Pro" keyboard layout on Windows

In short, Right Alt + Z on a Polish Pro keyboard layout will trigger an event with:
{
  ctrlKey: true,
  altKey: true,
  ...
}

which is caught by the undo manager.
This article from Medium Engineering goes into more details on why this happens.
I've forked Scribe and will be providing a Pull Request with the fix. Can't currently install Scribe tests because of this: https://github.com/guardian/scribe-test-harness/issues/26

Anyways, the fix is in https://github.com/guardian/scribe/blob/a62186405271aa52c131ab8313a4f5f027096d6d/src/plugins/core/commands/undo.js#L22.
The line becomes:
if (! event.shiftKey && (event.metaKey || (event.ctrlKey && !event.altKey)) && event.keyCode === 90) {
(same should be done to redo.js)

+1
Maybe it could/should be solved more systemically? There are many more IMEs that use AltGr (that Windows interprets as Ctrl + Alt), including UK IME...

@paperboyo I can't find any other references to event.ctrlKey in the code which might preventDefault() except the two in Undo/Redo, so I'm assuming all other AltGr combos should work by default.

Thanks, @danburzo!


symlink'd clients no longer attaching/connecting

Description
After updating to latest on master (commit: 90c1c6cc822b1836209514c096069b9bbeab63d9), gopls will not attach. If I revert 90c1c6cc822b1836209514c096069b9bbeab63d9 back to the previous commit, gopls attaches properly.
Looks like 90c1c6cc822b1836209514c096069b9bbeab63d9 introduced a regression.

@dundargoc

@seanenck I need more info. I can't recreate this problem. What project/file are you using?

It appears to be because on my system gopls in $PATH is actually a symlink to gopls itself (outside of path). This will happen for any go project related where gopls was working properly previously.
I was able to also reproduce this was efm-langserver too - which is not a symlink (by default) in my $PATH. If I create a symlink to efm-langserver and make sure it will resolve first via $PATH it will also not attach
Reproduction (I can do this on my system easily):

Open a nvim instance against a configured filetype and verify a working/attached client via checkhealth (e.g. efm-langserver)
Create a symlink to the LSP executable (e.g. ln -sf /usr/bin/efm-langserver efm-langserver)
Update path (e.g. export PATH="$PWD:$PATH")
Open a nvim instance against a configured filetype and verify there is no working/attached client via checkhealth.

Additional data points, simple nvim config snippet:
print((vim.loop.fs_stat("/home/enck/.local/bin/gopls") or {}).type == 'file')
print((vim.loop.fs_stat("/home/enck/.local/bin/gopls") or {}).type == 'file')
print(vim.fn.getftype("/home/enck/.local/bin/gopls") == 'file')

will provide me:
true
true
false

(/home/enck/.local/bin/gopls is a symlink)

I guess it return link not file could you try use vim.fn.getftype(vim.fn.resolve("/home/enck/.local/bin/gopls")))
  if (os_fileinfo_link(fname, &file_info)) {
    uint64_t mode = file_info.stat.st_mode;
    if (S_ISREG(mode)) {
      t = "file";
    } else if (S_ISDIR(mode)) {
      t = "dir";
    } else if (S_ISLNK(mode)) {

Thanks for the follow up. Interesting, so fs_stat doesn't make a distinction between symlinked files and regular files while getftype does. I think the most straightforward fix would be to just revert the commit?

It does seem like vim.fn.getftype provides a more specific response than fs_stat. It's likely either revert the changes or make sure to check all the possible types of interest returned from vim.fn.getftype (e.g. file and link, I'm not sure if any of the other possible responses are valid in some places or not)

for reference vim.fn.getftype(vim.fn.resolve("/home/enck/.local/bin/gopls"))) does report "file"

I have root caused this.
The actual commit that caused this problem for my setup is 86dcd4d4ec014c5cb47033c52a54508acd503b97
I am using util.path.is_file to verify an lsp client executable exists before it is allowed to be used. That is fine (even though I understand it is now deprecated and I need to change my config). The problem, which probably should be fixed, is that when util.path.is_file was deprecated, it was also altered and therefore causes my symlink to not resolve.
Current state:

I will update my own config to fix my use of a deprecated function
It seems like either part of 86dcd4d4ec014c5cb47033c52a54508acd503b97 should be reverted or that the new (but still deprecated) util.path.is_file function would need be fixed.

when util.path.is_file was deprecated, it was also altered and therefore causes my symlink to not resolve.

how is that possible? the old version was:
  local function is_file(filename)
    local stat = uv.fs_stat(filename)
    return stat and stat.type == 'file' or false
  end

the "altered" version is:
function M.path.is_file(path)
  return (vim.loop.fs_stat(path) or {}).type == 'file'
end

does changing the new version to this fix your issue?
function M.path.is_file(path)
  local stat = uv.fs_stat(path)
  return stat and stat.type == 'file' or false
end

@justinmk
I was continuing to poke at this and was editing my comment above. I see now exactly what happened to this situation...
prior to 86dcd4d4ec014c5cb47033c52a54508acd503b97, util.path.is_file is fine:
# true
local stat = vim.uv.fs_stat('/home/enck/.local/bin/gopls')
print(stat and stat.type == 'file' or false)

as-of 86dcd4d4ec014c5cb47033c52a54508acd503b97, util.path.is_file is still fine:
# true
print((vim.loop.fs_stat('/home/enck/.local/bin/gopls') or {}).type == 'file')

and then 90c1c6cc822b1836209514c096069b9bbeab63d9, util.path.is_file is no longer fine
# false
print(vim.fn.getftype('/home/enck/.local/bin/gopls') == 'file')

I did not realize until after posting my last comment that 90c1c6cc822b1836209514c096069b9bbeab63d9 was actually also altering the deprecated util.path.is_file call (so it has been changed 2 times in the last few days) and falsely thought that when 86dcd4d4ec014c5cb47033c52a54508acd503b97 was implemented it resulted in the format it is in today.
So 90c1c6cc822b1836209514c096069b9bbeab63d9 should likely be reverted specifically for util.path.is_file


PresentationConfiguration has no public initialisers.

At the moment it is not possible to use PresentationPresenter for custom UIViewController, not for AnimatableModalViewController. The problem is first in var presentationConfiguration of PresentationPresenter, which is not public and is not assignable, but required to be non nil if you want to use PresentationPresenter. Second thing that PresentationConfiguration has no public initialisers, so it is not possible to create it outside of the module and assign it to var presentationConfiguration of PresentationPresenter

That's normal, if you want to use a PresentationConfiguration directly, you have to pass by PresentationPresenterManager's retrievePresenter since it will handle a cache for you,
Side notes: as talked in #363, even if we let access to these classes, we don't encourage you to use them. If possible, you should directly use PresentationPresentedViewController to make your custom presentation.

As far as i can see PresentationPresenterManager creates PresentationPresenter with presentationConfiguration = nil. So it is not usable as UIViewControllerTransitioningDelegate until you assign some presentationConfiguration. AnimatableModalViewController assigns presentationConfiguration in its setupPresenter method which is internal.

My bad, I misread your question. I will need more input about your context. Why don't you want to use AnimatableModalViewController directly? Can you give us a concrete example of how you will use this flow if we add a public initialiser to PresentationConfiguration?

I have view controller from another framework, so i can not subclass AnimatableModalViewController. But i want to use PresentationPresenter features to allow presentation features of it in my view controller.

I understand now, that's make sense! I ended opening the project and realise that's an implementation error. I mixed up the usage of the presentation feature 😆
Just pushed #402, if you want to give it a try, it should solved your issue.

var presentationConfiguration: PresentationConfiguration? in PresentationPresenter should be also public to be able to set it

@mikhailmulyar thanks for reporting that. We I always think more about how to use IBAnimatable in Interface Builder, not programmatically, especially how to customize UI elements.
@tbaranes thanks for responding that quickly, you make the project better and better 👍.


HAI-2730 Use the same map levels as kartta.hel.fi

Description
There's a simple way to use the same map levels as kartta.hel.fi when zooming in and out. Kartta.hel.fi exposes the 'Karttasarja' map layer, which has different maps for different zoom levels.
Jira Issue: https://helsinkisolutionoffice.atlassian.net/browse/HAI-2730
Type of change

[ ] Bug fix
[ ] New feature
[x] Other

Instructions for testing
Open any map view and zoom in.
Checklist:

[ ] I have written new tests (if applicable)
[ ] I have ran the tests myself (if applicable)
[ ] I have made necessary changes to the documentation, link to confluence
or other location:

Other relevant info
Some refactoring (at least renaming the TileLayer) should be done before merging.

The 'Karttasarja' layer uses a different map type for the 2nd closest map. It shows the property numbers and boundaries, but we want the version without them. A perfect map layer doesn't exist in the map service.


Add expire_at to topic message for rabbitmq topic

I am not sure how to test this.

@isra17 ready for review


scheduling notifications on Android without USE_EXACT_ALARM permission

Is it possible to schedule a notification at an inexact time so that you don't have to add either the android.permission.SCHEDULE_EXACT_ALARM or android.permission.USE_EXACT_ALARM permission to your AndroidManifest.xml file?
https://github.com/rafaelsetragni/awesome_notifications#-scheduling-a-notification discusses needing this permission for precise notification times, but I did not find details on how to schedule a notification for an imprecise time.
Currently, when I use AwesomeNotifications().createNotification specifying
schedule: NotificationCalendar.fromDate(           preciseAlarm: false, date: DateTime(now.year, now.month, now.day, now.hour, now.minute+1))
I get an error saying my project "needs to hold android.permission.SCHEDULE_EXACT_ALARM or android.permission.USE_EXACT_ALARM to set exact alarms."

Can you share here how are you creating your schedules?

I'm testing with your example app.  I've removed the    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/> from the Android Manifest and trying to tap on the second button which calls your scheduleNewNotification() method.

Im currently implementing a new feature to set the delayTolerance, and for these cases the schedule will not be exact. It will be available on next release.

Hi @floriandootz and @jweidner-mbible, i just uploaded the new release versions of 0.7.5-dev.2+1 versions of awesome_notifications and awesome_notifications_fcm to fix this issue. Please, check it out to see if this issue is solved on these new versions.
Also, don't forget to join in your Discord Beta team to request fixes and new updates.


Demo link on librechat.ai points to expired  librechat.cfd domain

The Demo link in the header points to an ad infested domain parking site - probably because the domain expired:
https://demo.librechat.cfd/

You can use this url to access our demo: https://chat.librechat.ai/
we'll update the link on the website soon


Support for streamz.cc

Checklist

[x] I'm reporting a new site support request
[x] I've verified that I'm running youtube-dl version 2020.03.08
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that none of provided URLs violate any copyrights
[x] I've searched the bugtracker for similar site support requests including closed ones

Example URLs

Single video: https://streamz.cc/y7b281904e2ba747d2ffbec7aaa094b98

Description

Streamz.cc is a streaming provider.

File not found, sorry!


Is separete BOM required or might merge into ets-common be more practical?

It shall be discussed if
https://github.com/opengeospatial/teamengine-bom/
is really required or if it could be merged into
https://github.com/opengeospatial/ets-common/.
This would reduce number of Maven projects to be maintained.

Possible dependency graphs:

third party libraries (and e.g. geomatics-geotk) <-- teamengine <--- ets-common <-- test suites <-- cite

third party libraries (and e.g. geomatics-geotk) <--teamengine-bom <-- teamengine  <-- test suites <-- cite
<-- ets-common <--

For now, BOM will be merged into ets-common.
New issue: https://github.com/opengeospatial/ets-common/issues/10


replace rollup-plugin-off-main-thread dependency

build: update package-lock.json to have a clean state
Prior to creating a pull request, please follow all the steps in the contributing guide.
Fixes #3328
Includes #3323
Replaces rollup-plugin-off-main-thread to fix some security vulnerabilities.

Any news on this one?


Revert error list

The English translations are not really good, so let's revert to how it was initially, it's not really worth doubling the size of the error-list
Here's a google sheet with English messages computed with google-translate:
https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vTApl1UQhII8swczi81J5Hfz951p0GcPIwOkRwDnmCbt3Jsv-cFN7dkqZtQVsTtgfgWJl000CBqOY1W/pub

reopening


Alluxio read much data than expect, even point offset and len args

Is your feature request related to a problem? Please describe.
In Alluxio, I want to read part of file by using alluxio-fuse. There are many records in a single file and file size is about 2GB. When I randomly read the record, I notice alluxio will download much data from remove server than I request.
According to:
https://github.com/Alluxio/alluxio/blob/47dfd7ad717dbdbe7556e977252358a256b85a16/core/client/fs/src/main/java/alluxio/client/block/stream/BlockInStream.java#L372-L384
Even I put correct record offset and length, each read op will read from the record offset in the block to the end of the block.
Describe the solution you'd like
Can we provide a config or API to only read the data we wanted and not download the whole block.

@gpang @calvinjia @apc999 Can your guys help to take a look? Thanks in advance.

close and move to #11216, more like a bug


Refactoring query tests so that they are run both synchronously and asynchronously.

Tests are now Theories, not Facts and take a single parameter bool isAsync. Some tests got converted from sync to async so this will cause compilation errors for the providers who override those tests (e.g. to verify SQL)

    public abstract Task AssertAnyWithPredicate<TItem1, TPredicate>(

Same here

Refers to: src/EFCore.Specification.Tests/TestUtilities/QueryAsserterBase.cs:221 in 89f2766. [](commit_id = 89f2766a215d7aaa37c8e6f44f45a3527b9a9047, deletion_comment = False)

This is already merged


added details,pattern,photo,screenshot

@satkar2001 You have created multiple patterns [focus on the Contibutors.md file]...for that, I have updated the rules for a successful PR...please modify accordingly and I'll merge it then...be sure to fetch the updated repo before any changes to escape from any conflicting errors


Fatal Error on Install of Fresh SS4alpha5

I'm getting the the folloeing error in alpha 5 (both on upgraded aplha4 and fresh install)
Fatal error: Uncaught exception 'MJS\TopSort\CircularDependencyException' with message 'Circular dependency found: modelascontrollerroutes->mysite->modelascontrollerroutes' in /Applications/MAMP/htdocs/ss4test/vendor/marcj/topsort/src/CircularDependencyException.php on line 34

Installing on MAMP4 php 5.6.28 and php 7.0.13

Do this:
https://github.com/silverstripe/silverstripe-framework/pull/6684/files

Closing as a duplicate of https://github.com/silverstripe/silverstripe-framework/issues/6700, thanks for reporting


Added softfloat dependency and interface header

Added the softfloat library dependency to build scripts and a interface header file for it.  This is for arhag to start his work, this is also in preparation for softfloat injection.

Should we be considering making this a submodule instead?

Because Bucky had to customize softfloat (build files) we can include a copy in our repo.  We can refactor it into our own fork of softfloat later.


Add upserting and deletion capability to PGVector

Currently, the PGVector vectorstore only supports adding embeddings to the store. This PR adds upserting and deletion capability to the store, so you can update existing embeddings if the underlying text have changed. This is useful if you have indexed a set of documents but some of the documents are being changed and you want to keep the index up-to-date.
To use this feature, simply provided ids for all texts/or documents. The pgvector notebook has been updated accordingly.
The fixes issue #6866.
👀  @rlancemartin, @eyurtsev
In case you want to announce on Twitter, my Twitter handle is @angelol

@angelol Hi , could you, please, resolve the merging issues? After that ping me and I push this PR for the review. Thanks!

Closing because the PR wouldn't line up with the current directory structure of the library (would need to be in /libs/langchain/langchain instead of /langchain). Feel free to reopen against the current head if it's still relevant!


Migration for hub_id to home_id on aircraft/subfleet

Rename it

Maybe base_id 😄
This will/may also need relationship and controller changes


Exclude at least one account from phone-based multi-factor authentication and Azure Security Defaults?

Your recommendation is that I exclude at least one account from MFA. How can I do this on a Tenant with Security Default only? So, without any other Azure P1 or Azure P2 License?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: fff5de5d-9a97-73ff-4694-79027720b5c3
Version Independent ID: 566a8387-bbdd-8e35-13cc-f2d891bd5608
Content: Manage emergency access admin accounts - Azure AD
Content Source: articles/active-directory/roles/security-emergency-access.md
Service: active-directory
Sub-service: roles
GitHub Login: @markwahl-msft
Microsoft Alias: rolyon

@MariusWeiss
Thanks for your feedback! We will investigate and update as appropriate.

#reassign:MicrosoftGuyJFlo Exclusions are not available in security defaults so these procedures would not apply. This is something you should be aware of if you are using security defaults. #please-close


Bug: npm install fails

Fetch the latest repo, and run npm install
Get the following error:
No matching version found for<EMAIL_ADDRESS>

What are your system specs?

The same happens for me I'm using Mac mini (M1, 2020)

I also use an M1. For me I have to do run my terminal in Rosetta compatibility mode.

Macbook Pro 2017
MacOD Mojave 10.14.6

I failed several times to install using npm, but, yarn is fine

What version of npm are you using? can you try running npm --version?

Upgrading npm from 6.14.13 to 8.7.0 with
npm install -g npm@latest


Many of the functions have not been error handled : /

Apparently, I have to look at references to see how to handle errors in Rust. It's kinda different to how we do it in Golang : ) . However, will do it after implementing other functionalities.

@shubhexists love the project idea, let me take this one up for existing functions

Also found out code is not modular, we should avoid global functions.

Hi thanks, I am aware much of the code here is not up to the mark ( or is not error handled ).
A bit of back-story here - Though the project is about 3 weeks old, I found out that I was approaching the Version Control System in a wrong way.  Previous Branch has that approach. So, had to restart from the beginning..
I very recently (in fact a day before yesterday) became aware of how git works internally... Hence, my primary goal for now was to atleast get the new version up and running and then we can correct the project structure and mistakes later on.. Anyways thanks for pointing out. Any help / PR's would be appreciated : )
Also, the function declared is not global.. In rust every new file is a module, and any function defined in a module is by default "private". i.e. It can't be used in other modules.. To make it "public" , we need to add a "pub" keyword in front of it. As done here.
Also, I might be unaware of much of the practices that are to be applied. I am very new to Rust ( I took this project in hopes that I would get a bit familiar with Rust).


Schema change

Change Summary

Removed field itemStatus, refactored field status.
status: PENDING,  ACCEPTED, REJECTED, CANCELLED, REPAIRED, FAILED

Change Form
Fill this up (NA if not available). If a certain criteria is not met, can you please give a reason.

[ ] The pull request title has an issue number
[ ] The change works by "Smoke testing" or quick testing
[ ] The change has tests
[ ] The change has documentation

Other Information
[Is there anything in particular in the review that I should be aware of?]

Accidentally named this PR wrongly - sorry :(((


Wrong schema for property dateObserved in dtmi:digitaltwins:ngsi_ld:city:Device;1

Why is the schema type 'double' used for the property 'dateObserved' in 'dtmi:digitaltwins:ngsi_ld:city:Device;1'? See file ./Ontology/crossdomain/device.json. Should this be replaced by 'dateTime'?

Thanks @JMayrbaeurl for the feedback! This has been changed accordingly.


Num failed inferences

Addresses #21437 by creating a metric to count failed runs of inference batches that increments if .process() throws any exceptions.

R: @damccorm

R: @ryanthompson591

Run Python PreCommit

Run PythonFormatter PreCommit

Run Python PreCommit


crc32_combine_{gen,op} originated in zlib-1.2.12?, but are listed as 1.2.9 in zlib.map?

Running test/pkgcheck.sh from
https://github.com/dankegel/zlib-ng/tree/cmake-intrinics-files-v2-plus-bug638
after editing it to not pass --no-added-syms to abidiff fails with:
+ abidiff test/zlib-1.2.11-x86_64-linux-gnu.abi zlib-built.abi
Function symbols changes summary: 0 Removed, 31 Added function symbols not referenced by debug info
Variable symbols changes summary: 0 Removed, 4 Added variable symbols not referenced by debug info

31 Added function symbols not referenced by debug info:

...
  crc32_combine_gen64
  crc32_combine_gen@@ZLIB_1.2.9
  crc32_combine_op@@ZLIB_1.2.9

Strictly speaking, zlib.so (when built in compat mode) probably shouldn't offer any
new symbols, as that might make it hard for users to flip back to classic
zlib.  But if they're not in zlib.h, trouble is unlikely.
Those symbols came from https://github.com/madler/zlib/commit/41d86c73b21 in zlib,
which was merged along with zlib.map changes as https://github.com/zlib-ng/zlib-ng/commit/cc36e352bafd42a2cdd
That means they're alien functions from the future :-) as far as zlib-1.2.11 is concerned...
so they probably shouldn't be exported as ZLIB_1.2.9.  Maybe 1.2.12?
Also, those symbols weren't in zlib.h in 1.2.11, so maybe they should be protected with
#if defined(ZLIB_INTERNAL) || !defined(ZLIB_COMPAT)
...
#endif

in zlib.h until zlib actually releases a new version?
I guess it depends on which version of zlib we're trying to be compatible with, and how compatible --zlib-compat really is.

We could do #if ZLIB_VERNUM > 0x12b0 || !defined(ZLIB_COMPAT)?

Great work! Were those crc32_combine functions the only ones that were different?

They were the only ones that jumped out at me so far, but I have not yet really looked at the map file and symbol versions.

@dankegel is this part of your PR, or did you want me to make one?

It's not part of my PR, and is fair game.

Full list of functions
31 Added function symbols not referenced by debug info:

  adler32_avx2
  adler32_c
  adler32_ssse3
  chunkcopy_c
  chunkcopy_safe_c
  chunkcopy_safe_sse2
  chunkcopy_sse2
  chunkmemset_c
  chunkmemset_safe_c
  chunkmemset_safe_sse2
  chunkmemset_sse2
  chunksize_c
  chunksize_sse2
  chunkunroll_c
  chunkunroll_sse2
  compare258_c
  compare258_unaligned_16
  compare258_unaligned_32
  compare258_unaligned_64
  compare258_unaligned_avx2
  compare258_unaligned_sse4
  crc32_combine_gen64
  crc32_combine_gen@@ZLIB_1.2.9
  crc32_combine_op@@ZLIB_1.2.9
  longest_match_c
  longest_match_unaligned_16
  longest_match_unaligned_32
  longest_match_unaligned_64
  longest_match_unaligned_avx2
  longest_match_unaligned_sse4
  zlibng_version

4 Added variable symbols not referenced by debug info:

  zlibng_string
  zng_deflate_copyright
  zng_errmsg
  zng_inflate_copyright

And all the unversioned ones probably need versions.

Yea, I will open a PR for it. Btw, your script works quite well!

The PR has been merged.


Add previous state to VoiceStateUpdate event (#823)

Similar to MessageUpdate, this change allows tracking which voice channel a user left from.
This uses the existing VoiceState tracker to include the previous VoiceState as part of the VoiceStateUpdate event.

Thank you for adding this into the library!


Order V2 Engine Response Stats by OperatorIDs

Dependency: Merge #10447 before reviewing this PR.
The final stats list should be ordered so that we can easily follow the path of the execution and track how much time did each operator take (by subtracting time time take by the child operator from this one)
The stats are ordered using the OperatorId. The OperatorId compareTo functions enforces following priority to the properties for ordering

StageID
Server
Position in Chain, 0 being the end and N being the start, this is done so that We can start following the output from the SendOperator down to the receive operator
RequestID
OperatorName

Pending:
Add Tests

Codecov Report

Merging #10574 (551ac57) into master (3062bd0) will decrease coverage by 56.33%.
The diff coverage is 0.00%.

@@              Coverage Diff              @@
##             master   #10574       +/-   ##
=============================================
- Coverage     70.18%   13.86%   -56.33%
+ Complexity     6254      439     -5815
=============================================
  Files          2112     2050       -62
  Lines        113054   110373     -2681
  Branches      17007    16701      -306
=============================================
- Hits          79345    15298    -64047
- Misses        28163    93829    +65666
+ Partials       5546     1246     -4300

Flag
Coverage Δ

integration1
?

integration2
?

unittests1
?

unittests2
13.86% <0.00%> (-0.02%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...requesthandler/MultiStageBrokerRequestHandler.java
0.00% <0.00%> (-67.71%)
:arrow_down:

...ot/common/response/broker/BrokerResponseStats.java
0.00% <0.00%> (-96.78%)
:arrow_down:

.../apache/pinot/common/utils/request/OperatorId.java
0.00% <0.00%> (ø)

...ot/core/query/reduce/ExecutionStatsAggregator.java
0.00% <0.00%> (-98.26%)
:arrow_down:

...va/org/apache/pinot/query/runtime/QueryRunner.java
0.00% <0.00%> (-80.87%)
:arrow_down:

.../pinot/query/runtime/blocks/TransferableBlock.java
0.00% <ø> (-80.86%)
:arrow_down:

...e/operator/LeafStageTransferableBlockOperator.java
0.00% <0.00%> (-78.10%)
:arrow_down:

...query/runtime/operator/MailboxReceiveOperator.java
0.00% <0.00%> (-91.82%)
:arrow_down:

...ot/query/runtime/operator/MailboxSendOperator.java
0.00% <0.00%> (-77.95%)
:arrow_down:

...not/query/runtime/operator/MultiStageOperator.java
0.00% <0.00%> (-78.13%)
:arrow_down:

... and 9 more

... and 1654 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Android Day 13: MVP Published!

Admittedly this was more than a day's work, but it feels so satisfying to get a fully automated deployment rolled out!
Before I could use supply to automate deployments, I had to create a new app on the Google Play Console, fill out all the required information, and manually upload an initial build. In doing so, I had to do a couple of things:

I needed to collect phone, 7-inch tablet, and 10-inch tablet screenshots. I used the screenshot lane to generate the screenshots on a Nexus 7 and 10.
I had to create a privacy policy for my app. Since I figured this would be necessary for all the EZ Recipe apps, I added the privacy policy to the web repo. This also allowed me to link the policy without triggering a workflow in this repo. Right now, the MVP doesn't collect any user data. But once I implement authentication and allow users to save recipes, I will need to update the policy and some of the questions on Google Play to reflect this. I should also link the policy to the app itself. I've written a privacy policy previously for Brain Smarts, but I plan to use this policy as a reference for how to expand it in the future.
I had to add the fingerprint of Google's signing key to assetlinks.json. In addition, I added android:autoVerify="true" to AndroidManifest.xml to make the deep link an app link and remove the disambiguation dialog whenever users visit the link on their Android device.

The next step was to automate the deployment process using Fastlane. Running bundle exec fastlane supply init generated the file structure for Play Store metadata, such as the screenshots, changelogs, and app description. Unlike with iOS, I decided to commit the screenshots directory so I can update the main store listing in the future. Before updating the Fastfile, I found it helpful to draw a diagram explaining the deployment process on Android. It makes it clear to anyone how much more goes into deploying a mobile app compared to a web app to sign builds and satisfy the approval process.
A lot of time was spent making sure the Fastfile worked as expected. While I don't want to get into the nitty-gritty (since this PR message is big as it is), I wanted to make sure I accomplished the following steps:

Ensure the metadata from Google Play is up-to-date
Allow the changelog for a new version code to be uploaded with each new release
Allow me to make a major, minor, or patch update following semantic versioning, and update the version name and code accordingly
Securely sign an AAB and initially deploy to the internal track
After testing internally, promote the release to production and submit to Google for approval

I took advantage of several helper methods built into Fastlane to help with this process. But since I was still having issues running Gradle on WSL2, I still had to generate the AAB through Android Studio. But I was able to run the rest of the script. (As a side note, I had to keep resyncing the time on Ubuntu to allow the Google Play API to verify the JWT for each request I was making with supply.)
 This only happened on release builds, so for a while, I was confused about how this was happening. I was given this stack trace:
Exception java.lang.NullPointerException: Parameter specified as non-null is null: method u3.c.a, parameter <this>
  at com.abhiek.ezrecipes.utils.StringExtensionsKt.a (StringExtensionsKt.java:3)
  at com.abhiek.ezrecipes.ui.recipe.RecipeTitleKt.RecipeTitle (RecipeTitleKt.java:157)
  at com.abhiek.ezrecipes.ui.recipe.RecipeKt.Recipe (RecipeKt.java:620)
  at com.abhiek.ezrecipes.ui.navbar.NavigationGraphKt$NavigationGraph$1$3.invoke (NavigationGraphKt.java:37)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambdaImpl.java:50)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambdaImpl.java)
  at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke (NavHostKt.java:39)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambdaImpl.java:58)
  at androidx.compose.runtime.CompositionLocalKt.a (CompositionLocalKt.java:29)
  at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider (SaveableStateHolderImpl.java:120)
  at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider (NavBackStackEntryProviderKt.java:68)
  at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke (NavBackStackEntryProviderKt.java:37)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambdaImpl.java:58)
  at androidx.compose.runtime.CompositionLocalKt.a (CompositionLocalKt.java:29)
  at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider (NavBackStackEntryProviderKt.java:67)
  at androidx.navigation.compose.NavHostKt$NavHost$4.invoke (NavHostKt.java:159)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambdaImpl.java:50)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambdaImpl.java)
  at androidx.compose.animation.CrossfadeKt$Crossfade$4$1.invoke (CrossfadeKt.java:527)
  at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke (ComposableLambdaImpl.java:58)
  at androidx.compose.animation.CrossfadeKt.Crossfade (CrossfadeKt.java:38)
  at androidx.compose.animation.CrossfadeKt.Crossfade (CrossfadeKt.java:228)
  at androidx.navigation.compose.NavHostKt.NavHost (NavHostKt.java:1820)
  at androidx.navigation.compose.NavHostKt$NavHost$5.invoke (NavHostKt.java:21)
  at androidx.compose.runtime.RecomposeScopeImpl.compose (RecomposeScopeImpl.java:292)
  at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd (ComposerImpl.java:292)
  at androidx.compose.runtime.ComposerImpl.skipCurrentGroup (ComposerImpl.java:91)
  at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke (ComposerImpl.java:91)
  at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke (ComposerImpl.java:91)
  at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations (SnapshotStateKt__DerivedStateKt.java:43)
  at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations (SnapshotStateKt.java:43)
  at androidx.compose.runtime.ComposerImpl.doCompose (ComposerImpl.java:129)
  at androidx.compose.runtime.ComposerImpl.recompose$runtime_release (ComposerImpl.java:36)
  at androidx.compose.runtime.CompositionImpl.recompose (CompositionImpl.java:18)
  at androidx.compose.runtime.Recomposer.performRecompose (Recomposer.java:76)
  at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke (Recomposer.java:341)
  at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame (AndroidUiFrameClock.java)
  at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch (AndroidUiDispatcher.java:48)
  at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame (AndroidUiDispatcher.java:48)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1229)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1239)
  at android.view.Choreographer.doCallbacks (Choreographer.java:899)
  at android.view.Choreographer.doFrame (Choreographer.java:827)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1214)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:201)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7898)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

But it wasn't clear how StringExtensions.kt was crashing the app. The logcat showed the network request succeeding, but for some reason, the recipe object was loaded properly. Eventually, I stumbled upon this SO post where the person discovered that minifyEnabled was causing a similar crash. I haven't used ProGuard that much since I started doing Android development, but that could explain why this crash was only occurring on release builds. But how can I test a release build locally? By adding the following blocks in the app's build.gradle file:
android {
    ...
    signingConfigs {
        release {
            storeFile file('../../keystore.jks')
            storePassword KEY_STORE_PASSWORD
            keyAlias 'key1'
            keyPassword KEY_PASSWORD
        }
    }

    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
    ...
}

I can test a release build signed using the Keystore saved to my machine. (I didn't commit this for security reasons.) I couldn't enable debugging, so I wasn't able to see where exactly the app crashed. But now I can try some things and instantly check if the app doesn't crash without submitting a new build. I then came across this SO post which explains that the data classes were being obfuscated, which caused issues when deserializing JSON from the server. The @Keep annotation fixed my problem, but I found it easier to apply this rule across all my data classes in the models folder, based on this SO post.
-keep class com.abhiek.ezrecipes.data.models.** { *; }

At last, the bug has been fixed and I can promote the app to production! And in the process, I learned something new about ProGuard and data classes and how to debug release builds for situations like these. Now to see if Google approves the app. 🤞

I learned that MVPs typically take 3-4 months (or longer depending on complexity), and all three apps have taken 3.5 months to reach MVP status. So, we're on schedule. 👍


No selection state found for query with user_id: 1

when I send a query request with "uid=0"to the PREDICT port of the registered application, it works well. But if i assign uid with 1 or other value(i.e, uid=1, or uid=2), it reports the following error. What is the variable uid used for?
No selection state found for query with user_id: 1
Codes are similar to the cifar_utils.py in L122
uid=1
url = "http://%s:1337/%s/predict" % (host, app)
json = json.dumps({'uid': uid, 'input': list(x)})

Apologies for the confusion. The user ID currently must be 0. I just filed #184 to remove it from the prediction request object until personalization is supported.