Add box and support for Debian 9 'Stretch'

Issue Type

Feature Idea

Summary
Debian Stretch was released a short while ago, and it should hopefully be easy enough to adapt the current Debian 8 box to Debian 9.
I'm already working on testing a Debian 9 Docker image, and will hopefully get that released within a few hours. The box will take a tiny bit longer to build, but should be pretty quick if there aren't many substantive changes (e.g. like initv to systemd...).

Added a Debian 9 (Stretch) Ansible Docker image; the only changes required are documented in this commit: https://github.com/geerlingguy/docker-debian9-ansible/commit/1a73a3498e115d5a87e7ee59c3fab318e19ba4d1 (needed to install python-setuptools and python-wheel to get Ansible's installation via Pip to work).

I also had to install systemd (since by default it's not all there—the binaries used to launch things / respond to events are not present in at least the Docker image).

First and only issue found so far is with my Varnish role:
The repository 'https://repo.varnish-cache.org/debian stretch Release' does not have a Release file.

Full error below:
TASK [geerlingguy.varnish : Add Varnish apt repository.] ***********************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: apt.cache.FetchFailedException: E:The repository 'https://repo.varnish-cache.org/debian stretch Release' does not have a Release file.
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_5C07Yh/ansible_module_apt_repository.py\", line 565, in <module>\n    main()\n  File \"/tmp/ansible_5C07Yh/ansible_module_apt_repository.py\", line 553, in main\n    cache.update()\n  File \"/usr/lib/python2.7/dist-packages/apt/cache.py\", line 464, in update\n    raise FetchFailedException(e)\napt.cache.FetchFailedException: E:The repository 'https://repo.varnish-cache.org/debian stretch Release' does not have a Release file.\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 0}

Looks like it might be related to https://github.com/varnishcache/pkg-varnish-cache/issues/54, and also because I might not be using the new/official apt repo that has all the latest updates...

See related upstream issue: https://github.com/geerlingguy/ansible-role-varnish/issues/58

Postponing this for now. I opened a PR (#1453)—but I'll leave it at that until the Varnish role is happy and working on Stretch.

Vagrant box Packer config: https://github.com/geerlingguy/packer-debian-9
Vagrant box on Vagrant Cloud: https://app.vagrantup.com/geerlingguy/boxes/debian9

Box is up, and I'm testing it with the defaults except for Varnish.

I'm trying to use NFS shared folders, but it seems the mount command gets stuck; something with the Debian 9 box's networking is messed up, because I can't even ping the host at <IP_ADDRESS>.
It gets stuck here:
==> drupalvm: Preparing to edit /etc/exports. Administrator privileges will be required...
==> drupalvm: Mounting NFS shared folders...

I went through the debug process using the command VAGRANT_LOG=debug vagrant up, and found another interesting error earlier in the build:
 INFO subprocess: Starting process: ["/usr/local/bin/VBoxManage", "guestproperty", "get", "3329e230-fb50-42fb-8527-917877d39fa7", "/VirtualBox/GuestInfo/Net/1/V4/IP"]
DEBUG subprocess: Command not in installer, not touching env vars.
 INFO subprocess: Command not in installer, restoring original environment...
DEBUG subprocess: Selecting on IO
DEBUG subprocess: stdout: No value set!
DEBUG subprocess: Waiting for process to exit. Remaining to timeout: 32000
DEBUG subprocess: Exit status: 0
 INFO retryable: Retryable exception raised: #<Vagrant::Errors::VirtualBoxGuestPropertyNotFound: Could not find a required VirtualBox guest property:
  /VirtualBox/GuestInfo/Net/1/V4/IP
This is an internal error that should be reported as a bug.>

Googling that now.

See more debugging here: https://github.com/mitchellh/vagrant/issues/7138 — as it turns out it was because I was adding a loopback alias on the same IP address I was using for Drupal VM. I think it might be beneficial to update the Docker docs at some point and choose a different default IP, just to prevent this same thing from happening to others who just want to play with Docker and Drupal VM and all the defaults...

So, just ran a complete build with all the defaults except for removing varnish from installed_extras... and it worked flawlessly, yay!
So the minimal changes I had to make will go into the next release, and then I'll just hold off from merging the automated testing until the Varnish repos work on Debian 9.

Well, now Varnish install works (see build https://travis-ci.org/geerlingguy/drupal-vm/jobs/247773638 and upstream issue https://github.com/varnishcache/pkg-varnish-cache/issues/78), but Drupal install fails. Might be unrelated.

Seems unrelated. It works in a VM so I wonder if it's some init system thing again? The drush site-install task doesn't seem too see the database and therefore tries to create it.

Oh this docker/systemd/init nightmare. Would some random thing like this fix it https://github.com/j8r/dockerfiles/blob/master/systemd/debian9/Dockerfile? At least the repo states the containers work with systemd.

Testing a rebase and will see what happens. I found that there are some weird database issues now on Mac, over in https://github.com/geerlingguy/drupal-vm/issues/1497
If it turns out that is the problem, then I'll have to figure out how to tell Docker to use a volume for /var/lib/docker in Travis CI. Shouldn't be too terribly difficult. Hopefully.

So, after almost the entire build completes, I get:
TASK [geerlingguy.drupal : Install Drupal with drush.] *************************
fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["/var/www/drupalvm/drupal/vendor/drush/drush/drush", "site-install", "standard", "-y", "--root=/var/www/drupalvm/drupal/web", "--site-name=Drupal", "--account-name=admin", "--account-pass=admin"<EMAIL_ADDRESS>"delta": "0:00:00.229405", "end": "2017-08-03 04:05:14.846887", "failed": true, "rc": 1, "start": "2017-08-03 04:05:14.617482", "stderr": "Failed to create database: ERROR 1698 (28000): Access denied for user\u001b[31;40m\u001b[1m[error]\u001b[0m\n'root'@'localhost'", "stderr_lines": ["Failed to create database: ERROR 1698 (28000): Access denied for user\u001b[31;40m\u001b[1m[error]\u001b[0m", "'root'@'localhost'"], "stdout": "You are about to CREATE the 'drupal' database. Do you want to continue? (y/n): y", "stdout_lines": ["You are about to CREATE the 'drupal' database. Do you want to continue? (y/n): y"]}

The last things that were done with MySQL were:
TASK [geerlingguy.mysql : Ensure MySQL databases are present.] *****************
changed: [localhost] => (item={u'collation': u'utf8mb4_general_ci', u'name': u'drupal', u'encoding': u'utf8mb4'})
TASK [geerlingguy.mysql : Ensure MySQL users are present.] *********************
changed: [localhost] => (item=(censored due to no_log))

I might have to build it locally to see what exactly happens in here. Maybe Debian 9's MySQL defaults are a little different than expected?

Annoyingly, if I log in via docker exec and run:
drush site-install standard -y \
    --root=/var/www/drupalvm/drupal/web \
    --site-name="Testing" \
    --account-name=admin \
    --account-pass=admin \
    --db-url=mysql://drupal:drupal@localhost/drupal

Then I get:
You are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y
Starting Drupal installation. This takes a while. Consider using the --notify global option.                 [ok]
Installation complete.                                                                                [ok]
Congratulations, you installed Drupal!                                                                       [status]

Ah, but Access denied for user 'root'@'localhost' — how is it using root instead of drupal?

Running the exact command manually results in the same failure. Interesting:
root@drupalvm:/# /var/www/drupalvm/drupal/vendor/drush/drush/drush site-install standard -y --root=/var/www/drupalvm/drupal/web --site-name=Drupal --account-name=admin --account-pass=admin<EMAIL_ADDRESS>You are about to CREATE the 'drupal' database. Do you want to continue? (y/n): y
Failed to create database: ERROR 1698 (28000): Access denied for user 'root'@'localhost'                     [error]

Maybe it's a Drush bug with Debian 9? If I run the other command (using global drush at /usr/local/bin/drush—version 8.1.10), then it works fine.

Hmm. The one change I made was using localhost instead of <IP_ADDRESS>—and Drush 8.1.10 doesn't seem to work either, with the IP. So testing just using localhost as the default now.

Posted notes upstream in Drush issue that seems to be most closely related: https://github.com/drush-ops/drush/issues/2183 — tl;dr:

Maybe MySQL itself has some weird undocumented limitation when using IP vs. socket with what order of variable precedence it uses?

Sooooo close: https://travis-ci.org/geerlingguy/drupal-vm/jobs/262075833
Varnish install fail
Script ./tests/run-tests.sh handling the run-tests event returned with error code 1

Strange, apparently Varnish is listening on port 6081—but only on Debian 9. This Docker image is messing with my mind.

Ah... but the systemd config is different:
# cat /lib/systemd/system/varnish.service
[Unit]
Description=Varnish Cache, a high-performance HTTP accelerator

[Service]
Type=forking

# Maximum number of open files (for ulimit -n)
LimitNOFILE=131072

# Locked shared memory - should suffice to lock the shared memory log
# (varnishd -l argument)
# Default log size is 80MB vsl + 1M vsm + header -> 82MB
# unit is bytes
LimitMEMLOCK=85983232

# On systemd >= 228 enable this to avoid "fork failed" on reload.
#TasksMax=infinity

# Maximum size of the corefile.
LimitCORE=infinity

# Set WARMUP_TIME to force a delay in reload-vcl between vcl.load and vcl.use
# This is useful when backend probe definitions need some time before declaring
# configured backends healthy, to avoid routing traffic to a non-healthy backend.
#WARMUP_TIME=0

ExecStart=/usr/sbin/varnishd -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
ExecReload=/usr/share/varnish/reload-vcl

[Install]
WantedBy=multi-user.target

Fixed the Varnish issue via https://github.com/geerlingguy/ansible-role-varnish/issues/66 — now waiting on a test build to come back green! 🤞🏼


fix: check if arglist is empty before adding to vim.cmd

Before the updates I got the following error when I was trying to open a file

related PR https://github.com/lmburns/lf.nvim/commit/5c1d8569d3a221fb3bbf497de3f2834f1db289e1

Would love to see this merged if possible!


Please describe your setup

[ x ] How did you install memgpt?

git clone

[ x ] Describe your setup

OS MacOS
Terminal

Screenshots
Additional context
OpenAI API ：{"error":{"message":"Authentication Error, ExceededTokenBudget: Current spend for token: 21.393555839999998; Max Budget for Token: 20.0","type":"auth_error","param":"None","code":401}}
/api/agents/4519a4c1-43a7-489f-9a8a-f00babbd5164/messages
Authorization: Bearer 123456
Content-Type: application/json
{
"message": "xxx",
"role": "user",
"stream": false,
"timestamp": "2024-07-17T14:42:14+08:00"
}
MemGPT Config
[defaults]
preset = memgpt_chat
persona = sam_pov
human = basic
[model]
model = gpt-4o
model_endpoint = https://ai-gateway-test.bondee-inc.com/v1
model_endpoint_type = openai
model_wrapper = null
context_window = 8192
[embedding]
embedding_endpoint_type = openai
embedding_endpoint = https://ai-gateway-test.bondee-inc.com/v1
embedding_model = text-embedding-ada-002
embedding_dim = 1536
embedding_chunk_size = 300
[archival_storage]
type = postgres
path = /root/.memgpt/chroma
uri = postgresql+pg8000://memgpt:memgpt@localhost:5432/memgpt
[recall_storage]
type = postgres
path = /root/.memgpt
uri = postgresql+pg8000://memgpt:memgpt@localhost:5432/memgpt
[metadata_storage]
type = postgres
path = /root/.memgpt
uri = postgresql+pg8000://memgpt:memgpt@localhost:5432/memgpt
[client]
anon_clientid = 00000000-0000-0000-0000-000000000000

If you're not using OpenAI, please provide additional information on your local LLM setup:
Local LLM details
If you are trying to run MemGPT with local LLMs, please provide the following information:

[ ] The exact model you're trying to use (e.g. dolphin-2.1-mistral-7b.Q6_K.gguf)
[ ] The local LLM backend you are using (web UI? LM Studio?)
[ ] Your hardware for the local LLM backend (local computer? operating system? remote RunPod?)

#1562 might work - there are issues with smaller models not calling tools properly, which MemGPT needs to function properly

#1562 might work - there are issues with smaller models not calling tools properly, which MemGPT needs to function properly
If you look closely at this error, it refers to insufficient fees. What I mean by this is that the current error handling logic doesn't return error results in non-streaming mode, but instead falls into an endless loop

#1562 might work - there are issues with smaller models not calling tools properly, which MemGPT needs to function

If you look closely at this error, it refers to insufficient fees. What I mean by this is that the current error handling logic doesn't return error results in non-streaming mode, but instead falls into an endless loop


manatv telugu catchup

the manatv scrapper(ManaTelugu ) is not loading the current shows and is showing the old content(currently showing content before 25th April). To resolve this I have to manually delete the cache of the ad-don entirely and a fresh content is loaded with today's shows. But this scenario repeats until i delete the ad-don cache to reload the current shows. Changing the cache options to '0' or '1' is not having any effect. Its the same behavior for two different version of windows and an android tv box.
PS: Tried deleting the cache on my windows computer where kodi is installed. Haven't tried the cache clearing on the android TV box.

In addon settings, there is a setting for the cache period, try dropping it to 8 hours.
The cache is actually located in userdata/addons/plugin.video.deccandelight folder.
Will look at adding an option to clear cache inside the addon in the release.

Yes, thats the setting I am talking about.
Additionally found out that the links from the cache have changed and since the links are not updated here they are failing to play the video. Checking the site for that particular date shows a different video link, perhaps they are updating the video links after some time.
Will having a no cache solve the issue for this scrapper?
Current log attached for the videos failing.
kodi.log

DD 1.5.7 released https://github.com/Gujal00/GujalKodiWork/commit/9a354b859edf0bd4118136ad11abb0790e90d917
Has a Clear Cache option in the main menu. selecting it dumps the current cache
Test and report if still issues

Clear cache option clears the cache and i can load the shows of current day. You can close the ticket now. Thank you so much for a quick turn around.


Language selection dropdown

@XapaJIaMnu in #13:

Finally, I was told that it is difficult to find languages. It might not be so much of an issue now, but it will become a much bigger issue when we have more models. I think that having a something like opus interface where we select from (language) and to language in two separate drop down menus would work.

A list of ideas to start with:
One dropdown with all language pairs (Current implementation)

👍Simple
👍Combined with "download more models…" interaction flow
👎Quickly becoming cluttered
👎Sorted by downloaded status

Two dropdown menus (i.e. QComboBox) for source and target language
For example https://www.online-translator.com does this.

👍👍👍 Familiar
👍 Option to later have "autodetect" option in source language combobox and use langid or cld2 or something
👎 Tricky while we don't have models for all language pairs yet:

Will target languages not show up if there's no model for that language pair? I.e. will the selected source language filter the available target languages?
If so, you can't first select target language and then source language. Discovering which language pairs are available is a bit more tricky.

👎 Weird interaction with the current "download more models…" flow. (Alternative would be to show all options, and when a language pair that hasn't been downloaded yet is selected, show a popup asking whether you would want to download it. But then the interaction around getting that list of available pairs would still be a bit weird.)

One dropdown with language pairs sorted in submenus of source language
E.g. same as current implementation, but each source language would open up a menu with all available target languages.

👍Source/target still same combobox
👍Source dictates available target languages so no issue with sparse coverage
👍Could still use the "download more models…" flow
👎👎👎Switching target language more annoying since you first have to find the source language again to open up that submenu.

One dropdown with more column view widget in popup
E.g. use something like a QColumnView inside the QComboBox popup menu instead of the standard dropdown.

👍Source/target still same combobox
👍Source dictates available target languages so no issue with sparse coverage
👍Could still use the "download more models…" flow
👍Switching just the target language less tricky than with submenu as the source language would already be selected (and all available target languages would already be showing)
👎No idea whether this will work. I've used QTableView and QListView with QComboBox, but never QColumnView.

Progress report. One dropdown menu still, but it is sorted and supports upgrading outdated models with new ones.

+1. I personally don't like pivoting but I have to concede it vastly improves user experience. We are also going to add more models so the single drop-down menu will become more and more impractical.

It's a pity that it don't have the model English-Portuguese and/or Portuguese-English in the Language selection dropdown. At least I didn't find it.


See infrastructure stacks, logs and metrics only if super-user

Hide:

infra stacks, service, container
infra metrics
infra logs
to any user which is not a member of the super-organization

done


Allow user to upload reference images

Overview
This PR adds the ability for the user to upload their own images. These images will appear as toggleable reference layers in the sidebar.
Closes #54
Demo
https://user-images.githubusercontent.com/8356789/188991408-7542d4a7-3e75-4faf-8515-a58ce849e1b1.mov
Notes
This PR updates the ReferenceLayer component to store the individual reference image layers in a mutable react ref. This cuts down on the number of times these layers are re-created; a high number of re-creations has caused unpredictable behavior.
I first tried using L.DistortableImage's distortableCollection to store multiple distortable layers, but this would make the reference images uneditable.
As is evident in the demo video above, if the file names are long, they are cutoff by the end of the sidebar. This should be addressed especially as reference images may come in sets with files that begin with the same prefix (e.g. see demo).
Testing Instructions

Go to Welcome page
Navigate to last section, File Upload
Upload some image files
Click Continue
The images should show up as reference layers on the map
Click the "Upload File" button to add more reference layers
See that they show up on the map as well
Ensure all layers are toggleable and editable and that they are saving correctly when toggled

Checklist

[ ] fixup! commits have been squashed
[ ] CHANGELOG.md updated with summary of features or fixes, following Keep a Changelog guidelines
[ ] README.md updated if necessary to reflect the changes
[ ] CI passes after rebase

The one issue I've been having is with PDF files.

I forgot to test this. I just tried now and it's not working for me either. I don't think DistortableImage supports using PDFs. I think we have a couple of options here:
It seems like it should be possible to convert the PDF to an image with Mozilla's PDF.js. I checked the npmjs page for the distributable, pdfjs-dist, and the unpacked size is 34.7 MB (yes, MB). The package is available from a CDN, but users would still need to download the full library.
The other option would be to add a route to the django server to convert pdfs and send back images. This adds complexity to the pdf upload process, but also doesn't require the user to download any additional libraries.

Nice investigation. I made #62 for adding PDF support in a follow up card. We can prioritize it later. Going to give this a final look.

PDF removed as a accepted file type in d883110. @rajadain Should I also remove it from the list here?
I added a tooltip in e302948.

Taking another look


Is there a way to use this with metals?

https://github.com/scalameta/nvim-metals
I love the idea of an all-in-one don't-have-to-think-too-much LSP set up for Neovim. But Metals has to be installed differently than other LSPs.  Metals is still working for me however the keybindings aren't set up properly. Is there a way to tell lsp-zero to enable the keybindings for metals and/or scala files?

There is a function called build_options(), with it you can create the options for the LSP.
local metals_opts = require('lsp-zero').build_options('metals', {})

And I guess you can pass that to nvim-metals. The documenation says the setup function has the same signature as vim.lsp.start_client(), so this should work.
require("metals").initialize_or_attach(metals_opts)

If it doesn't, you can use the function metals_opts.on_attach in an autocommand or whatever method nvim-metals uses.

Hey 👋🏼 author of nvim-metals here.

The documenation says the setup function has the same signature as vim.lsp.start_client(), so this should work.

The shape is mostly the same, meaning that it accounts for all the existing thigs that start_client() does, but it also has some metals specific things in it like settings, which you may have configured. So if you are going to call build_options make sure you actually merge it with your existing require("metals").bare_config() and your settings before you pass it to initialize_or_attach.
Looking through:
https://github.com/VonHeikemen/lsp-zero.nvim/blob/9852ce92056d95ca9268155db484e9b4806d8c2d/lua/lsp-zero/server.lua#L27-L50
I'm guessing that the set_capabilities and on_attach that lsp-zero calls is what you want, depending on how it sets up the default mappings. Some of the other stuff in there you actually really don't want, specifically the the root_dir detection as with Scala this won't work as expected since nvim-metals has quite a bit of stuff it needs to do to ensure the correct root, no matter where you open. Mainly, checking for nested build files, etc. So I think you might be better to figure out what in build_options is actually needed and call those specifically rather than calling build_options.

If you want to be on the safe side you can just take .capabilities and .on_attach from the result of build_options. Really those two are the only one lsp-zero sets, everything else empty by default.

I wanted to update this w/ what I found works very well for me (so far).
For metals you need to set useGlobalExecutable to true.
local metals_config = require("metals").bare_config()

metals_config.settings = {
  useGlobalExecutable = true, -- So we can use LSP Zero.  This means we have to keep Metals up-to-date ourselves.
}

And then for LSP Zero set metals to force_setup.
local lsp = require('lsp-zero').preset({
  name = 'minimal',
  set_lsp_keymaps = true,
  manage_nvim_cmp = true,
  suggest_lsp_servers = true,
})

lsp.configure('metals', { force_setup = true })

This has been working well for me.


Property grid imports @itwin/presentation-common as a dev dependency but doesn't treat it as such

In packages/itwin/property-grid/src/PropertyGridUiItemsProvider.tsx, Key is imported from @itwin/presentation-common
 but @itwin/presentation-common is listed as a devDependency.
import { Key } from "@itwin/presentation-common";

{
 "devDependencies": {
    // ...
    "@itwin/presentation-common": "^4.4.0",
    // ...
   },
}

Not sure if this is supposed to be a type import - otherwise @itwin/presentation-common should be listed as a dependency or peerDep

Looks like not used just for types, https://github.com/iTwin/viewer-components-react/blob/master/packages/itwin/property-grid/src/PropertyGridUiItemsProvider.tsx#L89

@johnnyd710 Published<EMAIL_ADDRESS>with fixed dependencies


Support glTF's KHR_draco_mesh_compression extension

Description
I think other major WebGL libraries support glTF's KHR_draco_mesh_compression extension.
The Draco format is an excellent compression format.
https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression
I expect PlayCanvas to support the Draco format.

Excellent suggestion. Yes, this is currently under development.

@mvaligursky Thank you for Draco support.
Currently I'm trying it locally but it seems that some models don't look right. Can you check it?
https://rawcdn.githack.com/cx20/jsdo-static-contents/33ab7250/models/gltf/2.0/Itokawa/glTF-Draco/Itokawa.glb
Current result:

Expected result:

hey @cx20 - thanks for testing and reporting this, I have PR #2016 ready. Please let me know if you find any other issues.

this has been now merged to main, closing. Please re-open if any additional issues

@cx20 - I'm very keen to test draco compressed point cloud as well .. but I cannot find any test data (self container glb draco compressed point cloud) or ay tools that can generate that from other formats. Would you have any ideas here? Thanks!

@mvaligursky Thank you for quick repair. I have confirmed that it can be displayed correctly with the latest version of PlayCanvas.
BTW, I remembered how I got the data in Draco format.
Itokawa.glb is test data generated as a result of testing various tools. Probably the procedure is not helpful.

Download .obj format data from 3D Asteroid Catalog
Convert .obj format to .drc format using draco_encoder
draco_encoder -i Itokawa.obj -o Itokawa.drc
Load data in .drc format using Three.js + draco_decoder.js
Export in .glb format using Three.js + GLTF Exporter
Convert .glb to Draco format using gltf-pipeline
gltf-pipeline -i Itokawa.glb -o Itokawa.glb -d

@cx20 - I'm very keen to test draco compressed point cloud as well .. but I cannot find any test data (self container glb draco compressed point cloud) or ay tools that can generate that from other formats. Would you have any ideas here? Thanks!

Hey @mvaligursky, just wanted to follow up on this and find out if you managed to test if the Draco compressed pointcloud works aswell?

@tonetechnician - there has been no change on this, as I have not sourced any data for it. It might work, but I cannot confirm it.

Thanks @mvaligursky
I've been working with some point cloud .ply sources + converting into Draco .drc. Seems to be working in Three.js with the their Draco loader, but I'm yet to attempt with Playcanvas. It seems the Draco decoder in Playcanvas is amongst the .glb loader so I'll need to dig a bit to get a handle to to load a regular .drc file. I've been unable to find tools that convert this draco mesh into glb unfortunately, maybe you know of one?
Here's the .drc point cloud file if it will help you run a test -->  https://pointcloud-test.s3-eu-west-1.amazonaws.com/test.drc
In the same bucket, you'll. also find a test where I simply exported the point cloud as .txt and filled in a vertex buffer with the positions + colours and was able to get Playcanvas to render it. The time it takes to do this is very long as you can imagine. Draco is definitely the better option --> https://pointcloud-test.s3-eu-west-1.amazonaws.com/index.html. Something interesting I noticed is that when doing this option, once the point cloud was rendered, the playcanvas engine seemed to perform better, I'm not sure if this is just a setting in three, but it was interesting to note.
Here's what that looked like rendered in Playcanvas (I think I messed up some of the colour buffer as it came out very over exposed) -->

Here's a snippet of some of the point cloud rendered by Three.js -->

Hi @tonetechnician. As you mentioned, we don't at the moment have loader for draco files, and only use draco compression for meshes inside glb. I guess you could grab some of the draco code, and build draco loader for your app. I'm not sure what else is inside draco file other than meshes (materials? textures?) but if you only need point cloud loader, that should be pretty straightforward to add I suspect, based on glb-loader code that handles draco.
I tried to find a way to convert different point cloud formats to glb draco compressed point cloud and found no tools. Maybe adding a support for this to some other tools that generate draco glb in a option as well).
And just for reference that you've probably seen already, we have these two examples on how to efficiently render point clouds here (they use pretty basic but fast shaders)
http://playcanvas.github.io/#graphics/point-cloud.html
http://playcanvas.github.io/#graphics/point-cloud-simulation.html

Hey @mvaligursky Thanks for the response!
As far as I understand, Draco is only a mesh compression and that's why is best used in tandem with the gltf container which contains things like material parameters and textures (and of course scenes, animations etc..)
Yeah, grabbing the code and creating a loader sounds like a good option indeed. I literally just need the mesh vertices and colours.
I've also found this resource which I've been considering to use in my project. Will be testing later this evening to see what it would take to get this loader to plug into the playcanvas geometry --> https://loaders.gl/modules/draco/docs/api-reference/draco-loader
Will drop a message here once I've tried a couple things. Maybe it will help someone in the future!
Yes! These examples have been a huge help for me. It's what got me going with the basic txt file format to load into pc. I think fast shaders are the only option for some of these clouds with 1.3million points being a baseline. Draco's been an awesome help with that, taking some of my 700mb files and compressing them to 90mbs.

Hey @mvaligursky
Just to confirm that using the loaders.gl draco loader worked really well. I simply loaded the drc file, and created a mesh using the POSITION (Float32Array), COLOR (UInt8Array and NORMAL (Float32Array). In order to get the colour right I had to convert the UInt8Array into float32Array before setting it with SetColors.  Here's some example code:
import * as pc from 'playcanvas'
import * as pcx from 'playcanvas/build/playcanvas-extras.js';
import {DracoLoader} from<EMAIL_ADDRESS>import {load} from<EMAIL_ADDRESS>...
/* Create app stuff */
...

async function loadDraco(filePath) {
	const data = await load(filePath, DracoLoader);
	return data;
}

function convertToFloat32(incomingData) { // incoming data is a UInt8Array
    var i, l = incomingData.length;
    var outputData = new Float32Array(incomingData.length);
    for (i = 0; i < l; i++) {
        outputData[i] = (incomingData[i] - 128) / 128.0;
    }
    return outputData;
}

loadDraco('./assets/test.drc')
.then((data) => {
    var mesh = new pc.Mesh(app.graphicsDevice);
    mesh.clear(true, false);
    mesh.setPositions(data.attributes.POSITION.value, data.attributes.POSITION.size);
    mesh.setColors(convertToFloat32(data.attributes.COLOR_0.value), data.attributes.COLOR_0.size);
    mesh.setNormals(data.attributes.NORMAL.value, data.attributes.NORMAL.size);

    mesh.update(pc.PRIMITIVE_POINTS, false);
    var material = new pc.StandardMaterial();
    material.diffuseVertexColor = true;
    material.update()
    var node = new pc.GraphNode();
    var meshInstance = new pc.MeshInstance(node, mesh, material);

    model.graph = node;
    model.meshInstances = [meshInstance];

    app.systems.model.addComponent(entity, {
        type: 'asset',
        asset: model
    });
    entity.model.model = model;
    app.root.addChild(entity);
}

Here's the model with a funky shader effect

That's awesome, I'll create an issue to investigate possible integration with those loads, that's too convenient.
Regarding the colors, try calling mesh.SetColors32, even though that expects 0..255 range which gets converted to 0..1 range, but you code seems to convert it to -1..1 range (mistake?)

Cool! Might be nice to add a drc loading example to engine examples @mvaligursky?

Thanks @mvaligursky! Indeed, you're 100% right. Should be between 0 - 1, messed that up. I'll try the setColors32, I think I misread the documentation when going through those functions.
Indeed! So nice it works just like that. These loaders provide a bunch of different formats, more than draco. Could just be a tab on integration with other formats using loaders.gl, but not sure how the Playcanvas team would like to approach it. I'd be happy to submit a PR with an example of a point cloud .drc asset in a format similar to the other examples.

by the way @tonetechnician - perhaps you should pass true as a second param here:
mesh.update(pc.PRIMITIVE_POINTS, false);
to have mesh update its bounding box, as you're not manually setting any bounding box - and so it's default box would be tiny and you might have issue with mesh getting culled.

by the way @tonetechnician - perhaps you should pass true as a second param here:
mesh.update(pc.PRIMITIVE_POINTS, false);
to have mesh update its bounding box, as you're not manually setting any bounding box - and so it's default box would be tiny and you might have issue with mesh getting culled.

Ah amazing. This was my next step. The mesh has been getting culled indeed!
The loaders.gl actually also provides an aabb bounding box which I'll be adding in now. Will update the example above.

I'd be happy to submit a PR with an example of a point cloud .drc asset in a format similar to the other examples.

Yes please @tonetechnician, if you can add an engine example, that'd be much appreciated. From the docs it seems the loaders can be loaded directly from their CDN which would probably be the best option for the example, and just include some draco point cloud file into assets folder (something that is free to use).

I'd be happy to submit a PR with an example of a point cloud .drc asset in a format similar to the other examples.

Yes please @tonetechnician, if you can add an engine example, that'd be much appreciated. From the docs it seems the loaders can be loaded directly from their CDN which would probably be the best option for the example, and just include some draco point cloud file into assets folder (something that is free to use).

Awesome. I'll submit that a bit later today!


Setting the locale of Handlebars Intl using Express

I'm using express, express-handlebars and handlebars-intl and I would like to change the default "en" locale to another (like "it").
I read that this plugin uses Intl.DateTimeFormat to formats. In this specific case how can I edit things like locale, timezone, date formats, etc..
    const hbs = exphbs.create({ extname: '.hbs' });
    app.engine(hbs.extname, hbs.engine);
    HandlebarsIntl.registerWith(hbs.handlebars); // Handlebars Intl Plugin
    app.set('view engine', hbs.extname);
    app.set('views', path.join(__dirname, './views/pages'));

Final goal:
Correctly renders with Handlebars this datetime {{formatDate time}} using my specified locale

Just tried:
global.HandlebarsIntl = HandlebarsIntl;
require('handlebars-intl/dist/locale-data/it');

or even:
HandlebarsIntl.__addLocaleData({locale: "it"})

No errors but does not works

same issue

same issue

same issue


⚠ Mitsubishi has degraded performance

In 75b11f4, Mitsubishi (https://mitsubishimotorsid-mobileapp.com/app/login) experienced degraded performance:

HTTP code: 200
Response time: 6910 ms

Resolved: Mitsubishi performance has improved in a6456e1 after .


feat: use accounts indexer for notifications

Relates to: #855
TODO list:

[ ] add limits to graphql queries;
[ ] add fallback logic similar to feeds;
[x] add relationship.json

Problem:

[x] There is no post param for devhub posts. Maybe need to check logic of notifications indexer and how it collects devhub posts. That's why notifications from devhub doesn't have a preview content using graphql query

Hey @gabehamilton! I'd like to hear your opinion about how we'll solve the problem with missing fields for devhub posts. I'll check what else are missing and maybe it's worth to update the notifications indexer

Hey @gabehamilton! I'd like to hear your opinion about how we'll solve the problem with missing fields for devhub posts. I'll check what else are missing and maybe it's worth to update the notifications indexer

Is what's needed here the item.blockHeight? There is a similar need described here

Hey @gabehamilton! I'd like to hear your opinion about how we'll solve the problem with missing fields for devhub posts. I'll check what else are missing and maybe it's worth to update the notifications indexer

Is what's needed here the item.blockHeight? There is a similar need described here

No. In general this was about the missing post prop but it's already added to the notifications indexer and updated. I'll update this PR soon

After checking I realized I need to do one more update of notifications indexer with the needed field. Thanks @charleslavon!


Add a date prefix to the docker tag for PR images

We want to use Flux's image policies to auto deploy the latest version
of main to a staging cluster. To do this the images need to be tagged
in a sortable manner. The easiest way to do this is using the unix time
so we'll add that as a prefix.

Looks good to me. I briefly wondered whether we were going to run into problems when the number of digits in the unix timestamp increased, but then did some calculations and figured out that won’t be problem for another 264 years, so I think we’re good.

phew :)

I do wonder whether it would be more informative to use the ISO 8601 timestamp in there, but I realise that would make things more complicated, and we can always reconstruct the date if we need to. Your call.

I thought about it but I think if you're after metadata on the deployed image the git sha is likely to be more useful in most circumstances and these are mostly just to be deployed to staging so not really intended for general use.
Can always refine it if need be (also this was the call recommend in the flux docs ;) )


CastError in MapMixin.entries

Dart version: Dart SDK version: 2.14.2 (stable) (Wed Sep 15 12:32:06 2021 +0200) on "macos_x64"
I am getting a type 'Null' is not a subtype of type 'AssetPaging' in type cast from inside MapMixin.entries.
The project is on sound null-safety and the map is declared as
final Map<AssetPathEntity, AssetPaging> _dataMap = {};

So it should not be possible to have null values.
After debugging this I am kind of lost:

The map clearly has the key/value pair but the retrieval of the value via this[key] returns null.
This is happening in a Flutter app so I am not completely sure this is the right place for the issue.
The problem is ONLY happening on iOS and not on Android which makes me wonder if this is somehow caused by the native map implementation.

I added a couple more watches that I can not make sense of:

The difference between these 2:
containsKey(keys.first) = false
keys.containsKey(keys.first) = true

shows that there is something weird happening in the _InternalLinkedHashMap implementation.

@kuhnroyal could you provide the definition of AssetPaging? Most specifically it's get hashCode and operator==. This sort of error can happen if get hashCode returns unstable result.

Should the hashCode of AssetPaging matter as it is the value in the map? The hashCode of AssetPathEntity, the key in this case, is generated using the hashCode of one of its properties, namely the id.
  @override
  int get hashCode {
    return this.id.hashCode;
  }

AssetPaging itself does not have a hashCode implementation.

If hash code of a key changes after it was inserted into the map then the map will get into an inconsistent state - and you will not be able to find this key again, because hash map implementation uses hash code to locate where the key resides.
class X {
 int hashCode = 42;
}

void main() {
  final key = X();
  final map = <X, String>{};
  map[key] = "ok";
  print(map[key] ?? "fail");  // -> ok
  key.hashCode = 24;
  print(map[key] ?? "fail");  // -> fail
  print(map[map.keys.first] ?? "fail");  // -> fail
  key.hashCode = 42;
  print(map[key] ?? "fail");  // -> ok
  print(map[map.keys.first] ?? "fail"); // -> ok
}

That's how hash maps work and that's why get hashCode is expected to return consistent values and not change over time.

@mraleph Yes, I understand that. But the error is happening inside the SDK map implementation while it is iterating over its list of keys.

The error happens because the map got into an inconsistent state, because you violated the invariant, and map[key] does not work even for the keys which are in the map.

Yes, you are correct, thank you!
I just didn't expect the map to throw wile it is iterating over its own keys.


添加 py3.6.8 by CentOS5、py3.6.8 by CentOS6

允许创建适用于大于 CentOS/RedHat 5 版本的 Python 3.6.8 的单文件程序。
允许创建适用于大于 CentOS/RedHat 6 版本的 Python 3.6.8 的单文件程序。

This PR would install unverified source tarballs in the repo which I don’t feel comfortable with.
If the Dockerfile pulled them from a known safe source I would probably merge a centos image in a different PR.


merge from arlac77/template-github,arlac77/template-kronos-module

package.json

chore(package): add ^3.5.1 remove ^3.5.0 (devDependencies.ava)

:tada: This PR is included in version 8.3.20 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Output information after CMake configuration and generation.

This PR adds some outputs some information to the screen after CMake configuration to help the user see what configuration options have been selected. Essentially, it is a curated list of the CMakeCache.txt file.
There are two options: one being a minimal output enabled by default and the other is a detailed log which can be configured with GINKGO_CONFIG_LOG_VERBOSITY flag. Both are written to a file in the CMAKE_BINARY_DIR in any case in minimal.log and detailed.log respectively.
Additionally, the CI jobs will output the detailed log .
Closes #608 .

About the whole "unspecified" thing, this doesn't seem to work with all variables (See HIP), maybe some stray spaces in there?

I would even suggest replacing "" by "", since there seems to be no way to determine if a variable exists in CMake.

About the whole "unspecified" thing, this doesn't seem to work with all variables (See HIP), maybe some stray spaces in there?

This was because of some internal variables and hence they were empty. I dont think these are necessary anyway, so i removed them.


[speedb] new port

Fixes #33738
Upstream GitHub repo for source code, license info, releases, etc: speedb repo.
Since Speedb is based of RocksDB, there was enough overlap to stem from the RocksDB port with minimal changes.
The port's patches are equivalent to those from RocksDB but reapplied to the Speedb release offered in this port such that they could apply nicely.

[x] Changes comply with the maintainer guide.
[x] The name of the port matches an existing name for this component on https://repology.org/ if possible, and/or is strongly associated with that component on search engines.

speedb.io

[X] Optional dependencies are resolved in exactly one way. For example, if the component is built with CMake, all find_package calls are REQUIRED, are satisfied by vcpkg.json's declared dependencies, or disabled with CMAKE_DISABLE_FIND_PACKAGE_Xxx
[X] The versioning scheme in vcpkg.json matches what upstream says.

speedb/v2.7.0 release.

[X] The license declaration in vcpkg.json matches what upstream says.
[X] The installed as the "copyright" file matches what upstream says.
[X] The source code of the component installed comes from an authoritative source.
[X] The generated "usage text" is accurate. See adding-usage for context.

tested with a minimal example and the package name & targets are correctly named.

[X] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[X] Only one version is in the new port's versions file.
[ ] ~Only one version is added to each modified port's versions file.~

speedb provides CMake targets:

  # this is heuristically generated, and may not be correct
  find_package(Speedb CONFIG REQUIRED)
  target_link_libraries(main PRIVATE Speedb::speedb Speedb::speedb-shared)

speedb provides pkg-config modules:

    # An embeddable persistent key-value store for fast storage
    speedb

@justend29 Now that the pc file is provided, we can consider adding pkg-config, or delete it directly.

speedb is based of RocksDB, there was enough overlap to stem from the RocksDB port with minimal changes.

Actually there is too much overlap: It installs file which are already owned by port rocksdb, e.g.
speedb:x64-linux:/include/rocksdb/cache.h

vs.
rocksdb:x64-linux:/include/rocksdb/cache.h

This doesn't work for users which happen to have both ports installed, and this would immediately break vcpkg daily CI.
I didn't check for duplicate symbols which in the libs which would at least break msbuild autolinking.

@dg0yt Oh, that's a great point. I didn't catch that speedb provides literally the same headers when reviewing that point in the maintainer's guide.
I'm not dependent on this port, so I'm fine with closing, but in an effort to provide this for other users, what options are there? I wouldn't want to nest or rename the headers in the vcpkg port, as that would break compatibility with external installations, but that seems like the only option.

I don't know if there is a satisfying answer.

Speedb is a 100% RocksDB compatible, drop-in library,

So its an alternative, and vcpkg is weak at handling alternatives.
Ask maintainers for advice. (I'm a community member.)

@dg0yt Thanks for all the contributions to the community.
@FrankXie05, do you have any suggestions on handling the alternative? We could consider speedb a "backend" to the rocksdb port, maybe.

Hi @justend29, unfortunately, we can't accept this port on account that it's an alternative to RocksDB. We are interested in figuring out a solution to "alternatives" but we currently don't have one.

I'm not dependent on this port, so I'm fine with closing, but in an effort to provide this for other users, what options are there?

While we can't add it to our registry, you can always provide a custom registry for your users. https://learn.microsoft.com/en-us/vcpkg/maintainers/registries

@JavierMatosD sounds great. Overlay ports and custom registries rock. Maybe once alternatives are possible upstream, this port can be revisited.
Should the original issue be closed as well?


[UI] Migrate Custom Toolbar Select Component to use MUI v5 Styling and Sistent Component

Notes for Reviewers
This PR fixes #12402
Signed commits

[x] Yes, I signed my commits.

@SAHU-01 could you have a look at this pr and tell if it looks good to you?


Fix docker automated builds

This PR re-enables Docker automated builds by moving our new Dockerfiles from PR #95 to the root of the project.
Also adds documentation to the README about how to fetch our automated builds from Docker hub.

Looks good to me, I've tested all the docker images and they are still working correctly.
@simeonmiteff @KitL

Also :thumbsup: here.
Looking forward to using the automated builds for production deployment!

Thanks team.
Have just merged and built the faucet/faucet:latest and faucet/faucet-gauge:latest dockers based on this code.
Just waiting for @KitL to setup the hooks on the faucet github repo so that this is automatic and I don't have to manually trigger this build process.


Oxide engine/feat/physics particle

Summary
Added particle and particle-force generator.
Registration for p-f generators are not implemented yet.
Added AABB for shapes Ball and Cuboid.
Local AABB is for object space, and AABB is for world space. Currently AABB only supports translations.
Planning to replace translation vector with homogenous coordinate matrix , to scaling and rotations.
Key changes

[x] Added particle and particle-force generator.
[x] Added AABB for shapes Ball and Cuboid.

To Be Done

[x] Finish implementing pfgen.rs
[x] Update AABB to support rotations and scaling

Codecov Report

Merging #55 (4097a02) into main (f9e8d40) will decrease coverage by 11.89%.
The diff coverage is 2.13%.

Additional details and impacted files
@@             Coverage Diff             @@
##             main      #55       +/-   ##
===========================================
- Coverage   81.03%   69.14%   -11.89%
===========================================
  Files          32       39        +7
  Lines        1313     1546      +233
  Branches       84       93        +9
===========================================
+ Hits         1064     1069        +5
- Misses        191      419      +228
  Partials       58       58


feat(HUB-137): move consent screen to login/register screen

Nice, this looks cleaner.
The transition when you click login is a bit wonky, not sure what the best solution is here.
https://github.com/rivet-gg/hub/assets/3322446/01f8acb2-1a16-494b-a959-ce6f274439e8

#17 might have some small merge conflicts with this branch

@NathanFlurry added a small spinner to indicate connecting to services when the app is already loaded to prevent double full page spinner, lmk what you think. I think we can add it into more places to indicate loading state (instead of doing nothing :D )

@jog1t Not quite sure which double spinner you're referring to. Can you send a video of what you're seeing on your end when you log in/how the animation is supposed to work? I'm not able to get past the login screen on this branch (other CF pages branches work fine).

added HUB-166 for adding an autofocus for email input in register modal, because right now it's does not work :(

@jog1t Not quite sure which double spinner you're referring to. Can you send a video of what you're seeing on your end when you log in/how the animation is supposed to work? I'm not able to get past the login screen on this branch (other CF pages branches work fine).

@NathanFlurry your comment give me thinking. Removed entirely the step when user needs to do click in order to agree to the terms. What do you think? How it looks from legal perspective? Right now, the user is taken straight to main screen already connected.

From my understanding, from legal standpoint, would be better is to connect/give conset when user logs in. So, until a user logs in or registers, we do not display "guest" accont in the nav bar. Would love to know your opinion on that.

@jog1t Something's wrong when running on my machine, no errors in console. Can you check on this branch and make sure it's working?

Okay, it was a bit journey with this, but finally it's working correctly.

Here's a video when a guest (user without consent) lands on any page in the app (not only on / as it was until now):

https://github.com/rivet-gg/hub/assets/39823706/a660311d-1ca3-495d-a85d-9409a0143187
Notice that, when a guest clicks "Login" button, a loading indicator shows up in the button - this is a slight change from what we have right now. When a loading indicator is visible, a guest is promoted to an anonymous user (i.e. bootstrap function is run, etc.). This interaction for most of the users will be visible only once, but I think it's very important.

Here's a video when an anonymous user (user with consent) lands on any page in the app:

https://github.com/rivet-gg/hub/assets/39823706/4df1891e-d357-4707-a5d7-3ca2b0afcfba
Added also a new feature to our router - middlewares, is a type safe option to guard/validate/and check whenever passed attributes, current state of the user are in the desired state before letting user see the page. I think that's a good foundation for loaders, if we ever want to introduce them here - something similar to https://remix.run/docs/en/main/route/loader or async components in Next.js (but in Lit).

Is this loading indicator aligned? This might already be fixed in #23.

@jog1t Can you fix the merge conflicts here when you have a chance? The middleware thing is a bit tedious.

Something's up with the nav bar's z-index. This is a video comparing main and your branch:
https://github.com/rivet-gg/hub/assets/3322446/c793bb74-0b75-4a65-8cea-b3f3c72f5d7e

It seems to immediately consent and create an identity no matter what I do. Is this intended?
https://github.com/rivet-gg/hub/assets/3322446/708ee6f1-dbd7-40d7-8a53-09b8ac2f3189


Emissive Color Picker without an Emissive Texture does not provide an emissive material

Current Behavior
I am unable to create an emissive material that emits unless there is an Emissive Texture present.
Expected Behavior
Create a new material slot and add an emissive material to a mapped part of an object, say a streetlight luminaire or to an entire object.
Invoke the MSFS Material Params-Standard, and change the Emissive color from black to pure white using the Color Picker.
When viewed in Material Preview mode in Blender, the color of the area mapped should reflect the color of the Emissive Color Picker.
The Emissive Factor is defaulted to 1.00, so the material should now glow.
Steps To Reproduce
Exporter 1.1.5, Windows 10 Home, Blender 3.1

Create an object with several faces, and, in Edit Mode, select a face you want to make into an emitter.
Invoke MSFS Material Params-Standard, and advance the Emissive Color color picker to full white or any other color.  Note that the designated face viewed in Material Preview does not change.
Slide the Emissive Scale control over its full range, and observe that the designated face intensity is not affected.
Switch to the Shading viewport preset and expand the Emissive Scale node to see that the node is tracking the Emissive Scale slider as expected.
If you have Node Wrangler Installed, look at the output of the Emissive Texture node and see all black.  This then has one Emission Multiplier node at 0 inhibiting any emission output.

Environment
- OS:Windows 10 Home
- Blender:3.1
- glTF-Blender-IO-MSFS:1.1.5

Anything else?
The problem can be best analyzed in the Shading viewport preset.  It appears that the Emissive Multiplier node is taking any value from the Emissive RGB node and multiplying it by 0, the output from the unused Emissive Texture node.
Workaround:
Add an emissive texture such as a mask designed to make only certain windows on a building light up at night.  Alternately, you can create a pure white image and assign that image to the Emissive Texture slot.  Now the Emissive Scale value will control the strength of the Emission input of the Principled BSDF node - the input of which is now not black.
This entire chain works properly and as designed when there is an Emissive Texture present that is not entirely black.
Possible Fix:
Pattern the Color Picker RGB node and the Emissive Texture node reconnection after the Base Color RGB and Base Color Texture node tree.  That involves some connection code, I think, but there will be no need for the additional Detail Color logic.  I assume the scheme used in Blender2MSFS is unacceptable since it tied the Emissive Color Picker directly to the Principles BSDF node unless an emissive texture was present.

hi, @PhysicsTeacher1 can you please confirm me if the issue is solved? thanks

Yes, the issue is solved.  That was a lot of code to change.  Thank you very much!
Issue 132 is still a problem, however:  The emissive texture still glows when Day/Night Cycle is asserted.


docs(README): change broken link

A little typo in README :)

Hello! Any news about reviewing this? :)

sorry been slow in getting to these

No problem @pshihn, have a great day :-)


fix: hidden chat appears in finder page

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/50100
PROPOSAL: https://github.com/Expensify/App/issues/50100#issuecomment-2389497311
Tests

Submit some expenses in a WS chat or DM chat
Open the transaction thread report of any expense
Open the chat finder page
Verify that the transaction thread report appears on the finder page
Open another report
Verify that the transaction thread report disappears in LHN
Open the chat finder page and verify that the transaction thread report also disappears

[x] Verify that no errors appear in the JS console

Offline tests

Same as above
QA Steps

Submit some expenses in a WS chat or DM chat
Open the transaction thread report of any expense
Open the chat finder page
Verify that the transaction thread report appears on the finder page
Open another report
Verify that the transaction thread report disappears in LHN
Open the chat finder page and verify that the transaction thread report also disappears

[x] Verify that no errors appear in the JS console

PR Author Checklist

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

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

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

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

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

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

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

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/user-attachments/assets/536eeb82-31c2-453a-94a5-14bc9eea613b

Android: mWeb Chrome

https://github.com/user-attachments/assets/1b3d4461-babe-4f48-8f4a-d46d07e87577

iOS: Native

https://github.com/user-attachments/assets/dcb53e41-d7fe-42ff-8344-f3fc6024dcfa

iOS: mWeb Safari

https://github.com/user-attachments/assets/9d47a96c-9044-46e7-86d0-9e06afe63677

MacOS: Chrome / Safari

https://github.com/user-attachments/assets/b7d9af88-337d-45b1-9b5a-d2f61131feb8

MacOS: Desktop

https://github.com/user-attachments/assets/c3559617-faeb-4dce-b124-e7d3a8021761

@ZhenjaHorbach I need to re-record videos on other platforms, will update soon

@ZhenjaHorbach this PR is ready for review

Should we be able to find the hidden chat using search?

@ZhenjaHorbach I think if we decided to hide this chat on the finder page, we would not be able to find this chat using search.

The decision that we came to on Slack is that if a chat has "hidden" for the notification preference, it should appear in the LHN (and global search), but it should NOT be shown in bold which would indicate it is unread.
So, I think this PR is incorrect if I read the tests properly.

@tgolen So here is what we should do in this PR, right?

Display the hidden chat in LHN
Do not display this chat with bold style

Correct, yeah.

@tgolen A bit confused here. Currently, we're not displaying the hidden chat in LHN except for some special cases in shouldOverrideHidden. I want to ask which case below is the correct new behavior that we want:

Display the additional hidden unread chat but will not display it with the bold style
Display all hidden chat in LHN but will not display it with the bold style

https://github.com/Expensify/App/blob/7947b8e25c9c4799f8bec6e3986d129db06a2939/src/libs/SidebarUtils.ts#L141

Sorry, I don't think I can answer that because I don't know what the impact of either decision would be. Can you help me understand the difference and what the impact might be of either choice?
To restate the way I understand the bug today (going back to the OG description):

I have several chats with notificationPreference: hidden
This means that the chat will NOT be shown in the LHN (which is good 👍 )
This means that the chat is shown as bold (unread) in the chat finder (which is bad 👎 )

All this PR should do is stop making the chat shown as bold in the chat finder.

@tgolen Alright, thanks for your detail. I got what I need to do now. Will update the PR soon.

@ZhenjaHorbach  i updated code change and all screenshots, please check again

@ZhenjaHorbach Based on the comment above, I removed shouldBoldHiddenChat param.

I'm checking this.

@ZhenjaHorbach The problem is optionItem in LHN doesn't have participant field then when we call this function in LHN  it always returns hidden.

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

This wasn't an emergency. I just merged too quickly and didn't realize that there was a running test.


Admin page color ramps are AWOL

Noticed today those links are currently busted, we can do better!

This page is not coming back, so will close.


Import work items add flag to suppress attribute not available and attribute not supported exceptions

Caused by "" as value not being ignored.

Done in 5.3


Implementation of a Report System

Description
A reporting system that allows for dynamic creation and displaying of forms using the existing assignable value service. Did some pre-planning on this with class outlines.
Details
TODO
Notes

I think this type of system can be configured to handle all types of form submissions. Some ideas for managing that are as follows:
Form Layout Components

The layout component holds the data for a form. It needs to be mapped to a series of input controls that are saved in the database so the data can then be properly checked against when previewing the data in a submitted form.

A key thing to note with the above is statically saving the form parts. Any changes to the form configuration would propagate in any further use, such as handling submissions. The best way to handle this would be to configure the form with a series of options without allowing the user to build a fully custom component (like the edit forms are). Fully custom forms could be done if there is some alternate method of updating the form configuration when a component is added or deleted.
Submission Pools

The submission pools would hold all form submissions for a specific form. If a form is scoped to a specific roster tree, so would the submission pool (see: promotions and/or transfers where paperwork is only passed to the person who needs to see it)
There would be multiple types of submission pools. Some for just reading the results of a submission, which can also act as change tracking, and others that would allow approval/denial of submissions, which can then filter data to its relevant location on the pool. All submissions are viewable in an unchangeable version of the Layout above.

Because the submissions require the layout, any changes to the layout could invalidate old data. There would need to be an effective way of displaying values within one of these forms so that any fields that are removed can still be displayed if old submissions are accessed.

A submission pool would also be able to be configured to handle different actions depending on what types of values are submitted. If a value within the form meets a check, then the end action is opened for that check and the default action is ignored (promotions passing up a board).

The use of configuration options from the roster import component (with its boolean logical configuration) can be used here to create conditional values that are evaluated when a form is approved and/or submitted. Because form submissions can also run this event, these are configurable on both the form itself and on the pool that approves a submission.
Other Notes
Further configuration with these forms and pools could allow a single type of component to handle a lot of the paperwork side of roster management. Promotions, Transfers, Applications, Reports, Documentation, Value Grants, etc. can be filed, value assignments automated, and most importantly tracked using this type of system. It could replace the standard edit forms as a more flexible and reliable tool for making changes on the website.
Scopes would be a big part of these forms. Roster placement controls who and what values you are allowed to edit, all would have to be configured in the component. The relative position would also have to be taken into account.

@hobnob11 tagging you here for your thoughts on using a system like this when making and using pages. it would draw out the release and testing times, but we could ship with promotions and even more from the get-go (while also giving you better tools for roster clerks and change tracking).


Move rootless directory handling to the libpod/pkg/util directory

This should allow us to share this code with buildah.
Signed-off-by: Daniel J Walsh<EMAIL_ADDRESS>

/lgtm

/approve
@mheon @baude @umohnani8 @vrothberg PTAL
@giuseppe don't do /lgtm until we get at least one other LGTM.

Sure, LGTM

@rhatdan I think the bot can't do anything with webhooks down for Github

Ok, I am going to manually merge, so that buildah can start to use these.


Can't search for some nicks

https://logs.liz.nl/search.html?query=&type=starts-with&nicks=lizmat&channel=raku-dev&message-type=&entries-pp=50&from-yyyymmdd=2019-10-13&to-yyyymmdd=2021-11-16
generates many results for lizmat.
However, similar URLs for [Coke] and [Tux]
https://logs.liz.nl/search.html?query=&type=starts-with&nicks=[Coke]&channel=raku-dev&message-type=&entries-pp=50&from-yyyymmdd=2019-10-13&to-yyyymmdd=2021-11-16
https://logs.liz.nl/search.html?query=&type=starts-with&nicks=[Tux]&channel=raku-dev&message-type=&entries-pp=50&from-yyyymmdd=2019-10-13&to-yyyymmdd=2021-11-16
Yield no results for Coke, and results for "Tux" (no []'s) for Tux.
Escaping the []'s with \ has no impact on the search

@lizmat  points out that if I search for "Tux" or "Coke" and check the box "include nick aliases", I will get hits on those users.
This lets met do the search I want, but I argue that [Coke] with no aliases should also find me.

I'm failing to find messages when searching the #raku-beginner channel with tope in the nick field. If I check include nick aliases, I get an HTTP 500 error.

URLs showing what works / doesn't work...
WORK AS EXPECTED:

Find matches for the word (not nick) tope This lists a bunch of matches. (Tangent / partial workaround. The list includes messages that do not contain the word tope but are written by the nick tope. But that's fair enough, and quite plausibly a good thing. It also provides something of a workaround; if nick searching ain't working, pop the nick in the basic query field instead.)

The last message containing the word tope is written by guifa. So, find matches for the word tope and nick guifa This lists a bunch of matches, as expected.

The last message in the first search above is written by tope and begins with the word "hehe". So, find matches for the word hehe This lists topes message, as expected. (Plus another bonus one, hehe.)

BUT:

Find matches for the word hehe and nick tope No matches. This was not expected.

Find matches for the word hehe and nick tope with include nick aliases checked I tried this after I found this issue. But I get:

This page isn’t working
logs.liz.nl is currently unable to handle this request.
HTTP ERROR 500

YET:

Find matches for the word tope and nick guifa with include nick aliases checked This time I get the expected results. (Same as without include nick aliases checked.)

So there's something fundamentally broken about nick tope in a way that's not so for nick guifa.


Handling multiple downloads with generating notifications

Multiple downloads work accurately inside app while shows mismatched progress while displaying notifications to the user.
There is no documentation as to where to create notification and update the current one.
Please help.

Hi @droidlady ,
If I understand your question correctly, you are asking, "How do I get the current progress of the downloads and update the user interface?"
When calling download from the TransferUtility you may pass in a TransferListener to see progress of the download. Javadoc download method
The TransferListener has onProgressChanged method that you will implement to contain code to update the user interface or otherwise notify the user. Javadoc Transfer Listener

I see. We will investigate and reply here.

`public void downloadWithTransferUtility(final String fileName) {
    File file = new File(filePath, fileName);

    try {
        int permissionCheck = ContextCompat.checkSelfPermission(StartActivity.this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
            if (!file.createNewFile()) {
                Log.i("File", "This file is already exist: " + file.getAbsolutePath());
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    final TransferObserver downloadObserver = transferUtility.download(bucket, fileName, file);

    downloadObserver.setTransferListener(listener);

    downloadObserver.setTransferListener(new TransferListener() {

    @Override
    public void onStateChanged(int id, TransferState state) {
        switch (state){
            case COMPLETED:{
                NUMBER_DOWNLOADED +=1;
                Log.d("FILE", fileName);
                downloadObserver.cleanTransferListener();
            }
            case CANCELED: {}
            case FAILED: {}
            case PAUSED: {}
            case WAITING_FOR_NETWORK: {}
        }}
     @Override
     public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {}

     @Override
     public void onError(int id, Exception ex) {
        Log.d(LOG_TAG, "Downloading Error" + ex);}
        });

      filePathList.add(filePath);
}

for(String fileName:fileNames){
downloadWithTransferUtility(fileName)}`

This issue has been automatically closed because of inactivity. Please open a new issue in https://github.com/aws/aws-sdk-android/issues if you are still encountering problems.


charger integratopm

Is the huawei charger available?

What do you mean with that?
Did you try? Do you have some more info?
Which device is this exactly?

Hi!
Sorry for the lack of information
Software Version: FusionCharge V100R022C10SPC070
AC Charger Model
SCharger-22KT-S0

I don't think so.
Is there anything exposed in the FusionSolar App on your phone? Or in the Kiosk?

I don't think it is supported.
Do you see anything in the FusionSolar app on your phone or in the kiosk?
Feel free to share your credentials with me (fusionsolar-ha [at] Verkoyen [dot] eu), and I can take a look

Yes,

Are you willing to share your credentials? So I can check if the data is available in the API?
But don't get your hope up, as I don't see anything in the documentation about FusionCharge

May I please reopen the issue?
According to this post, the charger can be started using the API https://forum.huawei.com/enterprise/en/api-capabillities-scharger-22kt-s0/thread/695710147218915328-667213868771979264

To facilitate the dev, I collect the existing cmd posted in forums (unfortunately I could not find the API documentation for it yet):

GET https://eu5.fusionsolar.huawei.com/thirdData/getChargerList
Authorization: Bearer YOUR_ACCESS_TOKEN

GET https://eu5.fusionsolar.huawei.com/thirdData/getChargerRealKpi
Authorization: Bearer YOUR_ACCESS_TOKEN
chargerCode=YOUR_CHARGER_CODE

POST /api/v2/chargers/1234567890/start_charging

{
  "start_time": "2023-03-08T12:00:00Z",
  "duration": 60
}

You may.
At this point the integration is only reading data, not pushing data to the API. And to be honest I don't am very keen on adding this.
Can you tell we which device you exactly have? And are you willing to share your credentials? As I don't own a charger.

Hello,
@tijsverkoyen
I have the complet Huawei Sun Power Station and the Chager SCharger-22KT-S0 and full access to the system.
What credentials to you need?
I'm very interested to see more online data's from the charger.

You may.
At this point the integration is only reading data, not pushing data to the API. And to be honest I don't am very keen on adding this.
Can you tell we which device you exactly have? And are you willing to share your credentials? As I don't own a charger.

Sorry for my delay, I was waiting to get the API access, but still waiting...
Once I have, would be happy to share access for a while.
Plant Setuo: SCharger-22KT-S0, SUN200-8KTL-M1, 5kW battery

Hello, i'm going crazy because i shoud want integrate fusioncharge s22 into my Home Assistant Dashboard.
I have a full control of my installation (i'm reseller too).
Can you help me ?
Do you need a documentation of Huawei
SmartPVMS 24.2.0 Northbound API Reference.pdf
API ?
I should want to control Charging Status, Actual Power, KW loaded, Session Time, and some other issue.

I am selling my SCharger. That thing can´t even do phase switching when configured in 11kW.

At this point I will not invest any time to add support for FusionCharge charger

At this point I will not invest any time to add support for FusionCharge charger

why not ?

At this point I will not invest any time to add support for FusionCharge charger

why not ?

Don't take this personally. But there are a multiple reasons.
I don't want to be ungrateful or impolite but:

Time, my days only have 24 hours. I need to prioritise. This project is not what pays the bills.
Work/Life. Related to the first one, but my wife also deserves time.
I don't own a charger. A very selfish reason, I know. At this point I don't have a charger. If I need one I will look to different brands, Huawei may be an option. At that point there will be a personal need

Feel free to create a Pull Request, I will be happy to review.

I am selling my SCharger. That thing can´t even do phase switching when configured in 11kW.

Which means ?

That I have no longer the SCharger installed and won´t be able to provide access for development.
I also think it is not a very good product and do recommend buying another charger that provides access to core functions via local API calls which are openly published. An example how it could be done: https://github.com/goecharger/go-eCharger-API-v2


[bug] Wrong float constants parsing

float constant parsing is performed wrong.
+package sandbox
+alias sprintf org.eolang.txt.sprintf
+alias stdout org.eolang.io.stdout

[args...] > app
  stdout > @
    sprintf
      "%%.9f\n"
<PHONE_NUMBER>.0000012

Here, the<PHONE_NUMBER>.0000012 is parsed as 1.0E10:
target/parse/app.eo.xml

<objects>
    <o line="5" name="app">
       <o line="5" name="args" vararg=""/>
       <o base="stdout" line="6" name="@">
          <o base="sprintf" line="7">
             <o base="string" data="string" line="8">%%.9f\n</o>
             <o base="float" data="float" line="9">1.0E10</o>
          </o>
       </o>
    </o>
</objects>

Even more interesting case.
999777777799999.0000012 is parsed as 9.9977779E14 (which is<PHONE_NUMBER>00000.000000000).

Even more interesting case.
999777777799999.0000012 is parsed as 9.9977779E14 (which is<PHONE_NUMBER>00000.000000000).

@nlchar the error is in this line: https://github.com/cqfn/eo/blob/master/eo-parser/src/main/java/org/eolang/parser/XeListener.java#L315 I'm sure you can try to fix it :)

@nlchar the error is in this line: https://github.com/cqfn/eo/blob/master/eo-parser/src/main/java/org/eolang/parser/XeListener.java#L315 I'm sure you can try to fix it :)

@yegor256/z everybody who has role DEV is banned at #186; I won't be able to assign anyone automatically; consider assigning someone manually (as in §19), or invite more people (as in §51), or remove the job from the scope (as in §14)

Job gh:cqfn/eo#186 is not assigned, can't get performer

You @nlchar/z need to have one of these roles in order to do "Request order start": ARC, PO; I'm sorry to say this, but at the moment you've got no roles in this project


#1249 companion pull 1 of 2 for Travis CI concurrent build collision detection

Your pull request should…

[ ] have a concise title
[ ] close an accompanying issue if one exists
[ ] be against the correct branch (features can only go into develop)
[ ] include migration scripts and documentation, if appropriate
[ ] pass automated testing
[ ] have a clean commit history
[ ] have proper commit messages (title and body) for all commits
[ ] have appropriate tags applied

This pull is a companion build test pull (1 of 2) for #1430 on issue #1429. This pull is for concurrent Travis CI build tests in order to identify collision hot spots in Travis CI. The investigation is not specific to ServiceRegistryJpaImplTest, but for all modules containing junit tests.
The goal is to gather information on the type of junits that encounter build collisions in order to reduce false negatives from junit tests that are valid but fail because of possible collision with shared resources in Travis CI.
The urgency of this work is that valid junit tests are stripped from Opencast because of false negatives from Travis CI builds. Example of ignoring because of Travis CI: https://github.com/opencast/opencast/pull/1427/files Example of the ignored test being stripped: https://github.com/opencast/opencast/pull/1291/files#diff-4cc24d934760760e2a998acd69c71080L318-L351

Closed pull because the issue is the ServiceRegistry tests was a race condition within the test itself that was aggravated by building in TravisCI, but not specific to TravisCI. The race condition is fixed in pull #1430


No documentation on what units cube.convert_units actually converts?

📚 Documentation

While the documentation points at the convert_units() function for cube unit conversion, it never actually tells you what can be converted. There's a few examples scattered over the documentation, but you can't know if convert_units("rankine") will work without testing, and you don't know if the error is because it should be convert_units("Rankine") or iris just doesn't support terrible units - there should be a list (or link to another list somewhere) of what type of units exist under cf_units and can be converted between. I found this quite confusing when first starting to use iris this year

Answer: iris just uses cf_units, which itself uses the xml database of the UCAR UDUNITS-2 library. That's spread over five xml files you can find here, which have all the ailases of unit names you can use.
For example: Rankine is under "common non-SI units", and has the following definition
<unit> <def>K/1.8</def> <aliases> <symbol comment="DEGREE SIGN">°R</symbol> <name> <singular>degree_rankine</singular> <plural>degrees_rankine</plural> </name> <name> <singular>degreeR</singular> <plural>degreesR</plural> </name> <name> <singular>degree_R</singular> <plural>degrees_R</plural> </name> <name> <singular>degR</singular> <plural>degsR</plural> </name> <name> <singular>deg_R</singular> <plural>degs_R</plural> </name> </aliases> <definition>unit of thermodynamic temperature</definition> </unit>
Which gives all the possible names you can use in cube.convert_units() to convert your Cube into Rankine, if you ever wanted to use such a silly unit.


W3CDom.fromJsoup fails when xmlns is defined

import org.jsoup.Jsoup;
import org.jsoup.helper.W3CDom;
import org.jsoup.nodes.Document;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;

public class Test130 {
    public static void main(String[] args) throws Exception {
        String html = "
hello
";  // this input fails with jsoup W3CDom
        // String html = "
hello
";                                      // this input works with jsoup W3CDom

        org.jsoup.nodes.Document jsoupDoc = Jsoup.parse(html);

        test(new W3CDom().fromJsoup(jsoupDoc));            // returns 0, incorrect
        test(toW3CDocWorkaround(jsoupDoc));                // returns 1, correct
    }

    private static void test(org.w3c.dom.Document w3cDoc) throws Exception {
        XPathExpression xpath = XPathFactory.newInstance().newXPath().compile("/html");
        System.out.println(((NodeList) xpath.evaluate(w3cDoc, XPathConstants.NODESET)).getLength());
    }

    private static org.w3c.dom.Document toW3CDocWorkaround(org.jsoup.nodes.Document jsoupDoc) throws Exception {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        return documentBuilder.parse(new ByteArrayInputStream(jsoupDoc.toString().getBytes(StandardCharsets.UTF_8)));
    }
}

This seems related to https://github.com/jhy/jsoup/issues/671, but it's not the same issue.

I got the exact same issue, when xmls is set I cannot apply XPathExpression anymore it doesn't match anything.
The toW3CDocWorkaround doesn't work for me, first test case I got the following error after ~30s stuck in documentBuilder.parse:

[Fatal Error] :43:17: Attribute name "async" associated with an element type "script" must be followed by the ' = ' character.
org.xml.sax.SAXParseException; lineNumber: 43; columnNumber: 17; Attribute name "async" associated with an element type "script" must be followed by the ' = ' character.

Any pointer on how this could be fixed would be appreciated 👍

@panthony, you mean the first test case here (where there is an async attribute)? https://github.com/jhy/jsoup/issues/1098
Try the w3cDocToString method proposed on https://github.com/jhy/jsoup/issues/1098.

glad to hear that w3cDocToString works as a workaround. I hope this issue will be fixed also.
For the other issue, I guess it's better that you open a new ticket if necessary.

Hello all,
I think I have the same issue as @panthony . I am trying to parse an html which contains an svg that has xmlns already defined. I am converting the parsed document to an org.w3c.dom.Document with
org.w3c.dom.Document w3cDoc = new W3CDom().fromJsoup(htmlDocument);
When I try to parse the string representation of this w3cDoc with javax.xml.parsers.SAXParser, I get the following exception:

org.xml.sax.SAXParseException; lineNumber: 965; columnNumber: 218; Attribute "xmlns" bound to namespace "http://www.w3.org/2000/xmlns/" was already specified for element "svg".

My problem is that I have some intermediate steps, so that I need to have w3c document, i.e., the w3cDocToStringfix does not work for me and I did not find any working way to convert the string coming out of w3cDocToString back to a w3c document. If am trying to parse this string with the SAXParser, I get:

org.xml.sax.SAXParseException; lineNumber: 16; columnNumber: 32; The entity "copy" was referenced, but not declared.

The website I am trying to parse is this one btw: http://www.handletheheat.com/peanut-butter-snickerdoodles
My hacky fix is currently to remove the xlmns attribute before convertig the JSoup document to w3c. However, this leads to a missing xmlns attribute.
Besides this issue, JSoup does work really nice for me and I appreciate all the work you have done!
Thank you for any help,
Simon

What's the status of this bug? I am writing a a static site generator which already has XHTML and Markdown support, but I want to add HTML support. jsoup is getting good reviews, but real W3C DOM support is essential; we can't break if xmlns isn't handled correctly.
Are there other W3C DOM implementation problems I should be aware of before we start trying to integrate jsoup? I don't want to spend weeks only to find out that it doesn't work with a "real" DOM. Thanks.

This actually works OK AFAICT. The W3C Document emitted by Jsoup W3C is namespace aware. So you need to make your xpath query namespaced as well. See e.g. https://stackoverflow.com/a/4440519/153184
fe92494c7716eeb04d5d4040cc43d67b8f2f4aaf fixes the XML string output
052dc1b1cac3dd4bfded785ce8c9dadc8b95f18c verifies the xpath selectors with / without namespaces
(And the build is broken right now because indentation default is specified by the platform and different on Travis than my local, will fix)
@SimonSchmid if you keep seeing that issue in HEAD, can you file an issue with a complete code sample please.


Remove border-left from bare Panels

What is the context of this PR?
Fixes: #1080
How to review
Check bare panels now have the correct spacing and non bare panels also still look correct

 Issue #1080: Remove border-left from panel--bare


Problem of spinal cord centering

Likely caused by wrong segmentation. I will need to dig further the analysis code to understand how to fix this.

Fixed after reviewing code for SC segmentation


Links in markdown are broken if url contains encoded parameters

Issue Type: Bug
In the latest VSCode release (1.37.0) there seems to be a regression in markdown rendering feature, in that some of the URL parameters are incorrectly getting encoded .
Repro steps

Create a markdown file and put following url  content in it and save the file:

<!-- Begin markdown -->
[Sample Link](https://myhost.com/Redirect?url=http%3A%2F%2Fwww.bing.com%3Fsearch%3Dtom)
<!-- End markdown -->

Click this link in markdown, see that the URL that is passed to browser is:

https://myhost.com/Redirect?url=http://www.bing.com%253Fsearch=tom
Notice that the %3F in the url parameter in the markdown link has been further encoded into %253F
Expected:
The URL that is passed to browser is either for the two below

https://myhost.com/Redirect?url=http%3A%2F%2Fwww.bing.com%3Fsearch%3Dtom
https://myhost.com/Redirect?url=http://www.bing.com?search=tom

This issue is true for other surfaces of markdown as well, like the 'Details' tab of installed extensions and the hover popup set through text decorations, via the vscode.DecorationOptions class.
This issue does not repro in older version of VSCode (1.36.0 and prior).
 I would like to take this up! Could you please help me get started by pointing me to the directory (or file) where I should be making the changes?
Thanks!

@mjbvz pull request #79552  only fixes the hover popup, however I am not sure if preserving the query string is the best way to fix this issue

Sorry, this isn't a good first issue because it's a bit of a bottom-less whole.
@mjbvz The underlying issue is that Uri.parse decodes its input and then re-encodes when calling toString. That (re)encoding is needed because toString is mostly used to create comparable strings for storing things in maps, toString isn't primarily designed to create externalised uri-strings for exchange.
Let's come up with a fix together. An idea that worth exploring is to use uri.with, e.g start with "some" uri and then transform it into the uri you want. However, that requires that you are able to break the uri into its components...

fixed via #83060

re-opened via 58479e80ab899402283b522da173c34867d7c78f

/duplicate of #83645
Closing this as a duplicate of #83645 which is all about finding a way out of the URI nightmare.


Permission error

While running the code
./run.py PG2-1 --gpu_id 0 -c ./implementations/PG2/stage1.toml -o ./checkpoints/PG2-1
I am getting the error
bash: ./run.py: Permission denied
Please reply

chmod +x can help, or try with python run.py.

chmod +x can help, or try with python run.py.

Please run chmod u+x ./run.py first.

Please run chmod u+x ./run.py first.

Thanks for the response.
Astha
On Sat, Jan 30, 2021, 18:49 wrong.wang<EMAIL_ADDRESS>wrote:

Please run chmod u+x ./run.py first.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/budui/Human-Pose-Transfer/issues/9#issuecomment-770211466,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKBFLWC7FOOO2WPURELKKP3S4QBOBANCNFSM4KY3UYNA
.

Thanks for the response.
Astha
On Sat, Jan 30, 2021, 18:49 wrong.wang<EMAIL_ADDRESS>wrote:

Please run chmod u+x ./run.py first.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/budui/Human-Pose-Transfer/issues/9#issuecomment-770211466,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKBFLWC7FOOO2WPURELKKP3S4QBOBANCNFSM4KY3UYNA
.


refactor(version): Refactor Version TODO

Please Review
@skhtet
@mleeBoeing
@cwilliams2017
@rkenyon1969

:+1:

:+1:


Support hot reloading of configuration

Allow specifiying something like a --watch to make the runtime watch the provided configs and reload when they change.
Relevant comment from @jarupatj  in #50:

You should look at using IOptionsMonitor
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-5.0#options-interfaces

#892

Modified this issue to cove hot reloading of the configuration file. This will clear duplicate issues, which will all be tracked here.

Would be great to have a switch on the CLI, something like --watch that will automatically reload the configuration file (and thus re-generate the in-memory schema) whenever the file is changed. Something like https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-watch
That would greatly improve development velocity.

In order to set the LogLevel based on the mode in the runtimeconfig we need to use a configuration provider that can reload the configuration after updating the Loglevel.
More information can be found here: https://learn.microsoft.com/en-us/dotnet/core/extensions/logging?tabs=command-line

Moved to April, waiting on new configuration resolver.

Form the GraphQL side you need to implement an ITypeModule ... this will manage the phase out of schemas...
Here you can see an example.
https://github.com/ChilliCream/graphql-platform/blob/13349fa4af03514507ed5e3aaf9a771c696b56a6/src/HotChocolate/Fusion/src/Core/DependencyInjection/FileWatcherTypeModule.cs
The TypeModule is registered with the schema.

Hot reload is supported only when:
When "mode" == "development" then Supported.

hot-reload property in config?

I have created a number of sub-tasks to help track the progress on Hot Reload.
Currently, we are refreshing the RuntimeConfig to match any updates that we see in the associated config file when we are in the local scenario and start the engine in developer mode.
To facilitate extending Hot Reload in the future, a refactor of the RuntimeConfigProvider is taking place
https://github.com/Azure/data-api-builder/issues/1966
as well as some changes to make hot reload work with the new multi config code
https://github.com/Azure/data-api-builder/issues/1967
Additionally, one of the key features we want support for hot reloading is reloading of the log-level, and so this property is being added to the config and we have a task to track being able to hot reload this property in both dev and production mode
https://github.com/Azure/data-api-builder/issues/1968
Additionally, there are some tasks for updating those settings which depend on the config only at startup, such as the OpenApiDoc and Auth settings
https://github.com/Azure/data-api-builder/issues/1869
https://github.com/Azure/data-api-builder/issues/1969

Moving this + hot reload related tasks to post GA -> tracking via 1.2rc milestone.

The top-level task tracking hot reload can remain in backlog as we address sub-tasks. Ideally a sprint's tracked work items should be resolvable. This task has so many pre-reqs , we need to resolve those first.


SHDP-331 First cut at adding HiveServer2 support

adding new HiveClient to replace the Thrift based one from Hiveserver1

the new HiveClient requires a DataSource for the JdbcTemplate it uses internally

refactoring HiveTemplate to use new client

refactoring HiveServer and HiveClient factories and factory beans

updating XML schema with new properties for the bean factories

Merged via commit 1b03cf437db4e3cb2ec588a33e0cd58697587a0e

Hello @trisberg , I am confused why HiveClient is only getting first column from resultset at line # 65. Can you please help me understand rationale behind it, or its an mistake and   I log it as a bug.
results.add(rs.getString(1));


config init_cmd is not working

Version - v0.2.1-rc2
Steps:

Create a config.yaml with:

ssh_authorized_keys:
- github:<username>
init_cmd:
- "echo 'init command' && sleep 120"
k3os:
  password: asdf

During boot process, press e to get into GNU Grub
On linux cmdline add k3os.mode=install k3os.install.config_url=<raw path of config.yml>

Results:  The init command never get run. The terminal never sleeps or print out the echo.

There is currently no way to pass init_cmd via config.yaml because at the initrd phase the system is mid-pivot (prior to mounting persistent disk or source cdrom in the expected places) which means there is no standard place available for ccapply to pickup this configuration. #218 has fixed the parsing of quoted kernel parameters which means that init_cmd does work, but only as a kernel parameter.


FileField and custom collection

I cannot find a way to store some files in different collection than 'fs'. I need to do something like:
class SomeDocument(Document):
  private_file = FileField(collection='private_files')
  public_file = FileField(collection='public_files')

and then configure i.e. nginx with gridfs extension just to server files from public_files collection.
when i generate thumbnails, i use:
  from gridfs import GridFS
  ...
  fs = GridFS(db, collection=collection)

is it possible with mongoengine? am i overlook something?

Hi this has recently been added to dev along with mutlidb see:
https://github.com/hmarr/mongoengine/blob/dev/mongoengine/fields.py#L886
This should work:

class SomeDocument(Document):
  private_file = FileField(collection_name='private_files')
  public_file = FileField(collection_name='public_files')