Unable to get focus for a text field in iOS 17 Simulators

Hi David (or anyone contributing to this repo),
Since upgrading to Xcode 15 I have noticed an issue, but couldn't figure out the underlying cause. I wonder if you experienced anything similar?
Environment

Xcode 15.0 (15A240d)
Simulator iPhone 14, iOS 17.0

Repro Steps

Create a project with SwiftUI view, add a button to trigger boolean state variable to display the view.
Add multiline text view (see code snippet below) to the custom alert.
Run XCUITest or just manually trigger custom alert display, make sure keyboard is setup correctly in simulator (can be tested by creating a plain TextField view and tapping into it, you should be able to type in it).
Attempt to tap into multiline text field and type text. It is unresponsive to both user interactions and .tap() or .typeText(..) XCUITest methods.

Notes

Same code worked in simulator and UI tests on iOS 16 simulators with no issues.

Sample alert snippet:
.customAlert(isPresented: $isInsideCommenting) {
            // MARK: Inside Commenting on Action
            Text("Action Comment")
                .font(.subheadline)
                .padding(.bottom, 4)
            getMultilineTextField("Comment for \(viewModel.action.name ?? "")", $insideComment)
        } actions: {
            /// Inside Commenting Popup Buttons
            MultiButton {
                Button("Cancel", role: .cancel) {
                    insideComment = viewModel.comment
                    isInsideCommenting = false
                }
                Button("OK") {
                    let sanitisedComment = insideComment.trimmingCharacters(in: .whitespacesAndNewlines)
                    if sanitisedComment.isEmpty {
                        viewModel.deleteComment()
                    } else {
                        viewModel.addComment(insideComment)
                    }
                    commentRecorded?()
                    isInsideCommenting = false
                }
            }
        }

Sample multiline text field constructor method:
@ViewBuilder
    func getMultilineTextField(_ title: String,
                               _ stringValue: Binding<String>) -> some View {
        if #available(iOS 16.0, *) {
            TextField(title, text: stringValue, axis: .vertical)
                .lineLimit(5, reservesSpace: true)
                .textFieldStyle(.roundedBorder)
                .multilineTextAlignment(.leading)
                .accessibilityLabel("TextFieldInAlert")
        } else {
            // Fallback on earlier versions
            TextField(text: stringValue) {
                Text(title).multilineTextAlignment(.leading)
            }.accessibilityLabel("TextFieldInAlert")
        }
    }

Hi SandorUK, yes, I can confirm this issue, thank you for reporting it, I will investigate and hopefully fix it soon,

The issue was using the disabled modifier, to disable the scrolling if the alert does not need to be scrollable. This worked fine until iOS 17, but since iOS 16, the scrollDisabled(_:) modifier should be used anyway, so this one will be used on iOS 16 and above and there the issue should be fixed in 2.5.0
Please let me know if you still experience issues after upgrading to the latest version.

Thank you for the offer, but there is no need. Thank you for using this project, even in case its only for trying it out 👍🏻


Fix bug uploading slsa-provenance attestations to oci

We were incorrectly parsing the image name because the subject wasn't in the OCI image reference format.
Based on docs, I think that is an acceptable format for these attestations, so I'm switching it to match the tekton-provenance subjects. This should fix the bug.
Fixes https://github.com/tektoncd/chains/issues/253

/lgtm

/lgtm


Can you publish it to jitpack?

It seems like this library is stable enough. If you publish it in Jitpack, it'll be easier to integrate into the project.
Benefits:

-SNAPSHOT will provide the version of the latest commit build
Easier accessibility might give it more traction, which might help it reach a stable release through bug reports and early testing.
The SNAPSHOT versions don't need any release tag and are automatically built by jitpack servers.

https://jitpack.io/#fluxo-kt/fluxo-io/-SNAPSHOT

Sure, thanks for the nudge!
I will try to publish it as soon as possible (hopefully this week) and ping you here afterwards.

@Cyberavater, sorry it took me so long, but now the library is published in the Maven Central:

And you can use snapshots from either Maven Central or the JitPack:

Thanks, appreciate ya!


Fix null reference when markdown content is empty

Fix #7453
PR Summary
Fix cases where markdown content can be empty and we get a null reference exception.
PR Checklist

[X] PR has a meaningful title

Use the present tense and imperative mood when describing your changes

[X] Summarized changes
[X] Change is not breaking
[X] Make sure all .h, .cpp, .cs, .ps1 and .psm1 files have the correct copyright header
[X] This PR is ready to merge and is not Work in Progress.

If the PR is work in progress, please add the prefix WIP: to the beginning of the title and remove the prefix when the PR is ready.

User-facing changes

[X] Not Applicable
OR
[ ] User-facing Documentation needed

[ ] Issue filed - Issue link:

Testing - New and feature

[ ] Not Applicable or can only be tested interactively
OR
[X] Make sure you've added a new test if existing tests do not effectively test the code changed

[ ] Add [feature] if the change is significant or affects feature tests

@rjmholt @iSazonov Addressed the comments please have another look.

@rjmholt Updated.

@daxian-dbw @SteveL-MSFT The PR is ready to merge if you haven't comments.


Make realtime server upload timeout configurable

Codecov Report

Merging #4170 into master will increase coverage by 0.2%.
The diff coverage is 83.33%.

@@             Coverage Diff             @@
##             master    #4170     +/-   ##
===========================================
+ Coverage     67.06%   67.27%   +0.2%
  Complexity       20       20
===========================================
  Files          1037     1037
  Lines         51454    51456      +2
  Branches       7201     7201
===========================================
+ Hits          34510    34619    +109
+ Misses        14581    14459    -122
- Partials       2363     2378     +15

Impacted Files
Coverage Δ
Complexity Δ

.../helix/core/realtime/SegmentCompletionManager.java
70.39% <100%> (ø)
0 <0> (ø)
:arrow_down:

...altime/ServerSegmentCompletionProtocolHandler.java
48.46% <100%> (+0.8%)
0 <0> (ø)
:arrow_down:

...er/api/resources/LLCSegmentCompletionHandlers.java
52.82% <66.66%> (ø)
0 <0> (ø)
:arrow_down:

.../impl/dictionary/FloatOnHeapMutableDictionary.java
80% <0%> (-13.34%)
0% <0%> (ø)

...impl/dictionary/DoubleOnHeapMutableDictionary.java
68.88% <0%> (-13.34%)
0% <0%> (ø)

...y/aggregation/function/AvgAggregationFunction.java
69.87% <0%> (-10.85%)
0% <0%> (ø)

...elix/TimeboundaryRefreshMessageHandlerFactory.java
79.59% <0%> (-6.13%)
0% <0%> (ø)

.../impl/dictionary/LongOffHeapMutableDictionary.java
81.81% <0%> (-5.46%)
0% <0%> (ø)

...e/operator/dociditerators/MVScanDocIdIterator.java
60.6% <0%> (-3.04%)
0% <0%> (ø)

.../org/apache/pinot/transport/netty/NettyServer.java
80.8% <0%> (-3.04%)
0% <0%> (ø)

... and 26 more

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 1e1277d...54306e3. Read the comment docs.

@Jackie-Jiang fixed the : and space and moved config keys to CommonConstants. I prefer not to add single quotes around segment. I believe the segment name cannot have trailing or leading spaces in that particular place.
@jenniferdai the offline segment upload timeouts will be configured at the client applications which are responsible for pushing segments. I didn't see any such config or defaults on our end. Also, I prefer if we keep the realtime upload times separate, as we are more in control of the segment end-to-end, as compared to offline. Does that work?


Specifying region/country supplier sites (e.g. digikey.ca)

