Unable to set a SlackFile in Block

I successfully upload a file to Slack, then I want to display it in a block using "SlackFile" but I get an error without any detail to help me.
It is actually working with imageUrl so the issue is for sure the SlackFile and not the block itself.
The Slack SDK version
1.40.3
Java Runtime version
jdk-21.0.2
OS info
#1 SMP Debian 5.10.149-2 (2022-10-21)
Steps to reproduce:
final FilesUploadV2Response uploadResponse =
        this.app.getApp().client().filesUploadV2(b -> b.filename("report.png").fileData(bytes));
if (!uploadResponse.isOk()) {
    // Never happens during my tests.
    return Response.error(500);
}

final WebhookResponse webhookResponse = context.respond(r -> r.replaceOriginal(true)
        .blocks(asBlocks(
                image(i -> i.blockId("image_test_block")
                        .altText("Report temp text")
                        .slackFile(SlackFileObject.builder().id(uploadResponse.getFile().getId()).build())
                        .title(plainText("Report")))
        )));

LOGGER.info("{}", JsonOps.toJsonString(webhookResponse));
// {"code":404,"message":"","body":"{\"ok\":false,\"error\":\"invalid_blocks\"}"}

Expected result:
No error, the message with the block will be sent.
Actual result:
Nothing happens

Hey @Whizyyy! 👋  Uploading a file with filesUploadV2 is an asynchronous process that continues even after the ok response is received in response, so the invalid_block error might be caused from use of an "unfinished" file ID.

It is actually working with imageUrl so the issue is for sure the SlackFile and not the block itself.

Just for my understanding is this an image URL from the uploaded file?
When testing something similar, and without delay after uploading, I'm finding the following error when using a file ID:
{"ok":false,"error":"invalid_blocks","errors":["invalid slack file [json-pointer:\/blocks\/0\/slack_file.id\/slack_file]"],"response_metadata":{"messages":["[ERROR] invalid slack file [json-pointer:\/blocks\/0\/slack_file.id\/slack_file]"]}}

And I'm also finding that a pause before using this file ID often fixes this. A polling approach (shown earlier in that thread) might offer a more robust solution, but I'm curious if either this error seems familiar or if this change removes the error?

Hey @zimeg,
No it works with an image from google (using imageUrl).
Is there a way to know if the file is correctly uploaded?
Anyway even after waiting 30 seconds, I got the same error.

@Whizyyy Good to know it wasn't the same file working in some cases but not others!
Can you try logging the result of files.info before attempting to post it via webhook? This should give hints at a complete upload. I'm curious if certain metadata file information like thumbnails appear in this response 🤔
I'm also curious if including a .title() during the upload is needed to and this is perhaps related to #1345?

Here are the 2 results, "direct result" is debug just after the upload responded OK and "delayed result" is after waiting for 10 seconds
direct-result.json
delayed-result.json

@Whizyyy I'm having trouble downloading the files for some reason - would it be possible to share this inline?

Sure @zimeg,
Direct Result:
{
   "ok":true,
   "file":{
      "id":"F07GX5F33P1",
      "created":1723883018,
      "timestamp":1723883018,
      "name":"report.png",
      "title":"report.png",
      "mimetype":"",
      "filetype":"",
      "pretty_type":"",
      "user":"U07AB3S42TZ",
      "user_team":"T0567GQPSN8",
      "mode":"hosted",
      "editable":false,
      "non_owner_editable":false,
      "file_access":"visible",
      "is_external":false,
      "external_type":"",
      "username":"",
      "size":1300068,
      "url_private":"https://files.slack.com/files-pri/T0567GQPSN8-F07GX5F33P1/report.png",
      "url_private_download":"https://files.slack.com/files-pri/T0567GQPSN8-F07GX5F33P1/download/report.png",
      "permalink":"https://translatorforslack.slack.com/files/U07AB3S42TZ/F07GX5F33P1/report.png",
      "permalink_public":"https://slack-files.com/T0567GQPSN8-F07GX5F33P1-efbfe42f3c",
      "has_rich_preview":false,
      "media_display_type":"unknown",
      "preview_is_truncated":false,
      "has_more":false,
      "sent_to_self":false,
      "is_public":false,
      "public_url_shared":false,
      "display_as_bot":false,
      "channels":[

      ],
      "groups":[

      ],
      "ims":[

      ],
      "shares":{

      },
      "has_more_shares":false,
      "is_channel_space":false,
      "favorites":[

      ],
      "is_starred":false,
      "comments_count":0
   },
   "is_truncated":false,
   "comments":[

   ],
   "response_metadata":{
      "next_cursor":""
   }
}

Delayed Result:
{
   "ok":true,
   "file":{
      "id":"F07GX5F33P1",
      "created":1723883018,
      "timestamp":1723883018,
      "name":"report.png",
      "title":"report.png",
      "mimetype":"image/png",
      "filetype":"png",
      "pretty_type":"PNG",
      "user":"U07AB3S42TZ",
      "user_team":"T0567GQPSN8",
      "mode":"hosted",
      "editable":false,
      "non_owner_editable":false,
      "file_access":"visible",
      "alt_txt":"temp alt txt",
      "is_external":false,
      "external_type":"",
      "username":"",
      "size":1300042,
      "url_private":"https://files.slack.com/files-pri/T0567GQPSN8-F07GX5F33P1/report.png",
      "url_private_download":"https://files.slack.com/files-pri/T0567GQPSN8-F07GX5F33P1/download/report.png",
      "thumb_64":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_64.png",
      "thumb_80":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_80.png",
      "thumb_160":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_160.png",
      "thumb_360":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_360.png",
      "thumb_360_w":"360",
      "thumb_360_h":"203",
      "thumb_480":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_480.png",
      "thumb_480_w":"480",
      "thumb_480_h":"270",
      "thumb_720":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_720.png",
      "thumb_720_w":"720",
      "thumb_720_h":"405",
      "thumb_800":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_800.png",
      "thumb_800_w":"800",
      "thumb_800_h":"450",
      "thumb_960":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_960.png",
      "thumb_960_w":"960",
      "thumb_960_h":"540",
      "thumb_1024":"https://files.slack.com/files-tmb/T0567GQPSN8-F07GX5F33P1-bb3c25f082/report_1024.png",
      "thumb_1024_w":"1024",
      "thumb_1024_h":"576",
      "thumb_tiny":"AwAbADCtGcxgHtSNjoKIgRGGAOc4qVkHdHBPqKq99BESLucLnGT1qxLboiFkk3e1LGqo0bhT6Zx3pJZFfhRux1bGKllIaSEXA61Tfl2q2oJRyUJ44OOlVG+8abdxWLlq5SPBXcp7VKZtqtuQlPQmmWnKc1JdcWzY9qrlVrhcroxz85G1qeQp4T5u+CaqqTinbmXlTgioAfvZWZHyM8cdqrvw5pxJL5JyTzRccTtimB//2Q\u003d\u003d",
      "original_w":"1280",
      "original_h":"720",
      "permalink":"https://translatorforslack.slack.com/files/U07AB3S42TZ/F07GX5F33P1/report.png",
      "permalink_public":"https://slack-files.com/T0567GQPSN8-F07GX5F33P1-efbfe42f3c",
      "has_rich_preview":false,
      "media_display_type":"unknown",
      "preview_is_truncated":false,
      "has_more":false,
      "sent_to_self":false,
      "is_public":false,
      "public_url_shared":false,
      "display_as_bot":false,
      "channels":[

      ],
      "groups":[

      ],
      "ims":[

      ],
      "shares":{

      },
      "has_more_shares":false,
      "is_channel_space":false,
      "favorites":[

      ],
      "is_starred":false,
      "comments_count":0
   },
   "is_truncated":false,
   "comments":[

   ],
   "response_metadata":{
      "next_cursor":""
   }
}

The file needs to be shared in the channel where you're trying to post a message including the image block. Your filesUploadV2 method call must have channelId to grant access to the channel members before embedding it as part of message blocks. Your current code is trying to use an image file, which is not shared with the channel yet. In other words, if you don't pass channelId, only your bot user can access the file.

Alright, it would be nice if this kind of problem could be printed somehow, instead of "invalid blocks". Thanks for the clarification


Allow configuration of column sort order

I've taken over https://github.com/diesel-rs/diesel/pull/2329 because this pull request is not completed and has some conflicts.
closes https://github.com/diesel-rs/diesel/pull/2329

Hmm. all brew install fails.

temporary fix: https://github.com/actions/virtual-environments/issues/1811

