Recalculate by traffic

Issue

Targeting issue: the issue will be CLOSED once the PR merged. If there is no issue that addresses the problem, please open a corresponding issue and link it here. Uses the Closes keyword to close them automatically.
Closes https://github.com/Telenav/osrm-backend/issues/221

Any other related issue? Mention them here.

Description
A summary description for what the PR achieves.

Implemented two traffic applying models:

appendonly: only querys traffic and append to OSRM response, no any re-calcualation
perferlivetraffic: prefer to use live traffic to re-calculate duration/weight on a route, use historical speed if no live traffic on a way, otherwise use the speed from Lua profile

Support to choose traffic applying model when startup osrm-ranking by cmd parameter -traffic-applying-model;
Support to enable/disable live traffic and historical speed on the fly(by request parameters: live_traffic=true/false, historical_speed=true/false;
Support to enable/disable live traffic when startup osrm-ranking by cmd parameter -live-traffic;
Renamed historical speed cmd parameters for osrm-ranking.

Tasklist

[x] CHANGELOG-FORK.md entry (CHANGELOG)
[ ] profiles/CHANGELOG.md entry if any Lua changes
[ ] update relevant Wiki pages
[ ] add tests (see testing documentation

Prerequirements

Want to contribute? Great! First, please read this page Contribution Guidelines.
If your PR is still work in progress please attach the relevant label.

How about add following descriptions with the code:
appendattributesonly: only additional traffic and historical speed append to OSRM response
perferlivetraffic: Re-calculate duration/weight for a route, prefer to use live traffic, if no live traffic on a way then use historical speed, otherwise use the speed from Lua profile


feat(core): optionally add sync for form value between tabs

Crazy idea, might be relatively easy to do

Created at https://github.com/margarita-form/margarita-form/commit/1531181c2c209d1cfd5b38e41f877cb0b7993229


Fix spelling or word in warning

Description
[Describe what this change achieves]
A very small change to fix the spelling of the word "not" in the following warning. I noticed this while attempting to train a detector.

There is not enough data to train model

Issues Resolved
[List any issues this PR will resolve]
Check List

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@danotorrey thanks for the fix! This repository enforces a DCO check, can you re-commit with the -s flag to sign off on your commit? More details in the contributing guide here

Codecov Report

Merging #407 (a7243de) into main (3c6ffa2) will decrease coverage by 0.17%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##               main     #407      +/-   ##
============================================
- Coverage     77.79%   77.62%   -0.18%
+ Complexity     4114     4106       -8
============================================
  Files           296      296
  Lines         17644    17644
  Branches       1876     1876
============================================
- Hits          13726    13696      -30
- Misses         3019     3045      +26
- Partials        899      903       +4

Flag
Coverage Δ

plugin
77.62% <100.00%> (-0.18%)
:arrow_down:

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

Impacted Files
Coverage Δ

...java/org/opensearch/ad/task/ADBatchTaskRunner.java
81.76% <100.00%> (ø)

...port/SearchAnomalyDetectorInfoTransportAction.java
64.44% <0.00%> (-4.45%)
:arrow_down:

...g/opensearch/ad/model/DetectorValidationIssue.java
64.91% <0.00%> (-3.51%)
:arrow_down:

...rch/ad/transport/ForwardADTaskTransportAction.java
94.06% <0.00%> (-3.39%)
:arrow_down:

...ain/java/org/opensearch/ad/model/ModelProfile.java
70.90% <0.00%> (-1.82%)
:arrow_down:

...ain/java/org/opensearch/ad/task/ADTaskManager.java
75.69% <0.00%> (-1.21%)
:arrow_down:

...rch/ad/transport/AnomalyResultTransportAction.java
80.18% <0.00%> (-0.69%)
:arrow_down:

.../main/java/org/opensearch/ad/ml/CheckpointDao.java
69.55% <0.00%> (-0.65%)
:arrow_down:

@ohltyler Done.


fix(components): chip storyboard missing some import

Closes #2384
📝 Description
In chip.stories.tsx, we have the ChipProps import missing.
⛳ Current behavior (updates)
Missing import
🚀 New behavior
No missing imports
💣 Is this a breaking change (Yes/No):
No
📝 Additional Information

@kuri-sun https://github.com/nextui-org/nextui/pull/2205


Copyright Update

Coverage remained the same at 88.861% when pulling d36eb170750acb318c78521a1f41b48f748d0880 on feature/update-copyright into 9f19bf59adbd68d7cfaab7be428d17c3abb8410e on master.

Coverage remained the same at 88.861% when pulling 6e034e8153e9884fae194311969e891f1c364370 on feature/update-copyright into 9f19bf59adbd68d7cfaab7be428d17c3abb8410e on master.

Coverage remained the same at 88.861% when pulling 8ecfb1195fa888149dd898581b3e27007caa6136 on feature/update-copyright into 9f19bf59adbd68d7cfaab7be428d17c3abb8410e on master.


Modifying SOAP to REST related Documentation

Purpose
This PR will add the IP2Geo API as examples in the followings documentations.

Expose a SOAP service as a REST API
2.Generate REST API from SOAP Backend

Webservice: https://ws.cdyne.com/ip2geo/ip2geo.asmx

Close the PR as phone verification back endpoint is working fine


expm_multiply, complex matrices not working using start,stop,ect...

Hi,
There is a bug with expm_multiply. If I just use a complex matrix and vector the function returns the correct vector but when I use the linear grid feature it seems to be casting the vector to a float while iterating through the grid points:
site-packages/scipy/sparse/linalg/_expm_multiply.py:568: ComplexWarning: Casting complex values to real discards the imaginary part
X[0] = _expm_multiply_simple_core(A, B, t_0, mu, m_star, s)
site-packages/scipy/sparse/linalg/_expm_multiply.py:654: ComplexWarning: Casting complex values to real discards the imaginary part
K[p] = h * A.dot(K[p-1]) / float(p)
site-packages/scipy/sparse/linalg/_expm_multiply.py:663: ComplexWarning: Casting complex values to real discards the imaginary part
X[k + id] = np.exp(kh*mu) * F
I'm using scipy 0.17.1.

Do you have an example that we can run to reproduce the problem?

OK, I can reproduce this:
Here's an A and B.  B is complex:
In [19]: A
Out[19]:
matrix([[ 1. ,  0. ],
        [ 0.5,  2. ]])

In [20]: B
Out[20]:
matrix([[ 1.+0.j,  1.+1.j],
        [ 0.+0.j,  0.+1.j]])

expm_multiply(A, B) works:
In [21]: expm_multiply(A, B)
Out[21]:
matrix([[ 2.71828183+0.j        ,  2.71828183+2.71828183j],
        [ 2.33538714+0.j        ,  2.33538714+9.72444323j]])

But using start, stop and num causes a problem with the complex values:
In [22]: expm_multiply(A, B, start=0, stop=1, num=2)
/Users/warren/miniconda3scipy/lib/python3.5/site-packages/scipy-0.19.0.dev0+12bff57-py3.5-macosx-10.6-x86_64.egg/scipy/sparse/linalg/_expm_multiply.py:568: ComplexWarning: Casting complex values to real discards the imaginary part
  X[0] = _expm_multiply_simple_core(A, B, t_0, mu, m_star, s)
Out[22]:
array([[[ 1.        ,  1.        ],
        [ 0.        ,  0.        ]],

       [[ 2.71828183,  2.71828183],
        [ 2.33538714,  2.33538714]]])

In [23]: import scipy

In [24]: scipy.__version__
Out[24]: '0.19.0.dev0+12bff57'

I believe that changing the dtype in lines #556 and #609 to dtype=A.dtype fixes the issue.


SIGSEGV Segmentation violation for old devices: Samsung S5 (android 6.0.1), Oneplus2 (Android 6.0.1)

Tried to update library to official, but unfortunately had this problem.
Application is working fine with prev no official library "react-native-mixpanel": "^1.2.5",
SIGSEGV Segmentation violation (invalid memory reference)
/system/lib/libart.so:903112 0xb3b017c8
Problem reproduced only on production mode. and works fine on debug mode and for new devices

Any updates?

hi @alexrymkevich , sorry for the late response. To be able to assist you more easily, do you have a more detailed log showing Mixpanel code being referenced or a sample app that you can reproduce? Without these, it's hard to investigate further.

No, I already removed this code and rollbacked to prev library

@alexrymkevich this issue is happening(Segmentation fault - accessing deallocated memory location ) on ios with mixpanel-react-native:2.3.1. what version worked for you?
System info
System:
    OS: macOS 12.6.8
    CPU: (10) arm64 Apple M1 Max
    Memory: 650.33 MB / 32.00 GB
    Shell: 5.8.1 - /bin/zsh
  Binaries:
    Node: 18.15.0 - /usr/local/bin/node
    Yarn: 1.22.19 - ~/.yarn/bin/yarn
    npm: 9.5.0 - /usr/local/bin/npm
  Managers:
    CocoaPods: 1.11.2 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1
    Android SDK: Not Found
  IDEs:
    Android Studio: 2022.1 AI-221.6008.13.2211.9619390
    Xcode: 14.2/14C18 - /usr/bin/xcodebuild
  Languages:
    Java: 11.0.12 - /usr/bin/javac
  npmPackages:
    react: 18.2.0 => 18.2.0
    react-native: 0.71.12 => 0.71.12


Jpeg2000 writer does not support higher bit depths

Now that we can read higher bit depth jpeg2000 images, it makes sense to be able to write them as well.

This should be implemented now in new jpeg2000 plugin. Could someone confirm that this works?


Update copy-files.md

Removed link to self. I believe it provides no value having a link to the current documentation and can be confusing for users

@twizzleness : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Add ci job to render/lint the markdown pages

We use mdx with some custom plugins and if there's weird (or unsupported) syntax the pages won't render, but since we render them on demand the build won't fail and we won't notice it in PRs.

This doesn't apply anymore 😊


MQTT Directory Topic

I no longer have an MQTT topic for the Directory information.  Without it the automation for populating the Input_Select in HomeAssistant fails.  I don't think it is a HA issue since I don't see the topic when using MQTT Explorer.  I have confirmed that I can add directories to the Input_Select manually and then select that directory via MQTT and it works as desired.  I don't know the version of PicFrame I am using (not sure where to get the info) but I updated from PyPi several days ago.

issue fixed by updating to the newest version, thanks


awsmobile publish stops with combination of manually created API and CLI created API

CLI Version : 1.0.21
Similar Issues: #51
As mentioned in #51 there is still an issue with a combination of Mobile Hub generated APIs and Manually created APIs.
Steps to reproduce:

Create an API 'manually' from API Gateway console ( or create Lambda function from Lambda console and add API Gateway as a trigger ).
Add a resource and method.  The integration type will be a Lambda function
Deploy your API to a stage
Find your project in Mobile Hub
Select the Cloud Logic tile
Select “Import existing API”
Find and select your manually created API from above

pull the updated configuration using cli
awsmobile pull
The output of my mobile-hub-project.yml is:
    components:
      ManualAPI: !com.amazonaws.mobilehub.v0.API
        attributes:
          api-arn: ‘***************************************’
          description: Manually Created API
          name: ManualAPI
          requires-signin: true
          sdk-generation-stage-name: Development
        paths:
          /manualapi: !com.amazonaws.mobilehub.v0.Function {}

Create a new API via CLI

awsmobile cloud-api configure

Follow steps to create new API
Push update to Mobile Hub

Push fails
         invalid lambda function name: ManualAPI/manualapi: tag:yaml.org,2002:js/undefined ''           lambda function name can only contain alphanumeric characters:  a-z A-Z 0-9           Warning: no codebase found for lambda function: ManualAPI/manualapi: tag:yaml.org,2002:js/undefined ''           validation failed
The output of my mobile-hub-project.yml after creating new API is:
cloudlogic: !com.amazonaws.mobilehub.v0.CloudLogic
    components:
      ManualAPI: !com.amazonaws.mobilehub.v0.API
        attributes:
          name: ManualAPI
          requires-signin: true
        paths:
          /manualapi: !com.amazonaws.mobilehub.v0.Function
            name: tag:yaml.org,2002:js/undefined ''
            codeFilename: tag:yaml.org,2002:js/undefined ''
            handler: tag:yaml.org,2002:js/undefined ''
            enableCORS: tag:yaml.org,2002:js/undefined ''
            runtime: tag:yaml.org,2002:js/undefined ''
            environment: tag:yaml.org,2002:js/undefined ''
      CLIAPI: !com.amazonaws.mobilehub.v0.API
        attributes:
          name: CLIAPI
          requires-signin: true
        paths:
          /cliapi: !com.amazonaws.mobilehub.v0.Function
            name: CLIAPI
            codeFilename: uploads/CLIAPI.zip
            handler: lambda.handler
            enableCORS: true
            runtime: nodejs6.10
            environment: {}
          '/cliapi/{proxy+}': !com.amazonaws.mobilehub.v0.Function
            name: CLIAPI
            codeFilename: uploads/CLIAPI.zip
            handler: lambda.handler
            enableCORS: true
            runtime: nodejs6.10
            environment: {}

There are numerous attributes of the ManualAPI component that have errors in their values.

Hi @LXensen this was fixed on v1.1.2
Feel free to reopen if you still have issues with this.
Thanks!


Update to Swift3 version issue

As the Swift3 becomes a more wide and seems have no big change, strongly recommend author update this excellent library to Swift3.

When you install latest version LTMorphingLabel (0.3.0), and convert it to Swift 3.0 (Edit -> Convert -> To Current Swift Syntax...), XCode will create 2 build errors:
Expression type 'Array' is ambiguous without more context
File: LTStringDiffResult.swift
Lines: 40 and 52
Quick and easy solution is to remove "" and "as! [LTCharacterDiffResult]" from those 2 lines.

The master branch is upgrade to Swift 3. You can upgrade to the latest release.
Thanks.


Let collectives configure a trusted domain for the contribution flow redirect

Collectives can pass a redirect URL parameter to the contribution flow (including in its embedded version) to implement a custom "Success" page.
This redirect is currently protected by our pages/external-redirect.js mechanism, which means that unless we explicitly add their domain to the trusted domains list they'll get a scary confirmation message before the redirect actually happens.
There are a few issues with that:

We don't want to hardcode all these domains in our code
Editing the code manually is not easily maintainable/scalable (needs an engineer intervention)
Adding/revoking a URL requires a merge & deploy
Trusted domains are per-account, not global: it's ok to redirect to https://webpack.js.org if you're Webpack, not if you're Babel

Solution
On /:account/admin/advanced (or /:account/admin/export if we rename it to "Widget"?), add a Trusted redirect domain where collective admins can set a valid redirect URL for their account. This URL should be inherited by children's projects  & events.
MVP
Hardcode the flag in collective.settings.contributions.trustedRedirectDomain, but do not implement a real editing UI yet.
Related / alternative
For embedded: https://github.com/opencollective/opencollective/issues/4341

This redirect is currently protected by our pages/external-redirect.js mechanism, which means that unless we explicitly add their domain to the trusted domains list they'll get a scary confirmation message before the redirect actually happens.

I've been working with a Indico plugin that integrates Open Collective as payment method and wondering why redirect bakc to Indico is not working. And this seems to be the reason.
Were there any progress since this issue was created? I think it would be helpful for many collective folks who want to integrate OpenCollective with thier webaite.

This redirect is currently protected by our pages/external-redirect.js mechanism, which means that unless we explicitly add their domain to the trusted domains list they'll get a scary confirmation message before the redirect actually happens.

I've been working with a Indico plugin that integrates Open Collective as payment method and wondering why redirect bakc to Indico is not working. And this seems to be the reason.
Were there any progress since this issue was created? I think it would be helpful for many collective folks who want to integrate OpenCollective with thier webaite.

Hi @sukso96100, not yet but we can look into safe listing your domain if you share it here.


New Tab Page layout and base elements

Task/Issue URL: https://app.asana.com/0/1206226850447395/1207685167967158/f
Tech Design URL:
CC:
Description:
Contains base layout and elements for New Tab Page Sections. Currently using mock data. Models and element actions will be added in later as part of New Tab Page sections project.

Steps to test this PR:

Enable internal user flag and New Tab Page Sections via Debug menu
New layout should be visible when new tab is opened
When using regular horizontal size class (iPad / iPhone Max) grid should have 6 columns instead of 4

Definition of Done (Internal Only):

[ ] Does this PR satisfy our Definition of Done?

Orientation Testing:

[ ] Portrait
[ ] Landscape

Device Testing:

[ ] iPhone 14 Pro
[ ] iPad

OS Testing:

[ ] iOS 14
[ ] iOS 15
[ ] iOS 16

Theme Testing:

[ ] Light theme
[ ] Dark theme

Internal references:
Software Engineering Expectations
Technical Design Template

The gap between the bottom and customise button seems quite big, but maybe that's deliberate?

Yes, in fact it should be even bigger - there was a change on designs. I'll adjust that.


"node bot.js" Does Nothing

As the title says, when I enter the command node bot.js nothing happens. I know Discord.io gatewayv5 is depreciated, but even after updating to v6 nothing changes.

The files bot.js, package.json, and auth.json are as they come in the tutorial, save for the ticket.

Same problem.

I was having the same problem, but Issue #48 solved it for me. Try that.

Go in the nodes folder (if I am correct that is the name xD) ant then go in lib, edit the .js file that is in there and change the gatway from 5 to 6, then save and try again.

lucasknook which .js file in >lib ? there are lots of them.

Oh, weird, I only have one, it should be index.js.

I'm having the same problem. I tried using Issue #48, but it didn't work. node bot.js still does nothing.

@AceTrainerBaileyV2
I got it working by doing this:
Go to \node_modules\discord.io\lib and changing GATEWAY_VERSION to 6 instead of 5. I hope this helps!

I found the index.js in the lib and the gateway was already set to 6. It's still not working.

 After doing everything that I could find here I noticed something: you've got 2 secret thingies on the discord app page. the secret client and the bot token. I had previously entered the secret client string. yeah, dis no work.
Check if you did the same, ifso change it to the bot token string.


apps sc: update user grafana chart->6.1.11 and app version-> 7.3.3

What this PR does / why we need it:user grafana updated so as to use JMES roles mapping for group claims
Which issue this PR fixes (use the format fixes #<issue number>(, fixes #<issue_number>, ...) to automatically close the issue when PR gets merged): fixes #110
Public facing documentation PR (if applicable)

Special notes for reviewer:
Checklist:

[ ] Added relevant notes to WIP-CHANGELOG.md
[ ] Proper commit message prefix on all commits
[ ] Updated the public facing documentation
Is this changeset backwards compatible for existing clusters? Applying:

[ ] is completely transparent, will not impact the workload in any way.
[ ] requires running a migration script.
[ ] will create noticeable cluster degradation.
E.g. logs or metrics are not being collected or Kubernetes API server
will not be responding while upgrading.
[ ] requires draining and/or replacing nodes.
[ ] will change any APIs.
E.g. removes or changes any CK8S config options or Kubernetes APIs.
[ ] will break the cluster.
I.e. full cluster migration is required.

Looking good!
Is this tested? Do you need help testing something to make sure the dashboards still work?

only as far as I made sure I could log on and it loaded - going to do some work on the group mapping now so can test it more then


Update ember and ember-data to the latest versions

Let's move our ember and be prepared for the v3, which is in beta now. The latest version is 2.18 at the moment of writing. Whoever picks it please use the deprecation guide and get rid of all the deprecation messages occured

Looking at the ember.js deprecation guide which is fairly short, it specifies that propertyDoChange and propertyWillChange will have to be replaced with notifyPropertyChange. When grepping all files in the application it appears that only one file will have to be changed which is vendor-d8042eae6c7c66..js found in /prod/assets. Is this autogenerated code because of how its written? If so, would have to find where it's generated from to see how setting the properties. The other deprecation in the ember guide doesn't appear to affect your application.

@alexanderbrown21 firstly we need to update it to v2@latest. And I believe we'd face a plenty of deprecations on that path. If it'd be possible to make it v3 right afterwards - even better.
vendor-whatever is surely an autogenerated code. The application code is in /app/. But I'd alse have a look at the node_modules which can give you deprecations as well (see #1369) for instance.


env var RAKUDO_LOG_PRECOMP not documented in 00-running

Documented in https://github.com/rakudo/rakudo/wiki/dev-env-vars, linked to from doc/Programs/00-running.pod6


is the useTimeoutState useful?

Do you think this would be useful:
function useTimeoutState(initialValue) {
  const currentTimeoutId = useRef(null);
  const nextStateValue = useRef(null);

  const [state, setState] = useState(initialValue);

  const confirmScheduledState = () => {
    clearTimeout(currentTimeoutId.current);
    currentTimeoutId.current = null;

    setState(nextStateValue.current);
    nextStateValue.current = null;
  };

  const scheduleState = (newState, timeout) => {
    nextStateValue.current = newState;
    currentTimeoutId.current = setTimeout(confirmScheduledState, timeout);
  };

  const setTimeoutState = (newState, timeout = 0) => {
    // If there is a scheduled state, we have to confirm it immediately.
    if (currentTimeoutId.current !== null) {
      confirmScheduledState();
    }

    scheduleState(newState, timeout);
  };

  return [state, setTimeoutState];
}

It's a hook to set a state after a timeout, if the user calls the setTimeoutState function before the timer ends, it confirms the last sate first and then schedules a setState for the next.
should I add it?

What would be a scenario when one would use it?


changing the cron entries, because they were lacking the names and ad…

…ding defattr to files section in one of the packages in the script spec file

@kwoodson @twiest :+1: in 94315e40549107ddeee3c06b1543e604b44542f5


Fix docstrings

Codecov Report

Merging #138 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #138   +/-   ##
=======================================
  Coverage   94.01%   94.01%
=======================================
  Files           4        4
  Lines         986      986
  Branches      223      223
=======================================
  Hits          927      927
  Misses         31       31
  Partials       28       28

Impacted Files
Coverage Δ

xmitgcm/utils.py
95.28% <ø> (ø)
: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 17d6a83...ebf43cb. Read the comment docs.


Harden Docker container

produce go static builds
remove unused libraries
remove shell

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Create uz-cyril-UZ.js

Create cryllic translation in uzbek language
Please make sure these boxes are checked before submitting your PR, thank you!

[ ] Make sure you follow Element's contributing guide (中文 | English | Español | Français).
[ ] Make sure you are merging your commits to dev branch.
[ ] Add some descriptions and refer relative issues for you PR.

Please fix es-lint error, and update the relative docs, please.


Checkbox Group - New Component

Description
In my opinion, this component should be very similar to Radio Button Group in order to keep consistency between them.
This component will const of 3 parts:

Checkbox: Isolated checkbox (no label, just a check/uncheck box)
Checkbox.Group: Component for a group of checkboxes, allowing none or many to be selected.
Checkbox.Row: Used inside Checkbox.Group. It is a checkbox along with a label. Tapping the whole row triggers the change.

Checkbox.Row and Checkbox.Group will communicate via context API.
Props
Checkbox
Exposed to the user
selected
Type: boolean
Whether the checkbox is selected.
disabled
Type: boolean
Whether the checkbox is disabled.
onPress
Type: () => void
Function to execute on press.
color
Type: string
Custom color for the checkbox.
uncheckedColor
Type: string
Custom color for unchecked checkbox. If not provided, color will be used.
style
Type: ViewStyle
Styles the checkbox as a view
checkedIcon
Type: string
Icon to show when the checkbox is selected
uncheckedIcon
Type: string
Icon to show when the checkbox is selected
size
Type: number
Size of the icon
default: 24 (could be added to Config object)

Checkbox.Row
Exposed to the user
value (required)
Type: string
Value of the checkbox
label (required)
Type: string
Label to show along with the checkbox.
direction
Type: 'row' | 'row-reverse'
Specifies the flex direction of the container, allowing the icon to appear on the left or on the right.
default: 'row'
onPress
Type: (value: string) => void
Unlike the onPress property of the Checkbox, this callback passes its value to the caller in order to know which checkbox has been just selected.
selected
Type: boolean
If provider, this particular row will always be selected, ignoring the values of the group it belongs to.
Not exposed (dev only)
labelContainerStyle
Type: StyleProp
Styles to pass to the customize the container of the label
checkboxStyle
Type: StyleProp
Styles to pass to the customize the checkbox itself. It will be passed down to the Checkbox component.
label
Type: ReactNode
Asides from being able to pass a string to the label, devs will also be able to pass a react node to it.
This component also receives the same props as Checkbox.

Checkbox.Group
Exposed to the user
values (required)
Type: string[]
Array of currently selected checkbox values.
onValueChange (required)
Type: (values: string[]) => void
Function to be executed on selection change.
style
Type: StyleProp
Styles the container of the whole component.
direction
Type: "horizontal" | "vertical"
Determines if the checkboxes inside of the group will align horizontally or vertically.
Notes

(question) Currently, the checkbox possible status are "checked" | "indeterminate" | "unchecked". Should we keep this behavior? Does "indeterminate" means that the checkbox is not selected neither unselected?
(question) Similar to react-native-paper, there is a CheckboxAndroid and a CheckboxIOS components. Should these be replaced?
In order to be consistent between Radio Button Group and Checkbox Group, I added the same direction prop.
Same as above with selected, which could be changed to checked

Great start! You're right, RadioButton + Checkbox are very similar. I think you can even re-use your RadioButton work for Checkbox.
The only difference is that a checkbox can select multiple things while a RadioButton can only select one.

Great start! You're right, RadioButton + Checkbox are very similar. I think you can even re-use your RadioButton work for Checkbox.
The only difference is that a checkbox can select multiple things while a RadioButton can only select one. With that in mind, you can get started!

Great! Thanks for the review.
How about the indeterminate status and the IOS and Android components though?

My understanding of checkboxes is that indeterminate is used for aggregating nested values, etc. Usually the visual is a minus sign (-). Although we wont support aggregating nested values, we could use the indeterminate status for invalid values passed to the checkbox. We should support with a "-".
We do not want iOS and Android versions, so lets unify around the version with the box, the android version in react native paper. Thank you!

https://user-images.githubusercontent.com/33071292/118908052-07aad080-b8f7-11eb-84c4-12bf88a377bd.mp4


Make the response forwarder function customizable

Sometimes RESTful API needs something does not fit to just call-return semantics -- e.g. redirection based on the result.
It looks to be natural to support such a thing in an the gateway rather than to emit extra information from gRPC backend.
Users can do that by customizing the forwarder function.

LGTM! thanks for this!


DeleteEntity does not allow PartitionKey in Azure.Data.Tables.TableTransactionalBatch

Library: Azure.Data.Tables.TableTransactionalBatch
Method: DeleteEntity
Version: p12.0.0-beta.6
Framework: netstandard2.0
Description:
TableTransactionalBatch class does not contain a public constructor that takes a partition key as parameter.
DeleteEntity method also does not receive the partition key as parameter.
We need a DeleteEntity overload which receives at least the partition key and the row key of target entity

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

This class no longer exists in the latest package version. Please upgrade to the latest.


chore(helm): Use template comments for the chart license header

SUMMARY
The PR changes comment type for license headers in the Helm chart template files.
The PR does not change any functionality of the chart.
According to Comments (YAML Comments vs. Template Comments):

YAML comments may be used when it is useful for Helm users to (possibly) see the comments during debugging

Since there is no value in seeing license header during templates debug, it's a good idea to use Template comments instead of YAML comments for license headers.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
Before
$ helm template superset helm/superset
---
# Source: superset/templates/service.yaml
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
apiVersion: v1
kind: Service
metadata:
  name: superset
  namespace: default
  labels:
    app: superset
    chart: superset-0.9.2
    release: superset
    heritage: Helm
spec:
  type: ClusterIP
  ports:
    - port: 8088
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: superset
    release: superset

After
$ helm template superset helm/superset
---
# Source: superset/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  name: superset
  namespace: default
  labels:
    app: superset
    chart: superset-0.9.2
    release: superset
    heritage: Helm
spec:
  type: ClusterIP
  ports:
    - port: 8088
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: superset
    release: superset

TESTING INSTRUCTIONS
Check that the following command doesn't print any license headers.
helm template superset helm/superset

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

Yep, looks like the linter is complaining

@craig-rueda Could you please have a look again?
Current helm chart version 0.9.3 is the same as PR version, i.e. it is possible to merge but not release the chart.

Looks fine as long as the license check step is happy. Seems like it skipped for this PR for some reason. Any ideas why?


Add check for code of conduct file

Uses the contributor covenant format of CODE_OF_CONDUCT(.md) to check if a CoC is present in the project.
Fixes #15

Thanks for the patch!


bug: A problem occurred evaluating project ':expo-modules-core'.

Provide environment information
System:
    OS: Linux 6.6 Archcraft
    CPU: (8) x64 Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
    Memory: 11.03 GB / 15.43 GB
    Container: Yes
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 20.10.0 - /run/user/1000/fnm_multishells/11144_1704752906519/bin/node
    npm: 10.2.3 - /run/user/1000/fnm_multishells/11144_1704752906519/bin/npm
    pnpm: 8.14.0 - /run/user/1000/fnm_multishells/11144_1704752906519/bin/pnpm

Describe the bug
Android compilation fails on a fresh install.
><EMAIL_ADDRESS>android /home/danielm/projects/create-t3-turbo/apps/expo
> expo run:android

✔ Created native project | gitignore skipped
› Using current versions instead of recommended<EMAIL_ADDRESS><EMAIL_ADDRESS>✔ Updated package.json and added index.js entry point for iOS and Android
› Installing using pnpm
> pnpm install
Using node to generate images. This is much slower than using native packages.
› Optionally you can stop the process and try again after successfully running `npm install -g sharp-cli`.

» android: userInterfaceStyle: Install expo-system-ui in your project to enable this feature.
✔ Config synced
› Opening emulator Pixel_3a_API_34_extension_level_7_x86_64
› Building app...
Configuration on demand is an incubating feature.

FAILURE: Build failed with an exception.

* Where:
Build file '/home/danielm/projects/create-t3-turbo/node_modules/expo-modules-core/android/build.gradle' line: 372

* What went wrong:
A problem occurred evaluating project ':expo-modules-core'.
> Cannot invoke method replace() on null object

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 7s
5 actionable tasks: 4 executed, 1 from cache
Error: /home/danielm/projects/create-t3-turbo/apps/expo/android/gradlew exited with non-zero code: 1
Error: /home/danielm/projects/create-t3-turbo/apps/expo/android/gradlew exited with non-zero code: 1
    at ChildProcess.completionListener (/home/danielm/projects/create-t3-turbo/node_modules/@expo/spawn-async/build/spawnAsync.js:52:23)
    at Object.onceWrapper (node:events:629:26)
    at ChildProcess.emit (node:events:514:28)
    at maybeClose (node:internal/child_process:1105:16)
    at ChildProcess._handle.onexit (node:internal/child_process:305:5)
    ...
    at Object.spawnAsync [as default] (/home/danielm/projects/create-t3-turbo/node_modules/@expo/spawn-async/build/spawnAsync.js:17:21)
    at spawnGradleAsync (/home/danielm/projects/create-t3-turbo/node_modules/@expo/cli/build/src/start/platforms/android/gradle.js:72:46)
    at Object.assembleAsync (/home/danielm/projects/create-t3-turbo/node_modules/@expo/cli/build/src/start/platforms/android/gradle.js:52:18)
    at runAndroidAsync (/home/danielm/projects/create-t3-turbo/node_modules/@expo/cli/build/src/run/android/runAndroidAsync.js:36:24)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
/home/danielm/projects/create-t3-turbo/apps/expo:
 ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL<EMAIL_ADDRESS>android: `expo run:android`
Exit status 1

Link to reproduction
https://github.com/t3-oss/create-t3-turbo
To reproduce
git clone git@github.com:t3-oss/create-t3-turbo.git
cd create-t3-turbo
pnpm i
pnpm --filter expo android
Additional information
~/projects/create-t3-turbo main ?1 ❯ java -version                                                                                18s  20.10.0
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+8)
OpenJDK 64-Bit Server VM (build 17.0.9+8, mixed mode)

any solution?

Fxied in #795


Allow addition of entity_category to sensors

Home assistant 2021.11 added the functionality to hide sensors from the default dashboards, via categories.
To ensure this stays backwards-compatible, I've replicated a lot of the homeassistant builtins - rather than using the builtin constants. If more categories are introduced, this might require some rework.
I couldn't work out how to get the global config working, so I've just got it in the individual sensor config.

@whi-tw Thanks for your work.
I am a little confused why we would add power and energy sensors to either diagnostics, system or config groups.
This is from the HA docs:
====
Classification of a non-primary entity. Set to config for an entity which allows changing the configuration of a device, for example a switch entity making it possible to turn the background illumination of a switch on and off. Set to diagnostic for an entity exposing some configuration parameter or diagnostics of a device but does not allow changing it, for example a sensor showing RSSI or MAC-address. Set to system for an entity which is not useful for the user to interact with. As an example the auto generated energy cost sensors are not useful on their own because they reset from 0 every time home assistant is restarted or the energy settings are changed and thus have their entity category set to system.
power and energy sensors do not seem to fit in any of these categories imo.
I have also checked other integrations which provide power and energy sensors (for example Zwave-JS, Shelly etc) and they just place it in "Sensors" category, which is because they don't have an entity category.

Could you elaborate more about why this configuration would make any sense?

So, I've got all mine set up as diagnostic entities. This is because this, for me at least, both a non-primary entity and a diagnostic entry (ie. I'll only look at it if i've noticed a spike in the energy usage for a group).
If these are just standard entities, they will appear all over the default dashboard, and I majoritively don't need to see that.
I'm hoping that home assistant will introduce some kind of 'energy' category down the line, which will make more sense, but at least then the start of the work is all sorted!

@bramstroker all done - config is available on both a global and sensor level.
I've done the same as '*_sensor_naming' - hopefully that is correct.

Looks fine! Could you also add to the groups sensors group.py?

Looks fine! Could you also add to the groups sensors group.py?

Unsure if this is useful / possible - does the group have a device that this can nest under? If not, it will kinda be a floating entity only available through automations. Thoughts?

Looks fine! Could you also add to the groups sensors group.py?

Unsure if this is useful / possible - does the group have a device that this can nest under? If not, it will kinda be a floating entity only available through automations. Thoughts?

Yes it only makes sense for entities bound to devices I suppose.


csv.from(file ) is not available in InfluxDB Cloud.

https://v2.docs.influxdata.com/v2.0/reference/flux/stdlib/csv/from/
csv.from(file) is not available in InfluxDB Cloud, but csv.from(csv) is available.

Hi @nisley ,
This is called out in blue right below the example.

Thanks @nisley. I'll update this and make the distinction.


delayClickOutsideInit not working as expected after update to v15

After update from 14.0.1 to 15.0.0, delayClickOutsideInit stopped working.
Minor description:

There is a for-loop printing an array in template.
Each array item has css class="style", clickOutside directive and also exclude="style" and delay=true directives.
Clicking "Add" button adds a new item into the array.
Clicking outside removes items from template.

In v14 it works fine, once you click "Add" button, a new item is added and no clickOutside is triggered.
In v15 clickOutside is triggered immediately (ignoring delay) so no item is printed (is removed immediately after been added).
Stackblitz example

did you add the new directive NgClickOutsideDelayOutsideDirectivesee release notes https://github.com/Kr0san89/ng-click-outside/releases/tag/v15.0.0
most people will not need that delay but still have it in there code this is why i splitted it out.
kind regards

Yes, i did. If you look at the example, both imports are commented. Just have to install v15 and uncomment imports to test v15.

ah thanks for the good example :)
you are right. should be fixed with https://github.com/Kr0san89/ng-click-outside/pull/64 and version 15.0.1
sorry for the bug -.-

Nice! Thanks for the quick fix.
Working in v15.0.1.


Repository methods not working

/**
 * @ODM\Document(repositoryClass="Repositories\UserRepository")
 */
class User extends \AbstractUser implements \JsonSerializable {
...
/**
	 * @ODM\ReferenceMany(targetDocument="Membership", mappedBy="user", repositoryMethod="getCurrentMembership")
	 * @var type
	 */
	protected $membership;
}

adn the membership class
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;

/**
 * @ODM\Document(repositoryClass="Repositories\MembershipRepository")
 */
class Membership extends Document {}

if I use the repository by itself like this
$repo = $dm->getRepository(\Membership::class);
dump($repo->getCurrentMembership($this->me));

i get the correct membership object.
but if i access it like
$user->getMembership()

the repository method is not being called.
this is quite a serious issue for me. any way to fix this?
I have installed the latest @dev package from composer
edit: had the method in wrong repository, but the custom method is still not being called

@bazo can you please provide failing test case? There are tests for using repositoryMethod and everything seems to be working fine ODM wise. Maybe the problem lies in Document class you are extending?

Closing because of no response


Update concept-mfa-whichversion.md

added pass-through authentication

@martincoetzer : Thanks for your contribution! The author, @MicrosoftGuyJFlo, has been notified to review your proposed change.

#sign-off

#sign-off

@martincoetzer: I'm sorry - only the author of this article, @MicrosoftGuyJFlo, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.


Add exports config in package.json

Feature description
Some bundlers require a correct export declaration in package.json to choose between cjs/esm.
Additional information
Could also help with https://github.com/uuidjs/uuid/issues/678.

exports are already defined. export isn't a package.json thing.

You are right, I was still using an older version. Sorry for the noise!


Google Pay opens last selected screen. So user has to go to All transitions and then accept in order to Cash IN

Problem description
I am facing two issues with UPI based transactions

When cash in transaction is initiated we get the notification to approve the request on google app. When tapped on Notification for cash IN via Google pay, Google Pay opens last selected screen. It does not proceed to the truncation page on google pay so user has to go to All transitions and then accept in order to Cash In. Does this requires any thing to be handled for code side?

Once the payment is done via google pay the control doesn’t not redirect to app automatically, user has to do it manually (Android it happens automatically). How can I achieve this on iOS ?

Razorpay SDK Version :
v1.2.1
Xcode Version :
v11.3.1

@devauk can you share your Merchant id please ?

D0XUMCGawND8VF

@devauk can you share your Merchant id please ?

D0XUMCGawND8VF

@devauk
query 1> nothing we can do here (Its called Collect flow) , its Gpay app which is doing the same.
query 2> As of now auto redirect to app in IOS is not feasible. Only android.

@devauk
query 1> nothing we can do here (Its called Collect flow) , its Gpay app which is doing the same.
query 2> As of now auto redirect to app in IOS is not feasible. Only android.

ok, noted

Hi @devauk, we are supporting redirect in iOS now for UPI apps, right now we only support Google Pay, Paytm and Phone Pe. Here is the link with the steps to enable it in iOS.

Closing this issue due to no responses. Feel free to re-open this issue.


How to run code from a HTML function?

Example HTML: <button onclick="myFunction()">Click me</button>
Javascript seems to do it like so: object.addEventListener("click", myScript);
My main intention is to receive input from a HTML page and execute a method, namely buttons and text input.

This has nothing to do with NanoHTTPD, and you're better off asking on StackOverflow.
That being said, there's no such thing as an "HTML function". What your example HTML will do is run the JavaScript function defined like so:
function myFunction {
    // do stuff
}

Thanks for your response. After some research I understand now that most websites handle that kind of action through JavaScript (which obviously isn't related to this library), which is triggered through the HTML.


'clearContact' API request failed: Error

I'm trying to handle a contact that's in ENDED state, with contact.clear().
However when I do this, I get 'clearContact' API request failed: Error?
I've also tried complete() to no avail. Any ideas?

It's not possible to investigate further without more log context on this besides just the string "Error". This sounds more like a backend API failure rather than an issue in Streams itself, so you may want to open an AWS support request if possible instead of trying to get help with this issue on GH.


refactor: refactored loginUser to return the user object

also added basic documentation to the function
Closes #130

I tested it with the following code:
import { loginUser } from "./src/httpLayers/login.http.js";

console.dir(await loginUser("test_username1", "test_password"));

@karolkozlo let me know if you want me to formalize the user object


bundler fails to find gem version from rubygems.org

Sometimes after pushing a gem version to rubygems.org, when I try to update the gem version in a related package i get the error:
Could not find gem 'better_record (>= 0.7.0, ~> 0.7)' in any of the gem sources listed in your Gemfile.
if i run gem install better_record the gem is successfully installed locally
if i THEN run bundle, bundler magically finds the gem version that it couldn't find in any sources

Happened for 3 out of 6 gem releases I pushed on a beta release gem today

The index Bundler uses is optimized for making bundle install faster, at the cost of sometimes needing up to 1-2 minutes for pushed gems to become available.

This is not an issue with Bundler itself.


Fix backslash in environment key freeze app [INS-4157]

Close #7286
objectPath.normalize will enter endless loop if last char in key name is backslash, just remove backslashes at the end of key name.
It's just a workaround. It will introduce problems when reference an environment variable which's name ends with backslash.

Could this be done without using a regex, would it be more readable?

This problem is caused by objectpath library, in its parse function, it could enter endless loop when the last char in key is backslash. It seems to be no longer maintained.
The previous commit was just a workaround to delete trailing backslashes from key.
In this commit I copied its source code to packages\insomnia\src\templating\third_party\objectPath.ts and fixed the bug within line 58 to 80.

I need some time to familiarize myself with Vitest. I just merged this PR, I'll improve in other threads.


Add Cake build scripts

Need to add the Cake build script to build and test (And in the future publish) the solution.
More info on Cake's github and their website

The basic script works, but requires -Experimental flag, to use newer C# features, like string interpolation etc (QoL).
ATM you can pass the build configuration flag. Basic invocation from PowerShell cmd:
 .\build.ps1 '-config="Debug"' -Experimental


cannot draw img tag on safari

i try export export pdf using html2canvas & jspdf but in safari not draw img tag.

You can try https://github.com/qq15725/modern-screenshot


Mage Switch Issues

Hi there,
Currently, if I equip my shadow it doesn't seem to register that I have a mage weapon equipped, and leaves my mage gear as not being highlighted.
My range and melee setups still work though.
Anything I am missing?
Here's my current profile -

Someone in my clan is trying to troubleshoot this right now, came here and saw this, so it's not just you at least.

I'm having a look at it now. Will try to see why yesterday's update messed up some stuff.

Solved

Has the update been pushed? It's still not working for me.

still not approved on runelite git: https://github.com/runelite/plugin-hub/pull/5736

I'm having this same issue, has this been fixed yet?


is there the pretrain checkpoint for Oscar+？I only find the checkpoint which has been finetuned on coco_ir

Having the same question - have you found a workaround?
I'm trying to replicate GQA/VQA finetuning results from the pretrained Oscar+ checkpoint but I cannot find it.
Thanks

I'm also looking for that.


PR: Add compatibility with PySide2 without impacting PyQt5

Does this supersedes PR #81?

Yes. In the process of making PySide2 more usefull, and so getting more users fighting bugs:

I converted guidata to 'QtPy' vendored,
it required this patch.

Now:

I have a guidata working, (at 80%)
but Spyder still doesn't start.

hoping this patch is more acceptable than previous one you rejected

Let's use #81, which is simpler.


Design discussion of the psa-crypto crate

I assume that the psa-crypto-sys crate would re-exports all of of the public items of PSA Crypto API, with their expected names (functions, types, macros, constants).
I propose the following design for the psa-crypto crate:

in src/lib.rs: create the PsaCrypto struct and the static ONCE: AtomicBool;. A new method creates an instance, sets the ONCE bool to true, initialises the library or returns an error if already created
types/key.rs containing Attributes (psa_key_attributes_t), Lifetime, Id, Type, Usage and Policy (an Algorithm and an Usage). Most of the types copied from here.
types/algorithm.rs containing the Algorithm structure.
types/status.rs containing the Status enumeration with all psa_status_t. Create a Result typedef with Status as the error type
operations/ containing the files defining all methods on PsaCrypto: key_management.rs, message_digest.rs, mac.rs, ciphers.rs, aead.rs, key_derivation.rs, asym_signature.rs, asym_encryption.rs, key_agreement.rs and other_crypto.rs.

Each one of the types files would implement conversions to and from the corresponding FFI type.
Create the function signatures applying the following systematic method:

remove the psa_ prefix and the _t suffix and use camel-case
make all functions return a Result
instead of the psa_..._t type, replace with the Rust native type. If they are small enough, it might be simpler to implement Copy on them and pass them directly instead of by reference
when taking an input buffer (const uint8_t *toto and size_t toto_length) replace with a byte slice: &[u8]
when returning a value (like a key ID), put it in the Ok variant of the Result
when taking an output buffer (uint8_t *toto, size_t toto_size and size_t *toto_length) replace with a mutable byte slice &mut [u8] and return a usize. The reason for not using a Vec<u8> is that it would require std and would not be applicable on embedded targets. We could produce higher-level function with a cfg flag for when std is available, which use Vec for more simplicity.

Safety
We have to provide a safe interface. Using only Rust types and assuming the safety of PSA Crypto when used correctly we can achieve memory safety easily.
Thread safety is more tricky and can add more challenges. Section 5.4 lists the constraints needed to achieve thread-safety:

There is no overlap between an output parameter of one call and an input or output parameter of another call. Overlap between input parameters is permitted.
If a call destroys a key, then no other call must destroy or use that key. Using, in this context, includes all functions of multi-part operations which have used the key as an input in a previous function.
Concurrent calls that use the same key are permitted.
Concurrent calls must not use the same operation object.

Rust safety guarantees, I think, prevent us from 1 and 4. 3 is not really a constraint.
2 is the trickiest and I am not sure how to handle it. If it is undefined behaviour to destroy a key more than once, we need to make sure that destroy is called only on KeyId of keys that exist. For persistent keys: how to retrieve, at instantiation, the keys that are already created?
I think the most simple way to approach this for now would be to put the destroy function as unsafe.

@ionut-arm @egrimley-arm Can I kindly ask for your review on this design?

What's the reason for having the PsaCrypto struct? What if there are two crates (A and B) that both use psa-crypto, and a third crate (C) that uses A and B. Then whichever of A and B grabs the PsaCrypto struct first succeeds, and the other one fails in an unrecoverable way?

Can 2 be solved with a readers-writer lock per key?

I don't see anything written about psa_key_id_t. Presumably a user of psa-crypto could foolishly create keys and discard the IDs until the underlying implementation runs out of slots. I don't think it's possible to prevent that from happening. To help a user understand what's happened, you could have the wrapper keep track of existing keys and add a debug function to list the existing keys. However, this would allow crate A (in the example above) to see crate B's keys, which would not be a security problem, but it would be a bit confusing.

It is also possible for the underlying implementation to leak resources by psa_reset_key_attributes not being called. Unlike with the keys, which are likely to be secret and can't be stored in the caller's memory, you have several options for implementing this. You could have every function that takes Attributes create a new psa_key_attributes_t and reset it afterwards, turning a single call to psa-crypto into a dozen or so calls to psa-crypto-sys. Or you could make the user of psa-crypto responsible for the resource management. Or you could cache these things in the wrapper. Or ... other options?

What's the reason for having the PsaCrypto struct? What if there are two crates (A and B) that both use psa-crypto, and a third crate (C) that uses A and B. Then whichever of A and B grabs the PsaCrypto struct first succeeds, and the other one fails in an unrecoverable way?

I am taking the assumption that at some point, we will need to store information about the current state of the wrapper (for example to add thread safety). Maybe that assumption is false and if it is, I agree that this structure would be useless.
In your example, A and B would not need to call new but be passed a reference to PsaCrypto in some way. I agree that is not ideal.
Our other option is to put this data in global lazy_static structure, wrapped in a synchronisation structure like Mutex or RwLock.

Can 2 be solved with a readers-writer lock per key?

It could! I think the important thing here is that we would have to keep the KeyId instances unique. If we do that, then we can use the borrow checker to ensure thread-safety: generate_key and import_key create a new instance of KeyId, all methods take a reference to it and destroy_key takes ownership. That way you can not destroy a key if any thread is currently using one of its references.
The problem with that are persistent keys: how to know, when starting the application, the persistent key IDs that already have been created?

Presumably a user of psa-crypto could foolishly create keys and discard the IDs until the underlying implementation runs out of slots.

If we have the uniqueness of KeyId as described above, we could re-implement Drop so that the volatile keys gets destroyed when going out-of-scope. That would still happen for persistent keys but I think that is expected.

It is also possible for the underlying implementation to leak resources by psa_reset_key_attributes not being called.

Reading at the API, psa_key_attributes_t seem to be short-lived, you create one, give it to generate/import and then reset it. Or, you get one from a KeyId, get the information that you need and then reset it.
This sounds like an excellent candidate for a Drop implementation on Attributes which calls psa_reset_key_attributes whenever it goes out of scope. That way, no risk to leak data.

The problem with that are persistent keys: how to know, when starting the application, the persistent key IDs that already have been created?

I think we do not need to know at startup all the persistent keys that have been created but only when trying to create a KeyId from the ID number (uint32_t). At that moment, in a constructor of KeyId, like from_persistent_key_id(id: u32) we can check that a key of this ID actually exists with a call to psa_generate_key which is expected to fail with PSA_ERROR_ALREADY_EXISTS. If that the case, then we can create a valid KeyId structure.
To keep the uniqueness of the KeyId we create, we would store the persistent key IDs in a HashSet guarded with a RwLock.
generate and import would return a KeyId and add the ID to the set.
destroy would take ownership of the KeyId in parameter and remove it of the set.
All the other methods needing a key ID would take a simple reference to it.
In the Drop implementation of the KeyId structure we would check its lifetime, and if it is volatile, destroy the key but not if it is persistent.

It could! I think the important thing here is that we would have to keep the KeyId instances unique. If we do that, then we can use the borrow checker to ensure thread-safety: generate_key and import_key create a new instance of KeyId, all methods take a reference to it and destroy_key takes ownership. That way you can not destroy a key if any thread is currently using one of its references.
The problem with that are persistent keys: how to know, when starting the application, the persistent key IDs that already have been created?

You also run into a problem with multi-threading - how could two threads (or even the same thread, in different scopes) make use of the same key? Do they get an Arc of it? Or does the KeyId itself have an Arc in it with the handle inside? The problem would then be that you can't implement Drop on that Arc, but we can probably find some ways around that. Not sure if I'm just missing the point completely here, tho.

I think we do not need to know at startup all the persistent keys that have been created but only when trying to create a KeyId from the ID number (uint32_t). At that moment, in a constructor of KeyId, like from_persistent_key_id(id: u32) we can check that a key of this ID actually exists with a call to psa_generate_key which is expected to fail with PSA_ERROR_ALREADY_EXISTS. If that the case, then we can create a valid KeyId structure.

Is there no other way to check if such a key exists? I find this to be a weird omission from the API, tbh... Just as it does for Parsec - we don't allow people to create keys with the same name, but at the same time the keys are persistent and users can't discover them.
Also, imagine if you're in the middle of that from_persistent_key_id, you've called psa_generate_key which returned success, and then your process gets killed - next time this runs you'll find a key there which was just created. Is this intended?

To keep the uniqueness of the KeyId we create, we would store the persistent key IDs in a HashSet guarded with a RwLock.
generate and import would return a KeyId and add the ID to the set.
destroy would take ownership of the KeyId in parameter and remove it of the set.
All the other methods needing a key ID would take a simple reference to it.
In the Drop implementation of the KeyId structure we would check its lifetime, and if it is volatile, destroy the key but not if it is persistent.

I'm not sure I follow why having both unique KeyId values and having a set with a RwLock on it is needed. I'm all for having the set that can be used as a central source of tracking which handles have been allocated.

Calling a function to generate a key while expecting it to fail, with that being an implicit part of the KeyId creation procedure, doesn't sound right to me. That isn't what most people would expect a psa-crypto "wrapper" to do. It's possible to keep a record of which keys are in use without doing that.

You also run into a problem with multi-threading - how could two threads (or even the same thread, in different scopes) make use of the same key?

They would be given a reference to the KeyId which would be enough for them to execute all operations needing that key.

Also, imagine if you're in the middle of that from_persistent_key_id, you've called psa_generate_key which returned success, and then your process gets killed - next time this runs you'll find a key there which was just created. Is this intended?

That's true and I am not sure  how to handle that. Worst case scenario it would be memory leak for something that should very rarely happen.

I'm not sure I follow why having both unique KeyId values and having a set with a RwLock on it is needed. I'm all for having the set that can be used as a central source of tracking which handles have been allocated.

If you do not have the set you could call the from_persistent_key_id function indefinitely and that would break the uniqueness.

Is there no other way to check if such a key exists? I find this to be a weird omission from the API, tbh...

Calling a function to generate a key while expecting it to fail, with that being an implicit part of the KeyId creation procedure, doesn't sound right to me. That isn't what most people would expect a psa-crypto "wrapper" to do. It's possible to keep a record of which keys are in use without doing that.

I agree this does not look good but I do not see any other way to check if a persistent Key ID, not currently in use, has already been created or not. If you see any other solutions please feel free to say.
The only other solutions I see are:

storing in a file which persistent keys have been created and using that as a record. Maybe that is what you meant @egrimley-arm ?
put the delete function as unsafe, state the problem clearly in the documentation and let the user create a safe wrapper around it with their own Key ID store.

They would be given a reference to the KeyId which would be enough for them to execute all operations needing that key.

So who is in fact the owner of that KeyId? Trying to figure out how this would work - would one thread have to send the references to another or would the crate/method have to store a reference and duplicate it?

Worst case scenario it would be memory leak for something that should very rarely happen.

It's not really a memory leak since the key would be persisted (or at least that's how I understand it?). If this happens on an embedded system this opens the door for fault injection - reset the device at just the right time... True, it's unlikely to happen, but I'm just pointing it out. I don't have an alternative for how we could identify such keys. Maybe Gilles has some hints.

If you do not have the set you could call the from_persistent_key_id function indefinitely and that would break the uniqueness.

I was advocating for having the set but not KeyId uniqueness.

I don't see why the wrapper has to check whether a persistent key ID has already been created. If the user attempts an operation on key 1234, say, an operation which might fail if the key exists when it shouldn't or doesn't exist when it should, then the wrapper just needs to record, only for the duration of that operation, that key 1234 is in use. If another thread tries to delete key 1234 during that operation then that thread will block until the other operation has finished.

So who is in fact the owner of that KeyId? Trying to figure out how this would work - would one thread have to send the references to another or would the crate/method have to store a reference and duplicate it?

That one: "one thread have to send the references to another". If one thread creates a KeyId and wants that key to be used by multiple threads, he sends references to it to those threads.

It's not really a memory leak since the key would be persisted (or at least that's how I understand it?).

