Box2D subfolder structure

The path to the library sources is Box2D/Box2D/Box2D/{Box2D.hpp,Common,*} which has Box2D path in it three times. The top-level folder meanwhile is sparsely populated with just the Extras folder besides the Box2D folder. Seems like it'd be reasonable to move everything from Box2D/Box2D subfolder up to just being in the top-level Box2D folder. I'd like this better.

Done.


Keep hashed things tokens in the database

FEATURE REQUEST
Things tokens are stored in a plaintext format in the things db.
Anyone with the read access to the database can see them.
I think they should be stored in a hashed format.
From security perspective, I think that this is a must have feature

In order for this to happen, there are following things that need to be changed:

the API should return the token upon thing creation
the token should be hashed and stored in the db
auth should be updated so it compares hashes
there should be a way to reset the token in case it's lost of compromised

Apart from this - I think we should separate thing token from thingID, and really have an independant pair. This would allow then for users to provide us their Passwords (or tokens) for things.
I am saying this in light of the MQTT protocol, which indeed has an independent Username and Password - while in our case token contains thingID inside as well, as it uniquelly representes Thing.

thing token is a separate piece of info (it has nothing to do with thing ID). Our token doesn't have thing ID info inside of it,
AFAIK user can already set thing token on his own.

OK, then I guess it is just for us to decide do we encrypt, or we let user give us his key.
I am more for the approach where we ecrypt, especially for the reasons that this way encryption key does not have to travel.
So I would say that this issue would then cosider:

How do we change an API to use one outside key for encryption in the DB
How do we store this key (as this is a deployments issue, we can stop at reccomendations, we do not necesary have to do an implementation with Vault. Also - this key can be maybe stored in binary).

I did something similar to this, do we want to encrypt or just hash?  Would we need to retrieve that or just validate the hash?

At this moment, I think we should encrypt, as I would expect that someone forgot/lost token written in the device flash and wants to retrieve it.
If we just hash, then all we can do is reset, but this might be complicated for devices in the field - they would have to be re-flashed.
But I might be wrong, and hash with reset might be the correct procedure. The rationale for this might be that if device "forgot" its token - there is something already wrong with the device's flash or firmware...
@dborovcanin @nmarcetic what would be your opinions here?

When you guys figure that out, let me know, I will have some time probably next week and I could work on this.

Hashing the thing key is not good for present Magistrala.
Because things will be shared to other users via groups, channels , domains or individual.
So if thing key is hashed during the thing creation , then other user could able to view the thing key.
Instead we can have like thing key encryption , So other users how have access to thing can able to view the thing key.
For Initial implementation, we can have like common encryption secret for all the thing key in all domain.
Challenges:
If the encryption key changes , then we need to decrypt all the thing key with old encryption key and encrypt again with new key

Sound good. I can get on with the implementation.

Let's postpone this one. This is an important question and the decision will affect key components of the system. @drasko We will also require your help.


Wrong sunset time for San Francisco

[edited]
Location location = new Location("37.739558", "-122.479749");
SunriseSunsetCalculator calculator = new SunriseSunsetCalculator(location, "America/Los_Angeles");
Calendar sunset = calculator.getCivilSunsetCalendarForDate(Calendar.getInstance());
For date 5/3 it reports 20:31. Actual sunset is 20:03.

Late answer: You should select the method getOfficialSunsetCalendarForDate() instead. Then you will get close agreement with your expectation. That said, you had by mistake calculated civil twilight, not sunset. I suggest to close this issue.


Add ability to add collaborator

Codecov Report

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

@@            Coverage Diff            @@
##             master     #462   +/-   ##
=========================================
  Coverage          ?   91.11%
=========================================
  Files             ?       12
  Lines             ?      405
  Branches          ?        0
=========================================
  Hits              ?      369
  Misses            ?       36
  Partials          ?        0

Impacted Files
Coverage Δ

lib/Team.js
100% <ø> (ø)

lib/Requestable.js
94.17% <100%> (ø)

lib/Repository.js
80.83% <100%> (ø)

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 22b889c...c5c3060. Read the comment docs.

It seems like this API was considered preview? Newer docs have the URL being /repos/:owner/:repo/collaborators/:username, which is the same as the one that was used, so that's nice!
This PR would be easier to review if it didn't also switch the CI and add async await. @clayreimann Is there any plans to change which versions of Node this library builds for? I'm thinking we could merge in the addCollaborator stuff and leave async await for another day.


Update Angular application to display data table with new target safety information

With the inclusion of new experimental toxicity data - see #904 - we should create a simple data table within the Target Safety tab on the target profile page.
Can we please implement a new data table based on the specs found below?

Data table design spec updated to account for changes to API response data noted in #905

this looks great @PruMM and @andrewhercules

Based on further conversations with @PruMM, the design specs have changed to account for key differences between the eTOX and Tox21 datasets.
Instead of one table, we will generate two tables - one for cell-based Tox21 data and one for tissue-based eTOX data.
The design specs have been updated in the team Google Drive and more details are available below:
Data table specifications
Tox21 data table columns

Column
API response data

Assay format
experimental_toxicity.experiment_details.assay_format

Assay description
experimental_toxicity.experiment_details.assay_description

Cell name
experimental_toxicity.experiment_details.cell_short_name

Assay type
experimental_toxicity.experiment_details.assay_format_type

Source
experimental_toxicity.data_source with an external link using the experimental_toxicity.data_source_reference_link value

eTOX data table columns

Column
API response data

Tissue
experimental_toxicity.experiment_details.tissue

Assay description
experimental_toxicity.experiment_details.assay_description

Assay format
experimental_toxicity.experiment_details.assay_format

Assay type
experimental_toxicity.experiment_details.assay_format_type

Source
experimental_toxicity.data_source with an external link using the experimental_toxicity.data_source_reference_link value

Examples
Target with just Tox21 data (e.g. SLC10A2)

Target with only Tox21 data (e.g. F3)

Target with both eTOX and Tox21 data (e.g. ABCG2)

@LucaFumis this looks all ready to go - thank you!
Can we please make one small change to the section description to note that non-clinical experimental toxicity data is also included? Can we please change it to the following?
Known side effects, safety risk information, and/or non-clinical experimental toxicity data for _____, when available.

@LucaFumis, can we  please make one other small change to the link for the Tox21 data?
Instead of using the link provided in the API response, can we please use https://tripod.nih.gov/tox21/assays/ as provided by @PruMM? The link text can continue to be Tox21.

Issue closed as work completed as part of 20.04 release process


Added bootstrap form layout support ...

We are using this project as a part of our production level Angular app. Love the setup but it does have two things we didn't like about it:

Issue #39 | All input attribute were being applied to the label and not the input element
Issue #40 | No bootstrap support

By wrapping elements the divs and corresponding  bootstrap classes, I was able to successfully get this to work. What do you think?

This is a Bootstrap-specific change.  I'd prefer something more flexible, allowing HTML micro-templates to be provided for each control type, instead of hard-coding a single layout.  It'll need a hard-coded fallback, but otherwise...  Then we just include some micro-template collections for each of the major UIs (including Bootstrap) and let the user include the appropriate ones as needed.

maxatbrs, I found this thread looking for how I might be able to wrap my form elements in a  that includes Bootstrap class(es). While I understand danhunsaker's desire for a generic solution, I am very interested in your changes now. How do I take advantage of the work you've done?
danhunsaker, in the interim, would it be possible to take the work maxatbrs has done to "Boostrapize" your project and make it a config thing? So you get your solution without the Bootstrap wrapping or flip a switch and get things Bootstrapped. Possible?

The Angular-Formly project seems to do everything I wanted angular-dynforms for and a WHOLE lot more including templates (Bootstrap and others), custom templates, loading templates via HTTP, etc.
http://angular-formly.com/

I listed a whole bunch of alternatives at the bottom of the README.  I'll try to remember to add this one at some point.


First draft of corporate PIA for Google

Describe the issue

Once Julian confirms which Google services cloud pathfinders plans to use, work on a first draft of the corporate PIA (Privacy Impact Assessment) can begin.

Additional context

This ticket will likely carry over to another sprint due to the volume of work involved
GCP SO work is going on in tandem with this work.

Definition of done

Reach out to the PO to provide the list of services CPF plans to use.
Services cloud pathfinders plans to use are identified
first draft of the corporate PIA is complete

Still relevant

not relevant


[8.x] Improve batch assertions

This PR improves batch assertion by also allowing to assert additional jobs were added to batches. Take, for example, the following test:
use App\Jobs\FooJob;
use Illuminate\Bus\PendingBatch;
use Illuminate\Support\Facades\Bus;

Bus::fake();

$batch = Bus::batch([])->dispatch();

$batch->add(new FooJob());

Bus::assertBatched(function (PendingBatch $batch) {
    return $batch->jobs->count() === 1;
});

With the changes in this PR you can do:
use App\Jobs\FooJob;
use Illuminate\Bus\PendingBatch;
use Illuminate\Support\Facades\Bus;

Bus::fake();

$batch = Bus::batch([])->dispatch();

$batch->add(new FooJob());

Bus::assertBatched(function ($batch) {
    $count = $batch instanceof PendingBatch
        ? $batch->jobs->count()
        : $batch->totalJobs;

    return $count === 1;
});

Which will check if the batch is a pending one or an instance of Illuminate\Bus\Batch (in this case Illuminate\Support\Testing\Fakes\BatchFake) and thus derive the total job count.
I wish I could have solved it without having to add the new getter methods on the Batch and BatchFake classes but I don't see another way. It's also a bit cumbersome that you can't type-hint PendingBatch anymore in the assertion but it more closely reflects the actual situation where there's no PendingBatch anymore but a real Batch instance.
Fixes https://github.com/laravel/framework/issues/36590

Since you can't type-hint PendingBatch anymore that would make this a breaking change?

@taylorotwell Well technically yes and no. Yes in the sense that if you add new jobs to the batch after dispatching and use assertBatched afterwards you'll now get a BatchFake instance instead. But since that was the actual issue and these changes are only affecting test suites no production code will be caught with this. To be more specific: in my opinion people probably want to be made aware of these changes since they can now more accurate test their job batches.

I think in general it would be cool if PendingBatch and Batch would implement some common interface for counting, etc. That would solve this a bit.

I guess what I'm saying is that anyone who type hints "PendingBatch" in a closure like the following example will have their tests broken:
Bus::assertBatched(function (PendingBatch $batch) {
    return $batch->jobs->count() === 1;
});

@taylorotwell yes but only if they were adding jobs after already sending the pending batch. Which, in my opinion will actually surface tests that should be adjusted. Imo it would be beneficial to developers to spot that and update their tests accordingly.
But your call. Otherwise we can send this to master but that would permanently leave this bug in 8.x as I don't see any other way of fixing this.

I'm still confused. Where is the logic in the PR that only sends PendingBatch to assertBatched closure when they are adding jobs after sending the pending batch. To me it looks like after this PR the Closure always receives a PendingBatch.

Where is the logic in the PR that only sends PendingBatch to assertBatched closure when they are adding jobs after sending the pending batch?

I'm not sure what you mean? This PR changes the logic to send a FakeBatch to the anonymous closure. It's the other way around.

To me it looks like after this PR the Closure always receives a PendingBatch.