@weiznich
Ok! I'm going to add a changelog entry to https://github.com/diesel-rs/diesel/blob/master/CHANGELOG.md#changed.

@TaKO8Ki That's a good place :+1:

@weiznich
I've just added a changelog entry!

Just as a sidenote: The commits starting with "fixup!" are meant to be merged into the commit they refer to: https://www.mikulskibartosz.name/git-fixup-explained/ They can easily be squashed using "git rebase -i --autosquash". That way, the git history doesn't look so messy :slightly_smiling_face:


Unable to force a raster outline footprint

There have been a few instances where I needed to generate the outline (footprint) of the entire raster, no_data values and all.

Currently, if I set the no_data option to None (which is also the default) in the from_href or from_rasterio_dataset_reader alternative constructors, it picks up the nodata value in the raster and passes that value to the constructor.
You have to manually extract the array of raster data and call the class constructor yourself with the constructor's no_data option set to None to create a raster outline.

This black-box change of the no_data option value between the alternative constructor and the constructor is bad, IMO. I've subclassed RasterFootprint to get around this, which also seems bad.

Closed by #6


Refactoring keymanage

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

116 of 165 (70.3%)  changed or added relevant lines in 6 files are covered.
18 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.03%) to 55.908%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

jwa/rsaoaep/rsaoaep.go
6
11
54.55%

jwa/rsapkcs1v15/rsapkcs1v15.go
8
13
61.54%

jwa/akw/akw.go
8
15
53.33%

jwa/ecdhes/ecdhes.go
23
32
71.88%

internal/jsonutils/decode.go
0
11
0.0%

jwe/jwe.go
71
83
85.54%

Files with Coverage Reduction
New Missed Lines
%

jwe/jwe.go
6
59.41%

jwa/akw/akw.go
12
72.81%

Totals

Change from base Build<PHONE_NUMBER>:
-0.03%

Covered Lines:
1339

Relevant Lines:
2395

💛  - Coveralls


feat(rethinkdbdashSettings): support for passing rethinkdbdash settin…

…gs from the datasource json configuration

Codecov Report

Merging #48 into development will increase coverage by 0.08%.
The diff coverage is 100%.

@@               Coverage Diff               @@
##           development      #48      +/-   ##
===============================================
+ Coverage        55.79%   55.87%   +0.08%
===============================================
  Files                2        2
  Lines              518      519       +1
===============================================
+ Hits               289      290       +1
  Misses             229      229

Impacted Files
Coverage Δ

rethink.js
55.79% <100%> (+0.08%)
:arrow_up:

Continue to review full report at Codecov.

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


refs #294, add support for AWS SDK v3

#294

add support for AWS SDK v3

I used typescript for the actual patcher because it makes the code safer and I wanted to make sure that types are maintained when using the XRay patcher. I included the complied JavaScript code as well so that tests can be run without adding more typescript flavor to the project.
There is no captureAWS for now and I also haven't looked at manual mode much because I'm unsure about how to pass in the xray params in a type-safe way.
Obviously the aws-sdk-v3 is not GA yet so this just serves as a placeholder and to get some additional eyes on the code.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@AllanFly120 it would be great to get your opinion on this implementation as well.

Hi monken,
We're just discussing a few changes in flight.
Hang on, we'll be right back.
Thanks!
Sandra

@monken we're very sorry for the lack of transparency on this - we were waiting for the AWS SDK v3 to reach a more stable state. Are you still interested in seeing this PR merged? If so, please update your branch & resolve conflicts so the new CI tests can run and I'll give it a review.

@willarmiros sure, I can give it another go and update the pull request to the latest version if the v3 SDK. I just want to make sure that this effort is not in vain and that you are ok with general direction of this pull request.

@monken my only concern is this being written in TS in an otherwise pure-JS repo, but given that AWS SDK v3 is written in TS and it doesn't cause any impact to the end user I'm ok with a bit of extra developer burden. As long as you're ok with adding the captureAWS feature and addressing some other (likely minor) review comments then it will not be in vain :)

@willarmiros captureAWS support is probably no longer necessary (or even possible). The v3 SDK recommends that you only import and install the clients you are actually using in your code.

@monken agreed that it doesn't make sense to include captureAWS, at least not in this iteration. Do you think you'll be able to follow up on the other comments?

@monken agreed that it doesn't make sense to include captureAWS, at least not in this iteration. Do you think you'll be able to follow up on the other comments?

@willarmiros I added the documentation and exports. You should be able to start testing now.

@willarmiros I added the documentation and exports. You should be able to start testing now.

@monken any updates on these comments?

Sorry for not being very responsive. I rebased and pushed a new version. Happy to squash the commits when you've reviewed them.

@monken I believe you didn't re-compile the JS code to match the latest TS changes. Also need to update some tests for serviceId. Then we can merge this 🚀

Kindly ask can I have aws sdk v3 support soon?

new PR #386


Cyber can monitor and evaluate the performance of each module

How can cyber monitor the scheduling and execution time of each module? Detecting the execution time of each task can meet the requirements? I found that by setting cyber_sched_perf=1, I can open the event log of task switching. Is there a visual tool available?

If "cyber_sched_perf=1" is set, will it affect performance? How can we measure it? How can we measure the performance of each module task and arrange the scheduling strategy reasonably?

hi, zyffei, i think there is 3 questions you ask here~ answers as follows:

questions about cyber_sched_perf
Answer:   perf event is developed for scheduler debugging, it record scheduler event like notify、swap_in、swap_out etc... it's not suitable for module proc time statistic, because module's proc function(it is croutine in cyber) may swap_in && swap_out several times, it is hard to organize these events together to calc module proc time.  finally, perf event certainly will affect performance(about 5%~10% E2E latency jitter), so we use it as offline debug tool when we meet framework performance issues
How can we measure the performance of each module task
Answer: we have a E2E latency statistic && analysis tool for inner online use, but it's not suitable for all auto-drive products for now. we will have an internal discussion of this. i suggest u can try print logs in the proc start point && end point to statistic module proc time for debug purpose~ or transform a sensor time stamp from driver to control to make statistic of  E2E(end to end) latency for you to improve total performance && tail performance
arrange the scheduling strategy reasonably
Answer: we suggest developers use classic scheduler policy for common use or for the beginning. if u are already familiar with cyber, u can try choreo schedule policy to achieve higher performance, the advantage of choreo is its determinacy by binding related tasks to unique processor and given enough computing resource, the disadvantage of choreo is if we didn't binding tasks properly(total execute time of tasks in same processor exceed the period of sensor data related to them), we will gain a poor E2E performance. u can use choreo policy as follows:
a. tasks in auto-driving car organized as a DAG(Direct Acyclic Graph);
b. the task in the critical path(most important path in DAG, modules like gnss、lidar driver、perception、planning、control etc.) should bind to same processor as possible for better cpu locality c. children node should have a higher priority than it's father node
d. total execute time of tasks in same processor won't  exceed the period of sensor data;
e. we can arrange other tasks which is not in the critical path  into the processor pool  temporary;
f. we packaged linux sched confs into cyber sched conf, u can set linux sched policy && sched priority && pin cyber sched processor to proper cpus as u need.  u can set linux sched policy according to this article: https://drkp.net/papers/latency-socc14.pdf
you can access to cyber/conf/example_sched_choreography.conf && cyber/conf/example_sched_classic.conf for more details

Thank you very much. Now we analyze the execution time of proc almost according to the method mentioned in Point 2. Is your tool measurement available in actual automatic driving? Do you need to modify cyber's code? Will it affect performance?

Thank you very much. Now we analyze the execution time of proc almost according to the method mentioned in Point 2. Is your tool measurement available in actual automatic driving? Do you need to modify cyber's code? Will it affect performance?

as metioned above, perf event in cyber is for offline debug purpose,  it can run in actual automatic driving, but i suggest turn off this tool if we run auto driving for mpi(online)~ "export cyber_sched_perf=1" in setup.bash if u need debug offline. the follow the output to analysis framework performance according to the enum follows:
enum class SchedPerf {
SWAP_IN = 1,
SWAP_OUT = 2,
NOTIFY_IN = 3,
NEXT_RT = 4,
RT_CREATE = 5,
};

Closing this issue as it appears to be resolved. Feel free to reopen if you have additional questions. Thanks!


FS-4192: Welsh translations for EOI

Change description

Add language concept for EOI emails, with 2 new templates for Welsh
Translated templates added to govuk notify, ids are put in config

