[bug] Asset protocol crashes app with large video files

Describe the bug
When seeking into longer/larger videos using Tauri's asset protocol, the video will hang and eventually crash the app entirely.
After quite a bit of testing it seems that video size is what makes Tauri's asset protocol crash the app. My original thinking was that it crashed due to the length of the video, but after generating a really long but small sized countdown video it worked fine. Then through more testing I found that videos larger than ~3.5 GiB crashed the asset protocol when seeking roughly 80% into the video, so when about ~3 GiB needed to be loaded.
Also from my testing it seems that Tauri's asset protocol is seeking the entire video from start->seek point, which means that for longer/larger videos it takes a significant amount of time to seek into videos (from an SSD). The reason I think it's seeking the entire video is due to how long the seeking takes on longer videos compared to when using a HTTP server to stream the file (instant seeking, compared to multiple seconds sometimes with Tauri's asset protocol).
I doubt I'm running out of memory since my computer has 32GB of RAM to use. When looking at the task manger it crashes way before all my RAM is utilized. Tauri is using around 4GB of RAM before crashing.

I have tried using the streaming example, it gives the same result as the normal asset protocol.

When the app crashes nothing shows up in the Web DevTools or in the terminal running tauri dev. When running the app using RUST_BACKTRACE the app no longer crashes, instead the video tries to load endlessly but doesn't cause a crash anymore.

Found temporary solution
When I found this issue with the asset protocol I decided to embed Rocket and use it to stream the videos, sadly it had the same issue, forcing me to use a Rocket responder that handled video streaming correctly. After a while I found rocket_seek_stream made by rydz. This fixed my issue and videos could now stream properly, seeking the video now doesn't load from start->seek point, instead the video is only loaded from the seek point onwards. Even though I was able to workaround the issue, I would like for Tauri's asset protocol to get fixed since I'd much rather not include Rocket in my project.
When using rocket_seek_stream with Rocket the app no longer crashes and seeking inside large videos is instant.

Crash demo
https://user-images.githubusercontent.com/11979966/221927917-4f26e879-2950-49d2-b1f6-993d4882d15d.mp4
Reproduction
No response
Expected behavior
No response
Platform and versions
Environment

OS: Windows 10.0.22621 X64
Webview2: 110.0.1587.57
MSVC:

Visual Studio Build Tools 2022
Visual Studio Community 2019

Node.js: 18.14.2
npm: 9.3.1
pnpm: Not installed!
yarn: Not installed!
rustup: 1.24.3
rustc: 1.66.1
cargo: 1.66.1
Rust toolchain: stable-x86_64-pc-windows-msvc

Packages

@tauri-apps/cli [NPM]: 1.2.3
@tauri-apps/api [NPM]: Not installed!
tauri [RUST]: 1.2.4,
tauri-build [RUST]: 1.2.1,
tao [RUST]: 0.15.8,
wry [RUST]: 0.23.4,

App

build-type: bundle
CSP: default-src 'self'; style-src 'self' 'unsafe-inline'; font-src 'self' data: *; img-src 'self' asset: https://asset.localhost; media-src stream: https://stream.localhost asset: https://asset.localhost
distDir: ../src
devPath: ../src

App directory structure
├─ .git
├─ .vscode
├─ node_modules
├─ src
└─ src-tauri
Stack trace
No response
Additional context
I created a small repo that allows you to pick a local video to play (which crashes when seeking close to the end of larger files). I was not able to include a video file since the video file needs to be quite large (multiple GiBs), as such the project allows you to pick the video file to play. The video file should be 10GiB+ to reliably crash the app, in my testing ~3.5GiB is usually enough to crash it, but some larger video files still work (sometimes), as such 10GiB+ has always been a guaranteed crash for me.
The video used should be in a format supported by browsers (e.g. H264, VP9). H265 is not support since browsers do not have codec support for it.
In general the videos I've been trying to play that crash are Twitch VODs, since they are long and large (e.g. 8+ hours, 10GiB+).

Thanks for the detailed bug report, I will see what I can do

I think I figured out the problem, could you apply this patch to your repro and see if it fixes the issue for your?
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 6561691..c9007f5 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -17,6 +17,9 @@ tauri-build = { version = "1.2", features = [] }
 serde_json = "1.0"
 serde = { version = "1.0", features = ["derive"] }
 tauri = { version = "1.2", features = ["devtools", "dialog-open", "protocol-asset", "shell-open"] }
+percent-encoding = "2.2.0"
+url = "2.3.1"
+http-range-header = "0.3.0"

 [features]
 # by default Tauri runs in production mode
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index 3cd46c4..e1f2ec4 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -3,9 +3,99 @@
     windows_subsystem = "windows"
 )]

+use std::io::{Read, Seek, SeekFrom};
+
+use tauri::http::{
+    header::{ACCEPT_RANGES, CONTENT_LENGTH, CONTENT_RANGE, CONTENT_TYPE, RANGE},
+    status::StatusCode,
+    MimeType, ResponseBuilder,
+};
+
 fn main() {
     tauri::Builder::default()
         .invoke_handler(tauri::generate_handler![])
+        .register_uri_scheme_protocol("stream", move |_app, request| {
+            use url::{Position, Url};
+
+            let parsed_path = Url::parse(request.uri())?;
+            let filtered_path = &parsed_path[..Position::AfterPath];
+            let path = filtered_path
+                .strip_prefix("stream://localhost/")
+                // the `strip_prefix` only returns None when a request is made to `https://tauri.$P` on Windows
+                // where `$P` is not `localhost/*`
+                .unwrap_or("");
+            let path = percent_encoding::percent_decode(path.as_bytes())
+                .decode_utf8_lossy()
+                .to_string();
+
+            let mut file = std::fs::File::open(&path)?;
+
+            // get current position
+            let old_pos = file.seek(SeekFrom::Current(0))?;
+            // get file len
+            let file_len = file.seek(SeekFrom::End(0))?;
+            // reset position
+            file.seek(SeekFrom::Start(old_pos))?;
+
+            // get the mime type
+            let mut prelude: [u8; 256] = [0; 256];
+            file.read(&mut prelude)?;
+            let mime_type = MimeType::parse(&prelude, &path);
+
+            file.seek(SeekFrom::Start(0))?;
+
+            let mut resp = ResponseBuilder::new()
+                .header(ACCEPT_RANGES, "bytes")
+                .header(CONTENT_TYPE, mime_type);
+
+            let req_headers = request.headers();
+
+            let response = if let Some(x) = req_headers.get(RANGE) {
+                let ranges = http_range_header::parse_range_header(x.to_str()?)?;
+                let ranges: Vec<_> = ranges
+                    .validate(file_len)?
+                    .iter()
+                    .map(|r| (*r.start(), *r.end()))
+                    .collect();
+
+                // TODO: multipart
+                let &(start, mut end) = ranges.first().unwrap();
+
+                if start >= file_len || end >= file_len || end < start {
+                    return Ok(ResponseBuilder::new()
+                        .status(StatusCode::RANGE_NOT_SATISFIABLE)
+                        .header(CONTENT_RANGE, format!("bytes */{file_len}"))
+                        .body(vec![])?);
+                }
+
+                end = start + (end - start).min(file_len - start).min(1000 * 1024 - 1);
+
+                file.seek(SeekFrom::Start(start))?;
+
+                let mut stream: Box<dyn Read> = Box::new(file);
+                if end + 1 < file_len {
+                    stream = Box::new(stream.take(end + 1 - start));
+                }
+
+                let mut buf = Vec::new();
+                stream.read_to_end(&mut buf)?;
+
+                resp = resp.header(
+                    CONTENT_RANGE,
+                    format!("bytes {}-{}/{}", start, end, file_len),
+                );
+                resp = resp.header(CONTENT_LENGTH, end + 1 - start);
+                resp = resp.status(StatusCode::PARTIAL_CONTENT);
+                resp.body(buf)
+            } else {
+                resp = resp.header(CONTENT_LENGTH, file_len);
+                let mut buf = vec![file_len as u8; 0];
+                file.read_to_end(&mut buf)?;
+                resp.body(buf)
+            };
+
+            response
+        })
         .run(tauri::generate_context!())
         .expect("error while running tauri application");
 }