No, after using ->add() on a dispatched batch, the batch will be overwritten in the faked bus and its numbers will be updated. After that, a FakeBatch instance is registered in the faked bus and the PendingBatch is overwritten. Therefor, the assertBatched method closure will receive a FakeBatch instance instead.

@taylorotwell I think the most notable line for you is this one:
https://github.com/laravel/framework/pull/37877/files#diff-a4078538a54db7a4e1749d53b9d68d859922bec0a7af4c0bc26013879ca74b3aR663
This overwrites the PendingBatch with a FakeBatch instance.

Rather than complicate things informed user to just dispatch pending batch when they are actually done hydrating it. Then all tests pass as expected:
https://github.com/laravel/framework/issues/36590#issuecomment-876510401


[CodeCompletion] Eliminate CodeCompletionCallbacks::completeExpr()

Well, this does nothing. It just set the parser position twice and calls the consumer's handleResults() without any reason.
It seems it was intended to be a "fallback" completion, but it was never implemented properly. So just remove it for now.
rdar://problem/58102910

@swift-ci Please smoke test

@swift-ci Please smoke test

Rebased to resolve a conflict
@swift-ci Please smoke test


Add pyproject.toml and update tox.ini

As the description says, introduce a tox.ini and a pyproject.toml to the project.
Note: linting fails at this stage, fixes needed for it to pass are in #25

LGTM after an update to make mypy happy.
It definitely doesn't like lib/charms/... compared to import charms. in src/charm.py, though. We should either get craft to redefine the build/deployment strategy, or run mypy once against tests/ and once against everything else.
I'm surprised this hasn't cropped up in other charms.

Fixed ;-)
It's because you were importing libraries as lib.charms.whatever, you can just import them as charms. because of the modified PYTHONPATH. With the last commit, the following all pass:
tox -e lint
tox -e static
tox -e unit

Merge whenever you're ready @rbarry82 :)


default layout should include commit hash as a HTML comment

That's {{ site.github.build_revision.}}
People using the template can make the same var visible if they want to.

** Merkle trees for democracy!! **

@paul-hammant I can confirm that {{ site.github.build_revision }} does work to grab the commit hash (although github does not seem to officially document the github object any more).
However, I hesitate to use the site.github object because it is only available during github pages build, so you won't have it when using jekyll locally or hosting somewhere else. Also I don't know that users of this super basic template are interested in having git hashes exposed--advanced users will probably want to customize the template extensively anyway. This is just a quick starting point.
You mentioned jekyll-git-hash plugin, which folks seemed to be using the hash to add a version tag to their assets. You could use that plugin if you build your site using a github action (or manually) instead of default gh-pages build.


php artisan api:docs --name Example --use-version v1 --output-file test.md, error

  [Doctrine\Common\Annotations\AnnotationException]
  [Syntax Error] Expected PlainValue, got '[' at position 347 in method App\Api\Controllers\ProductController::prices().

my markdown extract is:
   * @Transaction({
   *     @Response(200, body={"data": [{},{}]})
   * })

Why it cannot support [] ?

Use curly braces, they'll be encoded properly.
@Response(200, body={"data": {{},{}}})

You can now include files instead of placing responses inline if you'd prefer.


NoneType not scriptable error

i get this error after running
bandcamper "https://peachringsnc.bandcamp.com/album/october-again
Traceback (most recent call last):   File "/usr/local/bin/bandcamper", line 8, in <module>     sys.exit(main())   File "/home/basilk/.local/lib/python3.9/site-packages/click/core.py", line 1130, in __call__     return self.main(*args, **kwargs)   File "/home/basilk/.local/lib/python3.9/site-packages/click/core.py", line 1055, in main     rv = self.invoke(ctx)   File "/home/basilk/.local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke     return ctx.invoke(self.callback, **ctx.params)   File "/home/basilk/.local/lib/python3.9/site-packages/click/core.py", line 760, in invoke     return __callback(*args, **kwargs)   File "/usr/local/lib/python3.9/site-packages/bandcamper/__main__.py", line 180, in main     bandcamp_downloader.download_all(destination, output, output_extra, *audio_formats)   File "/usr/local/lib/python3.9/site-packages/bandcamper/bandcamper.py", line 355, in download_all     self.download_from_url(   File "/usr/local/lib/python3.9/site-packages/bandcamper/bandcamper.py", line 266, in download_from_url     music_data = self._get_music_data(url)   File "/usr/local/lib/python3.9/site-packages/bandcamper/bandcamper.py", line 137, in _get_music_data     soup.find("script", {"data-tralbum": True})["data-tralbum"] TypeError: 'NoneType' object is not subscriptable

Are you closing the quotes?  bandcamper "https://peachringsnc.bandcamp.com/album/october-again"
I could not reproduce this error.

Maybe it fixed itself?
I remade my server recently so i cant check in that environment, but it works now


unpublished public crates

For example, this crate:
https://github.com/k-nasa/tumekiri/blob/bdb0546f/Cargo.toml
is not currently published:
https://crates.io/crates/tumekiri
but you can use it:
> cargo add --git https://github.com/k-nasa/tumekiri
    Updating git repository `https://github.com/k-nasa/tumekiri`
    Updating git repository `https://github.com/k-nasa/tumekiri`
      Adding tumekiri (git) to dependencies.

it would be nice if we could get public documentation for these crates. For example, other languages host public documentation from arbitrary Git repos:

https://godocs.io/github.com/valyala/fasthttp
https://pkg.go.dev/github.com/valyala/fasthttp

Go-lang does so because git repositories are how you publish code for it. It does not have a central package repository like crates.io.
It looks like godocs.io works out which packages to document by people searching for the packages. It will then periodically poll for updates and has a refresh button to force a new poll. It also looks like it only documents "published versions" of the packages (i.e. tags that match v{semver-version}).
It does seem plausible to implement something similar. But given that crates.io is the expected way to publish crates I'm not sure whether there's much value. The example crate would not get documented as it has no version tags, and I would assume that once it does get tagged that will also be published to crates.io.

Thanks for the reasoned response.

Go-lang does so because git repositories are how you publish code for it.

One could make the same argument for Rust. Doing this:
cargo add --git https://github.com/k-nasa/tumekiri

in a way makes crates.io redundant. Dont get me wrong, I think crates.io is valuable.

It does not have a central package repository like crates.io.

This is more or less true, but by default, a command like this:
go get go.dog/breeds

does actually pull from a central repository.

But given that crates.io is the expected way to publish crates I'm not sure whether there's much value.

Hard disagree here. Bunch of crates I am interested in, that aren't published. Some do get fixed:

https://github.com/Puellaquae/rust-json/issues/2
https://github.com/Plecra/uri/issues/10

but then some get ignored:

https://github.com/Geal/generic-http-client/issues/2
https://github.com/Keksoj/uri_parser/issues/1
https://github.com/Shinyaigeek/konnnyaku/issues/4
https://github.com/abrahum/uri-reader/issues/1
https://github.com/alexmaco/json_stream/issues/1
https://github.com/andelf/rust-httpc/issues/2
https://github.com/deependapp/quick-json/issues/1
https://github.com/divinerapier/url/issues/2
https://github.com/gtolle/rest_client/issues/10
https://github.com/k-nasa/tumekiri/issues/1
https://github.com/ntalbs/rust-uri/issues/1
https://github.com/psychoss/rust-url-parser/issues/1
https://github.com/rohankumardubey/uriparse-rs/issues/1
https://github.com/serbe/uri/issues/1
https://github.com/shkumagai/url/issues/1
https://github.com/wolfsack/uri_parser/issues/1

or outright refused:

https://github.com/alexgibson/rust-parse-url/issues/2
https://github.com/anonrig/url/issues/5
https://github.com/lohxx/httprs/issues/1
https://github.com/mikedilger/rust-uri/issues/1
https://github.com/rhymu8354/HttpClient/issues/2

With Go, I don't need to even contact the author, I can just request new package from the sites I listed in the original post.

The example crate would not get documented as it has no version tags, and I would assume that once it does get tagged that will also be published to crates.io.

This is a weird requirement as well, as other languages can do documentation for arbitrary commits:

<EMAIL_ADDRESS><EMAIL_ADDRESS>

We do not have the resources to document every crate that's on GitHub.

As an alternative, you could have a CI job that runs cargo doc and publishes the output to github pages.

We do not have the resources to document every crate that's on GitHub.

This isn't whats being asked.
The way the other sites work, is they only generate docs if someone requests it, or if the site is above some threshold in terms of popularity.
I would like to take another chance to thank @Nemo157, because they seems to be willing to actually have a discussion. This is contrasted with @jyn514 response, which is the typical "read halfway, then close with short remark" kind of response.


Async Support for the ServiceHandler on CDS Service

You can return an async tagged function/Promise in the "ServiceHandler" function we define to respond when a Service is invoked by a HookRequest

@mseckykoebel no because the function definition is (request: CDSHooks.HookRequest<any>): Promise<CDSHooks.HookResponse> | CDSHooks.HookResponse;
Meaning: you have to return either 1) a Promise<CDSHooks.HookResponse> (a promise that ultimately resolves to a HookResponse) or 2) a HookResponse directly
The existing examples use (2) so they still work

And actually, the fact that the build passes proves this because they are also written in TypeScript and the build would fail if they needed to be changed,


Freeze on KDE neon 6

Describe the bug
Syncplay's 2nd window freezes immediately after clicking Store configuration and run Syncplay.
To Reproduce
Steps to reproduce the behavior:

Install Syncplay from DEB ;
Run client ;
Fill Default room field ;
Click Store configuration and run Syncplay ;
See 2nd window freezing with Not responding indicator.

Expected behavior
2nd window doesn't freeze and connects successfully.
Screenshots

Version and platform:

OS: KDE neon 6
Syncplay version and build type: 1.7.3-git-2404291815, DEB
Media player and version: VLC 3.0.21-0build1~ubuntu2204

Additional context
Changing Server address and Default room settings doesn't work, and the same values work on my other computer running Pop OS.

Thanks

I wonder, do you have the same issue when installing Syncplay straight from your distribution repositories?
Typically we rely on pyside2/Qt5 on Debian and its derivatives. Maybe KDE Neon does something unusual with Qt?

do you have the same issue when installing Syncplay straight from your distribution repositories

Yes, and that version is 1.6.9+repack1-4.

Maybe KDE Neon does something unusual with Qt?

What do you mean ? Other Qt applications are working fine.
Thanks

What do you mean ? Other Qt applications are working fine.

I mean that it works fine on Debian, Ubuntu etc. KDE Neon, given the name, seems to be all about Qt so that's where I'd expect differences from its upstream distros that do not have the issue.
What versions of pySide do you have on your system? By default the deb package from repositories depends on pySide2.

I'd expect differences from its upstream distros that do not have the issue

Okay, well, is there any log file or parameter I could pass when launching the app to get logs that would locate what's freezing the app ?

What versions of pySide do you have on your system?

Here's the output of dpkg -l | grep "pyside" :
ii  libpyside2-py3-5.15                                 5.15.11-1+22.04+jammy+release+build8                                amd64        Python 3 bindings for Qt5 (base files)
ii  python3-pyside2.qtcore                              5.15.11-1+22.04+jammy+release+build8                                amd64        Python bindings for Qt5 core module (Python 3)
ii  python3-pyside2.qtgui                               5.15.11-1+22.04+jammy+release+build8                                amd64        Python bindings for Qt5 Gui module (Python 3)
ii  python3-pyside2.qtwidgets                           5.15.11-1+22.04+jammy+release+build8                                amd64        Python bindings for Qt5 Widgets module (Python 3)