From the looks of the documentation and --help output, it doesn't seem possible to target region-specific supplier websites—this makes kicost more or less only useful to those operating in the US out-of-the-box, as the USD costs don't necessarily reflect the cost from the same supplier elsewhere and in other currencies.
Would it be possible to add as an enhancement the ability to specify a country/region, e.g. using digikey.ca instead of digikey.com, either globally or on a per-supplier basis?
I'm not sure how consistently these region-specific sites are defined across suppliers—it seems they are generally listed exhaustively (DigiKey Mouser), so it might be possible to allow the user to specify just their TLD and keep a mapping of TLD to URL in each supplier's module. Alternatively, just let users specify the specific site variant they want for each supplier, and alter the TLD or subdomain as appropriate.
(For now I'm explicitly altering the source of a local copy - not the cleanest workaround!)

I would also really like this.  Im UK based.

I got some interesting results changing the string 'en-US' in req.add_header('Accept-Language', 'en-US') of the kicost.py file to force countries with Euro currency.
I think is the way to work this issue. Setting this, the most of the web site redirect to the local server.

This is a BIG implementation and effort of the development team.
The currency of all distributor follow the ISO 4217 https://currencysystem.com/codes/, but each web site change the configuration in an independent way (eg: digikey just be the link, mouser appear to be something with a cookie, it is executed a ChangeLocalization('se','EUR') function ).
I am tagging this issue and open as discussion to start a study about the web site distributors to glimpse to include some code in KiCost webscrape routines.

1.1 using each supplies API is a better solution

Saying APIs are "better" requires you to answer the question "Better, how?" Do they provide better data? Probably not since the data scraped from the webpage should be identical to what comes through the API. Is it better for the KiCost user? Probably not since they might have to go register with each distributor to get an access key that has to be installed and then they're tracked by it. Is is better for the developers? Maybe, except we have to rebuild all the interfaces to the distributors.
if you live outside the us/$ zone
your software produces rubbish at best, suggest you add a warning to this affect!
END

Some scrape module are using currency_converter and others not. Standardize this and provide a --currency option to the user may be great.

I thought I'd look at this and begin with fixing the hard coded currency symbols.
Patch is below for those who find it useful.
kicost/spreadsheet.py | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git kicost/spreadsheet.py kicost/spreadsheet.py
index 93324d9..3935ab6 100644
--- kicost/spreadsheet.py
+++ kicost/spreadsheet.py
@@ -40,8 +40,10 @@ from .eda_tools.eda_tools import partgroup_qty, order_refs, PART_REF_REGEX
import locale
locale.setlocale(locale.LC_ALL, '')
-locale.localeconv()
+conv = locale.localeconv()
curr_sym = '{currency_symbol}'.format(**conv)
+num_format = curr_sym + '#,##0.00'
+
all = ['create_spreadsheet']
@@ -116,14 +118,14 @@ def create_spreadsheet(parts, prj_info, spreadsheet_filename, collapse_refs, use
'font_size': 13,
'font_color': 'red',
'bold': True,

           'num_format': '$#,##0.00',

           'num_format': num_format,
           'valign': 'vcenter'
       }),
       'unit_cost_currency': workbook.add_format({
           'font_size': 13,
           'font_color': 'green',
           'bold': True,

           'num_format': '$#,##0.00',

           'num_format': num_format,
           'valign': 'vcenter'
       }),
       'proj_info_field': workbook.add_format({

@@ -153,7 +155,7 @@ def create_spreadsheet(parts, prj_info, spreadsheet_filename, collapse_refs, use
'too_few_available': workbook.add_format({'bg_color': '#FF9900', 'font_color':'black'}),
'too_few_purchased': workbook.add_format({'bg_color': '#FFFF00'}),
'not_stocked': workbook.add_format({'font_color': '#909090', 'align': 'right', 'valign': 'vcenter'}),

       'currency': workbook.add_format({'num_format': '$#,##0.00', 'valign': 'vcenter'}),

       'currency': workbook.add_format({'num_format': num_format, 'valign': 'vcenter'}),
   }

   # Add the distinctive header format for each distributor to the dict of formats.

@@ -360,7 +362,7 @@ Yellow -> Enough parts available, but haven't purchased enough.''',
'unit_price': {
'col': 7,
'level': 0,

       'label': 'Unit$',

       'label': 'Unit' + curr_sym,
       'width': None,
       'comment': 'Minimum unit price for each part across all distributors.',
       'static': False,

@@ -368,7 +370,7 @@ Yellow -> Enough parts available, but haven't purchased enough.''',
'ext_price': {
'col': 8,
'level': 0,

       'label': 'Ext$',

       'label': 'Ext' + curr_sym,
       'width': 15,  # Displays up to $9,999,999.99 without "###".
       'comment': 'Minimum extended price for each part across all distributors.',
       'static': False,

@@ -693,14 +695,14 @@ Orange -> Too little quantity available.'''
'unit_price': {
'col': 2,
'level': 2,

       'label': 'Unit$',

       'label': 'Unit'+ curr_sym,
       'width': None,
       'comment': 'Unit price of each part from this distributor.\nGreen -> lowest price.'
   },
   'ext_price': {
       'col': 3,
       'level': 0,

       'label': 'Ext$',

       'label': 'Ext' + curr_sym,
       'width': 15,  # Displays up to $9,999,999.99 without "###".
       'comment':
       '(Unit Price) x (Purchase Qty) of each part from this distributor.\nRed -> Next price break is cheaper.\nGreen -> Cheapest supplier.'

--
2.13.6

Digikey, as example, have a specific web here could be get the url for each country-currency version of the site. The distributors submodule could have a get_url_site(currency='USD',locale='US').

Started the development. May be necessary add
https://pypi.python.org/pypi/iso4217/
https://pypi.python.org/pypi/iso3166
To KiCost dependences (also remove CurrencyConverter).

The code now is able to set the distributor locale but not the currency, that appear be configured on a cookie, not in the link of Digikey.

Working for serial mode kicost -qw --include digikey -i %file% --locale IT.
The problem in the multiple process mode is related with the code in line 208 of kicost.py (not wait the multprocess to finish).

It works fine since #262, but have a issue related if language-currency-format.
Using kicost -wi %file% --locale IT the Euro comma is interpreted not as a decimal separator.

I think the same issues that affect Octopart also affect vendor APIs: they don't want server overload; they don't want competitors scraping all their data; they will monitor web access (API or regular) for data collection; you are equally at whim of their company policy and could start charging, or restrict access.
I understand that Octopart make money from vendors when you follow an Octopart link to a vendor. I guess that is still true under Altium ownership, which also seems to be benign so far.
In general, in my BOM tool I cache Octopart data for a configurable time like 48 hours which could apply equally well to vendor web sites.

#275 give us one step forward to Mouser country/currency configuration.


Readme file "=" sign missing in webpack config steps.

Example Webpack config
// the path(s) that should be cleaned
let pathsToClean [
'dist',
'build'
]
The "=" sign missing in above array declaration.
I know its minor change but thought to let you know.

thanks 😎


update aws sdk to ga version

https://aws.amazon.com/blogs/developer/announcing-general-availability-of-the-aws-sdk-for-rust/

I'm assuming the upgrade is needed causing a client type mismatch when using
aws-config = { version = "1.0.3", features = ["behavior-version-latest"] }
aws-sdk-cloudwatchlogs = "1.4.0"

error[E0277]: the trait bound `aws_sdk_cloudwatchlogs::Client: CloudWatchClient` is not satisfied
  --> src/main.rs:28:17
   |
27 |             tracing_cloudwatch::layer().with_client(
   |                                         ----------- required by a bound introduced by this call
28 |                 client,
   |                 ^^^^^^ the trait `CloudWatchClient` is not implemented for `aws_sdk_cloudwatchlogs::Client`
   |
   = help: the following other types implement trait `CloudWatchClient`:
             tracing_cloudwatch::client::NoopClient
             aws_sdk_cloudwatchlogs::client::Client
note: required by a bound in `CloudWatchLayer::<S, D>::with_client`
  --> /Users/calumpeak/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-cloudwatch-0.1.4/src/layer.rs:65:17
   |
59 |     pub fn with_client<Client>(
   |            ----------- required by a bound in this associated function
...
65 |         Client: CloudWatchClient + Send + Sync + 'static,
   |                 ^^^^^^^^^^^^^^^^ required by this bound in `CloudWatchLayer::<S, D>::with_client`

@calumpeak
Sorry for the delay in response, we have released v0.1.5 and updated the version of aws-sdk-cloudwatchlogs and aws-config to ver 1


💡[FEATURE]: Add a Terms and Conditions Page

Is your feature request related to a problem? Please describe.
No it is not related to a problem. It is related to an additional feature request.
Describe the solution you'd like
I would like to add a Terms and Conditions Page and provide its quicklink in the footer section.
Describe alternatives you've considered
No
Additional context
No

@ParnaRoyChowdhury777 ok


Wallet Modal Issues

On Mobile The toggle darkmode and "Choose a Wallet" texts are on top of each other
Also I can scroll down to see more wallets
And it seems to be missing the search functionality.

On yeah the toggle wasnt supposed to go through it was a helper for me to debug the theme locally. I'll try to make it a real thing on the example app then


Multiple database list

Previously I used the skytools version 3.2.6.
I had replication from one central server to several nodes. And also replication from all nodes to one central server.
For this I used 2 pgqd.
The configuration file (pgqd_center.conf and pgqd_nodes.conf) looked like this:
pgqd_center.conf:
[pgqd]
base_connstr = dbname=centralnode host=<IP_ADDRESS> port=5432 user=postgres
pgqd_nodes.conf:
[pgqd]
database_list = simplenode dbname=simplenode host=<IP_ADDRESS> port=5432 user=postgres, simplenode dbname=simplenode host=<IP_ADDRESS> port=5432 user=postgres, simplenode dbname=simplenode host=<IP_ADDRESS> port=5432 user=postgres
everything worked well.
But when I needed to use new versions of londiste, pgq, pgqd-3.5, these configuration files do not work.
I'm getting errors:
WARNING [simplenode dbname=simplenode host=<IP_ADDRESS> port=5432 user=postgres]: default timeout
LOG {ticks: 0, maint: 0, retry: 0}
LOG {ticks: 0, maint: 0, retry: 0}
ERROR connection error: PQconnectPoll
ERROR libpq: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  database "simplenode dbname=simplenode host=<IP_ADDRESS> port=5432 user=po" does not exist
How in the new version of pgqd it is necessary to specify a list of several databases located on different hosts?

It is not a supported configuration, seems it worked only by accident.
It is better to run pgqd per host and locally, not over network, that way any network outages will not affect batch generation in local pgq.  If pgqd goes down, it is not possible to spread events into batches that where inserted during outage.
IOW - please run local pgqd instead trying to get your old configuration to work.


upgrade-packages.yml cleans yum prior to upgrading

playbooks/upgrade-packages.yml has been edited to run yum clean all prior to refreshing the cache or making any upgrades.

Mike, thanks for the pull request! Let me run some tests on it.


upgrade path for new CSI plugin

...done.

Creating secret for Hetzner Cloud token...
secret/hcloud configured
...secret created.

Deploying Hetzner Cloud Controller Manager...
serviceaccount/cloud-controller-manager unchanged
clusterrolebinding.rbac.authorization.k8s.io/system:cloud-controller-manager unchanged
deployment.apps/hcloud-cloud-controller-manager unchanged
...Cloud Controller Manager deployed

Deploying Hetzner CSI Driver...
storageclass.storage.k8s.io/hcloud-volumes unchanged
serviceaccount/hcloud-csi-controller unchanged
clusterrole.rbac.authorization.k8s.io/hcloud-csi-controller unchanged
clusterrolebinding.rbac.authorization.k8s.io/hcloud-csi-controller unchanged
service/hcloud-csi-controller-metrics configured
service/hcloud-csi-node-metrics unchanged
deployment.apps/hcloud-csi-controller unchanged
daemonset.apps/hcloud-csi-node unchanged
The CSIDriver "csi.hetzner.cloud" is invalid: spec.fsGroupPolicy: Invalid value: "File": field is immutable
Failed to deploy CSI Driver:
The CSIDriver "csi.hetzner.cloud" is invalid: spec.fsGroupPolicy: Invalid value: "File": field is immutable

Hey there, I recently upgraded the hetzner-k3s binary.
After using it with a existing cluster (>1year old) I got the above error.
I read its probably due to a new CSI driver by hetzner.

Do you have a upgrade path available?
Can we provide one without loosing the pvc's?

much appreciated, best

Hi, I will try to release a new version with the latest CSI driver tomorrow.

followed the manual upgrade from hetzner csi description. works now

Glad you sorted it. I haven't had a chance to release a new version yet.

@vitobotta is this still issue?

@vitobotta is this still issue?

What do you mean? I have updated the version of the manifest in the latest release and also made it configurable.

I currently set csi_driver_manifest_url: "https://raw.githubusercontent.com/hetznercloud/csi-driver/v2.3.2/deploy/kubernetes/hcloud-csi.yml" but this error The CSIDriver "csi.hetzner.cloud" is invalid: spec.fsGroupPolicy: Invalid value: "File": field is immutable

In case someone has the same issue, deleting and applying CSI driver worked for me:
kubectl delete -f https://raw.githubusercontent.com/hetznercloud/csi-driver/v2.3.2/deploy/kubernetes/hcloud-csi.yml
kubectl apply -f https://raw.githubusercontent.com/hetznercloud/csi-driver/v2.3.2/deploy/kubernetes/hcloud-csi.yml

In case someone has the same issue, deleting and applying CSI driver worked for me:
kubectl delete -f https://raw.githubusercontent.com/hetznercloud/csi-driver/v2.3.2/deploy/kubernetes/hcloud-csi.yml
kubectl apply -f https://raw.githubusercontent.com/hetznercloud/csi-driver/v2.3.2/deploy/kubernetes/hcloud-csi.yml

P.S. version could be different in your case.

Did the delete command actually delete all the defined resources? This is weird because it should affect the persistent volumes you have I think. Anyway glad you got it working :)

It was my test cluster. I just did not find a proper way to do it, and tried this, but everything worked fine and all the volumes were in place with existing data after delete and apply.

It was my test cluster. I just did not find a proper way to do it, and tried this, but everything worked fine and all the volumes were in place with existing data after delete and apply.

Cool 👍


make shorthands.flex work the same as flex shorthand in css

Flex basis should be 0% instead of 0px, this is how web browsers work.

@microsoft-github-policy-service agree

More info here:
https://github.com/microsoft/griffel/issues/502

@jligeza  there is active work to actually enable shorthands in Griffel (#544), most of the the shorthand factories (including flex) will be deprecated in the near future

@jligeza thanks for contributing, however shorthands.flex() have been deprecated, we are not going to fix it.
https://github.com/microsoft/griffel/issues/502#issuecomment-2092536984


Release note not available for 9.2.4

The SAP Note/KBA you were trying to reach is currently being created and not released yet.

@agiguere Thank you so much for the information. My colleagues will publish the note very soon. Sorry for the inconvenience.

The release note was published last month but the issue was not yet closed. Doing it now.


chore: format integration tests

Description
find . -type f -name Nargo.toml -exec sh -c 'cd "$(dirname "{}")" && nargo fmt &> /dev/null || echo "Failed in: $(dirname "{}")"' \;

Failed in: ./tooling/nargo_cli/tests/test_libraries/bad_name
Failed in: ./tooling/nargo_cli/tests/compile_failure/depend_on_bin
Failed in: ./tooling/nargo_cli/tests/compile_failure/package_name_empty
Failed in: ./tooling/nargo_cli/tests/compile_failure/custom_entry_not_found
Failed in: ./tooling/nargo_cli/tests/compile_failure/workspace_missing_toml
Failed in: ./tooling/nargo_cli/tests/compile_failure/workspace_missing_toml/crates/b
Failed in: ./tooling/nargo_cli/tests/compile_failure/invalid_dependency_name
Failed in: ./tooling/nargo_cli/tests/compile_failure/package_name_hyphen

Additional Context
Documentation*
Check one:

[x] No documentation needed.
[ ] Documentation included in this PR.
[ ] [Exceptional Case] Documentation to be submitted in a separate PR.

PR Checklist

[x] I have tested the changes locally.
[x] I have formatted the changes with Prettier and/or cargo fmt on default settings.

@jfecher

I'm really not a fan of how the formatter is collapsing code sections separated with a blank line together if there's a comment between them. This severely hampers readability for me.

@TomAFrench, ok, I'll fix it


make blazegraph optional

In this case, we're also assuming you're not using the RQ backend either, or the Angular/React frontend. This will be addressed as a simple script to create rdf graphs from a genome file.

Feature added in https://github.com/superphy/backend/pull/76


Version 1.0

Description

Official release of Starsim!
Adds a Calibration class, based on Optuna, to facilitate the calibration of Starsim models.
Adds mean(), median(), and plot() methods to MultiSim.
Adds low and high attributes to Result objects.
Adds a flatten() method to Results, allowing nested Results objects to be turned into flat dictionaries.
Removes duplicate UIDs among new infections, and adds a unique() method to ss.uids.
Fixes a bug that prevented ss.lognorm_im() from using callable parameters.
Updates the default Sim string representation to be a single line; the more verbose version is available via sim.disp().

Checklist

[x] Code commented & docstrings added
[x] New tests were needed and have been added
[x] A new version number was needed & changelog has been updated
[x] A new PyPI version needs to be released

Playing around with the new repr:
sir = ss.SIR(init_prev=ss.bernoulli(0.3))
sim = ss.Sim(diseases=sir)
/Users/robynstuart/Documents/git/starsim/starsim/sim.py:72: RuntimeWarning:
Error displaying custom sim repr, falling back to default: object of type 'SIR' has no len()
  ss.warn(f'Error displaying custom sim repr, falling back to default: {E}')


Report errors for all language features that later than 1.3.xx

to prevent new features usages

I see this in CI

As soon it causes problems, I will remove this

@1951FDG Do you still need it ?

No, thanks for asking!


Support for math equations using Mathjax

Hello,
Thank your for this awesome work ! It would be great for people in academia if support of math equations is included ! This should be achievable using MathJax library:
https://www.mathjax.org/#docs
https://jsbin.com/betodolimo/edit?html,output
Best

Hey @aGIToz , thanks for the suggestion, would indeed be an interesting feature! It would have to be implemented in Excalidraw though, as Excalideck doesn't handle the drawing part (just the "organise multiple drawings into a deck" part). There is this PR https://github.com/excalidraw/excalidraw/pull/2993 currently open to add MathJax support in Excalidraw. When / if it'll get merged, Excalideck will inherit the feature.


built-with only showing fraction of extensions

when picking a version it only seem to have a fraction of extensions listed. i.e. no core nor camel shown where it should be.

Can you give a screenshot showing the problem? Is this "I expect "'built with' to be 'compatible with'", or is the data actually incorrect? We're reporting what's in the metadata, but it's much less useful information than the calculated compatibility information.
For example, if you select 3.0.0.Alpha1, no Camel extensions were built with that version, so there's not much to see.

I agree that 'built with' is causing confusion and perhaps should be removed until compatibility information is available, but I want to make sure there's not a second issue here. #140 covers adding compatibility information, and as part of that we'd remove the 'built' with filter.

this is 2.16.5 - latest stable. guaranteed that majority of extensions have versions that was built with that but we only show 3.

Ah, most of those extensions that were built with 2.16.5 were then re-built with something in the 3.x stream, though. This is only a view of the latest release. So "I would like to query across all versions" is (a) reasonable and (b) that's an issue that actually wouldn't be fixed by #140.


Theme provider example in repo has error

Here's my code:
components/theme-provider.tsx
"use client";

import * as React from "react"
import { ThemeProvider as NextThemesProvider } from "next-themes"
import { type ThemeProviderProps } from "next-themes/dist/types"

export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
  return <NextThemesProvider {...props}>{children}</NextThemesProvider>
}

app/layout.tsx
import './globals.css'
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
import { UserProvider } from "@auth0/nextjs-auth0/client";
import { ThemeProvider } from "@/components/theme-provider"

const inter = Inter({ subsets: ['latin'] })

import Head from "next/head";

export const metadata: Metadata = {
  title: 'Create Next App',
  description: 'Generated by create next app',
}

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (

        <link rel="icon" href="/favicon.png" />
        <title>Put a variable here for text</title>

      <UserProvider>

          <ThemeProvider attribute="class" defaultTheme="system" enableSystem>
            {children}
          </ThemeProvider>

      </UserProvider>

  )
}

app/page.tsx
"use client";
import Image from 'next/image'
import Head from "next/head";
import Link from "next/link";
import { useUser } from "@auth0/nextjs-auth0/client"

export default function Home() {
  const { isLoading, error, user } = useUser()

  if(isLoading) return
Loading...

  if(error) return
{error.message}

  return (

        {!user
            ? <>
                Login
                Signup
              </>
            : <>npm install -g expo-cli
                Logout
              </>
        }

  )
}

Here's the error message I get:
Unhandled Runtime Error
TypeError: __webpack_require__.n is not a function. (In '__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__)', '__webpack_require__.n' is undefined)
Call Stack
eval

[native code]
(app-pages-browser)/./components/theme-provider.tsx

/_next/static/chunks/app/layout.js (105:5)
<unknown>

file:///Users/andrewobrigewitsch/Documents/Work.nosync/ai%20apps/ai-template/.next/static/chunks/webpack.js (704:35)
__webpack_require__

/_next/static/chunks/webpack.js (37:37)
performConcurrentWorkOnRoot

[native code]

Inside app/page.tsx
Try enclosing the JSX in conditional rendering inside parenthesis... like this
        {!user
             ? (<>
                Login
                Signup
              </>)
            : (<>npm install -g expo-cli
                Logout
              </>)
        }

Not sure whether it fixes it, but this maybe one of the reason

hmmm @blazestudios23  could be that you have not installed next-themes. Not sure but might be

hmmm @blazestudios23 could be that you have not installed next-themes. Not sure but might be

My computer crashed, and when it restarted it worked. Who knows what the issue was.

This is the problem with the original next-themes, I suppose, when using it with next js app dir. There is a fork by @WITS that has included the ServerThemeProvider.
`import { ServerThemeProvider } from 'next-themes'
function RootLayout({ children }) {
return (

{children}

)
}`
You can see more in this repo : .

This issue has been automatically closed because it received no activity for a while. If you think it was closed by accident, please leave a comment. Thank you.


Add microsoft.exchange.webservices.data.credential.BearerTokenCredentials

This should address https://github.com/OfficeDev/ews-java-api/issues/579

Codecov Report

Merging #606 into master will increase coverage by 0.04%.
The diff coverage is 66.66%.

@@             Coverage Diff              @@
##             master     #606      +/-   ##
============================================
+ Coverage     10.43%   10.47%   +0.04%
- Complexity        0      473     +473
============================================
  Files           550      551       +1
  Lines         20436    20451      +15
  Branches       2626     2084     -542
============================================
+ Hits           2132     2142      +10
- Misses        18151    18154       +3
- Partials        153      155       +2

Impacted Files
Coverage Δ
Complexity Δ

...rvices/data/credential/BearerTokenCredentials.java
66.66% <66.66%> (ø)
3 <3> (?)

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 0e1ba52...d6dd97b. Read the comment docs.

Hello,
Any chance to get this PR merged in the near future?
Am I mistaken if I think that without this, using the https://github.com/bookaroom/ews-java-api/blob/master/src/main/java/microsoft/exchange/webservices/data/credential/TokenCredentials.java is useless and doesn't work?
Currently I try to bind to an email item, but always end up with a 403 unauthorized error...

From what I understand, TokenCredentials.java was designed to be used with a SAML or Kerberos tokens.  The heavy lifting is done in WSSecurityBasedCredentials, the base class.  I don't know much more about it than that it didn't work for me, living in the OAuth world of 2017.
I found success using AAD to get an OAUTH2 bearer token (e.g. from a POST to https://login.windows.net/common/oauth2/token?api-version=1.0).  This PR allows the ews-java-api to pass that token along to the EWS SOAP service.
I was inspired by this StackOverflow answer, where someone was able to use EWS/SOAP directly with a bearer token:  https://stackoverflow.com/questions/41875795/office-365-calendar-api-using-ews-and-oauth-2


cephfs test TestFilePreadvPwritev fails when run with cgocheck=2

The test panics with: "fatal error: Go pointer stored into non-Go memory"
The library code should be updates so that it no longer violates these pointer rules and the test passes when run with cgocheck=2.

TestIovec/setBufs also fails, which is the underlying issue.

TestIovec/setBufs also fails, which is the underlying issue.

This has been resolved in PRs #411 and #441.


delete rpm and minio data,”kubectl get cvr“ and ”kubectl get cspi -n openebs “ Display disk data BUG

testing。。。。。
download and write data to openebs pvc
wget http://<IP_ADDRESS>/BaseOS/Packages/python3-samba-4.11.2-13.el8.x86_64.rpm -O aaaa.rpm
Then delete all openebs pvc data
rm -f *.rpm
Check it again  ”kubectl get cvr“  and  ”kubectl get cspi  -n openebs “
The disk usage displayed is unchanged， before the RPM operation is deleted.
The disk space data cannot be correctly viewed， Dare not use in production system
kubectl get cvr  -n openebs |grep 6830fc461fd6
pvc-b58fd06e-cb11-407e-a3e9-6830fc461fd6-cstor-disk-pool-2kdv   51.2M       55.6M   Healthy   40m
pvc-b58fd06e-cb11-407e-a3e9-6830fc461fd6-cstor-disk-pool-8bd2   51.2M       55.6M   Healthy   40m
pvc-b58fd06e-cb11-407e-a3e9-6830fc461fd6-cstor-disk-pool-c8nl   51.2M       55.6M   Healthy   40m
[root@test-centos8-kvm11 ~]# kubectl get cspi  -n openebs
NAME                   HOSTNAME   FREE    CAPACITY   READONLY   PROVISIONEDREPLICAS   HEALTHYREPLICAS   STATUS   AGE
cstor-disk-pool-2kdv   node1      3770M   4810M      false      4                     4                 ONLINE   100d
cstor-disk-pool-8bd2   node2      3770M   4810M      false      4                     4                 ONLINE   100d
cstor-disk-pool-c8nl   node3      3770M   4810M      false      4                     4                 ONLINE   100d
kubectl describe sc cstor-csi-disk -n openebs
Name:            cstor-csi-disk
IsDefaultClass:  No
Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"cstor-csi-disk"},"parameters":{"cas-type":"cstor","cstorPoolCluster":"cstor-disk-pool","fsType":"xfs","replicaCount":"3"},"provisioner":"cstor.csi.openebs.io"}
Provisioner:           cstor.csi.openebs.io
Parameters:            cas-type=cstor,cstorPoolCluster=cstor-disk-pool,fsType=xfs,replicaCount=3
AllowVolumeExpansion:  True
MountOptions:
ReclaimPolicy:         Delete
VolumeBindingMode:     Immediate
Events:
”kubectl get cvr“  and  ”kubectl get cspi  -n openebs “ Display disk data only increases, not decreases，Dare not use in production system
my opneebs version is 3.0.0,Does openebs version 3.2 solve this problem?

After today's verification, disk space data shows that there is indeed a problem
The busybox pod /mnt/openebs-csi  mount point disk space is displayed as follows
kubectl exec -it busybox-cstor-test -- df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
overlay              overlay        10.0G      7.1G      2.9G  71% /
tmpfs                tmpfs          64.0M         0     64.0M   0% /dev
tmpfs                tmpfs           3.8G         0      3.8G   0% /sys/fs/cgroup
/dev/sda             xfs          1017.5M     36.6M    980.8M   4% /mnt/openebs-csi
The  /mnt/openebs-csi total size is displayed as 1017.5M，but busybox‘s pvc disk space displayed as 500Mi
kubectl get pvc -A
NAMESPACE   NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS     AGE
default     cstor-busybox-pvc   Bound    pvc-b58fd06e-cb11-407e-a3e9-6830fc461fd6   500Mi      RWO            cstor-csi-disk   17h
The disk space usage cannot be displayed properly and cannot be monitored

After upgrading to openebs version 3.1, the pod still cannot accurately display the pvc disk space
The pvc size is set to 50m and it shows as 1017.5M
cat /tmp/busybox.yaml mount 50Mi PVC
apiVersion: v1
kind: Pod
metadata:
name: busybox-cstor-test
namespace: default
spec:
containers:

command:

sh
-c
'date >> /mnt/openebs-csi/date.txt; hostname >> /mnt/openebs-csi/hostname.txt; sync; sleep 5; sync; tail -f /dev/null;'
image: busybox
imagePullPolicy: Always
name: busybox
volumeMounts:
mountPath: /mnt/openebs-csi
name: demo-busybox-vol
volumes:

name: demo-busybox-vol
persistentVolumeClaim:
claimName: cstor-busybox-pvc

/ #  df -hT | grep -E "Filesystem|openebs"
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/sda             xfs          1017.5M     33.6M    983.9M   3% /mnt/openebs-csi
kubectl get pvc -A
NAMESPACE   NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS     AGE
default     cstor-busybox-pvc   Bound    pvc-46b6d6d3-079f-4f04-b0f8-a34f65c4abad   50Mi       RWO            cstor-csi-disk   36m


Address Giveaway Enhancement

Abstract
This enhancement adds the following functionality:

Adds CAPTCHA when price of FIO Address is 0
Add limits on how many FIO Addresses can be registered on each domain
Supports custom authorizations

Motivation
The Foundation has been allocated 125M FIO tokens at Mainnet to be spent on FIO Address registrations. In fact these tokens are locked and can only be spent on fees.
The Foundation has already funded the development of the Registration Site to enable integrating wallets to easily accommodate FIO Address registration.
The proposal recommends additional functionality be added to the Registration Site to enable Address Giveaways:

CAPTCHA and limits will limit abuse.
Custom authorizations are required to use existing Foundation Address Giveaway accounts as those accounts are controlled via msig and transfer is prohibited, and will also allow the Registration site to register FIO Addresses on private domains, if proper permissions are granted.

Specification
Add CAPTCHA
Add Google Invisible reCAPTCHA v2 to registration site when price of FIO Address is set to 0.
Add FIO Address registration limits
Each domain being added to wallet profile in Admin interface should have a limit of addresses which can be registered on that domain. Once that limit is reached, an error message should be shown to the user when checking availability of FIO Address: "FIO Address registrations no longer available for that domain."
It should be possible to specify unlimited, e.g. by leaving the field blank.
This limit only tracks registrations on that domain via the registration site and on the specific wallet profile. The same domain may exist on another wallet profile and may have different limits.
A counter of registrations completed for each domain via the specific wallet profile should be shown next to each domain.
Registrations via Admin, e.g. via Retry should not enforce these limits, but should be included in count.
Support custom authorizations
The wallet profile in Admin should be extended to optionally include:

actor
permission

If specified, it will be used in the authorization node (actor, permission) as well as data node (actor). Example:
{
	"account": "fio.address",
	"name": "regaddress",
	"authorization": [{
			"actor": "actor_from_wallet_profile",
			"permission": "permission_from_wallet_profile"
		}
	],
	"data": {
		"fio_address": "bob@domain",
		"owner_fio_public_key": "FIO69UqrQQg5BBneqj723i7esZT4fbp6sH2rabo6bRyHTpoyuDiSu",
		"max_fee":<PHONE_NUMBER>0,
		"tpid": "",
		"actor": "actor_from_wallet_profile"
	}
}

The request will still be signed by the master private key.
If custom authorizations are not specified, the actor/permission should be used as it is today.

Maybe take a look at: https://azcaptcha.com
Or one of the "slide" catpchas.

GeeTest_CAPTCHA_Product_Brochure.pdf
I think a Slide Catpcha like this is the way to go. Most exchanges seem to use it, it comes with multiple languages, and won't be blocked in China which is important. I don't know how much they charge, but I am looking into it.
https://www.geetest.com/en/Solution

Serving 290,000+ enterprises worldwide,

More about the right up here: https://cryptobriefing.com/captcha-binance-jigsaw-defeat-scammers/
I've registered with them to get a test account going. I haven't seen pricing on the website yet, but I see this from Googling around:

GeeTest CAPTCHA Pricing Overview
GeeTest CAPTCHA pricing starts at $100.00 per month.There is a free version.GeeTest CAPTCHA offers a free trial.

Off to a good start.  It appears that the captcha code is self-hosted and has server components to install, so adds to security and privacy:
<script src="gt.js"></script>

Installation
I like this, they proxy through the server to get / check the challenge.  Very private, non-invasive..
https://github.com/GeeTeam/gt3-node-sdk/blob/master/gt-sdk.js
Just check things like this, and see how it works if we don't submit an IP address.  It looks like they are expecting that, they put 'unknown' in ip_address: data.ip_address || 'unknown' https://github.com/GeeTeam/gt3-node-sdk/blob/master/gt-sdk.js#L69
It might be worth it to seed randint with a little secure random data too..  Math.random is deterministic unless it is seeded properly.

Looks like gt.js has their API server and is connecting from the client.  I'm not sure if this will work securely and privately or not..
https://github.com/GeeTeam/gt3-node-sdk/blob/master/demo/static/libs/gt.js#L37

For database changes see: https://github.com/fioprotocol/fio-registrations/issues/15

Going to close this out as I think the main issues have been resolved now.


Add orderBy support for aggregates

The "ARRAY" aggregate returns a collection of values, and as such, an orderBy clause makes sense.

fixed with #202


Tests: Use REQUIRES: maccatalyst_support instead of REQUIRES: OS=maccatalyst

Use REQUIRES: maccatalyst_support instead of REQUIRES: OS=maccatalyst whereever possible to broaden coverage for MacCatalyst specific tests. These tests did not need the runtime OS to be MacCatalyst; they need the compiler to support macabi triples (e.g. -target x86_64-apple-ios13.1-macabi).
Also, fix a few tests that had rotted because they had not been running in CI.
Resolves rdar://90937822

@swift-ci please test

@swift-ci please test


Allow setting window size and position from command line

As a user, I'd like to be able to specify the window's size and position from the command line. This will improve the usability of VS Code as a general text editor with Git (using the core.editor setting). Right now, the only mechanism to affect window size is in VS Code settings, which are for a different use case entirely.
Right now to start up VS Code for editing commit messages, interactive rebase, or any other Git operation requiring the editor, I use this command:
code --wait --new-window

In my case, on Windows, since I have window.newWindowDimensions set to inherit for my normal day to day usage of VS Code as an IDE, and usually keep my windows maximized for this purpose, I instead want the window to be smaller and in a specific area of my screen when I use it for Git.
Basically these are two distinct workflows (VS Code as an IDE and VS Code as an editor for Git). I think being able to configure the window size (maybe not the position, for portability to different computers) is important. Even if it isn't the size directly, maybe having VS remember the window state separately when launched from the command line would be another option. In this case you'd add a window.newWindowDimensionsCommandLine setting that is only used when VS Code is invoked using the --new-window option from command line (not when launched through the shortcut). Using inherit on this setting would keep the last state of the window from when it was last launched on command line. This means that once I launch it through Git once, and configure the window how I like it, the next time the window is launched from command line it will reuse that size & position if I have it set to inherit.

This sounds like a feature for a window manager, not the application itself.
https://gallery.technet.microsoft.com/scriptcenter/Set-the-position-and-size-54853527

@joaomoreno Isn't that debatable? I'm not sure what the "window manager" is in this case, can you explain? Are you implying the operating system? Maybe understanding your answer also requires and understanding of the architecture of VS Code itself. I don't have any understanding of that. From my perspective, this is an application feature because I consider VS Code holistically to be the application.
I personally feel there should be a more thorough audit for my issue. I put in a lot of time & effort to explain the request, and provide details and a use case. I'd like to see a little more effort put into considering this feature. It's very upsetting and personally insulting to see my issue closed so quickly with what appears to be very little consideration and thought.

I'd also like to add:

There are other features that control the size & position of the Window built natively into the application. How is this any different?

The PowerShell script idea is not portable. Window managers (if you are referring to the OS) are different per platform, if VS Code implements this feature it can be made consistent and portable to other operating systems.

@rcdailey Sorry for being blunt. I don't think this feature warrants spending time on it, especially since it would not impact a lot of users and there are external tools that can solve that problem, even if platform dependent. But we can keep this in the Backlog Candidate milestone and ask @bpasero whether he knows of other people who are interested in this.

Thanks @joaomoreno, I appreciate your involvement and consideration. I'm OK with external tooling as a short term solution, but having this functionality implemented as a first-class citizen would be the better long term solution IMHO. Would it be possible to write an extension for this? Can extensions control the window size & position in a platform agnostic way? Just trying to think of other solutions.

Would it be possible to write an extension for this? Can extensions control the window size & position in a platform agnostic way?

Not currently, no. Why is window size and position so important to use Code as a git editor? It's not really critical, especially since in that use case you can simply close VS Code once you're done editing your commit message.

I just don't think it's appropriate to use a full screen, maximized window on a 1440p display to edit a few lines of commit message text. A smaller non-maximized window is desired. You're right, it's not critical, and I have not asserted that it is. But it's also not a complex issue. I just want it to make it into a backlog for consideration.
It could very well be that VS Code just ends up not being the right tool for this kind of use case. Either by virtue or inflexibility.

I believe a middle road between both of these views would be ideal:
have window.newWindowDimensions take 'halfscreen left' and 'halfscreen right'.
This is useful for much more than commit messages; e.g. some of my zsh aliases:
alias zshrc='code -n -w ~/.zshrc && . ~/.zshrc'
alias gitconf='code -n -w ~/.gitconfig'
alias vsconf='code -n -w ~/.config/Code/User/settings.json'

On large displays, half a screen is ideal for such small config edits, especially since it's pretty common to have a terminal sized at half a screen too.
Even more convenient would be to detect what side the parent terminal is located, and position the new vscode window on the opposite side.
I'm not familiar with vscode internals, so I don't know how challenging this would be. I'm just throwing around some ideas, in the hope that anything sticks ;)
Personally, I would love this convenience.

@joaomoreno @bpasero @rcdailey Thoughts anyone?
Is this feasible or out of scope?

I've already clearly stated my use case and what would work best for me. Half screen is not what I personally want. I would recommend you open a separate issue for that request.


Rename api-stub-generator to apiview-stub-generator

I left behind the sole usage of the feed install until I have one released.
@praveenkuttappan I updated apiviewweb with a pinned version that was 0.1.0.

[x] Merge this PR
[x] Update CI to point at new yml locations
[x] Publish 0.3.7 to PyPI to reserve the name.
[x] Publish new version of current and 0.3.5 as required by current sdk-for-python CI.
[x] Update azure-sdk-for-python to consume by new name

@praveenkuttappan after you take a look and sign off I will...

[x]  Merge this PR
[x]  Update CI to point at new yml locations
[x]  Publish 0.3.7 to PyPI to reserve the name.
[x]  Publish new version of current and 0.3.5 as required by current sdk-for-python CI.
[x]  Update azure-sdk-for-python to consume by new name

Let's keep the version of apiview-stub-generator as 0.3.7 so APIView won't try to rebuild all existing reviews. Existing API reviews get automatically rebuilt whenever parser version changes and we don't need to rebuild them in this case since there is no change within the parser logic.

@praveenkuttappan after you take a look and sign off I will...

[x]   Merge this PR
[x]   Update CI to point at new yml locations
[x]   Publish 0.3.7 to PyPI to reserve the name.
[x]   Publish new version of current and 0.3.5 as required by current sdk-for-python CI.
[x]   Update azure-sdk-for-python to consume by new name

Let's keep the version of apiview-stub-generator as 0.3.7 so APIView won't try to rebuild all existing reviews. Existing API reviews get automatically rebuilt whenever parser version changes and we don't need to rebuild them in this case since there is no change within the parser logic.

Ok, but what's pinned in apiview_reqs in the python repo is 0.3.5.
Just FYI. Maybe we update the version to when I merge it. I'll tag you on that PR for context when it comes.


Policy Analytics Page?

Hey
I can see that 'Policy Analytics' is now in Preview, and it showing on the Pricing Page for Firewall Manager.
I can't seem to find any documentation related to this new service, is there an article on the Microsoft website that is not showing on google? Or as it is in Preview one is in the works?
Thanks!

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b2c4be05-6859-0c17-0b6f-82f9833d8aed
Version Independent ID: 86da3d34-c6c1-642d-b524-04ace9372999
Content: What is Azure Firewall Manager?
Content Source: articles/firewall-manager/overview.md
Service: firewall-manager
GitHub Login: @vhorne
Microsoft Alias: victorh

Thank you for your feedback! We have assigned this issue to the author to review further and take the next course of action.

Documented here:
https://learn.microsoft.com/en-us/azure/firewall/firewall-preview#policy-analytics-preview
#please-close


Add CDN purging on record changes

We don’t change content super-regularly, so I think a purge-all-on-edit approach should work. Seem reasonable?

https://client.cdn77.com/support/api/version/2.0/data#Purge All


Remove legacy packages from .openpublishing.publish.config.json

Docs Build status updates of commit 33d9db2:
:clock10: Full build: the average full build time is 17 min(s) 35 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit 33d9db2:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.publish.config.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Get Error Activity from AndroidManifest.xml

As discussed in https://github.com/Ereza/CustomActivityOnCrash/issues/4, it will be great if we can set an error Activity directly from AndroidManifest.xml, so we only need to add this line:
 CustomActivityOnCrash.install(this);

Maybe it can add a custom action in order to be launched from library:
        <activity
            android:name=".view.activity.ErrorActivity">
            <intent-filter>
                <action android:name="cat.ereza.customactivityoncrash.ERROR" />
            </intent-filter>
        </activity>

As discussed, it will work like:

Prioritary: CustomActivityOnCrash.setErrorActivityClass(CustomErrorActivity.class);
Secondary: Manifest action
Less important: Default error activity.

I have created new pull request with this change, please review.

Implemented. Thanks!


Compiling solid with Numpy 1.26.0 fails

Recompiling the external tool called solid, as described in the documentation using f2py, with Numpy 1.26.0 results in the following error:
Traceback (most recent call last):
  File "/opt/s1mpc/bin/f2py", line 10, in <module>
    sys.exit(main())
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/f2py2e.py", line 732, in main
    run_compile()
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/f2py2e.py", line 705, in run_compile
    builder.compile()
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/_backends/_distutils.py", line 71, in compile
    setup(ext_modules=[ext])
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/distutils/core.py", line 169, in setup
    return old_setup(**new_attr)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/__init__.py", line 103, in setup
    return distutils.core.setup(**attrs)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 185, in setup
    return run_commands(dist)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
    dist.run_commands()
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
    self.run_command(cmd)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/dist.py", line 989, in run_command
    super().run_command(command)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
    cmd_obj.run()
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/distutils/command/build.py", line 62, in run
    old_build.run(self)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/_distutils/command/build.py", line 131, in run
    self.run_command(cmd_name)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
    self.distribution.run_command(command)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/dist.py", line 989, in run_command
    super().run_command(command)
  File "/opt/s1mpc/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
    cmd_obj.run()
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/distutils/command/build_src.py", line 144, in run
    self.build_sources()
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/distutils/command/build_src.py", line 161, in build_sources
    self.build_extension_sources(ext)
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/distutils/command/build_src.py", line 321, in build_extension_sources
    sources = self.f2py_sources(sources, ext)
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/distutils/command/build_src.py", line 562, in f2py_sources
    f2py2e.run_main(f2py_options + ['--lower',
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/f2py2e.py", line 462, in run_main
    postlist = callcrackfortran(files, options)
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/f2py2e.py", line 363, in callcrackfortran
    postlist = crackfortran.crackfortran(files)
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/crackfortran.py", line 3355, in crackfortran
    readfortrancode(files, crackline)
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/crackfortran.py", line 552, in readfortrancode
    dowithline(finalline)
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/crackfortran.py", line 858, in crackline
    analyzeline(m, pat[1], line)
  File "/opt/s1mpc/lib/python3.9/site-packages/numpy/f2py/crackfortran.py", line 1452, in analyzeline
    vtype = vars[v].get('typespec')
KeyError: 'dhi'

I am getting the same error on my machine.


Supported image formats

Hi,
I have just started using pannellum. I just wanted to know things for client documentation:

Image formats that are supported

Min/Max image resolution

Min/Max image size

Image formats that are supported

Pannellum supports whatever image formats your web browser does.

Min/Max image resolution

This depends on which mode you're using. For equirectangular images, I'd recommend keeping the image width below 8192px, since not all devices support higher resolutions (the limitation is due to WebGL texture size limits). For multires images, the max resolution is effectively unlimited. I guess the minimum resolution is a 1px square, although an image that small would be kind of useless.

Min/Max image size

How is this any different than image resolution?


Undo shortcut (Ctrl+Z) right after page load resets content

Ctrl+Z on a page right after loading it will make the page content empty. You can restore by using the Redo shortcut (Ctrl+Y for me).

Lost notes because of this one: if you happen to: refresh, undo, refresh: no more content.


fork_database.hpp:  fork_item::invalid is never used

The original purpose was to track blocks that get pushed and are then found to be invalid and then to prevent the fork database from accepting any additional blocks on top of that block.
Under BTS 0.x we had some issues where a block would get marked as invalid when it shouldn't have and then we would never be able to switch back to that fork.    So there is some risk for marking things as invalid, but in theory the BTS 2 undo architecture shouldn't have the same issues.

This issue was moved to bitshares/bitshares-core#66


Config flow could not be loaded

Trying to set this up.
v1.0.2 installed via HACS
HA v2023.7.3
OS v10.3
Go to Settings -> Integrations -> + Add Integration -> Select AC Infinity
Giving me Error Config flow could not be loaded: 500 internal server error server got itself in trouble

EDIT: Disabling WiFi and going BT Only the controller gets discovered right away and will configure. This error only occurs when trying to manually configure without auto-discovery.

Might be important to include the error logs. Here's what shows up for mine when I have wifi and BLE enabled:
Logger: aiohttp.server
Source: custom_components/ac_infinity/config_flow.py:104
Integration: AC Infinity ([documentation](https://github.com/hunterjm/ac-infinity-hacs), [issues](https://github.com/hunterjm/ac-infinity-hacs/issues))
First occurred: August 10, 2023 at 6:38:34 PM (1 occurrences)
Last logged: August 10, 2023 at 6:38:34 PM

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 85, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 80, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 148, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 149, in post
    return await super().post(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
    result = await method(view, request, data, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 71, in post
    result = await self._flow_mgr.async_init(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 856, in async_init
    flow, result = await task
                   ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 884, in _async_init
    result = await self._async_handle_step(flow, flow.init_step, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 393, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ac_infinity/config_flow.py", line 104, in async_step_user
    service_info.advertisement.manufacturer_data[MANUFACTURER_ID]
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
KeyError: 2306

Did a little digging here and found that it appears the AC Infinity Controller 69 (with wifi) doesn't have it's BLE radio on when wifi is on. When I have wifi on, the discovered devices (in my env) look like this:
2023-08-13 20:06:58.874 INFO (MainThread) [custom_components.ac_infinity.config_flow] user_input: None
2023-08-13 20:06:58.874 INFO (MainThread) [custom_components.ac_infinity.config_flow] self._discovery_info: None
2023-08-13 20:06:58.874 INFO (MainThread) [custom_components.ac_infinity.config_flow] self._discovered_devices: {'<redacted_mac_address>': <home_assistant_bluetooth.models.BluetoothServiceInfoBleak object at 0x7f932f5640>, '<redacted_mac_address>': <home_assistant_bluetooth.models.BluetoothServiceInfoBleak object at 0x7f93141940>, '<redacted_mac_address>': <home_assistant_bluetooth.models.BluetoothServiceInfoBleak object at 0x7f9400d040>, '<redacted_mac_address>': <home_assistant_bluetooth.models.BluetoothServiceInfoBleak object at 0x7f92eba840>}
2023-08-13 20:06:58.874 INFO (MainThread) [custom_components.ac_infinity.config_flow] service_info: {76: b'\x10\x06=\x1d\x86\x02\xe7H'}
2023-08-13 20:06:58.875 INFO (MainThread) [custom_components.ac_infinity.config_flow] discovered device not AC Infinity. This is ok
2023-08-13 20:06:58.875 INFO (MainThread) [custom_components.ac_infinity.config_flow] service_info: {76: b'\x10\x07\x16\x1f\xa5\xafw\x9dx'}
2023-08-13 20:06:58.875 INFO (MainThread) [custom_components.ac_infinity.config_flow] discovered device not AC Infinity. This is ok
2023-08-13 20:06:58.875 INFO (MainThread) [custom_components.ac_infinity.config_flow] service_info: {117: b'B\x04\x01 g!\r\x00\x02\x01F\x01\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x02'}
2023-08-13 20:06:58.875 INFO (MainThread) [custom_components.ac_infinity.config_flow] discovered device not AC Infinity. This is ok
2023-08-13 20:06:58.875 INFO (MainThread) [custom_components.ac_infinity.config_flow] service_info: {1177: b'\x05\x13\x04v:\xc7\x8d\x000\xff\xf0\x04\x14\xb3VJT\x8c\xd4\xb5U\x13)}'}
2023-08-13 20:06:58.875 INFO (MainThread) [custom_components.ac_infinity.config_flow] discovered device not AC Infinity. This is ok
2023-08-13 20:06:58.875 ERROR (MainThread) [custom_components.ac_infinity.config_flow] Could not find any AC Infinity BLE devices

The manufacturer ID of AC Infinity is 2306 which doesn't show any in this list (looking at the service_info lines, key being the ID [76, 117, 1177]).
This was confirmed the second I turned off the Wifi setting from the app, auto-discovery picked it up and spit out these log lines:
2023-08-13 20:16:50.605 INFO (MainThread) [custom_components.ac_infinity.config_flow] DeviceInfo(type=11, name='<redacted_name>', version=7, is_degree=False, tmp_state=0, hum_state=0, vpd_state=0, choose_port=1, tmp=25.08, hum=72.2, vpd=0.88, fan_type=None, fan_state=0, fan=1, work_type=None, level_on=None, level_off=None)
2023-08-13 20:16:50.605 INFO (MainThread) [custom_components.ac_infinity.config_flow] user_input: None
2023-08-13 20:16:50.605 INFO (MainThread) [custom_components.ac_infinity.config_flow] self._discovery_info: <home_assistant_bluetooth.models.BluetoothServiceInfoBleak object at 0x7f8ec2d540>
2023-08-13 20:16:50.605 INFO (MainThread) [custom_components.ac_infinity.config_flow] self._discovered_devices: {'<redacted_mac_address>': <home_assistant_bluetooth.models.BluetoothServiceInfoBleak object at 0x7f8ec2d540>}
2023-08-13 20:16:50.605 INFO (MainThread) [custom_components.ac_infinity.config_flow] service_info: {2306: b'\xf4\x12\xfa\xc3\x84\xe6NRRKN\x07\x0b\x80\t\xcc\x1c4\x01\x01\x00\x00X\x04\x00\x00\x00'}

and now you can see the 2306 ID showing up and auto discovering.
With all of this info I'd say the best option is to consider this as expected behavior and maybe document the caveat since there's nothing we can do to change how AC Infinity turns on the BLE radio.

I have try with your fix @loganbest  but I still got this:
Cette erreur provient d'une intégration personnalisée

Logger: custom_components.ac_infinity
Source: custom_components/ac_infinity/coordinator.py:69
Integration: AC Infinity (documentation, issues)
First occurred: 18 août 2023 à 22:16:01 (14 occurrences)
Last logged: 20:59:48

F4:22:12:82:1B:36: Failure while polling
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/ac_infinity_ble/device.py", line 423, in _execute_command_locked
    notify_msg = await self._notify_future
                 ^^^^^^^^^^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/bluetooth/active_update_coordinator.py", line 129, in _async_poll
    self.data = await self._async_poll_data(self._last_service_info)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/bluetooth/active_update_coordinator.py", line 122, in _async_poll_data
    return await self._poll_method(last_service_info)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ac_infinity/coordinator.py", line 69, in _async_update
    await self.controller.update()
  File "/usr/local/lib/python3.11/site-packages/ac_infinity_ble/device.py", line 148, in update
    if data := await self._send_command(command):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/ac_infinity_ble/device.py", line 367, in _send_command
    return await self._send_command_while_connected(command, retry)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/ac_infinity_ble/device.py", line 386, in _send_command_while_connected
    return await self._send_command_locked(command)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/bleak_retry_connector/__init__.py", line 471, in _async_wrap_bluetooth_connection_error_retry
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/ac_infinity_ble/device.py", line 341, in _send_command_locked
    return await self._execute_command_locked(command)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/ac_infinity_ble/device.py", line 422, in _execute_command_locked
    async with async_timeout.timeout(5):
  File "/usr/local/lib/python3.11/site-packages/async_timeout/__init__.py", line 129, in __aexit__
    self._do_exit(exc_type)
  File "/usr/local/lib/python3.11/site-packages/async_timeout/__init__.py", line 212, in _do_exit
    raise asyncio.TimeoutError
TimeoutError

and I got this issue too
Cette erreur provient d'une intégration personnalisée

Logger: aiohttp.server
Source: custom_components/ac_infinity/config_flow.py:106
Integration: AC Infinity (documentation, issues)
First occurred: 20:57:45 (5 occurrences)
Last logged: 20:59:42

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 85, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 80, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 148, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 149, in post
    return await super().post(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
    result = await method(view, request, data, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 71, in post
    result = await self._flow_mgr.async_init(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 847, in async_init
    flow, result = await task
                   ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 875, in _async_init
    result = await self._async_handle_step(flow, flow.init_step, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 392, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ac_infinity/config_flow.py", line 106, in async_step_user
    device = parse_manufacturer_data(
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/ac_infinity_ble/protocol.py", line 58, in parse_manufacturer_data
    tmp=get_short(data, 14) / 100,
        ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/ac_infinity_ble/util.py", line 5, in get_short
    return ctypes.c_int16((b[i + 1] & 255) | ((b[i] << 8) & 65280)).value
                           ~^^^^^^^
IndexError: index out of range

I just set up a new fan than comes with the AC 69 Pro controller.
I first had the same issue as https://github.com/hunterjm/ac-infinity-hacs/issues/2#issuecomment-1675012706
Then it cleared up and I got the same issue as @Kathou99 above.
Doing some digging with bluetoothctl I found the following:
[bluetooth]# info 34:85:18:67:A8:A2
Device 34:85:18:67:A8:A2 (public)
	Name: G8XDH
	Alias: G8XDH
	Paired: no
	Bonded: no
	Trusted: no
	Blocked: no
	Connected: no
	LegacyPairing: no
	ManufacturerData Key: 0x0902 (2306)
	ManufacturerData Value:
  34 85 18 67 a8 a2 47 38 58 44 48 03 0b 00        4..g..G8XDH...
	ManufacturerData Key: 0x0080 (128)
	ManufacturerData Value:
  80 00 06 00 00 80 00 04 00 00 00                 ...........
	RSSI: 0xffffffa6 (-90)

The manufacturer data field is significantly shorter than expected by ac-infinity-ble!
I couldn't quite figure out what was going on so I installed the AC Infitity android app. It told me to first enable broadcasting by pressing a button until the bluetooth icon blinked on the controller. After doing that connection via bluetooth was successful and I was prompted to update the controller firmware from 1.1.2 to 3.2.25
After completing the firmware upgrade and unpairing the android app, the controller shows up in bluetoothctl with:
Device 34:85:18:67:A8:A2 (public)
	Name: G8XDH
	Alias: G8XDH
	Paired: no
	Bonded: no
	Trusted: no
	Blocked: no
	Connected: no
	LegacyPairing: no
	ManufacturerData Key: 0x0902 (2306)
	ManufacturerData Value:
  34 85 18 67 a8 a2 47 38 58 44 48 07 0b 80 80 00  4..g..G8XDH.....
  80 00 00 00 00 80 00 04 00 00 00                 ...........

Looks like the earlier firmware had a weirdly formed manufacturer data payload...
Now trying again to configure the integration in Home Assistant I'm back to the first error... Fwiw there are a ton of other bluetooth devices in the vicinity. Is it possible that the integration simply needs to filter out any bluetooth device that doesn't have the required manufacturer data?

Update: I added some try/except blocks around the parts that fail to read the manufacturer data and there's definitely something fishy going on:
Oct 13 18:41:50 skynet hass[1693883]: 2023-10-13 18:41:50.262 WARNING (MainThread) [custom_components.ac_infinity.config_flow] <home_assistant_bluetooth.models.BluetoothServiceInfoBleak object at 0x7f90f415bb40>
Oct 13 18:41:50 skynet hass[1693883]: 2023-10-13 18:41:50.262 WARNING (MainThread) [custom_components.ac_infinity.config_flow] AdvertisementData(local_name='G8XDH', manufacturer_data={2306: b'4\x85\x18g\xa8\xa2G8XDH\x07\x0b\x80\x06o\x1c5\x06\x01\x00\x002\x04\x00\x00\x00'}, rssi=-89)
Oct 13 18:41:50 skynet hass[1693883]: 2023-10-13 18:41:50.262 WARNING (MainThread) [custom_components.ac_infinity.config_flow] {2306: b'4\x85\x18g\xa8\xa2G8XDH\x07\x0b\x80\x06o\x1c5\x06\x01\x00\x002\x04\x00\x00\x00'}
Oct 13 18:46:59 skynet hass[1693883]: 2023-10-13 18:46:59.398 ERROR (MainThread) [custom_components.ac_infinity.config_flow] wtf: 2306 AdvertisementData(local_name='Ruuvi 85B7', manufacturer_data={1177: b'\x05\x0e\rZ{\xff\xff\x03\xc0\xfe\\\x00\x10\xad6\xbeZ<\xf4.\x82\xd7\x85\xb7'}, service_uuids=['6e400001-b5a3-f393-e0a9-e50e24dcca9e'], rssi=-91)
Oct 13 18:46:59 skynet hass[1693883]: 2023-10-13 18:46:59.398 ERROR (MainThread) [custom_components.ac_infinity.config_flow] wtf: 2306 AdvertisementData(manufacturer_data={76: b"\x10\x05\x0e\x18'I\xf4"}, tx_power=6, rssi=-92)
Oct 13 18:46:59 skynet hass[1693883]: 2023-10-13 18:46:59.398 ERROR (MainThread) [custom_components.ac_infinity.config_flow] wtf: 2306 AdvertisementData(manufacturer_data={6: b'\x01\x0f \x02H\x01\xbe\x16\x9a@\xde\xc7\xa5\\\xad\x90\xfa\t/J\x8aa\xe5\x98\xab\xaeQ'}, rssi=-90)

Is this a failure to filter out irrelevant advertisements, or some kind of data race wherein the bluetooth advertisement structure is being kept by an async coroutine for later processing and overwritten by some enumeration loop somewhere before the async routines finish their work, resulting in inconsistent view of the advertisement structure and the resulting error?

After adding more logging to the code and restarting HA this particular failure mode is gone. 😕
Possibly it's a side-effect of the controller being too far from my HA instance and the signal being wonky? After moving the two closer to each other (a few meters gets RSSI from -127 to -88) I get more stable signal. Also manually trusting the controller MAC address with bluetoothctl may have helped? Either way, after a reboot the config flow is now hanging without any useful message in the logs... I just get "unknown error occured" in the web UI after a little while

I have finally been successful at pairing my controller and going through the control flow. Turns out I just needed to put the controller back into what the manual calls broadcasting mode so that it would accept pairing. I'm getting sensor reads now and can control the fan!
Thanks for getting this to work! It would be nice to handle those corner cases more gracefully though :)

I´ve been successful too!
If im going to terminal and insert "bluetoothctl scan on", it automatically finds all my AC Infinity Controllers.

Update:
I used a bluetooth stick before and got these problems. If you create a bt proxy with for example esp32, there are no problems anymore.

For what it's worth, I couldn't get things to work reliably, due to a mixture of Bluez being way unreliable on my machine for some reason, the lack of robustness in handling corner cases, and my controller being on a slightly different protocol version
I ended up going a different route: decompiling the newest android app to figure out the changes in protocol, and building a custom BLE->MQTT bridge that works with raw L2CAP sockets. That's been working much better for me: https://github.com/huguesb/ac2mqtt

Were you able to get light control and control for other accessories like clip on fans and humidifiers working?

I have an exhaust fan, a clip-on fan, and a temperature probe, all
connected to the same 69 pro controller. I can individually control the two
fans and get temperature, humidity and VPD readings from the probe.
That's all I have tested so far. Theoretically, anything the Android app
can do while connected to a BLE controller should be doable, but I'm
personally only interested in exposing raw readings/controls (and not the
scheduling/automated things because I want to keep that in HomeAssistant),
and I'm limited to testing devices I have available.
On Fri, Dec 29, 2023, 7:42 AM Mike @.***> wrote:

Were you able to get light control and control for other accessories like
clip on fans and humidifiers working?
—
Reply to this email directly, view it on GitHub
https://github.com/hunterjm/ac-infinity-hacs/issues/2#issuecomment-1872178284,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABX3CSLD7LQWJIFVBS7TV33YL3QFDAVCNFSM6AAAAAA24BJYN6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZSGE3TQMRYGQ
.
You are receiving this because you commented.Message ID:
@.***>


cleanup apiStorage

Description: Clean/purge apiStorage = new MemoryStorage()
Feature: #74

No longer required. Removing api endpoint from Wolf.


[Feature Request] Show Remix build version in GUI

It'd be great for troubleshooting purposes if the Remix version (including the CI build number if it's a CI build) could be shown somewhere in the GUI, like the title bar. This would be very helpful when helping users through Discord, or for just understanding what's going on from a quick glance.

Alright I added this in commit here. It should be part of the next Remix release or is available now if you build locally.
The version is displayed in the About section of the developer settings as well as a button to copy it now:

This change also adds the version to the traditional DXVK HUD (the one enabled with dxvk.hud=1) just so it is in more places too.


argocd: 2.4.4 -> 2.4.8

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/argoproj/argo-cd/releases.
meta.description for argocd is: "Declarative continuous deployment for Kubernetes"
meta.homepage for argocd is: "https://argo-cd.readthedocs.io/en/stable/"
meta.changelog for argocd is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.4.8 with grep in /nix/store/j59dp6gqnm19l4n776n18shi7r24c5j6-argocd-2.4.8
found 2.4.8 in filename of file in /nix/store/j59dp6gqnm19l4n776n18shi7r24c5j6-argocd-2.4.8

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
argocd

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/j59dp6gqnm19l4n776n18shi7r24c5j6-argocd-2.4.8 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A argocd https://github.com/r-ryantm/nixpkgs/archive/d137dd12b75e2a092b44211c2ed4805fa6b35c95.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/j59dp6gqnm19l4n776n18shi7r24c5j6-argocd-2.4.8
ls -la /nix/store/j59dp6gqnm19l4n776n18shi7r24c5j6-argocd-2.4.8/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

argocd

Maintainer pings
cc @shahrukh330 @bryanasdev000 for testing.

Thanks bot but I will update https://github.com/NixOS/nixpkgs/pull/182779 again to 2.4.8.
Need a small fix to kubectl version.


Separate workflow URL from repository URL in "retrieved from" column of workflows page

Description

Previously the repository link in the "retrieved from" column of the workflows.html page referenced the workflow file while its text displayed the workflow repository. This change ensures both the workflow repo and the file are displayed separately.
Motivation and Context

This change prevents ambiguity for users when using the workflows page.
It shows two separate links each for the repository and workflow file.
For Issue #313: Link in the "retrieved from" column is confusing (#313)
Layout before the change:

Layout after the change:

Types of changes

[x] 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:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

Thanks! Would it perhaps make more sense to make the blob/master long URL be the hyperlink of the existing Path: workflows/Chip/peak.cwl string rather then adding a new line above?

Thanks for the feedback and suggestion.
Yes, it would.
So I looked at to code once more to confirm there is no case where for some reason the path is empty but the workflow URL exists and then by consequence the workflow URL is lost, but it seems the workflow URL is built using the path so that would never happen.
I would be pushing the changes now.

Based on the previous comments the new layout change is as below:
Original Layout Before Pull Request

Layout After

It reports 'out-of-date with the base branch" could you please merge with main or rebase on main?

It reports 'out-of-date with the base branch" could you please merge with main or rebase on main?

I have done this.

Thank you!


Update README.md - Switched to .NET 8 Desktop Runtime

Update README.md - Switched to .NET 8 Desktop Runtime

Thanks, I forgot to update


Add react-native link command to README

Looks like this instruction was missing from README -- added back in.
Feel free to add further clarification for lower versions of RN (assuming that the statement about latest working on 0.60+ is adequate).

The link command is not needed in the current React Native version. Autolinking is used now.
https://facebook.github.io/react-native/blog/2019/07/03/version-60


re-exporting glam::Vec2

Currently the lib.rs of this crate does not re-export its dependency on glam:Vec2. This means that any user of the crate has to add glam to its toml manually. Besides being inconvenient, this can result in problems. Currently glam v0.25.0 is out, while dodgy depends on  v0.24.0. This results in a very uninituitive error that the types seem equal but are actually distinct types. This occurs as you are trying to provide a v0.25.0 Vec2 to an interface that expects v0.24.0 (implying they are different types, though being named equal and originating from the same crate).
The solution to this problem is to simply add pub use glam::Vec2 to your lib.rs, re-exporting the dependency to your own distinct type. This way, any user can simply use dodgy::Vec2 and omit the explicit use of glam altogether.

Ahhh I didn't realize this! Thank you for this. I'll make a PR and upgrade the glam version.


Add new --no-use-system-time flag to use a deterministic timestamp in built PEX

Problem
Part of https://github.com/pantsbuild/pex/issues/716 to make built PEXes be reproducible.
One of the major sources of unreproducibility is timestamps embedded into the zipfile. Python's zipfile.py uses the current system time when creating a new zipfile, per https://github.com/python/cpython/blob/45e92fc02d57a7219f4f4922179929f19b3d1c28/Lib/zipfile.py#L509. So, the Pex cannot be reproducible if built after the original run.
Solution
Introduce a new flag --use-system-time / --no-use-system-time that will toggle whether we use a deterministic timestamp or keep the default behavior of using the current system time. We will default to --use-system-time for now to keep prior behavior, and then in a future release like 1.70 will switch over to default to reproducible builds.
If --no-use-system-time is specified, we use midnight at January 1, 1980, which is the start of the MS-DOS time used by Zipfiles. We then use this value to construct a ZipInfo with the desired date.
Not respecting SOURCE_DATE_EPOCH
We do not respect the standard env var $SOURCE_DATE_EPOCH often used by tools for deterministic timestamps, as doing so risks reducing the reproducibility of built pexes across different platforms, e.g. if two platforms set the env var differently. Usually, this is supposed to be set for the sake of security to check that a shipped binary was not tampered with, but that is not our primary use case, so we do not respect it both for simplicity of our codebase and to avoid this potential reduction in reproducibility. Refer to https://reproducible-builds.org/docs/source-date-epoch/ for more information.
Result
4 / 7 of the acceptance tests for reproducibility now pass consistently!
When setting CI to always use a deterministic timestamp, CI was green so things will work as expected when we change the default to deterministic timestamps.

RE: the SOURCE_DATE_EPOCH - this is just a flag in spirit that allows external tools like Pants to control the timestamp. Presumably Pants would pass a single value no matter what platform it was run on. As such I don't really follow the objection from Pants point of view except for the fact that:

Its not a PEX_ env var so its sneaky / hard to discover.
It does not have a paired pex flag to allow passing the value arguably more explicitly.

All said though I'm happy enough to start with a fixed hardcoded value for simplicity sake. We could always add support later.

Thanks @jsirois for the thoughtful review. Great suggestions.
I took them and added a function zip_info_from_file() to PermPreservingZipFile. Notably, I do not have the function always use a deterministic timestamp, but only parametrize it so that we can support both cases of system time and deterministic.
This allowed me to refactor zip() to always use writestr(), which imo leads to much more consistent and simpler code.


Facility for writing completers for getopt-ish commands

The interface for custom completer is now very generic: elvish gives the completer all arguments and read candidates from the output. This following configures a simple completer for pacman packages:
le:completer[pacman]={ pacman -Sql | grep '^'$args[-1] }

But it doesn't make use of the arguments. Most commands in the wild parses arguments in a getopt-ish fashion, and other shells provide facilities for writing completers for such commands: fish's complete is designed for such uses, while zsh has helpers like _argument to parse arguments.
In elvish, this can be done by writing a getopt-ish parser and exposing context information, much like how AST is used for semantic completions. The parser should be configurable (whether long options are permitted, whether chaining is permitted, etc.) and permissive (it should provide best-effort results when unknown options are encountered).
The same parser can also be used for parsing command line arguments in elvish scripts.

le:complete-getopt is now functional. A PoC completion script for GNU ls makes use of this facility.


Multiarch image

Build executables only for their target architecture.

@n1hility I tweaked the build steps to build only the native executable for each target architecture


Stack overflow due not validating ParticlesCollisionHeightfieldResolution

Godot version:
4.0.dev.custom_build. 3bb628d8f
OS
Ubuntu 20.04 - Ubuntu 3.36 X11
Issue description:
It is possible to set invalid value RS::ParticlesCollisionHeightfieldResolution p_resolution here
https://github.com/godotengine/godot/blob/5c2fe970b87f8e95306bad0f713567a150b1e442/servers/rendering/renderer_rd/renderer_storage_rd.cpp#L5121-L5129
which later may crash Godot
==246550==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffcaaa66d38 at pc 0x0000116b0d5b bp 0x7ffcaaa66b20 sp 0x7ffcaaa66b10
READ of size 4 at 0x7ffcaaa66d38 thread T0
    #0 0x116b0d5a in RendererStorageRD::particles_collision_get_heightfield_framebuffer(RID) const servers/rendering/renderer_rd/renderer_storage_rd.cpp:5027
    #1 0x114cfa5a in RendererSceneRenderRD::render_particle_collider_heightfield(RID, Transform const&, PagedArray<RendererSceneRender::GeometryInstance*> const&) servers/rendering/renderer_rd/renderer_scene_render_rd.cpp:8043
    #2 0x11dcba5a in RendererSceneCull::render_particle_colliders() servers/rendering/renderer_scene_cull.cpp:3176
    #3 0x11dce05b in RendererSceneCull::update() servers/rendering/renderer_scene_cull.cpp:3443
    #4 0x10d173a9 in RenderingServerDefault::_draw(bool, double) servers/rendering/rendering_server_default.cpp:106
    #5 0x10d22783 in RenderingServerDefault::draw(bool, double) servers/rendering/rendering_server_default.cpp:385
    #6 0x1fc5f5f in Main::iteration() main/main.cpp:2486
    #7 0x1e6c83e in OS_LinuxBSD::run() platform/linuxbsd/os_linuxbsd.cpp:261
    #8 0x1e5f040 in main platform/linuxbsd/godot_linuxbsd.cpp:58
    #9 0x7efdb4ad20b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    #10 0x1e5eb7d in _start (/usr/bin/godot4s+0x1e5eb7d)

Address 0x7ffcaaa66d38 is located in stack of thread T0 at offset 440 in frame
    #0 0x116aff7d in RendererStorageRD::particles_collision_get_heightfield_framebuffer(RID) const servers/rendering/renderer_rd/renderer_storage_rd.cpp:5014

  This frame has 12 object(s):
    [32, 40) '<unknown>'
    [64, 72) '<unknown>'
    [96, 104) '<unknown>'
    [128, 136) 'size' (line 5022)
    [160, 168) '<unknown>'
    [192, 200) '<unknown>'
    [224, 232) 'p_particles_collision' (line 5014)
    [256, 272) '<unknown>'
    [288, 304) 'fb_tex' (line 5040)
    [320, 340) '<unknown>'
    [384, 440) 'tf' (line 5031) <== Memory access at offset 440 overflows this variable
    [480, 504) 'resolutions' (line 5021)
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
      (longjmp and C++ exceptions *are* supported)

Hello, I am taking a university course which has assigned me to help contribute to an open source project. I would love to take a go at resolving this issue. Could I be assigned to this issue so that I can work on it? Thank you!

Hi, I thought of this solution(see comment in code below). Any opinions?
void RendererStorageRD::particles_collision_set_height_field_resolution(RID p_particles_collision, RS::ParticlesCollisionHeightfieldResolution p_resolution) {
	ParticlesCollision *particles_collision = particles_collision_owner.getornull(p_particles_collision);
	ERR_FAIL_COND(!particles_collision);

	if (particles_collision->heightfield_resolution == p_resolution) {
		return;
	}

        //Add a validation here to check that the variable is not set to resolution max, and that is set in a value inside the enum
	if(p_resolution >= RS::PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_256 && p_resolution < RS::PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_MAX){
		particles_collision->heightfield_resolution = p_resolution;
	}

	if (particles_collision->heightfield_texture.is_valid()) {
		RD::get_singleton()->free(particles_collision->heightfield_texture);
		particles_collision->heightfield_texture = RID();
	}
}

Looks that this changes may fix crash, but error should be explicit for users, so they will be able to see where error happens and fix broken code.
There is special macro ERR_FAIL to do it and since enum starts with 0(like most enums) and have MAX element(https://github.com/godotengine/godot/blob/edbc8488a5c1e090a5a98958ac3d368f13ba1492/servers/rendering_server.h#L692-L700), we can use ERR_FAIL_INDEX, which will exit function with error when will be an error.
So code should looks probably in this way
ERR_FAIL_INDEX(p_resolution, RS::PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_MAX);

This is how it look under the hood https://github.com/godotengine/godot/blob/9ca0d66a3b51084eb528a85e133d9037b21bdd09/core/error/error_macros.h#L124-L132

Right, makes sense! I'll do those changes and create the pull request then. Thanks :)


CMS config: prevent deletion / addition in certain areas

DESC

https://www.netlifycms.org/docs/configuration-options/#collections
e.g. performances: only two collection items (prevent deletion + addition)
static texts: prevent deletion + addition

implemented:
added creation / deletion property in configuration .yml where being of use.
(like in static texts)
added in doc: need to be decided in group discussion where the repsonsibility of moderators end


Allow any header for CORS

Bug fix: trigger a CORS error when trying to send the User-Agent header via the browser
@bidoubiwa thanks for the bug report!

checked with @gmourier and the whole @meilisearch/core-team: we would rather accept every request and use only the needed ones in the codebase

bors merge