diff --git a/src/main.js b/src/main.js
index 4064b3a..93bf564 100644
--- a/src/main.js
+++ b/src/main.js
@@ -22,7 +22,7 @@ window.addEventListener("DOMContentLoaded", () => {
         })
           .then((selected) => {
             if (typeof selected === "string") {
-              const assetPath = convertFileSrc(selected);
+              const assetPath = convertFileSrc(selected, "stream");

               let videoElement = document.createElement("video");
               videoElement.setAttribute("controls", "");

That works perfectly @amrbashir, thank you. The initial load of the video is still a bit slower compared to using Rocket, but the seek times are now instant and long/large videos no longer hang and crash the app.
One concern I do have have though is the lack of an Access-Control-Allow-Origin header. This is a header that is pretty much required on video elements if you want to load subtitles (since crossorigin="anonymous" is used on video elements to fix sameorigin issue), but it's not included in the asset protocol nor in this stream protocol, I did add it manually to the code you provided to see if it worked like expected and it did. So would it be possible to get an Access-Control-Allow-Origin header added somehow as well?
Other than the small header concern, what would be the timeline for getting this fix added to Tauri?

The initial load of the video is still a bit slower compared to using Rocket

I will see what I can do about that but no promises on this one.

One concern I do have have though is the lack of an Access-Control-Allow-Origin header. This is a header that is pretty much required on video elements if you want to load subtitles (since crossorigin="anonymous" is used on video elements to fix sameorigin issue), but it's not included in the asset protocol nor in this stream protocol, I did add it manually to the code you provided to see if it worked like expected and it did. So would it be possible to get an Access-Control-Allow-Origin header added somehow as well?

In tauri's asset protocol, we set the Access-Control-Allow-Origin header to the window origin, I just left it out of the example above.

Other than the small header concern, what would be the timeline for getting this fix added to Tauri?

Hard to say tbh, tauri 1.3 is already in internal auditing so It may wait for 1.4 or 1.3.1. I will make the PR today but it is not up to me to include it in 1.3 or not, cc @chippers

I will see what I can do about that but no promises on this one.

The initial load time isn't that extreme that it's a big issue, so if it cannot be improved, no worries. For context initial load time for a 7 hours long video file (18.4GB) is ~4 seconds using the provided solution, compared to ~2 seconds using Rocket with rocket_seek_stream.

In tauri's asset protocol, we set the Access-Control-Allow-Origin header to the window origin, I just left it out of the example above.

Ahh alright, great 🙂

Hard to say tbh, tauri 1.3 is already in internal auditing so It may wait for 1.4 or 1.3.1. I will make the PR today but it is not up to me to include it in 1.3 or not, cc @chippers

Okay, well at least I have a temporary solution that allows me to finally ditch Rocket, so thank you again ❤

PR is up now https://github.com/tauri-apps/tauri/pull/6390

The initial load time isn't that extreme that it's a big issue, so if it cannot be improved, no worries. For context initial load time for a 7 hours long video file (18.4GB) is ~4 seconds using the provided solution, compared to ~2 seconds using Rocket with rocket_seek_stream.

I don't know but I have a 6gb- 3hours long file and the load is almost instant to me, I don't have a bigger file to test with so I will just ignore this issue for now until I have something to test with or others report the same.

Okay, well at least I have a temporary solution that allows me to finally ditch Rocket, so thank you again ❤

I updated the diff above to include the multipart implementation, should be fine to use until the fix is released to crates.io

I noticed an issue with the updated version, for subtitle files a bunch of NUL characters are added to the beginning of the streamed file and causes it to stop working.
Old version:

Update version:

Are the subtitle files embedded in the video, or separate? could you give me an example of the request headers?

Are the subtitle files embedded in the video, or separate?

They are stored as .vtt files separately from the video and are streamed using the <track> HTML element.

could you give me the request details?

No quite sure what all the details you want are. But here are the request headers:

I tried reproducing the issue but got CORS issue. I am heading out for today, if you can update the repro to include a subtitle file usage, I will check it out tomorrow.

Alright I'll create a branch in the repo for the subtitle issue.

Here is the new repo branch: tauri-asset-bug > subtitle-issue

Hard to say tbh, tauri 1.3 is already in internal auditing so It may wait for 1.4 or 1.3.1. I will make the PR today but it is not up to me to include it in 1.3 or not, cc @chippers

1.3 will not be having any more changes except for small hotfixes. That doesn't mean that 1.3.1 can't be far behind the 1.3 release.

@mauritzn sorry for the delay, I updated the implementation above to fix the subtitle issue. The problem I was pre-allocating the buffer and filling it with 0 -> vec![0; len] when instead I should just call Vec::with_capacity(len)

@amrbashir thank you very much that seems to have fixed it ❤

@yannkost were you testing using the above snippet, or the PR linked to this issue? Could you make a minimal repro so I can test it?

try adding the following in Cargo.toml
[patch.crates-io]
tauri = { git = "https://github.com/tauri-apps/tauri", branch = "fix/asset-protocol-streaming" }

then run cargo update inside src-tauri and test
if still doesn't work, please make a minimal repro

Sadly the "fix/asset-protocol-streaming" branch has been merged into "dev" already. But when I try to do it with the "dev" branch, I get a direct crash with following error message:
  thread 'main' panicked at 'Cannot start a runtime from within a runtime. This happens because a function (like `block_on`) attempted to block the current thread while the thread is being used to drive asynchronous tasks.', C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\scheduler\multi_thread\mod.rs:65:25
stack backtrace:
   0: std::panicking::begin_panic_handler
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library\std\src\panicking.rs:584
   1: core::panicking::panic_fmt
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library\core\src\panicking.rs:142
   2: tokio::runtime::context::enter_runtime
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\context.rs:183
   3: tokio::runtime::scheduler::multi_thread::MultiThread::block_on<core::future::from_generator::GenFuture<enum$<tauri::asset_protocol::asset_protocol_handler::async_block_env$0> > >
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\scheduler\multi_thread\mod.rs:65
   4: tokio::runtime::runtime::Runtime::block_on<core::future::from_generator::GenFuture<enum$<tauri::asset_protocol::asset_protocol_handler::async_block_env$0> > >
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\runtime.rs:304
   5: enum$<tauri::async_runtime::Runtime, Tokio>::block_on<core::future::from_generator::GenFuture<enum$<tauri::asset_protocol::asset_protocol_handler::async_block_env$0> > >
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri\src\async_runtime.rs:126
   6: tauri::async_runtime::GlobalRuntime::block_on<core::future::from_generator::GenFuture<enum$<tauri::asset_protocol::asset_protocol_handler::async_block_env$0> > >
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri\src\async_runtime.rs:71
   7: tauri::async_runtime::block_on<core::future::from_generator::GenFuture<enum$<tauri::asset_protocol::asset_protocol_handler::async_block_env$0> > >
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri\src\async_runtime.rs:264
   8: tauri::asset_protocol::asset_protocol_handler
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri\src\asset_protocol.rs:49
   9: tauri::manager::impl$2::prepare_pending_window::closure$1<tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> > >
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri\src\manager.rs:503
  10: tauri_runtime::window::impl$2::register_uri_scheme_protocol::closure$0<enum$<tauri::EventLoopMessage>,tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> >,str,tauri::manager::impl$2::prepare_pending_window::closure_env$1<tauri_runtime_wry::Wry<enum$<ta
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri-runtime\src\window.rs:339
  11: alloc::boxed::impl$46::call<tuple$<ref$<tauri_runtime::http::request::Request> >,dyn$<core::ops::function::Fn<tuple$<ref$<tauri_runtime::http::request::Request> >,assoc$<Output,enum$<core::result::Result<tauri_runtime::http::response::Response,alloc::boxe
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\alloc\src\boxed.rs:1949
  12: tauri_runtime_wry::create_webview::closure$2<enum$<tauri::EventLoopMessage> >
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri-runtime-wry\src\lib.rs:3135
  13: alloc::boxed::impl$46::call<tuple$<ref$<http::request::Request<alloc::vec::Vec<u8,alloc::alloc::Global> > > >,dyn$<core::ops::function::Fn<tuple$<ref$<http::request::Request<alloc::vec::Vec<u8,alloc::alloc::Global> > > >,assoc$<Output,enum$<core::result::
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\alloc\src\boxed.rs:1949
  14: wry::webview::webview2::impl$1::init_webview::closure$6
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\wry-0.24.3\src\webview\webview2\mod.rs:587
  15: alloc::boxed::impl$45::call_mut<tuple$<enum$<core::option::Option<webview2_com_sys::Microsoft::Web::WebView2::Win32::ICoreWebView2>, 1,<PHONE_NUMBER>3709551615, Some>,enum$<core::option::Option<webview2_com_sys::Microsoft::Web::WebView2::Win32::ICoreWebView2
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\alloc\src\boxed.rs:1942
  16: webview2_com::callback::impl$329::Invoke
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\webview2-com-0.19.1\src\callback.rs:302
  17: webview2_com_sys::Microsoft::Web::WebView2::Win32::impl$2513::new::Invoke<webview2_com::callback::WebResourceRequestedEventHandler_Impl,webview2_com::callback::WebResourceRequestedEventHandler,-2>
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\webview2-com-sys-0.19.0\src\Microsoft\Web\WebView2\Win32\mod.rs:65767
  18: CreateWebViewEnvironmentWithOptionsInternal
  19: CreateWebViewEnvironmentWithOptionsInternal
  20: CreateWebViewEnvironmentWithOptionsInternal
  21: CreateWebViewEnvironmentWithOptionsInternal
  22: CreateWebViewEnvironmentWithOptionsInternal
  23: CreateWebViewEnvironmentWithOptionsInternal
  24: CreateWebViewEnvironmentWithOptionsInternal
  25: CreateWebViewEnvironmentWithOptionsInternal
  26: GetHandleVerifier
  27: telemetry_client::IDataFieldVisitor::IDataFieldVisitor
  28: DllCanUnloadNow
  29: telemetry_client::IDataFieldVisitor::IDataFieldVisitor
  30: DllCanUnloadNow
  31: GetHandleVerifier
  32: GetHandleVerifier
  33: GetHandleVerifier
  34: GetHandleVerifier
  35: GetHandleVerifier
  36: DllCanUnloadNow
  37: DllCanUnloadNow
  38: GetHandleVerifier
  39: DllCanUnloadNow
  40: DllCanUnloadNow
  41: DllCanUnloadNow
  42: GetHandleVerifier
  43: GetHandleVerifier
  44: DllCanUnloadNow
  45: DispatchMessageW
  46: DispatchMessageW
  47: windows::Windows::Win32::UI::WindowsAndMessaging::DispatchMessageW
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\windows-0.39.0\src\Windows\Win32\UI\WindowsAndMessaging\mod.rs:2671
  48: tao::platform_impl::platform::event_loop::EventLoop<enum$<tauri_runtime_wry::Message<enum$<tauri::EventLoopMessage> > > >::run_return<enum$<tauri_runtime_wry::Message<enum$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$47::run::closure_env$0<enum$<
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tao-0.16.2\src\platform_impl\windows\event_loop.rs:264
  49: tao::platform_impl::platform::event_loop::EventLoop<enum$<tauri_runtime_wry::Message<enum$<tauri::EventLoopMessage> > > >::run<enum$<tauri_runtime_wry::Message<enum$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$47::run::closure_env$0<enum$<tauri::
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tao-0.16.2\src\platform_impl\windows\event_loop.rs:218
  50: tao::event_loop::EventLoop<enum$<tauri_runtime_wry::Message<enum$<tauri::EventLoopMessage> > > >::run<enum$<tauri_runtime_wry::Message<enum$<tauri::EventLoopMessage> > >,tauri_runtime_wry::impl$47::run::closure_env$0<enum$<tauri::EventLoopMessage>,tauri::
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tao-0.16.2\src\event_loop.rs:179
  51: tauri_runtime_wry::impl$47::run<enum$<tauri::EventLoopMessage>,tauri::app::impl$18::run::closure_env$0<tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> >,tauri::app::impl$19::run::closure_env$0<tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> >,
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri-runtime-wry\src\lib.rs:2190
  52: tauri::app::App<tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> > >::run<tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> >,tauri::app::impl$19::run::closure_env$0<tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> >,tauri_utils::assets::Emb
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri\src\app.rs:875
  53: tauri::app::Builder<tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> > >::run<tauri_runtime_wry::Wry<enum$<tauri::EventLoopMessage> >,tauri_utils::assets::EmbeddedAssets>
             at C:\Users\User\.cargo\git\checkouts\tauri-9dcc2f9152472c1a\359058c\core\tauri\src\app.rs:1725
  54: app::main::async_block$0
             at .\src\main.rs:50
  55: core::future::from_generator::impl$1::poll<enum$<app::main::async_block_env$0> >
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\core\src\future\mod.rs:91
  56: tokio::runtime::park::impl$4::block_on::closure$0<core::future::from_generator::GenFuture<enum$<app::main::async_block_env$0> > >
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\park.rs:283
  57: tokio::runtime::coop::with_budget
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\coop.rs:107
  58: tokio::runtime::coop::budget
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\coop.rs:73
  59: tokio::runtime::park::CachedParkThread::block_on<core::future::from_generator::GenFuture<enum$<app::main::async_block_env$0> > >
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\park.rs:283
  60: tokio::runtime::context::BlockingRegionGuard::block_on<core::future::from_generator::GenFuture<enum$<app::main::async_block_env$0> > >
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\context.rs:315
  61: tokio::runtime::scheduler::multi_thread::MultiThread::block_on<core::future::from_generator::GenFuture<enum$<app::main::async_block_env$0> > >
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\scheduler\multi_thread\mod.rs:66
  62: tokio::runtime::runtime::Runtime::block_on<core::future::from_generator::GenFuture<enum$<app::main::async_block_env$0> > >
             at C:\Users\User\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-1.28.1\src\runtime\runtime.rs:304
  63: app::main
             at .\src\main.rs:50
  64: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
             at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52\library\core\src\ops\function.rs:248
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
[0523/220728.242:ERROR:window_impl.cc(119)] Failed to unregister class Chrome_WidgetWin_0. Error = 0

Does anybody know if there have been other changes in dev that could have provoked this?
I'm not really good at rust, as I'm still learning the basics. What I can say is that my tauri app launches the tokio runtime. There have been no problems with tokio before the update to the latest dev branch.
#[tokio::main]
async fn main() {
...
}

@yannkost thanks for the heads up, I opened #7047 to fix this

From my limited testing the current dev branch (#2317913b) works perfectly for video streaming, captions work as expected as well and seeking is instant. I will be doing a bit more extensive testing over the coming days and if I detect any issues I'll be sure to report them.
Will the current dev branch be v1.4? If so, when could we be expecting a release (roughly)?

Works like a charm now!


I'd like to add an index.html to this project so that GitHub Pages can be enabled

Please add the permission for me to create branches and also enable GitHub Pages

Gitbook link is now fixed, will work on migrating to GH pages separately. You already have permission to create branches if you wanted to work on it


[WIP] Add set up script for local development

Description / What does this PR do?
It allows for easier development by adding a script to set up the dev db.
Related Issue / Story / Ticket
Changelog
Checklist

[ ] Tests
[ ] Stories
[ ] Docs

Remaining Todos

[ ] Update README with this step
[ ] Add a way to prime local db with development data??

@egdelwonk WDYT?

Looks good! Do you mind dropping setup.js into /scripts? Also it might be useful to write some seeds too, but we can add that into another PR.  https://knexjs.org/#Seeds-CLI

I'm looking into the seeds stuff. It looks like this doesn't quote work as expected so I'm going to keep hacking away at it

@egdelwonk updated. LMK what you think 😸

Looks good! Thanks 🤩


MinimumEigenOptimizer returns a wrong solution

Information

Qiskit Optimization version: latest
Python version: 3.8.9
Operating system: macOS 11.2.3

What is the current behavior?
MinimumEigenOptimizer with qasm_simulator returns a wrong solution.
Steps to reproduce the problem
from docplex.mp.model import Model
mdl = Model("docplex model")
x = mdl.binary_var('x')
y = mdl.binary_var('y')
mdl.minimize(x-2*y)
print(mdl.export_as_lp_string())
result = mdl.solve()
print("result of CPLEX solver")
print(result)

from qiskit_optimization import QuadraticProgram
from qiskit.providers.aer import QasmSimulator
from qiskit.algorithms.optimizers import SPSA
from qiskit.circuit.library import TwoLocal
from qiskit.utils import QuantumInstance
from qiskit.algorithms import VQE
from qiskit_optimization.algorithms import MinimumEigenOptimizer
seed = 1234
qp = QuadraticProgram()
qp.from_docplex(mdl)
backend = QasmSimulator()
optimizer = SPSA(maxiter=100)
ry = TwoLocal(2, 'ry', 'cz', reps=3, entanglement='full')
quantum_instance = QuantumInstance(backend=backend, seed_simulator=seed, seed_transpiler=seed)
vqe_mes = VQE(ry, optimizer=optimizer, quantum_instance=quantum_instance)
vqe = MinimumEigenOptimizer(vqe_mes)
result = vqe.solve(qp)
print("result of VQE solver")
print(result)
print(result.raw_samples)

output:
\ This file has been generated by DOcplex
\ ENCODING=ISO-8859-1
\Problem name: docplex model

Minimize
 obj: x - 2 y
Subject To

Bounds
 0 <= x <= 1
 0 <= y <= 1

Binaries
 x y
End

result of CPLEX solver
solution for: docplex model
objective: -2
y=1

result of VQE solver
optimal function value: 1.0
optimal value: [1. 0.]
status: SUCCESS

What is the expected behavior?
The solution of VQE should be [0. 1.].
Suggested solutions
We may need to reverse the bitstrings as x = np.fromiter(list(bitstr[::-1]), dtype=int). But, it may affect other algorithms and unit tests.
https://github.com/Qiskit/qiskit-optimization/blob/54a6d0750492132aa019975e3a8648c507b7553c/qiskit_optimization/algorithms/optimization_algorithm.py#L511

Do we need to reverse the solution bitstring or would it maybe be better to reverse the bits in the Hamiltonian? Then the solution with the MinimumEigenOptimizer would be consistent with both CPLEX and VQE.
If we only flip the solution in MinimumEigenOptimizer, the solution bitstring will be the same as for CPLEX but if I do a manual optimization by using VQE directly, the order will not be the same, right?

Yes, it will be fixed in #97

If we only flip the solution in MinimumEigenOptimizer, the solution bitstring will be the same as for CPLEX but if I do a manual optimization by using VQE directly, the order will not be the same, right?

You're right. I only flipped the solution in MinimumEigenOptimizer in #97.
Hmm, ya, it might be better to reverse the bits in the Hamiltonian for consistency.
We can reverse the bits in the Hamiltonian, easily. Currently, variable x_0 is mapped to qubit q_0, x1 -> q1,..., and x_n -> q_n. If we want reverse the bits in the Hamiltonian, we map x_0 -> q_n, x_1 -> q_n-1, ..., and x_n -> q_0.

Oh, sorry. I missed the point. We need to revisit the ordering of Hamiltonian. How about discussing it in another issue?

Why not in this issue? 🙂 If the changes are not too big it would probably be better to do only one fix instead of first re-ordering the solution bits and then undoing this by re-ordering the Hamiltonian.
@a-matsuo do you think you could check if reversing the Hamiltonian order fixes the problem consistently? 🙂

But, as you say, it's a good opportunity to change the order because this library is new.

Anyways, we need to clarify the order of Hamiltonian in docstrings of to_ising and from_ising.

I updated the docstrings of to_ising and from_ising. If there is no more comments about #97, I will merge it.


Add localhostProfile attribute and column

Add a new attribute, localhostProfile, to the SeccompProfile CRD and
ensure it is exposed via kubectl's -o wide formatting option. This
attribute represents the string that a user would have to supply to
their container, pod, or application (Deployment, ReplicaSet, DaemonSet,
etc) manifest in order for their application to use the profile. This
makes it clearer than just checking the Path attribute, since it's not
obvious that the /var/lib/kubelet/seccomp/ part of the path is not
supposed to be included in the pod spec.
What type of PR is this?

/kind feature
/kind api-change
/kind documentation
What this PR does / why we need it:
This is what I have in mind for https://github.com/kubernetes-sigs/security-profiles-operator/issues/145#issuecomment-740063350 - what do you think?
Which issue(s) this PR fixes:

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

Adds a new attribute `status.seccompProfile\.localhostProfile` and column `SECCOMPPROFILE.LOCALHOSTPROFILE` to indicate what should be included in a pod spec.

/assign @pjbgf


Open view, replay, and missing node changes

This pull request combines three patches in the correct order and without conflicts.

Use the new OpenView/OpenLedger classes everywhere. This eliminates all expensive Ledger operations when operating on open ledgers.

Improve ledger replay logic so that transactions are replayed without retries in the order they actually applied. We still can't perfectly replay failures and retries, but this should let us perfectly replay all transactions that had effects.

Improve the handing of missing nodes encountered in the Ledger constructor and avoid recursive invocation of the missing node logic. This also fixes a regression caused by doing SHAMap operations that can throw in a Ledger constructor that could cause a server with an inconsistent database to crash.

All previous comments have been addresses. Non-trivial changes were needed to rebase this to current branch.

:+1:

A :+1: from me as well.

Unit test failures appear spurious.

Boatload of conflicts when I tried to merge this with 0.29.1-b11.

Merged as 0c7a7903b65763b428a0f5a0a8c45169e693220d, 8f09d3449dfcc209704edb6cf0bf9edeeb661cfa and 74b0a7c633d0328a8c5645c0927f3313f5af21c5.


bump logback version

to gain security patches (https://snyk.io/vuln/SNYK-JAVA-CHQOSLOGBACK-31407)

Which apps have you tested with?

Tested on MAM in DEV now and logs are making their way to the ELK stack 🎉

Definitely worth releasing this with a minor version bump


Block Firefox telemetry

@StevenBlack can you check this out?

Hi Pavlo @paulcarroty.  Check what out?  Insufficient information.
Closing.

Sorry Pavlo @paulcarroty.  I thought this was an issue, not a pull request.
Merging.


examples not working

error: Uncaught SyntaxError: The requested module 'https://deno.land/x/webui/mod.ts' does not provide an export named 'WebUI'
import { WebUI } from "https://deno.land/x/webui/mod.ts";

We updated this repo, but the module in deno.land will be automatically updated when we create a new release.
@JOTSR Any idea how to solve this?

As the latest change have not been released deno.land don't update the module so you can directely import module from github (eg: https://raw.githubusercontent.com/webui-dev/deno-webui/main/mod.ts). Pin a commit to ensure stable module reference.
 Next release will be here soon as main API changes was made.


Jenkins 2.399 x64 on Windows.
Dashboard view plugin 2.472
Reproduction steps
Install Jenkins 2.399
Install Dashboard view plugin 2.472
Create new view of type Dashboard
Insert a Job List View into Dashboard at Bottom.
Save, show the view.
Expected Results
Same/similar correct Job List View as in Jenkins 2.397.
Actual Results
Result is a broken display, overly wide (about 3 screens wide), with a scrollbar, no useful content.
Anything else?
Jenkins 2.397 with Dashboard plugin 2.466 is correct.
Jenkins 2.399 with Dashboard plugin 2.466 is broken.
Jenkins 2.397 with Dashboard plugin 2.472 is correct.
Jenkins 2.399 with Dashboard plugin 2.472 is broken.
I guess Jenkins 2.398 or 2.399 changed something in the Job List which Dashboard plugin relies on.

Probably caused by PR #7581 in Jenkins v2.398.

When using Jenkins 2.417 in combination with Dashboard View 2.495.v07e81500c3f2,
The job list looks as follows (after adding it to the top of the Dashboard):

Above and righ from the table content is displayed which has not been displayed in Jenkins version 2.397.
The Dashboard version of the list should look like the "All Jobs" list:

Is this reproducible for others as well?

Is this reproducible for others as well?

This is exactly what this ticket is about.
If you've got 30 jobs in the grid, it looks much worse than this (all the icons get added at the end, and the column gets extremely wide).

Thanks for the confirmation.
Yes, the more jobs are contained in the list the worser it gets:

Yup. With a long list, the top table becomes extremely long vertically, the icons in the bottom table get added at the end (it doesn't wrap), the column with the icons gets extremely wide, and with that the whole area, which also makes the top table extremely wide.
The top table is what Jenkins now shows as Job list on smaller resolutions, and the lower table (without the icons on the right) is what Jenkins shows as Job list on bigger resolutions. Where the additional icons come from I can't say.

I personally don't use that panel and am not motivated to dive into the HTML/CSS/JavaScript/Jelly details of it myself. Pull requests are - of course - welcome!

This is a right nuisance we use it extensively and we are suffering from it. Is there an alternative ?

I have backed out the war file to get this version https://get.jenkins.io/war-stable/2.332.3/jenkins.war and run it and i am still observing the problem ?

As a workaround the Job grid can be used and the number of columns can be set to 1.
As an alternative for the Jenkins Job list Dashboard portlet the displaying of the Standard Jenkins list on top can be used:

Still: the Jenkins Job list portlet would be the most flexible since it can be placed also at the bottom, in-between and at the left or the right column.

We use this view at various levels in our automation. But including a top level view over all tasks. We can filter then on What jobs jailed in last night run. This is very large and the "show standard jenkins list at top of page" really is not fixing our problem.

found another way while above is not working.
Create a new view list view.

Any updates on this? We have the same problem

Seeing this exact issue after upgrading Jenkins from 2.387.1 to 2.414.3.
Is there a plan to address this issue?  I see it's been open for approximately seven months.

It's a bug in Jenkins core. Core renders 2 representations of the job list and it depends on the screen size which one is shown.
For the mobile view it is done with divs, but when it comes to including the build button, there is still a td element injected for the regular wide view which then breaks dashboard view.


[ACS][CallAutomation]support custom context in create and redirect

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.Communication.CallAutomation


Support recursive mount attrs by using mount_setattr(2).

Implement "rro" mount option that implemented in runc(https://github.com/opencontainers/runc/pull/3272) and crun(https://github.com/containers/crun/pull/778).
This mount option "rro" makes the mount point recursively read-only, by calling mount_setattr(2) with MOUNT_ATTR_RDONLY and AT_RECURSIVE.
Signed-off-by: higuruchi<EMAIL_ADDRESS>

Codecov Report

Merging #1398 (289c0d1) into main (3a6d105) will increase coverage by 0.10%.
The diff coverage is 84.98%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1398      +/-   ##
==========================================
+ Coverage   68.80%   68.90%   +0.10%
==========================================
  Files         119      119
  Lines       12664    12884     +220
==========================================
+ Hits         8713     8878     +165
- Misses       3951     4006      +55

@utam0k
I have never written a test for youki, can I try it?

I have never written a test for youki, can I try it?

@higuruchi Sure! If you have trouble or a question about that, please create the issue and ping me or @YJDoc2 (He is a professional for our integration test)

@higuruchi Sure, let me know if you face any issues. Currently #361 is used to track porting of OCI integration tests, you can take a look at it and start from there :+1:


[Bug] Unable to leverage Custom Angular Components in the Markdown file

Is this a regression?
No
Description
Unable to use custom angular component selectors in the markdown file.
Current Behaviour: Unable to use custom angular component selectors in a markdown file
Expected Behaviour: Should be able to leverage angular component selectors in a markdown file, I understand that there are page processors, but they seem to have wrapped contents. It is more flexible for me to directly use the component sector in the markdown file.
https://github.com/akhileshThapliyal/my-ng-doc-app
I have checked the code in my playground repo, you can investigate the coustom-angular-component page and content-wrapper component under /src/app folder. Please let me know if you require any further details.
custom-angular-component/ng-doc.page.ts
const CustomAngularComponentPage: NgDocPage = {
title: Custom Angular Component,
mdFile: './index.md',
keyword: 'CustomAngularComponentPage',
imports: [ContentWrapperComponent]
};
export default CustomAngularComponentPage;
custom-angular-component/index.md

Content wrapper paragraph

content-wrapper/content-wrapper.component.html

Content warpper title

Please provide the exception or error you saw
No response
OS
Unix (Linux, macOS, etc.)
Browser
Chrome
Node version
20.9.0
Anything else?
Ng Doc version: 17.6.10

This is not supported at the moment, and I am not yet sure if it will be. It is quite easy to add, but the main problem lies in the intersection of the Nunjucks and Angular APIs, which in theory can also be fixed. However, I am concerned about the numerous edge cases that may arise when implementing Angular components in this way, which I am unaware of. I am still thinking about this feature, and I might try to release it as an experimental feature for the builder.
In any case, I have added support for PageProcessor, which allows you to replace HTML elements with Angular components. Here are examples of internal page processors

This is not supported at the moment, and I am not yet sure if it will be. It is quite easy to add, but the main problem lies in the intersection of the Nunjucks and Angular APIs, which in theory can also be fixed. However, I am concerned about the numerous edge cases that may arise when implementing Angular components in this way, which I am unaware of. I am still thinking about this feature, and I might try to release it as an experimental feature for the builder.
In any case, I have added support for PageProcessor, which allows you to replace HTML elements with Angular components. Here are examples of internal page processors

Noted, thank you so much :). Ng Doc is awesome :). I will keep an eye on the future release and this thread to see when this feature will be available in the coming months :)

@akhileshThapliyal Thank you! Let's keep this ticket to track the status

This is not supported at the moment, and I am not yet sure if it will be. It is quite easy to add, but the main problem lies in the intersection of the Nunjucks and Angular APIs, which in theory can also be fixed. However, I am concerned about the numerous edge cases that may arise when implementing Angular components in this way, which I am unaware of. I am still thinking about this feature, and I might try to release it as an experimental feature for the builder.
In any case, I have added support for PageProcessor, which allows you to replace HTML elements with Angular components. Here are examples of internal page processors

@skoropadas The page processor approach can work so long as you don't need additional properties on the markdown.  Could you expose a way for us to tap into the markdown-to-html process in the builder?  There are use cases for extending this.
Here's an example use case:
My design system has a specific component for the inline-alert.  In my React + MDX library, I've built a Vite plugin that parses the content with remark to add support for additional nodes.
One thing we support is github's beta alert system:
> [!note/Custom Title]
> Neat, a custom title

Which renders as:

I've tried overriding the ng-doc blockquote page processor, but there is no way for me to supply a custom title.  I would need to tap into the markdown-to-html process in the builder to add support for an attribute like this.
As an aside, I'm very impressed with what you've done with this builder.  It was a huge undertaking and it works beautifully.

@R-Bower Thank you very much! You are one of the longest-standing users, so your feedback is very important to me! ❤
In fact, I am seriously trying to add support for using Angular components within Markdown. I think you know that currently, ng-doc simply renders markdown and then inserts it into the page using innerHTML. This generally works, but it makes it impossible to use Angular components directly, which is why I added Page Processors.
However, the problem is that Page Processors cause issues with SSR, as Angular does not support hydration for such dynamic content. Therefore, I would like to add support for Angular components in markdown in version 18 and deprecate Page Processors.
Regarding customization within markdown-to-html, I think I will migrate this function to the remark library and add the ability to pass custom plugins to it. But this will not happen before the release of version 18. The support for multiple markdown files for one page discussed in #24 forced a significant overhaul of the builder, which is actually for the better since it should become more stable.
In any case, I would ask you to create a ticket for plugin support for transforming markdown to HTML so that I can prioritize it and start working on it in the future.

This ticket will not be part of NgDoc 18 it requires much more work than initially expected, so I will postpone it for later.


enable to umount SCBE volume via FlexVolume

@liortamari  please conduct code review -> https://github.com/IBM/ubiquity-k8s/pull/38
note : In later commit i will add the new logging and also change the errors as standard structs (like we did in docker and ubiquity)


Make Tolerations and Affinity in Template's Scheduling tab editable

📝 Description
Make Tolerations and Affinity rules fields editable, in the VM Template's Scheduling tab, if the template is not a common template.
Add the appropriate modals to edit the fields.
🎥 Demo
Before:
The number of tolerations/affinity rules displayed, but no ability to edit:

After:
Tolerations/affinity rules editable:

Modal window to add/edit tolerations:

Modal window to add/edit affinity rules:

@glekner @avivtur @metalice @pcbailey @yzamir @vojtechszocs please review

/lgtm


Base client for Hawkular Alerts

@burmanm a preliminar base client for Alerting.
Following PRs will add more business method to interact with alerts.

This PR has low priority, as it was more a personal effort rather than something that is planned to do.
I talked with colleagues that are searching for alerting capabilities and having that under the python client will help.
Is this PR stalled for some reason ?
My plan was to add small contributions as far as I have free slots.
Do you prefer another strategy (a complete feature set before to merge) ?
Thanks.

Yes, I would prefer a commit that achieves something. Adding the alerts requires changing the building system, the README structure (in PyPi also) and merging some common code. For that reason I would not like to see stubs in the master branch.

Ok


UnrealCV server is not running.

ERROR:init:205:Can not connect to ('<IP_ADDRESS>', 9005)
ERROR:init:206:Error [Errno 111] Connection refused
UnrealCV server is not running. Please try again

hi, i have the same problem, could u  tell me how to solve it?

Hi, I have the same problem too, could you tell me how to solve it?
@xi-mao @huxianer @zfw1226


Non surround shooting data

Hello, your work is great. The speed of the outdoor surround scene is excellent, and the effect is also decent. But if it's not a surround scene, such as shooting with a handheld scanner, the training effect of your algorithm will look very poor.

I also tested it on high-altitude tilted data, but the results were not good. Can you provide suggestions for improvement?

Thank you for your interest.
In fact, both v1 and v2 of mini-splatting work well on our own testbed (multi-view images following the conventional 3D reconstruction pipeline), ranging from the common object, UAV data, and underwater scans.
From the perspective of engineering, we suggest aligning the cumstom dataset to the conventional multi-view reconstruction data (e.g., mipnerf360 or UAV captures) rather than modifying algorithm or hyperparameters.
From the perspective of research, it would be better to identity the key reserach problem according to the specific dataset (i.e., face-forwarding, sparse view or textureless).
Here, we provide a reconstruction example of msv2 using one UAV dataset (the minimal example from UAVD4L dataset, also adopted by Level of Gaussians from zju3dv):
First, check the colmap input. Note that the default setting is designed for dataset with around 200 images. If the custom dataset contains images significantly larger that 200 (i.e., 2000), it is necessary to increase all hyperparameter related to iterations.

Then, train the model using train.py under msv2.

Finally, check the final model with some visualizer (e.g., supersplat).

(1) Sorry, I may not have expressed myself clearly before. I think compared to the surrounding dataset, the effect of your tilted data is not as stunning, but it can still be considered quite good. What suggestions do you have to improve the rendering quality of high-altitude tilt data, especially for zooming in on details?
(2) Why set 18000 iterations? What would happen in other situations?
(3) The insufficient scanning effect mentioned earlier is due to the high number of artifacts indoors
(4) Your paper and code have strong robustness, which I highly appreciate. I hope you can achieve greater success!

Why is there such a big difference between the indicators of testing and training?

'zooming in on details' is indicated as 'level of details' in literature, which is a well-established technique in graphic pipeline, but the current implementation does not support 'level of details'. I suggest Level of Gaussians (https://github.com/zju3dv/LoG) for UAV data, and hierarchical-3d-gaussians (https://github.com/graphdeco-inria/hierarchical-3d-gaussians) for street view. For our mini-splatting, try the dense mode 'msv2_d' with more gaussians.

We model the reconstruction process of 3DGS as geometry modelling (densification with optimization, 0-15K) and texture modelling (pure optimization, 15K-30K). In msv2, we aim to achieve effective densification within a short period (3K), and just preserve the further optimization stage (15K), thus the overall iteration is 3K+15K=18K (for academic work, we avoid picking specific hyperparameters for algorithms).

For indoor scene with textureless surface (e.g., wall and floor), it would be better to follow works built upon scannet++ (https://arxiv.org/pdf/2308.11417). Personally speaking, I (as a point cloud researcher) do not think that multi-view geometry can handle indoor scene with large textureless region, and I prefer to incorporate depth sensor not only for research, but also for industry (https://x.com/i/status/1865007408105582595).

The difference between training and test. 3DGS-based works formulate the 3D reconstruction problem as an optimization problem. In most cases, the gap between training and test indicates overfitting on the training set, and obtaining more input views during data capture might be helpful. If it is infeasible, we suggest referring to some sparse-view oriented 3DGS works.

Thank you very much for your reply, which answered some of my doubts. I wish you even greater breakthroughs.


Camera not working with new version

Since the update to the latest version, my doorbell camera no longer works.  It just shows this image:

I can't find any specific Vivint log errors but I did find this error:
Logger: haffmpeg.tools
Source: /usr/local/lib/python3.9/site-packages/haffmpeg/tools.py:49
First occurred: 6:55:55 AM (7 occurrences)
Last logged: 6:56:35 AM
Timeout reading image.
I've tried all of the configurations including HD and not HD.

I had to restart my Vivint panel and it eventually came back


ignore or add external https fetch resource such as fonts and libraries store on a cdn

I have this error here:
[Error]: Unexpected Error [Error: ENOENT: no such file or directory,...
it happens to cause an index.html I'm trying to compile as one resource to the server has an external resource that is stored in a CDN. How do you either make this tool fetch that resource or ignore those URL paths?

@lv2lrn4lf At this moment the script does not support CDN resources and should ignore resources by default, I reckon that path that you have entered must be incorrect, Can we have more info on how are you running the script and where is your file and resources located?
Ref: https://github.com/okrohan/html-inline-external/blob/master/src/html-inline-external.js#L32

okay @rohan-salunke can you request for a deletion of this post for me or delete it if you have the power... another post I have can you delete that one too, I put said it on tha post as well.

@lv2lrn4lf do you want to close this thread?


[Concept] New forwardings concept

Forwardings have to be changed again due to

new concept of controller notifications
new findings from MATR sessions

last update for forwardings/callbacks was done in #193 for the OLD forwardings concept.
Information are added here for easier reference:
All forwardings currently in forwarding list:
non-individual forwardings with MWDI specific parts: ticked ones are done; for others there are open questions

[x] ServiceRequestCausesLoggingRequest
[x] PromptForBequeathingDataCausesNewApplicationBeingRequestedToDocumentSubscriptionsForNewDeviceNotifications
[x] PromptForBequeathingDataCausesNewApplicationBeingRequestedToDocumentSubscriptionsForNewControlConstructNotifications
[ ] PromptForBequeathingDataCausesControllerBeingRequestedToInquireForDeviceConnectionStatusAtNewMWDI
[ ] PromptForBequeathingDataCausesEndingSubscriptionToOldRelease
[x] ServiceRequestCausesLtpUpdateRequest
[x] ServiceRequestCausesFcUpdateRequest

MWDI-individual forwardings: ticked ones can be done immediately, others have open questions:

[ ] CyclicOperationCausesRetrievalOfListOfConnectedDevicesFromController
[ ] RetrievalOfListOfConnectedDevicesFromControllerCausesWritingIntoElasticSearch
[ ] AddingNewDeviceCausesNewDeviceNotification
[ ] NotificationAboutDeviceStateChangeFromControllerCausesWritingIntoElasticSearch
[ ] CyclicOperationCausesControlConstructRetrievalFromController
[ ] PromptForUpdatingControlConstructFromDeviceCausesWritingIntoElasticSearch
[x] PromptForUpdatingControlConstructFromDeviceCausesNewControlConstructAvailableNotification
[ ] PromptForUpdatingControlConstructParameterCausesWritingIntoElasticSearch
[x] PromptForUpdatingControlConstructParameterCausesNewControlConstructAvailableNotification
[ ] RessourcePathRequestCausesReadingFromElasticSearch


NameError: name 'queryset' is not defined

Excuse me.
When I test on Regdb , there is a NameError that"name 'queryset' is not defined"
How can I solve it? Thank you!!!!
Traceback (most recent call last):
File "test_ddag.py",line 152, in
query_loader = data.DataLoader(queryset, batchsize=args.test_batch, shuffle=False, num_workers=4)
NameError: name 'queryset' is not defined

Can you successfully train on RegDB?
You may refer to the test.py for the testing on RegDB. I will update the "test_ddag.py" soon.

Can you successfully train on RegDB?
You may refer to the test.py for the testing on RegDB. I will update the "test_ddag.py" soon.

Yes.I can train on RegDB successfully.But I can not test on it by test_ddag.py.
I tried to modify the code and  can test successfully, but I don't think the code is perfect.

Sorry for the caused inconvenience. I may optimize the code soon.


[Docs] Add description of select_columns to guide

Closes #6116

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


K64F with 0241 ASSERTS on usbc_msc.c

I am getting this kind of assert from 0241 K64F
Assert
File: ..\..\..\source\usb\msc\usbd_msc.c
Line: 1063
Source: Application

https://github.com/mbedmicro/DAPLink/blob/34182e2cce4ca99073443ef29fbcfaab9e18caec/source/usb/msc/usbd_msc.c#L1063
After this the device stops communication until it receives RESET.
This is relatively random event. I have observed it a few times during the last week. I using serial communication via Virtual Box from Win7 host and Ubuntu 16.04 client.

maybe related to this issue: https://github.com/mbedmicro/DAPLink/issues/102

Hi @teetak01, thanks for reporting this. If you could attach logs of this occurring  it would be very helpful. Wireshark + USBpcap should allow you to capture this. Also, what do you mean by RESET? Is this a re-enumeration, a msd endpoint reset comment, a Virtual Box reset or something else?
You mention that the device stops communicating. This is only the mass storage drive right? You should still be able to debug over USB with pyOCD and you should be able to see serial data over the serial port. Can you confirm this?
Finally, Virtual Box has some known USB issues. I haven't seen any with mass storage yet, but they are fairly common with the CMSIS-DAP protocol, as Virtual Box will sometimes drop HID packets. A dropped SCSI packet might explain this assert.

could this be related to https://github.com/mbedmicro/CMSIS-DAP/issues/93?

I have only seen dropped packets when using virtual box, so if they aren't using virtual box then https://github.com/mbedmicro/CMSIS-DAP/issues/93 is probably unrelated.

I think teemu did use raspberry with debian,,

No, this was on virtual box. @jupe is thinking about another possibly related issue we have been having on raspberry environment. You can seen some logs from that issue here: http://jira.arm.com/browse/IOTSYST-1146 . (K64F gets stuck in infinite? loop resending number of traces).
@c1728p9 I have to see if I can somehow reproduce this more reliably to get some logs. So far I have seen it a few times, but it may well be also something Virtual Box is causing. But also I do not remember seeing this issue before on Virtualized Ubuntu 14.04, so may also be some Ubuntu-Virtual Box issue.
The latest fail occured while I was running a testcase on K64F with CLI-testing suite. The device was in middle of sending significant amount of traces via serial port and suddenly CLI stopped receiving any data from serial port and the mass storage drive popped open as the ASSERT.TXT file appeared there. The CLI automatically sends a reset to the device when it proceeded to the next testcase and the testcases continued to execute normally from that.

I was now getting that fail few times in a row while re-flashing K64F. After using another K64F for a while, the first one also started to work a bit better (for now). Maybe I have a faulty hardware?

Hi @teetak01, I think it is unlikely to be faulty hardware. The best way to get to the root of this issue would be to capture some USB logs to determine if the assert is from dropped USB packets.

I was able to reproduce this locally and found this assert is incorrectly triggering if a valid mass storage command arrives at the right time. This should be fixed by #219 which updates the assert criteria.

Ah, good to know, forgot about this completely. Thanks @c1728p9


dyld: Library not loaded: /usr/local/opt/openldap/lib/libldap-2.4.2.dylib

Describe the bug
dyld: Library not loaded: /usr/local/opt/openldap/lib/libldap-2.4.2.dylib
Referenced from<EMAIL_ADDRESS>Reason: image not found
[1]    6285 abort      ./php -v
PHP versions
<EMAIL_ADDRESS>To Reproduce
Expected behavior

Screenshots/Logs

Additional context

Are you willing to submit a PR?

@ningkexin Rebuilding each formula, should take about an hour.

Ok, got it @shivammathur

@ningkexin
It should work now.
Run brew update and then you can reinstall PHP 7.1
brew update
brew reinstall<EMAIL_ADDRESS>

@shivammathur OK,It worked!


Type system

What is the purpose of the change
Re-define datatypes of dataset according to standard SQL.
Brief change log

Add some datatypes

Verifying this change
This change is already covered by existing tests.

@jiangxin369 , is the implementation of the type system enough? In this implementation, it only supplements the data types.


Build better pot files

Purpose
Improvements to the way the POT files are generated so that the work Lewis has to do is less fraught with errors and repetition.
Approach
The new extractor code takes into account the current POT file when running so that the new/changed translations are placed appropriately within the new file.
Checklist

[x] I have performed a self-review of my own code
[ ] I have added relevant logging with appropriate levels to my code
[ ] I have updated documentation (Confluence/GitHub wiki/tech debt doc) where relevant
[ ] I have added tests to prove my work
[ ] The product team have tested these changes

Needs additional tests


issu in Running  Native DLL

i have some big pdf's  and i want to compress these files,
i'm using this api and it works fine in console app :
https://www.pdf-tools.com/pdf20/en/products/pdf-optimization/free-trial-software/download/list/pdf-optimizer/
but i have  problem in run this in azure function.and it can not load dll .
my project config are:
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <PlatformTarget>AnyCPU</PlatformTarget>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" />
    <PackageReference Include="SSH.NET" Version="2016.1.0" />
  </ItemGroup>

i set manually to call the dll by :
         [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
            private static extern IntPtr LoadLibrary(string libname);

    public static void PdfOptimizeAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
            {
                if (args.LoadedAssembly.FullName.StartsWith("PdfOptimizeNET"))
                {
                    IntPtr Handle = IntPtr.Zero;
                    if (IntPtr.Size == 4)
                    {
                        // 32-bit
                        Handle = LoadLibrary(@"x86\PdfOptimizeAPI.dll");
                    }
                    else if (IntPtr.Size == 8)
                    {
                        // 64-bit
                        Handle = LoadLibrary(@"x64\PdfOptimizeAPI.dll");
                    }
                    if (Handle == IntPtr.Zero)
                    {
                        int errorCode = Marshal.GetLastWin32Error();
                        // log some error
                    }
                }
            }

and in side  function :
   [FunctionName("Function1")]
        public static void Run([TimerTrigger("59 * * * * * ")]TimerInfo myTimer, ILogger log)
        {
            AppDomain currentDomain = AppDomain.CurrentDomain;
            currentDomain.AssemblyLoad += new AssemblyLoadEventHandler(PdfOptimizeAssemblyLoadEventHandler);

            try
            {
                pdfOptimization.Optimization("", "", log);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
    }

with     AnyCPU i get this exception:
The type initializer for 'Pdftools.PdfOptimize.Optimizer' threw an exception.
if i set debug to x64, the application doesn't run.

Thank you for opening this issue! We are routing it to the appropriate team for follow up.
cc: @shahabhijeet

@aghilimc , Azure function doesn't support native dll currently, please refer to https://github.com/Azure/Azure-Functions/issues/622. Close the issue since https://github.com/Azure/Azure-Functions is better place to track the issue.


fix(backend): fix certificate validation

Signed-off-by: Johannes Grumboeck<EMAIL_ADDRESS>Hey, I just made a Pull Request!
This PR should fix #13074.
I kept the logic that 5 days before certificate expiration a new self-signed certificate will be generated.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

@jgrumboe I took the liberty to tweak the code slightly, please take a look it looks alright for you.

@jhaals Thanks and I appreciate your changes, so I even learned more.

Thank you for contributing during Hacktoberfest 🍂! You can claim the Backstage Hacktoberfest Holopin at https://bck.st/hacktoberfest-holopin 🙌🏻


[Docs] Tutorials : Organizing Tutorial Screenshots

Current State
I was working on a tutorial and I noticed that all the screenshots are placed in one folder irrespective of the tutorial. It'll be tedious for someone trying to contribute to the tutorial to find the images and update if needed.

Desired State

My suggestion is for every tutorial to have its own folder and all the screenshot will live there.
Another thing we could do here is using descriptive file names, which will help with SEO and collaboration too.

I can work on this!

Contributor Guides and Handbook

📚 Instructions for contributing to documentation

Meshery documentation site and source

🛠 Meshery Build & Release Strategy
🎨 Wireframes and designs for Meshery UI in Figma (open invite)
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

@amir1387aht what's this for?

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

hey @khabdrick can i work on this issue ??

@khabdrick Can you please assign this issue to me ?


Cursor moves from UPS_CURSOR_FIRST to UPS_CURSOR_PREVIOUS without UPS_KEY_NOT_FOUND

This is issue is identical to issue-107  from https://github.com/cruppstahl/upscaledb
See https://github.com/cruppstahl/upscaledb/issues/107
Please consider sample:
int main()
{
    ups_env_t* env;
    ups_env_create(&env, "test.db", UPS_ENABLE_TRANSACTIONS, 0664, 0);
    //ups_env_create(&env, "test.db", 0, 0664, 0);

    ups_parameter_t params[] = {
    {UPS_PARAM_KEY_TYPE, UPS_TYPE_UINT32},
    {0, }
    };

    ups_db_t* db;
    ups_env_create_db(env, &db, 1, 0, &params[0]);

    const int item_count = 57; // required

    for (int i = 0; i < item_count; i++)
    {
        ups_key_t key = ups_make_key(&i, sizeof(i));
        ups_record_t record = {0};

        ups_db_insert(db, 0, &key, &record, 0);
    }

    ups_cursor_t* cur;

    ups_cursor_create(&cur, db, 0, 0);

    int key_data = 0;
    ups_key_t key = {0}; key.data = &key_data; key.size = sizeof(key_data);
    ups_record_t rec = {0};

    ups_cursor_move(cur, &key, &rec, UPS_CURSOR_FIRST);
    if((UPS_SUCCESS == ups_cursor_move(cur, &key, &rec, UPS_CURSOR_PREVIOUS)))
    {
        std::cout << "Cursor moved from FIRST to PREVIOUS without UPS_KEY_NOT_FOUND" << std::endl;
    }

    ups_cursor_close(cur);

    ups_db_close(db, 0);

    return 0;
}

In standard output:
    Cursor moved from FIRST to PREVIOUS without UPS_KEY_NOT_FOUND

Issue occurs for item_count=57 and not for example for item_count=50
Transactions must be enabled to observe the issue

This case is added to test suite of the project.

The source code can be found in file issue107.cc

There is work around for this issue: use function ups_cursor_find without using function ups_cursor_move.

The answer to this issue could be found in the comment of the source code of function LocalDb::cursor_move. This comment explains that cursors (in some situations) could be circulating. When the cursor is circulating one, then calling the function
ups_cursor_move( cur, &key, &rec, UPS_CURSOR_PREVIOUS );

returns success even then the cursor at the "beginning" of the cursor. In other words, there is no begin and no end in the circular cursors.


Refund when tax value includes digits

Hi
I cant do a refund from the wp-admin interface if the tax includes digits. 4.00kr is OK but not 4,20kr.
The log payex-checkout indicates that the digits are not correctly handled.
The log from a failed refund:
_>>>>>>>> BEGIN PAYEX API CLIENT REQUEST DEBUG INFO >>>>>>>>

Request Method: POST
Request URL: https://api.payex.com/psp/paymentorders/325f130a-834d-40de-6787-08d9e075b055/reversals
Request Headers: Accept: application/json
Session-Id: 6fd435bf-3735-4597-b82b-9a73e02940e1
Forwarded: for=<IP_ADDRESS>; proto=https
Authorization:  Bearer <redacted>
Content-Type: application/json; charset=utf-8
Content-Length: 1007
Request Body:
{
    "transaction": {
        "amount": 600,
        "description": "Refund for Order #294496. Amount: 6",
        "orderItems": [
            {
                "amount": 625,
                "class": "ProductGroup1",
                "description": "TestprodC1 - S",
                "imageUrl": "https:\/\/staging.agency.hemsida.eu\/st03\/wp-content\/uploads\/woocommerce-placeholder.png",
                "itemUrl": "https:\/\/staging.agency.hemsida.eu\/st03\/produkt\/testprodc1\/?attribute_pa_size=s",
                "name": "TestprodC1 - S",
                "quantity": 1,
                "quantityUnit": "pcs",
                "reference": "6y6Ff9o24Em1",
                "restrictedToInstruments": null,
                "type": "PRODUCT",
                "unitPrice": 625,
                "vatAmount": 125,
                "vatPercent": 2500
            }
        ],
        "payeeReference": "294496xiuygq",
        "receiptReference": "294496xjuyzt",
        "vatAmount": 100
    }
}

Response Code: 400
Response Body:
{"type":"https://api.payex.com/psp/errordetail/inputerror","title":"Error in input data","status":400,"instance":"https://api.payex.com/psp/probleminstance/00-829004282e914fd9aa28d7d8e368fb01-943e50044253e8d9-01","detail":"Input validation failed, error description in problems node!","problems":[{"name":"Transaction.Amount","description":"The Amount field must match the summed up value of Amount in OrderItems."},{"name":"Transaction.VatAmount","description":"The VatAmount field must match the summed up value of VatAmount in OrderItems."},{"name":"Transaction.OrderItems","description":"The Amount field must match the summed up value of Amount in OrderItems. The VatAmount field must match the summed up value of VatAmount in OrderItems."}]}

<<<<<<<< END PAYEX API CLIENT REQUEST DEBUG INFO <<<<<<<<_

Everything works fine if the tax includes no digits. See log:
_>>>>>>>> BEGIN PAYEX API CLIENT REQUEST DEBUG INFO >>>>>>>>

Request Method: POST
Request URL: https://api.payex.com/psp/paymentorders/325f130a-834d-40de-6787-08d9e075b055/reversals
Request Headers: Accept: application/json
Session-Id: 80995000-3af4-4fad-8ea6-50274a5419e6
Forwarded: for=<IP_ADDRESS>; proto=https
Authorization:  Bearer <redacted>
Content-Type: application/json; charset=utf-8
Content-Length: 1007
Request Body:
{
    "transaction": {
        "amount": 500,
        "description": "Refund for Order #294496. Amount: 5",
        "orderItems": [
            {
                "amount": 500,
                "class": "ProductGroup1",
                "description": "TestprodC1 - S",
                "imageUrl": "https:\/\/staging.agency.hemsida.eu\/st03\/wp-content\/uploads\/woocommerce-placeholder.png",
                "itemUrl": "https:\/\/staging.agency.hemsida.eu\/st03\/produkt\/testprodc1\/?attribute_pa_size=s",
                "name": "TestprodC1 - S",
                "quantity": 1,
                "quantityUnit": "pcs",
                "reference": "5n9mbNiBqnC4",
                "restrictedToInstruments": null,
                "type": "PRODUCT",
                "unitPrice": 500,
                "vatAmount": 100,
                "vatPercent": 2500
            }
        ],
        "payeeReference": "294496xzxspe",
        "receiptReference": "294496xbmdki",
        "vatAmount": 100
    }
}

Response Code: 200
Response Body:
{"payment":"/psp/creditaccount/payments/cc410e0f-3a0b-4b05-643e-08d9dfda75ba","reversal":{"id":"/psp/creditaccount/payments/cc410e0f-3a0b-4b05-643e-08d9dfda75ba/reversals/9c005919-4f0d-493a-f3f9-08da0c87333b","transaction":{"id":"/psp/creditaccount/payments/cc410e0f-3a0b-4b05-643e-08d9dfda75ba/transactions/9c005919-4f0d-493a-f3f9-08da0c87333b","created":"2022-03-31T19:04:36.3188902Z","updated":"2022-03-31T19:04:36.6097556Z","type":"Reversal","state":"Completed","number":17100028452,"amount":500,"vatAmount":100,"description":"Refund for Order #294496. Amount: 5","payeeReference":"294496xzxspe","isOperational":false,"reconciliationNumber":738244,"operations":[]}}}

<<<<<<<< END PAYEX API CLIENT REQUEST DEBUG INFO <<<<<<<<_

Any ideas what could be wrong?
Thanks

Any updates?

Hi @aait !
Trying to find what can be a fix for this issue, could it be in this section?
`// Calculate VAT amount
$vat_amount = array_sum(
array_column( $items, OrderItemInterface::FIELD_VAT_AMOUNT )
) / 100;
		$result = $this->core->refundCheckout( $order->get_id(), $amount, $vat_amount, $items );`

@asbjornu Hi!
We're having a lot of issues with refunds with this plugin and need some support. We've got some developers looking into this on our end but help is appreciated.
See below for some ideas of what the problem could be?
swedbank-pay-checkout/includes/class-wc-gateway-swedbank-pay-checkout.php

swedbank-pay-checkout/vendor/swedbank-pay/swedbank-pay-woocommerce-core/src/SwedbankPay/Core/Library/Methods/Checkout.php

@craftycrafter90 Hello, could explain what problem do you have in details please?
Please attach logs if possible.

I prepare some changes https://github.com/SwedbankPay/swedbank-pay-woocommerce-checkout/pull/127

Changes were merged, so i'm closing this issue


Benchmark Movielens Bugs Fixed

Description

Incorporated changes suggested by the reviewers
Related Issues

#1825
Checklist:

[ Yes ] I have followed the contribution guidelines and code style for this project.
[ ] I have added tests covering my contributions.
[ ] I have updated the documentation accordingly.
[ Yes ] This PR is being made to staging branch and not to main branch.

Closing this PR for now, but not erasing the branch, I will create a new PR when the code is fixed.
See details in https://github.com/microsoft/recommenders/issues/1825


User Story 3 (User Profile)

See use cases for the use cases.

[ ] US 03.01.01 (UC 10)

US 03.01.01 As a User, I want a profile with a unique username and my contact information.

[ ] US 03.02.01 (UC 11)

US 03.02.01 As a User, I want to edit the contact information in my profile.

[ ] US 03.03.01 (UC 12)

US 03.03.01 As a User, I want to, when a username is presented for a thing, retrieve and show its contact information.

All 3 use cases handled in ElasticSearch.


Research landmarks accessibility

Description
read this article and research landmarks accessibility
modify component if necessary
Problem Statement/Justification
none
Proposed Solution or API
No response
Alternatives
No response
Are you willing to participate in implementing this feature and create a pull request include the implementation?
None
Additional Information
No response

there are no applicable component in yamada-ui, so close this issue.


Block processor attributes is Map<String, Object> but may contain non-String keys.

A block processor needs to take a Map<String, Object> argument for "attributes", but the map that is passed may contain non-String keys.
The following block processor throws a java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String when treating all map keys as strings.
The exception is thrown in the for loop because one or more keys in the map are Integers.
If I change the style of the block in the AsciiDoc source to source, no exception is thrown.
My guess is that "custom attributes" are keyed by Integers in the attributes map.
If that's the case, maybe the signature of BlockProcessor#process() should type 'attributes' as Map<Object, Object>, or maybe some type coersion magic needs to happen to make sure the generics of the map in the signature are respected.
It works to treat the map as if it were <Object, Object>, at least for the Integer case.
Since there is a Integer#toString() method, treating a key as an Object in the for loop works just fine.
Block processor:
import org.asciidoctor.ast.StructuralNode;
import org.asciidoctor.extension.BlockProcessor;
import org.asciidoctor.extension.Reader;

import java.util.HashMap;
import java.util.Map;

public class UnexpectedIntegerKeysBlockProcessor extends BlockProcessor {

    private static Map<String, Object> configs = new HashMap<String, Object>() {{
        put(CONTEXTS, CONTEXT_LISTING);
    }};

    public UnexpectedIntegerKeysBlockProcessor(String name, Map<String,Object> config) {
        super(name, configs);
    }

    @Override
    public Object process(StructuralNode parent, Reader reader, Map<String,Object> attributes) {
        for (String key : attributes.keySet()) {
            System.out.println(key + ": " + attributes.get(key));
        }
        return null;
    }
}

Test:
import org.asciidoctor.Asciidoctor;
import org.asciidoctor.OptionsBuilder;
import org.junit.Test;

import java.io.File;
import java.net.URISyntaxException;

import static org.asciidoctor.Asciidoctor.Factory.create;

public class UnexpectedIntegerKeysBlockProcessorTest {

    @Test
    public void attributesShouldOnlyContainStringKeys() {

        Asciidoctor asciidoctor = create();
        asciidoctor.javaExtensionRegistry().block("snippet", UnexpectedIntegerKeysBlockProcessor.class);

        try {
            File referenceFile =
                    new File(getClass().getClassLoader().getResource("unexpectedintegerkeys.adoc").toURI ());
            String referenceResult = asciidoctor.convertFile(referenceFile, OptionsBuilder.options()
                    .headerFooter( false )
                    .toFile( false ));
        } catch (URISyntaxException ex) {
            System.out.println( ex.getMessage() );
        }
    }
}

AsciiDoc source:
[snippet, java]
----
Java code.
----

%s/Integer/Long/g

You are correct that block attributes can have numeric keys. These are the positional attributes. Unfortunately, accommodating that scenario would mean a change in a lot of places. One solution is to coerce those numeric keys to strings at the boundary of Ruby and Java. The other is updating the signature of attributes on all nodes to be a <Object,Object> (though, technically, <Object,String> would work too since the value of block attributes can only be string or null).

I think we have sorted it out in the 1.6.0 branch by skipping numeric attributes which should always be positional attributes.

I think we have sorted it out in the 1.6.0 branch by skipping numeric attributes which should always be positional attributes.

I vaguely remember discussing that as well. I case did come up recently when accessing the positional attribute directly was necessary. However, I think if we decide we do want to still keep them, we will use string-based keys to map them back in so that we can stick with string-based keys. The numeric keys really should be considered an internal API.

Oops, it's not sorted out.
Thank you for reporting this. I made some changes to take care of this, but apparently this slipped through.
Thank you for reporting!

Fixed in a2967ea.

:+1:

Oh no! I mean, thanks for fixing quickly, but the fix makes things all the worse for me because it simply removes attributes with numeric keys rather than coerce them to Strings--so now I can't get at the positional attributes!
I can work around the original issue, but I don't know that I can work around the fix :) Would you consider coercing numeric keys to String instead of ignoring/removing them?

Hi,
The current approach is to define the positional attributes as options to
the processor so that positional attributes are automatically mapped to
named attributes:
https://github.com/asciidoctor/asciidoctorj/blob/asciidoctorj-1.6.0/asciidoctorj-core/src/test/groovy/org/asciidoctor/extension/AnnotatedLongInlineMacroProcessor.groovy#L9
Cheers
Robert
Am Sonntag, 24. April 2016 schrieb jjaderberg :

Oh no! I mean, thanks for fixing quickly, but the fix makes things all the
worse for me because it simply removes attributes with numeric keys rather
than coerce them to Strings--so now I can't get at the positional
attributes!
I can work around the original issue, but I don't know that I can work
around the fix :) Would you consider coercing numeric keys to String
instead of ignoring/removing them?
—
You are receiving this because you modified the open/close state.
Reply to this email directly or view it on GitHub
https://github.com/asciidoctor/asciidoctorj/issues/450#issuecomment-214022280

I see--yes, I can work with that. Thanks!


No DOM change event triggered when the input changes

When we select a suggestion or autocomplete the input (tab key, right key), there's no change event triggered on the underlying DOM input nor on the container form if available.
I wonder if this is by design or a bug. Not having a change event makes it hard to use classical form/input on change and you must only rely on the autocomplete.js events.
What do you think?

Not having a change event makes it hard to use classical form/input on change and you must only rely on the autocomplete.js events.

I think it's a feature of the original typeahead.js library. Quick fix is to listen to the autocomplete.js event + forward a change event to the underlying input but I can try to check if it's automatically doable as well.

Autocomplete v0 has been in low maintenance mode for a few years and we just released Autocomplete v1 so I'm closing this.
Resources

Getting Started
onStateChange


ui: communicate car needs to be restarted if alpha long is toggled while onroad

Can lead to some confusion since we don't communicate this: https://discord.com/channels/469524606043160576/905963231879757894/1136833114019201195
alternatively; make it clear if openpilot longitudinal is active while onroad

Same for NDOG if that hasn't changed


Have displayName appear in test logs

Hi!
Context
I'm using BrowserStack both for e2e testing and unit testing. I'd like use a common naming scheme for identifying platforms in the logs of both e2e and unit tests. To achieve this on the karma side, I'm setting the displayName property of elements in customLaunchers in the karma configuration (see this page for reference). I'm logging the test results via karma-json-reporter.
My issue
When I run tests locally, I see the displayName showing up in my logs as the name property of a browser. Below are some config and output snippets as illustration...
// In config
customLaunchers = {
  local_local_chrome_local: {
    base: 'Chrome',
    displayName: 'local_local_chrome_local'
  }
}
// In output
{
  "browsers": {
    "40995879": {
      "id": "40995879",
      "fullName": "local_local_chrome_local",
      "name": "local_local_chrome_local",

When I run tests via the karma-browserstack-launcher, I don't get displayName in my logs. Below another config and output snippet to illustrate what I get instead.
// In config
customLaunchers = {
  'android_11.0_Google Pixel 4_android': {
    os: 'android',
    os_version: '11.0',
    browser: 'android',
    device: 'Google Pixel 4',
    browser_version: null,
    real_mobile: true,
    displayName: 'android_11.0_Google Pixel 4_android',
    base: 'BrowserStack'
  }
}

// In output
{
  "browsers": {
    "7827643": {
      "id": "7827643",
      "fullName": "Mozilla/5.0 (Linux; Android 11; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",
      "name": "Chrome 83.0.4103.106 (Android 11)",

What I tried so far
I tried adjusting your index.js. I found out that I could obtain the displayName as a property of args in this.start and use it to set the name used for the logs on BrowserStack by adjusting this line. I didn't manage to get it into the JSON logs though.
Help :)
Could you give me some pointers in how to get the displayName in the logs?
Thanks! Thomas

@tpronk the "name" capability you are referring to would allow you to set a name for the session on the browserstack dashboard and not in the console logs.

Hey @RohanImmanuel, thanks for your reply!
Yes, the line you and I mention at the bottom of my post can be used to set the name of a session on browserstack. The workaround I'm thinking of will use that and then obtain the name I'd like to have via the browserstack REST API.
If I set the displayName property of a customLauncher, I would have expected to end up in my local logs; if I use the chrome-launcher, for example, displayName ends up as name and fullname in my JSON logs, but not if I use the karma-browserstack-launcher.

I forked the repo and applied my workaround. It's not super-elegant, but it works :)


ConQuest Python script filename

In the README at qmof_database/initial_structures/structures/README.md in the QMOF Database, the instructions say to use download_and_remove_free_solvent.py but should instead say download_csd_cifs.py. The name was shortened but not updated in the README. This will be fixed in the next update.

Fixed in v8.


Unify names/locations of memoize and adapt.

Also use adapt macro to generate adapt view for xilem.

@Philipp-M I did think about moving the others, (anyview and sequence) but I thought that since they are specifically not views (i.e. their own traits) they shouldn't be in the view subtree. But it's totally an aesthetic decision so really IDC if others think they would be better in the view module.


[Bug] Using emoji as a prefix/separator - 1.0.0-beta.3

Noticed with that with the 1.0.0-beta.3 version emojies as a prefix/separator output got changed.
Previously in 0.7.x with config:
{
  screens: {
    mobile: '60em',
    tablet: '80em',
    desktop: '120em',
  },
  modules: {
    appearance: ['responsive'],
    ...
  },
  options: {
    prefix: '✅-',
    separator: '_🚧_',
  },
}

I used to get such output:
.✅-appearance-none {
  appearance: none;
}

...

 .mobile_🚧_✅-appearance-none {
  appearance: none;
}

...

And with v1:
{
  theme: {
    screens: {
      mobile: '60em',
      tablet: '80em',
      desktop: '120em',
    },
  },
  variants: {
    appearance: ['responsive'],
    ...
  },
  prefix: '✅-',
  separator: '_🚧_',
}

.\2705-appearance-none {
  appearance: none;
}

...

.mobile_\1F6A7_\2705-appearance-none {
  appearance: none;
}

...

I guess this has to do something with encoding, not sure.

This is likely because we switched the library we are using for escaping unsafe class names — is there any actual problem you're encountering because of this? If the escape sequences are correct then your class names should still work the same way in your HTML.

Yeah, I then need to write my class names with the escaped symbol so ✅-bg-black -> \u2705-bg-black. I tested this on a simple react app
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');

const babelLoader = {
  loader: 'babel-loader',
  options: {
    presets: ['@babel/preset-env', '@babel/preset-react'],
    plugins: ['react-hot-loader/babel'],
  },
};

module.exports = {
  mode: process.env.NODE_ENV,
  entry: path.resolve(__dirname, 'src/index.js'),
  output: {
    path: path.resolve(__dirname, '../build'),
  },
  devtool: process.env.NODE_ENV === 'development' ? 'eval' : 'cheap-module-source-map',
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: babelLoader,
      },
      {
        test: /.mdx?$/,
        use: [babelLoader, '@mdx-js/loader'],
      },
      {
        test: /\.css$/,
        exclude: /node_modules/,
        use: [
          ExtractCssChunks.loader,
          { loader: 'css-loader', options: { importLoaders: 1 } },
          { loader: 'postcss-loader', options: { config: { path: __dirname } } },
        ],
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({ template: path.resolve(__dirname, 'src/index.html') }),
    new ExtractCssChunks(),
  ],
};

I'll try to make a repro example a bit later if needed.

Seems to work totally fine, here's a demo repo:
https://github.com/adamwathan/tailwind-emoji-prefix
...and here's an even more simplified example in JSFiddle:
https://jsfiddle.net/9j28wqbe/

Yeah, you're right. I seem to have messed up my setup a bit when upgrading.
Thanks for your work on this sweet project!


template revoke on +PRE_DEINSTALL

If we do have a revoke, we should call it on +PRE_DEINSTALL adjusted to +TARGETS files,
then reload templates under +POST_DEINSTALL again...

There is some code, but this never came to be. There simply never was any urgency to this and this will likely continue.


[fix]构建的Docker开发容器无法使用root登录

What problem were solved in this pull request?
Issue Number: close #394
Problem:参照开发文档构建的Docker开发容器无法使用root密码登录
What is changed and how it works?

修改容器 ssh 配置文件，使其允许root用户登录
修改开发文档中对修改root用户密码方法的描述

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


Enable MailUser in Target Cloud Only Tenant

Hi
Is there a way to enable an existing Azure AD cloud only user as mail user in the target tenant? This is not documented and Enable-Mailuser command is not available in Exchange Online.
The Azure AD users are already provisioned in the target tenant for SSO to 3rd party apps.
Regards Georg

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

ID: c61c960c-f5c3-76f7-ac18-dfeaf30230e4
Version Independent ID: 3dc607b2-869e-976f-80da-d73cfb1210e5
Content: Cross-tenant mailbox migration - Microsoft 365 Enterprise
Content Source: microsoft-365/enterprise/cross-tenant-mailbox-migration.md
Product: microsoft-365-enterprise
GitHub Login: @kelleyvice-msft
Microsoft Alias: kvice

@kelleyvice-msft Please help us in resolving this issue. Thanks


Description tag

We need a phrase for the website's "description". This is what possibly will show up on Google. Usually that's 1 or 2 sentences, 10 to 20 words.
@patrickwermelinger you have a suggestion?

Also: List of keywords

done


🌱 Makefile: add crds target

make crds for much faster iteration.
Your PR description is really short. Your PR description is really short. Your PR description is really short. Your PR description is really short. Your PR description is really short. Your PR description is really short.

/retest

What's flaking? Do we have an issue open for it?

Rebased.
/approve

Hit flake: #2389

/retest

More flaking
/retest

Merged through #2510.


[BUG] Add-PnPGroupMember for adding EntraID Group using Managed Identity in Azure Runbook doesn't work

Reporting an Issue or Missing Feature
I am running the following script in my Azure Automation Account runbook:
Powershell 7.2
PnP 2.3.0
Connect-PnPOnline -ManagedIdentity -url "https://tenant.sharepoint.com/sites/MySiteCollection"
$GroupName =  Get-PnPGroup -AssociatedMemberGroup
Add-PnPGroupMember -LoginName<EMAIL_ADDRESS>-Group $GroupName
Add-PnPGroupMember -LoginName "c:0t.c|tenant|f559ca209-88d4-4b0a-9c21-0b9c8d453de0" -Group $GroupName
Expected behavior
Add-PnPGroup cmdlet adds the user as well as the EntraID Group to the specified Member Group
Actual behavior
The user gets added but for the EntraID Grouo I get an Error
The specified user c:0t.c|tenant|f559ca209-88d4-4b0a-9c21-0b9c8d453de0 could not be found.
I can verify that that the Groups Object ID exists!
Steps to reproduce behavior
Running the script abvove
What is the version of the Cmdlet module you are running?
2.3.0
Which operating system/environment are you running PnP PowerShell on?

[ ] Windows
[ ] Linux
[ ] MacOS
[ ] Azure Cloud Shell
[ ] Azure Functions
[ x] Other : Azure Automation runbook runtime version 7.2

Looks like a server side error, not sure if we can do anything here about this.
Moving this to a discussion. Hopefully, someone in the community has some idea around this.


Non-PSGallery v2 endpoints not working

Prerequisites

[X] Write a descriptive title.
[X] Make sure you are able to repro it on the latest released version
[X] Search the existing issues.

Steps to reproduce
New issue opened that is tangential to issue #1526

Also, to clarify: even adding -Type Module doesn't fix the issue either (at least from the module perspective). The HTTP call to Search() lacks a searchTerm parameter. Based on my experimentation with Artifactory, not providing a searchTerm is not the same as providing searchTerm=''.
Even if the type endpoint vpath was fixed for non-PSGallery calls, the lack of a searchTerm means Artifactory will still return a null response.
Based on the current structure of V2ServerAPICalls, I see two possible options for fixing that issue:
Add searchTerm='' to the built URLs in FindAllFromTypeEndPoint and FindTagFromEndpoint
Conditionalize adding searchTerm='' to the URLs built in the methods described above based on whether the repo appears to be Artifactory
Our Artifactory server is selfhosted and does not include jfrog in the FQDN, so the JFrog quirk flag may need to be adjusted to turn on for more situations (I can cut a separate issue for this if you'd like)

Expected behavior
Artifactory v2 endpoint should work

Actual behavior
Throws error

Error details
No response
Environment data
all environments

Visuals
No response

@alerickson: based on https://github.com/PowerShell/PSResourceGet/issues/1485#issuecomment-1897197544, I filed #1532 and #1533 which might help clean up some of the bugs here.

Closing this in favor of #1530, #1531 and #1534


Get an error in First Reconstruction.cxx

Dear RTK users and developers,
Greetings! I am a student who has just started learning RTK. I downloaded and compiled ITK-5.4, and I enabled the Module_RTK. The installation went smoothly, but I encountered some issues when running the First Reconstruction.cxx
In my code, I only added two string variables to replace command-line inputs, enabling the code to run in VS2022.
The code encounters an error at this line：
   // Writer
   std::cout << "Writing output image..." << std::endl;
   using WriterType = itk::ImageFileWriter<ImageType>;
   WriterType::Pointer writer = WriterType::New();
   writer->SetFileName(img_output);
   writer->SetInput(fieldofview->GetOutput());
   writer->Update(); # error raise in this sentence

and the error message is here (it was translated from chinese):
An unhandled exception occurred at 0x00007FF9A507B699 (located in fdk_test.exe): Microsoft C++ exception: itk::ImageFileWriterException, at memory location 0x000000BA18F5EB28.

my environment:

CUDA 12.4
ITK-5.4
RTK (i dont know, since it was compiled with ITK)
VS2022

Any help would be appreciate!
sean

Okay, it seems that my configuration is not entirely complete. In addition to configuring the include, lib, and additional dependencies, I need to add a preprocessor to get RTK running correctly.

Glad you found a solution, thanks for letting us know. What was the required preprocessor?

In order to use RTK in my VS2022 project, I need to add ITK_IMAGEIO_FACTORY_REGISTER_MANAGER and ITK_FFTIMAGEFILTERINIT_FACTORY_REGISTER_MANAGER to the preprocessor definitions so that the project can compile correctly.


Customer tests

Espero poder ajudar. :+1:

Ficou excelente amigo.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+21.0%) to 85.421%

Totals

Change from base Build<PHONE_NUMBER>:
21.0%

Covered Lines:
375

Relevant Lines:
439

💛  - Coveralls


Can't install nor is it in search

I've tried to manually install it and search for this but nether work. Even closing and opening does nothing, it just defaults to the default theme. Is there something wrong, am I doing something wrong or is it just not compatible with the current version?

Sorry, this theme got removed because it uses an asset from the internet. I've been so busy that I have not fixed it yet. But I will do it when I have the time.
In the meantime, you can install the theme from this github page, and it should still work if you put the theme.css in the .obsidian/themes folder.

Sorry, this theme got removed because it uses an asset from the internet. I've been so busy that I have not fixed it yet. But I will do it when I have the time.
In the meantime, you can install the theme from this github page, and it should still work if you put the theme.css in the .obsidian/themes folder.

thank you good sir, it worked -  i love this theme


Linux support

AI today is extensively developed in Linux servers and datacenters. It would be great if Agora provides Linux support for the python SDK which would mostly be used to integrate video with AI applications.

Python SDK on linux is on our roadmap plan but we do not yet have a specific timeline yet. Please keep watching our repo for latest updates.

hey, is the support for Linux is implemented ? I couldn't install it to my laptop

@plutoless mind sharing the challenges of bring this SDK to linux?
Maybe the community can help figure this out.

@eugene-yang the challenge is we don't have an official published linux rtc sdk.. what i know is we have a version to be released in near future but currently i can't yet give a precise date. once we have it supporting linux python would be pretty straight-forward.

Thanks @plutoless, is that an compiling issue or deeper with the system calls?
I could be very wrong but I imagine that an OSX version is not going to be very different from a Linux version, right?

@eugene-yang in fact no. the media device api are quite different :)

Highly awaited feature for us as well

Would be great to be able to use agora-python-sdk on linux..

👍  Would be critical to have the sdk on linux. Linux is the most common streaming environment.

Linux Agora SDK would be great thing to have available in our toolbox for wider range of integrations. Really highly awaited feature.

Any updates or workarounds? Or I need to Convert somehow Python API for C++ On-premise SDK and run it on linux?

We are waiting for the linux agorartc python SDK