Yes persistent memory leak 😋

I don't see why the wrapper has to check whether a persistent key ID has already been created.

This is to solve this constraint:

If a call destroys a key, then no other call must destroy or use that key. Using, in this context, includes all functions of multi-part operations which have used the key as an input in a previous function.

and specifically this: "If a call destroys a key, then no other call must destroy that key." The destroy_key operation does not have a PSA_ERROR_DOES_NOT_EXIST return status so I supposed that calling destroy_key on an ID that was already destroyed or was never created was undefined behaviour. I don't think that having a record of keys in use would solve that problem because you could have two destroy_key calls on the same Key ID, one after the other triggering this issue.

I was advocating for having the set but not KeyId uniqueness.

The uniqueness is I think an elegant way of using the Rust type system to maintain thread safety without having to record keys that are currently in use.

I would expect a call to psa_destroy_key to return PSA_ERROR_INVALID_HANDLE if the key has already been destroyed.

That one: "one thread have to send the references to another". If one thread creates a KeyId and wants that key to be used by multiple threads, he sends references to it to those threads.

But that implies that there will always be one thread that has some higher priority or precedence over all other threads - i.e. that thread must always terminate after the other ones to which it passes the references. So essentially this bakes in another constraint for users of this crate just because of this concept of uniqueness, that if you want two threads consuming Mbed Crypto services in parallel, you necessarily have a third one to own the keys and pass the references down.
Even if those KeyIds are not unique, you can enforce the same kind of requirements (using the key with a immutable reference, deleting with passing ownership) by having a HashMap internally that maps key handle to current number of users. Whenever a user calls destroy, you decrement the counter - if the counter is now 0, actually destroy the key.