Thanks


RuntimeError: full(...) is not implemented for sparse layout in ChebConv

🐛 Bug

To Reproduce
from torch_geometric.nn import ChebConv, GCNConv
import torch
x = torch.sparse.FloatTensor(indices=torch.LongTensor([[1, 2, 0],
[1, 1, 2]]),  values=torch.Tensor([1, 1, 1]), size=(32, 100))
##x is a sparse matrix 32*100, only have 3 nodes.
##edge_index is a sparse matrix only has four edges.
edge_index = torch.LongTensor([[ 0, 1, 2, 1], [ 1, 0, 1, 2]])
gcn_conv = GCNConv(100, 32)
gcn_conv(x, edge_index).shape
##works fine in gcn_conv
cheb_conv = ChebConv(100, 32, K=1)
##edge_weight = torch.full((num_edges, ), 1, dtype=edge_index.dtype, device=edge_index.device)
cheb_conv(x, edge_index)
we can add
edge_weight = torch.full((num_edges, ), 1, dtype=edge_index.dtype, device=edge_index.device) in the cheb_conv.py
But it still has some other issues. RuntimeError: value cannot be converted to type int64_t without overflow: inf.
When x and edge_index are sparse.  It is not easy for me to debug it. Can you fix it? Thanks for the help.
Environment

OS:
Python version:
PyTorch version:
CUDA/cuDNN version:
GCC version:
Any other relevant information:

Hi, sparse node feature matrix support in the ChebConv is something which can not be easily achieved because of the need of sparse sparse matrix multiplications. I suggest converting your sparse node feature matrix to a dense one first (if that fits into memory). It's faster anyway.

Thanks for the response. It is true.  I found it is hard to have both X and edge_index with sparse features. But it is possible to have node features is dense and edge_index is sparse. I will see if it can be done in TensorFlow, might easier.

Hi, as far as I know, TensorFlow does not have a sparse sparse matrix multiplication either. You can, however, try out my sparse package. Please note that edge_index is always sparse.


Reflect overall success/failure in favicon indicator

Useful for seeing the state of things at a glance.  Inspired by GitHub's similar behaviour.
For now, the "success" indicator doesn't mean nothing's amiss (e.g. that recent runs have completed, that nothing's been cancelled, etc.), just that nothing's failed.  We may want to make this more nuanced in the future, but that requires additional favicon states that I'm not inclined to produce right now.
favicon.svg is now a (Inkscape) source file that's no longer copied as-is but instead used to produce multiple build/favicon-*.svg outputs by selective inclusion of layers.  The sparse index page gets a "?" indicator in the favicon to suggest "status" without suggesting "all's well" or "something's wrong".  There's probably some better indicator here, but it seems good enough for now.
I suspect this will make us want to clean up old lingering failed runs from the status page… ;)
Checklist

[ ] Checks pass

I suspect this will make us want to clean up old lingering failed runs from the status page… ;)

Would it make sense to limit the overall success/failure to the last ~24-48 hours? I've ignored the old lingering failures if the next automated run completed successfully. Seems like a waste to re-run workflows just for the ✅

Fixed up, but uh, what now GitHub?

Right, but that's already ignored by the "last run" consideration. It doesn't require a 24-48 hour recency condition. I'm talking about things like this:

Maybe it's not clear that
https://github.com/nextstrain/status/blob/1a895066c65a428bc4256f76463104794d7c7636/pathogen-workflows.html.js#L32-L37
is only considering the last run of each workflow in each repo?

Like, maybe I should have written:
const someFailure =
  runsByRepoAndWorkflow
    .flatMap(([, workflows]) =>
      workflows.map(([, [lastRun, ]]) =>
        lastRun.conclusion ?? lastRun.status))
    .some(x => x === "failure");

or
const someFailure =
  runsByRepoAndWorkflow
    .flatMap(([, workflows]) =>
      workflows.map(([, runs]) =>
        runs[0].conclusion ?? runs[0].status))
    .some(x => x === "failure");

Right, but that's already ignored by the "last run" consideration.

Ah gotcha, yeah, totally missed this was only considering the last run!
However, the lassa example is an interesting case...I'm pretty sure it was just a manual test run that was later fixed for the automated run.

