feat: implement S3 log store with transactions backed by DynamoDb

Description
This log store implementation provides  an alternative approach to allow for multi-cluster writes for use with S3 and DynamoDb. It is compatible with the approach taken in the upstream delta library and enables writers on the JVM (e.g., Apache Spark) and delta-rs to write to the same delta table concurrently.

Not completely finished yet, a bunch of open questions / follow-up items that need to be addressed or discussed:

Previously existing log store is not yet removed.
The PR still uses the unmodified storage::s3 module, so the previous approach for consistent concurrent writes is still used, so locking happens twice (on two different lock tables). This is not hard to remove, but I wanted to seek confirmation that we're going with a hard cut before ripping out precious code. Do we want to offer a configuration option to toggle between the different locking solutions?

No separate crate for the DynamoDbLockClient
Previous implementation depended on a separate crate, dynamodb_lock. That crate is potentially useful in other contexts, as it embodies a more general approach to distributed locking. The lock client suggested here is specifically tied to the delta protocol, so I don't find it necessary to have the code in a separate crate.

No retry / exponential back-off in case of overloading DynamoDb (i.e., ProvisionedThroughputExceeded)
I would like to provide that in a separate PR next week, so it's easier to review I expect the implementation to be somewhat tricky

Setup / Cleanup: no automatic lock table creation, and no functionality to clean up the lock table, e.g. by removing old, irrelevant items.

Some things are pub that shouldn't be.
There's a bunch of functionality that is part of the public API (e.g., DynamoDbLockClient itself). This helped a lot in writing decent integration tests that actually validate the lock table state, and also in injecting specific commit entries to test the "repair" code paths properly. I believe in a narrow, targetted public API though, and I'm open to suggestions here. Happy to delete stuff but actually most of the integration tests rely on that lock client :-/.

Exiting work! Just some initial comments.

Previously existing log store is not yet removed.
The PR still uses the unmodified storage::s3 module, so the previous approach for consistent concurrent writes is still used, so locking happens twice (on two different lock tables). This is not hard to remove, but I wanted to seek confirmation that we're going with a hard cut before ripping out precious code. Do we want to offer a configuration option to toggle between the different locking solutions?

I'm not too invested in S3, so probably my opinion should have too much weight 😆.  I believe the overall direction we were taken is to make this configurable. Specifically, there is a PR (#1825) about to be merged that separates the S3 lock into a separate crate. Would it maybe be possible to base this of that PR?

No separate crate for the DynamoDbLockClient
Previous implementation depended on a separate crate, dynamodb_lock. That crate is potentially useful in other contexts, as it embodies a more general approach to distributed locking. The lock client suggested here is specifically tied to the delta protocol, so I don't find it necessary to have the code in a separate crate.

Makes sense to have that in a deltalake-* crate? Not sure what the best layout would be, I guess to me the main concern is, that dynamo db dependencies are optional.

No retry / exponential back-off in case of overloading DynamoDb (i.e., ProvisionedThroughputExceeded)
I would like to provide that in a separate PR next week, so it's easier to review I expect the implementation to be somewhat tricky

makes sense.

Setup / Cleanup: no automatic lock table creation, and no functionality to clean up the lock table, e.g. by removing old, irrelevant items.

Haven't looked through the actual code yet, but I seem to remember that the databricks mechanism uses a single dynamo table to manage locking for multiple delta tables? If so, it may make sense that creation is separate.

Some things are pub that shouldn't be.
There's a bunch of functionality that is part of the public API (e.g., DynamoDbLockClient itself). This helped a lot in writing decent integration tests that actually validate the lock table state, and also in injecting specific commit entries to test the "repair" code paths properly. I believe in a narrow, targetted public API though, and I'm open to suggestions here. Happy to delete stuff but actually most of the integration tests rely on that lock client :-/.

Elsewhere we have been adopting the visibility crate, to be able to expose some APIs, but make it clear that they are not part of the official API contact of the crate.

I'm not too invested in S3, so probably my opinion should have too much weight 😆. I believe the overall direction we were taken is to make this configurable. Specifically, there is a PR (https://github.com/delta-io/delta-rs/pull/1825) about to be merged that separates the S3 lock into a separate crate. Would it maybe be possible to base this of that PR?

@roeap : unless I'm missing something, the linked PR #1825 only moves catalog-related logic into a separate crate, and S3 itself and its locking logic is unchanged. I don't think there would be any difficulties in rebasing but I also don't think the changes there are related. It touches on a different point, though:
Should I switch to the official AWS SDK instead of rusoto? (@rtyler)

@dispanser  - you are of course correct! i guess aws just triggered something 😆 ... since rusoto is no longer maintained. i think the aws sdk is the way to go ...

Haven't looked through the actual code yet, but I seem to remember that the databricks mechanism uses a single dynamo table to manage locking for multiple delta tables? If so, it may make sense that creation is separate.

Correct, there's a single DynamoDb lock table for a possibly very large number of tables.

Makes sense to have that in a deltalake-* crate? Not sure what the best layout would be, I guess to me the main concern is, that dynamo db dependencies are optional.

I've read through the discussion regarding the crate split at 1713:

deltalake-aws ❔

This crate would contain the dynamodb locking code, and other special case storage logic related to AWS/S3. Right now this code is kind of a mess (IMHO) in the Rust crate. There's some refactoring that @roeap has tried here but we've not merged. Additionally there are some changes that need to be made in https://github.com/delta-io/delta-rs/issues/1601 which would be a good time to break the AWS code out.

and your response wrt object stores:

When it comes to the cloud crates I do have some doubts, since essentially only AWS has any special needs, due to locking. So not even all S3 APIs require any special dependencies. Factoring out the locking logic and mirroring object-stores features may be a way to go. Over there the specific cloud features - aws, azure, gcs - are essentially just legacy, since they are more or less just reference the "cloud" feature.

If the goal of the split is to create crates that make sense to release independently, I'm not sure what a good scope would be: all of S3, or just the lock client code?
I don't feel comfortable making this call, and I don't think it helps the review-ability of the PR if it adds new functionality, moves existing code into a new crate, and rewrites from rusoto to aws sdk all in one big pile.
My proposal would be to do these things in separate PRs, and I'm happy to assist in all of them :-). For now, I'll look into rusoto -> aws sdk for the new lock client logic, but this would result in a deltalake-coredepending on both of these frameworks, I'm not sure that is desirable.

I created a separate branch to play with the rusoto replacement at https://github.com/dispanser/delta-rs/tree/s3dynamodb-logstore-aws-sdk. The mechanics are mostly easy, but one thing that stands out is that the central config loading mechanism is async, from the docs:
let config = aws_config::load_from_env().await;

This leads to config::configure_logstore(options) being async, and from there basically everything that attempts to instantiates a delta table (and a log store) becomes async-poisoned as well. I stopped after adding about 50 async and awaits everywhere. Crucially, the deserialization logic of DeltaTable itself relies on re-creating a LogStore from the deserialized config, and this is sort of a dead end because deserialize can't possibly be async. I'm aware that it's possible to manually block on some async code, but I'd consider that a last resort. Any other ideas?

I've been playing with block_on, but that doesn't seem to work due to:
thread 'test_repair_incomplete_commits' panicked at crates/deltalake-core/src/logstore/s3/lock_client.rs:49:40:
Cannot start a runtime from within a runtime. This happens because a function (like `block_on`) attempted to block the current thread while the thread is being used to drive asynchronous tasks.

All my attempts to work (i.e., google) my way around this have so far failed, e.g following this blog post. Additionally, everyone on the Rust forums and reddit tells you that it's simply a mistake to even try doing this async wrapping sync wrapping async I'm trying to do here.
It seems that the requirement for de-serializing DeltaTable is coming from datafusion's LogicalExtensionCodec trait we implement, and even if we somehow sneak in an async serde replacement, we'd face the very same problem right inside LogicalExtensionCodec::try_decode_table_provider which is not async.
I'm out of my depth here.
As for the rest of this PR, I'd really get a somewhat authorative answer to some questions I raised above:

Do we want to keep the existing locking logic based on LockClient from the dynamodb_lock crate and switch via configuration option?
Would it make sense to put the (new) lock client into a separate crate, and if yes, would that crate be inside or outside of the delta-rs repository? As mentioned above, the lock client presented here is not useful outside of the context of delta, as it's full of delta-specific concepts.

As for the rest of this PR, I'd really get a somewhat authorative answer to some questions I raised above:
Do we want to keep the existing locking logic based on LockClient from the dynamodb_lock crate and switch via configuration option?

The existing locking code in the dynamodb-lock crate is more buggy than I am happy with. I am comfortable making a "hard" break in terms of functionality for the S3DynamoDbLogStore. What is important IMHO is that it works well in concert with Spark writers.

Would it make sense to put the (new) lock client into a separate crate, and if yes, would that crate be inside or outside of the delta-rs repository? As mentioned above, the lock client presented here is not useful outside of the context of delta, as it's full of delta-specific concepts.