I would expect a call to psa_destroy_key to return PSA_ERROR_INVALID_HANDLE if the key has already been destroyed.

Indeed, reading section 3.2.3 Key identifiers , it seems that should be the case. But those constraints also specified in the spec are a bit confusing.

then the wrapper just needs to record, only for the duration of that operation, that key 1234 is in use.

I would've thought that multi-part operations might make that tricky but again, that section in the spec about key identifiers seems to hint at operations simply returning INVALID_HANDLE if the key has been destroyed. I guess the question is "can you create a key with the same handle, again?"

So we have been confirmed by the PSA Crypto team that a psa_destroy_key call on a key identifier that does not exist is defined behaviour and will return PSA_ERROR_DOES_NOT_EXIST.
The specific constraint means that there should be a readers-writer constraint on a key: at any given time any readers (for crypto operations) but one single writer (to destroy the key).
Knowing that, it is not longer needed to check if a persistent key ID has already been created in previous runs but we need to protect against the readers-writer problem.
Multiple solutions were given in this thread:

store a unique RwLock per key ID (but allow users to create as many Key ID instances they want), lock for reading when using a key, lock for writing when deleting a key
maintain uniqueness of key ID instances at creation (it would fail if a persistent KeyId with the same ID has already been created, using a HashSet to verify, or if the ID is the one of a volatile key). No locking would be needed for operations as thread safety would be checked statically with ownership rules.