Yeah. The lassa example will also fall off the 90 day cliff
https://github.com/nextstrain/status/blob/72803ecc7e0c77214dd26ac59fc68567ce1c5a01/pathogen-workflows.sql#L128-L129
on 24 Dec.
I will say that in general, I find the Ingest / Phylo / Ingest to Phylo pattern a bit weird (though I understand why it's that way currently).

Like, maybe I should have written…

Repushed with the second take to hopefully make it clearer.

Since merging there's been two workflow runs with the inkscape error, but other runs completed successfully.
https://github.com/nextstrain/status/actions/runs/11821865530/job/32937840090:
< favicon.svg \
  inkscape --pipe --export-plain-svg --export-area-page --export-filename - \
| ./favicon-'[layer]'.svg.py success \
> favicon-success.svg
bash: line 1: inkscape: command not found
Traceback (most recent call last):
  File "/home/runner/work/status/status/./favicon-[layer].svg.py", line 7, in <module>
    doc = ET.parse(stdin)
  File "/usr/lib/python3.10/xml/etree/ElementTree.py", line 1222, in parse
    tree.parse(source, parser)
  File "/usr/lib/python3.10/xml/etree/ElementTree.py", line 580, in parse
    self._root = parser._parse_whole(source)
xml.etree.ElementTree.ParseError: no element found: line 1, column 0
make: *** [Makefile:18: favicon-success.svg] Error 1
make: *** Deleting file 'favicon-success.svg'

https://github.com/nextstrain/status/actions/runs/11822605189/job/32940011673:
< favicon.svg \
  inkscape --pipe --export-plain-svg --export-area-page --export-filename - \
| ./favicon-'[layer]'.svg.py failure \
> favicon-failure.svg
bash: line 1: inkscape: command not found
Traceback (most recent call last):
  File "/home/runner/work/status/status/./favicon-[layer].svg.py", line 7, in <module>
    doc = ET.parse(stdin)
  File "/usr/lib/python3.10/xml/etree/ElementTree.py", line 1222, in parse
    tree.parse(source, parser)
  File "/usr/lib/python3.10/xml/etree/ElementTree.py", line 580, in parse
    self._root = parser._parse_whole(source)
xml.etree.ElementTree.ParseError: no element found: line 1, column 0
make: *** [Makefile:18: favicon-failure.svg] Error 1
make: *** Deleting file 'favicon-failure.svg'

There's been a mix of successful and failure runs...why does make sometimes recognize the committed favicon files but will run the favicon-%.svg rule other times?

why does make sometimes recognize the committed favicon files but will run the favicon-%.svg rule other times?

Hmm, is there a chance that this is due to the timing/order in which the files are downloaded from the repository during actions/checkout? If favicon.svg was downloaded one second after the favicon-*.svg files, then make sees the favicon-*.svg file as outdated and runs the rule.
Should we update the make command to ensure that the favicon-%.svg rule never runs during CI?
make -o favicon.svg -o 'favicon-[layer].svg.py'

Ugh. Maybe? Good spotting.

https://github.com/nextstrain/status/pull/30


Support for 32MB version of ESP32S3 Module is missing (IDFGH-6736)

Environment

Development Kit:     ESP32-S3-DevKitC
Kit version (for WroverKit/PicoKit/DevKitC): V1
Module or chip used:  ESP32-S3-WROOM-2 (N32R8V)
IDF version (run git describe --tags to find it):
v5.0-dev-1429
Build System:         CMake
Compiler version (run xtensa-esp32-elf-gcc --version to find it):
xtensa-esp32s3-elf-gcc (crosstool-NG esp-2021r2) 8.4.0
Operating System:     Linux
Using an IDE?: Yes, Clion with IDF_TARGET=esp32s3 set and export.sh as env script
Power Supply:         USB

Problem Description
1.options in menuconfig does not contains 32Mbyte
2.esptool is unable to flash upper 16Mbit of flash (either with --no-stub or not),
     erasing or writing above 0x1000000 with --no-stub will warp to 0x00000000 then bootloader will overwride
     writing with stub will resault a error ,showing  "opi_flash.c 363" at uart port.
     try to patch stub with ER4B cmd in the flash datasheet
 https://www.macronix.com/Lists/Datasheet/Attachments/7693/MX25UM25645G,%201.8V,%20256Mb,%20v1.1.pdf
 and set addr_len to 32bit will do the same thing as --no-stub,
  it seems like the high 8bit addr is never sent out or sent zero
3.partition size can't be bigger than 16M
4.bootloader is not correctly parsing 32M flash or switch flash to opi_dtr mode
5.spi-flash api works fine, including erasing writing,even mount fatfs ,I don't under stand why stub can't behave as normal.
6.mmap to Data MMU can't be more than 16M
     Cache_Get_DROM_MMU_End() always returned 0x00000400,so map can't be more than 0x00000400/4×64K=16M,
     hardcoded Cache_Get_DROM_MMU_End() to Cache_Get_DROM_MMU_End()+128*4 works for me(not 256 to save last 8M for PSRAM)
Expected Behavior
all above works as it should be

Actual Behavior
see Problem Description

Steps to reproduce

just run menuconfig
esptool.py  -c esp32s3 -p /dev/ttyUSB0 -b 2000000 --before=default_reset  --after=hard_reset write_flash --no-compress --flash_mode dout --flash_freq 80m --flash_size 32MB 0x1000000 something.bin
 then you will find header be overrided
add an partittion larger than 0x1000000 in partittion.csv and build
just boot up and see the uart output shows you have a 2MB Flash
with parttion in latter 16M of flash and format &mount as fatfs ,or just perform a partition read/write/erase,all work as it should be
try to map an 16Mbyte partition and will return NO_MEM because get_mmu_region never gave you more than 256 mmu entry

Debug Logs
I already patch a lot at my idf clone ...so it looks likes below
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x18 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
Octal Flash Mode Enabled
For OPI Flash, Use Default Flash Boot Mode
mode:SLOW_RD, clock div:1
load:0x3fcd0108,len:0x21b8
load:0x403b6000,len:0xd50
load:0x403ba000,len:0x3498
entry 0x403b6298
I (36) boot: ESP-IDF v5.0-dev-1429-ga10d9abba0-dirty 2nd stage bootloader
I (36) boot: compile time 05:01:58
D (36) bootloader_flash: non-XMC chip detected by SFDP Read (87), skip.
D (43) bootloader_flash: mmu set block paddr=0x00000000 (was 0xffffffff)
I (49) boot: chip revision: 0
I (53) boot.esp32s3: magic e9
I (57) boot.esp32s3: segments 03
I (61) boot.esp32s3: spi_mode 03
I (65) boot.esp32s3: spi_speed 0f
I (69) boot.esp32s3: spi_size 05
I (72) boot.esp32s3: Boot SPI Speed : 80MHz
I (77) boot.esp32s3: SPI Mode       : SLOW READ
I (83) boot.esp32s3: SPI Mode  (reg): 0x002c0008
I (88) boot.esp32s3: SPI Flash Size : 32MB
D (93) boot: Enabling RTCWDT(9000 ms)
I (96) boot: Enabling RNG early entropy source...
D (102) bootloader_flash: mmu set paddr=00000000 count=1 size=c00 src_addr=8000 src_addr_aligned=0
D (111) boot: mapped partition table 0x8000 at 0x3c008000
D (116) flash_parts: partition table verified, 5 entries
I (122) boot: Partition Table:
I (125) boot: ## Label            Usage          Type ST Offset   Length
D (133) boot: load partition table entry 0x3c008000
D (138) boot: type=1 subtype=2
I (141) boot:  0 nvs              WiFi data        01 02 00009000 00006000
D (148) boot: load partition table entry 0x3c008020
D (153) boot: type=1 subtype=1
I (156) boot:  1 phy_init         RF data          01 01 0000f000 00001000
D (164) boot: load partition table entry 0x3c008040
D (169) boot: type=0 subtype=0
I (172) boot:  2 factory          factory app      00 00 00010000 00100000
D (180) boot: load partition table entry 0x3c008060
D (185) boot: type=1 subtype=81
I (188) boot:  3 storage          Unknown data     01 81 01000000 01000000
I (195) boot: End of partition table
D (200) boot: Trying partition index -1 offs 0x10000 size 0x100000
D (206) esp_image: reading image header @ 0x10000
D (211) bootloader_flash: mmu set block paddr=0x00010000 (was 0xffffffff)
D (217) esp_image: image header: 0xe9 0x07 0x03 0x05 4037993c
V (223) esp_image: loading segment header 0 at offset 0x10018
V (229) esp_image: segment data length 0x17f00 data starts 0x10020
V (235) esp_image: segment 0 map_segment 1 segment_data_offs 0x10020 load_addr 0x3c080020
I (244) esp_image: segment 0: paddr=00010020 vaddr=3c080020 size=17f00h ( 98048) map
D (252) esp_image: free data page_count 0x0000003f
D (257) bootloader_flash: mmu set paddr=00010000 count=2 size=17f00 src_addr=10020 src_addr_aligned=10000
V (290) esp_image: loading segment header 1 at offset 0x27f20
D (290) bootloader_flash: mmu set block paddr=0x00020000 (was 0xffffffff)
V (291) esp_image: segment data length 0x46ac data starts 0x27f28
V (297) esp_image: segment 1 map_segment 0 segment_data_offs 0x27f28 load_addr 0x3fc9d6e0
I (306) esp_image: segment 1: paddr=00027f28 vaddr=3fc9d6e0 size=046ach ( 18092) load
D (314) esp_image: free data page_count 0x0000003f
D (319) bootloader_flash: mmu set paddr=00020000 count=1 size=46ac src_addr=27f28 src_addr_aligned=20000
V (333) esp_image: loading segment header 2 at offset 0x2c5d4
D (334) bootloader_flash: mmu set block paddr=0x00020000 (was 0xffffffff)
V (341) esp_image: segment data length 0x3a3c data starts 0x2c5dc
V (347) esp_image: segment 2 map_segment 0 segment_data_offs 0x2c5dc load_addr 0x40378000
I (356) esp_image: segment 2: paddr=0002c5dc vaddr=40378000 size=03a3ch ( 14908) load
D (364) esp_image: free data page_count 0x0000003f
D (369) bootloader_flash: mmu set paddr=00020000 count=2 size=3a3c src_addr=2c5dc src_addr_aligned=20000
V (383) esp_image: loading segment header 3 at offset 0x30018
D (384) bootloader_flash: mmu set block paddr=0x00030000 (was 0xffffffff)
V (391) esp_image: segment data length 0x7cd3c data starts 0x30020
V (398) esp_image: segment 3 map_segment 1 segment_data_offs 0x30020 load_addr 0x42000020
I (406) esp_image: segment 3: paddr=00030020 vaddr=42000020 size=7cd3ch (511292) map
D (414) esp_image: free data page_count 0x0000003f
D (419) bootloader_flash: mmu set paddr=00030000 count=8 size=7cd3c src_addr=30020 src_addr_aligned=30000
V (550) esp_image: loading segment header 4 at offset 0xacd5c
D (550) bootloader_flash: mmu set block paddr=0x000a0000 (was 0xffffffff)
V (552) esp_image: segment data length 0x11c9c data starts 0xacd64
V (558) esp_image: segment 4 map_segment 0 segment_data_offs 0xacd64 load_addr 0x4037ba3c
I (566) esp_image: segment 4: paddr=000acd64 vaddr=4037ba3c size=11c9ch ( 72860) load
D (575) esp_image: free data page_count 0x0000003f
D (579) bootloader_flash: mmu set paddr=000a0000 count=2 size=11c9c src_addr=acd64 src_addr_aligned=a0000
V (609) esp_image: loading segment header 5 at offset 0xbea00
D (609) bootloader_flash: mmu set block paddr=0x000b0000 (was 0xffffffff)
V (611) esp_image: segment data length 0x10 data starts 0xbea08
V (617) esp_image: segment 5 map_segment 0 segment_data_offs 0xbea08 load_addr 0x50000000
I (625) esp_image: segment 5: paddr=000bea08 vaddr=50000000 size=00010h (    16) load
D (633) esp_image: free data page_count 0x0000003f
D (638) bootloader_flash: mmu set paddr=000b0000 count=1 size=10 src_addr=bea08 src_addr_aligned=b0000
V (648) esp_image: loading segment header 6 at offset 0xbea18
D (654) bootloader_flash: mmu set block paddr=0x000b0000 (was 0xffffffff)
V (660) esp_image: segment data length 0x28 data starts 0xbea20
V (666) esp_image: segment 6 map_segment 0 segment_data_offs 0xbea20 load_addr 0x600fe000
I (675) esp_image: segment 6: paddr=000bea20 vaddr=600fe000 size=00028h (    40) load
D (683) esp_image: free data page_count 0x0000003f
D (688) bootloader_flash: mmu set paddr=000b0000 count=1 size=28 src_addr=bea20 src_addr_aligned=b0000
V (697) esp_image: image start 0x00010000 end of last section 0x000bea48
D (704) bootloader_flash: mmu set block paddr=0x000b0000 (was 0xffffffff)
D (711) boot: Calculated hash: 5eac53517a2714dda6568d16dab7950b23e799570413871a181fc07ca6326ec7
I (729) boot: Loaded app from partition at offset 0x10000
I (729) boot: Disabling RNG early entropy source...
D (731) boot: Mapping segment 0 as DROM
D (735) boot: Mapping segment 3 as IROM
D (739) boot: calling set_cache_and_start_app
D (744) boot: configure drom and irom and start
V (748) boot: d mmu set paddr=00010000 vaddr=3c080000 size=98048 n=2
V (755) boot: rc=0
V (757) boot: i mmu set paddr=00030000 vaddr=42000000 size=511292 n=8
V (763) boot: rc=0
D (765) boot: start: 0x4037993c
W (780) FLASH: DO NOT USE FOR MASS PRODUCTION! Timing parameters will be updated in future IDF version.
I (781) opi psram: vendor id    : 0x0d (AP)
I (784) opi psram: dev id       : 0x02 (generation 3)
I (789) opi psram: density      : 0x03 (64 Mbit)
I (795) opi psram: good-die     : 0x01 (Pass)
I (800) opi psram: Latency      : 0x01 (Fixed)
I (805) opi psram: VCC          : 0x00 (1.8V)
I (810) opi psram: SRF          : 0x01 (Fast Refresh)
I (816) opi psram: BurstType    : 0x01 (Hybrid Wrap)
I (821) opi psram: BurstLen     : 0x01 (32 Byte)
I (826) opi psram: Readlatency  : 0x02 (10 cycles@Fixed)
I (832) opi psram: DriveStrength: 0x00 (1/1)
W (837) PSRAM: DO NOT USE FOR MASS PRODUCTION! Timing parameters will be updated in future IDF version.
I (848) spiram: Found 8MB SPI RAM device
I (852) spiram: Speed: 80MHz
I (856) spiram: Initialized, cache is in normal (1-core) mode.
I (862) spiram: mapping psram at 0x3d800000 size 8388608 n=128
I (869) cpu_start: Pro cpu up.
I (872) cpu_start: Starting app cpu, entry point is 0x40379890
I (0) cpu_start: App cpu up.
I (1292) spiram: SPI SRAM memory test OK
I (1301) cpu_start: Pro cpu start user code
I (1301) cpu_start: cpu freq: 240000000 Hz
I (1301) cpu_start: Application information:
I (1304) cpu_start: Project name:     iperf
I (1309) cpu_start: App version:      1
I (1313) cpu_start: Compile time:     Feb  9 2022 05:02:45
I (1320) cpu_start: ELF file SHA256:  38b3c29605f2bf56...
I (1326) cpu_start: ESP-IDF:          v5.0-dev-1429-ga10d9abba0-dirty
I (1333) heap_init: Initializing. RAM available for dynamic allocation:
I (1340) heap_init: At 3FCA59D0 len 0003A630 (233 KiB): D/IRAM
I (1347) heap_init: At 3FCE0000 len 0000EE34 (59 KiB): STACK/DRAM
I (1353) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
I (1360) heap_init: At 600FE028 len 00001FD8 (7 KiB): RTCRAM
I (1366) spiram: Adding pool of 8192K of external SPI memory to heap allocator
I (1374) spi_flash: detected chip: mxic (opi)
I (1379) spi_flash: flash io: opi_dtr
I (1384) sleep: Configure to isolate all GPIO pins in sleep state
I (1390) sleep: Enable automatic switching of GPIO sleep configuration
I (1398) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1413) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (1430) example: found partition
Erase 0 MB
Erase 1 MB
Erase 2 MB
Erase 3 MB
Erase 4 MB
Erase 5 MB
Erase 6 MB
Erase 7 MB
Erase 8 MB
Erase 9 MB
Erase 10 MB
Erase 11 MB
Erase 12 MB
Erase 13 MB
Erase 14 MB
Erase 15 MB
writing at 0xffff00
done
Cache_Get_DROM_MMU_End() returned:0x00000400
E (180146) example: mmap return :0
I (180148) example: Mapped partition to data memory address 0x3c0a0000
reading at 0xfffc00
done
I (208503) example: Data matches
I (208507) example: Unmapped partition from data memory
I (208513) example: Example end
I (208516) example: Mounting FAT filesystem
W (209426) vfs_fat_spiflash: f_mount failed (13)
I (209426) vfs_fat_spiflash: Formatting FATFS partition, allocation unit size=4096
I (209743) vfs_fat_spiflash: Mounting again
I (209743) example: Opening file
I (209924) example: File written
I (209924) example: Reading file
I (209925) example: Read from file: 'This is written by the device'

    const esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "storage");
    assert(partition != NULL);
    ESP_LOGI(TAG, "found partition");
//    static const char store_data[] = "ESP-IDF Partition Memory Map Example";

    // Prepare data to be read later using the mapped address
    for(int i=0;i<16;i++)
    {
        printf("Erase %d MB\n",i);
        ESP_ERROR_CHECK(esp_partition_erase_range(partition, i*1024*1024, 1024*1024));
    }
