Send background image + signature to server side?

i have a background added +  the signature but it only send the signature , any idiea how to make this works?
html

   <canvas id="signature-pad" class="signature-pad " width=400 height=200  ></canvas>

js
$scope.signaturePad = new SignaturePad(document.getElementById('signature-pad'), {
               backgroundColor: 'rgba(255, 255, 255,0)',
                penColor: 'rgb(0,0,0)'
            });
$scope.file = $scope.signaturePad.toDataURL('image/jpeg',100);

then i send the file to server whit $scope.file...

@hitmacreed hey, did you figure it out?

@hitmacreed hey, did you figure it out?

yes , its possible check this commit


Populate changelog for the Auth Image

Please edit this file: https://github.com/wedeploy/wedeploy.com/edit/master/node/electric/src/pages/updates/services/auth/index.md

Fixed #337


Plugin Registration Order with layers

Describe the feature
The Environment
3 layers

@nuxt-themes/docus
@q-soft/qs-docu-tool (with i18n, vuetify, mermaid and stuff)
app layer > the app you are working on

Clarification about layers shown in the image

@q-soft/qs-docu-tool extends from @nuxt-themes/docus,
the app extends from @q-soft/qs-docu-tool

the challenge
I want to access i18n in my plugin carousel of the app layer. I cant, since the plugins of @q-soft/qs-docu-tool are loaded afterward.
I tried both,
setup plugins just by name and with number prefix. The plugins of the base/extended layer got loaded AFTER the app layer.
(please help me with the naming convention of the layers)
Expected
Load plugins of docus first, then @q-soft/qs-docu-tool and at last app layer plugins. In that case I could use i18n in my carousel plugin, since its loaded before.
Additional information

[ ] Would you be willing to help implement this feature?
[ ] Could this feature be implemented as a module?

Final checks

[X] Read the contribution guide.
[X] Check existing discussions and issues.

Hi @danielroe, any updates on this issue?

a simple workaround is to use object notation with enforce: 'post' in the carousel plugin: https://github.com/userquin/vuetify-nuxt-module/blob/main/src/runtime/plugins/vuetify.ts#L5-L11

@danielroe why this was closed? What @userquin provided as a workaround might somehow work for his use case of 1 plugin but definitely not a solution (not even a workaround) for the problem in general. Layers have sequential order, why plugins which are arrays don't? If we need a more general issue to be opened for it let me know, otherwise let's reopen this one

@AndrewBogdanovTSS This was closed because plugin ordering was resolved in https://github.com/nuxt/nuxt/pull/22889. If you still have an issue, then yes, please do open a new issue.

@danielroe I just checked the issue on 3.7.1 and it still exists, here is a reproduction https://stackblitz.com/edit/nuxt-starter-g42wkd?file=nuxt.config.ts
Issue will be opened shortly


HIE crashes on HIE source with explicit stack cradle.

Relevant issue seems to be https://github.com/commercialhaskell/stack/issues/4564.
Seemingly, stack repl does not work on a projet with an internal library.
If you supply the flag stack repl --no-package-hiding it works, however, there is no target such as haskell-ide-engine:lib:hie-utils-test, therefore that component can not be loaded with an explicit stack hie.yaml
I currently dont know how c-h handles this and if this works better.