1 has the problem that one thread could delete the key that another one is currently using (in a thread safe way). That would be solved (as @ionut-arm said) having a HashMap of counter per key and really deleting it when the count is 0. This seems a lot like re-implementing a reference counting like Rc or Arc which would be more natural to use (assuming uniqueness) when you would like to share the key amoung multiple threads.
2 has the disadventage that if two threads are trying to simultaneously create a KeyId from the same ID number, one of them will fail. A library that is using PSA Crypto in a multithreaded environment and wants to use a particular ID will either have to be given the KeyID at thread creation or create it in isolation.

Presumably in some implementations you will in any case potentially have to cope (avoid undefined behaviour) when a different process deletes a key you are using: https://armmbed.github.io/mbed-crypto/html/overview/goals.html#optional-isolation

2 also has the disadvantage that a "worker thread" cannot destroy the key - the "master thread" that owns all the key handles has to join the worker threads, destroy the key and then start them up again (because I don't think you can have guarantees that there isn't a reference to the key somewhere in a worker). Also if the KeyId is unique and is somehow dropped without destroying the key, then the key is not usable anymore.
I think we need to decide what exactly the behaviour should be when psa_destroy_key is called. I get it, if the KeyId is unique then destroying a key is easy-peasy. But given all the caveats and restrictions that we raise by using such a strong uniqueness concept, it feels like we're sacrificing the overall experience of using the library in a multi-threaded environment for our benefit of not doing any work, just leveraging the compiler.