//    ESP_ERROR_CHECK(esp_partition_write(partition, 0, store_data, sizeof(store_data)));
//    ESP_LOGI(TAG, "Written sample data to partition: %s", store_data);
    int countint_0=0;
    int databuffer[64];
    for(int i=0;i<16*1024*1024;i+=4*64){
        printf("writing at %p\r",(void*)i);
        for(int j=0;j<64;j++)
        {
            databuffer[j]=(countint_0)*(countint_0)^0x5aa5a55a;
            countint_0++;
        }
        esp_partition_write(partition, i, databuffer, sizeof(int)*64);
    }
    printf("\ndone\n");

    const void *map_ptr;
    spi_flash_mmap_handle_t map_handle;

    uint32_t Cache_Get_DROM_MMU_End(void);
    printf("Cache_Get_DROM_MMU_End() returned:0x%08x\n",Cache_Get_DROM_MMU_End());
    esp_err_t ret2 = esp_partition_mmap(partition, 0, partition->size, SPI_FLASH_MMAP_DATA, &map_ptr, &map_handle);
    // Map the partition to data memory
    ESP_LOGE(TAG,"mmap return :%d",ret2);
    ESP_ERROR_CHECK(ret2);
    ESP_LOGI(TAG, "Mapped partition to data memory address %p", map_ptr);

    // Read back the written verification data using the mapped memory pointer
//    char read_data[sizeof(store_data)];
//    memcpy(read_data, map_ptr, sizeof(read_data));
//    ESP_LOGI(TAG, "Read sample data from partition using mapped memory: %s", (char*) read_data);

//    assert(strcmp(store_data, read_data) == 0);
    int countint_1=0;
    for(int i=0;i<16*1024*1024;i+=4){
        if((i%1024)==0)printf("reading at %p\r",(void*)i);
        int bytetowrite=(countint_1)*(countint_1)^0x5aa5a55a;
        countint_1++;
        if(((int*)map_ptr)[i/4]!=bytetowrite)
            break;
    }
    printf("\ndone\n");

Other items if possible

Hi @ganhailin ,
I think the module you got is still in NPI status, we are still completing the support for those modules.
Sorry for inconvenience.

Issue 1 (lack of menuconfig options) has now been resolved by merging https://github.com/espressif/esp-idf/pull/7688.

Hi, Unfortunately I can't seem to flash the 32MB either. Im using the lastest esp-idf-v4.2.3. It just resorts back to 2MB.
(0) cpu_start: ApESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x10 (RTCWDT_RTC_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
Octal Flash Mode Enabled
For OPI Flash, Use Default Flash Boot Mode
mode:SLOW_RD, clock div:1
load:0x3fcd0108,len:0x1648
load:0x403b6000,len:0xb7c
load:0x403ba000,len:0x2f58
entry 0x403b6248
I (33) boot: ESP-IDF v4.4 2nd stage bootloader
I (33) boot: compile time 21:04:11
I (33) boot: chip revision: 0
I (34) boot.esp32s3: Boot SPI Speed : 80MHz
I (39) boot.esp32s3: SPI Mode       : SLOW READ
I (44) boot.esp32s3: SPI Flash Size : 2MB
I (49) boot: Enabling RNG early entropy source...
I (55) boot: Partition Table:
I (58) boot: ## Label            Usage          Type ST Offset   Length
I (65) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (73) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (80) boot:  2 factory          factory app      00 00 00010000 00100000
I (88) boot: End of partition table
I (92) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=07c40h ( 31808) map
I (108) esp_image: segment 1: paddr=00017c68 vaddr=3fc90dc0 size=02940h ( 10560) load
I (112) esp_image: segment 2: paddr=0001a5b0 vaddr=40374000 size=05a68h ( 23144) load
I (124) esp_image: segment 3: paddr=00020020 vaddr=42000020 size=17190h ( 94608) map
I (148) esp_image: segment 4: paddr=000371b8 vaddr=40379a68 size=07350h ( 29520) load
I (157) esp_image: segment 5: paddr=0003e510 vaddr=50000000 size=00010h (    16) load
I (162) boot: Loaded app from partition at offset 0x10000
I (162) boot: Disabling RNG early entropy source...

@TGiles1998  I'm sorry, there must be some mistake. You say you are using esp-idf v4.2.3, but this SDK version has no support for esp32-s3 chip at all.  (The bootloader log says ESP-IDF v4.4 2nd stage bootloader)
Assuming you are using IDF v4.4, I think the issue is that it doesn't have support for flash sizes >16MB. This support has been added in master branch, we will backport it to release/v4.4 after the upcoming bugfix release (v4.4.1). So it will be released in v4.4.2.

Apologies I took the latest release v4.2.3 from the release section posted 25 days ago. I'll try the newer one thanks!

On 5 Apr 2022, at 22:44, Ivan Grokhotkov @.***> wrote:
@TGiles1998 https://github.com/TGiles1998 I'm sorry, there must be some mistake. You say you are using esp-idf v4.2.3, but this SDK version has no support for esp32-s3 chip at all.  (The bootloader log says ESP-IDF v4.4 2nd stage bootloader)
Assuming you are using IDF v4.4, I think the issue is that it doesn't have support for flash sizes >16MB. This support has been added in master branch, we will backport it to release/v4.4 after the upcoming bugfix release (v4.4.1). So it will be released in v4.4.2.
—
Reply to this email directly, view it on GitHub https://github.com/espressif/esp-idf/issues/8365#issuecomment-1089396309, or unsubscribe https://github.com/notifications/unsubscribe-auth/AVTBFT75QHHAFVG3FBOMQVDVDSX2ZANCNFSM5N47FSAA.
You are receiving this because you were mentioned.

No problem! Please note that Github simply shows releases in the chronological order. As mentioned in the release notes of v4.2.3 (2nd paragraph):

ESP-IDF v4.2.3 is a bugfix update for ESP-IDF v4.2. At the time of writing, ESP-IDF v4.4 is the latest stable release.

Hi @igrr @Alvin1Zhang ,
Sorry didn't realise this was still open, I've been able to access 32MB of RAM but have yet to find a solution to access 32MB of PSRAM?
Any help would be amazing thank you!
Thomas

Hi @igrr!
We have followed work by @ESP32DE very closely and were able to get the Winbond chip recognized.

However trying to flash and cross the 24-bit boundry, above the 16MB. We then tried to create separate partitions above 16MB and place files there and read:

But then it failed to read it:

Could youpls advice on how to access flash above the 16MB?

I know it's nearly been a year but is there a way of working with larger flash sizes now?

@AndrewCapon yes, there are a few flash models > 16MB which are supported, listed in the documentation.
If you are running into a problem, I recommend opening a new issue and providing information such as IDF version, flash model, as well as the program you are trying to run.

Hi @igrr
Thanks for the info, I will double check here.
Andy

@igrr
Here is the link: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/spi_flash/spi_flash_optional_feature.html

What's the current state of >16MB flash support?
As far as I know they ROM bootloader still does not (and probably never will?) support >16MB flash. For that very reason the esptool --no-stub option does not work above 16MB either. This has the unpleasant side effect that the esp-serial-flasher library does not support >16MB at the moment.
Sorry to be so blunt, but that's pretty sad considering you've been selling those devices for like what... 3 years now?

Sorry to be so blunt, but that's pretty sad considering you've been selling those devices for like what... 3 years now?

@higaski This is also my understanding of the situation. The 32MB version is still being sold in Espressif's official Amazon store. In their Official AliExpress store, the 32MB still shows up, but appears to be out of stock. Kinda seems like false advertising!

Hi folks,
I think all the problems describes in the original issue report at the top have been fixed for a while now. There is also a list of supported flash chips linked in one of the comments above.
@higaski As for the support for larger flash sizes in the esp-serial-flasher, this is something that could be implemented by adding flasher stub support in that project.
@kylefmohr If you need to order a module with 32MB flash but can't find it in stock, please contact Espressif sales team (via the form on the website) and they will try to help you.

@higaski As for the support for larger flash sizes in the esp-serial-flasher, this is something that could be implemented by adding flasher stub support in that project.

Then please either appoint someone to that task or offer me some assistance in implementing it.

@higaski Okay, I'll reply in that esp-serial-flasher issue.

Before I open another issue... Any chance that there is a known bug that app partitions can't be placed above 16MB?
Flashing the following partition table for example
# ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
phy_init, data, phy,     ,        4K,
storage,  data, spiffs,  ,        16320K,
nvs,      data, nvs,     ,        1M,
factory,  app,  factory, ,        4M,

results in "image has invalid magic byte" errors.
Swapping the order
# ESP-IDF Partition Table
# Name,   Type, SubType, Offset,  Size, Flags
phy_init, data, phy,     ,        4K,
factory,  app,  factory, ,        4M,
storage,  data, spiffs,  ,        16320K,
nvs,      data, nvs,     ,        1M,

there is no issue.

I have the same problem when trying to upload an APP over 16MB to a ESP32-S3-N32R8 board. It's really strange to have an issue reboot over and over again. So, I googled and found this open issue. Really disappointed. Hopefully, this issue can be closed soon!


Flip popup innovative component

I've built it into Evolution; please let me know if it's satisfactory!
Thanks guys, excited to be involved with this.
P.S. I am happy to refactor the CSS a bit soon.

The target branch should be development ;) . I'm closing this. Please open a new PR to 'development' branch.

The .css and .css.map and output files should be added. We have autoprefixer, so you don't need to add vendor prefixes. Sorry for not warning you before about that, we should add it to contribute.md

@sebastianrb have a look at the updated contribute.md
thanks


API for deleting a repo

An API user should be able to delete a repo using the REST API.
DELETE /api/repos/abcd1234
---
204 No Content

If the requested repo is not available, it should fail with 404.
DELETE /api/repos/abcd1234-bad-repo
---
404 Not Found

This will be used in capstone. The API currently responds with 200 and doesn't actually perform the delete.
This doesn't break the behaviour in capstone though, only lets extra unused repositories sit with gitto.


js/crypto unavailable in nodejs

nano-id uses window.crypto, but that object is not defined in nodejs.
https://github.com/zelark/nano-id/blob/1467b6a0e9a36a73484463b5071655f0d30b55c1/src/nano_id/random.cljc#L7-L9

I will look at it soon, thanks for reporting.

@knubie sorry, I was away for a while. Do you still need support for nodejs?

@zelark No problem. I was able to resolve the issue by using this polyfill: @peculiar/webcrypto. I'm not sure this library should add any more dependencies, so I'm satisfied with that workaround.

@knubie thanks for sharing, I think I need to add an example to README.

Added an example https://github.com/zelark/nano-id#nodejs


Fetching Thread

Dear all,
Could it be possible to fetch an user, a thread with only its entity id but directly form the firebase server ?
Apparently the functions FetchEntityBy only works if the user or the thread is present locally.
Thank you very much for your response.

This is broadly what the Chat SDK does when it loads up:

Authenticates
Adds listeners to Firebase. We listen to the user, all the threads the user is a member of and their users, public threads and users who are contacts.
The point is that it should be enough to search locally because all the relevant threads should already be available.

