Decide how to handle different units

It looks like HUI and Vesta are using different metrics for Turbidity and NNN.
We need to decide what unit we are using internally and make sure to convert metrics when needed.
We changed the units shown as part of https://github.com/aqualinkorg/aqualink-app/pull/966 since HUI is the only active table. If other groups are using water sampling metrics again, we will need to update/convert the data.

Vesta has not uploaded anything to Aqualink, as far as I know, so I think we should go for HUI's units for now.


Color drives when getting Full like Windows Explorer

What feature or improvement do you think would benefit Files?
It would be really useful to have the blue bars showing drive space be colored differently for drives that are getting full like the original windows explorer. Having them be red makes it easier to see quickly. If it is also possible to use your own custom color that would be even more awesome but the default red is also fine. Just something to make the full drives stand out. I have many drives as an editor and it is super useful.

vs

Requirements

This proposal will make it easier for users to quickly see at a glance what drives are getting full easily instead of just blue bars on all drives.

Files Version
<IP_ADDRESS>
Windows Version
Win 11 Pro 22621.2428
Comments
No response

I find this added feature very useful because I also sometimes have certain disks full, and it will allow me to identify them more quickly.

This would make the bar inconsistent with the color theme

Thank you for your feedback. The choice not to change the drive color is by design, this allows us to follow the system accent color and to keep things consistent throughout the app. However, you might have noticed the information icon that's displayed next to certain drives. This helps indicate when drives are getting full and provides a shortcut to the storage settings in Windows.


Build failure: cairo (dead link to CVE-2020-35492.patch)

Steps To Reproduce
Steps to reproduce the behavior:

nix-env -i cairo

(My nix is rooted at /opt/nix so it cannot use prebuilt binaries.)
Build log
Relevant excerpt:
building '/opt/nix/store/gb8r2pfzzyczc9im4qaxv91lnfdahj9n-CVE-2020-35492.patch.drv'...

trying https://github.com/freedesktop/cairo/commit/78266cc8c0f7a595cfe8f3b694bfb9bcc3700b38.patch
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     9    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404
error: cannot download CVE-2020-35492.patch from any mirror
error: builder for '/opt/nix/store/gb8r2pfzzyczc9im4qaxv91lnfdahj9n-CVE-2020-35492.patch.drv' failed with exit code 1

Additional context
The URL of CVE-2020-35492.patch is now dead. See
https://github.com/NixOS/nixpkgs/blob/8a7d5c039cacc83bd1926aaabc04d541e04a1460/pkgs/development/libraries/cairo/default.nix#L52
$ curl -Lf 'https://github.com/freedesktop/cairo/commit/78266cc8c0f7a595cfe8f3b694bfb9bcc3700b38.patch'
curl: (22) The requested URL returned error: 404