Presumably in some implementations you will in any case potentially have to cope (avoid undefined behaviour) when a different process deletes a key you are using: https://armmbed.github.io/mbed-crypto/html/overview/goals.html#optional-isolation

Agreed and maybe trying to be more clever than we should be in our wrapper would prevent the crate from being used for some implementations.

2 also has the disadvantage that a "worker thread" cannot destroy the key - the "master thread" that owns all the key handles has to join the worker threads, destroy the key and then start them up again (because I don't think you can have guarantees that there isn't a reference to the key somewhere in a worker).

That is correct but I expect this to be only for persistent keys that needs to be shared amoung different threads. Worker threads can still create their own volatile keys and their own persistent keys (if they use a key ID that nobody is already using).

destroy the key and then start them up again

Why that part though? I expect an use-case to be: a master thread create a persistent KeyId from a key that was provisioned in the PSA Crypto implementation or that he created before. It needs to use that key for computation that can be parallelised and give it to multiple worker threads. If it wants to delete the key, it waits for the threads to finish and then delete it.

Also if the KeyId is unique and is somehow dropped without destroying the key, then the key is not usable anymore.

Why? You would be able to re-create the KeyId if it was previously dropped.

I think we need to decide what exactly the behaviour should be when psa_destroy_key is called.

Yes I think so. A simpler solution for now would be to put the destroy_key method as unsafe and do not implement this thread safe logic at all.