Now imagine you want to add a user to a thread using your server, all you would do is add the thread id to the user/threads area in firebase and add the user id to the threads/users area. Then the client would download the tread automatically.
If you want to do something even more custom, check out the event manager class and the user and thread wrapper classes. They contain some low level methods which would be useful. For example you could create a new thread wrapper with an entity id then call `one to start the Firebase listener.


#1305: Add existing data types in Dump/ Restore

Fixes: #1305

Hi @JyotinderSingh , I have rebased this with master and luckily it was working without any breaking. I agree with a new interface method to current data types and I am working on this in parallel. Meanwhile, I would like to go ahead with this approach as this completes the existing DUMP and RESTORE commands which currently return error for other data types.


Fix the color of date in message edit history box

The color of the date in the message edit history box is not the same as the color of the message box.
The screenshot of the message edit history box

and the screenshot of the message box

@alya can you confirm this?
so that, I can fix this?

@Ankitsharma991 We're changing the dates in #23696; could you please retest the situation once that's been merged?

@Ankitsharma991 We're changing the dates in #23696; could you please retest the situation once that's been merged?

ok
Thank You. If so, I should close this issue, right?

@alya there are some more places where the colors are different. I am attaching some screenshots and if possible, can I also help/contribute to fixing this?

(Yes, I meant to close this issue and apparently didn't click the button.)

CZO discussion

@alya there are some more places where the colors are different. I am attaching some screenshots and if possible, can I also help/contribute to fixing this?

I'm not sure what issue you're pointing out here --different from what? In any case, the Zulip development community would be a better place to continue this discussion.
ok
In my view, the "USER" there shown in the screenshots should be of the same color as of date and timestamp. Also, the cross logo in the other screenshot should be of the same color. Hope, you got my point now.
Thank you

Hm, OK. I don't personally see why those particular elements have to be the same color as each other.


[Vulnerability] missing cookie "Samesite" attribute and Scope

Rancher Server Setup

Rancher version: 2.8.4
Installation option (Docker install/Helm Chart): helm

If Helm Chart, Kubernetes Cluster and version (RKE1, RKE2, k3s, EKS, etc): AKS

Proxy/Cert Details:

Information about the Cluster

Kubernetes version: 1.28.5
Cluster Type (Local/Downstream): local

If downstream, what type of cluster? (Custom/Imported or specify provider for Hosted/Infrastructure Provider):

User Information admin

What is the role of the user logged in? (Admin/Cluster Owner/Cluster Member/Project Owner/Project Member/Custom)

If custom, define the set of permissions:

Describe the bug

During vulnerability scan, there 2 vulnerabilities found and are related to R_SESS cookie,
R_SESS cookie is defined  without  SameSite attribute
Recommendation
It is recommended the “SameSite” flag to be added to all “Set-cookie” headers. This can be usually done in the same section where the cookie is issued (either in the  application source code, or within the web server configuration, depending on where the session cookie is generated and managed).
R_SESS cookie scope is set to /
Recommendation:
It is recommended to limit the cookie scope to the application directory, i.e. dashboard. Setting cookie scope to root directory is not advised and should be avoided whenever possible.
To Reproduce

Result
Failed during a vulnerability scan
Expected Result

Vulnerabilities related to cookies should present
Screenshots

Additional context

@rajan2 deleting security sensitive issues from the public repository. Please contact us via the official private channels stated at: https://github.com/rancher/rancher/security/policy


ProgressBar (seek range) not working

Expected behaviour
when I play (on wav media audio file) I want to be able to use the progress bar to move forward or backward in the reading.
Actual behaviour
when I click on the progress bar, for example at 50%, the cursor and the media always return to the beginning
Steps to reproduce
Click Play
Wait load media audio
click pause or click on progress bar for next seconds
Environment

Browser: Opera and chrome
Version: last version
Operating System: MacOs Ventura
Version: 13.1

Console errors (if any)
No errors displayed
Link to where the bug is happening
https://user-images.githubusercontent.com/24554441/203805976-58348bc7-2e2f-4415-bf0f-11dd772ea77a.mov

Same issue, but on main website (plyr.io) seem work normally, its weird

I've got the same issue and one more thing that the first time i play the audio the progress bar wont fill till the duration of voice ended and the second time that voice is played the progress bar is filling

Any updates on this issue?
I'm facing the same problem, but only for small audios(10s).

I'm also facing this issue. My files are stored in a CDN. All the files are MP4 format videos. Occasionally it works, other times it doesn't. It generally works fine in the front end of the site, but when you go to the admin section, there is a video preview using the exact same set up and here the progress bar generally doesn't load fully and you can't skip into the video. I'm at a loss on how to fix it.

It may not be Plyr, but the format of the file. I've been working on creating my own music and converting it from 3ga/m4a to WAV to AAC using NAudio 2.2.1. I found that it's the formatting of the file that could make it look twice as a large than it really is. This makes the progress bar jump to the beginning when you click over 50% because there is no content.
The following code fixed my MP3 issue by setting the format to 48000 and 2 channels.
using NAudio.MediaFoundation;
using NAudio.Utils;
using NAudio.Wave;

// Create the MP3 file
// https://www.markheath.net/post/naudio-mediafoundationencoder
using (var reader = new MediaFoundationReader(decompressedFile))
{
    var mediaType = MediaFoundationEncoder.SelectMediaType(
        AudioSubtypes.MFAudioFormat_MP3,
        WaveFormat.CreateIeeeFloatWaveFormat(48000, 2),
        0); // Creates as 96kbps, 0=Select lowest possible bitrate

    using (var enc = new MediaFoundationEncoder(mediaType))
    {
        enc.Encode(mp3File, reader);
    }
}


Thumbnailview Large not found after update

After update to 1.1 you can't access a collection when your last view was thumbnailLarge.
It will try to load a none exist /bundles/suluadmin/js/thumbnailLarge.js and throw an 404 error.
We should add to upgrade.md to remove all userSettings media views.

@alexander-schranz Haven't you described that in #1770 ?

@danrot yes

Then you should also write that in the PR :wink: I'll do that for you.


Bump dry-types version

Also add spec ensuring empty strings are not coerced to nil in JSON schemas.

I'll update changelog in master :)


rogue mode panes

I've just started playing with wemux and played a little with rogue mode. It seems like it'd be useful to be able to use rogue mode with panes rather than windows.
Is this already possible? Or feasible?

Is this still impossible?


Invalid progress was set by the TerminationCriterion.

Hi,
I' currently using the NSGA2 algorithm to solve an ElementwiseProblem, but encounter an AssertionError after the 9th generation.
Error
Exception has occurred: AssertionError
Invalid progress was set by the TerminationCriterion.
  File "/home/mn-man.biz/k6803/Projects/man/Perception/man-devkit/scripts/split_scenes.py", line 439, in optimize_splits
    res = minimize(
  File "/home/mn-man.biz/k6803/Projects/man/Perception/man-devkit/scripts/split_scenes.py", line 612, in main
    indices = optimize_splits(list(elements.values()), list(splits.values()), objectives, seed=42)
  File "/home/mn-man.biz/k6803/Projects/man/Perception/man-devkit/scripts/split_scenes.py", line 628, in <module>
    main(src=args.src, dst=args.dst)
AssertionError: Invalid progress was set by the TerminationCriterion.

Settings
algorithm = NSGA2(
        pop_size=100,
        eliminate_duplicates=True,
        sampling=IntegerRandomSampling(),
        mutation=PM(prob=1.0, eta=3.0, vtype=float, repair=RoundingRepair()),
        crossover=SBX(prob=1.0, eta=3.0, vtype=float, repair=RoundingRepair())
    )

termination = MaximumGenerationTermination(n_max_gen=10)

res = minimize(
        problem,
        algorithm,
        termination,
        verbose=True,
        seed=seed
    )

However, I'm a little bit confused about the fact that a simple MaximumGenerationTermination can encounter an error like "Invalid progress was set by the TerminationCriterion". Can anyone give me a hint?
Stack trace

Click to expand
==========================================================================================
n_gen  |  n_eval  | n_nds  |     cv_min    |     cv_avg    |      eps      |   indicator
==========================================================================================
     1 |      100 |      1 |  0.3749000000 |  0.5946500000 |             - |             -
     2 |      200 |      1 |  0.3499000000 |  0.4839000000 |             - |             -
     3 |      300 |      1 |  0.2749000000 |  0.4164000000 |             - |             -
     4 |      400 |      1 |  0.1999000000 |  0.3529000000 |             - |             -
     5 |      500 |      1 |  0.1749000000 |  0.2949000000 |             - |             -
     6 |      600 |      1 |  0.0749000000 |  0.2306500000 |             - |             -
     7 |      700 |      1 |  0.0249000000 |  0.1736500000 |             - |             -
     8 |      800 |      1 |  0.0249000000 |  0.1176500000 |             - |             -
/venv/lib/python3.8/site-packages/pymoo/operators/survival/rank_and_crowding/metrics.py:97: RuntimeWarning: invalid value encountered in subtract
  dist = np.row_stack([F, np.full(n_obj, np.inf)]) - np.row_stack([np.full(n_obj, -np.inf), F])
/venv/lib/python3.8/site-packages/pymoo/operators/survival/rank_and_crowding/metrics.py:105: RuntimeWarning: invalid value encountered in divide
  dist_to_last, dist_to_next = dist_to_last[:-1] / norm, dist_to_next[1:] / norm
     9 |      900 |      5 |  0.000000E+00 |  0.0679050000 |             - |             -
/venv/lib/python3.8/site-packages/pymoo/termination/ftol.py:14: RuntimeWarning: invalid value encountered in subtract
  return np.max(np.abs((a - b) / norm))
venv/lib/python3.8/site-packages/pymoo/util/normalization.py:86: RuntimeWarning: invalid value encountered in subtract
  N[..., neither_nan] = (X[..., neither_nan] - xl[neither_nan]) / (xu[neither_nan] - xl[neither_nan])
/venv/lib/python3.8/site-packages/pymoo/util/normalization.py:86: RuntimeWarning: invalid value encountered in divide
  N[..., neither_nan] = (X[..., neither_nan] - xl[neither_nan]) / (xu[neither_nan] - xl[neither_nan])

Can you quickly check if either the objective values or the constraint values are NaN?
This is what I assume is going on looking at the error message.


docs: update delve information

I ran into a bit of difficulty trying to connect the VS Code debugger to the process spawned by dlv debug. I eventually figured out that delve defaults to its legacy protocol (version 1) by default which was causing compatibility issues with VS Code's Go integration. Delve's docs recommend using version 2 for all new development, so I think it makes sense to add that to the docs so people trying to integrate with IDEs hopefully don't run into the same compatibility issues. Also added a note about supplying the port so these commands can integrate with IDEs and shell scripts without having to figure out the port each time.

@muesli does this seem correct to you (and is this still relevant @aschey)? I'm skimming the delve docs and don't see anything on this, so I wonder if it's the default now.

I believe this is still relevant. The specific documentation I remember reading is this: https://github.com/go-delve/delve/blob/master/Documentation/api/ClientHowto.md#selecting-the-api-version

Delve currently supports two version of its API, APIv1 and APIv2. By default a headless instance of dlv will serve APIv1 for backward-compatibility with older clients, however new clients should use APIv2 as new features will only be made available through version 2. The preferred method of switching to APIv2 is to send the RPCServer.SetApiVersion command right after connecting to the backend. Alternatively the --api-version=2 command line option can be used when spawning the backend.

@meowgorithm Is this good to merge?

Sorry to take so long as this. @maaslalani, can we verify this is still current?

Yes, this is still current from my understanding. The dlv CLI mentions that the default --api-version is 1 but we should use 2.

Done and done! Thanks for the contribution here @aschey and sorry it took forever!


Fix the handling of tabs in quickinfo Markdown code blocks

This PR fixes #95096
This alters the behavior of Markdown parsed from JSDoc documentation comments and its appearance in the IntelliSense quickinfo boxes on mouseover. Previously, tabs were replaced by four spaces each. I don't know, why. Also, I set the tab size to 4 for code blocks in the quickinfo box. Testing instructions are in the issue thread.

Unfortunately I think I need to recommend against my own PR. I just found out that the file marked.js is an external library. I didn't see that before, because I didn't expect an external library to be in the folder it is in nor to be tracked by the repo. I wondered why it's not in TypeScript, but I thought maybe it's some legacy code.
For the used library there exists an issue addressing this problem. The tabs are replaced by spaces, because the code apparently cannot handle tab indentation in some cases. I did a quick test and it seems tab indentation screws up nested lists. I couldn't see any other issues, though.

Preferably, markdown-it looks like a much better thought-through library. I mean, marked.js didn't bother fixing this issue for almost five years. Also, wouldn't it be smart to use the same parser for both the quick info boxes and the Markdown preview? Apparently, the library used for the Markdown preview does not replace tabs so it's likely not marked.js.

Thanks for investigating.
I agree that marked has many issues, however it's also pretty small. This is important because we ship it as part of the Monaco editor.
Is there some way to scope your fix just to code blocks?

Well, the replacement is just a dumb in all the code, replace a character command with no further context information.
I thought of maybe another fix. Apart from the one informational issue that tab characters get replaced by space characters I'd say the major problem are the visual issues:

Tabs are being fixed to a size of 4.
Mid-text tabs do not have the expected aligning effect.

As long as the resulting length is 4 I personally do not care about 1. to be honest. I use them to align mid-text, though.
apple	red
banana	yellow
lime	green

So I am thinking about a fix for 2. I could replace the few calls to String#replace() by a custom function that does the current replacements and replaces tabs by either 2, 3 or 4 spaces depending on their offset within the line to mimic their aligning nature. This should have no impact on indentation tabs, but fix mid-text tabs.
apple   red
banana  yellow
lime    green

Currently, this would be the result:
apple    red
banana    yellow
lime    green

Why is this important for me? I haven't posted anything about it, yet, and I don't know how open you are for introducing new settings to VS Code, but I was thinking about a new setting allowing users to decide whether they want their quick infos with wite-space: pre-wrap and a monospace font (configurable globally or for the workspace and for each file type as well). I asked on SO in the past whether I could enable preserving whitespace and I think there is no way currently. And as there doesn't seem to be a big demand for this feature I'd add it myself.

I'm going to close this PR as it is out of date and the corresponding issue has not seen any further interest  since it was opened


Cleanup and more tests

Follow-up to https://github.com/testiumjs/testium-driver-sync/pull/1:

The unit tests for browser and assert are not ported to testium-driver-sync yet
Inline _getElementWithProperty usages
Remove traces of jshint
s/retireved/retrieved/
Add npub
Add support for mix-ins

Depends on https://github.com/testiumjs/testium-core/pull/10.
Part of https://github.com/groupon/testium/pull/171

LGTM :shipit:


Promise not assignable to Promise w/fn return type

Bug Report
🔎 Search Terms
promise void assignable 2345
🕗 Version & Regression Information

This is the behavior in every version I tried, and I reviewed the FAQ for entries about "Why are functions returning non-void assignable to function returning void?" and Issue #4544

⏯ Playground Link
Playground link with relevant code
💻 Code
//Set 1: Works fine, as expected
const takesVoidReturningFunction = function(starter: (aStr: string) => void) {/*...*/}
const voidReturningFunction = function(aStr: string) : void {return;}
const boolReturningFunction = function(aStr: string) : boolean {return true;}
takesVoidReturningFunction(voidReturningFunction);
takesVoidReturningFunction(boolReturningFunction);

//Set 2: The async version of set 1
const takesVoidReturningAsyncFunction = function(starter: (aStr: string) => Promise<void>) {/*...*/}
const voidReturningAsyncFunction = async function(aStr: string) : Promise<void> {return;}
const boolReturningAsyncFunction = async function(aStr: string) : Promise<boolean> {return true;}
takesVoidReturningAsyncFunction(voidReturningAsyncFunction);
takesVoidReturningAsyncFunction(boolReturningAsyncFunction); //Error here:
//Argument of type '() => Promise<boolean>' is not assignable to parameter of type '() => Promise<void>'.
//  Type 'Promise<boolean>' is not assignable to type 'Promise<void>'.
//    Type 'boolean' is not assignable to type 'void'.ts(2345)

//Set 3: A simpler version of set 2
const takesVoidResolvingPromise = function(starter: Promise<void>) {
	starter.then(function() {/*...*/});
}
const voidResolvingPromise = Promise.resolve();
const boolResolvingPromise = Promise.resolve(true);
takesVoidResolvingPromise(voidResolvingPromise);
takesVoidResolvingPromise(boolResolvingPromise); //Error here:
//Argument of type 'Promise<boolean>' is not assignable to parameter of type 'Promise<void>'.
//  Type 'boolean' is not assignable to type 'void'.ts(2345)

🙁 Actual behavior
Errors as noted in code comments.
🙂 Expected behavior
Async functions that resolve non-void are assignable to async function types that resolve void, just like synchronous functions that return non-void are assignable to synchronous function types that return void.
The string parameter is given in the example code to maintain the idea that the function may have desirable side effects and thus be worth calling, even if the resolve value isn't relevant to the calling context.
The FAQ states (with only example function names changed) that

functions returning non-void assignable to function returning void...is the expected and desired behavior. First, refer to the "substitutability" primer -- the fact that boolReturningFunction returns "more" information than voidReturningFunction is a valid substitution...Another way to think of this is that a void-returning callback type says "I'm not going to look at your return value, if one exists".

Why isn't the same true of async functions?
It's pretty annoying to have to write a wrapper function around every async function just to have a void-resolving function that the TypeScript compiler demands, as another example of valid JavaScript that has to be rewritten with more than just type annotations in a conversion.

Duplicate of #12871 ?

Possibly, the way some of the comments on that have leaned.  Solving that one would address Set 3 above, and therefore also address this one.
However, it seems like it could also be possible to address set 2 without addressing set 3 by creating an assignability rule that only works when it's a function return type, e.g. (*) => Promise<any> being assignable to (*) => Promise<void> without Promise<any> being assignable to Promise<void> in order to avoid potential issues with Promise.all() that seem to be holding up a solution to the other issue.  Thus, it might be possible to fix and close this issue while the other remains open.

Current workaround: use Promise<unknown> instead of Promise<void>

This caught me off guard.
  const options: {
    action1: () => void
    action2: () => Promise<void>
    action3: () => Promise<void> | void
    action4: () => Promise<void> | void
  } = {
    action1: () => true,                  // OK (expected)
    action2: () => Promise.resolve(true), // Type 'Promise<boolean>' is not assignable to type 'Promise<void>'.
    action3: () => true,                  // Type 'boolean' is not assignable to type 'void | Promise<void>'.
    action4: () => Promise.resolve(true), // Type 'Promise<boolean>' is not assignable to type 'void | Promise<void>'.
  }

Tried implementing a simple write stream:
interface WriteStream<T> {
  write(data: T): Promise<void>;
}

Now I want my HTTP client to implement this:
class HttpClient implements WriteStream<HttpMessage> {
  write(data: HttpMessage): Promise<HttpResponse>;
}

Oops, not possible. Even though it should work fine when used:
const http = new HttpClient();
const ws: WriteStream<HttpMessage> = http; // hide object behind interface
const httpData = await http.write(...); // type: HttpMessage
const voidData = await ws.write(...); // type: void


⚠ Bofrost.be has degraded performance

In d411ad4, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1597 ms

Resolved: Bofrost.be performance has improved in ae8f7e0.


About the visualization of pick and place affordance

Dear author,
Thanks for your code about heatmap visualization! Following https://github.com/cliport/cliport/blob/master/notebooks/affordances.ipynb, I can successfully visualize the pick and place location in my own dataset. However, what I see in the heatmap are just some tiny bright points (maybe scale a few pixels) indicating the target location, which are quite different from your figures (the high-lightened areas exactly match the shape of target block). I'm wondering the reason. From my understanding, since the target position is a single pixel, the output logits after successful training should be concentrated on the target pixel. So that the high-lightened area should be focused on certain point(s). Do you have any idea about this?
Thanks!

@qianLyu, sorry, I am a bit confused. The affordances in Fig 4 and Fig 10 were generated with the same affordances.ipynb notebook. Can you provide a concrete example of what is different?

@MohitShridhar, thanks for your reply! My question is about the size of the 'affordance prediction area'. In Fig 4 sim setting, the affordance area of picking contains the whole block. In Fig 4 real setting however, the affordance area of picking just contains tiny bright points. I think the latter one does make sense, since the labels are single pixels, and that the output prediction should match the pixel. What confuses me is just the size of picking affordance in sim setting.

@qianLyu, I think I see what you mean. Why is the sim pick distribution more "spread out" compared to the real  distribution which is "peaky"? It's probably to do with the amount of training data. In sim, the agent seen 1000s of examples where picking anywhere on the block leads to successes. Whereas in the real-world, the agent has only seen a handful number of pick actions, and hence overfits to a specific location, resulting in the peaky distribution. I think if you train the real-world agent with lots of diverse training data, it will probably resemble the sim affordances.

@MohitShridhar, got it! It's reasonable. Thanks a lot.


SMD solar cells

Despite worst brochure ever, the IXYS IXOLAR SolarBIT cells look ideal - and are the only ones I've found that are SMD.
Will need at least 4 of them (maybe 6?) on top of heliotropic platter, and ideally 2 underneath.

Each cell on top of the platter will reduce heat reflectance, resulting in increased heat in the photonics module.

For most of the day the camera will be facing away from sun and tilted downwards, ensuring that the top of the platter is facing the sun.

Example pic:


More details about train.csv

What is the detailed form of the text of the corresponding report in training.csv？

Thank you and refer to https://github.com/RL4M/MRM-pytorch/blob/f2ee62d9fd443ffb47943c01b43130a03b47cb89/README.md?plain=1#L49.


completions of [validateset] parameters fails to escape special characters

Steps to reproduce
function test ([validateset('$test', 'test$', 'test test', '#', '# hello', '#requires more', '<# hello #>')]$test) {echo $test}

test <ALT-SPACE>   # value `$test` will not be escaped or quoted due to `$`, nor will the completions that start with `#`, except `#requires more` gets quoted
# also, `<# hello #>` fails to be quoted
test "<ALT-SPAC>"  # values `$test` and `test$` will not have the `$` escaped