Same thing in HLS :(


CLI Fails to get proper images on Raspberry PI 4

Describe the bug
Running the supabase CLI, build/installed from source via go install, I try to start up a supabase project with supabase start adn get the following error
<IP_ADDRESS>: Pulling from supabase/postgres
failed to display json stream: no matching manifest for linux/arm/v7 in the manifest list entries
Retrying after 4s: public.ecr.aws/supabase/postgres:<IP_ADDRESS>

To Reproduce
Steps to reproduce the behavior:

Have a Raspberry Pi 4
Setup a supabase project
Run Supabase start
See error

Expected behavior
Supabase starts and setup up the right docker containers
Desktop (please complete the following information):

OS: uname: Linux raspberrypi 6.5.0-1005-raspi #7-Ubuntu SMP PREEMPT Sun Oct  8 09:09:29 UTC 2023 armv7l armv7l armv7l GNU/Linux
Raspberry Pi 4
Version of CLI: Current master

Additional context
It seems like the whole project has some hiccups working on raspberry pi's :D The only way to get the cli working was to get the source code and build it with go, now this, etc.

If you look at supabase/postgres on dockerhub, it's not supported to run in ARM 32-bit mode, so yes it's expected that it won't run on that OS. You will need to reinstall an OS on your Pi that supports 64-bit mode.
Please refer link below for more information 😁
https://raspberrypi.stackexchange.com/questions/111011/aarch64-or-armv8-with-arch-on-a-raspberry-pi-4

Boy do I feel dumb right now 😄
Accidentally had installed a 32-bit linux on the machine.

If you look at supabase/postgres on dockerhub, it's not supported to run in ARM 32-bit mode, so yes it's expected that it won't run on that OS. You will need to reinstall an OS that supports 64-bit mode on your Pi.
Please refer link below for more information 😁 https://raspberrypi.stackexchange.com/questions/111011/aarch64-or-armv8-with-arch-on-a-raspberry-pi-4

The problem with this is that Supabase Vector is not supported on 64-bit ARM, particularly, where a page size > 4KB is present. So this is a bit of a Catch 22.


Add new Scalar DL Client tool for executing the scalar-ist scripts

We create a Scalar DL Client tool for executing the scalar-ist project without creating a Scalar DL Java Client SDK from the Scalar repo.
Created a new tool based on Scalar DL Client tool source code.

Why not download the zip instead of copying the files? Managing duplicate files is not very maintainable. https://github.com/scalar-labs/scalardl-java-client-sdk/releases/tag/v3.6.0

Sorry, I forgot the Scalar DL Java Client SDK availability in the scalar-labs/scalardl-java-client-sdk repo.
I have removed the new duplicated tool and updated the e2e test.
Thank you for your suggestion.
@feeblefakie @ypeckstadt @supl san,
Could you please take a look when you get a chance?


iPad OS?

Would love to use this on my iPad, but sending audio file fails with error code 400.

Hi @epka
Fixed in the recent update:
https://github.com/nikdanilov/whisper-obsidian-plugin/pull/21


Add documentation / possibility to use TrainRuns in Python

As python is broadly used, I think it would be great to add documentation how to use TrainRuns with Python or (in the future) compile TrainRuns and publish it as a python package.
This could lead to a more widespread usage of TrainRuns and a shared collaborativw codebase

[ ] Test JuliaCall in Python to call TrainRuns.jl
[ ] add Tutorial
[ ] mention in Documentation

see #17


Amplifying messages via web.dev/blog

Just sending off a quick message before I forget: we'd be happy to post announcements from time-to-time. Maybe not everything, but key posts. E.g. after 6-months or something maybe you do a roundup of all the work you've done so far, and then the CTA is "BTW plz donate"
We'll have to work out details but I just want to put it on your radar that web.dev/blog is available to spread the good word

Hey! That's awesome! I started doing monthly roundups, see January 2021 here: https://opencollective.com/open-web-docs/updates/open-web-docs-worklog-january-2021-edition. I'm happy to post a 6 month version of it to web.dev/blog! 🎉
Thanks so much for reaching out!

Sounds good. I'll close this to avoid cluttering up your issues.


Fork sanity-plugin-color-list and make compatible for v3

We use this plugin for selecting background colors, but the plugin has not been updated in 10 months and is not compatible with version 3 of Sanity, and no ETA for when it will be.
We should either fork this plugin and make it compatible ourselves, or create our own custom input component to replace it (while maintaining backward compatibility with the data format already in our datasets)

@fernandolucchesi @millianapia @padms
Ready for review - it's in a PR because it's a lot of changes (mostly just uncommenting/updating schemas)

Looking good ✅


Add a sharp/smooth anchor toggle to the Path tool

Similar to #1229, there should be a radio input to toggle between Sharp and Smooth added to the Path tool's options bar.

Sharp: an anchor's two handles can be any angle
Smooth: an anchor's two handles are locked at a 180° angle offset

Users can currently toggle between the two while dragging a handle by tapping the Alt key. This toggle widget in the Properties panel should help visualize the current state of things if an anchor is selected, and/or one or both of its two handles.
If one handle is selected, clicking the toggle to change to Smooth should cause the opposite handle to rotate (but not change length) to be 180° from the selected one. If an anchor and/or both handles are selected (meaning there isn't one specific handle), then clicking switching to Smooth should rotate the angles of both handles to their average rotation (also without affecting their lengths). When switching from Smooth the Sharp, don't change their angles or lengths.

I'll give this a go :) I am a newer for this project, could you give me some tips to start? @Keavon

Redirecting to @0HyperCube since I'm on vacation, thanks

@parkma99

We can add some logic to detect if a point is sharp or smooth in PathToolMessage::DocumentIsDirty branch in path_tool.rs.
We need to check if there is a single selected point. This can be done with self.selected_points().count() == 1. If there is not just a single selected point, we should not show the widget.
We need to access the vector data of the currently selected point.
We need to access the current vector data for the layer, which contains the positions of the points with document.layer(layer_id).ok()?.as_vector_data()?;
Get the current mirror state, this can be done with vector_data.mirror_angle.contains(point.group).

We can now store booleans for current_sharp and single_point_selected in PathToolData.
To display this, we need to add to the existing impl PropertyHolder for PathTool {}, probably using the RadioInput widget. See other code for examples of how to add widgets.
To ensure that the widget is rendered when the state changes, you can call self.register_properties(responses, LayoutTarget::ToolOptions); on the PathTool.
When the user changes the sharp by clicking, pipe a message (as can be seen in other tools).
Currently the logic for changing sharpness is in flip_sharp - feel free to adjust / split up this function as necessary (it is currently quite long).

If you have any questions, the discord guild is probably the fastest way to get them answered.

Thanks @0HyperCube , I will have a look late.😊

I have a PR ready for this if it's open.


.bazelversion and configure.py conflicts

Please make sure that this is a build/installation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:build_template
System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04):  ubuntu 18.04.3
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: N/A
TensorFlow installed from (source or binary):  source master
TensorFlow version: master 2.1.0
Python version: 3.8.2
Installed using virtualenv? pip? conda?: N/A
Bazel version (if compiling from source): 3.1.0
GCC/Compiler version (if compiling from source): 7.5.0
CUDA/cuDNN version: 10.2/7.6.5
GPU model and memory: GTX1080Ti GDDR5X 11GB

Describe the problem
.bazelversion and configure.py. bazel version requirements are different from each other,
causing error.
Provide the exact sequence of commands / steps that you executed before running into the problem
.configure
Any other info / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached.
.configure
Traceback (most recent call last):
  File "./configure.py", line 1557, in <module>
    main()
  File "./configure.py", line 1369, in main
    current_bazel_version = check_bazel_version(_TF_MIN_BAZEL_VERSION,
  File "./configure.py", line 482, in check_bazel_version
    curr_version = run_shell(
  File "./configure.py", line 159, in run_shell
    output = subprocess.check_output(cmd, stderr=stderr)
  File "/home/wmind/anaconda3/lib/python3.8/subprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/home/wmind/anaconda3/lib/python3.8/subprocess.py", line 512, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['bazel', '--batch', '--bazelrc=/dev/null', 'version']' returned non-zero exit status 1.

bazel --version
ERROR: The project you're trying to build requires Bazel 3.0.0 (specified in /home/wmind/repo/tensorflow/.bazelversion), but it wasn't found in /usr/bin.

You can install the required Bazel version via apt:
  sudo apt update && sudo apt install bazel-3.0.0

If this doesn't work, check Bazel's installation instructions for help:
  https://docs.bazel.build/versions/master/install-ubuntu.html

@alanpurple
Could you please downgrade your python version and try the same.
Also please refer to this link , link1 , link2
#38736 #37702 #38325 #22743

Master branch seems ok as the version in .bazelversion is included in the range from configure.py: https://github.com/tensorflow/tensorflow/blob/62d50aa8e28209c701e8919d315ed0cb3ca804de/configure.py#L52-L53 and https://github.com/tensorflow/tensorflow/blob/62d50aa8e28209c701e8919d315ed0cb3ca804de/.bazelversion#L1
The same happens on r2.2 and r2.1 branches. .bazelversion does not exist before that.

@Saduf2019
done, same error with python 3.8.1
@mihaimaruseac
yes, that's what i'm saying, master branch should be okay, but error occurs

What is the output of bazel version (not bazel --version)?

@mihaimaruseac @alanpurple From the https://github.com/bazelbuild/bazel/issues/10465#issuecomment-567842873, my understanding is that:

bazelversion is meant to be used by a "bazel wrapper" (installed form apt-get install bazel, or binary download of bazelisk)
the "bazel wrapper" will selectively choose the exact version of the bazel (3.0.0 in this case) to run.

However, since traditionally tensorflow developers outside of google normally download and install bazel directly (not through the wrapper), a downloaded version might be different and the error happens.
My suggestion is to either update the documentation for installation and ask people to use bazel wrapper instead (and remove version range in configure.py), or remove bazelversion restriction,

@yongtang
no, I've already known that apt install bazel and I use that version of bazel, this is not the install type problem after all

this is not happening in windows 10 anyway

@alanpurple
Is this still an issue

@Saduf2019
yes same, nothing's been resolved

@mihaimaruseac
this time, 3.2.0, and .bazelversion has 3.1.0

Sorry, please post the exact output.

@mihaimaruseac
ERROR: The project you're trying to build requires Bazel 3.0.0 (specified in /home/wmind/repo/tensorflow/.bazelversion), but it wasn't found in /usr/bin.

You can install the required Bazel version via apt:
  sudo apt update && sudo apt install bazel-3.0.0

If this doesn't work, check Bazel's installation instructions for help:
  https://docs.bazel.build/versions/master/install-ubuntu.html

This seems to be caused by a logic error in configure.py. Will try to send a fix soon.

This should be fixed on master by 56a99d6. Can you please try again from master branch, syncing to a fresh hash? If it fails, can you please post the commit hash you are building from?
Preferably, can you post the full output of running the following commands?
bazel clean --expunge
git checkout master
git pull --rebase
git show
python configure.py

Apologies for the delay, spent a while tried to replicate before I thought of looking into the code and saw the code change

@mihaimaruseac
wmind@wmind-deep:~/repo/tensorflow$ bazel clean --expunge
ERROR: The project you're trying to build requires Bazel 3.1.0 (specified in /home/wmind/repo/tensorflow/.bazelversion), but it wasn't found in /usr/bin.

You can install the required Bazel version via apt:
  sudo apt update && sudo apt install bazel-3.1.0

If this doesn't work, check Bazel's installation instructions for help:
  https://docs.bazel.build/versions/master/install-ubuntu.html
wmind@wmind-deep:~/repo/tensorflow$ git checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.
wmind@wmind-deep:~/repo/tensorflow$ git pull --rebase
Already up to date.
wmind@wmind-deep:~/repo/tensorflow$ git show
commit d8b90acf95bdff09e29b1065739e28e8bd7500d9 (HEAD -> master, origin/master, origin/HEAD)
Author: Dan Moldovan<EMAIL_ADDRESS>Date:   Mon Jun 22 18:46:12 2020 -0700

    Enable type annotations for python/ops.

    PiperOrigin-RevId: 317779660
    Change-Id: Ife6b7319ef394b611798f5d01b64ebdb3c0a01cc

diff --git a/tensorflow/python/ops/logging_ops.py b/tensorflow/python/ops/logging_ops.py
index 8ca63f5598..02fce27769 100644
--- a/tensorflow/python/ops/logging_ops.py
+++ b/tensorflow/python/ops/logging_ops.py
@@ -54,11 +54,9 @@ except NameError:
 # call relies on certain conditionals for its dependencies.  Use
 # control_flow_ops.Assert.

-# Assert and Print are special symbols in python, so we must
-# have an upper-case version of them.
-#
-# For users with Python 3 or Python 2.7
wmind@wmind-deep:~/repo/tensorflow$ python configure.py
WARNING: current bazel installation is not a release version.
Make sure you are running at least bazel 3.1.0
Please specify the location of python. [Default is /home/wmind/anaconda3/bin/python]:

This seems consistent with what we have
https://github.com/tensorflow/tensorflow/blob/d8b90acf95bdff09e29b1065739e28e8bd7500d9/configure.py#L52-L53
https://github.com/tensorflow/tensorflow/blob/d8b90acf95bdff09e29b1065739e28e8bd7500d9/.bazelversion#L1
Seems you have a broken bazelisk? Or a bazelisk which cannot automatically install bazel? What is the output of type bazel?

@mihaimaruseac
outside tensorflow repo, bazel is fine, my bazel version is 3.2.0
with modification to .bazeversion(to 3.2.0) works fine

wmind@wmind-deep:~/repo/tensorflow$ type bazel
bazel is hashed (/usr/bin/bazel)
wmind@wmind-deep:~/repo/tensorflow$ bazel version
ERROR: The project you're trying to build requires Bazel 3.1.0 (specified in /home/wmind/repo/tensorflow/.bazelversion), but it wasn't found in /usr/bin.

You can install the required Bazel version via apt:
  sudo apt update && sudo apt install bazel-3.1.0

If this doesn't work, check Bazel's installation instructions for help:
  https://docs.bazel.build/versions/master/install-ubuntu.html
wmind@wmind-deep:~/repo/tensorflow$ cd ..
wmind@wmind-deep:~/repo$ bazel version
Build label: 3.3.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Wed Jun 17 12:55:32 2020<PHONE_NUMBER>)
Build timestamp:<PHONE_NUMBER>
Build timestamp as int:<PHONE_NUMBER>
wmind@wmind-deep:~/repo$

wmind@wmind-deep:~/repo/tensorflow$ vim .bazelversion
wmind@wmind-deep:~/repo/tensorflow$ bazel version
Build label: 3.3.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Wed Jun 17 12:55:32 2020<PHONE_NUMBER>)
Build timestamp:<PHONE_NUMBER>
Build timestamp as int:<PHONE_NUMBER>
wmind@wmind-deep:~/repo/tensorflow$ ./configure
You have bazel 3.3.0 installed.
Please specify the location of python. [Default is /home/wmind/anaconda3/bin/python3]:

so it's not my bazel's fault after all

This is what I see on my end, on a Docker container with bazelisk installed.
root@faa022ec076e:/src# bazel version
2020/06/23 15:09:08 Downloading https://releases.bazel.build/3.3.0/release/bazel-3.3.0-linux-x86_64...
Bazelisk version: v1.1.0
Extracting Bazel installation...
Build label: 3.3.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Wed Jun 17 12:55:32 2020<PHONE_NUMBER>)
Build timestamp:<PHONE_NUMBER>
Build timestamp as int:<PHONE_NUMBER>
root@faa022ec076e:/src# bazel version
Bazelisk version: v1.1.0
Build label: 3.3.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Wed Jun 17 12:55:32 2020<PHONE_NUMBER>)
Build timestamp:<PHONE_NUMBER>
Build timestamp as int:<PHONE_NUMBER>
root@faa022ec076e:/src# cd -
/src/tensorflow
root@faa022ec076e:/src/tensorflow# bazel version
Bazelisk version: v1.1.0
Starting local Bazel server and connecting to it...
Build label: 3.1.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Wed Apr 22 10:32:27 2020<PHONE_NUMBER>)
Build timestamp:<PHONE_NUMBER>
Build timestamp as int:<PHONE_NUMBER>
root@faa022ec076e:/src/tensorflow# type bazel
bazel is hashed (/usr/bin/bazel)
root@faa022ec076e:/src/tensorflow# file /usr/bin/bazel
/usr/bin/bazel: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

Note how bazelisk is able to download the missing bazel on my system.
If I change .bazelversion to something which does not exist then I am able to reproduce your output:
root@faa022ec076e:/src/tensorflow# git diff
diff --git a/.bazelversion b/.bazelversion
index fd2a0186..18091983 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-3.1.0
+3.4.0
root@faa022ec076e:/src/tensorflow# bazel version
2020/06/23 15:14:22 Downloading https://releases.bazel.build/3.4.0/release/bazel-3.4.0-linux-x86_64...
2020/06/23 15:14:23 could not download Bazel: HTTP GET https://releases.bazel.build/3.4.0/release/bazel-3.4.0-linux-x86_64 failed w
ith error 404
root@faa022ec076e:/src/tensorflow# python configure.py
WARNING: current bazel installation is not a release version.
Make sure you are running at least bazel 3.1.0
Please specify the location of python. [Default is /usr/local/bin/python]:

To go further, can you run the following two commands in the tensorflow directory please? (Install strace if missing)
strace -f -o bazel_version.log bazel version
strace -f -o configure.log python configure.py

And then attach the bazel_version.log and configure.log files.

configure.log
bazel_version.log
@mihaimaruseac

You have bazel, not bazelisk (/usr/bin/bazel-real is the binary that runs). Bazelisk is the process which should read .bazelversion and install the corresponding Bazel. It seems Bazel now checks the .bazelversion file too.

That is, if you install Bazelisk (and uninstall Bazel), this should not happen anymore

@mihaimaruseac
so what u mean is, this is bazel's s problem?
and bazelisk is okay but original bazel is not.
is this right?
I'd rather modify .bazelversion, is it okay?
thank you