Yes I think so. A simpler solution for now would be to put the destroy_key method as unsafe and do not implement this thread safe logic at all.

Having an unsafe function in the API seems really rough. So a much better solution, that is almost as easy to implement, would be to serialise all operations on keys. Then everything is safe and the only disadvantage is inferior performance in some cases.

Having an unsafe function in the API seems really rough.

I don't think so as long as the reasons for unsafety are clearly written in the documentation.
I agree that serialising all key operations is also an easy way to solve this problem, but that decision could also be taken at the caller level.
The more I think about it the solution 1. above seems like a good choice, even if a key that is currently used might get destroyed, that is not the responsability of this wrapper to handle that case. This wrapper should only aim to be the simplest safe messenger from Rust to PSA Crypto. At least for our current needs.
I do not think the implementation should be blocked any longer for this thread safety problem. I think I am going to get started on the parts we agreed on, probably put destroy_key as unsafe for now and we can think about it later when the first part is done.

I'm ok with destroy_key as unsafe as long as it's clearly documented what the caller has to do to ensure safety.

Design has bene implementend 🛠


https://openssl.org/source/openssl-1.0.2h.tar.gz is no longer available

I might be missing something, but this source is used by one of our iOS project dependencies and recently it disappeared :'( is there a way to get https://openssl.org/source/openssl-1.0.2h.tar.gz work again or is this change permanent?