Expected behavior
All special characters (those affecting tokenizing the argument correct intentions) would force quoting or escaping.
Actual behavior
Some characters do, some do not.
This is due to a reliance of using the parser (via CompletionRequiresQuotes() method) to determine if there is more than 1 token, or if the parser has an error parsing the tokens contained in the completion.  In the case of $test the parser sees exactly the one successful token and no more.  I've also determined the same is happening for #
I understand why the parser is being used, but I think the idea is flawed because the parser doesn't know the full context of the completion, and can be swayed, as I have done here with the $test argument value.
Environment data
PowerShell 7.0.0-preview.2
Considerations
This is partially related to other completion bugs I have been reporting.  I'd like to consider writing a more specific helper function/method for handling argument completions that can correctly determine if an argument needs quoted, and/or (if already quoted) properly escaped, and would not rely directly on the parser.  I have covered this idea in #9881, and I am working on converting the PowerShell code example to C#.  Using this helper, all argument type completions will be funneled through a single method for proper quoting and escaping.  This does mean that making tweaks to the parser that might affect how a completion needs to be quoted/escaped would require tweaking this helper as well.

Additionally, and this technically affects all argument completions but is more likely to occur in ValidateSet, argument completion values that start with a dash and follow with a valid identifier start character, or are just dash dash (--) should be quoted or escaped, to prevent them being parsed as a parameter name.