[x] Unit tests and other appropriate tests added or updated
[x] README and other documentation has been updated / added (if needed)
[x] Commit messages are meaningful and follow good commit message guidelines

Do we have unit tests for this bit of notify? Can we make them check language?

Good idea, have updated existing unit test to take language into consideration here, asserting that the correct template_id is being used depending on the language: https://github.com/communitiesuk/funding-service-design-notification/pull/206/commits/d0f43b5168deada2a7e2949d3c5c28e04370b15a


[Snyk] Security upgrade jinja2 from 2.11.2 to 3.1.5

Snyk has created this PR to fix 2 vulnerabilities in the pip dependencies of this project.
Snyk changed the following file(s):

requirements.txt

⚠ Warning
jinja2 3.1.5 has requirement MarkupSafe>=2.0, but you have MarkupSafe 1.1.1.

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.
Some vulnerabilities couldn't be fully fixed and so Snyk will still find them when the project is tested again. This may be because the vulnerability existed within more than one direct dependency, but not all of the affected dependencies could be upgraded.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Learn about vulnerability in an interactive lesson of Snyk Learn.

Qovery can create a Preview Environment for this PR.
To trigger its creation, please post a comment with one of the following command.

Command
Blueprint environment

/qovery  preview d9b7b17e-2b12-4f2e-aa62-4645c4e74c4f
production

/qovery  preview 86d23237-413e-4d36-8107-dd4eefb5c091
blueprint-aws

/qovery  preview 64e40565-59f1-4582-b282-bbc3c32e97a6
blueprint-aws-clone-ttt

/qovery  preview 2c054c22-2bf5-4cc3-a1d7-b0941f88eb16
staging

/qovery  preview 1f8d2094-d51a-460a-a596-85f0ba0475af
blueprint-azure

/qovery  preview a8617070-2bab-45d7-898a-9ad1dfedcc8d
graham-env

/qovery  preview ddd5ca83-5bc9-45b3-a0e0-f97448fc0f0c
staging-demo

/qovery  preview 6da5fc4a-8320-4ded-9706-20910f043d0a
blueprint-aws-clone

/qovery  preview {all|UUID1,UUID2,...}
To preview multiple environments

This comment has been generated from Qovery AI :robot:.
Below, a word from its wisdom :

Write comments that add new information that doesn’t exist in the code


Decide whether to render panel changes when panels are collapsed

If the Dataset Panel is collapsed, and a dataset is added, or removed from the map, or has its order layer changed in the map, we rerender the dataset panel, which opens up the collapsed state.
Decide what to do in this case.
Perhaps we want to leave the panel collapsed but render changes, so that they are shown when the panel is expanded, or just render it again when it is expanded.
Also cover the case so that we are rendering appropriate changes when the panel is expanded, e.g. adding new datasets, removing a dataset from the layers, changing a layer order in the stack.

Possibly could be addressed at the same time as #297.

IMO Panel group should delegate rendering choices to each panel,  default
functionality should be to only render the body if it is open - but that
should be easy to override if a panel needs to be re-rendered even though
it it closed.
On Sat, Feb 13, 2016 at 4:34 PM, mgrauer<EMAIL_ADDRESS>wrote:

Possibly could be addressed at the same time as #297
https://github.com/Kitware/minerva/issues/297.
—
Reply to this email directly or view it on GitHub
https://github.com/Kitware/minerva/issues/300#issuecomment-183759627.

--
Christopher Kotfila
R&D Engineer
Kitware Inc.
http://www.kitware.com/company/team/kotfila.html

IMO Panel group should delegate rendering choices to each panel,  default
functionality should be to only render the body if it is open - but that
should be easy to override if a panel needs to be re-rendered even though
it it closed.

+1

Current view engine renders everything unconditionally by default, which has a minimal performance impact with the latest browser. With current view engine, individual components could choose its own rendering behavior. Closing.


Code Highlighting Doesn't Work Properly on Desktop Browsers

Past Issues Searched

[X] I have searched open and closed issues to make sure that the bug has not yet been reported

Issue is a Bug Report

[X] This is a bug report and not a feature request, nor asking for support

Describe the bug
Code blocks containing highlighted lines don't render on desktop browsers. I've tested this with Firefox and Chrome (without addons and also in private mode).
Additionally, if a wide code block is viewed on a smaller screen, horizontal scrollbar appears between the code text and code margin.
It works properly in mobile browsers.
Example this link renders differently on desktop and mobile.
The website is deployed on an NGINX server. Except for the automatic LetsEncrypt setup, the config file is at a bare minimum (happy to share if needed).

Horizontal lines to appear at the margin instead of above it.

Screenshots
Desktop browsers will smaller screen:

Desktop browsers will smaller screen:

Common to all desktop browsers

Environment
No response

I think this is your NGINX config. Checking Chrome/Firefox dev tools shows many mixed content warnings for the .js files needed for highlighting to function. NGINX is trying to load them over http://

I think that's also what's causing your code blocks to render incorrectly

Thanks @colinwilson !
I've updated the NGINX config to allow only HTTPS and things are working consistently across devices.


Invariant Violation: ViewPropTypes has been removed from React Native. Migrate to ViewPropTypes exported from 'deprecated-react-native-prop-types'

Hi! 👋
Firstly, thanks for your work on this project! 🙂
Today I used patch-package to patch<EMAIL_ADDRESS>for the project I'm working on.

Here is the diff that solved my problem:
diff --git a/node_modules/react-native-swiper/src/index.js b/node_modules/react-native-swiper/src/index.js
index 3e63ca7..4deec84 100644
--- a/node_modules/react-native-swiper/src/index.js
+++ b/node_modules/react-native-swiper/src/index.js
@@ -7,7 +7,6 @@ import PropTypes from 'prop-types'
 import {
   Text,
   View,
-  ViewPropTypes,
   ScrollView,
   Dimensions,
   TouchableOpacity,

This issue body was partially generated by patch-package.

I has the same problem


Missing a space between publication and year in publication_li_detailed.html

Take the example site for example.
If publication_short is defined, it looks like this:

If publication_short is commented out, it looks like this:

The space before 2013 is missing.

@seisman thanks for reporting this!


RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts

Mobile Device Environment
Provide a list of operating systems on which this issue is relevant.

Device: Google Pixel (Emulator)
OS: Android 14 (API level 34)

Application Environment
Provide information about your development environment:

React Native version: 0.73.0
RN Bluetooth Classic version: 1.73.0-rc.12

Describe the bug
The app shut down immediately
To Reproduce
Steps to reproduce the behavior:
Build and run app
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots

Android studio log:
FATAL EXCEPTION: main
 Process: com.pangaea.app, PID: 12295
java.lang.RuntimeException: Unable to get provider com.deploygate.sdk.DeployGateProvider: java.lang.SecurityException: com.pangaea.app: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
                                                                                at android.app.ActivityThread.installProvider(ActivityThread.java:7770)
                                                                                at android.app.ActivityThread.installContentProviders(ActivityThread.java:7276)
                                                                                at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6983)
                                                                                at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                at android.os.Looper.loopOnce(Looper.java:205)
                                                                                at android.os.Looper.loop(Looper.java:294)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:8177)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
                                                                                Caused by: java.lang.SecurityException: com.pangaea.app: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
                                                                                at android.os.Parcel.createExceptionOrNull(Parcel.java:3057)
                                                                                at android.os.Parcel.createException(Parcel.java:3041)
                                                                                at android.os.Parcel.readException(Parcel.java:3024)
                                                                                at android.os.Parcel.readException(Parcel.java:2966)
                                                                                at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:5684)
                                                                                at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1852)
                                                                                at android.app.ContextImpl.registerReceiver(ContextImpl.java:1792)
                                                                                at android.app.ContextImpl.registerReceiver(ContextImpl.java:1780)
                                                                                at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755)
                                                                                at com.deploygate.sdk.DeployGate.prepareBroadcastReceiver(DeployGate.java:273)
                                                                                at com.deploygate.sdk.DeployGate.<init>(DeployGate.java:238)
                                                                                at com.deploygate.sdk.DeployGate.install(DeployGate.java:491)
                                                                                at com.deploygate.sdk.DeployGate.install(DeployGate.java:464)
                                                                                at com.deploygate.sdk.DeployGateProvider.onCreate(DeployGateProvider.java:15)
                                                                                at android.content.ContentProvider.attachInfo(ContentProvider.java:2619)
                                                                                at android.content.ContentProvider.attachInfo(ContentProvider.java:2589)
                                                                                at android.app.ActivityThread.installProvider(ActivityThread.java:7765)
                                                                                at android.app.ActivityThread.installContentProviders(ActivityThread.java:7276)
                                                                                at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6983)
                                                                                at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                at android.os.Looper.loopOnce(Looper.java:205)
                                                                                at android.os.Looper.loop(Looper.java:294)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:8177)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
                                                                                Caused by: android.os.RemoteException: Remote stack trace:
                                                                                at com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:13927)
                                                                                at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2570)
                                                                                at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2720)
                                                                                at android.os.Binder.execTransactInternal(Binder.java:1339)
                                                                                at android.os.Binder.execTransact(Binder.java:1275)