Notify maintainers
Added by @EggBaconAndSpam in #131949
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"aarch64-darwin"`
 - host os: `Darwin 21.6.0, macOS 12.6.5`
 - multi-user?: `no`
 - sandbox: `no`
 - version: `nix-env (Nix) 2.13.3`
find: ‘/nix/var/nix/profiles/per-user’: No such file or directory

#236764


Use File Based Registering

Codecov Report

Merging #14 (6f4b5b9) into master (5b3d55b) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master       #14   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           35        36    +1
  Lines          761       771   +10
  Branches       185       193    +8
=========================================
+ Hits           761       771   +10

Flag
Coverage Δ

root
100.00% <100.00%> (ø)

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

Impacted Files
Coverage Δ

packages/helpers/src/backup.ts
100.00% <100.00%> (ø)

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 5b3d55b...6f4b5b9. Read the comment docs.


Update/0.3.25

jax 0.3.25
upstream: https://github.com/google/jax/tree/jax-v0.3.25
jira: https://anaconda.atlassian.net/browse/PKG-772
setup.py: https://github.com/google/jax/blob/jax-v0.3.25/setup.py#L65
license: https://github.com/google/jax/blob/jax-v0.3.25/LICENSE
Changes

Update SHA and version
Update dependencies
Add to about section

Notes

This package is not currently present on defaults. This will be the first version available.

Linter check found the following problems:
The following problems have been found:
WARNING: /tmp/abs_d4ep4u0ecj/clone/recipe/meta.yaml:52: missing_doc_source_url: The recipe is missing a doc_source_url
WARNING: /tmp/abs_d4ep4u0ecj/clone/recipe/meta.yaml:52: missing_license_url: The recipe is missing a license_url
Warnings were found

Linter check found the following problems:
The following problems have been found:
WARNING: /tmp/abs_03mfr_4hye/clone/recipe/meta.yaml:52: missing_doc_source_url: The recipe is missing a doc_source_url
WARNING: /tmp/abs_03mfr_4hye/clone/recipe/meta.yaml:52: missing_license_url: The recipe is missing a license_url
Warnings were found


Update button always there

Downloaded APK a few days ago updated and the update button went away then yesterday it said I needed to update again and the button came back and now doesn't disappear does that mean I still have another update?

The update button is always available so you can download the latest version if you so choose.


[5.1] Fix morphTo eager loading

This is a 5.1 version of https://github.com/laravel/framework/pull/14190
Note: This shouldn't be merged into 5.2. Some GIT wizardry needed :)

Are we good to merge the integration test in?

Integration test is an exact copy of the one in 5.2 (the entire file). Just not sure how to merge that since it was in 5.2 first.


Update abstractions package

Pull Request Test Coverage Report for Build<PHONE_NUMBER>3
Details

10 of 10 (100.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.6%) to 96.25%

Totals

Change from base Build<PHONE_NUMBER>:
-0.6%

Covered Lines:
122

Relevant Lines:
124

💛  - Coveralls


Ball movement erratic and gets stuck

Ball movement can be erratic.  Ball gets stuck, or bounces forever in the same location.  Resetting the Ball Position doesn't always function as one might expect(instead of moving along the floor it bounces around).
I'm not sure the best way to solve this, but I wanted to verbalize the issue so we can address it.

On resets it will bounce in the z direction in the same spot
Shoot off in the wrong direction on collision

These can probably be solved by better level design:

Bouncing back and forth along the Y between walls
Gets stuck under the ramp

Pinball maybe solves the getting stuck amid bumpers by spacing them out and having them in diagonal or triangular formations also making the bumpers themselves fairly large.

Is this resolved by #18 ?

@Cheeseness This is what remains after what #18 fixes.

Ah, gotcha! For some reason I missed the timestamp and thought this was from yesterday >_<

https://drive.google.com/open?id=0B4DlVPd_1DaUZU85RXp3ZkZvR2s
https://drive.google.com/open?id=0B4DlVPd_1DaUalBobUVyQm1xbEE

So I moved some bumpers under the ramp in table2 just so the ball wouldn't get stuck.... just thought I would mention that.

#68 is relevant here.

Closed by #68


How can I set clipping planes to primitive object?

Thanks a lot!

There's a few code examples on Sandcastles showing this, here's one:
https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=3D Tiles Clipping Planes.html
Please keep general questions like this on the Cesium forum: https://groups.google.com/forum/#!forum/cesium-dev. Feel free to post a follow up question there!


⚠ Bofrost.be has degraded performance

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

HTTP code: 200
Response time: 1334 ms

Resolved: Bofrost.be performance has improved in 3c2c02b.


Flaky TaskTest.taskReclaimStats

Bug description
2024-03-31T05:14:07.8274446Z [ RUN      ] TaskTest.taskReclaimStats
2024-03-31T05:14:07.8276345Z E20240331 05:13:30.164795 60597 Exceptions.h:69] Line: ../../velox/exec/Task.cpp:1822, Function:terminate, Expression:  Aborted for external error, Source: RUNTIME, ErrorCode: INVALID_STATE
2024-03-31T05:14:07.8278053Z ../../velox/exec/tests/TaskTest.cpp:1671: Failure
2024-03-31T05:14:07.8278682Z Expected equality of these values:
2024-03-31T05:14:07.8279312Z   taskStats.pipelineStats[0].driverStats.size()
2024-03-31T05:14:07.8279927Z     Which is: 0
2024-03-31T05:14:07.8280271Z   1
2024-03-31T05:14:07.8280694Z [  FAILED  ] TaskTest.taskReclaimStats (16 ms)
2024-03-31T05:14:07.8281472Z [ RUN      ] TaskTest.driverEnqueAfterFailedAndPausedTask
The task pause stats is not recorded
System information
The flaky test is in velox_exec_infra_test target
Relevant logs
No response

I encountered this flaky in my PR. It seems we need to call Driver::updateStats() in Driver::closeByTask() as well. @xiaoxmeng @Yuhta


Copy RequestAborted

Copy RequestAborted when creating a new HttpContext in MultiplexingMiddleware
Fixes / New Feature #
Proposed Changes

Fixes issue where request is not properly cancelled if cancelled by the client

copy of #1367

Duplicate of #1367


@types/protractor no exported member

@Foxandxss just fyi: After I did npm install then npm start now getting
@types/protractor/index.d.ts:22:2   Module 'webdriver' has no exported member 'IButton'.
I think this is on the protractor, but not sure...
To reproduce the issue:

Remove node_modules
npm cache clean
npm install
npm start

there is at least 33 errors.

I am having similar issue. Eventhough the app works just fine, could someone tell why the issue occurs. i have no knowledge on protractor, and new to angular development.

This also happen via npm run build

Same build error observed via npm run build
attached the screen shot.

+1

Locking the types for selenium webdriver to version 2.44.26 solved the problem for me.
"@types/selenium-webdriver": "^2.44.26" > "@types/selenium-webdriver": "2.44.26",

hi @JohanDavidsson,
I still see the issue after updating the selenum-webderiver version as you suggested.

@shijumon Run "npm update" afterwards if you haven't done that. Otherwise it's still the same version as before.

@JohanDavidsson
I did the following steps,

deleted node_modules folder
npm install

Issue is reproducible while trying to build the project again.
I also tried  npm cache clean.

@shijumon My project is far from identical with this starter pack by now but I actually did a clean separate install for testing if I had changed something else concerning this. So with the new clean install it didn't work att first but when I applied my change it did work. Sorry but I can´t reproduce your error.

Same issue here.
Solved locking the types, works for now, thanks @JohanDavidsson

@JohanDavidsson
I tried a clean install of start pack today. Issue is fixed after applying your suggestion.
But my ongoing project, which is based on starter pack still showing the issue. I will investigate more what else is causing the issue.

I locked it for the time being. As soon as I update to protractor 4, it will come with its own typings.
Also I removed the types array at tsconfig, not needed anymore.


Error when updating centralLabel

I get this error in Chrome 71.0.3578.98 every time, when I change the value for the centralLabel in a background process. The values in the chart is changed correctly but the error message is written in the console output.
ERROR TypeError: Cannot read property 'currentValue' of undefined
at GaugeChartComponent.push../node_modules/angular-gauge-chart/fesm5/angular-gauge-chart.js.GaugeChartComponent.ngOnChanges (angular-gauge-chart.js:87)
at checkAndUpdateDirectiveInline (core.js:8941)
at checkAndUpdateNodeInline (core.js:10209)
at checkAndUpdateNode (core.js:10171)
at debugCheckAndUpdateNode (core.js:10804)
at debugCheckDirectivesFn (core.js:10764)
at Object.eval [as updateDirectives] (PageComponent.html:12)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:10756)
at checkAndUpdateView (core.js:10153)
at callViewAction (core.js:10394)

Fixed in #18


[dv] Update V2S checklist

Add an item - SIM_COVERAGE_REVIEWED
Also clean up some TODO
Once this is in, will make an PR to update each checklist in IPs
Signed-off-by: Weicai Yang<EMAIL_ADDRESS>

This looks fine, but (as @msfschaffner pointed out in the Google Doc) it should probably go through the TC. Can this wait until next Friday?

This looks fine, but (as @msfschaffner pointed out in the Google Doc) it should probably go through the TC. Can this wait until next Friday?

Make sense. Let's wait until that one is approved.

@weicaiyang can you open an issue for the RFC and add the label RFC:Proposal (and add the issue number to the Gdoc)?

@weicaiyang can you open an issue for the RFC and add the label RFC:Proposal (and add the issue number to the Gdoc)?

Done, created a issue https://github.com/lowRISC/opentitan/issues/11090 and added to the gdoc

Updated as this doc. PTAL

I had a quick look at the gdoc - LGTM


Comment out registry access in our targets

Tests that used Microsoft.Common.targets were failing after 0437195
because the common targets/props had some registry properties. For now,
I'm just commenting those parts of the files out in this branch, but this
will require a long-term fix so that we can restore the registry lookups
for full-framework-MSBuild-requiring projects.

We added an MSBuildRuntimeType built-in variable you could use to detect whether you're running on the .NET Core version of MSBuild, ie:
<PropertyGroup Condition="'$(MSBuildRuntimeType)'=='Core'">

Just switched to that, @dsplaisted. Sorry, never hit "go" on the comment I wrote saying I was going to try it.

LGTM. Finally a pass for Windows!


TableDrivenPropertyChecks doesn't run with singleton list

never prints anything
	property("huh") {
		forAll(Table("111")) { (s: String) => {
			println(s)
			s should equal ("000")
		}}
	}

prints and fails test
	property("huh") {
		forAll(Table("111", "000")) { (s: String) => {
			println(s)
			s should equal ("000")
		}}
	}

The first item given to a Table is the names of the columns. So in Table("111") you've named the lone column ("111") and given it no values. The forAll does do the right thing in that case, which is succeed. The universal quantifier is supposed to do that when there's no elements.
I think the second one does not fail the test, but succeeds as it should. Here you've named your column "111" again, but given one element, "000". So the assertion succeeds:
scala> forAll(Table("111", "000")) { (s: String) =>
|   println(s)
|   s should equal ("000")
| }
000
res0: org.scalatest.compatible.Assertion = Succeeded
You don't need the extra set of curly braces after the => by the way.
At least it does on a branch I'm working on which is where I tried it, but I don't think that should have changed. Please give that a try. I'll close this. We can reopen if there's really a bug.


Ubuntu: make localnet-stop doesn't clean up files

Bug Report
Setup
CometBFT version (use cometbft version or git rev-parse --verify HEAD if installed from source):
git rev-parse --verify HEAD
163f4ad7645eda99cb6ab50405d1754b1c97f4b6

cometbft version
0.39.0-dev+bd3acaa45

Have you tried the latest version: yes
docker-compose version
docker-compose version 1.29.2, build unknown
docker-py version: 5.0.3
CPython version: 3.10.12
OpenSSL version: OpenSSL 3.0.2 15 Mar 2022

Environment:
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.4 LTS
Release:	22.04
Codename:	jammy

What did you expect to happen?
After stopping the localnet, the node files are removed using the command:
make localnet-stop

How to reproduce it
Follow the instructions on here: https://docs.cometbft.com/v0.38/networks/docker-compose
Additional information
After following the instructions to start a localnet (successfully started)
make localnet-start

When you stop it with make localnet-stop, the containers are stopped, but the node directories are not clean up, there are Permission denied errors:
make localnet-stop
find: ‘/home/andy/go/src/github.com/cometbft/cometbft/build/node2/data/cs.wal’: Permission denied
find: ‘/home/andy/go/src/github.com/cometbft/cometbft/build/node0/data/cs.wal’: Permission denied
find: ‘/home/andy/go/src/github.com/cometbft/cometbft/build/node3/data/cs.wal’: Permission denied
find: ‘/home/andy/go/src/github.com/cometbft/cometbft/build/node1/data/cs.wal’: Permission denied
docker-compose down
Stopping node0 ... done
Stopping node1 ... done
Stopping node3 ... done
Stopping node2 ... done
Removing node0 ... done
Removing node1 ... done
Removing node3 ... done
Removing node2 ... done
Removing network cometbft_localnet

Probably because the node directories inside the build directory were created under the root account:
tree -u ./build/ -L 1
[andy    ]  ./build/
├── [andy    ]  cometbft
├── [root    ]  node0
├── [root    ]  node1
├── [root    ]  node2
└── [root    ]  node3

I can't replicate this on MacOS.

On my setup, not even the make localnet-start works:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
The binary cometbft cannot be found. Please add the binary to the shared folder. Please use the BINARY environment variable if the name of the binary is not 'cometbft' E.g.: -e BINARY=my_test_binary
make: *** [localnet-start] Error 1

To make it to work, I had to run first make build-linux, which therefore should be a requirement.

Even with that I receive:
Error response from daemon: Ports are not available: exposing port TCP <IP_ADDRESS>:26656 -> <IP_ADDRESS>:0: listen tcp <IP_ADDRESS>:26656: bind: address already in use

Is anyone actually using these Makefile targets?

Is anyone actually using these Makefile targets?

I still use them sometimes. But we can remove it in favor of e2e.


added a Pending state to the function output type

Added a PendingFunctionReturn type to allow functions to return the {completed: false} state. Unsure whether we should be allowing output along with completed: false in the future

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Daniel Hwang seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Add join codes

Sorry about the force-push. I made a few commits under the wrong git account—that's my fault.

We should have an error snackbar for when generating a joincode fails (after the retries).

We should have an error snackbar for when generating a joincode fails (after the retries).

Oh, totally, I'll go do that—thank you!

    }, err => {
      // blah blah snackbar
      this.joinCodeButtonDisabled$.next(false);
    });

Yeah, that's probably not what we want in production.

    }, err => {
      // blah blah snackbar
      this.joinCodeButtonDisabled$.next(false);
    });

Yeah, that's probably not what we want in production.

Haha I totally forgot we left that. oops!

Cool, should be all done now!

To test this, should I be able to use the Vercel deployment or must I run it locally?

@kklamberty Oh, funny—are you saying that a student couldn't join the session using the new code?


Has this been outdated by "AddMicrosoftAccount" in the auth pipeline?

I came upon this https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-2.1&tabs=aspnetcore2x
According to the docs it allows you to sign in with either work, personal or school microsoft account 🙂
I assume the "AzureAD" and custom Auth builder can be setup through this in a more general way or is there something I'm missing? 😉

As far as I see this works with personal Microsoft Accounts only and not with work or school accounts. After a short scan, my understanding is that this library was created to have an easy way to integrate Microsoft account login when using other social identity providers (Facebook, Google). So if you are using AzureAD login and no other identity provider, I'd stick with the normal MSAL implementation seen in this sample.

Thank you @mark-szabo, that's what I figured but I could not see through it 😉
Also your example here has served me very well for a couple of months, good stuff!

I'm glad I was able to help! :)


Fix F-Droid build

fdroidserver contains code to strip signing config blocks from build.gradle[.kts] files. That code also removed the assignment inside the let lambda. This in turn lead to Gradle failing the compilation of the Kotlin script because the argument releaseSigningConfig was unused 😞
Adding the "F-Droid hack" comment in this line prevents fdroidserver's regular expression from matching and removing this line.

This is really hacky and I'm suggesting to do a proper fix instead.

This is really hacky and I'm suggesting to do a proper fix instead.

Given that F-Droid's way to strip signing configs is kinda hacky itself, I'm not sure what a proper fix would look like. Do you have a suggestion?

Could you please write up rules when a review is necessary and when not. This would help a lot, thanks.

My reasoning was this: I wanted to do a release on F-Droid as soon as possible and this hack a) doesn't change the behavior for regular builds and b) fixes the issue with F-Droid (at least for now). I was pretty sure that asking for a review would have led to the discussion we're having now :smile: and the most likely outcome would have been to fix it using a hack now and properly fix it later.
The rule to derive from that is probably: "Don't merge changes without a review unless you have a good reason for it". Obviously what constitutes a "good reason" is quite subjective. If in doubt, shortening the rule to "Don't merge changes without a review" for oneself is a safe choice.


Percentage in styles causing Text components not to render

[X] Review the documentation: https://facebook.github.io/react-native
[X] Search for existing issues: https://github.com/facebook/react-native/issues
[X] Use the latest React Native release: https://github.com/facebook/react-native/releases

Environment
React Native Environment Info:
System:
OS: macOS High Sierra 10.13.6
CPU: x64 Intel(R) Core(TM) i7-4960HQ CPU @ 2.60GHz
Memory: 3.82 GB / 16.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 8.9.1 - /usr/local/bin/node
Yarn: 1.10.1 - /usr/local/bin/yarn
npm: 6.4.1 - /usr/local/bin/npm
SDKs:
iOS SDK:
Platforms: iOS 12.0, macOS 10.14, tvOS 12.0, watchOS 5.0
IDEs:
Android Studio: 3.1 AI-173.4670197
Xcode: 10.0/10A255 - /usr/bin/xcodebuild
npmPackages:
react: 16.6.0-alpha.8af6728 => 16.6.0-alpha.8af6728
react-native: 0.57.4 => 0.57.4
npmGlobalPackages:
react-native-cli: 0.1.10
react-native-git-upgrade: 0.2.7
Description
For some reason, one of the Views I wrote that has a padding value of a percentage, 10%, any Text components inside the View is not shown. For some reason, only TouchableOpacity is rendered here:

edit: When I removed the padding value from that style, everything rendered as expected.
Reproducible Demo
<View style={{ backgroundColor: '#32bfca', padding: '10%'  }}>
  <Text style={{ marginVertical: 14 }}>Embark on a 30-day journey called {journey.JourneyName} that includes:</Text>
    {journey.games.map(gameId => (
      <Text key={gameId} style={{ fontFamily: 'Saira-SemiBold', marginBottom: 4 }}>• {Helper.assessObject(props.games.data, 'gameId', gameId).name}</Text>
    ))}
  <Text style={{ textAlign: 'center', marginTop: 12, marginBottom: 34 }}>All in just 15 mins a day!</Text>
  <TouchableOpacity onPress={() => {
    const type = props.journeys.currentJourney ? props.journeys.currentJourney.type : journey.type;
    props.goToJourney(type, props.navigator);
  }}>
    <View style={{ alignSelf: 'center', alignItems: 'center', justifyContent: 'center', width: 222, height: 40, borderRadius: 18, backgroundColor: 'white' }}>
      <Text>{props.journeys.currentJourney !== null ? 'CONTINUE JOURNEY' : 'START JOURNEY'}</Text>
    </View>
  </TouchableOpacity>
</View>

Hmm... I tried to reproduce with that code but no luck: https://snack.expo.io/@jkcooper/rn-view-percent. Can you try reverting to v0.57.0 to see if its a regression?

@JKCooper2 you have the reason, i have similar problem with the styles nested and i did regression to the v0.57.0 and work. CC @dozel

Too bad we have to go back to 0.57, but thank you all for helping out!


Image Web/Desktop: Add support for http headers

Details

This PR refactors the Image component, aligning the web/desktop and native implementations for better consistency and maintainability.
Changes:

Introduced BaseImage Component:

File Location: src/components/Image/BaseImage.js
This new component acts as a bridge between the native and web implementations.
For the onLoad event, it ensures that both web and native platforms have the same signature.

Native Implementation Update:

File Location: src/components/Image/BaseImage.native.js
The native side now directly uses react-native-fast-image.

Unified Image Component for Web/Desktop and Native:

File Location: src/components/Image/index.js
The main Image component has been refactored to use the new BaseImage.
This change streamlines the authToken inclusion process in the image source, ensuring it works seamlessly across both platforms.

Removed Redundant Native Specific Implementation:

File Location: src/components/Image/index.native.js
With the new unified approach, the native-specific implementation has become redundant and has been removed.

Patch for react-native-web

File Location: patches/react-native-web+0.19.9+005+image-header-support.patch
Implemented a custom patch for the official react-native-web version 0.19.9, incorporating changes from PR #2442. This patch adds support for Image with HTTP headers, which was previously missing in our current version.

Fixed Issues

$ https://github.com/Expensify/App/issues/12603
PROPOSAL: N/A
Tests
Verify the Image component works on all platforms

Launch the application and navigate to a report containing multiple attachments.
Scroll through the report, ensuring that all attachments are loading successfully without any errors or delay.
Click on an attachment to open its preview.

Confirm that the preview displays the image correctly.
Ensure the download button is present and functional; downloading the image should work as expected.

Open your browser's developer tools or the equivalent network monitoring tool for the platform you are testing on.

Monitor the network requests for image attachments.
Verify that the requests contain the X-Chat-Attachment-Token header.

Test the image caching functionality:

Keep the application open for more than 2 hours.
Observe that the images remain loaded and are not re-fetched.
Logout from the application and then log back in.
Navigate to the same report with attachments.
Images that were previously loaded should display instantly, indicating they are loaded from the cache.
Confirm that the behavior remains consistent even if the X-Chat-Attachment-Token value changes.

Offline tests

Make sure you have viewed some reports with attachments while online.
Disconnect from the internet or turn on airplane mode to simulate an offline state.
Navigate to a report with attachments that were previously loaded.

Verify that these images still render correctly, even without an internet connection.

Navigate to a report with attachments that were NOT previously loaded.

The attachments should appear in an infinite loading state, indicating they cannot be fetched without an internet connection.

QA Steps

Open the staging environment of the application.
Navigate to various reports that contain different types of attachments.
Ensure that all attachments load successfully without any visual artifacts or errors.
Click on any attachment to initiate the attachment preview.

Confirm that the preview opens, displaying the attachment correctly.
Locate the download button and click on it. Verify that the image is downloaded to your device or computer as expected.

PR Author Checklist

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Screenshots/Videos

Web

https://github.com/Expensify/App/assets/12156624/41d4f183-565d-44d6-91a4-8f508fccbb56

Mobile Web - Chrome

Mobile Web - Safari

Desktop

https://github.com/Expensify/App/assets/12156624/389fe185-d302-4153-9c0a-a95714387893

iOS

Android

Holding on this as we try to get the upstream react-native-web PR merged: https://github.com/necolas/react-native-web/pull/2442

Image requests made with headers, then the same requests getting served from cache

Still served from browser cache after login out, closing browser window, then opening a new window and loging in

Sample request content

no longer uses query param for the token
has a X-Chat-Attachment-Token request header instead

I've cherry picked this commit in order to test the new Image functionality: 34d941d92742dda5e383a19b759ef60247e5376a
Once the code makes it to main I'll drop the commit and merge main to my branch and conflicts should be resolved
Details about the related PR here: https://github.com/Expensify/App/issues/12603#issuecomment-1361399408

Thanks for this @kidroca!

Once the code makes it to main

Note: There's a draft PR to re-implement the iOS / Android caching: https://github.com/Expensify/App/pull/13304 but we're not planning to move forward with that for another week (assuming the maintainer of https://github.com/DylanVann/react-native-fast-image/ doesn't respond sooner)
So if we get your react-native-web PR (Expensify fork) merged sooner, we may need to decide if we want to wait on that ^ draft PR or implement some of it in your PR to take advantage of your react-native-web changes

The changes about src/libs/replaceSourceOrigin.js are from a separate PR (https://github.com/Expensify/App/pull/14463) and are carried here only for compatibility
(I think the other PR would be merged first, and these changes would disappear from this PR)

@aimane-chnaif FYI the changes in the related fork PR are very close to being approved, so feel free to jump in and start testing this when you have a chance 👍 🙏

@kidroca ok it looks like @expensify/react-native-web v0.18.11 has been published and is ready for testing in this PR 👍

Cool, I'll switch over to the new version and post back shortly

I've switched the PR to the new react-native-web library
I confirm requests are now made with a X-Chat-Attachment-Token header
So far this is working fine in DEV, but I think I found a CORS issue that would happen if we publish this to staging/prod
When we're on DEV we have a web-proxy that satisfies CORS rules
When we're on PROD the origin is new.expensify.com but ROOT_API is www.expensify.com so when we make a fetch request the browser would make access control checks
This is what I'm trying:

make a production build for web: npm run build
start a live server with the build npx serve -s ./dist -p 3000
edit /etc/hosts and add an entry for <IP_ADDRESS>       new.expensify.com (make new.expensify.com resolve from my local server)
start an https nginx server that relays requests to port 3000
clear Safari history (so that it forgets new.expensify.com otherwise it would not resolve from localhost)
see CORS errors in console

So far this only works in Safari, but Safari lacks the full information in dev tools
Chrome is too clever - it does not allow to load new.expensify.com because the https certificate does not match
Is there a way to verify this would work before deploying to staging?

Posted more info here: https://github.com/Expensify/App/issues/14227#issuecomment-1406800255
The short version is that because of the request header and the different origins, browsers would make a preflight OPTIONS request, before the actual GET request. If the OPTIONS request is not resolved correctly browsers would not make the GET request
Sample preflight request
curl -X OPTIONS \
https://www.expensify.com/chat-attachments/4198796077944938521/w_6f21f50b3af2ee93c4e6e288ba5b986858166367.jpg.1024.jpg \
--dump-header -

Right now the response is 302 (not 200) and browsers aren't proceeding with the GET request

Resolved package conflicts

@aimane-chnaif are you able to review this soon? 😅

@kidroca would you please write testing steps in the OP and complete the author checklist?

@Beamanator
I think I'll have to make an update to the desktop/main.js code in order to handle CORS
We're getting the same problem described here: https://github.com/Expensify/App/pull/13036#issuecomment-1406805005
Electron / Chromium tries to make OPTIONS request before fetching an image with headers
Can someone confirm what's the plan regarding the CORS issue:
I think the plan is to configure the API server to allow CORS requests originating from new.expensify and staging.new.expensify
So I think to fix the Desktop issue I'll have to do the same
The other way around this would be to have a proxy (similar to how we have one for local development). I've shared it here: https://github.com/Expensify/App/issues/14227#issuecomment-1410089720, but I'm not sure what's decided in the end
So in order to continue I need to find out how we'll deal with the CORS issue

@aimane-chnaif
I'm not sure, but it seems you're intentionally altering code to make invalid header calls
When would headers be undefined or null and produce the error from the video?
If the token expires it should automatically update and this should cause images to reload (due to the heder change)
Also if an image is recently loaded it would resolve from cache even if the header expired (or changed)
It seems headers would be null if 'session.encryptedAuthToken' is missing (no value in Onyx)
But this should logout the user and they would be on the login screen where we don't try to load images using auth

I can't tell what causes the request to repeat, it might be the backend response or the way the Image renders internally (existing logic that makes requests without headers is unchanged) or the way you've setup code to remove headers from the request

We can simplify the code here:
    if (typeof source !== 'number' && isAuthTokenRequired) {
        const authToken = lodashGet(props, 'session.encryptedAuthToken', null);
        imageSource = {
            ...source,
            headers: authToken ? {
                [CONST.CHAT_ATTACHMENT_TOKEN_KEY]: authToken,
            } : null,
        };
    }

To:
    if (typeof source !== 'number' && isAuthTokenRequired) {
        const authToken = lodashGet(props, 'session.encryptedAuthToken');
        imageSource = {
            ...source,
            headers: {
                [CONST.CHAT_ATTACHMENT_TOKEN_KEY]: authToken,
            },
        };
    }

This should result in the "invalid token" flow, if it's ever the case that the token is missing in Onyx and at the same time we're trying to load an image that requires auth

@kidroca I don't think we should only discuss the CORS issue here, I think we need to bring this to slack to get more 👀 . Do you have a convo going about this in another issue / PR / slack thread already?

I think the CORS issue is supposed to be resolved here: https://github.com/Expensify/App/issues/14227#issuecomment-1410089720
I'm waiting for an update: https://github.com/Expensify/App/issues/14227#issuecomment-1416052221
For now we should make a note to not merge this PR until we've addressed the CORS issue
(I'll fix the merge conflicts now)

I've fixed the merge conflict, but I can't get the Desktop app to work, because Electron/Chromium makes a preflight request

Electron sees a request with a X-Chat-Attachment-Token header
Electron makes a Preflight (OPTIONS method) request to https://www.expensify.com/chat-attachments/... to ask the server whether it can make this request for the current origin and what headers are allowed (e.g. is the token header allowed)
Backend responds to the Preflight (OPTIONS) request with a redirect
Electron aborts the request because a redirect is invalid response for a preflight request

Here's a sample error that I'm getting in Electron
Access to fetch at 'https://www.expensify.com/chat-attachments/962115596/w_e989bfe450cb8e872f52dac2d082c391f35e2e0a.jpg.1024.jpg' from origin 'http://localhost:8081'
has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

I've tried to tweak desktop/main.js code to alter the origin/referer in order to bypass cors, the way we do for PROD, but it doesn't seem to work
https://github.com/Expensify/App/blob/d9a126dba03ea2956176e33ff1c6d869a2653d03/desktop/main.js#L298-L305

I've removed if (!__DEV__) but it doesn't seem to change the origin or the referrer of the actual request

I think to continue here we first need to deal with the CORS issue and the OPTIONS request
Decide how to setup the backend to work

setup CORS so that OPTIONS requests are addressed correctly
or make these non-CORS requests by making the requests against the host origin instead of API_ROOT

Thanks for all of your work on this @kidroca - looks like we'll continue this CORS conversation in https://github.com/Expensify/App/issues/14991 👍

@aimane-chnaif are you able to review this soon? If not, can we quickly assign another C+ to help so we can get this movin? :D
Also @kidroca conflicts, sorry

I have brought this PR up to date with main.
Additionally, I've created a patch via patch-package that incorporates the enhancements from this pull request in react-native-web.

These changes are planned for react-native-web version 0.20. However, since our project currently uses version 0.19.9, which does not yet include these updates, applying a patch was necessary to integrate the new features.
more details as why we have to use a patch are available on this and following comments

I conducted thorough retesting on both web and desktop platforms. I can confirm that images are now successfully loading through requests that include authentication in their headers, as per this PR goal.

Discovered and fixed an issue with Avatars opened for preview in the AttachmentModal

the isAuthTokenRequired was used on the AttachmentModal used on avatars, since avatars are no loaded from the same origin as app, making a request with our custom auth token is unexpected by the end point and resulted in CORS error
more details in this commit: 061ee6ea608bee0c33ff95c2aef381b93034e73a

Thanks @kidroca - I posted in that PR as well, I don't see / remember why we ever needed auth tokens to fetch avatars.
It sounds like your PR is ready to test again, right? 🙏

Amazing, thanks @kidroca !
@aimane-chnaif are you available to test? 🙏

@kidroca please merge main

Done

Pushed a commit to address the code style issues

can you please also pull main and retest? almost 1k commits behind

I've synced and re-tested - everything seems good, though there seems to be a Typescript error unrelated to my changes
src/libs/actions/Link.ts:103:29 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'AllRoutes | undefined'.

@kidroca please merge main again. It's fixed in #32510

✔ Done

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

🚀 Deployed to staging by https://github.com/Beamanator in version: 1.4.9-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/Beamanator in version: 1.4.9-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


context menu Left-click

Feature Description
Provide a brief summary of the feature you would like to see.
Use Case
Describe the use case(s) that the proposed feature would enable.

Anyway to achieve context-menu with left click.

sorry... created by mistake


Prevent PRs from "master" interfering with this repo's coverage

#951 changed a few lines that shouldn't have affected coverage at all, but Coveralls said it went up by 0.01%. After looking into it, I noticed that a few previous PR builds are also attribute to master, lowering its coverage. Those PRs were made from a master branch, i.e. the contributor didn't create a feature branch to make their changes in.
This PR (hopefuly) fixes that loophole by adding an "owner_name/repo_name" slug in front of all PR branches. All currently outstanding PRs (#842, #889, #914, #950) are still affected by this problem, so we should either rebase them after merging this one, or just ignore their coverage reports.
I also tried to fix a smaller problem where we apparently didn't pass Coveralls the PR number. No idea how it worked before. I'll have to wait for a report on this PR to see if it worked.
I intend to merge this pretty much immediately, so if you have any comments — please post them even if the PR is closed.

Coverage increased (+0.005%) to 56.299% when pulling 009448828ebfafd711cae52f10d0b863303e8f12 on bugfix/coverage into 5f1ed85aed15636695f7cfc61fbf93b63a9c5ee5 on master.

The slug thing doesn't show up in the Coveralls report. Don't know why; perhaps because I'm making all my PRs from this repository instead of my own fork?
Since nothing is broken by these changes, I'm going to risk it and just merge to see how this affects others PRs.


changed to different orderedset package for 3.10 on apple silicon

Codecov Report

Merging #176 (4a692ea) into master (e6077b8) will decrease coverage by 0.04%.
The diff coverage is 52.38%.

@@            Coverage Diff             @@
##           master     #176      +/-   ##
==========================================
- Coverage   90.56%   90.51%   -0.05%
==========================================
  Files         153      153
  Lines       34987    35016      +29
==========================================
+ Hits        31686    31695       +9
- Misses       3301     3321      +20

Impacted Files
Coverage Δ

setup.py
0.00% <ø> (ø)

src/keri/db/koming.py
94.35% <ø> (-0.04%)
:arrow_down:

src/keri/app/connecting.py
95.83% <50.00%> (-1.61%)
:arrow_down:

src/keri/app/indirecting.py
76.81% <50.00%> (-0.32%)
:arrow_down:

src/keri/app/storing.py
49.23% <50.00%> (-0.25%)
:arrow_down:

src/keri/core/eventing.py
78.48% <50.00%> (-0.07%)
:arrow_down:

src/keri/db/basing.py
93.02% <50.00%> (-0.30%)
:arrow_down:

src/keri/db/dbing.py
95.75% <50.00%> (-0.34%)
:arrow_down:

src/keri/end/ending.py
80.32% <50.00%> (-0.46%)
:arrow_down:

src/keri/vdr/eventing.py
80.31% <50.00%> (-0.19%)
:arrow_down:

... and 3 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 e6077b8...4a692ea. Read the comment docs.

All IIW updates have been merged so this is clear for a rebase and merge.


VsCode Extension - Dependency Details card needs minor improvements

VsCode Extension Dependency Details card shows serial number besides a dependency name. As the number increases to triple digit, it gets mixed with the dependency name as seen in the below figure.

Also, it will be nice to show all the dependency details in some alphabetical order for easy search in case the number of dependencies in a stack are higher.

@arajkumar
Can we close this issue as it is in the separate column in upcoming new release 0.0.14?

@dvandra Can you verify & close if it is not seen in the latest UI?

This issue has been resolved.
https://github.com/fabric8-analytics/fabric8-analytics-stack-report-ui/pull/168


Annotation line not drawn when label is hidden

Hello,
I'm working on inserting vertical annotation lines at on certain dates in a graph, and am having one small problem. My chart has a data point at every day, so the x-axis doesn't show a label for every day, otherwise it would be unreadable. I do pass in every day to the labels array, I believe chart.js handles the "trimming" of the x-axis themselves.
At the data points that the labels are hidden, I can't create annotation lines. Here is an example of two annotations I am trying to draw, and the corresponding chart.
"annotation": {
    "annotations": [
        {
          "type"        : "line",
          "mode"        : "vertical",
          "scaleID"     : "x-axis-0",
          "value"       : "3/21/19",
          "borderColor" : "red"
        },
        {
          "type"        : "line",
          "mode"        : "vertical",
          "scaleID"     : "x-axis-0",
          "value"       : "3/27/19",
          "borderColor" : "red"
        },
    ]
}

It is able to draw the annotation line for 3/21/19, seemingly because there is a label there. But there is no annotation line for 3/26/19, which is missing a label.
I was hoping that I am doing something wrong, instead of a limitation of the plugin, because it really does work wonderfully!
Thank you for your help,
Sean

Whoops, this ended up being a data problem on my end. I wasn't passing in the correct labels, my bad!
Everything works fine.


Problems restarting after installing WSL error: 0x8004032d (null)

Windows Version
Microsoft Windows [Version 10.0.22631.3296]
WSL Version
<IP_ADDRESS>
Are you using WSL 1 or WSL 2?

[X] WSL 2
[ ] WSL 1

Kernel Version
No response
Distro Version
Ubuntu 20.04.3
Other Software
No response
Repro Steps
open Ubuntu 22.04.3
Expected Behavior

Actual Behavior
have a laptop and I'm trying to enable WSL on it for development purposes. I installed Ubuntu and it returns the following error:
Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8004032d Error: 0x8004032d (null) Press any key to continue...
I searched the internet and saw that the problem must be because I don't have WSL active on Windows. I tried to activate it through "Windows Features", and after the "installation finished", I was asked to restart the computer. During the restart, the error messages appeared:
Feature customization for you. Update 96% complete. Keep the computer turned on.
Followed by the message:
Unable to complete resources. No need to worry: we are undoing the changes. Keep the computer turned on
And after a few seconds, the message appeared:
Something didn't go as planned. No need to worry: we are undoing the changes. Keep the computer turned on.
After the reset was complete, I tried to reopen Ubuntu WSL and received the same error. I went to check Windows Features and saw that WSL was still disabled. I repeated the same process several times, getting the same errors. I tried installing and activating WSL via command prompt as well, and got the same errors.
Diagnostic Logs
WslLogs-2024-04-06_03-06-58.zip

How do i reproduce the issue?

WslLogs-2024-04-06_03-49-22.zip

Whenever i do that it needs the laptop to reboot to add that feature. During the restart, the error messages appeared:
Feature customization for you. Update 96% complete. Keep the computer turned on.
Followed by the message:
Unable to complete resources. No need to worry: we are undoing the changes. Keep the computer turned on
And after a few seconds, the message appeared:
Something didn't go as planned. No need to worry: we are undoing the changes. Keep the computer turned on.
After the reset was complete, I tried to reopen Ubuntu WSL and received the same error. I went to check Windows Features and saw that WSL was still disabled

Thank you @khalifaa55. This error is unfortunately for WSL since WSL requires virtual machine platform.
Sadly we don't have deep knowledge on how to root cause optional component issues but I'll recommend:

Running sfc /scannow as administrator
Running chkdsk /f as administrator
Making sure that you have free disk space for the new feature

And try again. If that still doesn't work the only option that would be unfortunately be to re-install Windows.
Closing since the issue is external to WSL.

啊啊，我也遇到了相同的问题，请问解决了吗？然后用wsl --list --verbose显示没有下载发行版本（我下载了），（启用计算机功能）里面的（xxx子系统）像楼主说的一样反复96%，在重启时出问题...


Enhancement request : kvm of a remote host

Hi Daniel,
Good work, anyway, what could really be coolest for me is to have kvm on a remote server. That way we'll be able to docker-machine --kvm-ip :)
BR,
Vincent

Great suggestion!
The trickiest part will be refactoring the disk creation logic to upload the disk efficiently.  I haven't used that part of the libvirt API, but from a quick perusal of the API docs, it looks like it may be possible.
Not sure when I'll be able to look into this, but PRs are welcome! :-)

+1

+1!

+1

This looks like it'd be easier with a --libvirt-uri or something then you could use qemu+ssh://user@host or even xen://host/

+1.
Would the image not be generated on the remote machine as with normal remote creation in libvirt/KVM? You'd only need to upload the Docker image.

:+1:

Would the vagrant libvirt support provide a reference for how to implement this:
https://github.com/vagrant-libvirt/vagrant-libvirt

+1

+1

If it was possible to use a remote KVM machine that would also open the door for Windows users to use docker-machine-kvm, right?

working on this, PR almost ready

https://github.com/dhiltgen/docker-machine-kvm/pull/63


[Astro-SST] Since version 2.35.0, mdx cannot be processed

When sst was updated to 2.35.0, I noticed during parsing mdx, error was thrown, making build impossible
During dev, server crashes on loading file
Downgrading to 2.34.7 fixes this issue.
mdx integration is there working
Node version: 19.5.0
Stacktrace:
[astro:jsx] Transform failed with 1 error:
/home/szymon/Desktop/workspace/astro-frontend/src/content/integrationsParts/compressedAssets.mdx:2:5: ERROR: Expected ";" but found ":"
file: /home/szymon/Desktop/workspace/astro-frontend/src/content/integrationsParts/compressedAssets.mdx:2:5

Expected ";" but found ":"
1  |  ---
2  |  title: Compressed assets
   |       ^
3  |  adressedProblem: "Our webpage provider supports compressed resources and we need page to load as quickly as possible"
4  |  ---

 error   Expected ";" but found ":"
  File:
    /home/szymon/Desktop/workspace/astro-frontend/src/content/integrationsParts/compressedAssets.mdx:2:5
  Code:
    1 | ---
    > 2 | title: Compressed assets
        |     ^
      3 | adressedProblem: "Our webpage provider supports compressed resources and we need page to load as quickly as possible"
      4 | ---

Content:
---
title: Compressed assets
adressedProblem: "Our webpage provider supports compressed resources and we need page to load as quickly as possible"
---

import { Code } from "astro:components";

Briefing

  According to caniuse.com, majority of modern browser supports  gzip and  brotli-compressed resources, which
  are suitable for texts which scripts and pages are.

Let's assume webpage provider supports gzip and brotli (AWS Cloudfront, after enabling caching, supports it).

There is integration that'll compress data with gzip and brotli called "astro-compressor"

Installation

<Code
  code={`pnpm astro add astro-compressor`}
  inline
  lang="bash"
/>

Usage

After build, it'll compress css, html, js, svgs and texts files with brotli and gzip

Since images are mostly compressed, it's useless to compress them especially that integration astro-imagetools can make better work with images

Trivia

woff font files are compressed with brotli algorithm

Method of loading posts:
In frontmatter
const posts = await Astro.glob("../../content/integrationsParts/*.mdx");

in template

Example process

Scenario

            I'm creating page with astro with following requirements to meet:

            {
              posts.map(({ frontmatter }) => (

 {frontmatter.adressedProblem}

              ))
            }

Let's do it

          {
            posts.map(({ Content, frontmatter }) => (

                  {frontmatter?.title}

                <Content />

            ))
          }

I just saw a PR related to this get merged. Try latest?

Now, processing mdx works so I close it


FileNotFoundError: [Errno 2] No such file or directory: 'DATA\data_road/val3.txt'

Run: python evaluate.py to evaluate the pretrained model
2017-03-15 08:05:37,981 INFO Graph loaded succesfully. Starting evaluation.
2017-03-15 08:05:37,981 INFO Output Images will be written to: RUNS\KittiSeg_pretrained\analyse\images/
Traceback (most recent call last):
  File "evaluate.py", line 122, in <module>
    tf.app.run()
  File "D:\Python35\lib\site-packages\tensorflow\python\platform\app.py", line 44, in run
    _sys.exit(main(_sys.argv[:1] + flags_passthrough))
  File "evaluate.py", line 110, in main
    ana.do_analyze(logdir)
  File "incl\tensorvision\analyze.py", line 94, in do_analyze
    hypes, sess, image_pl, inf_out)
  File "RUNS\KittiSeg_pretrained\model_files\eval.py", line 61, in evaluate
    with open(data_file) as file:
FileNotFoundError: [Errno 2] No such file or directory: 'DATA\\data_road/val3.txt'

This is a Windows path error. You can the file val3.txt in the folder data.  And the script download_data should have copied val3.txt to the right location (line 133).
My guess would be, that you are able to fix this, by adjusting the paths in hypes/kittiseg.json to comply with Windows path notation (line 14).
Other then that, I would strongly recommend using Linux for deep learning ;).

Thank you
For windows users, please copy
$KITTISEG/DATA/val3.txt to $KITTISEG/DATA/data_road/val3.txt
$KITTISEG/DATA/testing.txt to $KITTISEG/DATA/data_road/testing.txt
Now both the demo and evaluate works fine ( Window 10 TensorFlow 1.0 cuda8.0 cudnn v5.1 python3.5)

[x] python demo.py --input_image data/demo/demo.png
[x] python evaluate.py


Typo "|**Max value **|"→"|Max value (bytes)|"

https://docs.microsoft.com/en-us/azure/mariadb/concepts-server-parameters

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

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

Looks good; thanks @hyoshioka0128.

Looks good; thanks @hyoshioka0128.


Support for markdown output in help messages

Users of CLIC can use this functionality to provide on-line versions of the help messages.

This is the suggested improvement of the idea I already tried in https://github.com/alire-project/alire.ada.dev/pull/23
This can be improved further, but I wanted first to receive feedback. One of my doubts is if API changes for CLIC will be accepted, provided that Alire is updated, or there are other users of the library, and it's better if the evolution is only through API extension.
I have the application to Alire also ready, but it is straightforward from the example. In any case, I will do an associated PR shortly.
I paste some examples of the output. It can be improved if more changes are made in how the help message is composed. I feel that the decoration of the message should be more semantic, so it could accommodate better Markdown and other future formats if needed (although markdown is already a good input format for many conversors).

clic_example 0.0.0
USAGE
clic_example [global options]  [command options] []
clic_example help [|]
ARGUMENTS
<command>    Command to execute
<arguments>  List of arguments for the command
GLOBAL OPTIONS
-h (--help)             Display general or command-specific help
-n (--non-interactive)  Assume default answers for all user prompts
--no-color              Disables colors in output
--no-tty                Disables control characters in output
--markdown              Enables output of markdown format for help
COMMANDS
help                  Shows help on the given command/topic
config                List, Get, Set or Unset configuration options
tty                   Show tty colors
user_input            Asks questions...
switches_and_args     Print all the sub-command switches and args
double_dash           Switch parsing before -- (double dash)
subsub                Subcommands in a subcommand
TOPICS
topic_example     Just an example of CLIC help topic
ALIASES
blink               tty --blink
error_alias         tty --test
alias_to_switch     --plop

SUMMARY
List, Get, Set or Unset configuration options
USAGE
clic_example config [options] [--list] [--show-origin] [key_regex] | --get  | --set   | --unset
OPTIONS
--list          List configuration options
--show-origin   Show origin of configuration values in --list
--get           Print value of a configuration option
--set           Set a configuration option
--unset         Unset a configuration option
--global        Set and Unset global configuration instead of the local one
--builtins-doc  Print Markdown list of built-in configuration options
GLOBAL OPTIONS
-h (--help)             Display general or command-specific help
-n (--non-interactive)  Assume default answers for all user prompts
--no-color              Disables colors in output
--no-tty                Disables control characters in output
--markdown              Enables output of markdown format for help
DESCRIPTION
Provides a command line interface to the Alire configuration option files.
Option names (keys) can use lowercase and uppercase alphanumeric characters
from the Latin alphabet. Underscores and dashes can also be used except as
first or last character. Dot '.' is used to specify sub-categories, e.g.
'user.name' or 'user.email'.
Option values can be integers, float, Boolean (true or false) or strings. The
type detection is automatic, e.g. 10 is integer, 10.1 is float, true is
Boolean. You can force a value to be set a string by using double-quotes,
e.g.
"10.1" or "true". Extra type checking is used for built-in options (see
below).
Built-in configuration options:

SUMMARY
Print all the sub-command switches and args
USAGE
clic_example switches_and_args [options] [switches] [args]
GLOBAL OPTIONS
-h (--help)             Display general or command-specific help
-n (--non-interactive)  Assume default answers for all user prompts
--no-color              Disables colors in output
--no-tty                Disables control characters in output
--markdown              Enables output of markdown format for help
DESCRIPTION

One difficult topic is alignment of the lists using AAA.Table_IO. Preserving the alighnment could only be done in markdown converting all the list to a code block, like the following, but then any other formatting inside the block is not interpreted. So I think the current approach is better.
In my opinion, the long option should also wrapped with the TTY_Description, but currently it is not.
GLOBAL OPTIONS
-h (--help)             Display general or command-specific help
-n (--non-interactive)  Assume default answers for all user prompts
--no-color              Disables colors in output
--no-tty                Disables control characters in output
--markdown              Enables output of markdown format for help

Superseded by #30


[Request/Suggestion] Option to scan for .xml other than strings.xml

I suggest the ability to search for any string to start translating from. What's your input on this?
This would allow for people who don't speak the strings.xml's language but speak another language (example : strings_es.xml) to translate the app.
Sent from my LGE LG-D852 using FastHub

Those should be recognized already. I don't look for strings.xml per se anymore, just any .xml with <resources> and <string ... in it. Are you having issues with this?

Yeah.. I just messed up, sorry about that.. I feel stupid, I made a mistake in the repository name..

@Lionirdeadman don't feel bad about it. It's all cool :)


Update the package-lock file on npm 7

I went on Gitpod for this repository and while instaling npm this warning pops up:

We should probably update the file to a new npm in order to remove this warning.

npm 7 or newer is not supported yet. #402 fixes this.

npm 7 or newer is not supported yet. #402 fixes this.

At least there was a fixup.


Feature Request: Custom health checks

Hi,
I would like to add/define custom health checks to VMs deployed with Bosh.
Example:

IF VM disk > 90% THEN recreate VM

@robtec one suggestion i've been giving to people is to take advantage of https://github.com/bosh-prometheus/. to implement rule above you would have prometheus cluster with node exporter colocated on all nodes. then you can use alert manager to set up an alert in actually almost same syntax as you imagined above.

Closing due to inactivity. If you want to continue the conversation, feel free to re-open


removed 'jargon' text in line 10 that goes against challenge document

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[ ] I have tested these changes either locally on my machine, or GitPod.

Closes #XXXXX

oops, so how would I go about fixing this little problem that I've now created?

https://github.com/freeCodeCamp/freeCodeCamp/pull/46842/files this one is perfect,
new branch, so you don't face this issue in the future, and no old history.
but to answer your question, you run these commands.

git checkout main
git fetch upstream
git reset --hard upstream/main
git push origin main --force
git diff upstream/main

but with creating branch you can run  in the main

git fetch upstream
git diff upstream/main

Thank you sboonny for being so patient with my progress,
I don't want to cause you guys too much trouble, there is so much to learn here.
I have re-opened the PR for the one you linked in the comment above.

No worry, all of us have been in your place.


Chore: Update for 3.x

Edit: Sorry, didn't notice https://github.com/reactphp/promise-stream/issues/40
PR likely to be useless, just cleaning up :-)

@bpolaszek Thanks for looking into this, but as you already wrote above, we have no plans for a ReactPHP PromiseStream v3 yet. I opened #40 last week in order to create a place to discuss the next steps for reactphp/promise-stream with ReactPHP v3, so I don't think there's currently much to do here. I'll close this for know, but we can revisit this topic if we're certain that PromiseStream will get a v3.
FYI: I also created similar tickets in reactphp/promise-timer, reactphp/datagram & reactphp/child-process discussing the same matter.
Let's first try to focus on the components that have their v3 roadmaps already released :+1:


Add tests for sf::Glsl types

Description
These tests are largely just the usual testing boilerplate but there are some meaningful tests towards the bottom with Vec4, Mat3, and Mat4.

Might be worthwhile to mark sf::priv::Vector4 as constexpr to match our 2D and 3D vectors.

Code coverage shows 100% coverage of Glsl.inl and Glsl.cpp ✅
I'll merge this if CI ever succeeds.

Hopefully https://github.com/SFML/SFML/pull/2932 fixes our codecov upload issues. This PR is on hold until we figure that out.


Value of the input should not changed if the state is unchanged

https://github.com/aprilmintacpineda/preact-test-app/tree/0.0.2
The project was created with preact create default test-app.
On the home page there's an input text there, type in something. The value is changed but the state is not changed.
<input className={style.input} type="text" value={this.state.newTodo} />

Preact (and other react like frameworks) do not have two-way-data-bindings frameworks like angular provide.
You have to synchronize the state yourself using events.
For more information see preact docs on forms: https://preactjs.com/guide/forms and reacts docs on forms: https://reactjs.org/docs/forms.html

The value in the text is updated even when the state does not update.
I don't handle the input vent as you can see above with the code, so I don't expect the text input's value to change, but If I type in the text input, the value of the text input is still updating. It shouldn't update because I'm not updating it.

Browser elements state changes because the user is typing something not because you are updating the state.
That 's the default behavior and preact won't change it.
You can prevent it yourself for example by attaching an event listener to the keydown event and calling preventDefault() on the passed event object.

Okay.


Replace app imprint

The imprint found in the app has not been updated yet and needs to be replaced.

What is an app's imprint?

The German word would be "Impressum"

@BjoernPetersen I don't think you meant to close this, did you?

No, I didn't. It seems the issue with the same ID from upstream has been closed by one of the upstream commits I just merged... Thanks for catching that!


Added catalan translation

Make sure to target the dev branch!

I forgot to chose dev branch... can it be changed?


Linux: Setup nightly builds

Acquire a linux build machine and write the config script to setup a build machine.
Enable nightly builds

Build definition has been created to build all the binaries needed for linux.


Calling test_null_function()() causes a crash

Describe the bug
Callingtest_null_function()() causes a crash.
To Reproduce
$vim --clean
:call test_null_function()()
" Vim: Caught deadly signal SEGV
" Vim: Finished.

Expected behavior
Vim does not crash.
Environment

Vim 8.2.2973
macOS Catalina (version 10.15.7)
iTerm2

Calling test_null_function() may cause a crash2

I cannot reproduce this crash at least on xubuntu-18.04.5 with vim-8.2.2976.

I have updated to version 8.2.2976, but I can still reproduce this crash.
Is the command you executed call test_null_function()()? There are two ()s.

@obcat wrote:

Is the command you executed call test_null_function()()? There are two ()s.

Ah right, this was my mistake. Sorry.
I can now reproduce it.
Valgrind shows access to a NULL pointer:
==9322== Memcheck, a memory error detector
==9322== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==9322== Using Valgrind-3.17.0.GIT and LibVEX; rerun with -h for copyright info
==9322== Command: ./vim --clean
==9322==
==9322== Invalid read of size 1
==9322==    at 0x4C38D92: strlen (vg_replace_strmem.c:469)
==9322==    by 0x533ABC: vim_strsave (misc2.c:1279)
==9322==    by 0x627C6E: call_func (userfunc.c:3108)
==9322==    by 0x627B58: get_func_tv (userfunc.c:1617)
==9322==    by 0x49D1F2: call_func_rettv (eval.c:3787)
==9322==    by 0x49D1F2: handle_subscript (eval.c:5862)
==9322==    by 0x62E2F4: ex_call (userfunc.c:4883)
==9322==    by 0x4BE37F: do_one_cmd (ex_docmd.c:2599)
==9322==    by 0x4BE37F: do_cmdline (ex_docmd.c:1001)
==9322==    by 0x5454C0: nv_colon (normal.c:3407)
==9322==    by 0x5410B1: normal_cmd (normal.c:1100)
==9322==    by 0x6B5FC8: main_loop (main.c:0)
==9322==    by 0x6B5A7F: vim_main2 (main.c:878)
==9322==    by 0x6B48E3: main (main.c:425)
==9322==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
...snip...

This fixes it:
diff --git a/src/userfunc.c b/src/userfunc.c
index 64e815d04..dd7f2ca28 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3099,6 +3099,9 @@ call_func(
     // even when call_func() returns FAIL.
     rettv->v_type = VAR_UNKNOWN;

+    if (funcname == NULL)
+       return ret;
+
     if (partial != NULL)
        fp = partial->pt_func;
     if (fp == NULL)

I'll create a PR with a test.

Thanks for the fix!
Ah, I didn't notice that :call test_null_partial()() also makes a crash 🙈


Handle modelName in Vue components ( form ) when plural of resource is not regular

Hello,
I came across to an issue when for instance you have a model name called "blog_category" so if in BlogCategoryForm.vue if you pass it as 'modelName': 'blog_category'  then in mixins/form . the modelName in routes names becomes "blog_categorys" when it should be "blog_categories". which is not a plural correct and therefore messes things up because routes names are not "blog_categorys" but 'blog_categories' .Not sire if I have clearly explained my issue but if you're not getting it let me know I will come with some more details .
For me this is a bug

Hey,
Yeah it's was a quick and dirty thing ^^, I just added a second dedicated prop "resourceRoute" for this (too tricky to get plural without big library on JS side)
Thx 4 feedback !

Lol .. I sorted it in the same way.
Thanks
Sergiu


Routes do not ignore pointers during Cupertino page transitions, breaking apps

Steps to Reproduce

Open any Flutter app, like Flutter Gallery
1.5. If on an Android device, change the platform to iOS
Navigate to a route, like the contacts demo
Initiate a backswipe, but don't release it
Hit the on screen back button (can be the one in the top bar, system back button also works on Android)
Complete the back swipe. Some Flutter versions cancel the back swipe, so just retry and complete the back swipe.

Both the Gallery and Contacts Demo routes disappear. The user is left with a black screen.
We can repro this with Flutter Gallery from Google Play, and with our internal app. Native iOS apps disable touches during a back swipe.
GIF:

b/140830897

I was able to repro this. You have to tap the back button with a second finger while holding the backswipe mid gesture, then complete the backswipe.

(also, you need to turn off gesture based system navigation if you are running Android 10, since it grabs the backswipe gesture needed to repro this)


Upgrade to Java 9

Java 9 will be released on 21st September is released!
Some changes that we can look into:

Convert method calls like Arrays#asList(...) to use List#of(...).  https://dzone.com/articles/java-9-factory-methods-to-create-immutable-collect
Look into using Runtime.Version. https://dzone.com/articles/process-api-and-version-in-java-9

@damithc Can we upgrade the code base to Java 9? This fixes #374 too.

I guess we can, as long as we do that quickly, before students start on level 4.

@yamidark take a look at what I've done so far for Java 9 on my branch.

It's too late for this sem but we have to make the project Java 9 compatible by next sem. I thought there is no hurry because Java is normally backward compatible but apparently AB4 runs into issues in Java 9 environments.

Ah I see; I thought students were still using Java 8. I'll look into it.

I thought students were still using Java 8.

CS2030 uses Java 9; that's why some students are already on Java 9 when they come to CS2103. In any case, we should ensure compatibility with the latest public version as soon as it is out (but we can wait a while before we make the latest version a  prerequisite)

@Zhiyuan-Amos

Convert method calls like Arrays#asList(...) to use List#of(...). https://dzone.com/articles/java-9-factory-methods-to-create-immutable-collect
Look into using Runtime.Version. https://dzone.com/articles/process-api-and-version-in-java-9

Can split this into separate issues? I guess they will be lower priority as well (and maybe first-timers?)
I think this issue, as it is, has been resolved and can be closed.

@pyokagan noted.
Closing this issue, for other updates that we can make to our codebase, see #871 and #872.


spike: dependency injection use

Libraries for working with dependency injection.
alice - Aditive dependency injection container for Golang.
di - A dependency injection container for go programming language.
dig - A reflection based dependency injection toolkit for Go.
dingo - A dependency injection toolkit for Go, based on Guice.
do - A dependency injection framework based on Generics.
fx - A dependency injection based application framework for Go (built on top of dig).
gocontainer - Simple Dependency Injection Container.
goioc/di - Spring-inspired Dependency Injection Container.
GoLobby/Container - GoLobby Container is a lightweight yet powerful IoC dependency injection container for the Go programming language.
google/wire - Automated Initialization in Go.
HnH/di - DI container library that is focused on clean API and flexibility.
kinit - Customizable dependency injection container with the global mode, cascade initialization and panic-safe finalization.
linker - A reflection based dependency injection and inversion of control library with components lifecycle support.
nject - A type safe, reflective framework for libraries, tests, http endpoints, and service startup.
wire - Strict Runtime Dependency Injection for Golang.

@dantasrafael It would be a good option to perform automatic dependency injection using reflection. Would you create your own injection container instead of using a third-party framework.

@dantasrafael I have an example of an automatic dependency injection container in this repository: https://github.com/sebastiaofortes/gonnect


Doc request: Expected renewal behavior for autocert

Why
The current documentation regarding built-in TLS certificate auto-renewals isn't completely clear on what to expect, it currently only states:

The certificate will automatically be renewed as needed.

Description
I think it would be helpful to document some further information on what intervals should be expected here, and what errors should be actioned/ignored. For example:

What actual interval might successful renewals happen at? One could guess it's 30 days since that seems to be the LetsEncrypt standard, but that's implicit and not stated in the doc.
How often are attempts at renewals done? Daily, weekly? What log lines can one look out for to verify that the challenge succeeded or failed and is actually working as expected?

Also, the meaning or interpretation of some common log lines would be helpful, like:

acme/autocert: missing server name (?)
acme/autocert: host "[redacted-external-ip]" not configured in HostWhitelist (?)

I understand that there are alternate solutions to cert renewals and that this could be set up separately ("Bring your own certificate"), but that's not the scope for this request.

Answers to the questions are very welcome too, it makes writing docs a bit easier.

What actual interval might successful renewals happen at? One could guess it's 30 days since that seems to be the LetsEncrypt standard, but that's implicit and not stated in the doc.

So headscale uses the autocert for the implementation for acme, in this case letsencrypt.
The corresponding code can be found in app.go:
https://github.com/juanfont/headscale/blob/c3257e2146304c52e588c6de2fd28bcc0f13b1ad/hscontrol/app.go#L846-L882
As you can see only basic configuration is passed to the library. This configuration doesn't give an any clue about the renewal time.
I guess as you know letsencrypt certificates are normally valid for 3 month (approx. 90 days). This lead us to take a look at the library itself:
https://cs.opensource.google/go/x/crypto/+/refs/tags/v0.19.0:acme/autocert/autocert.go;drc=4ba4fb4dd9e7f7ed9053fb45482e9a725c7e3fb4;l=134-139

If zero, they're renewed 30 days before expiration.

As we can see in the code snippet from headscale, we do not explicitly set RenewBefore therefore we will get the default value of 720 * time.Hour
Found here: https://cs.opensource.google/go/x/crypto/+/refs/tags/v0.19.0:acme/autocert/autocert.go;drc=4ba4fb4dd9e7f7ed9053fb45482e9a725c7e3fb4;l=1034
This should answer the first part.

acme/autocert: missing server name (?)
This can be found here

	if name == "" {
		return nil, errors.New("acme/autocert: missing server name")
	}

This mean no hostname for the certificate is set so probably tls_letsencrypt_hostname is not set in your config.

acme/autocert: host "[redacted-external-ip]" not configured in HostWhitelist

This answer can be found here. I just assume now that you got both error messages at the same time, which mean your tls_letsencrypt_hostname is not valid.

How often are attempts at renewals done? Daily, weekly?

This question is harder to answer because you have to take a even deeper dive into the code. The corresponding code can be found here.
	if err != nil {
		next = renewJitter / 2
		next += time.Duration(pseudoRand.int63n(int64(next)))
	}

As far as I understand it the renewJitter is set to 1h. On a failed renewal of the certificate this is split to 30mins + a random time duration between 0 and 30mins. So your min retry attempt is 30mins after the first or max 60min after the first. And probably after some time you will run into the rate limits of letsencrypt.

What log lines can one look out for to verify that the challenge succeeded or failed and is actually working as expected?

It seems like that there is no log written for successful renewal of the certificate. Rather the library only gives out errors on specific occasions like: acme/autocert: invalid new order status %q; order URL: %q"  or acme/autocert: invalid account key found in cache for more possible error message look at the autocert
So if the challenge worked it should have created the certificate and be serving it. The easiest way to check if the worked is to check the certificate in the browser or with openssl x509 -in <FQDN> -noout -text  in the cache folder of headscale.

I've created a draft PR here, feel free to have a look when you have the time: https://github.com/juanfont/headscale/pull/1733
Both feedback and direct commits are welcome, I'm under no illusions that it's perfect as-is.

@kradalby this has been merged, issue can be closed


If the interface is down/up, can the route be restored?

Expected Behavior

After interface up, route is restored
Current Behavior

The route is gone forever
Possible Solution

When cni writes routing, can it be persisted?
Steps to Reproduce (for bugs)

[root@master3 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet <IP_ADDRESS>  netmask <IP_ADDRESS>  broadcast <IP_ADDRESS>
inet6 fe80::862:45ff:feaf:e7d1  prefixlen 64  scopeid 0x20
ether 0a:62:45:af:e7:d1  txqueuelen 0  (Ethernet)
RX packets 10145076  bytes 582753536 (555.7 MiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 5299689  bytes 321105070 (306.2 MiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
inet <IP_ADDRESS>  netmask <IP_ADDRESS>
inet6 ::1  prefixlen 128  scopeid 0x10
loop  txqueuelen 1000  (Local Loopback)
RX packets 0  bytes 0 (0.0 B)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 0  bytes 0 (0.0 B)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@master3 ~]#
[root@master3 ~]# ip r
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS> dev eth0 scope link
[root@master3 ~]#
[root@master3 ~]# ifconfig eth0 down
[root@master3 ~]#
[root@master3 ~]# ip r
[root@master3 ~]#
[root@master3 ~]# ifconfig eth0 up
[root@master3 ~]#
[root@master3 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet <IP_ADDRESS>  netmask <IP_ADDRESS>  broadcast <IP_ADDRESS>
inet6 fe80::862:45ff:feaf:e7d1  prefixlen 64  scopeid 0x20
ether 0a:62:45:af:e7:d1  txqueuelen 0  (Ethernet)
RX packets 10145163  bytes 582758878 (555.7 MiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 5299734  bytes 321107916 (306.2 MiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
inet <IP_ADDRESS>  netmask <IP_ADDRESS>
inet6 ::1  prefixlen 128  scopeid 0x10
loop  txqueuelen 1000  (Local Loopback)
RX packets 0  bytes 0 (0.0 B)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 0  bytes 0 (0.0 B)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@master3 ~]#
[root@master3 ~]# ip r  # The route is lost after the interface down/up
[root@master3 ~]#
Context

Your Environment

Calico version
Orchestrator version (e.g. kubernetes, mesos, rkt):
Operating System and version:
Link to your project (optional):

Calico version 3.23

@gongzixiangyuan could you help us understand your use case better? what does your cluster look like? why would you need to to ifconfig eth0 down on a node? without some more context, I can only say that restarting calico-node should program routes, but I'm a little lost with just the info you provided, sorry

@gongzixiangyuan could you help us understand your use case better? what does your cluster look like? why would you need to to ifconfig eth0 down on a node? without some more context, I can only say that restarting calico-node should program routes, but I'm a little lost with just the info you provided, sorry

I executed ifconfig eth0 down in the container, not on the node. It can be regarded as a reliability test in a certain scenario.

@fasaxc can you please check this?

This is working as designed, we don't touch the routes inside the container after set-up.  Non-privileged containers can't change their routing or bring interfaces down/up like this; privileged containers can, but if a privileged container breaks its own routing then that's its own fault.  veths can't just "go down" on their own as far as I know, they're not real interfaces that have a wire that can be removed.
That said, it would be nice to maintain routes to prevent this kind of issue.  To do that, I think the best bet would be for calico CNI to implement the CNI CHECK verb to do the periodic check that the container is set up correctly.

This is working as designed, we don't touch the routes inside the container after set-up. Non-privileged containers can't change their routing or bring interfaces down/up like this; privileged containers can, but if a privileged container breaks its own routing then that's its own fault. veths can't just "go down" on their own as far as I know, they're not real interfaces that have a wire that can be removed.
That said, it would be nice to maintain routes to prevent this kind of issue. To do that, I think the best bet would be for calico CNI to implement the CNI CHECK verb to do the periodic check that the container is set up correctly.
FWIW, the overall design of systems like Kubernetes is that we don't aim to deal with every possible corner case such as this. Your app should have a health check configured, then, if something disrupts its networking (say a cosmic ray disabled the veth), the health check fails and the pod gets restarted and the problem is solved.

This is working as designed, we don't touch the routes inside the container after set-up. Non-privileged containers can't change their routing or bring interfaces down/up like this; privileged containers can, but if a privileged container breaks its own routing then that's its own fault. veths can't just "go down" on their own as far as I know, they're not real interfaces that have a wire that can be removed.
That said, it would be nice to maintain routes to prevent this kind of issue. To do that, I think the best bet would be for calico CNI to implement the CNI CHECK verb to do the periodic check that the container is set up correctly.
FWIW, the overall design of systems like Kubernetes is that we don't aim to deal with every possible corner case such as this. Your app should have a health check configured, then, if something disrupts its networking (say a cosmic ray disabled the veth), the health check fails and the pod gets restarted and the problem is solved.

Thank you very much for your reply !


Compiler errors gcc-12.2.0

Hi,
There's a couple of compile errors with gcc-12.2.0
First, an include seems to be missing:
cmake --build build
[ 14%] Building CXX object CMakeFiles/seq.dir/seq/internal/block_codec.cpp.o
[ 28%] Building CXX object CMakeFiles/seq.dir/seq/internal/lz4small.cpp.o
[ 42%] Building CXX object CMakeFiles/seq.dir/seq/internal/transpose.cpp.o
[ 57%] Building CXX object CMakeFiles/seq.dir/seq/internal/charconv.cpp.o
In file included from /home/bogdb/seq/seq/internal/../charconv.hpp:123,
                 from /home/bogdb/seq/seq/internal/charconv.cpp:26:
/home/bogdb/seq/seq/internal/../tiny_string.hpp: In function ‘size_t seq::detail::traits_string_find_first_of(const Char*, size_t, size_t, const Char*, size_t, size_t)’:
/home/bogdb/seq/seq/internal/../tiny_string.hpp:280:58: error: ‘CHAR_BIT’ was not declared in this scope
  280 |                                 unsigned char buff[256 / CHAR_BIT];

This is fixed by adding #include <climits> in tiny_string.hpp.
Another build error occurs if the user fails to provide appropriate compile flags:
[ 14%] Building CXX object CMakeFiles/seq.dir/seq/internal/block_codec.cpp.o
[ 28%] Building CXX object CMakeFiles/seq.dir/seq/internal/transpose.cpp.o
[ 42%] Building CXX object CMakeFiles/seq.dir/seq/internal/hash.cpp.o
[ 85%] Building CXX object CMakeFiles/seq.dir/seq/internal/lz4small.cpp.o
[ 85%] Building CXX object CMakeFiles/seq.dir/seq/internal/charconv.cpp.o
[ 85%] Building CXX object CMakeFiles/seq.dir/seq/internal/simd.cpp.o
/build/source/seq/internal/transpose.cpp: In function '__m128i seq::transpose_4x4(__m128i)':
/build/source/seq/internal/transpose.cpp:66:24: error: '_mm_shuffle_epi8' was not declared in this scope; did you mean '_mm_shuffle_epi32'?
   66 |                 return _mm_shuffle_epi8(m, _mm_setr_epi8(0, 4, 8, 12,
      |                        ^~~~~~~~~~~~~~~~
      |                        _mm_shuffle_epi32
/build/source/seq/internal/transpose.cpp: In function 'void seq::detail::extract2Bytes_sse3(const char*, seq::hse_vector (*)[16])':
/build/source/seq/internal/transpose.cpp:187:48: error: '_mm_shuffle_epi8' was not declared in this scope; did you mean '_mm_shuffle_epi32'?
  187 |                                 __m128i val0 = _mm_shuffle_epi8(v0, sh0);
      |                                                ^~~~~~~~~~~~~~~~
      |                                                _mm_shuffle_epi32
/build/source/seq/internal/transpose.cpp: In function 'void seq::detail::extract4Bytes_sse3(const char*, seq::hse_vector (*)[16])':
/build/source/seq/internal/transpose.cpp:214:48: error: '_mm_shuffle_epi8' was not declared in this scope; did you mean '_mm_shuffle_epi32'?
  214 |                                 __m128i val0 = _mm_shuffle_epi8(v0, sh0);
      |                                                ^~~~~~~~~~~~~~~~
      |                                                _mm_shuffle_epi32
make[2]: *** [CMakeFiles/seq.dir/build.make:104: CMakeFiles/seq.dir/seq/internal/transpose.cpp.o] Error 1

This is because the user has to provide at least -mssse3 (I think) as a compile flag.
Thanks for the amazing library!

Hi, thank you for the report!
I guess that  was included by other system headers on the tested platform, I added it explicitly in tiny_string.hpp as you suggested.
I use -march=native flag on gcc, so that's strange you get this compilation error (at least if SSE4 is available on your machine). To avoid such compilation error, the cvector related source files are now only compiled if SSE4_1 is defined. This works well with msvc and gcc 10.1.0 (msys2), let me know if you experience any issue with this.
Bests

Hi,
Thanks for the fix. There are still some compilation issues with certain flags:
[ 14%] Building CXX object CMakeFiles/seq.dir/seq/internal/block_codec.cpp.o
[ 28%] Building CXX object CMakeFiles/seq.dir/seq/internal/lz4small.cpp.o
In file included from /home/bogdb/src/seq/seq/internal/lz4small.cpp:37:
/home/bogdb/src/seq/seq/internal/lz4small.h: In static member function ‘static unsigned int seq::Lz4FlatEncoder::compress(void*, unsigned int, unsigned int, unsigned int, unsigned int)’:
/home/bogdb/src/seq/seq/internal/lz4small.h:69:73: error: ‘get_comp_buffer’ was not declared in this scope
   69 |                         int r = lz4_compress_fast((char*)in_out, (char*)get_comp_buffer(dst_size), block_size * BPP , dst_size, acceleration + 1, NULL);
      |                                                                         ^~~~~~~~~~~~~~~
/home/bogdb/src/seq/seq/internal/lz4small.h: In static member function ‘static unsigned int seq::Lz4TransposeEncoder::compress(void*, unsigned int, unsigned int, unsigned int, unsigned int)’:
/home/bogdb/src/seq/seq/internal/lz4small.h:97:65: error: ‘get_comp_buffer’ was not declared in this scope
   97 |                         transpose_generic((char*)in_out, (char*)get_comp_buffer(BPP * block_size ), block_size, BPP);
      |                                                                 ^~~~~~~~~~~~~~~
/home/bogdb/src/seq/seq/internal/lz4small.h:97:25: error: ‘transpose_generic’ was not declared in this scope
   97 |                         transpose_generic((char*)in_out, (char*)get_comp_buffer(BPP * block_size ), block_size, BPP);
      |                         ^~~~~~~~~~~~~~~~~
/home/bogdb/src/seq/seq/internal/lz4small.h: In static member function ‘static void seq::Lz4TransposeEncoder::restore(void*, void*, unsigned int, unsigned int’:
/home/bogdb/src/seq/seq/internal/lz4small.h:106:54: error: ‘get_comp_buffer’ was not declared in this scope
  106 |                         transpose_inv_generic((char*)get_comp_buffer(0), (char*)dst, block_size, BPP);
      |                                                      ^~~~~~~~~~~~~~~
/home/bogdb/src/seq/seq/internal/lz4small.h:106:25: error: ‘transpose_inv_generic’ was not declared in this scope
  106 |                         transpose_inv_generic((char*)get_comp_buffer(0), (char*)dst, block_size, BPP);
      |                         ^~~~~~~~~~~~~~~~~~~~~
/home/bogdb/src/seq/seq/internal/lz4small.h: In static member function ‘static unsigned int seq::Lz4TransposeEncoder::decompress(const void*, unsigned int, unsigned int, unsigned int, void*)’:
/home/bogdb/src/seq/seq/internal/lz4small.h:111:78: error: ‘get_comp_buffer’ was not declared in this scope
  111 |                         int r = lz4_decompress_fast((const char*)src, (char*)get_comp_buffer(BPP * block_size ), BPP * block_size );
      |                                                                              ^~~~~~~~~~~~~~~
/home/bogdb/src/seq/seq/internal/lz4small.h:114:25: error: ‘transpose_inv_generic’ was not declared in this scope
  114 |                         transpose_inv_generic((char*)get_comp_buffer(0), (char*)dst, block_size, BPP);
      |                         ^~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/seq.dir/build.make:90: CMakeFiles/seq.dir/seq/internal/lz4small.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/seq.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

This happens with -DCMAKE_CXX_FLAGS=x86-64 (using x86-64-v2 or x86-64-v3 is fine).
I don't really have a problem with this as I will use at least x86-64-v3 but probably the header check should be extended.

it builds now, thanks!


Script Power Query Data Source changes for different deployment targets (dev, test, prod)

I saw this note posted regarding using a script to set connection strings for Data Sources based on environment variables in the comments section of a blog post by @otykier (https://tabulareditor.com/2019/10/17/DevOps4.html)
You can access all properties of a Structured Data Source by casting it accordingly in your script:
var ds = Model.DataSources["MyDataLakeDS"] as StructuredDataSource;
ds.ConnectionString = ...;
ds.Account = ...;

Do you have a more complete example of how this could be used for both Power Query based SQL Data Sources and Power Query based Azure Blob Storage Account Data Sources?

You can take a look at the TOM documentation to see which properties the StructuredDataSource supports.
Unfortunately,  I don't have a more complete example, since I generally recommend using ProviderDataSources in tabular models. What would you like to achieve?

@otykier thanks for your help.  I will review the documentation.
The main goal for me is to be able to use deployment pipelines in DevOps to edit the connection details as necessary for Power Query data sources so that when developers check in code to the test branch that test server names and credentials are used and that production versions are used when code is merged to master and deployed to production.

For now, I'm working around this issue by running an XMLA script to update the credentials as part of an Azure DevOps Pipeline using this extension: https://github.com/liprec/vsts-release-aas

Im also looking for the script to replace the properties of structured data source( in our case its Azure Synapse DWH). and the model.bim file has no connection string property. It would be really great if you could share some eg. on replacing Credential and server/database property.

@chandra9787 if you inspect the model.bim file in a text editor, I guess it must have a reference to the Synapse DWH server/database names some where (maybe not as a connection string)? Could you show a snippet of the model.bim JSON code that contains the properties that you want to replace using a script?