ios 8.3 or lower issues with rendering of elements, tested with Foundation switch markup

How to reproduce this bug:
Using the switch markup found on the foundation site

Do you like me?

  <input class="switch-input" id="yes-no" type="checkbox" name="exampleSwitch">

    Do you like me?
    Yes
    No

The text becomes out of alignment on ios8.3 or lower, tested with Foundation 6 css complete version(6.3.0) and github template https://github.com/zurb/foundation-zurb-template
To replicate this please use a apple device that has ios 8.3 or lower
I got this bug on ipad air 2 (ios8), ipad air (ios7), iphone6s(ios8), iphone6 Plus(ios8) and ipad air(ios8.3)
What should happen:
Elements should render in there correct position on ios, when using downloaded css version or foundation-zurb-template.  I was getting several alignment issues only in ios with foundation, where at times elements would render out of alignment.
I would expect the default switch markup used on foundation site to vertically align center but the alignment of text goes to the bottom, this only happens on ios8.3 and below, i think fixing this issue should resolve other ios quirks that were happening.
Test case:
The issue however doesn't exist on the foundation 6 site if you view the switch directly on the site using ios8.3 or when using the cdn version from cdnjs
The issue happens with:
css "complete" downloaded from foundation site
or template version https://github.com/zurb/foundation-zurb-template
I have created two codepens for the issue to be tested one with working version and other not working
cdnjs version 6.3.0 which works
Foundation 6.3.0 IOS 8 Working
Foundation 6 css version complete which doesn't work
Foundation 6.3.0 IOS 8 Broken

can you specify which code you changed through which the error was corrected ?

I didn't change any code, as I got the issue using the github template I attempted as a quick test with a cdn version this one https://cdnjs.cloudflare.com/ajax/libs/foundation/6.3.0/css/foundation.css when I saw it was working with that I than tried with the foundation site complete css version but the issue happened again. The codepen.io I provided is foundation css version which is not working and other is just the copied css from cdn js, I've made no changes

Ugh it looks like the customizer build (which is used for the complete download) is using a different set of config settings than the main build, resulting in a different autoprefixer config.
This definitely should get fixed.
@zurb/yetinauts anyone have bandwidth to take a pass on this in the next day or two?

@tdhartwick can you take a look at this?

Is this fixed?

Also which exact Safari version is installed and used?

Closing as we did not receive any further feedback.


The "parent" component for the "ar-frame" entity does not recognize uppercase Vuforia database names.

Code from the vuforia example:
<!-- attach to target. x/y in the plane, z up -->
<ar-frame id="frame" trackvisibility="true" visible="false" parent="vuforia.ar.cover" position="0 0 0" rotation="0 0 0">

We named our vuforia database AR but had an error when we set "parent="vuforia.AR.cover"", but "parent="vuforia.ar.cover"" works.

This is an aframe/DOM limit. Attribute names are lower case.


[Doc] Description of the brokerAddrTable property in MQClientInstance

Search before creation

[X] I had searched in the issues and found no similar issues.

Documentation Related
Is the description of the key in the brokerAddrTable as "The key of the map is the brokerCluster name." somewhat ambiguous. Because brokerClusterName is generally understood as something similar to "DefaultCluster", should the description be modified to "The key of the map is the brokerName."

Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

@luozongle01 Yes I am willing to submit a PR! Please assign it to me.


How are you generating AES256 key and init vector?

I try using openssl for encrypt my DB pass with command:
enc -aes256 -nosalt -k password -P
And my output key and iv:
key=5F4DCC3B5AA765D61D8327DEB882CF992B95990A9151374ABD8FF8C5A7A0FE08
iv =B7B4372CDFBCB3D16A2631B59B509E94
After encode to Base64 I get strings twice as long, than in your sample.
What am I doing wrong?

Which format for password must be and how generate it?

The password is your choice.
This behavior is just for secure sensitive information, like DB password.

I talked about DB pass))

You can pass it in plain text too, no problems.

If I insert password like a plain text without encrypt in settings, I have this exception:
The input data is not a complete block.

If I encrypt DB pass I have that strange UTF8 string
\u000e�\u0012����~���Oz��\v

Hello. I have the same problem. I tooke a sample password 123456 from example and then i encrypted with help openssl  enc -aes256 -nosalt -k 123456 -P
key=E10ADC3949BA59ABBE56E057F20F883E65B4AD270B3B98098D256AB32F5B8FBA
iv =9490B8780B1986D7196037E837C09F16
but after convert to Base64string i got key=RTEwQURDMzk0OUJBNTlBQkJFNTZFMDU3RjIwRjg4M0U2NUI0QUQyNzBCM0I5ODA5OEQyNTZBQjMyRjVCOEZCQQ==
iv=OTQ5MEI4NzgwQjE5ODZENzE5NjAzN0U4MzdDMDlGMTY=
these results are wrong. Can you provide in C# code how i can convert to bas64string those codes?
Thank you!


config.json reciding and backup after process alteration

Hi,
it kinda stings me that changes made to the configuration by the executeable are not shown in the advanced configuration area.
I assume you are working with two different config files here, one which the user is editing and one that recides in /data/user/0/<project>/files/config.json (as per the log). On save the editor content is copied to /data/user/0/<project>/files/config.json.
That is a step I am not fully understanding (would be nice if you could enlighten me).
As far as my experience with xmrig goes, the config is not locked on execution start and is monitored for the exact purpose of alteration while running. The autosave value makes sure the executeable can save to the config as well.
Using a unified file as intended would save advanced users a lot of pain once a proper config has been figured out.
Right now the changes made by the executeable are not reflected within the apps editor, forcing the app to go through benchmark and config check whenever a mining process ist started.

The edit file is saved as string in local Data Base, each start the content sent in base64 to the native module (Kotlin), little modified (adds xmrig httpd - to pull stats like hashrate), output colors and intervals.
In last versions each update in backend (xmrig) important parts are sent back to the UI and saved in the data base.
Maybe its better to save a separate json file   and give the user the ability to edit the file directly - but its can cause different set of bugs - if the user disable the xmrig httpd - 50% of the app will stop working.
We need to thing about it, mabye some hybrid version between the solutions... I don't know....

Maybe its better to save a separate json file and give the user the ability to edit the file directly - but its can cause different set of bugs - if the user disable the xmrig httpd - 50% of the app will stop working.

Usually one would hide such a thing behind a setting in the settings menu marked as something cryptic like developer options and after that a data path to where the file rescides. Very unlikely that anyone who shouldn't touch this, would.


Refactoring and fixing warnings

Nothing big. Just fixing some warnings reported by cargo and refactoring a small code snippet to use the previously unused defaults::default_bundle_dir. I also removed some SearchOptions parameters from a few functions as they were unused.

Lovely, thank you! I have let a bit of warning debt creep up 😅 Post-1.0 is a great time to refactor and tidy.


No intent match for what’s with right single quote vs single quote

This is similar to #2086 but for the question prefix rather than the entity name.
When I ask Assist:

whats the temp

... or:

what's the temp

... on my PC I get the response I expect, however in the iOS companion app when I ask:

What’s the temp

I get a no_intent_match error. It looks like this is because of the iOS auto-correct inserted right single quotation mark (U+2019) vs single-quote/apostrophe (U+0027)
In the the following line:
https://github.com/home-assistant/intents/blob/40384abc2f67cb233cb058684a159bd0d57255ea/sentences/en/_common.yaml#L292
Would it be advisable to change it to this?
what_is: "(what's|what’s|whats|what is)"

Nice catch! The proper solution is to consider the character that iOS uses as punctuation so it would get stripped and ignored during recognition.
I've created a PR for this https://github.com/home-assistant/hassil/pull/137

That sounds like a much better approach! Thanks.


[FLINK-14858][Table SQL / Planner] Wrong "if" statement in SqlToOperationConverter

What is the purpose of the change
It's wrong "if" statement in SqlToOperationConverter, this should be "else if" not the "if"
Brief change log
Use "else if" instead of "if"
Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): ( no)
The public API, i.e., is any changed class annotated with @Public(Evolving): ( no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable)

@jiemotongxue  Thanks for fixing this, merging


Validation issue for DataStream 2 - logStreamName field is not validated properly

Hello,
I'm using rule format: v2020-11-02 and trying to configure DataStream 2 using Akamai Pipeline v0.7.6-RELEASE and getting validation error.
The validation do pass using the Open API (also approved by Akamai technical support), probably there is some issue in the CLI code
Also tried to uninstall and install again the CLI, but that didn't help
This is the command that I'm using:
akamai pipeline save -p my.pipeline dev
Here is the json snippet which fails to be validated:
...
{
"name": "datastream",
"options": {
"streamType": "LOG",
"logStreamTitle": "",
"logEnabled": true,
"logStreamName": 11135,
"samplingPercentage": 100
}
}
Here is the validation error:
There are validation errors:
[
{
"location": {
"template": "templates/main.json",
"variables": [],
"location": "rules/behaviors/8/options/logStreamName",
"value": "11135"
},
"schemaLocation": "/definitions/catalog/behaviors/datastream/properties/options/properties/logStreamName",
"detail": "instance type (string) does not match any allowed primitive type (allowed: ["integer","number"])",
"foundType": "string",
"allowedTypes": [
"integer",
"number"
]
}
]
When trying to reproduce, please try to run several times
This issue is "blocker" for using DataStream 2.0
Amos

Hi,
After updating the CLI to version 0.7.7 the issue didn't occur again - I wonder if  version 0.7.7 had some related fix

Closing as the issue is not there any more.


Update aws-cdk-lib to 2.152.0 from 2.142.1