Additional context

Did you happen to google that? There are a number of stack overflow articles about it.
You haven't provided

a description of what you were attempting
sample code
have you found any other resources
etc

Looks like it may be library unrelated. Have you attempted to set that context in your app?
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: trungphammycolor @.>
Sent: Monday, August 5, 2024 3:16:55 AM
To: kenjdavidson/react-native-bluetooth-classic @.>
Cc: Subscribed @.***>
Subject: [kenjdavidson/react-native-bluetooth-classic] RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts (Issue #336)
Mobile Device Environment
Provide a list of operating systems on which this issue is relevant.

Device: Google Pixel (Emulator)
OS: Android 14 (API level 34)

Application Environment
Provide information about your development environment:

React Native version: 0.73.0
RN Bluetooth Classic version: 1.73.0-rc.12

Describe the bug
The app shut down immediately
To Reproduce
Steps to reproduce the behavior:
Build and run app
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
image.png (view on web)https://github.com/user-attachments/assets/b4a4a4c6-2ddf-4ddb-9270-f4c79ff4ef00
Android studio log:
FATAL EXCEPTION: main
Process: com.pangaea.app, PID: 12295
java.lang.RuntimeException: Unable to get provider com.deploygate.sdk.DeployGateProvider: java.lang.SecurityException: com.pangaea.app: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
at android.app.ActivityThread.installProvider(ActivityThread.java:7770)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:7276)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6983)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by: java.lang.SecurityException: com.pangaea.app: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
at android.os.Parcel.createExceptionOrNull(Parcel.java:3057)
at android.os.Parcel.createException(Parcel.java:3041)
at android.os.Parcel.readException(Parcel.java:3024)
at android.os.Parcel.readException(Parcel.java:2966)
at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:5684)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1852)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1792)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1780)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755)
at com.deploygate.sdk.DeployGate.prepareBroadcastReceiver(DeployGate.java:273)
at com.deploygate.sdk.DeployGate.(DeployGate.java:238)
at com.deploygate.sdk.DeployGate.install(DeployGate.java:491)
at com.deploygate.sdk.DeployGate.install(DeployGate.java:464)
at com.deploygate.sdk.DeployGateProvider.onCreate(DeployGateProvider.java:15)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2619)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2589)
at android.app.ActivityThread.installProvider(ActivityThread.java:7765)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:7276)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6983)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:13927)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2570)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2720)
at android.os.Binder.execTransactInternal(Binder.java:1339)
at android.os.Binder.execTransact(Binder.java:1275)
Additional context
—
Reply to this email directly, view it on GitHubhttps://github.com/kenjdavidson/react-native-bluetooth-classic/issues/336, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABPMJLYABYEP6I2MKEBY733ZP4RGPAVCNFSM6AAAAABL7WDSIWVHI2DSMVQWIX3LMV43ASLTON2WKOZSGQ2DONZZG43DSMY.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

After a few more looks it does look like I can add it to the library. But I'll need you to confirm adding it resolves the issue, then open a pr for it, if you don't mind.
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: Kenneth Davidson @.>
Sent: Monday, August 5, 2024 6:25:07 AM
To: kenjdavidson/react-native-bluetooth-classic @.>; kenjdavidson/react-native-bluetooth-classic @.>
Cc: Subscribed @.>
Subject: Re: [kenjdavidson/react-native-bluetooth-classic] RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts (Issue #336)
Did you happen to google that? There are a number of stack overflow articles about it.
You haven't provided

a description of what you were attempting
sample code
have you found any other resources
etc

Looks like it may be library unrelated. Have you attempted to set that context in your app?
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: trungphammycolor @.>
Sent: Monday, August 5, 2024 3:16:55 AM
To: kenjdavidson/react-native-bluetooth-classic @.>
Cc: Subscribed @.***>
Subject: [kenjdavidson/react-native-bluetooth-classic] RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts (Issue #336)
Mobile Device Environment
Provide a list of operating systems on which this issue is relevant.

Device: Google Pixel (Emulator)
OS: Android 14 (API level 34)

Application Environment
Provide information about your development environment:

React Native version: 0.73.0
RN Bluetooth Classic version: 1.73.0-rc.12

Describe the bug
The app shut down immediately
To Reproduce
Steps to reproduce the behavior:
Build and run app
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
image.png (view on web)https://github.com/user-attachments/assets/b4a4a4c6-2ddf-4ddb-9270-f4c79ff4ef00
Android studio log:
FATAL EXCEPTION: main
Process: com.pangaea.app, PID: 12295
java.lang.RuntimeException: Unable to get provider com.deploygate.sdk.DeployGateProvider: java.lang.SecurityException: com.pangaea.app: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
at android.app.ActivityThread.installProvider(ActivityThread.java:7770)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:7276)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6983)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by: java.lang.SecurityException: com.pangaea.app: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
at android.os.Parcel.createExceptionOrNull(Parcel.java:3057)
at android.os.Parcel.createException(Parcel.java:3041)
at android.os.Parcel.readException(Parcel.java:3024)
at android.os.Parcel.readException(Parcel.java:2966)
at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:5684)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1852)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1792)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1780)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:755)
at com.deploygate.sdk.DeployGate.prepareBroadcastReceiver(DeployGate.java:273)
at com.deploygate.sdk.DeployGate.(DeployGate.java:238)
at com.deploygate.sdk.DeployGate.install(DeployGate.java:491)
at com.deploygate.sdk.DeployGate.install(DeployGate.java:464)
at com.deploygate.sdk.DeployGateProvider.onCreate(DeployGateProvider.java:15)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2619)
at android.content.ContentProvider.attachInfo(ContentProvider.java:2589)
at android.app.ActivityThread.installProvider(ActivityThread.java:7765)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:7276)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6983)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2236)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ActivityManagerService.registerReceiverWithFeature(ActivityManagerService.java:13927)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2570)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2720)
at android.os.Binder.execTransactInternal(Binder.java:1339)
at android.os.Binder.execTransact(Binder.java:1275)
Additional context
—
Reply to this email directly, view it on GitHubhttps://github.com/kenjdavidson/react-native-bluetooth-classic/issues/336, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABPMJLYABYEP6I2MKEBY733ZP4RGPAVCNFSM6AAAAABL7WDSIWVHI2DSMVQWIX3LMV43ASLTON2WKOZSGQ2DONZZG43DSMY.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Hello,
Any news of a potential fix ? It has been fixed in other library I use but not this one.
Thank you