I think putting it into a separate crate in this workspace is the correct path forward here. One of the goals for #1713 is that we remove some of the feature surface area of deltalake-core for something like this. That would mean that it would contain the LogStore implementation, and then a crate like deltalake-aws would contain the specific S3 locking code and bits for locking there.
As to the challenges on the block_on approach, what I have seen @wjones127 successfully in private code has been to spawn a system thread that tokio runs the block_on within, and then join on that thread's execution (or something equivalent).  Honestly though, that's kind of the least interesting part of this great work to me, I'm confident we can figure out a decent way to load the AWS config, I think this work can continue by just assuming "somebody else" gives us the config and coming back to the async/sync later

I went ahead and created a separate crate, deltalake-aws. This crate currently only contains the lock client.

I am going to merge it so that work can continue off main prior to the next release

I guess fine if the work is done quickly, but in the past especially QP always emphasised that we wanted to keep main in a release-able state at all times.
For future scenarios I think a topic branch would be a better approach to collaborate on partial work.

@roeap Main has not been in a releasable state because of the substantial works going on with splitting crates and other things for some time, which is why I had created the 0.16.x release branch.  main is certainly buildable which I think is essential, and while technically there's nothing that would prevent us from releasing from it right now, the separation of crates is not clean enough to make sense

@rtyler - good point, since we are splitting, we need to rebuild anyhow...


Menu links go to localhost, which doesn't work.

The links keep going to localhost, which doesn't work, but <IP_ADDRESS>:8000 does. How do I make that change with your template?
Example: http://localhost/login is what I get when I click on the Login button on the left side.

In the ".env" configuration file, there is a line: "APP_URL=".
Just change its value to update the links in the sidebar.
For example: APP_URL=http://<IP_ADDRESS>:8001

I had to change settings in the hosts file to fix it. Thanks!


Ignoring property on EDM causes InvalidOperationException: Can't use schemaId "$B" for type "$A.B". The same schemaId is already used for type "$A.B"

Hi.
When a property is ignored/excluded from the EDM the following exception is thrown when generating swagger.json:
InvalidOperationException: Can't use schemaId "$B" for type "$A.B". The same schemaId is already used for type "$A.B"
I've created a repository which can reproduce the issue here:
https://github.com/icnocop/Swashbuckle.AspNetCore.ODataExample
Using options.CustomSchemaIds(type => $"{type.Assembly.FullName}_{type.FullName}"); indicates the DynamicModel is being generated in a different assembly (ex. T5ab4191d4ee34d8f8b95609e746c9247.DynamicModels,  Version=<IP_ADDRESS>, Culture=neutral,  PublicKeyToken=null_A.B) so I'm thinking its related to https://github.com/dotnet/aspnet-api-versioning/wiki/OData-Model-Substitution.
Do you have any thoughts?
I'm not exactly sure if this issue is related to the other issues with a similar error:
https://github.com/dotnet/aspnet-api-versioning/issues/729
https://github.com/dotnet/aspnet-api-versioning/issues/697
I'm also wondering if the type assembly's full name can/should be included in the exception to help troubleshoot the issue in the future?
I'm using
<PackageReference Include="Microsoft.AspNetCore.OData" Version="7.5.6" />
<PackageReference Include="Microsoft.AspNetCore.OData.Versioning.ApiExplorer" Version="5.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.1.4" />
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="6.1.4" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.1.4" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.1.4" />

Thank you!

Apologies for the delayed follow-up. Did you ever figure this out? From your repro, there isn't anything glaring. I notice there are some custom Swashbuckle annotations. I'm not sure what, if any, effect those would have on things. That's always a possibility since OData is not directly supported by Swashbuckle and API Versioning doesn't directly support Swashbuckle (e.g. no refs). I would consider removing that first just to see if the problem is solved or produces a different result.  Otherwise, there is definitely a chance this is related to model substitution.
The process can be quite complicated. I can't remember if there was a test case for inheritance. There may not be, which could mean there is a bug for that type of setup.  model substitution only comes into play if the model doesn't match the EDM. Since your example only has a single version, there shouldn't be any differences between the types and EDMs (e.g. nothing to substitute).  Maybe something is amiss with the test/matching process.

This definitely could be an issue, but I believe it has been solved. Starting in 6.0, the assembly name will start with V_<version>_ so that you can easily tell which API version the assembly was generated for. Model substitution is a tricky thing. If the type specified matches the EDM, then no substitution takes place. This is required because the API Explorer and OpenAPI generators work purely off of reflection, but the EDM can be subset. If this didn't happen, then what is reported in by the API Explorer would be wrong. Similarly, certain types such as ODataActionParameters is just a dictionary and without this feature, there would be no type explored. The type generated isn't executable, it just provides a signature. Attributes defined by the original type also copied over.
6.0 is just around the corner. You can play with the latest example from here. This also supports OData 8.0. If that solves the problem, then maybe this particular issue isn't work spending more time on.

I also forgot to mention that, unfortunately, a better exception message cannot be provided because that comes from Swashbuckle, not API Versioning or ASP.NET Core.

6.0 Preview 3 is now available (and with support for .NET Core 3.1 😉 ). I believe this issue is now fixed, but you'll want to double-check. I vague remember running into some edge cases that repro'd the problem. I do recall that I made a small change to the way dynamic assemblies are generated. It's always one per API version. The API version is now encoded into the assembly name. It's not a solution, but it doesn't help debug/troubleshoot/identify if the wrong assembly is producing a match. That's how most errors were occurring. 1.0, for example, will have an assembly name V1_0_DynamicModels_<GUID>.

6.0 has been officially released. Can you double-check whether this issue still exists? I suspect it doesn't. If it's resolved, then let's close it out. If it isn't, then I'll reprioritize it in the queue for fixing. Thanks.

Thank you.
I updated to the latest NuGet packages in the sample repo:
https://github.com/icnocop/Swashbuckle.AspNetCore.ODataExample
Even though the exception doesn't occur, the ignored property is not ignored.
In ModelConfiguration.cs:
EntityTypeConfiguration<Animal> animal = builder.EntityType<Animal>();
animal.Ignore(x => x.IgnoredOnEdm);