Role update is not working in Attu 2.3.8

Describe the bug:
HI Team,
In Attu 2.3.8 version, Unable to update the existing role by adding "hasPartition","showPartitions","dropPartitions" and "createPartitions". Looks these privileges are added in Attu 23.8 version.
Steps to reproduce:
1.
2.
Attu 2.3.8 issues.pdf

Attu version:
2.3.8
Attu version:

What's your milvus version?
"hasPartition","showPartitions","dropPartitions" and "createPartitions" may not supported for you milvus. I guess these were added in Milvus 2.3.8.

I have upgraded the version to 2.3.8. It was 2.3.3

Can't you update role? I've added one role, and updated ShowPartitions... successfully.


Training immediately converges to white.

Has anyone experienced a data set immediately (few hundred iterations) converging to white?

COLMAP has done a successful solve with all cams.
Does anyone have an idea how to debug?

How do the images look like? Does the white background occupy most of the area?

Hi kwea123,
thanks for sharing your work and the fast reply. Here is a screenshot:

Are you sure COLMAP has successfully resolved the poses? I've heard that too clean white background has a negative impact on the pose solution... you can check this using gui for example.
If the poses are indeed correct, then maybe try to increase the batch size (so that more samples from the object are drawn) or try other optimizers such as radam or ranger. A little more complicated solution can be found here


Clearpass form fallback auth

The goal here is to have the username/password form displayed to users that can't have the CAS ClearPass OK in esup-filemanager.
Indeed, if you use spnego/kerberos on CAS for some desktops, users didn't send password (don't need it) on CAS and CAS can't send password to esup-filemanager.
With this patch, the username/password form will be displayed as fallback authentication.

@vbonamy do you want that we make a release with this feature ?
I can't test a such change but do you think that could be applied to master without risk ?

I think we have to merge this in master too yes.
I don't know if we have to make a release with only this feature ...
Thank you.


Raise exception when missing required packages when using ZeRO

Try import deepspeed when using zero

Users may be confused if we don't throw an error if they want to use ZeRO and didn't install deepspeed.


Added tests and notebook demo for MSA level

I have modified tests for functions that were generalized on separate branches to incorporate MSA-level variables. In addition, I have added a notebook that tests the functionalities of the MSAFipsQuery class.

add query parametrized test of kins don't die for the msa level please

done


article from google web fundamentals

Hi, i think this article should be added somewhere. It provide useful informations about the shadow-dom, composition and styling.
https://developers.google.com/web/fundamentals/web-components/shadowdom

Hi, this article is the first one under the Shadow DOM section 🙂 I appreciate the suggestions, but it is a good idea to check before submitting the issue.

What do you think would be better? Having less categories for articles? I'm open for any ideas how to make it better.


Typo in assigning regex options.

https://github.com/wildbit/mustachio/blob/7e0c16c8d35133e3ba837d88af349be76decd0b2/Mustachio/Tokenizer.cs#L21
It seems like the RegexOptions.Compiled is incorrectly added twice in the constructor.

Looks as a bug to me!

Yeah!


Make git hosting ready

As an open source developer, I'd like to be able to access the Datamesh source code in github so that I can submit tickets, and all the things you'd expect to be able to do when interacting with a modern open-source git project.
Therefore, we should probably:

Fix gitlab <-> github syncing (e.g. force pushes to github to ensure they always work, and pull back)
Tidy up existing tickets to be sure they're ready for public viewing
Move gitlab to gitlab.datamesh.io
Make the datamesh repo public on github on the launch date

GitLab 10.6 now supports the feature we want: showing CI results in GitHub for builds.
In order to make it work for external contributors, we need a bot which we can tell to validate running CI against arbitrary code.


Link in Native ESM Decision Doc 404s

In the Native ESM Decision Doc, You link to the talk More than you want to know about ES6 Modules, however the link https://kentcdodds.com/talks/more-than-you-want-to-know-about-es-6-modules 404s.

Hmmm, it seems to work for me. What do you see?

Maybe I was just confused on the layout. The title of the page is "404: Talk Not Found", but I did see it with all the other cards, it was on the right side. I thought I needed to click on the talk title which took me to the top of that same page with the same time. I'm now seeing in that talk card there are links. It's just not what my eyes were drawn to.

Oh yeah, I'm getting that also. Maybe it has to do with the recent v2 meta changes. I also noticed some viewport issues on my phone which could be related.

i am checking it right now

@kentcdodds,
i've the site with the latest commit before v2 meta and it work.
do you want to revert the changes until we find the regression?

Sure 👍

Deploying the revert right now. https://github.com/kentcdodds/kentcdodds.com/commit/9c45453778d74abf5883ac7e93997da5ab185222


[Feature] Chat with mmdet

Is it an interesting thing to make mmdet and chatgpt interact?
For example, using chatgpt to generate dynamic config and let users launch training and tests in natural language instead of running commands.
This is just a preliminary idea. I don't know whether it is feasible💁

A toy demo


Emails not sent when alert triggers

Hi, I've been looking for a product like this for months. Only problem is that it's very hard to get it to work! I've managed to install everything using the cabot-docker repository (using docker-compose).
The emails don't get sent when the alerts trigger
I've also used tcpdump to check if there was any traffic at all and seems like there's traffic only when the metric recovers, even if no email gets actually sent.
This is my configuration:
SES_HOST=smtp.gmail.com
<EMAIL_ADDRESS>SED_PASSWORD=mypassword
SES_PORT=587
<EMAIL_ADDRESS>
Note that these settings work perfectly with another product (graphite-beacon).
Hope I can get help, this could be such a great product!
Thanks
Alessio

Updated the description as one of the problems (the rota not showing) finally showed after a very long time. Any chance the download could be triggered manually?

Re calendar, it updates every 30 mins.
As for email, I suspect that the problem is that by default the email backend might not be compatible with gmail. See https://github.com/arachnys/cabot/issues/217 which looks similar. Also bear in mind that unless the CABOT_FROM_EMAIL is a registered sending address with gmail, it might not send properly. I'd recommend using Amazon SES or a similar transactional email service (Sendgrid, Mandrill, etc).

Thank you dbuxton,
I'll give it a try with different email providers. I think I have the same issue with Twilio by the way. I don't seem to be able to receive calls either.
I've made sure my user has the mobile phone number set in the database (in the form of +44123123123) and set the variables for the Twilio account:
TWILIO_ACCOUNT_SID=ASDQD02UDEOD2EF
TWILIO_AUTH_TOKEN=fmr4i9f9ng39ng39gn
TWILIO_OUTGOING_NUMBER=+44123123123

Any idea if there's a place I can have a look to troubleshoot this problem? I've checked in /var/log/cabot but there's no useful information at all in there; it just prints out when it fetches from graphite.
I'd like to get at least one alerting method working, so that I can start using it :)
PS: Every time I edit my environment configuration I'd issue the following command:
docker-compose up -d
Thanks again!

@AlessioMartorelli I'm not sure what you mean by receive calls...
You should be able to look on Twilio's own dashboard to see what's going wrong there. If it's not showing anything, that suggests something's wrong on the Cabot end, but otherwise please post the errors here...

@dbuxton sorry maybe I've not explain myself properly.
I've configured a service to alert via Twilio calls and Twilio sms. I'm setting up a threshold so that it triggers so that I could test the configuration. When the alert triggers I was expecting to receive a call and an SMS, but I'm not getting any of them.
I've looked at the Twilio dashboard and I can't see any call coming through so I guess it's a problem with Cabot.
The Twilio section of the configuration has been pasted in my previous comment (replacing the real values). If you can't spot any problem in that configuration the problem might be related to something different in Cabot.
Would you be able to point me to the logs so that I can give you more informations about what is happening?
Again, I've looked into the /var/log/cabot file and I can only see these lines:
INFO 2017-01-22 21:42:30,338 connectionpool 78<PHONE_NUMBER>08160 Starting new HTTP connection (1): graphite.domain.com

Sorry this sounds like a problem that has so many moving parts it's hard to diagnose.
One thing that might not be clear from the docs is that only Checks that are set to CRITICAL can trigger a phone call for a Service.
To be honest, I'd suggest starting off by getting it working with email, and then move on to debugging Twilio.

Yes the checks are set as Critical. I'll try to get the Email working first!

Managed to fix the email problem using a different port which seems to be working on gmail (port 465). Now my configuration looks like this:
SES_HOST=smtp.gmail.com
<EMAIL_ADDRESS>SED_PASSWORD=mypassword
SES_PORT=465
<EMAIL_ADDRESS>

Can confirm now even Twilio calls work perfectly. I think there was a problem with my environment for some reason. I did create the docker container once again and everything worked.
Many thanks for your support and again, great product!

Glad to hear it @AlessioMartorelli


Bump version to 0.50.0

IMPROVEMENT Allow to return a Widget in SideTitles.getTitlesWidget instead of a String. For example, you can pass an Icon widget as a title, #183. Check below samples:

LineChartSample 8 (Source Code)

BarChartSample 7 (Source Code)

BREAKING Structure of FlTitlesData, AxisTitles, and SideTitles are changed. Because we are using a new system which allows you to pass any Flutter Widget as a title instead of passing string, textStyle, textAlign, rotation, ... (Read our Migration Guide)
FEATURE Now we can use any Gradient such as LinearGradient and RadialGradient everywhere we have gradient.
BUGFIX Fix BarChart rods gradient problem, #703.
BREAKING colors property renamed to color to keep only one solid color. And now we have a gradient field instead of colorStops, gradientFrom and gradientTo in following classes: BarChartRodData, BackgroundBarChartRodData, BarAreaData, BetweenBarsData, LineChartBarData. (Read our Migration Guide to learn more about it)

Hi Iman, thanks for the updates. When are you planning to merge it and make it available on pub.dev?

Hi, @onurgunes.
I'm just checking some stuff. I will merge it soon.


Test out of memory

run python3 test.py --config_path ./configs/test/SRGAN_x4-SRGAN_ImageNet-Set5.yaml
error:
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 1579.66 GiB (GPU 0; 79.35 GiB total capacity; 21.76 GiB already allocated; 54.55 GiB free; 23.29 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

It's because of your GPU not being enough. Change the batch size in configs file


Merge JavaScript and Node.JS libraries

Are you interested in merging the client-side algoliasearch library along with
the server-side (Node.JS) library?
The goal would be to have one codebase and the browser side built with browserify.
Browserside should only embed search features like today.
I wonder if you already thought about it.

We solved this with the release of https://github.com/algolia/algoliasearch-client-js V3


Fix width of alias questions on mobile

Recently I fixed the width of the depicts / image focus questions.
It would be good to make the same fix on the alias / text ones so they work better on mobile!

Commit for image stuff was https://github.com/addshore/wikicrowd/commit/5587f80a21f4330ed7e2ee076deba1ca2c92a24a