I haven't looked into it, I thought you were going to resolve an open a pr? Since you know how to fix it.
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: bguerinActidel @.>
Sent: Tuesday, September 17, 2024 3:29:27 AM
To: kenjdavidson/react-native-bluetooth-classic @.>
Cc: Ken Davidson @.>; Comment @.>
Subject: Re: [kenjdavidson/react-native-bluetooth-classic] RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts (Issue #336)
Hello,
Any news of a potential fix ? It has been fixed in other library I use but not this one.
Thank you
—
Reply to this email directly, view it on GitHubhttps://github.com/kenjdavidson/react-native-bluetooth-classic/issues/336#issuecomment-2354754814, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABPMJL5CKEW5VLX4GJNNYXLZW7K5PAVCNFSM6AAAAABL7WDSIWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJUG42TIOBRGQ.
You are receiving this because you commented.Message ID: @.***>

Hi,
I'm currently in process of updating an app which uses this lib to Android 14, and was expecting to hit this issue - but didn't, things seem to work fine in my case (acceptance testing still ongoing, though). Not sure why, perhaps I'm using the library differently than others above or then there's something different with my test devices. If there's some more details about how to trigger this issue, I'd appreciate the hints.
Anyway, recording an observation here, in case it helps: As I was trying to understand the exact scenario here (I'm not very experienced with Android native stuff), I came to the conclusion that the received intents this lib is registering to are all system broadcast actions, which are apparently exceptions to the new rules. However, as there's folks in this thread who have experienced an issue with this piece of OS changes, I'm a bit puzzled, might well be that my limited Android skills fail me here and I understood the internals of the library wrong.


Task was destroyed but it is pending

I have this loop error. I didn't see any similar question on google, so I can't solve this question.
I didn't saw this error six days ago, it appear first time today.
Waiting for the help, thanks a lot.

Hello, can I get some details?

Which version of Python are you running? (python --version)
Which version of fc2-live-dl are you using?
What command did you use to run fc2-live-dl?

Python version is 3.10.8

This is the command that I run fc2-live-dl.
But I don't know how to check my fc2-live-dl.

Can you check with fc2-live-dl --version
Try updating to the latest version with pip install --upgrade fc2-live-dl

Can you check with fc2-live-dl --version
Try updating to the latest version with pip install --upgrade fc2-live-dl

Understand, I will try it later.
Thank's for help!!!

I have a new question after upgrade it...
The code is same since last version.

I'm closing this issue now, feel free to reopen if the issue is still happening


android onScrollEndDrag throttled by scrollEventThrottle

Description
on android, onScrollEndDrag can be prevented by a non-zero scrollEventThrottle value.
Steps to reproduce

using below code, scroll/fling with any kind of velocity and notice the onScrollEndDrag message is not logged.
repeat without flinging/no velocity (hold same scroll position for >250ms before releasing), notice the onScrollEndDrag message is logged.

<FlatList
  data={[1,2,3,4]}
  onScrollEndDrag={() => console.log('onScrollEndDrag')}
  renderItem={() => <View style={{height: 400}} />}
  scrollEventThrottle={250}
/>

React Native Version
0.73.6
Affected Platforms
Runtime - Android
Output of npx react-native info
info Fetching system and libraries information...
System:
  OS: macOS 14.4.1
  CPU: (10) arm64 Apple M1 Pro
  Memory: 264.94 MB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.20.1
    path: ~/.nvm/versions/node/v18.20.1/bin/node
  Yarn:
    version: 1.22.19
    path: ~/.yarn/bin/yarn
  npm:
    version: 7.24.2
    path: ~/code/react-native-sydney-components/node_modules/.bin/npm
  Watchman:
    version: 2<IP_ADDRESS>
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /Users/AG63864/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.4
      - iOS 17.4
      - macOS 14.4
      - tvOS 17.4
      - visionOS 1.1
      - watchOS 10.4
  Android SDK:
    API Levels:
      - "33"
      - "34"
    Build Tools:
      - 33.0.1
      - 34.0.0
    System Images:
      - android-34 | Google Play ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2023.2 AI-232.10300.40.2321.11567975
  Xcode:
    version: 15.3/15E204a
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.11
    path: /Users/AG63864/.jenv/shims/javac
  Ruby:
    version: 3.1.1
    path: /Users/AG63864/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.73.6
    wanted: 0.73.6
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: false
  newArchEnabled: false
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

info React Native v0.74.0 is now available (your project is running on v0.73.6).
info Changelog: https://github.com/facebook/react-native/releases/tag/v0.74.0
info Diff: https://react-native-community.github.io/upgrade-helper/?from=0.74.0
info For more info, check out "https://reactnative.dev/docs/upgrading?os=macos".

Stacktrace or Logs
n/a

Reproducer
https://github.com/scrungrth/android-scroll-throttle-reproducer
Screenshots and Videos
No response

Issue is reproducible in latest version also.

I have debugged this and here are my observations

scrollEventThrottle throttles all scroll events which includes onScroll, onScrollEndDrag, onScrollMomentumBegin, onMomentumScrollEnd etc.
For every successful event fired from one of these events a timestamp lastScrollDispatchTime is set in ReactScrollView. Before firing next event a condition is checked if scrollEventThrottle > currentTimeStamp - lastScrollDispatchTime.
Further debugging showed that most of the times onScroll event was getting fired with satisfying above condition and hence a lastDispatchTimestamp is set to currentTimeStamp, any event coming after this gets throttled in this case it was onScrollEndDrag

I think this behaviour is by design as per the documentation. @cortinico can clarify more on this.

@kunalchavhan that's some great insight;

I think this behaviour is by design as per the documentation.

It seems strange to me that one time per-scroll type of events would be throttled here though even if there was a shared event throttle.

Same issue after upgrading from 0.72.4 -> 0.74.1


Change iteration variables to prevent negative dimension of space inside cable (m)

In GitLab by @mkovari on Dec 4, 2018, 15:29
Previously I adjusted the TF code to prevent negative winding pack thickness (#514).  We also often get errors due to negative values of leni (the width of the space inside the cable).  This is because leni is derived by subtraction:
leni = conductor_width - 2.0D0*thwcndut

It would be nice to eliminate this problem by building the winding pack up from the inside to avoid subtractions.
@jmorris-uk @ajpearcey @stuartmuldrew @hlux

See discussion #2923.


Generic type parameters ignored in cache, wrong method invoked

Hi,
The following test fails:
public class GenericTest
{
    static string Foo<T>() => typeof(T).FullName;

    [Test]
    public void Generic_type_params_respected()
    {
        MethodInfo x = typeof(GenericTest).GetMethod(nameof(Foo), BindingFlags.Static|BindingFlags.NonPublic);

        var gen1 = x.MakeGenericMethod(typeof(int));
        var gen2 = x.MakeGenericMethod(typeof(double));

        Assert.AreEqual(typeof(int).FullName, gen1.Call());
        Assert.AreEqual(typeof(double).FullName, gen2.Call());
    }
}

  Expected string length 13 but was 12. Strings differ at index 7.
  Expected: "System.Double"
  But was:  "System.Int32"
  ------------------^

The second call gen2.Call() ends up invoking the first method, with the wrong (int) type parameters.
The problem is reversed if you swap the two assert lines to make the double one come first.
        Assert.AreEqual(typeof(double).FullName, gen2.Call());
        Assert.AreEqual(typeof(int).FullName, gen1.Call());

  Expected string length 12 but was 13. Strings differ at index 7.
  Expected: "System.Int32"
  But was:  "System.Double"
  ------------------^

The problem appears to be in the MethodInvocationEmitter ctor - it passes null as the genericTypes argument to the CallInfo constructor, which means that the generic type arguments of the method are ignored when looking up an appropriate delegate from the BaseEmitter.cache
private MethodInvocationEmitter( Type targetType, Flags bindingFlags, string name, Type[] parameterTypes,
	                                 MemberInfo methodInfo )
        : base(new CallInfo(targetType, null, bindingFlags, MemberTypes.Method, name, parameterTypes, methodInfo, true))
	{
	}

see https://github.com/HelloKitty/fasterflect/issues/7

Go into MethodInvocationEmmiter class and change the ctor-
	public MethodInvocationEmitter( MethodInfo methodInfo, Flags bindingFlags )
			: this( methodInfo.DeclaringType, bindingFlags, methodInfo.Name, methodInfo.GetParameters().ToTypeArray(), methodInfo ) {
		}

into this-
		public MethodInvocationEmitter( MethodInfo methodInfo, Flags bindingFlags )
			: this( methodInfo.DeclaringType, methodInfo.GetGenericArguments(), bindingFlags, methodInfo.Name, methodInfo.GetParameters().ToTypeArray(), methodInfo ) {
		}

I was blown away at how easy of a solution this was.


⚠ Legistar has degraded performance

In 96a15a0, Legistar (https://santaclara.legistar.com/) experienced degraded performance:

HTTP code: 200
Response time: 15064 ms

Resolved: Legistar performance has improved in e22b999 after 27 minutes.


[Feature Request] add preventDefault to event handlers

Add preventDefault functionality to internalChange and change events.
If event.preventDefault() was called jquery-address should not change the hash.

+1 for all the events.


Add codespell job

Describe your changes
Issue ticket number and link
Checklist

[ ] Is it a bug fix
[ ] Is a typo/documentation fix
[ ] Is a feature enhancement
[ ] It is a refactor
[ ] Created tests that fail without the change (if possible)
[ ] Extended the README / documentation, if necessary

@mlsmaycon I saw
with:
  only_warn: 1

that make job not failing but only report problem found, I think should be added so will not result in fail for result that should be added in exclusion

@mlsmaycon the continue error I suppose can be for:
Words are case sensitive based on **how they are written in the dictionary file**.
so for:
clientA ==> client
if I understand good should be excluded "client" but if correct this seems to me bad thing that don't permit exclusion check of result instead (or in alternative)

@mlsmaycon the continue error I suppose can be for:

Words are case sensitive based on how they are written in the dictionary file.

so for: clientA ==> client if I understand good should be excluded "client" but if correct this seems to me bad thing that don't permit exclusion check of result instead (or in alternative)

trying that, thanks for the tip

still fails, so seems there is a bug that should be reported
in the meantime I suggest you put
only_warn: 1

try erro and clienta, all lower case


Adapt to COCO format dataset

It is not only adapted to the COCO dataset, but also to the dataset of the COCO format type.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.yyq seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Please sign CLA @yyqgood

Sorry, there is a problem with the account you used before, please pay attention to #1052


Locations support

Hi!
Have you considered how support for Locations: https://ktor.io/docs/locations.html could be added to Kompendium?

Oh wow this must be new, I see it's marked as experimental.  Quite honestly, this breaks some of the stuff I had planned for kompendium v2, but I absolutely want to support this!
I'm in the process of trying to leverage KSP to generate type safe accessors for not just path params like they do here, but for all params, request body and response type.
Will need to think about how locations could fit into that model.
Thanks for the heads up!

hmm doesn't look new at all actually... surprised I've never heard of this plugin.
I'm wondering if this should be considered the default way to define parameters for Kompendium 🤔 Basically, this exactly emulates what I am trying to achieve in regards to parameters, but with a native API.  And at least some level of type safety, though I do wish it was extended to request bodies and response types as well.

Well, it is still experimental, so users should not at all be required to use it. It's probably so different API that extra methods for this needs to be added.

Yea ur definitely right.  I need to dig into how exactly these locations work, hopefully it can just be as simple as adding a new case to the kompendium path calculator.  Hypothetically, then users could use the location api in conjunction with the kompendium path annotations and life should be good.
But I'm not super hopeful that it will be that simple.  Particularly because of that snazzy "nested location" thing they support.

I think we are going to be able to do this is a non-breaking way :)
I have a draft PR out that I have only tested anecdotally, but the initial pass looks decent.  There are definitely some concessions that need to be made.
I am going to need to require that users add the KompendiumParam annotation to their parameters in the data class as they do for kompendium core, as that is fundamental to the way that metadata processing currently operates.  Perhaps in V2 we will need to modularize that to make support for the native apis more seamless.
Also, this PR does not currently handle nested locations, gonna chew on that later.
Check it out and lemme know what you think!

I also need to think through a way to pass through the type safe object, at the moment this implementation does not do that


utf-8

I'm getting Converting.... Error: utf-8 when converting posenet network. Any hints on how I can fix this?

This seems to be an issue with the downloaded model json.
Can you try and open the model.json (or model-strideXX.json) in a text editor and confirm that it's actually a text file?
Problems like this can happen if the browser or download tool receives compressed files, but doesn't decompress them.

This seems to be an issue with the downloaded model json.
Can you try and open the model.json (or model-strideXX.json) in a text editor and confirm that it's actually a text file?
Problems like this can happen if the browser or download tool receives compressed files, but doesn't decompress them.

@patlevin Hello. I am facing the same issue. I have downloaded a model json file (blazepose) and tried conversion through your repository but couldn't due to utf-8 error. I checked the file and it indeed stores text. Any suggestions for conversion from those downloaded files?

@khg2478 If the model files are OK, the only other reason might be the Python installation itself.
Ever since version 3.0, the default encoding for Python source code is utf-8 but for some reason there are still Python installations that still expect ASCII source files.
Could you test real quick whether the following snippet also generates an error with your Python interpreter?
Copy the snippet into a text editor and save the file with utf-8 encoding, e.g. as  test.py.
Then run python test.py.
import math

if __name__ == '__main__':
    r = int(input("Enter the radius of the sphere: "))
    # The area of a sphere is 4πr² ← your interpreter might choke on this part
    area = 4 * math.pi * (r**2)
    print(f"The area of the sphere is {area:.2f}")

If this results in the same error, your Python interpreter expects ASCII source files for some odd reason.


runkit7 override functions

Lots of files here, but basically use runkit7 to monkeypatch internal functions and then proxy to cURL or system binaries that use our proxy settings. Todo: Write the monkeypatch for file_get_contents to call the real file_get_contents if its not a URL. If it is a URL, write a cURL function to hop onto the system binary to call mitmproxy :tada:

I forgot to stash the frontend, so I might as well finish that too in here


Pipe separator for dynamic badges pointing at lists

:clipboard: Description
The dynamic badge feature is super useful, thanks. It would be nice, however, if the behaviour when pointing to lists looked like other common badges, i.e. using a pipe symbol rather than a comma as the item separator. For instance, I would like this badge:
https://img.shields.io/badge/dynamic/yaml?label=os&query=$.jobs.pytest.strategy.matrix.os[:]&url=https://raw.githubusercontent.com/Data-Only-Greater/SNL-Delft3D-CEC-Verify/main/.github/workflows/unit_tests.yml

to look like this:

rather than this:

Is this possible?

If you'd like that level of control over formatting then I'd encourage you to take a look at our Custom Endpoint Badge instead, which is basically a more powerful version of the Dynamic badges that provide greater customization.

Guess I'll just suffer the comma.

Obviously that's up to you and each individual user, which is really the intent. Shields offers a great deal of customization out of the box, but we realized long ago it wouldn't be practical to attempt to support the myriad subjective formatting desires of individual users.
The Endpoint badge is a great compromise. Yes, you need to "deploy" some code, but that can be done succinctly and for free in various serverless capacities. All of our badges also have a json endpoint that provides the underlying data via a simple call which can be more easily transformed, e.g.
https://img.shields.io/badge/dynamic/yaml.json?label=os&query=%24.jobs.pytest.strategy.matrix.os[:]&url=https%3A%2F%2Fraw.githubusercontent.com%2FData-Only-Greater%2FSNL-Delft3D-CEC-Verify%2Fmain%2F.github%2Fworkflows%2Funit_tests.yml
{"label":"os","message":"windows-latest, ubuntu-latest","color":"blue","link":[],"name":"os","value":"windows-latest, ubuntu-latest"}

So a custom endpoint implementation would be rather trivial

OK, yes, thanks for adding the additional detail, I think I understand a little better now how to get it to work. I am also having a look at this article, which also removes the fear a little. It's just that the Custom Endpoint documentation feels like a big leap from the friendly hand holding of everything else on sheilds.io.
I totally understand you don't want to support every possible customization of labels. I would argue that this request is not that nichey, but I imagine that even creating a way of specifying you want this opens up a can of worms.

Yup you've nailed it. Individually, such requests seem trivial and innocuous, but it's the aggregated snowballing that starts to get problematic quickly.
Thanks for sharing your experience and reaction with the endpoint docs. I think it's fair to say that there's a general consensus amongst the core team that we could provide more/clearer information, though I'm not sure if we know precisely what that should be (nor are we necessarily the best candidates for identifying what's most clear for new folks). In many cases it's as simple as writing, or even copying, a few lines of code and pasting them into a service like runkit, but definitely agree that simplicity isn't necessarily obvious.
Please feel free to suggest changes to the endpoint docs if you've got any ideas on how they could be improved!

Might be opening a bit of a can of worms, but I think there's actually an interesting meta point here about how we format badges that show multiple values.
At the moment we have a bit of a random mashup of pipe and comma. For example:

 https://img.shields.io/pypi/pyversions/Django
 https://img.shields.io/github/package-json/keywords/developit/microbundle
 https://img.shields.io/powershellgallery/p/DNS.<IP_ADDRESS>
 https://img.shields.io/appveyor/tests/NZSmartie/coap-net-iu0to/master
 https://img.shields.io/appveyor/tests/NZSmartie/coap-net-iu0to/master?compact_message

There might be a rule there for when we use each, but I couldn't really tell you what it is.

Yeah I had that in the back of my mind too but was going to leave that one canned for the time being :laughing:
We've seen time and time again where making a forced change on an existing badge brings out the folks with their pitch forks and we often end up reverting or having to introduce a query param to support both. As such, absent a functioning time machine I'm skeptical there's much that can be done with what already exists. There's a fair share of cases where, to use an oft phrase of mine, we are inconsistently consistent, and this could certainly fall under that umbrella (though my sense was typically pipes for numerical/versions and commas for the more wordy/human text).
I've no objections to codifying some defaults we can use as a guide for any future additions, however, while I realize no one is suggesting otherwise, just want to reiterate that IMO a generic "allow users to pick separator" fits pretty squarely into the message format customization territory that we punt to Endpoint badges e.g. https://github.com/badges/shields/discussions/6135#discussioncomment-329581


Exporting after editing

Hi,
How can i change the filename after editing an Excel file ?
I'am using an existing Excel File as a template, i edit the cells then i export it to another Excel File. But the filename is always the same.
Any solution?
Thanks.

`->setFilename('filename') should do the trick

It works
Thank you


Core: Rewrite QUnit.equiv to be breadth-first

Also:

Redefine Map/Set equivalence to match the .has methods
Fix recursion bugs, and add tests for failing cases
Implement recursion for Map
Document algorithm and rationale

I don't know if I really want deep comparison on Map and Set objects. In any way I noticed Lodash's _.isEqual already do it.
var a = new Set([1, 2]); var b = new Set([1, 3]); _.isEqual(a, b)
// false

...
var a = new Set([1, 2]); var b = new Set([1, 2]); _.isEqual(a, b)
// true

At this point I believe it's reasonable enough we pursue an implementation using the lodash's method.
It's good to see the code in this branch don't return false positives for WeakSet and WeakMap. See this:
var o = { a: 42 };
var s1 = new Set( [o] );
var s2 = new Set( [o] );
var s3 = new WeakSet( [o] );

QUnit.equiv( s1, s2 ); // true
QUnit.equiv( s1, s3 ); // true

I need to finish reviewing this, but these are my initial thoughts so far.

Thanks for your comments! I think we should be careful about Lodash's _.isEqual , because it has n^2 complexity (i.e. it compares sets using nested loops - as does QUnit's Set handing code right now). I'm sure that's a good choice sometimes, but for a general comparison test in a unit testing framework it could cause frustrating unexplained freezes. The simple example below, comparing two modest sets of numbers, causes over 12 million comparisons and takes several seconds:
oneToFiveThousand = Array.from( 'x'.repeat(5000) ).map( function( c, i ){ return i; } );
_.isEqual(
        new Set( oneToFiveThousand ),
        new Set( oneToFiveThousand.slice().reverse() )
);

A real-life situation, where isEqual must recurse into non-primitive set elements, would be even slower. I don't think this should happen implicitly whenever a tested data structure contains a Set. At the very least the behaviour should need triggering explicitly e.g. by calling a special method.
For this reason, I think it's better to do strict matching on Set elements and Map keys (with .has instead of a nested loop). I think it's fine for equiv to descend into Map values though.

cc @trentmwillis this looks good to me. I'm +1 if you want to merge this

@divec can you update the CLA thing, please?

@leobalter Ok, I've update the CLA, and I've also changed the function checks to include object method .toString() comparison, mimicking the effect of 904e389d85232a9d6d783881e879fce9a0965b3f (which was conflicting with this commit).

Overall, this looks good to me. I would, however, prefer that it be broken up into separate commits (for each bullet point mentioned above).  I am primarily worried about the Map/Set changes potentially breaking existing test suites and so if that happens it would be nice to have a smaller set of changes to look at.

@trentmwillis Good point. I've broken it up, and I've put the Map key and Set changes in two different commits as I can imagine them breaking different test suites.

@trentmwillis This is good to me, for the possible breaking change, my recommendation is a manual strategy I did before: build this version to run again big repos. jQuery, jQuery UI, jQuery Mobile, Globalize, anything we can get with Ember, Lodash, etc.
If we find any breaking change from the master branch version to branch, we need to flag this for a major release.

So after thinking about this more, I'm not comfortable with the Map/Set changes (everything else is good). Allow me to explain why:
First, this is clearly a breaking change now that I look at the split up commits. For instance, look at the assertion changes made here and here.
Second, I think from a testing perspective, using the "strictness" of .has is not particularly valuable. When running assertions against the output of a unit of code, you are unlikely to have references to the exact objects contained within a set. For example:
const generatedSet = getSetOfThings();
assert.deepEqual( generatedSet, new Set( { name: 'thing1' } ));

It is much more likely that you will know what the expected contents of the Set / Map are, but to not have direct references to them.
I think the only real benefit gained by using .has is increase in speed, but I prioritize both ease of use and testability over speed for test suites; both of which I feel will be negatively impacted by this change.

@trentmwillis I understand your concerns about likely test usage (I think there's some tension between that and conceptual clarity here).
I've changed the commit stack so it keeps the existing Map/Set logic, and documents it in more detail. I also added some short-circuiting to the forEach callbacks.

@trentmwillis I'll wait for your thoughts on this.

Ping - anything I can do to help this along?


Ensure empty text fragments are not created from white-spaces

For comparing jQuery behaviour, please check https://codepen.io/r-aamir/pen/yLzbgKr

Wait actually I've reverted the commit.
We have a test explicitly against this: https://github.com/fabiospampinato/cash/blob/736f09a1c6da4696313521ca2d221f7459001354/test/modules/utilities.js#L279
I don't remember the reason for this, but I'm going to trust past myself that there was a good reason for it. jQuery does indeed preserve the whitespace when executing something like $.parseHTML ( '  <b>foo</b>' ), so the fix should be somewhere else.


Design system - Typography update

This ticket is to update the typography scale to cover @fbwoolf comment:
"We used to have a Title component in stacks/ui, so when we did the refactor we did make one using label01 atm to make the refactor easier. We could remove it and just style each piece of text separately, or we could update that component to share across the wallet still. It seems it should be label02 though and checked where used. Also, currently our label02 doesn NOT have a fontWeight of 500, so that needs to be changed. My thought is that with a separate coordination issue typography overall should be revisited again llke we did for colors."
https://www.figma.com/file/2MLHeIeL6XPVi3Tc2DfFCr/❖-Leather-–-Design-System?type=design&node-id=1257-1463&mode=design

This is an important one for us to get done. Is it ready for development @mica000 ?

@fabric-8 curious on your take in regards to Caption02 - it's not very crispy but I added it here to cover to the old typography system we had to avoid things breaking when launching the rebrand - it's not particularly in use by the new designs system, shall we remove it?

Yes I think it's fine to remove 👍

There is on more change we need to make which is to remove Caption 01.
Context:
The old designs system had these in the scale so I preserved them during rebranding to avoid breaking the layout however body02 and caption 01 were the same. This wasn't good so they are now merged. This means that now we have only 1 size for Body and 1 size for Caption. See design
On the design system in Figma I already replaced the old Body02 for caption 01 (now new Caption). Components Where it was replaced:
• Call out
• Input
• Tooltip
On development, Kyran suggested:
[x] Finalise the typography in Figma, removing the duplicate entry. First principals: what typography do we want? No legacy design system decisions should influence our new design system.
[ ] Remove all fontWeight definitions across the whole product in one find replace.
[ ] Dev and designer live pair together going through all UI flows, fixing what's broken on the spot
Here is the new scale

cc @kyranjamie @fabric-8

@edgarkhanzadian you are working on this, correct?

@edgarkhanzadian there were new updates from @mica000 since then


Expose jOtel from OtelJava

There are scenarios where Java's OpenTelemetry is needed, for example:

runtime metrics: RuntimeMetrics.builder(openTelemetry).build
logging appender: OpenTelemetryAppender.install(openTelemetry)

Obviously we can use the non-resource based init forms from OtelJava, but for the same reasons mentioned in https://github.com/typelevel/otel4s/issues/431, that would mean we lose some capability as well.

I'd like to use these init methods and still be able to use OtelJava.autoConfigured. Maybe some extra init steps (the ones mentioned above) could be added to autoConfigured:
def autoConfigured[F[_]: Async: LocalContextProvider](
  customize: AutoConfigOtelSdkBuilder => AutoConfigOtelSdkBuilder = identity,
  javaInit: Seq[JOpenTelemetrySdk => Unit] = Seq.empty
): Resource[F, OtelJava[F]]

autoConfigured(javaInit = Seq(OpenTelemetryAppender.install))

It sounds reasonable, especially for the autoConfigured case. Since otel4s creates OpenTelemetry under the hood, it makes sense that we should provide access to the instance in use.
@NthPortal what do you think?

oops, sorry for the slow reply. it sounds good to me, though I think jOtel is not the greatest name for a public API. how does "underlying" sound?

underlying sounds good.

Thank you!


Class-based method stub cannot execute

class A:
	def B(self):
		return 5
stub = sinon.stub(A, 'B')
stub() # error

I suspect that this bug may have existed for a long time, since it's kind of the opposite of the issue that required the dirty hack in the first place.
The problem is that when trying to directly execute a class method (a class, not an object), Python is expecting the self argument as the first parameter to the function call.
Hence, the following code passes:
class A:
	def B(self):
		return 5
stub = sinon.stub(A, 'B')
stub(A()) # success!

This is because, as a language feature of Python, if you're calling the function B directly without an object then you must supply an instance. e.g.
o = A()
A.B(o) # returns 5

I'm not sure what you think the right thing to do would be in this case?   One could consider the current behaviour of Sinon.PY to be correct. However, I do find it counter-intuitive (confusing) to need to pass an object instance into the stub.


Add RTL support (based on #462)

First of all, all the thanks goes to @PersianArt, thanks for the original PR.
I've just made a new and fresh PR from master + examples.
Fixes #370 issue

Fixes #370 issue

@clauderic can you review this PR pls?

@clauderic, Ping

@clauderic ping 2

?

Hey, any updates here?

Hey, any updates?

hi @felixmosh, 10q for replying to me in #462 :)
It doesn't seem like anyone is processing pull requests...
Is code published somewhere else?


manifest.json file collision

Describe the bug
If you set build.manifest: true and have a file named manifest.json in the publicDir then the manifest.json file will be overwritten.
As a framework, we can set the name of build.manifest to something else, but it's impossible to know in advance all the possible file names our users may have.
Originally reported in https://github.com/sveltejs/kit/issues/5803
Reproduction
git clone git@github.com:sveltejs/kit.git
cd kit/sites/kit.svelte.dev
git reset --hard 0801e8e942534d3f6c614523f0ee4fe10b602b26
pnpm install
pnpm run dev

Visit http://localhost:5173/manifest.json in the browser and see the Vite manifest rather than the file in static/manifest.json
System Info
Vite 3.0.5

Used Package Manager
pnpm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

This file is written using Rollup's emitFile:
https://github.com/vitejs/vite/blob/ac16abda0a3f96daa61507bda666ade5867ec909/packages/vite/src/node/plugins/manifest.ts#L129
There are two solutions I can think of:

don't use emitFile so that we can write the manifest to a location outside the output directory
have separate output directories for the client built files and static files

Perhaps we can change the default to __manifest.json instead. Writing outside of the normal build could be a good idea too, but we should probably still output within build.outDir by default to avoid surprises 🤔  I guess a downside is that it can't be read by other plugins through the generateBundle hook.

Or rather should we have a separate _vite-manifest directory. Here's what I mean:
I usually set dist/client for client build and dist/server for server build. And, I would like the manifest files inside dist/_vite-manifest with client.json (client manifest) and server.json (server manifest).
We will write the manifest directory inside the parent dir of outDir (i.e. dist if outDir is dist/client). If outDir doesn't contain a slash /, we will write the manifest directory (_vite-manifest) inside the outDir.
Problem is this is not consistent if outDir contains a slash.

We could write the manifest with fs.writeFileSync instead of emitFile

We could write the manifest with fs.writeFileSync instead of emitFile

But that won't show up in the build log.

What's the build log and why should we care about the manifest being there?
The alternative would be to file a report with Rollup and see if they'll change the behavior of emitFile

What about .vite-manifest.json? Usually, static dot files are not served by convention. And SvelteKit also doesn't serve it. Not sure about the impact for backend development tho.

I like the idea of using a . prefix here. Given that we have several files, I think it would be cleaner to go with dist/.vite/manifest.json.
(cc @jessarcher @ElMassimo @brillout maybe this is interesting to you too, specially if you see an issue with us changing the default in the next major)

To confirm, we probably want to output dist/client/.vite/manifest.json instead so it stays within the outDir? Not so sure about writing outside of outDir yet even if we can support it 🤔

@bluwy yes, I think we should keep it in the outDir. I think it is easier to handle the build if all the artifacts end up in a single folder. I'm not sure why you added the extra /client there though, it that a typo?

How about this?
Without SSR:
${outDir}/client/
${outDir}/client-manifest.json

With SSR:
${outDir}/client/
${outDir}/client-manifest.json
${outDir}/server/
${outDir}/server-manifest.json

This means Vite always writes the client to ${outDir}/client/, even if the app doesn't have any SSR.
I know that some will find it "ugly" (because is some cases the extra client/ directory is unnecessary), but I believe the advantages to significantly outweight this slight aesthetic drawback.

@bluwy yes, I think we should keep it in the outDir. I think it is easier to handle the build if all the artifacts end up in a single folder. I'm not sure why you added the extra /client there though, it that a typo?

Oh I added the /client since that's the usual convention for manifest in client build + ssr, since I thought you might be implying that we output in dist/client, but emit the file outside dist/client.

This means Vite always writes the client to ${outDir}/client/, even if the app doesn't have any SSR.

This could be tricky with the build.emptyOutDir option though, unless we want the user to turn that option off for ssr case.

I was thinking of only one top-level hidden folder for Vite artifacts:
dist/.vite/manifest.json
dist/.vite/ssr-manifest.json

And maybe others in the future. This is independent of the way users do their dist setup.

I agree with the idea of @patak-dev using .vite. And I think those manifest files are only the files generated by Vite, and the rest of the output are from user's code, so it makes sense to put them under .vite.
I also think .vite should be written at the same level (not inside) of outDir if it contains a slash, otherwise directly inside outDir.

outDir: dist

dist/.vite
dist/assets

outDir: dist/client

dist/.vite
dist/client

outDir: .svelte-kit/output/client

.svelte-kit/output/.vite
.svelte-kit/output/client

It might be confusing at first, but the output directories looks good tho.

Making that exception when it contains a slash will make it harder for tooling to infer the correct location.
I prefer @patak-dev's simpler proposal of using ${outDir}/.vite/manifest.json, which would make it easier for the ecosystem to upgrade:

Look for ${outDir}/.vite/manifest.json:

If the file exists (vite@4), use it
If it doesn't exist (vite@3), look for the manifest in the old location, ${outDir}/manifest.json

We discussed this issue with the team and we think it is a good idea to move forward with scoping vite build artifacts to a new .vite folder:
dist/.vite/manifest.json
dist/.vite/ssr-manifest.json

We should do this in Vite 5 to avoid disruption in the ecosystem. But projects could start configuring the manifest name already to be .vite/manifest.json.
A side effect of this change could be that some servers are going to refuse to serve these files. We see this as a positive outcome (it could avoid the need for manually deleting these files), but the ecosystem as a whole should test that this change doesn't have other unintended consequences.


Rewrite style.css for better mobile experience.

Hello, @burntcarrot. I have rewritten the file style.css and also had to adapt the index.html . Here is some of the changes I have done:
Changes to style.css

add variables for colors, borders and border-radius.
change colors format from hex to hsl.
add some utils classes.
change layout to grid instead of flex.
add object-fit: cover to all images.
control width of elements using @media.
add grid to sliders, making those side by side, reducing vertical height.
make the yellow colors a bit darker.

Changes to index.html

add meta tag to control the mobile viewport.
<meta name="viewport" content="width=device-width, initial-scale=1.0">

remove unecessary imports of Noto Sans. Those are already imported in the style.css.

add an anchor with the hyperlink of your repository to reduce vertical height.

make all the images not draggable.

correct punctuation of textarea's placeholder.

Remaining issues

The font for the text that is above the lake can be small in mobile devices. That is something that might be fixed by changing the speak.js, but I preferred not to do it in this PR.
The sliders' thumb does not change color on Firefox because it does not offer support to -webkit-slider-thumb.

I hope this fix the issue #1.

Thank you for your work on this PR!
Here are a few things I wanted to ask:

change colors format from hex to hsl.

Is there any advantage of using hsl over hex?

The font for the text that is above the lake can be small in mobile devices. That is something that might be fixed by changing the speak.js, but I preferred not to do it in this PR.

Do you want me to create a new issue for this?
Related to this, the header above the lake is large in mobile devices; could you please fix this please? Currently, the header adds no value in mobile devices.

About hsl, they are easier to understand than hex and for this reason they are often used.
About the header, I will check a way to make it smaller, or do you want to remove it in mobile devices?

do you want to remove it in mobile devices?

Definitely. Let's remove it in mobile devices - it takes up a lot of real estate and doesn't add any value.
Can you make the changes in this PR itself, considering that this PR deals with mobile devices?

Sure.

I have added a new media query that omits the heading whenever the screen does not support hover, which means we are dealing with mobile devices.

About the font size above the lake, it is better to leave that to another issue.

I have added a new media query that omits the heading whenever the screen does not support hover, which means we are dealing with mobile devices.

Thanks for using media queries! Makes it much more maintainable.

About the font size above the lake, it is better to leave that to another issue.

Great. I'll create a new issue for it.