.bazelversion is used by Bazelisk. In all my tests Bazel would just ignore the file. Don't know why the binary that executes when you call bazel on your system does not ignore the file.
.bazelversion lists the version of Bazel that we built with. As long as you change it to a version that is in the range specified by configure.py that should be ok

@mihaimaruseac
thank you for your efforts, but it seems that this issue is not resolved

What do you mean by "is not resolved"? What changed since https://github.com/tensorflow/tensorflow/issues/39248#issuecomment-649235945 ?

@mihaimaruseac
I mean, since official bazel has problem with tensorflow build, even though bazelisk has no problem

I am not sure what is the problem You are able to run ./configure and bazel build, right? There is no more a conflict between .bazelversion and configure.py
On a docker container, with no bazelisk, no bazel, I am able to build even if using bazel 3.3.0.
root@dde9f7f2f021:/src/tensorflow# wget -O /usr/bin/bazel https://github.com/bazelbuild/bazel/releases/download/3.3.0/bazel-3.3.0-linux-x86_64
oot@dde9f7f2f021:/src/tensorflow# chmod +x /usr/bin/bazel
root@dde9f7f2f021:/src/tensorflow# bazel version
Extracting Bazel installation...
Starting local Bazel server and connecting to it...
Build label: 3.3.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Wed Jun 17 12:55:32 2020<PHONE_NUMBER>)
Build timestamp:<PHONE_NUMBER>
Build timestamp as int:<PHONE_NUMBER>
root@dde9f7f2f021:/src/tensorflow# bazel --version
bazel 3.3.0
root@dde9f7f2f021:/src/tensorflow# python configure.py
You have bazel 3.3.0 installed.
Please specify the location of python. [Default is /usr/local/bin/python]:
...
root@dde9f7f2f021:/src/tensorflow# bazel build tensorflow/tools/pip_package:build_pip_package
...
root@dde9f7f2f021:/src/tensorflow# cat .bazelversion
3.1.0
...

So, I am unsure what is left to be solved on this issue.

@alanpurple
Could you please check on tf 2.4.1/upgrade tf version to latest and let us know if you still face the issue.


MITx report for active courses and instructors

User Story
As a residential MITx educational technologist I would like to be able to get a list of instructors and courses that are active on the platform.
Description/Context
At the start of each semester the educational technologists will archive old courses, so they need to know which instructors have active courses so they can be contacted. To get this list we need to run a query against the MySQL data from the Open edX platform.
Acceptance Criteria

[ ] There is an easily accessible and up to date report for the educational technologists that has the list of courses and instructors.

Notes
The SQL that I have been executing manually to get this list is as follows:
SELECT
    u.username
    ,u.first_name
    ,u.last_name
    ,u.email
    ,sc.course_id
    ,sc.role
FROM
    "ol_warehouse_production_raw"."raw__mitx__openedx__mysql__auth_user" u
JOIN
    "ol_warehouse_production_raw"."raw__mitx__openedx__mysql__student_courseaccessrole" sc on u.id = sc.user_id
WHERE
    sc.role = 'instructor'
AND
    sc.course_id LIKE '%2022%' OR sc.course_id LIKE '%2023%';

FYI @pdpinch

@blarghmatey @pdpinch Do we expect to generate this report based on the tables we get from IRx BigQuery? If so the residential source data isn't available yet.
If we want to generate this report directly from our open edx tables, these two are blank on the production data lake.

@blarghmatey @rachellougee checking in on this again. Do we have the necessary Residential MITx data available to create this report?

Do we have the necessary Residential MITx data available to create this report?

I just checked that the two Residential MITx tables mentioned are in our staging models and there are data available.

@pdpinch @blarghmatey We should be able to report this using int__combined__user_course_roles. Here is an example
https://bi.odl.mit.edu/queries/1347

Looks good to me. Now we just need to remember this report exists when Kaleb ask next, probably in June.


Make ExecuteTestCobraCommand safer to use

It is currently too easy to forget to add --api-host and --api-port and then the test may still run, but against the demo network.  This will cause issues later on when the demo network changes.
This PR instead moved the ExecuteTestCobraCommand (and associated) functions onto the BaseSuite which already specified the host and port. If the user does not specify api-host or api-port then the configured values for the suite will be used. This will effectively make it impossible to run tests against the demo network.
Fixes #3293

Nice clean up! I wonder if we should (in the future) ensure that our test suite runs entirely disconnected and/or document what external dependencies/network connectivity is required.

Yeah, absolutely, we should hopefully be able to run local copies of most things and stuff like S3 tests only run if the credentials are available on your laptop.


Typo in "Do less main thread work" section

Page Affected: https://developers.google.com/web/tools/chrome-devtools/speed/get-started
What needs to be done?
Typo fix for the following sentence on the page: "4. Click Reload. DevTools reloads the page and then produces a visualization of all the it had to do in order to load the page. This visualization will be referred to as the trace."
Should just say all it had to do.

I have a fix for this in https://github.com/google/WebFundamentals/pull/8724


Article Images Issues

Hi,
Nice work. I tested creating an Article and uploaded an image . However, the image link is present but seems not to be uploaded upon saving the Article. (screenshots)

Fixed in  https://github.com/jkariukidev/my-demo-website/commit/9f933658c10906748b15d627e5ff51144ae5240b


Static build

Updates to CMake support to enable static builds and static-dev packaging. Moves from namespace Tensile to namespace TensileLite to prevent name collisions in downstream consumers that depend on Tensile and TensileLite.
Ran hipblaslt-test and rocblas-test --gtest_filter="*hipblaslt*".

Should we add any docs changes to this PR or separate?

Yes docs should go in with features.   I would use noCI until you are close to merge if you have docker to test now.

Should we add any docs changes to this PR or separate?

Yes docs should go in with features. I would use noCI until you are close to merge if you have docker to test now.

Here is the docs requirement: Document how to deploy and use runtime code objects from test application statically linked to hibplasLt.
tensile_host.cpp has logic for finding the co files and users can set HIPBLALT_TENSILE_LIBPATH if tensile_host cannot find them.

Look at current rocBLAS docs on this https://github.com/ROCm/rocBLAS-internal/blob/develop/docs/install/Linux_Install_Guide.rst#static-library, which would also need details added in rocBLAS PR or maybe link to hipblasLt section

@jichangjichang @KKyang would either of you mind providing review or recommending someone for review?

I would suggest you remove the actual static build changes from this PR. First get approval and merge only the namespace changes (which may be easy to get approval for). Assuming none of the namespace is exported in public API I approve. Otherwise the comments I would make relate to only static build runtime issues...

FYI The namespace changes were separated into another PR and are already merged.


[stable/spinnaker] update minio dependency version

Spinnaker was unable to access minio, updating the dependency fixes it.

/lgtm

/lgtm


Cannot run simple_video example on Windows

> conda create -n test mne
> conda activate test
> pip install pyparallel rtmixer https://github.com/pyglet/pyglet/zipball/69735d0ba65728f7093437149750b52c1fd1cd95
> pip install git+https://github.com/labsn/expyfun
> python C:\path\to\expyfun\examples\stimuli\simple_video.py

[...SNIP]

Traceback (most recent call last):
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\site-packages\pyglet\media\codecs\wave.py", line 58, in __init__
    self._wave = wave.open(file)
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\wave.py", line 509, in open
    return Wave_read(f)
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\wave.py", line 163, in __init__
    self.initfp(f)
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\wave.py", line 130, in initfp
    raise Error('file does not start with RIFF id')
wave.Error: file does not start with RIFF id

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\drmccloy\Desktop\expyfun\examples\stimuli\simple_video.py", line 25, in <module>
    ec.load_video(movie_path)
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\site-packages\expyfun\_experiment_controller.py", line 881, in load_video
    self.video = Video(self, file_name, pos, units)
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\site-packages\expyfun\visual\_visual.py", line 1095, in __init__
    self._source = load(file_name)
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\site-packages\pyglet\media\__init__.py", line 142, in load
    raise first_exception
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\site-packages\pyglet\media\__init__.py", line 132, in load
    loaded_source = decoder.decode(file, filename, streaming)
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\site-packages\pyglet\media\codecs\wave.py", line 105, in decode
    return WaveSource(filename, file)
  File "C:\Users\drmccloy\mambaforge\envs\test\lib\site-packages\pyglet\media\codecs\wave.py", line 60, in __init__
    raise WAVEDecodeException(e)
pyglet.media.codecs.wave.WAVEDecodeException: file does not start with RIFF id
Closing <rtmixer.Mixer object at 0x0000026F7FA6ABE0>

You probably need pyglet-ffmpeg. Maybe we should have a pip install expyfun[video] if we don't have it already

hmm, just recreated the test env with pyglet-ffmpeg added to the pip install line, and I'm still getting the same error.


Auto-complete is not working correctly

VSCode Version: 1.33.1
OS Version: Ubuntu 18.04 LTS

Steps to Reproduce:

Press "this."
2.Got "thisis."

Does this issue occur when all extensions are disabled?: Yes
This bug is really annoying. It happened so frequently. Please fix it.

@jrieken Not sure if same cause as https://github.com/Microsoft/vscode/issues/70974

I workaround by setting:
"editor.acceptSuggestionOnCommitCharacter": false
and It haven't happened again

/duplicate of #70974


[Documentation Suggestion] Address possible concerns about the order of compound primary keys and unique

Drift uses Set for setting compound primry keys and unique. Sqlite creates indexes for such fields and, in some cases, order of these fields might be important. Set, though, is usually considered to not preserve any order of its elements, which might result in some concerns. In Dart, though, default Set implementation is LinkedHashSet, which actually preserves the order of its elements and won't result in any problems.
Maybe it should be mentioned in documentation to avoid any concerns from people not aware of the default Set implementation in Dart? Or maybe even change types of these fields in Table class from Set to LinkedHashSet to make it absolutely clear?

Thanks for opening the issue, I didn't know about this. Do you have an example where the order actually matters?
I agree that it's better to use a LinkedHashSet to express that ordering is important. But it also feels like unnecessary breaking users. Since we look at these set literals at compile time, we also know the intended order. However, we can change the type in TableInfo to be a LinkedHashSet and adapt the generated code accordingly.

When you creating a compound primary or unique, or actually coumpound indexes in general, the created index can also be reused as an index for the first column as it's already sorted in the compound index, while second column can't, as it's sorted only per each specific value in the first column (at least I remember reading that, I might misunderstand something). Some simple example would be having a coumpound primary key of group_id and inside_group_id. If I need, for example, get all items from specific group, then, if group_id is the first field in index, it will be resused for that porpose, but not if inside_group_id goes first insted.
As for code changing, it seems that Dart already using LinkedHashSet by default, so everything should work fine already and the only problem is to cleary convey it for users, who might be conserned in cases where it matters. Probably just mentioning it in documentation or/and in incode documentation would be sufficent.