Generated swagger.json:
"schemas": {
  "Animal": {
    ...
    "properties": {
      ...
      "ignoredOnEdm": {
        "type": "string",
        "nullable": true
      }
    ...

The repro was helpful.
Issue 1
I'm not sure if you'll 😆 or 😭 , but OData strikes again! The first issue is that the controller is wrong. It must be declared like this:
public class AnimalsController : ODataController
{
    [HttpPut]
    public IActionResult Put([FromRoute] long key, [FromBody] Animal animal)
    {
        return this.NoContent();
    }
}

Note that [Route("Animals")] is removed and the parameter name is key. If you get the convention wrong, everything falls down. How do I know? I had a hunch after some digging. I've been bitten by this many times. The OData route debugging is one of the more useful things that was added not so long ago. Add UseODataRouteDebug() and then navigate to ~/$odata. This will show you what controllers match OData routes or not. All of the example projects show this setup for debug builds. You'll see the controller doesn't match and ends up being treated as a regular controller 😫.
As soon as the OData routes were properly detected, substitute models were generated with the IgnoredOnEdm property properly ignored and not generated.
Issue 2
You'll next notice that there are multiple route entries. This is because OData generates templates for Key in Parenthesis and Key by Segment by default. This makes sense for long-time OData clients so they don't have to know which one you're using, but it's yucky for OpenAPI. To fix it, change the global OData options with:
options.RouteOptions.EnableKeyInParenthesis = false;

The current OData examples illustrate this setup.
Issue 3
Now we're getting down to brass tax. It's not a secret that I'm not fan of inheritance of REST APIs; it's nonsensical to me. However, if you want/chose to use it, it's completely up to you. I'm not very familiar with Swashbuckle's Annotation feature, but the way you have it configured will definitely not work. Swashbuckle, like most OpenAPI generators, heavily relies on Reflection.
The API Versioning extensions for the API Explorer uses the EDM to compare it against the model Type you provided. If that type doesn't match, then it will generate a non-executable Type at runtime that can be consumed via the Reflection API in a way that an OpenAPI generator can understand. If the EDM and type agree, then no substitution is necessary. Using the setup:
options.CustomSchemaIds(type => type.AssemblyQualifiedName);

Will highlight this difference. You'll notice the full name of the generated type has randomly generated name in the form of V<version>_<guid>.
The issue here is that using SwaggerSubTypeAttribute will never know what the substituted Type. It is likely impossible to make this work with attributes because it can vary by ApiVersion. If there is an way to configure this setup, then there might be a way to make it work. This is also how you end up with the The same schemaId is already in use for type <type>. because the Type is being discovered from different places. API Versioning doesn't know anything about Swashbuckle directly.
You should definitely be able to make it work by defining a type for each variant of the EDM in each API version, but it's obviously a lot of extra frivolous code. That's the same story for non-OData models. There may be some other way to configure the mapping that will make Swashbuckle happy, but it will take some research. Honestly, it will likely be Swashbuckle-specific. Although I commonly use it for the examples, I don't provide any libraries the depend on it. Even though I don't provide NSwag examples, it's wildly popular and I try not to pick favorites. I'm not sure that I want to maintain additional OpenAPI libraries that could provide this capability (assuming it's generic). If there's a hook to provide it via the Microsoft.OpenApi library (which at least Swashbuckle builds on top of now), I might consider that.

A quick follow up. Is there any more to be done on this issue?
In order to make it work as is, you'd somehow to have to be able to request/map a Type from the IModelTypeBuilder by providing the corresponding Type, ApiVersion, and IEdmStructuredType. I'm not sure how you can achieve that using attributes. Even if you could shoehorn it in, I have a feeling it would look really yucky.
If you really need the inheritance capability, you could create version-specific models for just those cases.  Defining a sound versioning policy, such as N-2, will also reduce the amount of effort required and avoid type explosion.

I don't think there is anything more on this particular issue. 6.1 has been released and the duplicate type issue has definitely been solved. The behavior in Swashbuckle, however, is another matter and something I can't solve. I believe all the touch points for API Versioning have been covered and advance you toward a solution. If not, I'm happy to discuss further or reopen the issue if necessary. Thanks.


[PE-D][Tester A] Unable to follow appendix instructions

Double clicking the jar file does not launch the application

Labels: severity.Low type.FunctionalityBug
original: Jaynon/ped#14

add link to refer to getting started


[feaLib] Make nameid parsing more robust

While working on https://github.com/fonttools/fonttools/issues/780 I noticed that the feaLib parser for nameid statements is a bit simplistic in terms of encodings. For example, it doesn’t handle names with non-BMP characters such as Emoji, and it wrongly assumes that all Macintosh names are MacRoman encoding. fontTools has quite nice encoding utilities, we just need to call them.

I agree. This is a case where I support diverging from the Adobe implementation, i.e. I think the AFDKO code has some simplistic notions about nameid statements and possibly isn’t able to process all of the encoding stuff correctly, but I’d consider that a “deficiency” of AFDKO (perhaps not a bug, but certainly not a feature). It would be great if feaLib accepted full UTF-8 .fea files with real Unicode contents of the nameid statements, and just did the magic.


MP3 fallback to Flash fails in Firefox and Opera.

Using the Joomla 1.5 plugin.
Want to play an MP3 on all browsers, with preference for the html5 player, and fallback to flash when the browser cannot natively play mp3 in its html5 player due to license cost issues (Firefox and Opera are most famous for this).
Working: Safari, IE9, and Chrome (the html5 player kicks in and plays the mp3).
Failing: Firefox and Opera.
Link to the page with this issue:
http://www.pagasleaseattorney.com/for-those-who-like-the-clark-law-firm-on-facebook.html

Firefox (latest version) does not show any player - just a blank space on the page.   Viewing source, audio tag is there.

Why did MediaElement fail to load the flash player??  How do you fix it ??

Opera 11.61 (latest) is putting up the html5 player, but obviously, failing to play anything, because Opera will not play mp3 on html5, it requires flash to play mp3.

Why did MediaElement load the html5 player, and fail to recognize that this browser cannot play mp3 on html5??  Isn't MediaElement supposed to detect if the html5 player on a given browser cannot play the mp3 format, and just fallback (fallforward) to the flash player to play the mp3??  How to fix this ??

You don't appear to have mediaelement.js installed.

Thanks.  The plugin came from here: https://github.com/emirpprime/mediael
Any suggestion where to add the missing file ?

I found it -  it's combined into one js file with the player and it's getting loaded - mediaelement-and-player.min.js
What could be the problem ?  How to fix?


Stop refreshing persons page when a person is deleted

This might solve itself when I finish working on #91 and #95 but filing this so we ensure it is fixed.

This is now affecting all entity pages; changing the title.


format request display amount on submit

Details

There is existing formatting that occurs when the request form loads. This PR reuses that formatting on submit, so if the user navigates back after submitting the amount, the amount is consistently formatted to a valid amount.
Fixed Issues

$ https://github.com/Expensify/App/issues/30505
PROPOSAL: https://github.com/Expensify/App/issues/30505#issuecomment-1782961912
Tests

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

Start a new request for money
Ensure the "Manual" tab is active
Enter "08" for the amount
Press "Next" to navigate forward
Press the top left back arrow in right hand nav (this deviates from the issue steps, but this was all that was required to reproduce)
Observe amount is now "8"
Repeat steps 3-4
Observe amount is again "8"

Offline tests

Not connectivity related.
QA Steps

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

Test steps above apply across all platforms.
PR Author Checklist

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

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

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

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

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

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

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

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

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

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes

[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)

[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

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

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

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

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

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

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/2112202/27e69465-37ee-452a-bf67-77c837988a3a

Android: mWeb Chrome

https://github.com/Expensify/App/assets/2112202/2e3e52e6-8be1-4457-a55a-f70240fe6d46

iOS: Native

https://github.com/Expensify/App/assets/2112202/b1404e05-57b7-491c-b36d-653a30503221

iOS: mWeb Safari

https://github.com/Expensify/App/assets/2112202/894973ec-1346-4066-b251-7cd75d904afc

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/2112202/d1409806-2a64-4293-a402-95e25d212ed1

MacOS: Desktop

https://github.com/Expensify/App/assets/2112202/ae6951ef-aebf-4894-9c66-2edca4547509

@mananjadhav opened a new PR to trigger automation, hope that's okay. This PR replaces #30652.

Reviewer Checklist

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

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

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

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

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

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

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

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

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

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

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

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

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

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/3069065/255e2da4-2d30-4bb9-bac9-9b1bfe89c52e

Android: mWeb Chrome
https://github.com/Expensify/App/assets/3069065/9db3141d-b5df-4ad9-81ed-6267792a0fac

iOS: Native
https://github.com/Expensify/App/assets/3069065/cdfab04a-7255-4328-8635-f74fa9e72647

iOS: mWeb Safari
https://github.com/Expensify/App/assets/3069065/0525e82e-178e-4da9-9481-f870d8d7b550

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/3069065/45a51808-f2bd-49ff-a079-4379c35f8398
https://github.com/Expensify/App/assets/3069065/eea1d212-6aee-44be-8108-64067d4bc1e1

MacOS: Desktop
https://github.com/Expensify/App/assets/3069065/7711c7c8-adf0-4f54-a6f6-ced614561634

Apologies for the delay here. I was out of office. I noticed some lag on running the screens, but it turns out I can see them on main too and that too with my HT account. Hence, nothing to do with this change.

@jasperhuangg I had this up within 24 hours of being hired, still awaiting final review. If there’s any chance my original timing can be honored (was submitted in time to be merged within 72 hours), I’d appreciate it.

@erquhart no worries, we usually  look at the time of the last commit to decide when the PR was finished

@jasperhuangg let me know if I should force push a rebase

quick bump @jasperhuangg on this one. Also can we retrigger the perf-tests. It failed.

@jasperhuangg can you help push this through?

Normally rerunning the perf tests should fix things, I'm not really seeing how the changes proposed in this PR could affect them 🤔

@jasperhuangg  I’m going to push a rebase when I get back to my machine

@jasperhuangg I force pushed, can we rerun tests

@jasperhuangg all passed ✅

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

🚀 Deployed to production by https://github.com/luacmartins in version: 1.4.1-13 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Javadoc has an issue with the CDN

Hi @ullenboom,
Thanks for bringing this to my attention. I've updated the javadoc server with the newest versions and fixed the error you experience. Can you please verify that it works for you now?


Request: return struct instead of interface{}

For example the function: ExecuteStruct(...) = same as Execute(...) but a result as a struct rather than an interface.
Reason for request: sometimes the structure is known and this makes it easier to handle.
Full example:
type Edges [][]struct {
	ID         int    `json:"id"`
	InV        int    `json:"inV"`
	InVLabel   string `json:"inVLabel"`
	Label      string `json:"label"`
	OutV       int    `json:"outV"`
	OutVLabel  string `json:"outVLabel"`
	Properties struct {
		LocationURL string `json:"locationUrl"`
		Type        string `json:"type"`
	} `json:"properties"`
	Type string `json:"type"`
}

var edges *Edges

err := f.client.ExecuteStruct(
	         "SOME-TINKERPOP-QUERY",
	        &edges,
		map[string]string{"uuid": UUID.String()},
		map[string]string{},
	)

I think returning a []][]byte, where each element contains a byte slice containing the JSON result for the request, would also be nice.  Users should be able to unmarshal the response however they way.

+1

Sure, same solution from a different angle.


Exception is raised even if min_epsilon is a positive float in BoundaryAttack

Describe the bug
BoundaryAttack cannot receive min_epsilon.
To Reproduce

Train a model.
Call BoundaryAttack(model, min_epsilon=0.001).
See an exception.

Expected behavior
min_epsilon is a positive float (or None), so 0.001 should be valid.
Cause of the bug
boundary.py:L473-L474
if self.min_epsilon is not None and (isinstance(self.min_epsilon, float) or self.min_epsilon <= 0):
    raise ValueError("The minimum epsilon must be a positive float.")

raise error when self.min_epsilon is float. Therefore, we need not before the isinstance.

Hi @kaitokishi Thank you very much for using ART and reporting this bug! I think your solution of adding the missing not is correct.
Would you be interested to open a pull request with your solution to branch dev_1.7.2? Otherwise we'll include the solution in the upcoming release 1.7.2 in the coming days.

Thank you for your reply. So, I will try making the pull request.

Hi @kaitokishi That's great! Let us know you if you need help or support for the PR!


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target_c0c8614f-6209-45a5-9c66-a4d32b6dbabc/pull/1 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-target_c0c8614f-6209-45a5-9c66-a4d32b6dbabc.git

Docs Build status updates of commit f8ff43a:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-UserAccountBuildPermissionInsufficientError] Owner v-alji no longer has Read permission of the repository https://github.com/opstest2/docs-archive-test-source. It might be due to recent GitHub changes on SSO. Please ask the owner v-alji to logon to Docs Portal https://ops.microsoft.com once again. If it is not the case, please ask anyone of Admin permission of the repo to assign a new owner via Docs Portal https://ops.microsoft.com

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit f8ff43a:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-UserAccountBuildPermissionInsufficientError] Owner v-alji no longer has Read permission of the repository https://github.com/opstest2/docs-archive-test-source. It might be due to recent GitHub changes on SSO. Please ask the owner v-alji to logon to Docs Portal https://ops.microsoft.com once again. If it is not the case, please ask anyone of Admin permission of the repo to assign a new owner via Docs Portal https://ops.microsoft.com

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


email: Fix race conditions with concurrent ScheduledEmail handling.

The main race conditions, which actually happened in production was with
concurrent execution of deliver_email and clear_scheduled_emails.
clear_scheduled_emails could delete all email.users in the middle of
deliver_email execution, causing it to pass empty to_user_ids list to
send_email. We mitigate this by getting the list of user ids in a single
query and moving forward with that snapshot, not having to worry about
database data being mutated anymore.
clear_scheduled_emails had potential race conditions with concurrent
execution of itself due to not locking the appropriate rows upon
selecting them for the purpose of potentially deleting them. FOR UPDATE
locks need to be acquired to prevent simultaneous mutation.
Tested manually with some print+sleep debugging to make some races
happen.
fixes #zulip-2k (sentry)

This is great, thanks @mateuszmandera!  The one thing that seems wrong to me is that we should be logging this sort of anomaly at WARNING level so that it appears in error logs.  I bumped the log level and merged this as f95dd628bdaf5cc72e77f0e2d0e52a20e4e5cf7c.

@timabbott Just to clarify, this isn't really that much of an anomaly - this is a rare, but expected situation to happen - if deliver_email and clear_scheduled_email get run concurrently, this can happen and will be gracefully handled. That's why I put it as info, I'm not sure if it's worth alerting about it.

I would have thought that the transactions added here would make that no longer expected?  If not, maybe we need deliver_email to have an @transaction.atomic too?

@timabbott I don't see how atomic() would fix this. Here is what happens exactly:

manage.py deliver_email is running its loops
It does a query and start looping over the emails it found it should send:

        while True:
            email_jobs_to_deliver = ScheduledEmail.objects.filter(
                scheduled_timestamp__lte=timezone_now())
            if email_jobs_to_deliver:
                for job in email_jobs_to_deliver:
                    try:
                        deliver_email(job)

Assume during this loop clear_scheduled_emails runs and commits its changes while manage.py deliver_email is working.
deliver_email(job) is called on a job that had its users deleted.
Inside the function. job.users.values_list('id') query is run, returning an empty list.

Afaik nothing other than explicit locking can guarantee the job.users many-to-many relationship doesn't get mutated
somewhere during this process. Well, when fetching email_jobs_to_deliver we could fetch the .users field in the
same query, but Django is super clunky with that, e.g. https://stackoverflow.com/questions/12139923/all-the-values-of-the-many-to-many-field-django
so I think it's best to just handle this possibility the way I did in this PR (not sure about the right logging level for this,
but given this is an expected occurence, perhaps INFO is right after all?).


return symbolized keys when using results_as_hash

remove superfluous work when zipping  column
headers and row data

Addresses #154 and #155
Also, what purpose does inserting numbered keys serve? Just wondering because commenting it out in benchmarks makes a huge difference.

def ordered_map_for columns, row
  h = Hash[*columns.zip(row).flatten]
  row.each_with_index { |r, i| h[i] = r }
  h
end

def ordered_map_for2 columns, row
  Hash[columns.zip(row)]
end

require 'benchmark'

columns = %w(a b c d e f g h i j k l m n o p q r s)
row     = %w(1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9)

n = 500000
Benchmark.bm do |x|
  x.report("old ") { n.times do ; ordered_map_for columns, row;  end }
  x.report("new ") { n.times do ; ordered_map_for2 columns, row; end }
end

###########
       user     system      total        real
old  14.130000   0.240000  14.370000 ( 14.622877)
new   6.270000   0.060000   6.330000 (  6.445046)
[Finished in 21.2s]

Also, what purpose does inserting numbered keys serve?

The numbers are vestigial from when Ruby's hashes were not ordered.  I'm fine with this, but it does change the API in a backwards incompatible way, so we'll have to wait for a major rev.  Good news is that if we do a major rev we can drop 1.8 support and eliminate the numbered keys.


[FEAT] Support for Windows GPU version of Deepstack

Is your feature request related to a problem? Please describe.
No
Describe the solution you'd like
As the title says support for GPU of Deepstack on Windows.

Is this related to the DeepStack addon? I can look into publishing the GPU version as well.

Yes sorry that's what I meant. I can get the docker GPU version running and double take sees that it is attached but it returns nothing when I try to click on matches in Double Take. Thank you so much!!

@jakowenko I now use deepstack on a separate Ubuntu machine that has an Nvidia GPU. I set deepstack gpu up on this machine with docker. Does doubletake not support the GPU version of deepstack? When I attempt to train with double take i get a 500 error...training with the same picture on deepstack non-gpu it gives a positive result. Double take and frigate using the gpu works fine.

@jakowenko I now use deepstack on a separate Ubuntu machine that has an Nvidia GPU. I set up deepstack gpu up on this machine with docker. Does doubletake not support the GPU version of deepstack? When I attempt to train with double take i get a 500 error...training with the same picture using deepstack non-gpu gives a positive result.
FYI Double take and Frigate GPU works fine.

Hm...do you get back anything else besides the 500? It's most likely something with DeepStack. The API should work the same across their different versions. Can you replicate the 500 with their examples on their docs? May need to open an issue with them and see if they know what's going on.


Frigate Hass ONVIF support

I have cameras which support onvif. Is there a way to use this in frigate hacs integration to pan and tilt camera?
Thank you very much,
Stefan

https://docs.frigate.video/configuration/cameras#setting-up-camera-ptz-controls


Center positions on focus during generation

Thanks for sharing your great work!
I'm confused about the generation logic.
When generating, the code center positions on focus every step:
R[mol_mask, :_i] -= R_focus[:, None]  # center positions on focus
However, during training , the origin is the center of the whole point cloud.
Usually we want to reduce gap between training vs sampling by also centering positions on the origin.
Is it because Schnet is translation invariant and thus it won't harm performance?

 Thanks for using our code base.
Yes, exactly, since SchNet is invariant to translation, the shift of the absolute positions does not change the extracted features or the predictions in any way. Most importantly, the auxiliary token for the center of mass has the same meaning during training and generation (it is the center of mass of the final structure).
The reason for centering structures on the focus token during generation is that it makes the code easier with respect to the evaluation of the 3d grid, which is also (by design) centered on the focus. Accordingly, we can easily broadcast a single representation of the grid over the whole batch. If we would center the positions on the origin during generation, we would need to shift the 3d grid positions in a different way for each molecule in the batch since their focus atoms are at different positions. This is of course also possible and would lead to the same results but is less convenient to write down.


[test-triage] chip_sw_sysrst_ctrl_outputs

Hierarchy of regression failure
Chip Level
Failure Description
UVM_FATAL @ * us: (chip_sw_sysrst_ctrl_outputs_vseq.sv:113) [chip_sw_sysrst_ctrl_outputs_vseq] Check failed output_pad_read_values == OUTPUT_NONE_SET (Z [0xZ0] vs * [*]) has 3 failures:
Test chip_sw_sysrst_ctrl_outputs has 3 failures.
0.chip_sw_sysrst_ctrl_outputs.4035106373
Line 622, in log /container/opentitan-public/scratch/os_regression/chip_earlgrey_asic-sim-vcs/0.chip_sw_sysrst_ctrl_outputs/latest/run.log
UVM_FATAL @ 3080.375634 us: (chip_sw_sysrst_ctrl_outputs_vseq.sv:113) [uvm_test_top.env.virtual_sequencer.chip_sw_sysrst_ctrl_outputs_vseq] Check failed output_pad_read_values == OUTPUT_NONE_SET (Z [0xZ0] vs 0 [0x0])
UVM_INFO @ 3080.375634 us: (uvm_report_catcher.svh:705) [UVM/REPORT/CATCHER]
--- UVM Report catcher Summary ---
1.chip_sw_sysrst_ctrl_outputs.1115657219
Line 621, in log /container/opentitan-public/scratch/os_regression/chip_earlgrey_asic-sim-vcs/1.chip_sw_sysrst_ctrl_outputs/latest/run.log
UVM_FATAL @ 3018.450180 us: (chip_sw_sysrst_ctrl_outputs_vseq.sv:113) [uvm_test_top.env.virtual_sequencer.chip_sw_sysrst_ctrl_outputs_vseq] Check failed output_pad_read_values == OUTPUT_NONE_SET (Z [0xZ0] vs 0 [0x0])
UVM_INFO @ 3018.450180 us: (uvm_report_catcher.svh:705) [UVM/REPORT/CATCHER]
--- UVM Report catcher Summary ---
... and 1 more failures.
Steps to Reproduce

GitHub Revision: 3e32a31a2
dvsim invocation command to reproduce the failure, inclusive of build and run seeds:
./util/dvsim/dvsim.py hw/top_earlgrey/dv/chip_sim_cfg.hjson -i chip_sw_sysrst_ctrl_outputs --build-seed<PHONE_NUMBER> --fixed-seed<PHONE_NUMBER> --waves fsdb

Tests with similar or related failures
No response

This does not appear to have resolved the issue @msfschaffner
Nightlies still showing issues.

Tests
2022-11-07 08:08:10
2022-11-06 07:11:02
2022-11-05 07:11:23
2022-11-04 07:12:05
2022-11-03 07:11:23
2022-11-02 07:03:26
2022-11-01 07:10:18
2022-10-27 07:09:48
2022-10-26 07:06:46
2022-10-25 07:06:33
Suite

201
chip_sw_sysrst_ctrl_outputs
0
0
0
0
0
0
100
100
100
100
chip_sw_sysrst_ctrl_outputs

We just merged this yesterday, so the fix has not run through CI yet. We can reopen this bug to confirm, though (it got auto-closed since I linked the issue in the PR).

@msfschaffner this has passed the last 3 nightlies now - so I'm happy to close this out. Please re-open if there is something else you want to check.

Tests
2022-11-10 08:10:06
2022-11-09 08:04:06
2022-11-08 08:03:42
2022-11-07 08:08:10
2022-11-06 07:11:02
2022-11-05 07:11:23
2022-11-04 07:12:05
2022-11-03 07:11:23
2022-11-02 07:03:26
2022-11-01 07:10:18
Suite

191
chip_sw_sysrst_ctrl_outputs
100
100
100
0
0
0
0
0
0
100
chip_sw_sysrst_ctrl_outputs


Make sure unit is really a unit, use fits format

Fix for the strange unit in the metadata as seen in @kosack  talk:

yeah, I noticed that during the talk! clearly a but strange

perhaps "vounit" format should be used. It's similar to FITS, but a but more modernized

Changed to vounit format

Ubuntu 18.04, Codename bionic beaver


Spotify shows a pop up ad

Describe the bug
Spotify shows a pop up offering premium sometimes (random) [Windows 10]

It can't be blocked, unfortunately, because it's not an ad. I'm trying to fix this using Spicetify in my repo https://github.com/Daksh777/SpotifyNoPremium and you can follow the issue https://github.com/Daksh777/SpotifyNoPremium/issues/23 for more updates.


Location and range selection

Reason (Why?)
The user shall be able to select a location and a range.
Solution (What?)
It contains two components:

A location input field: You should be able to enter the name or PLZ of a location. While typing the field should show 10 results which are based on the input and a specified rank.
A range input field: You should be able to select between 10km, 25km, 50km, everywhere.

Not doing
The creation of the csv file, the location field is based on and the algorithm which communicates with ES.
Relation to other Issues
#13 Implementation of location based search: Gives the context to this issue.
Acceptance criteria
The location input field shows the correct locations.
The range input field contains: 10km, 25km, 50km, everywhere.

Consider the detailed specification of location based search in #13:
To implement location based search there are two ends to be considered:
(a) location search input by user
(b) location information in data
Ad (a) location search input by user:
There are two input fields for location information:

 location (text input field with autosuggest)

 range (dropdown: e.g., 10km, 25km, 50km, everywhere)

In the location text input field, the user shall be able to enter all cities or PLZ (ZIP codes) in Germany . The AutoSuggest shall allow selecting one.
Data basis, e.g. https://www.suche-postleitzahl.org/downloads
Suggestion: load the city names and PLZ on the start of the web app (size shouldn’t be too large) and use in autoSuggest.
The data for AutoSuggest must contain the following attributes:

   name, e.g., „Friedberg(Hessen)“

   ZIP code: e.g., 61169

   lat, lon

   rank

Name and ZIP are used for autoSuggest and are displayed. E.g.

   entering “Fried” -> autoSuggest “61169 Friedberg (Hessen)

   entering “611” -> autoSuggest “61169 Friedberg (Hessen)

lat, lon are used for querying the ElasticSearch server.
rank reveals the size of city (area) and is used for selecting autosuggest entries if there are too many matches (see below).
Special case: Cities with several ZIP codes, e.g., Frankfurt.
Then, an additional entry for all ZIP codes shall be suggested,
e.g., entering “Frankf” -> autsuggest:

   Frankfurt am Main (alle)

   Frankfurt (Oder) (alle)

   60306 Frankfurt am Main

   60314 Frankfurt am Main

   15230 Frankfurt (Oder)

   15232 Frankfurt (Oder)

The lat, lon for for an aggregated entry like “Frankfurt am Main (alle)” shall be in the center of the city.
AutoSuggest shall be limited to 10 entries. If there are more candidates matching the search string, a selection shall be made based on relevance (rank of entry reveals size of city) and diversity (e.g., regional difference).  A good example is Frankfurt above: various examples of Frankfurt am Main and Frankfurt (Oder) are displayed.
Browser location information:
If the browser of the used contains location information, then location text field shall be initialized with this location (range initialized with “everywhere)
Ad (b) location information in data
Each post in the data base shall contain lat, lon. Finding a suitable lat, lon for each post is part of the semantic enrichment process in ETL.
During search, the Geo-distance query feature of ElasticSearch can be used:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-query.html
Here, the lat/lon information from the autoSuggest of the location search input and the range information by the user are used as query inputs and the lat/lon information of the data is matched.

Von: JanF<EMAIL_ADDRESS>Gesendet: Sonntag, 31. Mai 2020 16:04
An: hochschule-darmstadt/einander-helfen<EMAIL_ADDRESS>Cc: Subscribed<EMAIL_ADDRESS>Betreff: [hochschule-darmstadt/einander-helfen] Location and range selection (#24)
Reason (Why?)
The user shall be able to select a location and a range.
Solution (What?)
It contains two components:

A location input field: You should be able to enter the name or PLZ of a location. While typing the field should show 10 results which are based on the input and a specified rank.
A range input field: You should be able to select between 10km, 25km, 50km, everywhere.

Not doing
The creation of the csv file, the location field is based on and the algorithm which communicates with ES.
Relation to other Issues
#13 https://github.com/hochschule-darmstadt/einander-helfen/issues/13  Implementation of location based search: Gives the context to this issue.
Acceptance criteria
The location input field shows the correct locations.
The range input field contains: 10km, 25km, 50km, everywhere.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/hochschule-darmstadt/einander-helfen/issues/24 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ABYWHSZNJWHKTY7MB56YSVLRUJPUFANCNFSM4NPFQX6A .  https://github.com/notifications/beacon/ABYWHS4JUO2OBRQCIJCFDC3RUJPUFA5CNFSM4NPFQX6KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4JLOB7BQ.gif


Recommended way to run Hugo CLI in victor-hugo?

What's the recommended way to use the hugo cli from within a victor-hugo project?
It appears newer versions of victor-hugo switched to the hugo-bin package. I've tried running hugo cli via /node_modules/hugo-bin and hugo cli installed globally. In both cases I received errors; not being able to locate site's config, or something like that.
Apologies for such a silly question. I know this should probably be obvious.

I don't understand your question properly.
For development you just use npm start in root folder.
If you want any special Hugo behaviour with vector-hugo boilerplate, you have to modify it's task runner file gulpfile.babel.js.

@midzer example: https://gohugo.io/commands/hugo_new/

Okay, in this case you better use your global Hugo binary, I think.
On the other hand, you could still modify package.json and add addition commands via script entry.

Apologies, must have been doing something wrong before. Using the global Hugo binary from the project route to create new content files is working fine now.

I also wondered about a clean way to do this (feels like it would be nice for victor hugo to support it). The solution was to change the command for the"hugo" script in package.json to.
"hugo": "node_modules/.bin/hugo --source site/"`
Then you can issue the following command (from your project root) to create a new page:
npm run hugo -- new post/i-love-victor-hugo.md


Identity and signing key - architectural update

We have some problems in the codebase today with a half-formed identity approach:

A Message contains a single Author field, and it is ambiguous whether this is the identity or the signing key
A shim Identity plugin designed to resolve an opaque string (such as a DID) into an identity on the platform... but without a definition of what that identity is
The requirement for us to properly solve Fabric signing keys and round-trip these to events like we do in ethereum - currently blocking merge of #184
The fact that both Ethereum and Fabric connectors have the concept of abstract lookup keys for actual signing keys (HD Wallets in Ethereum, and CN shortnames in Fabric)
The requirement to handle anonymous signing of transactions for privacy preservation
The requirement that the database representation of identity in a Message / Token Pool or On-chain event (coming soon) etc. must be consistent in every database of members allowed to see the object, even if they didn't submit the transaction

This issue will track a number of threads needed to resolve this.

A few of us had a whiteboarding session, and the outcome was this beautiful wall of noise... and the conclusions below it:

[ ] We need to split Author into two fields - one representing identity, and one representing signing key
[ ] We need to split Key as a different object to Org and allow multiple keys
[ ] We need a consistent URI scheme for signing Keys
[x] We need to create a matrix of how input identity, maps to the stored Message objects, and what verification is performed

Here is first attempt at the matrix, for @jimthematrix to review as he works on the other items.

firefly_message_identity_matrix_20210907.pdf

The matrix helps a lot!
Fabric doesn't really have an anonymous equivalent to an HD Wallet based signing key, because since it's x509 certificate based, the CA's identity must always be disclosed, which gives away the org identity it belongs to. Fabric doesn't allow a signer certificate that is issued by an unknown authority to interact with a channel.
I think this means with Fabric, private messages must either be unpinned, or be pinned with a known identity. whether the pinning identity is registered with the network map or not, does not change the fact that its identity can be verified and associated with a member org based on the cert itself.

I wonder if we actually have 3 levels of identity objects: Org =1--*=> Identity =1--*=> Key
An org can have multiple registered signing identities. A signing identity can have multiple signing keys (as a result of key rotation, or an identity having a primary key and a backup key for recovery). I know we talked about some of this, but don't know if your model above was deliberately collapsing signing keys with signing identities.

This is a great point.
Maybe next step is at a database/entity level, is to sketch out what information would be stored by FireFly in a 2 object, vs. 3 object model.
I guess in my mind to date, an organization in the Firefly is one possible type of identity. A node always felt like another type. To your point that's probably incorrect thinking.
I'm hoping I can find a mechanical step forwards by introducing an Identity Manager component (distinct from a plug point), that helps with the mechanics of getting all this logic in one place in the code.
Then if we need to evolve the concept of identity a bit, at least it's a self-contained task with minimal side effects.

The thing on Fabric I'd read about was: https://hyperledger-fabric.readthedocs.io/en/release-1.2/idemix.html
However, 99% case certainly feels like having a channel scoped to a set of verifiers where disclosing transaction submitters is considered low-risk metadata leakage. But probably a conversation for other threads and issues.

@nguyer and I have been working on #192, which is intending to get the engineering started on implementing the split of author and key.
In doing this work, we will be carving out a place in the code that a governance plug point should exist and does not today:
When adding a new root org to the network, it should be possible for plugins to provide external verification that this member is authorized to create a new root identity.

Quick slide pulled together to aid the community discussion on 9/29

[firefly_discussion_identity_20210929.pptx](https://github.com/hyperledger/firefly/files/7252368/firefly_discussion_identity_20210929.pptx)

This thread has great points to ponder upon. However, I see blockchain pinning of transactions and anonymous signature verification are stressed throughout in designing the solution. Idemix in Fabric attempts to dissolve an identity's authorized attributes but does less on anonymizing the issuer's identity. I had a different thought altogether about identity management at the connectors. But before that, it make sense to understand the current identity model in FireFly, could you please point me to more information?

Closed in favor of further discussion and feedback in the FIR https://github.com/hyperledger/firefly-fir/pull/9


fix: key error

Exception in thread Thread-3 ():
Traceback (most recent call last):
File<EMAIL_ADDRESS>line 1073, in _bootstrap_inner
self.run()
File<EMAIL_ADDRESS>line 1010, in run
self._target(*self._args, **self._kwargs)
File "/Users/ayomawijethunga/git/devika/devika.py", line 90, in
thread = Thread(target=lambda: agent.subsequent_execute(message, project_name))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ayomawijethunga/git/devika/src/agents/agent.py", line 216, in subsequent_execute
code = self.feature.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/Users/ayomawijethunga/git/devika/src/agents/feature/feature.py", line 115, in execute
self.emulate_code_writing(valid_response, project_name)
File "/Users/ayomawijethunga/git/devika/src/agents/feature/feature.py", line 89, in emulate_code_writing
code = file["code"]
~~~~^^^^^^^^
TypeError: string indices must be integers, not 'str'

already solved.


loss increasing

Hi, bro. I have just adjusted the epoch from 200 to 300, when training process going to epoch 100, all loss items have a significant increase. Do you know the reason ? Thanks.

Yeah I have  observed the same exact thing. Could you find any reason @FlyingAnt2018  ?

Yeah I have observed the same exact thing. Could you find any reason @FlyingAnt2018 ?

lr too large

Could you provide the the lr you used to train it on 300 epochs ?

Hello. I'm sorry for the delay in answering. 😢
I'll check what you said and get back to you soon.
Thank you.

Hello. I'm sorry for the delay in answering. 😢 I'll check what you said and get back to you soon.
Thank you.
I have observed the same problem, have you solved it? I think it's a matter of learning rate.

I've found that this doesn't happen when the batch size is 8, but it does happen when it's 24. it can resume training from ckpt before loss incressing then loss will decreases.

I have observed the same exact thing while training with nuscenes, but it didn't happen with KITTI.


Fix Bundler on Travis CI

Let's see how this goes...

👍 👍 !! :smile: Thanks so much! It's soooo nice to have help with chores like that. Thanks for figuring out the problem!

Noted in the changelog for next version - https://github.com/nathanl/authority/commit/e2d2b7c9e3c6ca60b6cfe3e0fed5dc9487e88a66
Not doing a release right now since there are no actual code changes, but I really appreciate your work.

This is now released 🎉

👍


Can't test or compile sub-model code after upgrade to arrow-rs 17.0.0

Describe the bug
After upgrade to 17.0.0
I can't execute below command to build or test sub-model
cargo test  --manifest-path  arrow-datafusion/datafusion/common/Cargo.toml
   Compiling serde_json v1.0.78
error: expected item, found `"serde_json requires that either `std` (default) or `alloc` feature is enabled"`
 --> /Users/kliu3/.cargo/registry/src/mirrors.sjtug.sjtu.edu.cn-7a04d2510079875b/serde_json-1.0.78/src/features_check/error.rs:1:1
  |
1 | "serde_json requires that either `std` (default) or `alloc` feature is enabled"
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected item

I just want to test the sub-model.
I think this is caused by the arrow-rs with some changes for Cargo dependency https://github.com/apache/arrow-rs/issues/1876
@martin-g
@alamb
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Additional context
Add any other context about the problem here.

I try to resolve it by adding the
default = ["crypto_expressions", "regex_expressions", "unicode_expressions", "serde_json_alloc"]
serde_json_alloc = ["serde_json/std"]

to the toml file.
But I am not sure if it is right

Perhaps try updating serde_json, I also ran into this issue and deleting the lockfile made things work again

Do we need to fix that by give a pull request?

Just update lock for the dependency


Panic with Go 1.20.3

First time user of golds and wanted to check it out, trying to find a way to create docs then publish them to a separate web server.
Sadly, just running the basics is not working when merely throwing it at our source tree:
$ go version                                                                                go version go1.20.3 darwin/arm64
$ go install go101.org/golds@latest
go: downloading go101.org/golds v0.6.4
go: downloading golang.org/x/net v0.7.0
go: downloading golang.org/x/text v0.7.0
go: downloading golang.org/x/tools v0.6.0
go: downloading golang.org/x/mod v0.8.0
go: downloading golang.org/x/sys v0.5.0
$ golds ./...                                                                                2 ↵
[Analyzing] Start analyzing ...
[Analyzing] Preparation done: 796.631166ms
[Analyzing] 2 files parsed: 222.25µs
[Analyzing] 4 files parsed: 302.292µs
[Analyzing] 8 files parsed: 583.084µs
[Analyzing] 16 files parsed: 1.30475ms
[Analyzing] 32 files parsed: 2.727459ms
[Analyzing] 64 files parsed: 3.980084ms
[Analyzing] 128 files parsed: 8.191792ms
[Analyzing] 256 files parsed: 19.165959ms
[Analyzing] 512 files parsed: 152.815792ms
[Analyzing] 1024 files parsed: 252.670084ms
[Analyzing] 2048 files parsed: 563.152209ms
[Analyzing] All 2400 files are parsed: 993.025042ms
[Analyzing] Collected 423 packages: 487.663375ms
[Analyzing] Collected 57 modules: 515.903417ms
[Analyzing] Sorted packages by dependency relations: 295.583µs
[Analyzing] Collected Source Files: 580µs
[Analyzing] Collected declarations: 36.28525ms
panic: unnamed interface should have collected direct selectors now. &code.TypeInfo{TT:(*types.Interface)(0x14021a4b810), Exprs:[]ast.Expr(nil), Underlying:(*code.TypeInfo)(0x14021b122c0), TypeName:(*code.TypeName)(nil), Instantiated:(*code.InstantiatedInfo)(nil), Implements:[]code.Implementation(nil), ImplementedBys:[]*code.TypeInfo(nil), Aliases:[]*code.TypeName(nil), Underlieds:[]*code.TypeName(nil), DirectSelectors:[]*code.Selector(nil), EmbeddingFields:0, AllMethods:[]*code.Selector(nil), AllFields:[]*code.Selector(nil), AllSelectors:map[string]*code.Selector(nil), AsTypesOf:[]code.ValueResource(nil), AsInputsOf:[]code.ValueResource(nil), AsOutputsOf:[]code.ValueResource(nil), attributes:0x20000000, index:0x8948, counter:0x8949}

goroutine 38 [running]:
go101.org/golds/code.(*CodeAnalyzer).collectSelectorsForInterfaceType(0x14014a61c18?, 0x14021b122c0, 0x0, 0x8949, 0x14014a61c20)
	/Users/myuser/go/pkg/mod/go101.org/golds@v0.6.4/code/code-analyse.go:1118 +0x7dc
go101.org/golds/code.(*CodeAnalyzer).collectSelectors(0x14000156000)
	/Users/myuser/go/pkg/mod/go101.org/golds@v0.6.4/code/code-analyse.go:937 +0xbc
go101.org/golds/code.(*CodeAnalyzer).AnalyzePackages(0x14000156000, 0x14014a61dd0)
	/Users/myuser/go/pkg/mod/go101.org/golds@v0.6.4/code/code-analyse.go:59 +0x1c8
go101.org/golds/internal/server.(*docServer).analyze(0x140041a2000, {0x140000b8010, 0x1, 0x1}, {{0x104c1a3d7, 0x6}, {0x14000028025, 0xb}, 0x0, 0x0, ...}, ...)
	/Users/myuser/go/pkg/mod/go101.org/golds@v0.6.4/internal/server/server.go:348 +0x43c
go101.org/golds/internal/server.Run.func1()
	/Users/myuser/go/pkg/mod/go101.org/golds@v0.6.4/internal/server/server.go:135 +0x9c
created by go101.org/golds/internal/server.Run
	/Users/myuser/go/pkg/mod/go101.org/golds@v0.6.4/internal/server/server.go:134 +0x5d8

Any suggestions to further investigate this?
$ golds toolchain

works, for comparison. The code being analysed is working, compiling, testable and running.

@Marakai
Thanks for trying Golds and making this report.
If your project is open sourced, then it would be very helpful for me to investigate this problem. But I guess it is not.
Is your project using custom generics?
I will try to improve the panic messages to locate which type causes this problem in several days.

No custom generics. Yet... (trying to hold back my team members :-P)
And indeed, the project is sadly not OSS, it's company internal.

@Marakai
I just pushed a new commit which will output more info in the panic message.
It might be helpful to locate which type causes the problem (but I'm not 100% sure).
It you would like to help me investigate the problem, you can install golds by cloning
this repo and run go install, or run go install go101.org/golds@develop to install
Golds with this commit.

Thanks, I will give this a go (haha!)

With the preview I get
peInfo(nil), Aliases:[]*code.TypeName(nil), Underlieds:[]*code.TypeName(nil), DirectSelectors:[]*code.Selector(nil), EmbeddingFields:0, AllMethods:[]*code.Selector(nil), AllFields:[]*code.Selector(nil), AllSelectors:map[string]*code.Selector(nil), AsTypesOf:[]code.ValueResource(nil), AsInputsOf:[]code.ValueResource(nil), AsOutputsOf:[]code.ValueResource(nil), attributes:0x20000000, index:0x88a6, counter:0x88a7}.
More info:
  IsMethodSet(): true
  IsImplicit(): false
  NumEmbeddeds(): 0
  NumMethods(): 1
    Method(0): func (github.com/jellydator/ttlcache/v3.Loader[K, V]).Load(c *github.com/jellydator/ttlcache/v3.Cache[K, V], key K) *github.com/jellydator/ttlcache/v3.Item[K, V]

Verifying that I'm running the preview:
 golds -version
Golds v0.6.5-preview

Hi, I encountered this problem as well today. If there is any pointer you might have on where I could look to begin or untangle a bug fix for this, I would appreciate it.

@Marakai
I just submitted a new commit. I have checked that it is okay to analyze  the github.com/jellydator/ttlcache/v3 module.
But I'm not sure if there are some other cases I haven't aware of.
@krashanoff
Does this commit fix the problem you encountered?

If it is okay to analyze both of your projects. I will create a new release.

@go101 Outstanding work! Was able to analyze my project (also closed source company-internal, unfortunately) without a hitch.
Unrelated, but if there's any small bug I could pick up sometime to begin contributing to golds, I'd be more than happy to.

@krashanoff
I'm not aware of any such non-fixed small bugs now.
Certainly. there should be many bugs in this project.
But the user base of this tool is still very small, so most of them haven't been found yet. :)


Simulating water for lakes, marsh or rivers

I was playing with the shallow water script but it's still using the data from the main ocean rendered. So I was just wondering if there's a feature in the works to simulate lakes, rivers, ponds etc? (Water colour, wave height etc independent from the ocean). Or perhaps I could just use a different asset. Only thing is my project is HDRP and you guys seem to be the only one who support it at the moment.
Cheers,
Shane

Thanks for your interest in that feature. There is #361 being actively worked on. I recommend having a look. I'll close this as it is a duplicate of #345


Add NameSilo extension

Description
This is a Raycast extension for NameSilo. With this extension, you can fetch latest domain pricing and view Domains, Orders, Account Balance. You can also run a Whois Check for a domain. In this version I have only implemented some initial read-only commands. I will add more commands and features in the future.
Screencast
NOTE: This screencast is using a Sandbox/OTE account; I do have a real NameSilo account but OTE makes it easier to experiment.
https://github.com/raycast/extensions/assets/30526133/151159ae-40d9-464b-a071-33563d3d65e2
Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Hi Milena!
I'm 100% able to reproduce this. Tbh, as I've been using the NameSilo API I've come across inconsistencies and bugs some of which I've emailed the NameSilo team with and they have responded. Their WHOIS endpoint seems to not handle most TLDs well. I've modified the markdown but I have not removed the command itself because maybe the team will modify/fix endpoint in near future.
https://github.com/raycast/extensions/assets/30526133/300ea767-588d-4472-950a-9e63fe81fa9f
An extract from the NameSilo team's reply:


Add optional whitelisting of which tasks can be started using Butler's REST API

Is your feature request related to a problem? Please describe.
New feature.
Whitelisting of tasks can be useful if a Sense admin only want to expose some tasks that should be reloadable by 3rd party systems.
Several kinds of whitelisting should be offered:

Exact task IDs
Tags controlling which tasks can be started
Custom Properties controlling which tasks can be started

Duplicate of #284. Closing this issue in favour of #284.


Add support for platforms pass through

This should enable us to build images targeting different platforms (like modern macs).
Useful for running images locally while developing.
Co-authored-by: Per-Christian Nielsen<EMAIL_ADDRESS>Co-authored-by: Ingrid Fosså<EMAIL_ADDRESS>

Beklager at dette tok veldig lang tid. Takk! :)


Flex Props are inconsistent

Greetings!
Thanks for publishing such a useful library, really like the minimal and no-nonsense approach! Kudos.
With that being said,  I find the Flex Props inconsistent and surprising.
Expected behavior
justifyContent and alignItems should expect the standard css values, or at least accept them along with the shorthand version implemented by Mineral.
I also think the short form is less semantically correct, saying justify content with space-between actually makes more sense than justify content with between to me.
Furthermore, the short form ignores the difference of flex-start and start which are different options as per spec.
Current behavior
Currently, Flex justifyContent accepts: 'start' | 'end' | 'center' | 'around' | 'between' | 'evenly' instead of the standard values of 'start' | 'space-around' | 'space-between'  et al. Same goes for alignItems
Possible solution
While the idea of a shorthand is neat, I think the confusion that it creates is not worth it, most developers use auto-completion anyways.
The simplest solution would be to support the standard long form of the value and possibly even deprecate the short form in the long run for the sake of simplicity.

This is good feedback, @omeid. Thanks!
Would you be open to submitting a PR for this work? Here's a quick summary of changes:

Adjust the two highlighted functions here: https://github.com/mineral-ui/mineral-ui/blob/master/src/library/Flex/styled.js#L8-L14
Update the related constants here: https://github.com/mineral-ui/mineral-ui/blob/master/src/library/Flex/constants.js#L2-L7, which are then used for Flow types, propTypes and prop docs
Update the relevant examples: https://github.com/mineral-ui/mineral-ui/blob/master/src/website/app/demos/Flex/Flex/examples/alignItems.js & https://github.com/mineral-ui/mineral-ui/blob/master/src/website/app/demos/Flex/Flex/examples/justifyContent.js
Then, for consistency:

Apply these changes to FlexItem's alignSelf as well and check FlexItem and StartEnd for other necessary changes


Fix ignored test: DeploymentTests.rolloutStartSetGetTargetCommitTests()

In which file did you encounter the issue?
https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/gameservices/v1alpha/src/test/java/com/google/cloud/gameservices/samples/DeploymentTests.java#L112
Did you change the file? If so, how?
No
Describe the issue
The test is ignored.

Resolved by #2272


Add an example of use of image description using GPT-4o

Let's discuss how we can add that to the AI Service.

Yes, AI Service needs some love.
cc @langchain4j

https://github.com/langchain4j/langchain4j/pull/1028 seems to be the relevant upstream effort

As I have mentioned during the call, there is a PR that adds images to AI Services. I will check it after the release

@jmartisk what you do you think about adding the image description capability to the DevUI?

I have that in progress (https://github.com/quarkiverse/quarkus-langchain4j/issues/458) but there's still the problem with uploading larger images (I figured out how to raise the limit, but even then it is very unstable and unreliable)

I'll try again, but probably after the F2F meeting

🙏🏼


training code?

Thanks for great work! Is there any specific time to release training code?

Sorry! We have no plans to release the training code.  Our code is modified from LiveSpeechPortraits, Thin-Plate-Spline-Motion-Model , FaceFormer. You can look for clues with the help of them.


Fix Module Sources in Examples

what

Examples use ../../ module source location which is confusing

why

Should use canonical github URLs

Addressed in https://github.com/cloudposse/terraform-null-label/pull/36


i cant double triple t spin

how am i supposed to send over 10 lines at the start of the game now!

SRS Plus Super Rotation Tetris Kicks are planned for beta 5, along with multiplayer PvP and 9 unique classes to choose from, along with a new "King of the Hill" gamemode, and support for up to 100 players.


count.posts returns primary author posts only (inconsistent)

Steps to reproduce

Ensure you have two authors.
Create some posts with author X, set him as primary author.
Create 1-2 posts with the author Y and set the author X as secondary author.
Serve author X author page. You should see all posts who he is involved in.
Now fetch count.posts with the {{get}} helper ({{#get "users" include="count.posts"}}).
The count should be incorrect, because we only count the primary author posts.

IMO looks inconsistent to me. Both should show the same count.
Code which looks wrong is this function.. This function should fetch all posts where the user is primary or secondary or whatever author.
Ghost: master

Was reported in the forum, see.


Export Formats

Currently the only format a user can export in is CSV, need more formats like PDF, XLSX, JSON, etc...

Implemented: JSON, CSV, & PDF


Could you please provide the weights you have trained? Thank you very much.

Could you please provide the weights you have trained? Thank you very much.

Could you please provide the weights you have trained? Thank you very much.

Can you provide pre training weights

Updated the README with the links to the pretrained models.


Paginate faster in agenda view

Agenda view previous/next navigation feels awkward when the calendar is sparse. Since the default agenda range spans a month, wouldn't paginating it month by month be better? For example, if there's an item today and the previous item is 6 months ago, one has to click some 150-180 times previous to get there (or jump through hoops like switch to month view first, traverse the months, and switch back to agenda view.
Alternatively, can we parameterise it, so that instead of 'day', we could pass in 'week' or 'month' depending on how fast we want to paginate?
Agenda.navigate = (date, action)=>{
  switch (action){
    case navigate.PREVIOUS:
      return dates.add(date, -1, 'day');

    case navigate.NEXT:
      return dates.add(date, 1, 'day')

    default:
      return date;
  }
}

Sorry for the delay. I'd happily merge a PR adding this if you want u want! Thanks


Helper method wrong?

hey, i try to play with max turn costs in car flag encoder and when i chaged value to 2, get error message from EncodedValue class that say me that value 2 can't be writen by 1 bit, okaaaay lets see where it did...
that's AbstractFlagEncoder's method
public int defineTurnBits( int index, int shift )
    {
        if (maxTurnCosts == 0)
            return shift;
        // optimization for turn restrictions only
        else if (maxTurnCosts == 1)
        {
            turnRestrictionBit = 1L << shift;
            return shift + 1;
        }
        int turnBits = Helper.countBitValue(maxTurnCosts);
        turnCostEncoder = new EncodedValue("TurnCost", shift, turnBits, 1, 0, maxTurnCosts)
        ...

and this Helper's method
public static int countBitValue( int maxTurnCosts )
    {
        double val = Math.log(maxTurnCosts) / Math.log(2);
        int intVal = (int) val;
        if (val == intVal)
            return intVal;
        return intVal + 1;
    }

and now only example ;)
log(2)/log(2)=1
(int) 1 = 1
1 = 1 => return 1
right?
but "2" is 10 in bit form and has 2 bits, not 1 ¯_(ツ)_/¯

Thanks for spotting! Currently no performance critical path involved so just moved this to a loop.


Comment to update author list

@GrantPDonnelly , @johnridge. Here is my update.
This is a test to update the author list.  And test merging a pull request for Grant.

@rkehoe I am merging this pull request


added mouse features and python mouse support

While I was using the python module I added in the mouse support, and I decided to put in mouse button release and wheel scroll support as well.
Also, I cleaned up the unichr/chr code.

Will take a look at it tomorrow, but I like the idea of adding that stuff.

I was looking at http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking and there is this thing I don't understand. Why we check for 0x60 and 0x61 when it comes to mouse wheel events. Doc says it adds 64. And 0x60 is 96. But testing it with termbox-go raw mode, I see that it adds 96 indeed. Weird stuff..

Okay, I guess I'll merge it as is. But this is the code which requires further improvements and rewrites. For example I see different bytes being reported when holding ctrl and doing wheel up and wheel down.


Add requirement for free space in /tmp

Proposed changes
Added requirement for /tmp directory as docker uses this for locks etc...

Deploy preview for docsdocker ready!
Built with commit c1600de6e9a23749eca8f4b09b803dc8bcd2aef8
https://deploy-preview-10026--docsdocker.netlify.com

Thanks for your feedback. Docker Enterprise docs are now part of Mirantis. You can take a look at the Docker Enterprise documentation at https://docs.mirantis.com/docker-enterprise/.
Let me close this PR here for that reason. Feel free to continue the conversation after I close.


Focus-visible styles on iframe when tabbing

We don’t currently have any :focus-visible styling when the iframe is tabbed, unlike every other interactive element of the UI. So unless there’s a link in the resource displayed in the iframe for instance, there is no visual indication that you’ve just tabbed into the contents.
However, this is trickier that it may seem at first sight, given the iframe is the document.activeElement, but doesn’t receive :focus nor :focus-visible – unless I’m missing something, it’s the content within that does.

I've noticed that on Thorium, we can lose the current position when tabbing back into the content (I'm redirected to the beginning of the chapter). Is this something you ever looked into @danielweck?

See https://github.com/readium/playground/issues/49#issuecomment-2565947589
Thank you :)

@HadrienGardeur to be clear: keyboard-tabbing into an EPUB HTML document only "works" (only useful) if the DOM contains tabbable/focussable elements, such as hyperlinks or buttons (otherwise, the focus moves to whatever follows the iframe, skipping the content entirely). The user story is completely different for screen reader users, who benefit from fine-grain linear and hierarchical navigation (tab navigation is very coarse, by comparison).


Add sentence numbers

Add sentence numbers to the output csv file. First sentence starts with 1, second has sentence number 2 and so on.
This is required for https://github.com/clowder-framework/RCT-Transparency-extractor/issues/47 (number 9)

This is done in RCT extractor CSVDataProcess.data_process
Closing as done.


Avoid using Object in server options

If handle is Object, this will cause this error:
server.listen(true); // true is considered as Object.

Docs: net_server_listen_options_callback.

@HsuTing please post link to the docs about this argument

I added.

cool!