Just curious if this is being worked on. And if not I would like to ask if I could follow this PR to make a new PR to complete this task? I would love to be able to contribute to SST. Im interested in this update as I would like to have EventBridge as an event destination for a SES configuration set, which is not available in the 2.142.1 cdk package

Yeah feel free to submit a PR.

The contributing guideline mention running pnpm changelog, has this been changed to pnpm changeset?


ROX-17541: Link image in deployment details of violations to VM 2.0

Description
We want to have the image name link point to VM 2.0 instead of VM 1.0

Merged this and other changes into 1 PR https://github.com/stackrox/stackrox/pull/10651


2.0 - _ is not defined

Hi, cool project!
I just upgraded to 2.0 and am getting this error when requesting /
The error is happening when jade tries to compile the index.jade template
ReferenceError: index.jade:6
    4|
    5|   // Get a list of services from the content map
  > 6|   - var services = _.chain(contents.services._.directories).map(function(item) {
    7|   -   return item.index
    8|   - }).compact().sortBy(function(item) {
    9|   -   return item._metadata.order

_ is not defined
    at eval (eval at <anonymous> (/usr/lib/node_modules/jade/lib/jade.js:171:8), <anonymous>:278:16)

It's the first _ from my testing.  I copied my 1.x templates into the 2.x blog example project and edited the config.json.
My templates are attached.  What am I missing?  I did a npm install to get local copies of the dependencies.

Ya I just had the same issue. If you rename the articles folder the pagination plugin dies.

Lol, almost exactly 2 years later, I have this problem, google, and find my own bug.  Here's how I fixed it in paginator.coffee  (it's the first if statement):
  getArticles = (contents) ->
    if not contents[options.articles]?
      return []
    # helper that returns a list of articles found in *contents*
    # note that each article is assumed to have its own directory in the articles directory
    articles = contents[options.articles]._.directories.map (item) -> item.index
    # skip articles that does not have a template associated
    articles = articles.filter (item) -> item.template isnt 'none'
    # sort article by date
    articles.sort (a, b) ->
      return Date.parse(b.metadata.publishedDate) - Date.parse(a.metadata.publishedDate)
    return articles


nixos/aria2: implement 'rpcSecretFile'

Description of changes
Since this is supposed to be a secret, use a file path as an input instead of making it part of the expression, which would expose it in the nix store.
Things done
There is no NixOS test for this module unfortunately...

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Adding @Br1ght0ne as reviewer, since you are part of the package's list of maintainers.

Previously services.aria2.enable = true; in config used to work as expected with default aria2rpc password (defined in services.aria2.rpcSecret)
Right now there is rebuild error error: The option services.aria2.rpcSecretFile' is used but not defined.Shouldn't this option have default value (viawriteTextor something)? For cases where keeping secrets in/nix/store` is ok

@jys1670 this is why this was documented as a breaking change.
IMO, the user should opt in to unsecure setups, therefore having to writeText themselves seems fine to me.


feat(pathLength): error strings for create new directory

Needs: https://github.com/Neos-Metaverse/NeosFramework/pull/36
before we merge this, but might want to merge before it gets in to give people time.

Thanks merged!


SFR-865 Clean Up

Project Reno Jira Ticket
ResearchNow Jira Ticket
This PR does the following:

Fixes image size issues in Edition Card
Adds an inset to Header With Search
Changes Header Image Right to be able to accept JSX.

Front End Review:

[ ] View the example in Storybook
[ ] Check against the Metronome documentation

Once the CHANGELOG update gets pushed feel free to Ship this.


feat: show upgrade dialog on get-starknet calls

I already merged latest changes from main (including the deployment check for executeTxn), the PR#254 including these changes in release/2.3.0 is still open


MySQL to SQLite conversion issues

Hi Andrew,
I've been following the instructions on this wiki page and when I execute the mysqldump commands I get this error:
mysqldump: Error: 'Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'information_schema.FILES.TOTAL_EXTENTS' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by' when trying to dump tablespaces
I'm using the sample files you have here, so things should just work.
I'm on OS X 10.10 and I use MySQL 5.7.11.
Any clues?
Greatly appreciated!

Hi!
Do you used enwikt20140908_parsed.sql?
mysqldump in (1) Tables' structure preparations or (2) Data conversion
caused the error?

Thanks for getting back to me Andrew.
Yes I used enwikt20140908_parsed.sq and it was on instruction (1) Table structure preparation.
Would you mind also sharing the end result of the SQLite file?


Update Searches.cs

Changed fail message for manga lookup - fail message returned "anime" instead of "manga"

;o thx

No problem, I can't code; but at least I can proof read. :)


Clarified use of host, use path.combine for paths and lodash.defaults for config. Expose config.

Appreciate a careful review/merge from @mreinstein or @tejashah88.


AMP Dynamic CSS Classes | Google AMP Viewer Link Broken

Describe the bug
On the AMP Dynamic CSS Classes page, the 'Google AMP Viewer' link in the 'Viewer' section does not properly load the page in the Google AMP Viewer as suggested. This is due to the current link being wrong (see expected behavior).
To Reproduce
Steps to reproduce the behavior:

Go to 'https://ampbyexample.com/components/amp-dynamic-css-classes/'
Scroll down to 'Viewer' (last) section
Click on 'Google AMP Viewer' link
Receive a 'Redirect Notice' that links back to the original 'AMP Dynamic CSS Classes' page instead of loading in the Google AMP Viewer

Expected behavior
Should direct you to https://www.google.com/amp/s/ampbyexample.com/components/amp-dynamic-css-classes/
Desktop (please complete the following information):

OS: MacOS 10.13.6 (High Sierra)
Browser: Chrome
Version: 70.0.3538.102

Thanks for reporting. This is actually a documentation problem as the viewer works only on mobile.

Hi @sebastianbenz ,
Sorry, I failed to mention I was in the "mobile emulation mode" as iPhone 6/7/8. I just checked on my iPhone 7 as well. I was aware the viewer only works on Mobile. However, the link takes you to the "Redirect Notice", even when on Mobile. It is missing the "/s" after "/amp".
Current Incorrect Link (missing /s): https://www.google.com/amp/ampbyexample.com/components/amp-dynamic-css-classes/
Results in:

Corrected Link (with /amp/s): https://www.google.com/amp/s/ampbyexample.com/components/amp-dynamic-css-classes/
Results in:

Thanks,


Widgets page raises require.js errors

Those are fine, the library are search in multiple locations (/, /js/), the first on just raise a 404, but the second succeed.


What does "manifests are not enabled" mean?

I have no idea about the warning:
λ vcpkg install zlib
Warning: manifest-root detected at D:/vcpkg/ports/poppler, but manifests are not enabled.
If you wish to use manifest mode, you may do one of the following:
    * Add the `manifests` feature flag to the comma-separated environment
      variable `VCPKG_FEATURE_FLAGS`.
    * Add the `manifests` feature flag to the `--feature-flags` option.
    * Pass your manifest directory to the `--x-manifest-root` option.
If you wish to silence this error and use classic mode, you can:
    * Add the `-manifests` feature flag to `VCPKG_FEATURE_FLAGS`.
    * Add the `-manifests` feature flag to `--feature-flags`.

If not running in directory like ports/some-port, the warning will not appear.


Vue Language Server crashes when I open a [second?] project

NovaExtensionConsole.log

Hi there, I've seen you logs.
Unfortunately the issue you are experiencing is not in the scope of nova-vue. Under the hood the extension is using VLS. That is the language server for Vue developed in the scope of the Vetur project for VSCode. In the logs, as you can see, there are two sources: Vue and Vue Language Server. All the issues with Vue Language Server are not in my direct control. Maybe you can try to report this to the Vetur team.
Apart from that I can tell you that your nova-vue is using the correct version of VLS (0.5.10) so maybe this crash is due to something in your projects. Is this happening with every project you open?

Thanks for taking a look, Tommaso. Yes, every project. I'll try reporting to the Vetur team.

If I have more than one Project / Nova window open the Vue Language Server endlessly crashes.  It used to stay up and running after restarting until I changed the focus to another Nova Window/Project.  But now with version 8.x of Nova it crashes as soon as I restart it.  It's impossible work on a vue project with another Nova window open.

HI there! I'm sorry that you're experiencing this 😕
Unfortunately I tried opening multiple vue projects at once and everything works fine on my side...
A suggestion I can give you is to try to disable all the other Nova extensions except for Vue and see if any of those are causing the crash. It already happened that two extensions were in conflict with each other.
Otherwise I ask you if you can send me your extension console output for "Vue" and "Vue Language Server".
Thanks

After a few seconds running the extension, I get the same error-message. Always. I click restart and after a few more seconds again. Here is my output from the console:
Vue[14:00:59.093000] Goodbye from Vue 👋
Vue[14:00:59.093000] Reloading Vue Language Server...
Vue[14:01:03.219000] VLS Version 0.5.10
Vue[14:01:03.220000] Vue Version 3.2.27
Vue Language Server[14:01:04.482000] [INFO ] Find node_modules paths in /Volumes/Macintosh HD/Users/username/project - 28ms
Vue Language Server[14:01:04.482000] [INFO ] Loaded bundled<EMAIL_ADDRESS>Vue Language Server[14:01:04.483000] [INFO ] Loaded bundled prettier.
Vue Language Server[14:01:04.483000] [INFO ] Loaded bundled @starptech/prettyhtml.
Vue Language Server[14:01:04.483000] [INFO ] Loaded bundled prettier-eslint.
Vue Language Server[14:01:04.483000] [INFO ] Loaded bundled prettier-tslint.
Vue Language Server[14:01:04.484000] [INFO ] Loaded bundled stylus-supremacy.
Vue Language Server[14:01:04.523000] [INFO ] Loaded bundled @prettier/plugin-pug.
Vue Language Server[14:01:04.523000] Vetur initialized
Vue Language Server[14:01:05.162000] /Users/username/Library/Application Support/Nova/Extensions/com.tommasonegri.Vue/dependencyManagement/node_modules/vls/dist/vls.js:674
Vue Language Server[14:01:05.162000] ${e.message}`,source:"eslint-plugin-vue",severity:e.severity===1?Dw.DiagnosticSeverity.Warning:Dw.DiagnosticSeverity.Error}}s(Est,"toDiagnostic");async function Lre(e,t){var o;let r=e.getText();if(r.replace(/\s/g,"")==="")return[];let n=r.replace(/ {10}/,"",i=await t.lintText(n,{filePath:e.uri});return(o=i==null?void 0:i[0].messages.map(Est))!=null?o:[]}s(Lre,"doESLintValidation");function Mre(e){let t=__dirname,r=e===Ul.V30?iT.configs["vue3-essential"]:iT.configs.essential;return new Fre.ESLint({useEslintrc:!1,cwd:t,baseConfig:iT.configs.base,overrideConfig:r})}s(Mre,"createLintEngine");var qre=Be(Xn()),zre=Be(ri()),Tst=[Ae.StartTagOpen,Ae.EndTagOpen,Ae.Whitespace];function jre(e,t,r,n){let i=e.offsetAt(t),o=r.findNodeAt(i);if(!o||!o.tag)return[];function a(g,y,_){if(n&&n.componentInfo.childComponents)for(let k of n.componentInfo.childComponents){if(![g,g.toLowerCase(),zre.kebabCase(g)].includes(k.name))continue;if(!k.definition)continue;let S={uri:Kr.file(k.definition.path).toString(),range:qre.Range.create(0,0,0,0)};return[S]}return[]}s(a,"getTagDefinition");let l=o.endTagStart&&i>=o.endTagStart,c=l?o.endTagStart:o.start,u=ys(e.getText(),c),h=u.scan();function f(){if(h===Ae.EOS)return!1;let g=u.getTokenEnd();return g<i?!0:g===i?Tst.includes(h):!1}for(s(f,"shouldAdvance");f();)h=u.scan();if(i>u.getTokenEnd())return[];let m={start:e.positionAt(u.getTokenOffset()),end:e.positionAt(u.getTokenEnd())};switch(h){case Ae.StartTag:return a(o.tag,m,!0);case Ae.EndTag:return a(o.tag,m,!1)}return[]}s(jre,"findDefinition");var Ast=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"];function sT(e){return!!e&&Rst(Ast,e.toLowerCase(),(t,r)=>t.localeCompare(r))>=0}s(sT,"isVoidElement");function Bre(e){let[t,r]=e.split(":");return{label:t,type:r}}s(Bre,"genAttr");function Le(e,t){let r=t&&t.map(Bre);return new Va(e,r)}s(Le,"genTag");var D5={html:Le("The html element represents the root of an HTML document.",["manifest"]),head:Le("The head element represents a collection of metadata for the Document."),title:Le("The title element represents the document's title or name. Authors should use titles that identify their documents even when they are used out of context, for example in a user's history or bookmarks, or in search results. The document's title is often different from its first heading, since the first heading does not have to stand alone when taken out of context."),base:Le("The base element allows authors to specify the document base URL for the purposes of resolving relative URLs, and the name of the default browsing context for the purposes of following hyperlinks. The element does not represent any content beyond this information.",["href","target"]),link:Le("The link element allows authors to link their document to other resources.",["href","crossorigin:xo","rel","media","hreflang","type","sizes"]),meta:Le("The meta element represents various kinds of metadata that cannot be expressed using the title, base, link, style, and script elements.",["name","http-equiv","content","charset"]),style:Le("The style element allows authors to embed style information in their documents. The style element is one of several inputs to the styling processing model. The element does not represent content for the user.",["media","nonce","type","scoped:v"]),body:Le("The body element represents the content of the document.",["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onlanguagechange","onmessage","onoffline","ononline","onpagehide","onpageshow","onpopstate","onstorage","onunload"]),article:Le("The article element represents a complete, or self-contained, composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, a user-submitted comment, an interactive widget or gadget, or any other independent item of content. Each article should be identified, typically by including a heading (h1\u2013h6 element) as a child of the article element."),section:Le("The section element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content. Each section should be identified, typically by including a heading ( h1- h6 element) as a child of the section element."),nav:Le("The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links."),aside:Le("The aside element represents a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content. Such sections are often represented as sidebars in printed typography."),h1:Le("The h1 element represents a section heading."),h2:Le("The h2 element represents a section heading."),h3:Le("The h3 element represents a section heading."),h4:Le("The h4 element represents a section heading."),h5:Le("The h5 element represents a section heading."),h6:Le("The h6 element represents a section heading."),header:Le("The header element represents introductory content for its nearest ancestor sectioning content or sectioning root element. A header typically contains a group of introductory or navigational aids. When the nearest ancestor sectioning content or sectioning root element is the body element, then it applies to the whole page."),footer:Le("The footer element represents a footer for its nearest ancestor sectioning content or sectioning root element. A footer typically contains information about its section such as who wrote it, links to related documents, copyright data, and the like."),address:Le("The address element represents the contact information for its nearest article or body element ancestor. If that is the body element, then the contact information applies to the document as a whole."),p:Le("The p element represents a paragraph."),hr:Le("The hr element represents a paragraph-level thematic break, e.g. a scene change in a story, or a transition to another topic within a section of a reference book."),pre:Le("The pre element represents a block of preformatted text, in which structure is represented by typographic conventions rather than by elements."),blockquote:Le("The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a footer or cite element, and optionally with in-line changes such as annotations and abbreviations.",["cite"]),ol:Le("The ol element represents a list of items, where the items have been intentionally ordered, such that changing the order would change the meaning of the document.",["reversed:v","start","type:lt"]),ul:Le("The ul element represents a list of items, where the order of the items is not important \u2014 that is, where changing the order would not materially change the meaning of the document."),li:Le("The li element represents a list item. If its parent element is an ol, ul, or menu element, then the element is an item of the parent element's list, as defined for those elements. Otherwise, the list item has no defined list-related relationship to any other li element.",["value"]),dl:Le("The dl element represents an association list consisting of zero or more name-value groups (a description list). A name-value group consists of one or more names (dt elements) followed by one or more values (dd elements), ignoring any nodes other than dt and dd elements. Within a single dl element, there should not be more than one dt element for each name."),dt:Le("The dt element represents the term, or name, part of a term-description group in a description list (dl element)."),dd:Le("The dd element represents the description, definition, or value, part of a term-description group in a description list (dl element)."),figure:Le("The figure element represents some flow content, optionally with a caption, that is self-contained (like a complete sentence) and is typically referenced as a single unit from the main flow of the document."),figcaption:Le("The figcaption element represents a caption or legend for the rest of the contents of the figcaption element's parent figure element, if any."),main:Le("The main element represents the main content of the body of a document or application. The main content area consists of content that is directly related to or expands upon the central topic of a document or central functionality of an application."),div:Le("The div element has no special meaning at all. It represents its children. It can be used with the class, lang, and title attributes to mark up semantics common to a group of consecutive elements."),a:Le("If the a element has an href attribute, then it represents a hyperlink (a hypertext anchor) labeled by its contents.",["href","target","download","ping","rel","hreflang","type"]),em:Le("The em element represents stress emphasis of its contents."),strong:Le("The strong element represents strong importance, seriousness, or urgency for its contents."),small:Le("The small element represents side comments such as small print."),s:Le("The s element represents contents that are no longer accurate or no longer relevant."),cite:Le("The cite element represents a reference to a creative work. It must include the title of the work or the name of the author(person, people or organization) or an URL reference, or a reference in abbreviated form as per the conventions used for the addition of citation metadata."),q:Le("The q element represents some phrasing content quoted from another source.",["cite"]),dfn:Le("The dfn element represents the defining instance of a term. The paragraph, description list group, or section that is the nearest ancestor of the dfn element must also contain the definition(s) for the term given by the dfn element."),abbr:Le("The abbr element represents an abbreviation or
Vue Language Server[14:01:05.162000]  acronym, optionally with its expansion. The title attribute may be used to provide an expansion of the abbreviation. The attribute, if specified, must contain an expansion of the abbreviation, and nothing else."),ruby:Le("The ruby element allows one or more spans of phrasing content to be marked with ruby annotations. Ruby annotations are short runs of text presented alongside base text, primarily used in East Asian typography as a guide for pronunciation or to include other annotations. In Japanese, this form of typography is also known as furigana. Ruby text can appear on either side, and sometimes both sides, of the base text, and it is possible to control its position using CSS. A more complete introduction to ruby can be found in the Use Cases & Exploratory Approaches for Ruby Markup document as well as in CSS Ruby Module Level 1. [RUBY-UC] [CSSRUBY]"),rb:Le("The rb element marks the base text component of a ruby annotation. When it is the child of a ruby element, it doesn't represent anything itself, but its parent ruby element uses it as part of determining what it represents."),rt:Le("The rt element marks the ruby text component of a ruby annotation. When it is the child of a ruby element or of an rtc element that is itself the child of a ruby element, it doesn't represent anything itself, but its ancestor ruby element uses it as part of determining what it represents."),rp:Le("The rp element is used to provide fallback text to be shown by user agents that don't support ruby annotations. One widespread convention is to provide parentheses around the ruby text component of a ruby annotation."),time:Le("The time element represents its contents, along with a machine-readable form of those contents in the datetime attribute. The kind of content is limited to various kinds of dates, times, time-zone offsets, and durations, as described below.",["datetime"]),code:Le("The code element represents a fragment of computer code. This could be an XML element name, a file name, a computer program, or any other string that a computer would recognize."),var:Le("The var element represents a variable. This could be an actual variable in a mathematical expression or programming context, an identifier representing a constant, a symbol identifying a physical quantity, a function parameter, or just be a term used as a placeholder in prose."),samp:Le("The samp element represents sample or quoted output from another program or computing system."),kbd:Le("The kbd element represents user input (typically keyboard input, although it may also be used to represent other input, such as voice commands."),sub:Le("The sub element represents a subscript."),sup:Le("The sup element represents a superscript."),i:Le("The i element represents a span of text in an alternate voice or mood, or otherwise offset from the normal prose in a manner indicating a different quality of text, such as a taxonomic designation, a technical term, an idiomatic phrase from another language, transliteration, a thought, or a ship name in Western texts."),b:Le("The b element represents a span of text to which attention is being drawn for utilitarian purposes without conveying any extra importance and with no implication of an alternate voice or mood, such as key words in a document abstract, product names in a review, actionable words in interactive text-driven software, or an article lede."),u:Le("The u element represents a span of text with an unarticulated, though explicitly rendered, non-textual annotation, such as labeling the text as being a proper name in Chinese text (a Chinese proper name mark), or labeling the text as being misspelt."),mark:Le("The mark element represents a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context. When used in a quotation or other block of text referred to from the prose, it indicates a highlight that was not originally present but which has been added to bring the reader's attention to a part of the text that might not have been considered important by the original author when the block was originally written, but which is now under previously unexpected scrutiny. When used in the main prose of a document, it indicates a part of the document that has been highlighted due to its likely relevance to the user's current activity."),bdi:Le("The bdi element represents a span of text that is to be isolated from its surroundings for the purposes of bidirectional text formatting. [BIDI]"),bdo:Le("The bdo element represents explicit text directionality formatting control for its children. It allows authors to override the Unicode bidirectional algorithm by explicitly specifying a direction override. [BIDI]"),span:Le("The span element doesn't mean anything on its own, but can be useful when used together with the global attributes, e.g. class, lang, or dir. It represents its children."),br:Le("The br element represents a line break."),wbr:Le("The wbr element represents a line break opportunity."),ins:Le("The ins element represents an addition to the document."),del:Le("The del element represents a removal from the document.",["cite","datetime"]),picture:Le("The picture element is a container which provides multiple sources to its contained img element to allow authors to declaratively control or give hints to the user agent about which image resource to use, based on the screen pixel density, viewport size, image format, and other factors. It represents its children."),img:Le("An img element represents an image.",["alt","src","srcset","crossorigin:xo","usemap","ismap:v","width","height"]),iframe:Le("The iframe element represents a nested browsing context.",["src","srcdoc","name","sandbox:sb","seamless:v","allowfullscreen:v","width","height"]),embed:Le("The embed element provides an integration point for an external (typically non-HTML) application or interactive content.",["src","type","width","height"]),object:Le("The object element can represent an external resource, which, depending on the type of the resource, will either be treated as an image, as a nested browsing context, or as an external resource to be processed by a plugin.",["data","type","typemustmatch:v","name","usemap","form","width","height"]),param:Le("The param element defines parameters for plugins invoked by object elements. It does not represent anything on its own.",["name","value"]),video:Le("A video element is used for playing videos or movies, and audio files with captions.",["src","crossorigin:xo","poster","preload:pl","autoplay:v","mediagroup","loop:v","muted:v","controls:v","width","height"]),audio:Le("An audio element represents a sound or audio stream.",["src","crossorigin:xo","preload:pl","autoplay:v","mediagroup","loop:v","muted:v","controls:v"]),source:Le("The source element allows authors to specify multiple alternative media resources for media elements. It does not represent anything on its own.",["src","type"]),track:Le("The track element allows authors to specify explicit external timed text tracks for media elements. It does not represent anything on its own.",["default:v","kind:tk","label","src","srclang"]),map:Le("The map element, in conjunction with an img element and any area element descendants, defines an image map. The element represents its children.",["name"]),area:Le("The area element represents either a hyperlink with some text and a corresponding area on an image map, or a dead area on an image map.",["alt","coords","shape:sh","href","target","download","ping","rel","hreflang","type"]),table:Le("The table element represents data with more than one dimension, in the form of a table.",["sortable:v","border"]),caption:Le("The caption element represents the title of the table that is its parent, if it has a parent and that is a table element."),colgroup:Le("The colgroup element represents a group of one or more columns in the table that is its parent, if it has a parent and that is a table element.",["span"]),col:Le("If a col element has a parent and that is a colgroup element that itself has a parent that is a table element, then the col element represents one or more columns in the column group represented by that colgroup.",["span"]),tbody:Le("The tbody element represents a block of rows that consist of a body of data for the parent table element, if the tbody element has a parent and it is a table."),thead:Le("The thead element represents the block of rows that consist of the column labels (headers) for the parent table element, if the thead element has a parent and it is a table."),tfoot:Le("The tfoot element represents the block of rows that consist of the column summaries (footers) for the parent table element, if the tfoot element has a parent and it is a table."),tr:Le("The tr element represents a row of cells in a table."),td:Le("The td element represents a data cell in a table.",["colspan","rowspan","headers"]),th:Le("The th element represents a header cell in a table.",["colspan","rowspan","headers","scope:s","sorted","abbr"]),form:Le("The form element represents a collection of form-associated elements, some of which can represent editable values that can be submitted to a server for processing.",["accept-charset","action","autocomplete:o","enctype:et","method:m","name","novalidate:v","target"]),label:Le("The label element represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element's labeled control, either using the for attribute, or by putting the form control inside the label element itself.",["form","for"]),input:Le("The input element represents a typed data field, usually with a form control to allow the user to edit the data.",["accept","alt","autocomplete:inputautocomplete","autofocus:v","checked:v","dirname","disabled:v","form","formaction","formenctype:et","formmethod:fm","formnovalidate:v","formtarget","height","inputmode:im","list","max","maxlength","min","minlength","multiple:v","nam
Vue Language Server[14:01:05.162000] e","pattern","placeholder","readonly:v","required:v","size","src","step","type:t","value","width"]),button:Le("The button element represents a button labeled by its contents.",["autofocus:v","disabled:v","form","formaction","formenctype:et","formmethod:fm","formnovalidate:v","formtarget","name","type:bt","value"]),select:Le("The select element represents a control for selecting amongst a set of options.",["autocomplete:inputautocomplete","autofocus:v","disabled:v","form","multiple:v","name","required:v","size"]),datalist:Le("The datalist element represents a set of option elements that represent predefined options for other controls. In the rendering, the datalist element represents nothing and it, along with its children, should be hidden."),optgroup:Le("The optgroup element represents a group of option elements with a common label.",["disabled:v","label"]),option:Le("The option element represents an option in a select element or as part of a list of suggestions in a datalist element.",["disabled:v","label","selected:v","value"]),textarea:Le("The textarea element represents a multiline plain text edit control for the element's raw value. The contents of the control represent the control's default value.",["autocomplete:inputautocomplete","autofocus:v","cols","dirname","disabled:v","form","inputmode:im","maxlength","minlength","name","placeholder","readonly:v","required:v","rows","wrap:w"]),output:Le("The output element represents the result of a calculation performed by the application, or the result of a user action.",["for","form","name"]),progress:Le("The progress element represents the completion progress of a task. The progress is either indeterminate, indicating that progress is being made but that it is not clear how much more work remains to be done before the task is complete (e.g. because the task is waiting for a remote host to respond), or the progress is a number in the range zero to a maximum, giving the fraction of work that has so far been completed.",["value","max"]),meter:Le("The meter element represents a scalar measurement within a known range, or a fractional value; for example disk usage, the relevance of a query result, or the fraction of a voting population to have selected a particular candidate.",["value","min","max","low","high","optimum"]),fieldset:Le("The fieldset element represents a set of form controls optionally grouped under a common name.",["disabled:v","form","name"]),legend:Le("The legend element represents a caption for the rest of the contents of the legend element's parent fieldset element, if any."),details:Le("The details element represents a disclosure widget from which the user can obtain additional information or controls.",["open:v"]),summary:Le("The summary element represents a summary, caption, or legend for the rest of the contents of the summary element's parent details element, if any."),dialog:Le("The dialog element represents a part of an application that a user interacts with to perform a task, for example a dialog box, inspector, or window."),script:Le("The script element allows authors to include dynamic script and data blocks in their documents. The element does not represent content for the user.",["src","type","charset","async:v","defer:v","crossorigin:xo","nonce"]),noscript:Le("The noscript element represents nothing if scripting is enabled, and represents its children if scripting is disabled. It is used to present different markup to user agents that support scripting and those that don't support scripting, by affecting how the document is parsed."),canvas:Le("The canvas element provides scripts with a resolution-dependent bitmap canvas, which can be used for rendering graphs, game graphics, art, or other visual images on the fly.",["width","height"])};function Wre(){let e=["aria-activedescendant","aria-atomic:b","aria-autocomplete:autocomplete","aria-busy:b","aria-checked:tristate","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-current:current","aria-describedat","aria-describedby","aria-disabled:b","aria-dropeffect:dropeffect","aria-errormessage","aria-expanded:u","aria-flowto","aria-grabbed:u","aria-haspopup:b","aria-hidden:b","aria-invalid:invalid","aria-kbdshortcuts","aria-label","aria-labelledby","aria-level","aria-live:live","aria-modal:b","aria-multiline:b","aria-multiselectable:b","aria-orientation:orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed:tristate","aria-readonly:b","aria-relevant:relevant","aria-required:b","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowspan","aria-selected:u","aria-setsize","aria-sort:sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","accesskey","class","contenteditable:b","contextmenu","dir:d","draggable:b","dropzone","hidden:v","id","itemid","itemprop","itemref","itemscope:v","itemtype","lang","role:roles","spellcheck:b","style","tabindex","title","translate:y"].map(Bre),t=["abort","blur","canplay","canplaythrough","change","click","contextmenu","dblclick","drag","dragend","dragenter","dragleave","dragover","dragstart","drop","durationchange","emptied","ended","error","focus","formchange","forminput","input","invalid","keydown","keypress","keyup","load","loadeddata","loadedmetadata","loadstart","mousedown","mousemove","mouseout","mouseover","mouseenter","mouseleave","mouseup","mousewheel","pause","play","playing","progress","ratechange","reset","resize","readystatechange","scroll","seeked","seeking","select","show","stalled","submit","suspend","timeupdate","volumechange","waiting"],r={b:["true","false"],u:["true","false","undefined"],o:["on","off"],y:["yes","no"],w:["soft","hard"],d:["ltr","rtl","auto"],m:["GET","POST","dialog"],fm:["GET","POST"],s:["row","col","rowgroup","colgroup"],t:["hidden","text","search","tel","url","email","password","datetime","date","month","week","time","datetime-local","number","range","color","checkbox","radio","file","submit","image","reset","button"],im:["verbatim","latin","latin-name","latin-prose","full-width-latin","kana","kana-name","katakana","numeric","tel","email","url"],bt:["button","submit","reset","menu"],lt:["1","a","A","i","I"],mt:["context","toolbar"],mit:["command","checkbox","radio"],et:["application/x-www-form-urlencoded","multipart/form-data","text/plain"],tk:["subtitles","captions","descriptions","chapters","metadata"],pl:["none","metadata","auto"],sh:["circle","default","poly","rect"],xo:["anonymous","use-credentials"],sb:["allow-forms","allow-modals","allow-pointer-lock","allow-popups","allow-popups-to-escape-sandbox","allow-same-origin","allow-scripts","allow-top-navigation"],tristate:["true","false","mixed","undefined"],inputautocomplete:["additional-name","address-level1","address-level2","address-level3","address-level4","address-line1","address-line2","address-line3","bday","bday-year","bday-day","bday-month","billing","cc-additional-name","cc-csc","cc-exp","cc-exp-month","cc-exp-year","cc-family-name","cc-given-name","cc-name","cc-number","cc-type","country","country-name","current-password","email","family-name","fax","given-name","home","honorific-prefix","honorific-suffix","impp","language","mobile","name","new-password","nickname","organization","organization-title","pager","photo","postal-code","sex","shipping","street-address","tel-area-code","tel","tel-country-code","tel-extension","tel-local","tel-local-prefix","tel-local-suffix","tel-national","transaction-amount","transaction-currency","url","username","work"],autocomplete:["inline","list","both","none"],current:["page","step","location","date","time","true","false"],dropeffect:["copy","move","link","execute","popup","none"],invalid:["grammar","false","spelling","true"],live:["off","polite","assertive"],orientation:["vertical","horizontal","undefined"],relevant:["additions","removals","text","all","additions text"],sort:["ascending","descending","none","other"],roles:["alert","alertdialog","button","checkbox","dialog","gridcell","link","log","marquee","menuitem","menuitemcheckbox","menuitemradio","option","progressbar","radio","scrollbar","searchbox","slider","spinbutton","status","switch","tab","tabpanel","textbox","timer","tooltip","treeitem","combobox","grid","listbox","menu","menubar","radiogroup","tablist","tree","treegrid","application","article","cell","columnheader","definition","directory","document","feed","figure","group","heading","img","list","listitem","math","none","note","presentation","region","row","rowgroup","rowheader","separator","table","term","text","toolbar","banner","complementary","contentinfo","form","main","navigation","region","search"]};return{getId:()=>"html5",collectTags:n=>lh(n,D5),collectAttributes:(n,i)=>{ch(n,i,D5,e),t.forEach(o=>{i(o,"event")})},priority:Do.Platform,collectValues:(n,i,o)=>uh(n,i,o,D5,e,r)}}s(Wre,"getHTML5TagProvider");function Rst(e,t,r){let n=0,i=e.length-1;for(;n<=i;){let o=(n+i)/2|0,a=r(e[o],t);if(a<0)n=o+1;else if(a>0)i=o-1;else return o}return-(n+1)}s(Rst,"binarySearch");function di(e,t,r){let n=r+`
Vue Language Server[14:01:05.162000]                                                                                ^
Vue Language Server[14:01:05.162000]
Vue Language Server[14:01:05.162000] TypeError: Cannot read properties of undefined (reading 'messages')
Vue Language Server[14:01:05.162000]     at doESLintValidation (/Users/sebi/Library/Application Support/Nova/Extensions/com.tommasonegri.Vue/dependencyManagement/node_modules/vls/dist/vls.js:674:352)
Vue Language Server[14:01:05.162000]     at async cT.doValidation (/Users/sebi/Library/Application Support/Nova/Extensions/com.tommasonegri.Vue/dependencyManagement/node_modules/vls/dist/vls.js:730:2477)
Vue Language Server[14:01:05.162000]     at async Promise.all (index 1)
Vue Language Server[14:01:05.162000]     at async MP.doValidate (/Users/sebi/Library/Application Support/Nova/Extensions/com.tommasonegri.Vue/dependencyManagement/node_modules/vls/dist/vls.js:857:4781)
Vue Language Server[14:01:05.162000]     at async MP.validateTextDocument (/Users/sebi/Library/Application Support/Nova/Extensions/com.tommasonegri.Vue/dependencyManagement/node_modules/vls/dist/vls.js:857:4505)
Vue Language Server[14:01:05.162000]
Vue Language Server[14:01:05.162000] Node.js v17.4.0

Hi @garee76, I'm sorry for this.
Unfortunately all the issue with the Vue Language Server are not directly in my control. The Nova extension just ships bundled with it. The development of VLS is part of the Vetur project.
Anyway, having seen all these issues, I was considering switching from Vetur to Volar, the new sort of replacement for it. The problems are that first of all that would be a big switch (Volar is build with Vue 3 in mind, I'm not sure what that would mean for Vue 2) and the other one is that I haven't worked with Vue for the last 6 months and I don't see myself coming back to it soon.
That said I'm willing to continue the development but I'm not sure if and when I will be able to work on such big features. If someone is willing to give me a hand or at least discussing the future of the project I would really appreciate.
I think I'll open a new issue to discuss this topic.


Deep merge transaction for Distance request

Details

This PR changes the merging of optimisticTransaction to existingTransaction for distance request to use deep merge.
Fixed Issues

$ https://github.com/Expensify/App/issues/31142
PROPOSAL: https://github.com/Expensify/App/issues/31142#issuecomment-1804217463
Tests

Go offline
Make a new distance request.
Enter any waypoints and click on next.
Enter a description and make the request.
Go to the request that was just made.
Make sure that description is present in the description field as entered.

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

Offline tests

QA Steps

Go offline
Make a new distance request.
Enter any waypoints and click on next.
Enter a description and make the request.
Go to the request that was just made.
Make sure that description is present in the description field as entered.

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

PR Author Checklist

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

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

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

[x] Android: Native
[x] Android: 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 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 the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[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.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/77237602/f9dfb3d8-d302-498f-a141-68800e0f3e05

Android: mWeb Chrome

https://github.com/Expensify/App/assets/77237602/4893270d-6e83-4aae-94b6-70971c9d5e4d

iOS: Native

https://github.com/Expensify/App/assets/77237602/30c78f2b-271e-405f-9c02-5bbeaa789211

iOS: mWeb Safari

https://github.com/Expensify/App/assets/77237602/92515553-6e47-4888-8179-e3555c5a3280

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/77237602/511d8f68-da8e-4ccc-8d23-6ca6059dd0d4

MacOS: Desktop

https://github.com/Expensify/App/assets/77237602/017c9152-5e1b-47e1-b6cf-02017235485a

@0xmiroslav Fixed the conflict! For some reason the author checklist is failing... could you tell me why is that?

: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/mountiny in version: 1.4.18-8 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Pin lmfit to < 1.3

1.3 currently breaks difference imaging.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, please rerender


Support for null values

I have been looking into endpoints where null values would be needed for some states. Good example is #571. After trying some stuff I do think the best solution would be something like in #700.
This however would be breaking quite some functions if you'd add support for all cases. However I think it would be perfect for a V2 of this library. You can think of having NullString, NullBool etc.
If somebody knows something else please show.

I have made a PR (#744) to support the null values. This does not solve the issue of resetting a struct field, i.e. Embed in MessageEdit.


chore: port fin.reflect

This definition was deleted during porting.

Your refactor LGTM, feel free to merge

bors r+


Parse error in tuple access  foo.0. bar

This is supported rust syntax since rust 1.46, but rust-analyzer fail to parse it in some cases:
The following code compiles fine, but rust-analizer incorrectly reports an error:
fn main() {
    let foo = (String::new(),);
    foo.0.as_str(); // OK
    foo.0. as_str(); // ERROR in rust-analyzer! (Syntax Error: expected SEMICOLON);
}

Context: you might argue that this is incorrect style, but in my case, rust-analyzer was reporting error in auto-generated code using quote. It was generated with something like the following exampe
fn main() {
   let xx = quote::quote!(as_str());
   println!("{}", quote::quote!(foo.0.#xx));
}

which prints  foo . 0. as_str ()


Laravel 5.0 queue memory leak

Laravel Version: 5.0.35
PHP Version: 5.5.33

Description:
Hi . I am running queues with beanstalked and facing some strange trouble .
After the job finished, its not freeing memory .
Here is my supervisord configuration
[program:laravel-project-queue]
command=php /var/www/html/project/artisan queue:work --daemon
numprocs=1
autostart=true
autorestart=true
Steps To Reproduce:
The queue is being called with artisan.
\Artisan::queue('isps:prepare', ['--immediately' => true]);

i have got this problem too, on a similar configuration with beanstalked

@hakobsharabkhanyan will need more details about the problem and maybe something that helps us replicate the problem on a fresh laravel app.
Please not that 5.0 is no longer supported, either use 5.1 or 5.3

@themsaid Thanks for reply . Actually at this moment my only clue that it can be connected because i am calling Artisan::queue from code . I will move this to the standard queue and try this way .
Because all other things are standard, there is nothing special . I put log at the end of the function, to be sure its reaching the end and log worked .
Thanks

When you say that memory is not freed; I presume you're getting a "Fatal error: Allowed memory size of ### bytes exhausted (tried to allocate ## bytes)". Correct me if I'm wrong.
A fix may be to check what your memory limit is, and executing your queue worker with --memory=64 so that it will be automatically terminated once it allocated 64 Mb data. (Instead of your code fatally erroring out when it reaches 128 Mb)
Another simpler fix would be to stop using --daemon. PHP isn't meant for long-running tasks.

There’s several issues that just make PHP the wrong tool for this. Remember, PHP will die, no matter how hard you try. First and foremost, there’s the issue of memory leaks. PHP never cared to free memory once it’s not used anymore, because everything will be freed at the end – by dying. In a continually-running process, that will slowly keep increasing the allocated memory (which is, in fact, wasted memory), until reaching PHP’s memory_limit value and killing your process without a warning.

Quote from https://software-gunslinger.tumblr.com/post/47131406821/php-is-meant-to-die

We expect it to leak memory. That's why we have the option to restart after memory usage goes over a threshold.

@GrahamCampbell what about creating a new driver for queues - fork . It will solve this problem , yes?

@hakobsharabkhanyan what memory should be freed, but isn't? Do you have an actual problem, or just reporting an observation?

@sisve Yes its actual problem .
I have a long running job that can take up to 15-20 minutes . I have configured queues with supervisord .
Job is being pushed when i am uploading the file . Before uploading the file RAM usage is 200mb . During the process its going up to 500mb (overall system RAM usage) . Then when the Job is being finished , the memory is staying about 500mb . I tried also to manually unset variables, but was not much helpful . Now i put Artisan::queue('queue:restart'); before return in my job class .
\Artisan::queue('queue:restart');
return;
This way its working fine, but i am not sure if its a good approach .
Also note that i am not pushing command to queue manually . I have an artisan command and i am calling from code Artisan::queue('isps:prepare', ['--immediately' => true]);
Thanks

@hakobsharabkhanyan seeing similar behavior.  Was your solve just to add \Artisan::queue('queue:restart') . to your job class in the handle method?

@lamboap Yes it was the solution too . But in my case i just created the job as artisan command and manually forked the process .
Something like this - exec('php /rootproject/artisan command');
Actually you can also just put maximum RAM limit and queue will auto restart if after finishing the RAM usage is more than your configured value .

Hi, I am getting the same problem when trying to run the queue:work .  I'm using QUEUE_CONNECTION=database .
Any idea how I can solve this problem?


Upgrade guide about upgrade to GWAPI v1.1 and KIC v3.2

Is there an existing issue for this?

[X] I have searched the existing issues

Does this enhancement require public documentation?

[X] I have added an Acceptance Criteria item for adding and/or adjusting public documentation (if applicable)

Problem Statement
In KIC v3.2, we have upgraded the Gateway API to version v1.1. https://github.com/Kong/kubernetes-ingress-controller/issues/5705#issuecomment-2057390745
However, there are a series of updates in Gateway API v1.1, including GA for GRPCRoute.
So in KIC 3.2, users can directly use GRPCRoute v1.
However, during the upgrade process, we need to address how to upgrade the GRPCRoute from version v1alpha2 to v1, how to upgrade the CRD of Gateway API, and how to upgrade KIC. We need a guide document for this.
Proposed Solution

Add a new guide for the upgrade

Additional information
No response
Acceptance Criteria

[ ] There is an upgrade guide that guides users on how to upgrade the Gateway API to v1.1 and work with KIC v3.2.

https://github.com/Kong/docs.konghq.com/pull/7503 has been merged, let me close this ione


Multiple child processes hang indefinitely and unwanted Electron windows open for each child process

I've spent way more hours than I'm willing to admit stuck on this problem. I am trying to get parallel tests to work with Browserstack and Nightwatch in an Electron app.
When I run the test for just one env it works perfectly, but when I run the test with multiple browsers it pops up two new Electron windows and the terminal says:
Started child process for: windows_10_chrome_46 environment
Started child process for: default environment
...but nothing ever happens. I know may be a Nightwatch rather than an Electron issue, but can you explain why two windows would open up in Electron and/or why the child processes would never actually finish?
To help demonstrate the behavior I created this video.
Below is the code I'm using:
main.js
ipcMain.on('start-nightwatch-tests', function() {

  var nightwatch = require('nightwatch');
  var done = function() { console.log('done'); };
  var settings = {};

  try {
    var argv = {
          test: 'nightwatch/example.js',
          config: 'nightwatch.json',
          env: 'windows_10_chrome_46,default'
      };
      nightwatch.runner(argv, done, settings);
      done();
  } catch (error) {
    console.log('Exception:' + error.message);
  }
});

nightwatch.json
{
  "src_folders": [
    "nightwatch\/"
  ],
  "selenium": {
    "start_process": false,
    "log_path" : "",
    "host": "hub.browserstack.com",
    "port": 80
  },
  "test_settings": {
    "default": {
      "selenium_port": 80,
      "selenium_host": "hub.browserstack.com",
      "silent": true,
      "screenshots": {
        "enabled": false,
        "path": ""
      },
      "desiredCapabilities": {
        "browser": "internet explorer",
        "os": "Windows",
        "browser_version": "11.0",
        "os_version": "10",
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "browserstack.user": <user>,
        "browserstack.key": <key>
      }
    },
    "windows_10_chrome_46": {
      "selenium_port": 80,
      "selenium_host": "hub.browserstack.com",
      "silent": true,
      "screenshots": {
        "enabled": false,
        "path": ""
      },
      "desiredCapabilities": {
        "browser": "Chrome",
        "os": "Windows",
        "browser_version": "46.0",
        "os_version": "10",
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "browserstack.user": <user>,
        "browserstack.key": <key>
      }
    }
  }
}

I've tried 10000 different things and I'm still totally stumped. Any insights would be appreciated. Thanks!

Sorry I don't use Nightwatch.

Having this same issue with the selenium-standalone package.  Any update?


Entities CSV ETag doesn't change after entity deletion

Problem description
Backend returns the entities CSV with an ETag based on the timestamp of the latest entity creation or update. That's true for the CSV download to OpenRosa clients (the form attachment endpoint), as well as the download from the entities Data page. However, that strategy doesn't seem to account for entity deletion: when an entity is deleted, I would expect the ETag of the CSV response to change.
I think @dbemke ran into this issue at https://github.com/getodk/central/issues/584#issuecomment-1959468673.
Steps to reproduce the problem

Create an entity list with at least 2 entities.
Download the entities CSV.
Delete an entity (but not the one most recently created or updated).
Download the entities CSV again.
Observe that the CSV is unchanged and still includes the deleted entity.

Expected behavior
I would expect that when I download the CSV again, the deleted entity is not included.
Central version shown in version.txt
I think this has been an issue since we introduced entity deletion.

when an entity is deleted, I would expect the ETag of the CSV response to change

Definitely.

I would expect that when I download the CSV again, the deleted entity is not included.

We have some decisions to make about how clients will learn about deleted entities that they may have locally. This is something @seadowg and I are going to be exploring very soon. For now excluding deleted entities seems like the best thing to do.

We might be able to use deleted_at as part of the ETag computation to address this. That means purging will change the ETag and clients would redownload.
Could we only use the audit table and look for the latest change on the actee?
There's a somewhat related issue around properties being added to an entity list. Currently the ETag doesn't change in that case even though the shape of the entity list has changed. If Collect and Enketo return a blank string when looking up a property that doesn't exist (I'm pretty sure that's what it does), then this would be fine. If Collect or Enketo crashes, we do need another option.

Note for @getodk/testers: this bug of the deleted entity still being present in the entity list should also be tested in Collect.
The issue was that central backend was using the last updated at timestamp of any entity in the entity list to compute something to tell a client like Collect (and the browser) whether or not to use the cached dataset CSV or definitely fetch a new one. That meant if an entity was deleted, it was still just checking the updated timestamp of other entities still in the dataset, and not knowing to re-download the entities. Now it knows to look for the last action, including deletion, on a dataset.

@getodk/testers, this fix is present on the staging server.

Tested with succcess!


Explicit boolean type not honored without cast

TypeScript Version:  3.7.0-beta

Search Terms: type narrowing, inference, casting, typecasting, control-flow
Code
const cast: boolean = <boolean>false
const uncast: boolean = false

const record: Record<keyof any, {}> = {}
record.a = {...(cast && {})} // OK.
record.b = {...(uncast && {})} // Error: uncast inferred as false.

Expected behavior: If a variable is explicitly typed, that type should always be honored.
Actual behavior: Type is inferred from actual boolean value without even <const>.
Playground Link
Related Issues:

(Please note that the new issue template asks you to include search terms and related issues.)
Related to #8513, specifically this comment
This is working as intended, given #8010: control-flow based type analysis will narrow the type of a union-typed variable upon assignment.  boolean is shorthand for the union type true | false.

This is by design AFAIK.  uncast-the-constant is actually still typed as boolean; if it were a let, you could reassign true to it at any time.  The narrowing to false was done by control-flow analysis and is temporary within that scope; since the compiler knows for sure the value is false at that time, the error is generally desirable: it's alerting you that the thing you think could be true or false will actually always be false, which is likely to reflect a bug in most cases.  It's no different than if you did a type guard that ruled out the true case and then did something that assumed it could be true: you would get the same error.

@jcalz, @fatcerberus thanks!

(Please note that the new issue template asks you to include search terms and related issues.)
Added retroactively.

uncast-the-constant is actually still typed as boolean; if it were a let, you could reassign true to it at any time.
FWIW, I see the same behavior when using let.

Glad it's not a bug but I found the behavior surprising.

FWIW, I see the same behavior when using let.

Yeah, because it's narrowed by CFA.  It's not really typed as false, it's just that the compiler knows that's exactly what it is at that moment.  Like I said you could go uncast = true and it would be fine (and CFA would then narrow it to true :wink:).


MiscTest.testSymmetricKey hangs when running on Ubuntu.

The test hang when testing incremental encryption. Need investigation.

It hangs at when generating a secure random number.
new SecureRandom().generateSeed(555)

Previously there is a bug report filed to Oracle about this but with java 1.6. We are using open java 1.7.
http://bugs.java.com/view_bug.do?bug_id=6521844

Based on my initial test, instead of using generateSeed() method, using nextBytes() solves the hang issue on Linux. Will provide a proper fix.
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[SIZE];
random.nextBytes(bytes);


The code of MetaNet Part?

Hi~,
Thank you for your great work! I have some problems with your code, in your paper you mentioned that you applied a MetaNet to improve the quality of pseudo-labels, but I didn't find the code of this part. I noticed that you said you remove the code of this part in the ReadMe.md, could you release the code of this part for I want to check the effectiveness of this part?

@Zhangjiacheng144 Sorry, the overall code have been reorganized and MetaNet have been removed from the reconstructed codes for speeding up.


Text: Unexpected line wraps in Safari with Fill mode

Bug Description
Original report: https://wordpress.org/support/topic/box-doesnt-wrap-text-correctly/
Story: https://www.acec.nl/web-stories/de-notenkrakerrrr/
There are unexpected line wraps on page 9 (the third to last one) in Safari, while the story displays correctly in Firefox and Chrome.
Expected Behaviour
No line wraps, same behavior everywhere.
Steps to Reproduce

Add a text that has at least two words, e.g. "Mal maken" from the link reported.
Set background mode to Fill
Unlock the text element width/height and set the width so that it would be as small width as possible but still allow the 2 words to be displayed in one line.
Save the story and open the story link to view it.
Grab the bottom right corner of the browser and start resizing it slowly to smaller. At some point, the text will be displayed in 2 lines:

Leave the same window size and go to the editor. In testing, it seems to display 2 lines in the editor now, too, perhaps this will be helpful when debugging.

Screenshots
Safari:

Firefox:

Chrome:

Additional Context

Plugin Version: 1.3.0
WordPress Version:
Operating System:
Browser:

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance Criteria

Implementation Brief

@barklund @miina Is this something one of you could look into? Do we have similar issues for this somewhere already? Or is it perhaps even an issue that we simply can't fix even with our font metrics?

@swissspidy I'm able to reproduce this at least in Safari, looks like it doesn't always appear, seems to depend on the window size (or ratio?). Is quite easy to reproduce when resizing the window. For example:

Another case of unexpected wraps in Safari: https://adiabeticchef.com/web-stories/cakes-and-adc/

Huh, this is not a fun bug.
Moving it to the Sprint backlog for an initial investigation to figure out if we can fix this.

Findings so far:
Initially, it seemed that perhaps Safari was not rendering fractional pixels, however, testing shows that it does seem to consider fractional pixels.
However, it looks like Safari is rendering the font a little bit differently than in chrome, it seems to be a tiny bit larger. Found some topics with similar issues and suggestions e.g. this and this and quite a few others, however, no solution so far.
Here are two screens, one Chrome and one Safari with exactly the same Page size. All the numbers (width/height, fontSize, etc.) match 100%, however, in case of Safari, the font seems to be larger (e.g. the word maken seems to take 1px more in Safari than Chrome according to some measuring).

Thoughts? @merapi You worked on the fonts quite a lot, perhaps you have any insights here?

Information from Pascal:
Apparently this is a long-standing issue with Safari where fractional font-sizes are not correctly handled: https://bugs.webkit.org/show_bug.cgi?id=46987
Should we close this issue as non-fixable?

@choumx Any thoughts on this one?
With Safari having issues with fractional font sizes (basically rounding up/down to nearest 0.5/1.0), there's not much we can do here without relying on JS to detect the wrapping.
<amp-fit-text> comes to mind here, but we don't use that on purpose because it doesn't quite fit our use case.
So really seems like a wontfix unfortunately 😞

Interesting bug. I think we can try deliberately reducing font sizes only on Safari by 0.5px to undo this Webkit behavior:

See FontDescription::computedPixelSize()
https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/FontDescription.h#L66
unsigned computedPixelSize() const { return unsigned(m_computedSize + 0.5f); }

This can cause the opposite problem (underflow) on some text fields, but it might be desirable tradeoff in terms of UX.

Any suggestions on how to target Safari on the frontend then?

Looks like there isn't a clean way to do this in pure CSS, so I'd try user agent detection in JS. E.g.
if (navigator.vendor.includes('Apple')) {
  // Render CSS rule into <style amp-custom> to reduce fontSize in children of text elements, e.g.
  // p > span { font-size: calc(100% - 0.5px); }
}

We'd need to do this on the frontend though, not in the editor. So we can't just use JS, and I don't think amp-script works in stories.

Oh right. Can we do UA detection from the request header i.e. look for Safari/xyz? Or we can try the Safari CSS hack:
@media not all and (min-resolution:.001dpcm) { @media {
  p > span { font-size: calc(100% - 0.5px); }
}}

Seems to work: https://codepen.io/choumx/pen/dyvdqdV 🥴

Tested it quickly and it does seem to work, however, it does cause the issue mentioned above: underflow in Safari.
An example, editor vs FE in Safari.

This change would be for new stories only and if Safari would change their logic in the future then our fix would still be active for the previously saved stories.
Let me know if you think that's a better issue than overflow.

Thanks Miina! I think it looks better since at least it avoids text legibility issues due to overflow.
We could also consider only supporting integer (pixel) font sizes in the editor. 😱
Let's run this by UX and product and see what they think.

We could also consider only supporting integer (pixel) font sizes in the editor.

The font sizes are responsive in the FE and even if set in full pixels in the editor, it would still vary when viewing a story.

Yea sorry I meant applying font-size rounding to all stories in the FE, which would make text more deterministic across browsers but less deterministic between editor and FE. Not as excited about this.

@choumx Any updates on this / next steps?
On applying font-size rounding to all stories in the FE: do you mean rounding font size down for FE? The width and height are also responsive and in %, font-size would need to be in sync with that, too. I'd guess that rounding any values could cause unexpected results.

Confirmed with UX that the hack to reduce font-size by 0.5px in Safari is OK.

Verified in QA


Unable to create new events or tasks.

Describe the bug
Every time I create a new time block I get a message: "Unable to create document." I'm unable to create new tasks or rename them.
To Reproduce
Steps to reproduce the behavior:

Create a new time block on the timeline by clicking and dragging.
Error message pops up immediately.

Expected behavior
A new task time block created and the ability for me to change the title and move the block both in the new note created and the time block.

Hey, once you do that, please open the dev tools (Ctrl + Shift + I) and share the error message that you see.

Closing this as stale.


Disallow try-catch statements on Solana

Try-catch statements are not supported on Solana. This PR updates the documentation to inform so and adds an error message when someone tries to use such a construct on Solana.
PS: The intention for this PR is to avoid using ABI decoding/encoding for try-catches on Solana, a construction that requires a special case of decoding with a basic block to handle a decoding failure.

@xermicus try catch is designed to work with cross contract calls. I thought that if the callee failed on substrate (e.g. revert or divide by zero) then the entire transaction fails on Substrate too.
Should try catch be disallowed for substrate too?

The intention for this PR is to avoid using ABI decoding/encoding for try-catches on Solana, a construction that requires a special case of decoding with a basic block to handle a decoding failure.

This does imply we should either implement it propperly or disallow try-catch for the substrate target as well, or doesn't it?

The scale decoder does implement this, but our new borsh decoder does not.

The scale decoder does implement this, but our new borsh decoder does not.

Alright then, I didn't know this, thanks :+1:

@xermicus try catch is designed to work with cross contract calls. I thought that if the callee failed on substrate (e.g. revert or divide by zero) then the entire transaction fails on Substrate too.

The seal_call API returns a return code, with variants like CalleeReverted and CalleeTrapped. Maybe they are not yet used? I didn't check this yet in codegen / emit

The seal_call API returns a return code, with variants like CalleeReverted and CalleeTrapped. Maybe they are not yet used? I didn't check this yet in codegen / emit

I don't think these return codes are used yet. However, it does mean that try catch is needed on Substrate. It may need some wiring up to make well with the new return codes.

It seems to be implemented:
https://github.com/hyperledger/solang/blob/main/src/emit/substrate/target.rs#L1133


Adjust Stacks Signed Message length prefix

In implementing message signing for the Hiro Wallet, I've noticed a discrepancy between our software implementation.
Software implementation:
// 'Stacks Message Signing:\n'.length //  = 24
// 'Stacks Message Signing:\n'.length.toString(16) //  = 18
const chainPrefix = '\x18Stacks Message Signing:\n';

https://github.com/blockstack/stacks.js/blob/5ac9385069ce48bde452520d5168c84e31b5b961/packages/encryption/src/messageSignature.ts#L5-L8
(This uses the wrong phrasing and needs to be updated to Stacks Signed Message)
Zondax implementation:
https://github.com/Zondax/ledger-blockstack/blob/32d8f12fe93bfc9e4c4a65605a88f0a9048695ec/js/src/index.ts#L251-L254
Hiro Wallet is currently using \x18 and Zondax uses \x19. There was some discussion about the prefix in the issue @MarvinJanssen created.

Stacks Signed Message:\n is 24 chars, so wouldn't that make the prefix \x18 in little-endian encoding

~I believe we should be using \x18, unless I misunderstand how the prefix length works.~
@neithanmo did say here that it should indeed by 19, though I don't understand why.
Edit: actually both wrong:
"Ethereum Signed Message:\n".length.toString(16) // = 19, same used in Eth prefix `\x19`
"Stacks Signed Message:\n".length.toString(16) // = 17

In previous calculations I was counting \n manually as two chars, so believe that value should instead be:
\x17Stacks Signed Message:\n

:link: zboto Link

closed via #121


Stop crash when user signs out and onyx is cleared

Fixed Issues
$ https://github.com/Expensify/App/issues/11234
Tests

Sign out

[ ] Verify that no errors appear in the JS console

QA Steps

Sign out

[ ] Verify that no errors appear in the JS console and app doesn't crash

cc @luacmartins

Gonna merge without the checklists being completed

I merged without the checklist being completed since this fixes a crash in the App and this was fixed internally!

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

🚀 Deployed to staging by @luacmartins in version: 1.2.7-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by @roryabraham in version: 1.2.7-2 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Fix load_plugin_textdomain path

Path to languages files in load_plugin_textdomain() function should be relative. plugin_basename() function make it relative to current plugin directory.

Thank you for the patch, could you take a look at it? @amirfallahii


The Dependency Entity Framework 6.1.3 does not support framework .NETCore, Version=v1.0

I am building my personal website and I decided to do it with Visual Studio 2015 and ASP.NET Core.  I am currently stuck as my project.JSON gives me the following error:  error NU1002: The dependency EntityFramework 6.1.3 does not support framework .NETCoreApp,Version=v1.0.
What changes should I make in my project.JSON to avoid that error message? Below is my project.JSON
Your help will be very appreciated. Thanks!
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
"Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.1",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Routing": "1.0.1",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": {
"version": "1.0.1",
"type": "build"
},
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"EntityFramework": "6.1.3",
"Microsoft.EntityFrameworkCore": "1.0.1",
"Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0"
},
"tools": {
"BundlerMinifier.Core": "2.0.238",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"**/*.cshtml",
"appsettings.json",
"web.config"
]
},
"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ],
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
Further technical details
EF Core version: (found in project.json or packages.config)
Database Provider: (Microsoft.EntityFrameworkCore.SqlServer)
Operating system: OS: Windows 10 Home (64-bit)
IDE: (e.g. Visual Studio 2015)

You have the EF6 package there, which does not run on .NET Core. You want Microsoft.EntityFrameworkCore instead.
Side note: when I search for entity framework in the NuGet package manager, I get EF6 but Microsoft.EntityFrameworkCore is nowhere to be seen. I have to basically type the entire ID to find it.

@jnm2 Thank you for your help.  All I had to do was to remove the line  "EntityFramework" : "6.1.3" and the error disappeared. I then rebuilt the project and everything works just fine.


improve: local config file refinement

What this PR does:
Enhance config file.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Codecov Report

Merging #156 (5819640) into master (71ec217) will increase coverage by 0.05%.
The diff coverage is 65.21%.

@@            Coverage Diff             @@
##           master     #156      +/-   ##
==========================================
+ Coverage   35.06%   35.12%   +0.05%
==========================================
  Files          76       76
  Lines       11670    11676       +6
==========================================
+ Hits         4092     4101       +9
+ Misses       7100     7098       -2
+ Partials      478      477       -1

Impacted Files
Coverage Δ

pkg/config/config.go
0.00% <0.00%> (ø)

pkg/executor/redirect.go
13.28% <ø> (ø)

pkg/mysql/conn.go
44.82% <ø> (ø)

pkg/runtime/optimize/optimizer.go
31.42% <ø> (ø)

pkg/runtime/rule/shard_script.go
90.74% <ø> (ø)

pkg/config/model.go
58.49% <68.18%> (+10.66%)
:arrow_up:

Continue to review full report at Codecov.

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


Added  notifications for Travis.

Added Slack notifications of the build status to the bravo-time channel. the token has been encrypted with Travis' symmetric encryption.

@KyleChamberlin do you still want me to merge this?

Yea, I mean assuming this project it moving forward.

Can't go wrong with build server notifications.


Remove try before Parser.parse calls.

As of https://github.com/apple/swift-syntax/pull/912, this call no longer throws.

cc @dylansturg


Can I use a token for authentication?

I run emacs on a different system, so it would be easier if I could use some kind of token for authentication. Is that possible?

Unfortunately not with the current implementation. Looks like the meat and potatoes of the auth flow is handled by the agent (from copilot.vim) not maintained by us.

ok, but can I somehow specify which browser command to open, so that I can use a specific profile of the browser?

We use the browse-url to open the verification link so would be worth reading up on the docs of that.
Looks like you can customize browse-url-browser-function, not sure if this can achieve exactly what you're looking for? (haven't tested this myself)

I will try, but how long can I expect this login to be valid, until I have to login again?


Check failed: (data) != ((void *)-1)

Hello, when I run this project, the problem of samgraph/common/common.cc:99] Check failed: (data) != ((void *)-1) appears. Have you ever encountered it? If Can you tell me how you solved it?

Hello, this seems that there are some problems with your datasets. Have you downloaded a dataset entirely and run with it? You can print the filepath in common.cc:97 to check it.
You can see datagen/README.md to find out how to preprocess datasets.

Thanks, I solved the problem with your advice.


Retrieving the online date of an article does not work

I'm currently trying to retrieve the date but it keeps getting None
Could someone please explain to me ?

Hi
can you give me a code sample? Normally, If some attributes are None  means that it wasn't found in the response, maybe because they are returned from other APIs

I'm trying to get the date using created_at but it's not working with this code, this may be my way of using it too
`def detailurl(url, limit=10):
parsed_url = urlparse(url)
query_params = parse_qs(parsed_url.query)
catalog_ids = query_params.get('catalog[]', [])
size_ids = query_params.get('size_ids[]', [])
brand_ids = query_params.get('brand_ids[]', [])
price_to = query_params.get('price_to', [])[0]
currency = query_params.get('currency', [])[0]
status_ids = query_params.get('status_ids[]', [])
created_at = query_params.get('create_at[]', [])

vinted_wrapper = VintedWrapper("https://www.vinted.fr")

search_params = {
    "order": "newest_first",
    "created_at": created_at
}

search_results = vinted_wrapper.search(params=search_params)
items_details = []

if search_results.get("items"):
    items = [VintedItem(json_data=item) for item in search_results["items"][:limit]]

    for item in items:
        created_at = item.created_at if hasattr(item, "created_at") else "Non spécifié"
        items_details.append({
            "id": item.id,
            "created_at": created_at

 print(items_details)

 if __name__ == "__main__":
url = "https://www.vinted.fr/catalog?catalog[]=79&order=newest_first&brand_ids[]=304&size_ids[]=208&price_to=30&currency=EUR"
detailurl(url, limit=10)`

The search API doesn't return the created_at attribute that is returned from the item API. If you print search_results you will not find it in the response.
If you want the created_at attribute you should call the vinted_wrapper.item() function for each item.
I modify your code:
vinted_wrapper = VintedWrapper("https://www.vinted.fr")

search_params = {
    "order": "newest_first",
}

search_results = vinted_wrapper.search(params=search_params)
items_details = []

if search_results.get("items"):
    items = [VintedItem(json_data=vinted_wrapper.item(item["id"])["item"]) for item in search_results["items"][:10]]

    for item in items:
        created_at = item.created_at if hasattr(item, "created_at") else "Non spécifié"
        items_details.append({
            "id": item.id,
            "created_at": created_at})

    print(items_details)

Basically, I've changed:  items = [VintedItem(json_data=item) for item in search_results["items"][:limit]]
with:  items = [VintedItem(json_data=vinted_wrapper.item(item["id"])["item"]) for item in search_results["items"][:limit]]
Or a version with the VintedScraper obj that handles all the conversion from JSON to VintedItem:
vinted_wrapper = VintedScraper("https://www.vinted.fr")

search_params = {
    "order": "newest_first",
}

search_results = vinted_wrapper.search(params=search_params)
items_details = []

items = [vinted_wrapper.item(item.id) for item in search_results[:10]]

for item in items:
    created_at = item.created_at if hasattr(item, "created_at") else "Non spécifié"
    items_details.append({
        "id": item.id,
        "created_at": created_at})

print(items_details)

Let me know if it works for you otherwise, I will close this issue since it isn't a bug.

Yes it works thank you very much !