3 - Part C and Part D - Optional Extra Credit 1

3. Optional extra credit 1: regex to separate companies from individuals
C. Iterate over the name_clean column in debar and use regex to create two new columns in debar:

co_name: A column for company (full name_clean string if no match; pattern before COMPANY if one extracted)
ind_name: A column for individual (full name_clean string if no match; pattern before INDIVIDUAL if one extracted)

D. Print three columns for the rows in debar containing the negative example and positive example described above (county fair farm and cisco produce):

name_clean
co_name
ind_name
Violation

Hi Professor - I am having trouble extracting groups from re.search. I could do it for the example, but for the full list, I cannot extract the group 1 match (company name). The list comprehension returns the match: <re.Match object; span=(0, 61), match='COUNTY FAIR FARM (COMPANY) AND ANDREW WILLIAMSON > .
What am I missing?

Hi Professor - I am having trouble extracting groups from re.search. I could do it for the example, but for the full list, I cannot extract the group 1 match (company name). The list comprehension returns the match: <re.Match object; span=(0, 61), match='COUNTY FAIR FARM (COMPANY) AND ANDREW WILLIAMSON > . What am I missing?
This is just because debar_3c1 is the entire list made with your list comprehension, it's all the elements inside it that are either re.Match type or NoneType.

@FanniVarhelyi : The answer provided by @brad-wayne is correct. So you would have to find a way to access the elements inside the list. You can do a print statement to check if debar_3c1 produces the result you want - just to be sure.


Attempt to fix #11

This attempts to identify and skip headings in comment or fenced code blocks.

Thanks @tshort The last two spec tests do not pass:

@melke , any idea what's wrong with the specs? It seems to work right when playing with that file.
Any tips on debugging spec files?

@tshort  It's really strange that the line counting doesn't work in those spec tests. As you say, the functionality seems to work flawlessly when not run in spec context. Could it be that some folding-within-folding confuses the line counting functions in Atom? I would like to see the specs pass, though, mainly for regression testing in the future when new functionality is added. (The code is getting a bit complex). I'll try to find another way of doing the expect checks, other than line counting. If you have any ideas, feel free to push into this PR.

I'm stumped. I tried playing around with the debugger. The problem is, you can't "see" the buffer under test that's being manipulated. There's probably something different about how it treats the scope lookup when in "test mode".
If we can't think of anything, I suggest we comment out the tests.

Discussion posted:
https://discuss.atom.io/t/spec-fails-but-works-right-in-editor/22064

@melke, do you know how to do this?
https://discuss.atom.io/t/spec-fails-but-works-right-in-editor/22064/7?u=tshort

Tests run now! Discuss user "abe" figured it out. See the discussion link above.

Thank you @tshort
It works great!

Hi @tshort I couldn't find a better way to contact you besides through this PR :)
I'm wondering if you would be interested in taking over as the maintainer of the markdown-folder package? The thing is that I have completely stopped using Atom and hence markdown-folder myself. For various reasons, I am using emacs for everything nowadays. I feel that you would be a much better maintainer, since you actually have created the most advanced features in the package. Would you be interested in being the maintainer?

Yes, I can do that, Mats...
On Sat, May 14, 2016 at 2:50 AM, Mats Melke<EMAIL_ADDRESS>wrote:

Hi @tshort https://github.com/tshort I couldn't find a better way to
contact you besides through this PR :)
I'm wondering if you would be interested in taking over as the maintainer
of the markdown-folder package? The thing is that I have completely stopped
using Atom and hence markdown-folder myself. For various reasons, I am
using emacs for everything nowadays. I feel that you would be a much better
maintainer, since you actually have created the most advanced features in
the package. Would you be interested in being the maintainer?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/melke/markdown-folder/pull/12#issuecomment-219204620

Thank you Tom! That's great! As I understand it, the only things needed for the transfer is to transfer ownership of the github repo and then update the package.json when publishing the package to Atom. (According to this discussion: https://discuss.atom.io/t/need-maintainers-for-some-projects/13850
I'll transfer the repo to you then. Good luck with the development in the future!

Hi again @tshort I tried to transfer the repo, but your forked copy with the same name is blocking the transfer. Could you please remove or rename the forked repo?

I deleted  my forked repo...


Apa107

Good day,
Not sure where to list this at so i made a blank issue. I recently got my hands on a couple of apa107 144/m strips. When i did some digging into these led's i found that they are the replacement for the apa102.
Now when i connect them to the pi and power everything on only 101 led's light up one the strip. the rest is not working at all.
I used the apa102 from the controller type dropdown in the webconfig.
Is there a way to get the entire strip to light up or is it something that i cannot fix myself and needs to be done on the software side?
running Hyperion alpha-6

please fill out the issue template and dont ignore it!


[Bug]: build.sh failed

Check Before Asking

[X] Please check the issue list and confirm this bug is encountered for the first time.
[X] Please try full text in English and attach precise description.

Environment
No response
Fast Reproduce Steps
command "cd oceanbase-diagnostic-tool && sh ./build/build.sh" failed
Actual Behavior
command "cd oceanbase-diagnostic-tool && sh ./build/build.sh" failed
Expected Behavior
No response
Other Information
No response

fixed. commit: https://github.com/oceanbase/oceanbase-diagnostic-tool/commit/1407153f2772cd79d3fda515ae849339be4658c0


Grade

10 Points for each category

Install Instructions
10
Correct
0
I haven't been able to verify
Testing
3
Local - but not using github actions for CI (also very few functions are actually tested)
Docs
4
Docs are built locally, but not hosted, nor complete (no examples/theory etc)