It has moved to the old directory: https://www.openssl.org/source/old/1.0.2/openssl-1.0.2h.tar.gz
But I suggest you use the latest 1.0.2 release.

Actually it should still be available under the old URL too. I just fixed it but it may take a couple of hours to propagate.


:bug: Fixed Electron's window

Changes

[x] The window doesn't get automatically maximized when the app is opened
[x] The window keeps it's state (size & position) when it's closed and opened again
[x] Windows now shows the title bar ( and GNU/Linux probably now too )
[x] The "Learn more" button located in the "Help" menu now redirects to this repository instead of Electron docs.

Commits cherry-picked in #15 because this PR contained other code.


feat(url Query): Added an optional URL query parameter

The new url query parameter queryPrompt will automatically enter the query and execute it. This allows other apps to call this app with a pre-defined initial query.
For example, you can make the Dashboard Summary app have follow-up queries which link to the Explore Assistant using this queryPrompt parameter.

Hi Colin, this along with your other PRs look really interesting I would love to implement something similar.  I understand the code in your commit but would you mind explaining a bit on how you integrated this with the dashboard summary app? Thanks.

Hi Ryan!
I had changed the Dashboard sumary app by making it generate query links to
the explore assistant, so a user could follow recommended next steps by
gathering more data. Integrated it with a direct link, by allowing a user
to link from the query summary  page to the explore assistant in a new tab.
The dashboard summary code isn't quite ready for pr yet, because some of my
changes broke the extension when it is loaded in a dashboard 'mount point'.
Should have that fixed tomorrow.
Thanks,
Colin
On Mon, Oct 14, 2024, 10:43 AM Ryan Gould @.***> wrote:

Hi Colin, this along with your other PRs look really interesting I would
love to implement something similar. I understand the code in your commit
but would you mind explaining a bit on how you integrated this with the
dashboard summary app? Thanks.
—
Reply to this email directly, view it on GitHub
https://github.com/looker-open-source/looker-explore-assistant/pull/116#issuecomment-2411761037,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJNRP4UR4CFW3BNYUZXD7SDZ3PYD7AVCNFSM6AAAAABPX3G2TCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMJRG43DCMBTG4
.
You are receiving this because you authored the thread.Message ID:
@.***
com>

I agree, I had thought of it also. I'll try to get it in soon.
On Wed, Oct 23, 2024, 10:00 AM Luka Fontanilla @.***>
wrote:

@.**** requested changes on this pull request.
Very interesting! Am I correct in that, this makes the assumption that the
default LookML Model and Explore set as the source for the Explore
Assistant will be used?
Copying the following from another file. Given that Explore Assistant now
supports and could have multiple Model & Explore combinations to choose
from, I think it would be valuable to have 2 other queryParams in the url:
one that sets the model and the other that sets the explore. Then we can
update the state using something like this:
// set the explore if it is not set dispatch( updateCurrentThread({
exploreId: , modelName: , exploreKey:
 }), )
—
Reply to this email directly, view it on GitHub
https://github.com/looker-open-source/looker-explore-assistant/pull/116#pullrequestreview-2389299325,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJNRP4T6TAOITWX7UDWAER3Z47B2RAVCNFSM6AAAAABPX3G2TCVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDGOBZGI4TSMZSGU
.
You are receiving this because you authored the thread.Message ID:
<looker-open-source/looker-explore-assistant/pull/116/review/2389299325@
github.com>


Getting error when unsubscribe a marketing email

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open a marketing email that is sent on your email address
Scroll to the end of the email.
Click on To unsubscribe, please click here button.
A new page is opened.
Notice the text that is present on the new screen. It says Unsubscribe Error as the title and It looks like there was an error with the unsubscribe link you used. This may be due to a deleted account or expired link. as body text.

Expected Result:
It should not give an error when unsubscribing from marketing emails.
Actual Result:
Gives an error when unsubscribing from marketing emails.
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Version Number: <IP_ADDRESS>
Reproducible in staging?: Y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43996225/235700049-f5faffa7-3c2a-47aa-805d-dd38a6a66eff.mov

Expensify/Expensify Issue URL:
Issue reported by: @hasebsiddiqui
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1682241071145409
View all open jobs on GitHub