I added tests for every working function (montecarlo method would still need to be fixed). The CI is also working with an actions script. The website is also at the link in the description (which I'll add to the README). I'll add usage, examples, and theory to the doc.

I'll probably add CI results to the README

That sounds good. Add both the CI and Docs (also coverage if you wish) badges so I can see the status from the main page.

I added both badges, gave an example, and now have the html built with the CI. I'll add the theory when I have time before Wednesday, but currently the formulas are referenced


Reusing existing canvas on Web targets

Hi,
I'm working on a game written in Rust with the seed library as the front-end. This makes it easy to make GUI and it's easy to get a canvas to render to. I'm really enjoying what I'm seeing from this library and as I want to be able to render 2D as well as 3D, this looks like the perfect library for me.
I'm wondering if anyone can support me on being able to reuse a canvas from seed to create a Window from. As far as I read from the documentation, the Context only needs a reference to a wasm-bindgen CanvasRenderingContextGl, which I can easily provide as seed also uses wasm-bindgen. However, I'm unsure on how to create the window as the Window struct only takes WindowSettings. I need the canvas to be in a particular layout, that's why I can't just create a window using three-d.
Thanks so much for this library, it's looking excellent!

I looked at the source and found that the canvas module allows you to call set_canvas to the Window struct, so this will do what I need!

Thanks a lot for the kind words 👍 and perfect you found the solution.


NVDA/JAWS should announce the placeholder text provided at edit fields in command palette.

Hello, we have been recently testing out our extension for accessibility bugs, and we believe we may have found one directly linked to vscode. The extension we are using is Bridge to Kubernetes.
https://learn.microsoft.com/en-us/visualstudio/bridge/bridge-to-kubernetes-sample
Does this issue occur when all extensions are disabled?: Yes

VS Code Version: Visual Studio Code Version 1.73.1. (user setup)
OS Version: Windows 11 Version 21H2 (OS Build 22000.376)

Steps to Reproduce:

Turn on NVDA/JAWS.
Open Visual studio code application and setup Bridge to Kubernetes extension.
Download cluster config file and load 'stats-apo' project.
Press 'Ctrl+Shift+P' open command palette in View menu.
Select 'Bridge to Kubernetes: Configure' and press enter.
Navigate using down arrow key to select 'stats-api' in connect to kubernetes (1/4) stage and press enter.
Input '3001' in connect to kubernetes service: stats-api (2/4) stage and press enter.
Verify whether NVDA/JAWS is announcing the given placeholder text at edit field or not.

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.73.1. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

Hi @meganrogge,
The bug still exists with the new vscode version. I edited the original post. Thanks!

@TylerLeonhardt I think you just worked on improving the accessibility of the quick pick - thoughts on this?

Sorry I'm not sure I totally follow here. Just to make sure, @qpetraroia can you attach a gif?
/gifPlease

Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, .gif files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.
If the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (Developer: Toggle Screencast Mode in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue.
Happy coding!

@TylerLeonhardt from the above description, I believe what @qpetraroia expects is for the placeholder text to be read before the selected item is

Thanks for the comments @TylerLeonhardt and @meganrogge. I will try and get a gif for you folks in the upcoming days!

@qpetraroia video uploads on GitHub issues work now so you can always attach here :)

@TylerLeonhardt, @meganrogge I have attached a video below! Basically, the place holder text should be read with NVDA. The accessibility folks have flagged this as a bug. Thanks!
https://user-images.githubusercontent.com/11465526/207136896-fd15d929-d12d-4941-8074-bd588a8288fa.mp4

@qpetraroia do you have Accessibility mode turned on? Just checking

you can turn that on with editor.accessibilitySupport: on

Let me test that today @TylerLeonhardt @meganrogge, thanks!

@meganrogge where do I find editor.accessibilitySupport: on ?

Ctrl+, and search for editor.accessibilitySupport. The alternative way would be to run the editor.action.toggleScreenReaderAccessibilityMode command via the command palette

Thanks for this @meganrogge, it was set to auto. I will turn it to on and try again

@meganrogge, @TylerLeonhardt. It is still not pronouncing the text in the edit field. Would you classify this as a bug or is this just a part of VsCode?

I can reproduce the issue - @TylerLeonhardt I'd expect the placeholder text to be read before the selected item is, but that does not happen.

Example: In a multi root workspace, run Terminal: Create new terminal with profile. I'd expect it to read to me: "Select current working directory for the new terminal"

Logging shows that the quick input's aria label is correctly set.
https://github.com/microsoft/vscode/blob/391acf814912c636ca259030e26975df5ee683ed/src/vs/base/parts/quickinput/browser/quickInput.ts#L540-L544
After that though, when an item is selected by default, its aria label takes precedence

Perhaps when editor.accessibilityMode is true, we could not select an item by default so that the placeholder text will have focus every time?

we could not select an item by default so that the placeholder text will have focus every time?

@meganrogge thought that was the behavior today?

I mean when you run a command that opens a quick pick such as Terminal: Create new with profile

commenting out this code fixes it https://github.com/microsoft/vscode/blob/391acf814912c636ca259030e26975df5ee683ed/src/vs/base/parts/quickinput/browser/quickInput.ts#L778-L784

so I think we need to check there if accessibilitySupport and not focus

Looks like this use to be reported in https://github.com/microsoft/vscode/issues/57501

odd @meganrogge I don't repro with that command you have... wonder if we have a conflicting setting

for me, the placeholder is not read in most cases

@TylerLeonhardt my repro steps were when in a multi root repo, run that command. the first quick pick placeholder isn't read

Hi @TylerLeonhardt and @meganrogge,
I see this as moved to the backlog. Do we have a rough date in which this could possibly be looked at again? I plan on telling the testers that you two are looking at the bug. Thanks!

I did it in "holiday mode" as a lot of us are disappearing for the holidays. I'll leave it on January

Thanks for the update @TylerLeonhardt, that totally makes sense. I will let the testers know. Happy holidays!

@TylerLeonhardt do you see a way to do this? it's not clear to me where the item is getting focused

@rperez030 is open to testing the PR once it is available

We'll try to fix this in February with the following read by the screen reader via @TylerLeonhardt :

placeholder of input box (note this doesn’t logically have to be the placeholder, it could be an aria label set somewhere)
number of items in the list
the label of the highlighted item in the list (aka the first item in the list)

I just discussed with @TylerLeonhardt and he says
"I need an ARIA expert because I can’t get this to work nicely.
aria-activedecendent is what we use today on the quick pick input box. That points to the focused item in the list. This is needed because true focus always stays in the input box. The problem is that if an element has aria-label AND aria-activedecentdent the aria-label is ignored.
I’ve tried a few other solutions and haven’t had luck, unfortunately. Looking for creative solutions"
@scottaohara might you have suggestions here?

Just to provide an update...
After chewing on the problem yesterday, my best idea is to try to mirror this design pattern as much as possible: https://w3c.github.io/aria-practices/examples/combobox/combobox-autocomplete-list.html
Applying it to the quick pick means making the following changes:

in a11y mode, we do not focus any of the items in the list. Doing this, we can easily ensure that the placeholder is read out because aria-activedecentant won’t be set yet
in a11y mode, When the user types something in the input box, aria-activedecendent is removed and we remove the "active" state of the elements (thus focus goes back to the input)

When pressing down the first element is highlighted. aria-activedecendent is set on the inputbox pointing to that item. The item gets read out. Nothing new here.
While this pattern is fine, it's not really what I want because the QuickPick isn't really a combo box (though I'll admit it's close). I’m sad because I would rather not have specific a11y mode behavior here… but this is the best I think we can offer with my ARIA skills.
Tl;dr: I need a solution for reading the placeholder of the quickpick input box first and then read out the first highlighted item in the list (the aria-activedecendent)

Hi team. I’m reading the thread and I’m probably missing something but I’m concerned that there is perhaps a misunderstanding about how the quick input experience works in general and the particular issue of the Bridge to Kubernetes extension. Perhaps I’m missing the problem, but the quick input list works well for me. Here is an example:

Open the command palette by pressing CTRL +Shift +P
a. NVDA announces the label and placeholder text for the editable field as follows: “Type the name of a command to run.  combo box  has auto complete  editable  Press 'Enter' to confirm your input or 'Escape' to cancel>”.
I type git, for example, and select the Git clone command with the arrow keys and Enter.
a. Upon selecting the command, focus returns to the editable section and NVDA reads the prompt as follows: “Provide repository URL or pick a repository source.  combo box  has auto complete  editable  Press 'Enter' to confirm your input or 'Escape' to cancel  Provide repository URL or pick a repository source.  blank”.
I use the arrow keys to select the option to clone from remote sources and press enter on it.
a. Upon pressing Enter, focus returns again to the editable field and the prompt is read again: “Repository name (type to search)  combo box  has auto complete  editable  Press 'Enter' to confirm your input or 'Escape' to cancel  Repository name (type to search)  blank”.
I wouldn’t expect this to behave any different. The only instance where I have observed a different behavior is with the Bridge to Kubernetes extension where, upon selecting the connect command, for example, screen reader focus seems to jump directly to the list instead of the editable portion which is the standard behavior, maybe because aria-activedescendant is set at a time when it shouldn't?

@TylerLeonhardt  why you would like the placeholder text and the first highlighted item to be read together? I understand the placeholder text as the label for the editable field, therefore it is relevant only when the editable field is focused. By focused in this context I mean that it has screen reader focus, not keyboard focus. When we manipulate aria-activedescendant we are communicating the screen reader to focus on a different control, therefore the label of the control with focus shouldn't be read. The label of the list portion is "Quick Input  list", and that is actually the hint that we are now exploring the list of options. I fully agree that we should stay away from an A11Y exclusive mode as much as possible.

why you would like the placeholder text and the first highlighted item to be read together?

@qpetraroia because this is the behavior of a sighted users today. They are able to see the placeholder in the input box and the first item in the list is already focused (using aria-activedescendant). This allows a user to be shown the quick pick and be able to hit ENTER to accept the first item in the list. Putting the "quick" in "quick pick".
Today, users of a11y mode via the setting editor.accessibilitySupport have a different experience, which is what you describe... no item is initially focused and a user in a11y mode must hit down arrow to get to the first item in the list.
My wish is that we could have the same experience for users of a11y mode and not... but my research above, albeit not expert level, has given me the perspective that it's just not possible... and that it would be easier to fix the bug you call out which can be simplified to:
"When we chain quick picks we need to remove aria-activedescendant on any item if one exists so that the 2nd quick pick reads the placeholder"

Thanks @TylerLeonhardt. I think I understand now. Since this is really not a  combobox, I would then suggest a change to the way this works from a keyboard and screen reader perspective. Please take this as a general idea which could be significantly refined or completely abandoned.

Tab and Shift +tab can be used to move focus between the edit field and the list box. Tab works now, but shift +tab doesn't return focus to the text field. Visual keyboard users can press Enter in the text field to trigger the first element in the list which is selected. Blind screen reader users can tab to the list to hear / read the element selected and press enter from there.
Typing text in the text field changes selection visually and updates an aria-live region with the selected item in the list. In a way it is better than manipulating aria-activedescendant because the text is still editable. note: It should be a visually hidden live-region which will only contain the visually highlighted item at a given time.
Typing while focus is in the list filters the list as it does now but doesn't update  the aria-live region because screen readers are tracking ffocus in the list itself therefore there is no need to announce anything.
While focus is in the text field, pressing down arrow changes selection in the list and moves focus to the list itself.
if quick pick changes resulting from selecting an option, we reset focus to the edit field so that the placeholder is read. Screen reader users can then tab to the list to hear the selected item / navigate, or start typing in the edit field.
We remove the combobox role from the text field because we agree it is not a combobox.

note: As a blind screen reader user myself, I don't know how the experience looks / feels like from a visual perspective. For example, I don't know if sighted keyboard users can edit the text as they type, or if there still an insertion point visible in the text field as ones navigates in the list with the keyboard as it is now.

@rperez030 I think we are on to something here... Thanks for your input. It sounds like, from what I can tell, you are suggesting we drop aria-activedescendant usage from the input box and go with your alternative. I'm intrigued by this idea.
I have a couple of follow ups mostly because my ARIA skills are quite low:

quoting you:

Typing text in the text field changes selection visually and updates an aria-live region with the selected item in the list. In a way it is better than manipulating aria-activedescendant because the text is still editable

Could you explain the difference between these two approaches? How are they represented differently via a screen reader? Just to confirm, yes, the inputbox that currently has aria-activedescendant is still editable and should be editable. We want users to be able to continue typing to further filter the list... just like a combobox.

you said:

Typing while focus is in the list filters the list as it does now but doesn't update the aria-live region because screen readers are tracking focus in the list itself therefore there is no need to announce anything.

Today, when you type a character, the active item in the list becomes the first item in the list. I would imagine we would still announce via aria-live if that item isn't the one the screen reader user is on?

to clarify what you said here:

or if there still an insertion point visible in the text field as ones navigates in the list with the keyboard as it is now.

Yes. Visual users are able to see a cursor in the input box that they can move left to right as they choose and edit the text in the box while an item in the list is active (again, similar to the combobox example I linked above). This works today because true focus is entirely kept by the input box. "fake focus" or what we call "the active list item" never actually gets browser focus, it just appears "focused" or "active" or "highlighted" to the user compared to the items in the list.

@rperez030 thanks a lot for your comments! I really want to sit down and play with aria-live some more based on your idea. Considering that this issue is pressing, I've made a small change to get the placeholder to be read out.

@TylerLeonhardt  happy to test that change when it becomes available in an insiders build, or remotely with you in case you want earlier testing. for my idea to work, it would require some changes in keyboard behavior as well, and careful testing so that we don't break current user expectations around a widget which is critical for some customers. feel free to reach out if you need additional input.

This bug has been fixed in the latest release of VS Code Insiders!
@qpetraroia, you can help us out by commenting /verified if things are now working as expected.
If things still don't seem right, please ensure you're on version 6fe3014566312d1e2a41925c78201b8e8490fe77 of Insiders (today's or later - you can use Help: About in the command palette to check), and leave a comment letting us know what isn't working as expected.
Happy Coding!

I did some testing using the latest insiders build and NVDA
Results with screen reader mode on:

Placeholder text is announced when the widget receives focus.
When typing in the text field, the number of results is announced by NVDA but not the highlighted option. This can be a productivity killer. I believe the announcement of the highlighted option is the most important piece of information while typing. the number of results is irrelevant at this point. It becomes important when the user starts to navigate with the arrow keys, and at that time the screen reader takes care of it.

Screen reader mode off:

When the widget receives focus, the number of results is communicated by NVDA followed by the announcement of the quick input list and the highlighted element, but the placeholder text is not announced, likely because the "combobox" portion doesn't have focus.
when typing, NVDA announces changes in the highlighted option in Braille and speech as expected.

Verified the issue in latest environment:
Version: 1.78.0-insider (user setup)
Issue is fixed. Hence closing the bug. please find added attachment for reference.
#Closed

#Closed
Verified the issue in latest environment:
Version: 1.78.0-insider (user setup)
Issue is fixed. Hence closing the bug. please find added attachment for reference.
https://user-images.githubusercontent.com/98530069/230830708-4550f37d-042f-4d8e-98ee-3d8eac9b5c0c.mp4


Adding python playground, for exercise purpose

before testing you need to install dependencies , i've downloaded some packages .... please give any feedback !!!

what i done :

Here the package.json file packages :
com/thecuriousteam/PyLibLog/assets/77772897/c3595edf-73eb-45cc-9a72-82c502296249)


Update filter tree schema

TODO:

[x] Add version header

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 1
- Added 1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 3

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 3

See the complete overview on Codacy


Introduce linting

I introduced eslint & jscs linting. Eslint is a nice default, but jscs has a few rules that eslint can do to keep code consistent & sane. Also added travis here to run the linters on every PR.
I suggest we stick to the AirBnB presets. These presets are well maintained and updated regularly in case elint or jscs add new features.
The one thing you might find really weird is the rule to add a , to the last entry of a list or object. The benefit here is when adding or removing code you don't have to change two lines and the PRs become easier to parse.
Example:
const a = [
   a: 1,
   b: 2,
]

to

const a = [
   a: 1,
   b: 2,
   c: 3, // only this line changed
]

Example without , on the last entry:
const a = [
   a: 1,
   b: 2
]

to

const a = [
   a: 1,
   b: 2, // this line changed
   c: 3 // this line changed
]

If it's too weird let me know & I move it back.

I didn't know that was why the rule exists, that makes so much sense!


Build Rust from source instead of using Rustup

Fixes #3 and #7.
Please note that the standalone Rust binary (as proposed at #3) isn't being used here for bootstrapping. Instead, we let the Rust build scripts download their own bootstrapping binary. This shouldn't sacrifice safety/reproducibility of the build as the Rust build machinery does the necessary checks (see https://github.com/rust-lang/rust/blob/master/src/stage0.json).

@BKPepe @autobakterie I sincerely hope that this is the last piece of our puzzle :)

I'm afraid that I am not able to look at it for a few days as I have some deadlines, which I need to finish.

I'm afraid that I am not able to look at it for a few days as I have some deadlines, which I need to finish.

No problem. Just let me know once you get to it. Thanks.

A quick update: The branch builds fine on my machine. I haven't tested full build in the build system yet.

This has been tested that it compiles the packages for Turris MOX, Turris Omnia and Turris 1.x. On the last mentioned device (the powerpc one), it was successfully run tested even though there were some minor issues, which does not prevent it from being included in Turris builds. Anyway, what's left is to review your changes and if build system correctly removes it, etc. I will take a look at it, very soon.

Perfect. So are you OK with merging this PR and creating separate PRs for any additional issues that might pop up?


RecyclerViews positional click

Hey Hannes, how would a click listener work with positional clicks, similar to listviews?
I have tried the sample and have gotten to the point where I can differentiate between types of clicks(text, and image).

Im not sure if I understood your problem correctly, but typically I do something like this:
public class SampleAdapter extends SupportAnnotatedAdapter
		implements SampleAdapterBinder {

      static class MyClickListener implements OnClickListener {

            public String dataItem;

            public void onClick(View v){
                  // Do something --> dataItem is the underlying data
            }
      }

	@ViewType(
			initMethod = true,
			layout = R.layout.row_with_pic,
			views = {
					@ViewField(id = R.id.textView, name = "text", type = TextView.class),
					@ViewField(id = R.id.imageView, name = "image", type = ImageView.class)
			},
			fields = {
					@Field(
							type = MyClickListener.class,
							name = "clickListener"
					)
			}
	)
	public final int rowWithPic = 0;

      @Override
       public void initViewHolder(SampleAdapterHolders.RowWithPicViewHolder vh, View view, ViewGroup parent) {
		vh.clickListener = new MyClickListener();
		vh.itemView.setOnClickListener(vh.clickListener);  // sets click listener to whole view, you could replace that with vh.text.setOnClickListener(vh.clickListener) or whatever you want to achieve.
      }

      @Override
      public void bindViewHolder(SampleAdapterHolders.RowWithPicViewHolder vh, int position){

		String str = items.get(position);
		vh.text.setText(str);
		vh.text.setOnClickListener(this);
		vh.image.setOnClickListener(this);
		vh.image.setImageResource(R.drawable.abc_btn_rating_star_off_mtrl_alpha);
		vh.clickListener.dataItem =  str;
	}

    ...
}

Thanks, I was able to get the functionality for the position with something similar to the above code; minus initViewHolder (not a method of recyclerview.SupportAnnotatedAdapter), and other minor modifications.

vh.clickListener.position = position;

That only works  as long as you don't change the adapters dataset, since bindViewHolder() will not be called again for views that are already displayed on screen.

Unfortunately initViewHolder doesn't compile.  The @Override complains:

Method does not override method from its superclaass

Then you simply have not implemented the correct method. Use quickfix in android studio to let android studio implement the method skeleton for you. Also keep in mind that you may have to rebuild (recompile) your project if you change your annotations.

@sockeqwe Looking at sourcecode for support-recyclerview-1.1.1-sources SupportAnnotatedAdapter, I do not see a an onInitiViewHolder method in there.  Should there be one?

The onInitiViewHolder() methods gets generated if you set it explicitly in your annotation:
@ViewType(
            initMethod = true,
            ...

@sockeqwe Thanks for the help, I wouldn't have figured this out on my own as there are some moving parts here.  Keep making AnnotatedAdapter better!  @changetip $1.

Hi @sockeqwe, @IgorGanapolsky sent you a tip worth 4,079 bits ($1.00), and I'm here to deliver it ➔ collect your tip.
Learn more about ChangeTip


test: golangci-lint got pickier, satisfy it

The Issue
golangci-lint just got way more particular about unused function parameters
How This PR Solves The Issue
Pacify the linter

Seems to satisfy static validation now.


ai app.md

import tkinter as tk
from tkinter import filedialog
import pyaudio
import wave
class Song:
def init(self, title, artist, category, filepath):
self.title = title
self.artist = artist
self.category = category
self.filepath = filepath
class MusicPlayer:
def init(self):
self.library = []
self.chunk = 1024
def add_song(self, title, artist, category, filepath):
    song = Song(title, artist, category, filepath)
    self.library.append(song)

def play_song(self, filepath):
    wf = wave.open(filepath, 'rb')
    p = pyaudio.PyAudio()

    stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                    channels=wf.getnchannels(),
                    rate=wf.getframerate(),
                    output=True)

    data = wf.readframes(self.chunk)

    while data:
        stream.write(data)
        data = wf.readframes(self.chunk)

    stream.stop_stream()
    stream.close()

    p.terminate()

Initialize Tkinter
root = tk.Tk()
root.title("Music Player")
Create music player instance
player = MusicPlayer()
Function to handle play button click
def play_songs():
category = category_var.get()
for song in player.library:
if song.category.lower() == category.lower():
player.play_song(song.filepath)
Function to handle upload button click
def upload_song():
song_filepath = filedialog.askopenfilename(filetypes=(("MP3 files", ".mp3"), ("All files", ".*")))
if song_filepath:
player.add_song("Custom Song", "Unknown Artist", category_var.get(), song_filepath)
GUI elements
tk.Label(root, text="Select Category:").pack()
category_var = tk.StringVar(root)
category_var.set("Pop")  # Default category
categories = ["Pop", "Love", "Rock", "Custom"]  # Add more categories if needed
category_dropdown = tk.OptionMenu(root, category_var, *categories)
category_dropdown.pack()
play_button = tk.Button(root, text="Play", command=play_songs)
play_button.pack()
upload_button = tk.Button(root, text="Upload Song", command=upload_song)
upload_button.pack()
Adding songs to the library
player.add_song("Shape of You", "Ed Sheeran", "Pop", "path/to/shape_of_you.mp3")
player.add_song("Love Story", "Taylor Swift", "Pop", "path/to/love_story.mp3")
player.add_song("Perfect", "Ed Sheeran", "Love", "path/to/perfect.mp3")
player.add_song("All of Me", "John Legend", "Love", "path/to/all_of_me.mp3")
player.add_song("Hotel California", "Eagles", "Rock", "path/to/hotel_california.mp3")
root.mainloop()

definite nonsense ☹


cmd/go, runtime/cgo: go module didn't download cgo soft links of dynamic library correctly

What version of Go are you using (go version)?

$ go version
go version go1.12 linux/amd64

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/lhc/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/lhc/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build969375030=/tmp/go-build -gno-record-gcc-switches"

What did you do?
I am trying to switch my golang project from gopath to gomodule. One of the package my project imported is using cgo to call ffmpeg, the package have several dynamic ffmpeg libraries, for example:libavcodec.so ,libavcodec.so.57 ,libavcodec.so.57.107.100 , the fisrt two file is soft link file The problem is when i go build my golang project, go module only download libavcodec.so.57.107.100, it didn't download the other two soft link file
What did you expect to see?
I expect go module download all c dynamic libraries files including soft link files
What did you see instead?
i didn't get the soft link files
ps:1. When i use go get to get the package, i got all the dynamic libraries successfully, including all the soft link files
ps:2. Here is all the dynamic libraries i want and i get.
ls ~/go/src/plugins/ffmpeg Output
$ ls ~/go/src/plugins/ffmpeg
libavcodec.so             libavdevice.so            libavfilter.so            libavformat.so            libavutil.so            libswresample.so          libswscale.so
libavcodec.so.57          libavdevice.so.57         libavfilter.so.6          libavformat.so.57         libavutil.so.55         libswresample.so.2        libswscale.so.4
libavcodec.so.57.107.100  libavdevice.so.57.10.100  libavfilter.so.6.107.100  libavformat.so.57.83.100  libavutil.so.55.78.100  libswresample.so.2.9.100  libswscale.so.4.8.100

ls ~/go/pkg/mod/gitlab.com/plugins/ffmpeg Output
$ ls ~/go/pkg/mod/gitlab.com/plugins/ffmpeg
libavcodec.so.57.107.100  libavdevice.so.57.10.100  libavfilter.so.6.107.100  libavformat.so.57.83.100  libavutil.so.55.78.100  libswresample.so.2.9.100  libswscale.so.4.8.100

@bcmills @jayconrod @ianlancetaylor

This behavior is intentional. See https://github.com/golang/go/issues/24057#issuecomment-377430635 (via #27093).


add license title; use recommended license text

The title is not strictly required, but it's useful metadata, and part of the recommended license template text (see http://choosealicense.com/licenses/isc/ and https://opensource.org/licenses/isc-license).

[Current coverage][cc-pull] is 80.19%

Merging [#64][cc-pull] into [master][cc-base-branch] will not change coverage

@@             master        #64   diff @@
==========================================
  Files             6          6
  Lines           202        202
  Methods           0          0
  Messages          0          0
  Branches         26         26
==========================================
  Hits            162        162
  Misses           35         35
  Partials          5          5

Powered by Codecov. Last updated by [cc4e4f4...44ef74b][cc-compare]
[cc-base-branch]: https://codecov.io/gh/achiku/jungle/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/achiku/jungle/compare/cc4e4f4c0081c6c071aa83ecc739f2b3d8d9e6c9...44ef74b87bb5c0dae18b2ac85f1e64f9149900f9
[cc-pull]: https://codecov.io/gh/achiku/jungle/pull/64?src=pr

@waldyrious Thank you for pointing this out! This tool is built when I wasn't really aware of any LICENSE, and yeah, I googled a bit before publishing jungle, and picked ISC license.... Now, all my tools/libraries are published under MIT license, so I will close this pr and update LICENSE file soon. But, thank you so much for the pr!

@achiku no problem, happy to have triggered a license clarification :) cheers.


Add silent.toml

Silent validator is a professional cosmos ecosystem validator, running 10+ cosmos ecosystem mainnet validators such as Canto,Evmos, Evmos, Stargaze, Stride. And we active participate in various testnet.
We are fan of privacy, have followed anoma/namada for long time, joined few past testnets as non-genesis validator. Looking forward to join testnet-8 as genesis validator.
Website: https://silentvalidator.com
Twitter:  https://twitter.com/EthExploring

https://github.com/anoma/namada-testnets/pull/950 new PR


Exportable comments

This is a feature request:
So I assume it's okay, albeit not explicitly stated in the docs (to my knowledge) to include comments in a PITCHME.md, whether that be:

HTML comments or
Markdown hackery.

If so, then would you consider adding some kind of export where I can see a thumbnail of each slide, next to any comments for that slide?
The end goal would be something like slide preview and annotations.

Something like Jekyll's front matter could also work.

Thanks for the feedback @dukedave nice idea. But right now this kind of speaker notes feature is not something I have the cycles for but I'll keep the issue open and get back to evaluating it when time permits.

Okay great!
I understand totally 😄

I've been littering my slides with HTML comments which are (correctly!) ignored by the renderer, but it'd be great if a per-slide or presentation-level notes section could be shown by an alternative renderer.
One of the up-sides, for me, of having markdown as the golden source is that it forces you into a kind of "powerpoint-lite" model of presentation. You can't rely on reading the slides for direction; you must know the material. Well, that requires a way for the author to communicate the narrative to the presenter.
I've been solving this with github wiki, which sits quite well alongside the slide markdown itself. But it's like comments in code - they get out of date, people forget to check for updates, and if you distribute or print your slide deck, the notes aren't right there.
So a +1 for @dukedave's request, a high-five for @gitpitch for an awesome product, and a resolute thumbs-down for "[//]: <> (This is also a comment.)"!

I've just activated the reveal.js speaker-notes feature for all GitPitch offline presentations. As I have not yet had time to update the Wiki here are the steps you need to follow in order to use this new feature. You can use a sample presentation that includes speaker-notes so you can see exactly how this works:

Add speaker-notes for some or all of your slides in your PITCHME.md
Once you have pushed your PITCHME.md open your presentation on gitpitch.com.
Click Offline to download your offline presentation bundle (zip archive)

Use https://gitpitch.com/onetapbeyond/gen_metrics to test a sample presentation that includes speaker notes in the markdown.

Open the offline presentation bundle (zip archive) on disk
Follow the Slideshow Offline Wiki instructions to open and view the presentation
Once your offline presentation is open in your browser, press the s key on your keyboard
The new speaker-notes view will pop-open into a new window
Enjoy ;-)

Again, here is a link to a sample presentation:
https://gitpitch.com/onetapbeyond/gen_metrics
It just happens to be a presentation for another project that I'm working on and it shows my real notes. Even if you're not interested in the specific content of this project, you will see just how simple it is to add notes to your presentations and then enjoy the new speaker-notes view which you can use to drive and pace your talks.

Incredible.

Thanks :) Btw, here is a screenshot for anyone reading this thread so they can get a sense of what's now available when you activate speaker-notes for any GitPitch offline presentation:

Wiki has been updated with complete documentation for this new speaker notes feature.

Quick update on thread. I've just announced support for live speaker notes for all online and offline GitPitch presentations. See blog post for details:
https://medium.com/@gitpitch/presentation-speaker-notes-for-everyone-19bdc67b1910


USB (including Keyboard and Mouse) Don't Work on macOS 14.4 Sonoma

Which operating system are you trying to install?
macOS Sonoma
Describe the bug
When running macOS using the make.sh --add, USB devices including keyboard and mouse don't work.
To Reproduce
Steps to reproduce the behavior:

Install macOS Minterey using the "Manual Installation" guide
Add the VM to virt-manager using make.sh --add
Take note that mouse and keyboard still work
Upgrade your macOS in the settings app
Take note that after a reboot, both mouse and keyboard don't work anymore.