Triggered auto assignment to @garrettmknight (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

cc @NikkiWines
There seems to be a validateCode in the URL, thats expected?

yes we use a type of validateCode for unsubscribe links but they're not tied to the ones used for authenticating users, we decoupled them as part of passwordless. @amyevans worked on that portion of the project.
Additionally, this shouldn't be an App issue I don't think, unless there's a flow specific to newDot that's creating this issue?

Hmm it should be unsubscribeCode not validateCode, I bet the markup for that newsletter we sent copy/pasted from an older newsletter and therefore used the wrong param.
Agreed with Nikki we should move this to the E/E repo though too since it's not a NewDot bug.


Chrome Web Store

Issue to track chrome web store submission process.
Current status: Pending

It's live now: https://chrome.google.com/webstore/detail/eight-dollars/fjbponfbognnefnmbffcfllkibbbobki

Have submitted v1.2, will close this and update the readme when it's live

@waltzaround @wseagar It has been updated to v1.2.1

1.2.1 was a hotfix to fix some issues, 1.3 is pending review atm 🥳


New package: OrbitalTrajectories v0.3.0

Registering package: OrbitalTrajectories
Repository: https://github.com/dpad/OrbitalTrajectories.jl
Created by: @dpad
Version: v0.3.0
Commit: 90f88e352c744593318790a423d3a5c2a11e9535
Reviewed by: @dpad
Reference: https://github.com/dpad/OrbitalTrajectories.jl/commit/90f88e352c744593318790a423d3a5c2a11e9535#commitcomment-47562281

Updated version number in #30854 (JuliaRegistrator said it would update this PR, but apparently it made a new one instead. My bad!) I don't know how to close off this PR so I'm commenting here which I think will stop any automerging? Feel free to close. Thanks!


Scala Collector: network_userid issue

I've noticed that in certain browsers, undoubtedly those which block 3rd party cookies, the network_userid will always be present in the collected event, but the value will change with every request from the user. My understanding was that if the network_userid cookie couldn't be set, no value would be recorded. Is this a bug in the Scala collector, or am I just misunderstanding?

Hi @jramos ,
It's an interesting point. This is the intended behaviour. The Clojure Collector behaves the same way. The problem is that the collector has no reliable way of knowing whether the browser will accept or block the cookie. So we might as well always set the cookie in the hope that it is accepted.
I hope that makes sense!

:+1:

The alternative would be to store the network_userid on read from the request (rather than logging on the initial response), but then we would only get the network_userid from the second event, not the first...


Add MultiGraspHoldingMode setting in the Interaction Manager.

Adds in #1064 in a way that preserves original behavior by default (to avoid unexpectedly breaking existing scenes) while adding the (possibly better) behavior as a dropdown enum option in the Interaction Manager.

This behavior is kind of yikes seeming when it first happens, but I could see a universe in which a non-physical application designer found it preferable.
The true solution to this ambiguity is to not let the hands themselves separate when multi-grasping an object, ala HL: Alyx.


The use of imageAtomicAdd with GL_EXT_shader_atomic_float seems to break the optimizer

If you compile the below compute shader using GLSLang
glslangValidator t.comp -V --amb -H -Od -g --spirv-val
#version 460
#extension GL_EXT_shader_atomic_float : enable

layout(std140) uniform InfoBlock
{
    float t;
};

uniform sampler2D sTest;
uniform sampler2D sTest2;

float Val = t;

layout(r32f) uniform image2D mOutput;
void main()
{
    //imageAtomicAdd(mOutput, ivec2(0, 0), 1.0);
    imageStore(mOutput, ivec2(0, 0), vec4(1.0));
}

It'll generate SPIR-V that has a lot of variable declarations that have duplicate bindings (sTest, sTest2). GLSLang --amb option doesn't auto-assign bindings to declarations that don't actually get accessed, so this makes sense.
Additionally, the global initialization of the variable 'Val' is accessing a uniform block that doesn't have a valid binding assigned to it (duplicate 0 again), since GLSLang determined it wasn't live code.
Now, if you turn on the optimizer with -Os instead, you get much cleaner code where spirv-opt has removed those declarations, as well as dead code that is accessing those declarations (the global initialization of Val). So, GLSLang outputs code that it assumes spirv-opt will clean up for it, which works out.
Now here's the bug. Comment out the imageStore() line and uncomment the imageAtomicAdd() line, and run with -Os. The outputted code is not optimized properly, and has lots of invalid unassessed declarations, including the dead code initialization of Val.
Any ideas what's going on here?
Thanks

For additional clarity, here is the output when it's using optimized and imageStore() is used
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 27

                              Capability Shader
               2:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 5  "main"
                              ExecutionMode 5 LocalSize 1 1 1
               1:             String  "t.comp"
                              Source GLSL 460 1  "// OpModuleProcessed auto-map-bindings
// OpModuleProcessed client vulkan100
// OpModuleProcessed target-env vulkan1.0
// OpModuleProcessed entry-point main
#line 1
#version 460
#extension GL_EXT_shader_atomic_float : enable

layout(std140) uniform InfoBlock
{
    float t;
};

uniform sampler2D sTest;
uniform sampler2D sTest2;

float Val = t;

layout(r32f) uniform image2D mOutput;
void main()
{
    //imageAtomicAdd(mOutput, ivec2(0, 0), 1.0);
    imageStore(mOutput, ivec2(0, 0), vec4(1.0));
}
"
                              SourceExtension  "GL_EXT_shader_atomic_float"
                              Name 5  "main"
                              Name 20  "mOutput"
                              Decorate 20(mOutput) DescriptorSet 0
                              Decorate 20(mOutput) Binding 0
               3:             TypeVoid
               4:             TypeFunction 3
               7:             TypeFloat 32
              13:             TypeInt 32 1
              14:     13(int) Constant 0
              18:             TypeImage 7(float) 2D nonsampled format:R32f
              19:             TypePointer UniformConstant 18
     20(mOutput):     19(ptr) Variable UniformConstant
              22:             TypeVector 13(int) 2
              23:   22(ivec2) ConstantComposite 14 14
              24:             TypeVector 7(float) 4
              25:    7(float) Constant<PHONE_NUMBER>
              26:   24(fvec4) ConstantComposite 25 25 25 25
                              Line 1 15 11
         5(main):           3 Function None 4
               6:             Label
                              Line 1 18 0
              21:          18 Load 20(mOutput)
                              ImageWrite 21 23 26
                              Return
                              FunctionEnd

And here is the output when using imageAtomicAdd()
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 35

                              Capability Shader
                              Capability AtomicFloat32AddEXT
                              Extension  "SPV_EXT_shader_atomic_float_add"
               2:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 5  "main"
                              ExecutionMode 5 LocalSize 1 1 1
               1:             String  "t.comp"
                              Source GLSL 460 1  "// OpModuleProcessed auto-map-bindings
// OpModuleProcessed client vulkan100
// OpModuleProcessed target-env vulkan1.0
// OpModuleProcessed entry-point main
#line 1
#version 460
#extension GL_EXT_shader_atomic_float : enable

layout(std140) uniform InfoBlock
{
    float t;
};

uniform sampler2D sTest;
uniform sampler2D sTest2;

float Val = t;

layout(r32f) uniform image2D mOutput;
void main()
{
    imageAtomicAdd(mOutput, ivec2(0, 0), 1.0);
    //imageStore(mOutput, ivec2(0, 0), vec4(1.0));
}
"
                              SourceExtension  "GL_EXT_shader_atomic_float"
                              Name 5  "main"
                              Name 9  "Val"
                              Name 10  "InfoBlock"
                              MemberName 10(InfoBlock) 0  "t"
                              Name 12  ""
                              Name 20  "mOutput"
                              Name 33  "sTest"
                              Name 34  "sTest2"
                              MemberDecorate 10(InfoBlock) 0 Offset 0
                              Decorate 10(InfoBlock) Block
                              Decorate 12 DescriptorSet 0
                              Decorate 12 Binding 0
                              Decorate 20(mOutput) DescriptorSet 0
                              Decorate 20(mOutput) Binding 0
                              Decorate 33(sTest) DescriptorSet 0
                              Decorate 33(sTest) Binding 0
                              Decorate 34(sTest2) DescriptorSet 0
                              Decorate 34(sTest2) Binding 0
               3:             TypeVoid
               4:             TypeFunction 3
               7:             TypeFloat 32
               8:             TypePointer Private 7(float)
          9(Val):      8(ptr) Variable Private
   10(InfoBlock):             TypeStruct 7(float)
              11:             TypePointer Uniform 10(InfoBlock)
              12:     11(ptr) Variable Uniform
              13:             TypeInt 32 1
              14:     13(int) Constant 0
              15:             TypePointer Uniform 7(float)
              18:             TypeImage 7(float) 2D nonsampled format:R32f
              19:             TypePointer UniformConstant 18
     20(mOutput):     19(ptr) Variable UniformConstant
              21:             TypeVector 13(int) 2
              22:   21(ivec2) ConstantComposite 14 14
              23:    7(float) Constant<PHONE_NUMBER>
              24:             TypeInt 32 0
              25:     24(int) Constant 0
              26:             TypePointer Image 7(float)
              28:     24(int) Constant 1
              30:             TypeImage 7(float) 2D sampled format:Unknown
              31:             TypeSampledImage 30
              32:             TypePointer UniformConstant 31
       33(sTest):     32(ptr) Variable UniformConstant
      34(sTest2):     32(ptr) Variable UniformConstant
                              Line 1 15 11
         5(main):           3 Function None 4
               6:             Label
                              Line 1 12 0
              16:     15(ptr) AccessChain 12 14
              17:    7(float) Load 16
                              Store 9(Val) 17
                              Line 1 17 0
              27:     26(ptr) ImageTexelPointer 20(mOutput) 22 25
              29:    7(float) AtomicFAddEXT 27 28 25 23
                              Return
                              FunctionEnd

That seems problematic in general, since GLSLang with auto-mapping emits code that only makes sense if run through an optimizer. Does GLSLang need to be upgraded to avoid emiting non-live bindings? Or is this a rare edge case that usually shouldn't occur?

We should keep the optimizer up-to-date with new extension. I have a PR open to get the optimizer to work. These types of bugs come up regularly. We should try to come up with a better way to keep the optimizer up-to-date.


Write "Wx + b" in the document of Linear.

xW^\top + b is so confusing.

Jenkins, test this please.

Jenkins CI test (for commit e3eaada06efc67e8a4dd4beb2b03b4fe9ca2d150, target branch master) succeeded!

y_i = W \mathrm{vec}(x_i) if it's worth mentioning each input x_i in the batch is flattened.

LGTM!


Buildah does not create config for containers

When buildah loads a container, it does not create a config.json file in $ROOT/[driver]-containers/[container-id]/userdata.  cri-o and kpod use this file to load containers into the container store

@nalind @mrunalp The question here is how do we get kpod/crio and buildah to potentially share containers.  Do we create a config.json with some defaults for buildah?

We don't maintain a bundle for runc, since we'd also need to regenerate it whenever buildah config was run.  Instead, we just generate one in a temporary directory every time we need to run runc.

So should kpod realize this and treat this as a container without a runc config?

Alternatively, is there a way to get the path to the temporary buildah directory from the buildah.json?  Also, where are the temporary directories?  I have two buildah containers running on my machine but I can't seem to find the temporary directories associated with them

The container's BundlePath() method should return the directory where the file is located, at least while it's running.

Will that work for kpod/crio containers as well?

To clarify, BundlePath() is a method of src/github.com/kubernetes-incubator/cri-o/oci.Container.

If the config.json needs to be accessed before the oci Container is created, there a way to determine the bundle path?

@14rcole Don't remember what this was for.  Did you want this functionality so that
buildah inspect $CTRID
would work?  Or does this cause issues with kpod ps and kpod inspect?

This caused issues with kpod ps and kpod inspect.  Kpod can't inspect running buildah containers because they don't contain that file with some of the necessary information.

@baude PTAL

Closing this as we've  a Trello card to make Buildah/Podman play nicely together which includes listing.  https://trello.com/c/0eUqT0uG


Multi desktop

VS Code misbehaves with multiple desktops. The desired behavior would be, like ther applications, when openening a file (associated with VS Code) to open a new window on the new desktop even if there is already an instance on another desktop.
Moreover, even when I already have it open on both desktops, when I open an associated file, it will go to the last used window, even if that is on a desktop other than the active one.

please see the setting window.openFilesInNewWindow

Why did you close this before confirming this addresses the issue? It doesn't.
The way it handles new files is fine. The issue is that it moves to another desktop. Te desired behavior of most applications is to ignore open instances of other desktops.

That is what the setting addresses, not new files.

what we ask is that it will open a new window at different virtual desktop, and open a tap at the same window when we open a new file.


removed price models and routes

There was one more document to delete: the price.test.js in the server folder
Everything else looks good

done!!


Determine banner size

Is it possible to add a way to determine the size of an added banner? I'm using a smart banner and the height seems to vary. Perhaps include the size in the promise returned from showBanner()?
The reason I want to know this is to know how much I need to position the bottom of an content area so it's not overlapping the banner (similar to the issue https://github.com/rahadur/capacitor-admob/issues/15 I think).

memo: http://hamken100.blogspot.com/2014/11/admobcocos2d-xopengl.html

@bonny
It's simple :)
use this java line to send the event

notifyListeners("onAdSize", new JSObject().put("value", mAdView.getAdSize().getHeight()));

and receive it in ionic

AdMob.addListener('onAdSize', (info: any) => {
  let AdHeight = (Number(JSON.parse(info.value))) + 'pt';
  document.body.style.setProperty('--admob-height', AdHeight);
  console.log('Banner Ad Height: ' + AdHeight);
});

check my new comment.
Cheers :)
Ahmed

Thanks @AhmedMannoun , seems to be what I'm looking for!

@AhmedMannoun Thanks for great works!!
I add onAdSize Event now. We can at Swift and Java. Thanks.


feat: add jira

Description
At 7de376284bb172eae90304d83fcf60d2c0ea0ba9:

Add atlassian-cloud provider
Add atlassian/accessible-resources profile/map
(To access any atlassian site, its cloudId is required, and it can only be obtained via a dedicated endpoint)
Add maps for project-management profiles
Adjust project-management tests for multiple providers

At cf0d292430b0aa98ea972276656472707bf24ca6:

new major project-management/tasks profile version
added pagination to ListIssues
added kind to error
error more in line with rest of station (title/detail instead of message/description)
fixed docstrings

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have read the CONTRIBUTING document.
[x] I haven't repeated the code. (DRY)
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

sorry for the late force pushes, forgot I wasn't based on up-to-date main , should be okay now