Expected behavior
Mouse and keyboard input should be picked up
Screenshots
n/a
Desktop (please complete the following information):

OS: Linux (Arch)
Version: latest

Additional context
The issue has been described in a reddit post found here:
https://www.reddit.com/r/macOSVMs/s/kzSuQrgOgt
As it looks, it's due to macOS dropping support for USB 2.
Switching to qemu-xhci is adviced.
I believe I managed it to fix it by doing exactly that, but I need to test it first.
Probably related to #87

This is a well known issue at this point, make sure to tell me how you edited the virt manager so I can update the repo

No worries, will do 😄

I have created a pull request that has solved this issue for me: https://github.com/notAperson535/OneClick-macOS-Simple-KVM/pull/104
Please let me know if you need more in order to accept it.

Alright!
I created a PR #105 addressing the libvirt-part.

I am unable to access the iPhone via the USB port on MacOS Moterey.
Is anyone else experiencing the same problem?
These are the parameters I'm using for the USB port:
-usb -device qemu-xhci,id=ehci -device usb-kbd -device usb-tablet
-usb -device usb-host,bus=ehci.0,vendorid=0x05ac,productid=0x12a8,guest-reset=false,id=iphone \


Wrong behavior when pressing delete at the beginning of todo item text

When you press delete key at the beginning of todo item text, it should merge with the previous item, I think that's the correct behavior. right now it's selecting the text of the previous item, any idea how to fix that?

In #278 The behavior is a little different. Instead of selecting the text it appends a new paragraph with the content of the old todo_item.

yeah this behavior changed in the latest version and I do not plan to change that again anytime soon, because this is the default behavior of prosemirror-schema-list.


Is required https://api.powerplatform.com for Power Platform API?

[Enter feedback here]
Only "https://*.api.powerplatform.com" is in URLs for Dynamics 365 services table.
But https://docs.microsoft.com/en-us/rest/api/power-platform/#call-a-rest-api-method article introduce  https://api.powerplatform.com as Rest API endpoint.
please update the table with https://api.powerplatform.com URL if it is required for Power Platform API.

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

ID: 215ab00d-9ad0-1e91-184c-218dd64a7d73
Version Independent ID: 337562d4-dab0-ccf9-b272-5de16e88476a
Content: Power Platform URLs and IP address ranges - Power Platform
Content Source: power-platform/admin/online-requirements.md
Service: power-platform
Sub-service: admin
GitHub Login: @jimholtz
Microsoft Alias: jimholtz

Thanks for your comment, @TakiyaNakano-MSFT. This issue has been assigned to the doc author for review.

Taking to internal thread.


[FEATURE] Minimal file reads during initial scan

Is your feature request related to a problem? Please describe.
When working with a remote file system to the stump host, like keeping files on a cloud storage provider, there may be both bandwidth and egress limits when accessing data.
Currently when doing an initial scan for a book, stump appears to request to read the entire file. When using cloud storage via an rclone mount, this scan causes the file to be downloaded in its entirety, which is inefficient and likely slow for large files.
Opening the book for reading, stump appears to only request the pages it requires, hence rclone will only download those parts of the file, reducing traffic and loading times.
Describe the solution you'd like
Allow an option for reducing file access during the initial scan.
Scan should be limited to:

reading the first page for thumbnail creation
reading metadata
Could be an option for 'minimal scan' if there are other benefits to reading the entire file.
Noting this may only be supported on file types that allow reading data without the entire file (ie ZIP with no compression).

Describe alternatives you've considered
Stump being remote storage aware and will limit itself appropriately automatically.
Additional context
In comparison to other applications in my testing with an rclone mount:

Komga: Reads full file on SCAN and full file on OPEN
Kavita: Reads partial file on SCAN and full file on OPEN
Stump: Reads full file on SCAN and partial file on OPEN

Stump: Reads full file on SCAN and partial file on OPEN

The main reason Stump reads the full file on scan is to determine the actual page count. That operation involves iterating through each file e.g. in an archive to determine whether it is a valid page (re: image file). The validity check uses actual byte content, and falls back onto the extension, as a way of attempting to be more accurate in knowing what is truly a valid page. The only feasible way to allow for partial reads would be:

Drop the accuracy and operate only on file extensions, trusting the extension is always correct
Don't count the pages and rely on metadata. This has problems in that missing or inaccurate metadata would cause problems.

Is it often you would have invalid file with an incorrect extension?
What is the downside to having a potentially inaccurate page count?
I think that dropping that level of accuracy is a reasonable trade-off to improve both the initial scan performance and in my case, reducing remote traffic.
If it is easier to implement, i'd still be happy even if it was an optional feature and/or there were some pre-requisites to making it work (ie having the required metadata in the file).
Thanks for considering it.

https://github.com/stumpapp/stump/pull/353 will be removing that magic header method for determining content type during scans. Once that lands, the only reads during a scan (for ZIP/RAR files) should be when a ComicInfo.xml file is present.
Analysis jobs (still experimental) will still fully open files, but this is separate from scanning.

Completed and released as part of v0.0.4


Error when running modelling tables in memos

I ran your new script and put the new bcfishpass object in sqlite. Now I'm getting an error when trying to run the code to get a modelling table (fpr::fpr_table_bcfp). Below is the error message.

i would pull out the function raw and try running through each line
function looks like this:
function (dat = bcfishpass, xref_table = xref_bcfishpass_names,
    site = my_site, col = stream_crossing_id, ...)
{
    df <- dat %>% dplyr::mutate(across(where(is.numeric), round,
        1)) %>% dplyr::filter({
        {
            col
        }
    } == site) %>% distinct({
        {
            col
        }
    }, .keep_all = T)
    tab_results_left <- xref_table %>% dplyr::filter(id_side ==
        1) %>% dplyr::arrange(id_join)
    tab_pull_left <- df %>% select(dplyr::pull(tab_results_left,
        bcfishpass)) %>% t() %>% as.data.frame() %>% tibble::rownames_to_column()
    left <- left_join(tab_pull_left, xref_table, by = c(rowname = "bcfishpass"))
    tab_results_right <- xref_table %>% dplyr::filter(id_side ==
        2)
    tab_pull_right <- df %>% dplyr::select(dplyr::pull(tab_results_right,
        bcfishpass)) %>% t() %>% as.data.frame() %>% tibble::rownames_to_column()
    right <- left_join(tab_pull_right, xref_table, by = c(rowname = "bcfishpass"))
    tab_joined <- left_join(dplyr::select(left, report, V1, id_join),
        dplyr::select(right, report, V1, id_join), by = "id_join") %>%
        select(-id_join) %>% purrr::set_names(c("Habitat", "Potential",
        "remove", "Remediation Gain")) %>% dplyr::mutate(Potential = as.numeric(Potential),
        `Remediation Gain` = as.numeric(`Remediation Gain`)) %>%
        dplyr::mutate(`Remediation Gain (%)` = round(`Remediation Gain`/Potential *
            100, 0), Habitat = stringr::str_replace_all(Habitat,
            "Ha", "(ha)"), Habitat = stringr::str_replace_all(Habitat,
            "Km", "(km)"), Habitat = stringr::str_replace_all(Habitat,
            "Lakereservoir", "Lake and Reservoir"), Habitat = stringr::str_replace_all(Habitat,
            "Spawningrearing ", "Spawning and Rearing ")) %>%
        dplyr::select(-remove)
    tab_joined %>% fpr_kable(caption_text = paste0("Summary of fish habitat modelling for PSCIS crossing ",
        site, "."), footnote_text = "Model data is preliminary and subject to adjustments.",
        ...)
}

so I think a raw run would replace function parameters with objects before running through the body of the function:
dat <- bcfishpass
xref_table <- xref_bcfishpass_names
site <- my_site
col <- stream_crossing_id

df <- dat %>% dplyr::mutate(across(where(is.numeric), round,
                                   1)) %>% dplyr::filter({
                                     {
                                       col
                                     }
                                   } == site) %>% distinct({
                                     {
                                       col
                                     }
                                   }, .keep_all = T)
tab_results_left <- xref_table %>% dplyr::filter(id_side ==
                                                   1) %>% dplyr::arrange(id_join)
tab_pull_left <- df %>% select(dplyr::pull(tab_results_left,
                                           bcfishpass)) %>% t() %>% as.data.frame() %>% tibble::rownames_to_column()
left <- left_join(tab_pull_left, xref_table, by = c(rowname = "bcfishpass"))
tab_results_right <- xref_table %>% dplyr::filter(id_side ==
                                                    2)
tab_pull_right <- df %>% dplyr::select(dplyr::pull(tab_results_right,
                                                   bcfishpass)) %>% t() %>% as.data.frame() %>% tibble::rownames_to_column()
right <- left_join(tab_pull_right, xref_table, by = c(rowname = "bcfishpass"))
tab_joined <- left_join(dplyr::select(left, report, V1, id_join),
                        dplyr::select(right, report, V1, id_join), by = "id_join") %>%
  select(-id_join) %>% purrr::set_names(c("Habitat", "Potential",
                                          "remove", "Remediation Gain")) %>% dplyr::mutate(Potential = as.numeric(Potential),
                                                                                `Remediation Gain` = as.numeric(`Remediation Gain`)) %>%
  dplyr::mutate(`Remediation Gain (%)` = round(`Remediation Gain`/Potential *
                                                 100, 0), Habitat = stringr::str_replace_all(Habitat,
                                                                                "Ha", "(ha)"), Habitat = stringr::str_replace_all(Habitat,
                                                                                "Km", "(km)"), Habitat = stringr::str_replace_all(Habitat,
                                                                                "Lakereservoir", "Lake and Reservoir"), Habitat = stringr::str_replace_all(Habitat,
                                                                                "Spawningrearing ", "Spawning and Rearing ")) %>%
  dplyr::select(-remove)
tab_joined %>% fpr_kable(caption_text = paste0("Summary of fish habitat modelling for PSCIS crossing ",
                                               site, "."), footnote_text = "Model data is preliminary and subject to adjustments.",
                         ...)

Ok I'm trying to run through the code line by line and break it down. I got stuck on this chunk:
tab_joined <- left_join(dplyr::select(left, report, V1, id_join),
                        dplyr::select(right, report, V1, id_join), by = "id_join")

The error message says column V1 doesn't exist. Which is true, it's not in either of the two join data frames. Where does V1 come from?

guessing this is related to #34 but hard to tell because of #35. Definitely will want to get it running with #34 before tackling #33 though.
V1 is the default name given to a column by %>% t() %>% as.data.frame() %>% tibble::rownames_to_column() (those lines of code should be updated actually).  Could be a break due to package updates but more likely something is not there in the objects upstream as per #34.

Actually,bcfishpass should also be run through sf::st_drop_geometry() before being loaded to the sqlite as it is an sf object. That is what those errors about the dropping of coordinates are in the original error message of this issue. could have detrimental effects for slicing and dicing the object. That stuff gets weird

Thats it!! Didn't even think about the fact that pg_featureserv has the added advantage of pulling sf objects directly out of postgres.  Start with stripping the geometry before load to sqlite.  Please close when confirmed

Thanks! Stripping the geometry before loading to sqlite did the trick.


ListBox does not refresh ListData using remove/append/...

🐛 Bug Report
Change the ListData created through useListData() with APIs like remove/append/... does not refresh the visuals
🤔 Expected Behavior
Modifying the data list refreshes the List rendered in the browser window
😯 Current Behavior
List is rerendered until the container size changes (eg by resizing the window).
💁 Possible Solution

🔦 Context
I encountered this while looking into #977 and I guess this could also be the reason old data gets fed into useOptions.
💻 Code Sample
import React, { useState } from 'react';
import {useListData} from '@react-stately/data'
import { Provider, defaultTheme, Button, Flex, ListBox, Item, Text } from '@adobe/react-spectrum';
import './App.css';

function App() {
  const options1 = [
    { id: 1, name: 'Aardvark', description: 'Aardvark Description' },
    { id: 2, name: 'Cat', description: 'Cat Description' },
    { id: 3, name: 'Dog', description: 'Dog Description' },
    { id: 4, name: 'Kangaroo', description: 'Kangaroo Description' },
    { id: 5, name: 'Koala', description: 'Koala Description' }
  ];
  const options2 = [
    { id: 6, name: 'Penguin', description: 'Penguin Description' },
    { id: 7, name: 'Snake', description: 'Snake Description' },
    { id: 8, name: 'Turtle', description: 'Turtle Description' },
    { id: 9, name: 'Wombat', description: 'Wombat Description' }
  ];

  let list = useListData(
    {
      initialItems: options1,
      getKey: (item) => "item" + item.id
    }
  )

  const clear = () => {
    const keyList = list.items.map(item => "item" + item.id)
    keyList.forEach( key => list.remove(key) )
  }

  const changeOptions = () => {
    clear()
    options2.forEach( val => list.append(val) )
  }

  return (
    <Provider theme={defaultTheme}>
      <Flex direction="column" rowGap={10}>
        <ListBox items={list.items}>{(item) => (
          <Item key={'item' + item.id} textValue={item.name}>
            <Text>{item.name}</Text>
            <Text slot="description">{item.description}</Text>
          </Item>)}
        </ListBox>
        <Button variant="cta" onPress={clear}>Clear</Button>
        <Button variant="cta" onPress={changeOptions}>Change options</Button>
      </Flex>
    </Provider>
  );
}

export default App;

🌍 Your Environment

Software
Version(s)

react-spectrum
3.3.0

Browser

Operating System

🧢 Your Company/Team

🕷 Tracking Issue (optional)

I'm unable to reproduce this problem when I just copy it to the storybook -so to reproduce you really need to boostrap a react app and put the code in there.

@tomsontom Just wanna clarify, this happens for you after you do https://github.com/adobe/react-spectrum/issues/977#issuecomment-690299692 correct? I noticed that the issue in https://github.com/adobe/react-spectrum/issues/977 actually goes away for me when I removed the wrapping <React.StrictMode> that @christian-baumann has in the sample app so do you happen to have the same wrapping <React.StrictMode> in your app? If so, does the above refresh issue happen when you remove it?
Not saying the fix is to remove strict mode, just wanna make sure what the reproduction steps are here.

this is right - if i remove the <React.StrictMode> things start working

See also  #779

Closing in favor of the umbrella strict mode issue https://github.com/adobe/react-spectrum/issues/779


Getting some Errors

Thank you for this great project. i installed modules required and configured api id, hash and follow session settings but i'm having error messages. Can you help me please.
SESSION
# Sessions
sessions = {
    'session_name':
        {
            'name': 'rockscripts',
            'area_code': '+34',
            'phone': '+34643124304',
            'proxy': (socks.SOCKS5, 'localhost', 1080),
        },
}

ERROR MESSAGES
rockscripts@rockscripts:~/Documents/TeleInviter$ ./start.py

Launching client "rockscripts" ...Traceback (most recent call last):
  File "./start.py", line 23, in <module>
    clients[key] = TeleInviter(client_session, db=TeleDb)
  File "/home/rockscripts/Documents/TeleInviter/TeleInviter.py", line 32, in __init__
    self._client = self._init_client(client_session)
  File "/home/rockscripts/Documents/TeleInviter/TeleInviter.py", line 81, in _init_client
    client.connect()
  File "/home/rockscripts/.local/lib/python3.6/site-packages/telethon/client/telegrambaseclient.py", line 288, in connect
    self.session.server_address, self.session.port)
  File "/home/rockscripts/.local/lib/python3.6/site-packages/telethon/network/mtprotosender.py", line 128, in connect
    self._connect()
  File "/home/rockscripts/.local/lib/python3.6/site-packages/telethon/network/mtprotosender.py", line 253, in _connect
    .format(self._retries))
ConnectionError: Connection to Telegram failed 5 times

i tested with servers IPs displayed in App configuration https://my.telegram.org/apps in telethon/client/telegrambaseclient.py but not effects

that seems a network error.
if u don't need a socks5 proxy, just set the proxy as None in conf.sessions.

if u are in the GFW
u may run a shadowsocks or sth., and ur localhost will be a socks5 proxy server.
u can check the setting of proxy, ip and port...

Check the proxy settings, bro. and i will close this issue.


Would like to have tabindex on elements, so that we can define our tabbing order sequence

Is your feature request related to a problem? Please describe.
We would like to have tabindex attribute on elements, so that we can define our tabbing order sequence in our application.
Describe the solution you'd like
If all elements has tabindex attribute on elements, then we can give our tabbing order sequence.
Please let me know if anymore details are required.

Thanks @ppurumala,
We will add tabIndex property to all the focusable components.

@jsardid Not just the tabindex. In addition to this, can you also consider the following while tabbing;

Tabbing is to be supported on toggles
Should secondary push buttons be skipped in tabbing order and only include primary ones?
Visual que showing the current location of the cursor (or selected field)
Drop down when tabbed should open up the contents so that user can just key first letter of selection to see drop down selection

Thanks Senthil,
We are working on 1 and 4 already.
Regarding 2, secondary buttons also need to be accessible with the keyboard.
Regarding 3, that should be happening already. If it's not happening with a particular component, please open an independent issue.

tabIndex attribute is added for interactive components in 3.2.0

Thanks @jsardid we will check this