How can I get a 3D pointcloud map using cartographer?

After tuning the urdf and lua configuration, I run the cartographer and get a useful trajectory.
According to the tutorial, I called the "/write_state" service to get a .pbstream file, using the command:
    rosservice call /write_state ${HOME}/Downloads/test_save.1.bag.pbstream.

And I get an error like:
    ERROR: Unable to load type [cartographer_ros_msgs/WriteState].
    Have you typed 'make' in [cartographer_ros_msgs]?

I know the .pbstream file is the input of the asset_writer node to generate the 3D pointcloud map. So I want to know how to get it down. Because it is not about the tuning, I decide not to upload the config files.
Thanks a lot!

This message likely means that the terminal that you are calling the command from has not sourced the cartographer workspace (source install_isolated/setup.bash)

@kentsommer  Thanks!  I thought the rosservice do not need to source the path.
And after I get may .pbstream file "test_save.pbstream", I run the command ：
roslaunch cartographer_ros assets_writer_backpack_3d.launch bag_filenames:=/home/lx/Rosbags/segmentmatching/try2.bag pose_graph_filename:=/home/lx/Downloads/test_save.1.bag.pbstream
And I get the node corrupted as ：
W0515 14:48:38.401289 25744 xray_points_processor.cc:147] Not writing output: bounding box is empty.
W0515 14:48:38.401427 25744 xray_points_processor.cc:147] Not writing output: bounding box is empty.
W0515 14:48:38.401464 25744 xray_points_processor.cc:147] Not writing output: bounding box is empty.
W0515 14:48:38.401489 25744 xray_points_processor.cc:147] Not writing output: bounding box is empty.
W0515 14:48:38.401512 25744 xray_points_processor.cc:147] Not writing output: bounding box is empty.
W0515 14:48:38.401536 25744 xray_points_processor.cc:147] Not writing output: bounding box is empty.
I0515 14:48:38.401553 25744 counting_points_processor.cc:43] Processed 0 and finishing.
================================================================================REQUIRED process [cartographer_assets_writer-1] has died!
process has finished cleanly
log file: /home/lx/.ros/log/768f62ce-53ef-11e8-9151-1c1b0d00bd07/cartographer_assets_writer-1*.log
Initiating shutdown!
Thanks again～

Does the bag file that you are passing match the data used to generate the .pbstream? Are you sure it is actually slamming? Those errors would imply to me that cartographer was never slamming.

What do u mean that cartographer never slamming? I just run the asset_writer node. The bag file and the .pbstream file is matched of course~ Should I upload my config file and the corresponding bag file?
Thanks~

@DriftingTimmy
I mean that it doesn't look like cartographer is actually building a map (SLAM is not happening).
If cartographer is working properly check:

tracking frame in assets_writer_backpack_3d.lua (should match the tracking frame you have set in your xyz.lua file that you use when running cartographer)
urdf config file in assets_writer_backpack_3d.launch (should point to the urdf you use while running cartographer)

@kentsommer  Well, I think u mean that I need to make sure that the configuration file is correct.
Actually, I think my configuration is all right and the corresponding frames are the same. The tracking frame is "imu".
Here are some probable problems. Should I run the cartographer_node and the asset_writer node at the same time? I tried but I failed on the same error. Then maybe I run the wrong command at the first time getting the  .pbstream  file? I just call this service when rosbag is done, should I call this service at the beginning of the rosbag time? And I m going to check the asset_writer docs to find the mistakes.
Thanks~

@DriftingTimmy
You have two options (ways to run):
Online Cartographer (before killing cartographer_ros run these):

rosservice call /finish_trajectory 0
rosservice call /write_state xyz_your_file_name.pbstream

Offline Cartographer:

Don't have to run anything manually, it generates the necessary .pbstream file

After finishing the above:

roslaunch cartographer_ros assets_writer_backpack_3d.launch bag_filenames:=path_to_bag pose_graph_filename:=path_to_pbstream

@kentsommer  I just followed your suggestions and run the offline_node instead. When I run the offline node, I get warnings:
[ WARN] [1526372510.416963827,<PHONE_NUMBER>.019913171]: W0515 16:21:50.000000 28105 tf_bridge.cc:52] "imu" passed to lookupTransform argument source_frame does not exist.
[ WARN] [1526372510.417029835,<PHONE_NUMBER>.035860380]: W0515 16:21:50.000000 28105 tf_bridge.cc:52] "imu" passed to lookupTransform argument source_frame does not exist.
[ WARN] [1526372510.417066582,<PHONE_NUMBER>.035860380]: W0515 16:21:50.000000 28105 tf_bridge.cc:52] "imu" passed to lookupTransform argument source_frame does not exist.
[ WARN] [1526372510.417131340,<PHONE_NUMBER>.067925180]: W0515 16:21:50.000000 28105 tf_bridge.cc:52] "imu" passed to lookupTransform argument source_frame does not exist.
And I get the corresponding  .pbstream  file. After running the asset_writer, I get fatal errors:
F0515 16:25:41.712893 29841 assets_writer.cc:151] Check failed: pose_graph_.trajectory_size() == bag_filenames_.size() (0 vs. 1) Pose graphs contains 0 trajectories while 1 bags were provided. This tool requires one bag for each trajectory in the same order as the correponding trajectories in the pose graph proto.
*** Check failure stack trace: ***
@     0x7f8ca1128daa  (unknown)
@     0x7f8ca1128ce4  (unknown)
@     0x7f8ca11286e6  (unknown)
@     0x7f8ca112b687  (unknown)
@           0x4b0f7b  cartographer_ros::AssetsWriter::AssetsWriter()
@           0x4ab4c1  main
@     0x7f8c9dfeef45  (unknown)
@           0x4ad0d7  (unknown)
@              (nil)  (unknown)
================================================================================REQUIRED process [cartographer_assets_writer-1] has died!
process has died [pid 29841, exit code -6, cmd /home/lx/catkin_cartographer/install_isolated/lib/cartographer_ros/cartographer_assets_writer -configuration_directory /home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files -configuration_basename assets_writer_backpack_3d.lua -urdf_filename /home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/urdf/robo_3d.urdf -bag_filenames /home/lx/Rosbags/segmentmatching/try2.bag -pose_graph_filename /home/lx/Rosbags/segmentmatching/try2.bag.pbstream __name:=cartographer_assets_writer __log:=/home/lx/.ros/log/768f62ce-53ef-11e8-9151-1c1b0d00bd07/cartographer_assets_writer-1.log].
log file: /home/lx/.ros/log/768f62ce-53ef-11e8-9151-1c1b0d00bd07/cartographer_assets_writer-1*.log
Initiating shutdown!
This time the problem is different. What does it mean that the trajectories are not matched?
Thx a lot!

It means that your configuration is likely wrong:

"imu" passed to lookupTransform argument source_frame does not exist (this likely means your urdf is incorrect for your setup)
Pose graphs contains 0 trajectories (this means cartographer never built a map i.e. nothing happened and your pose graph is empty)

@kentsommer  https://github.com/DriftingTimmy/carto_config Here is my configuration files.
The bag file is too big, I m considering record a new bag.
But I just figured out the problem of my bag file is that the message style is not satisfied with cartographer. And I change it to the matched style and then I run:
roslaunch cartographer_ros assets_writer_backpack_3d.launch bag_filenames:=/home/lx/Rosbags/segmentmatching/try2_mod.bag pose_graph_filename:=/home/lx/Rosbags/segmentmatching/try2_save.pbstream
In the beginning, the programme seems to be alright loading the bagfile(its size is about 13G) and other configurations. But after few minutes, I get a new error like this:
... logging to /home/lx/.ros/log/768f62ce-53ef-11e8-9151-1c1b0d00bd07/roslaunch-lx-29488.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://lx:35013/
SUMMARY
PARAMETERS

/rosdistro: indigo
/rosversion: 1.11.21

NODES
/
cartographer_assets_writer (cartographer_ros/cartographer_assets_writer)
ROS_MASTER_URI=http://localhost:11311
core service [/rosout] found
process[cartographer_assets_writer-1]: started with pid [29506]
I0515 19:42:33.251335 29506 configuration_file_resolver.cc:41] Found '/home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files/assets_writer_backpack_3d.lua' for 'assets_writer_backpack_3d.lua'.
I0515 19:42:33.251737 29506 configuration_file_resolver.cc:41] Found '/home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files/transform.lua' for 'transform.lua'.
I0515 19:42:33.251763 29506 configuration_file_resolver.cc:41] Found '/home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files/transform.lua' for 'transform.lua'.
I0515 19:42:33.256165 29506 assets_writer.cc:194] Processing /home/lx/Rosbags/segmentmatching/try2_mod.bag...
I0515 19:42:33.341763 29506 assets_writer.cc:260] Processed 0 of 635.477 bag time seconds...

I do not know what is wrong here. Does it mean that the data is too large or something else?

F0515 19:48:19.481357 29506 hybrid_grid.h:387] Check failed: new_bits <= 8 (9 vs. 8)
means that a voxel grid is too large.
It think the limitation is 8192 voxels, so it should usually be in hundreds of meters.
See https://github.com/googlecartographer/cartographer/issues/937
(Note that in SLAM itself, this limitation only applies to the size of a submap, not to the entire map.)

@gaschler  Thanks for your answer!! I will record a new data in a smaller environment. I just enlarge the voxel size to 10cm to make sure the assets_writer can run well. And I really got some  .png  pictures like this:

But I can not get the ply file either. Because I got a new error which I think is caused by the large bag file data:
process[cartographer_assets_writer-1]: started with pid [30630]
I0516 10:56:18.579820 30630 configuration_file_resolver.cc:41] Found '/home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files/assets_writer_backpack_3d.lua' for 'assets_writer_backpack_3d.lua'.
I0516 10:56:18.580185 30630 configuration_file_resolver.cc:41] Found '/home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files/transform.lua' for 'transform.lua'.
I0516 10:56:18.580199 30630 configuration_file_resolver.cc:41] Found '/home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files/transform.lua' for 'transform.lua'.
I0516 10:56:18.584894 30630 assets_writer.cc:194] Processing /home/lx/Rosbags/segmentmatching/try2_mod.bag...
I0516 10:56:18.668066 30630 assets_writer.cc:260] Processed 0 of 635.477 bag time seconds...
I0516 11:07:00.415024 30630 counting_points_processor.cc:43] Processed 335311832 and finishing.
================================================================================REQUIRED process [cartographer_assets_writer-1] has died!
process has finished cleanly
log file: /home/lx/.ros/log/768f62ce-53ef-11e8-9151-1c1b0d00bd07/cartographer_assets_writer-1*.log
Initiating shutdown!
So if I have a new smaller bag file, everything will be alright? Thx

@kentsommer Thank u so much for your help! I think the points are too many, is there any configuration params can be modified to downsample the data?
And I just tried to generate the  .ply  file by adding the command you mentioned. But I cannot get the  . ply  file after the cartographer_assets_writer shutting itself down. Do I have to modify other params?

@DriftingTimmy
The size of your data is not an issue. Did you rebuild and source the workspace?
In other words, ensure that the file here /home/lx/catkin_cartographer/install_isolated/share/cartographer_ros/configuration_files/assets_writer_backpack_3d.lua' has the write_ply section in it.

@kentsommer  Thank U so much! I rebuild the work space and check it again. It worked well.
And the final map size is too big(6.5G), is there any parameters we can change to downsample the map data during the assets_writer step?
Thx again~

@DriftingTimmy
One option is modifying the min_max_range_filter:
{
      action = "min_max_range_filter",
      min_range = 1.,
      max_range = 60.,
    },

There is also another processor that might be useful (voxel_filter_and_remove_moving_objects). I don't' remember the parameters for this one though.

@kentsommer  hhh That's enough for me~ I tried to convert my ply file to pcd file using the command "pcl_ply2pcd" and the process dumped like this:
Convert a PLY file to PCD format. For more information, use: pcl_ply2pcd -h
PCD output format: binary
Segmentation fault (core dumped)
I think the ply file is too big(about 6.5G), so I need to downsample the input data~

@DriftingTimmy
The file size is really not an issue. There are many people that process much larger datasets. That being said, pcl_ply2pcd is a part of PCL not cartographer. So, you would likely be better served opening an issue there (https://github.com/PointCloudLibrary/pcl)

ok～ Thanks a lot~ U really helped me so much~
I m going to close this issue~

@DriftingTimmy
I suggest you take a look at the tuning documentation.
The parameter you are looking for is linear_z_search_window

@kentsommer Thanks for all your helpful answers.
In addition, make sure your transformation between the IMU and the laser scanner in the urdf config is accurately calibrated.
In case you use odometry, temporarily disable it in cartographer_ros because it is another possible source of error.

@kentsommer  @gaschler
Thank u so much! I've tried to tuning the params to make my data detect a loop.
And it is really a difficult job to make sure the params can satisfy all the data environment, but I finally succeeded once.
Thanks again~

@DriftingTimmy  Hi, I am a master's student at the University of Cqupt and I am trying to implement 3D SLAM using the RSLiDAR-16. The cartographer node subscribes to the /rslidar_points topic , /imu topic and /odom topic. however, the sub-map does not build. There is no error or warning in the terminal. I will really appreciate some help as to why the sub-map is not being constructed. Thank you very much

@daiencan Sorry for replying you so late cause I was busy with my job and graduation. I don't know if u have solved this problem or not?

@DriftingTimmy
Hello, I also got the problem when running cartographer with IMU and 16-lines lidar.
The rosbag_validate result is:

My data bag:

I could not run the cartographer and there is no map build

my files:
demo_rslidar_3d.launch
mydemo_3d.rviz
rslidar_2d.urdf
rslidar_scan_3d.lua
rslidar_3d.launch
Can you help me in this?

@DriftingTimmy
Hi, I have been running 3D cartographer successfully with no error by a 16-lines LIDAR and a MPU6050. But the track is inconsistent with the real movement, like this:

The result of bag is:

I0316 12:20:33.418805 11044 rosbag_validate_main.cc:398] Time delta histogram for consecutive messages on topic "/IMU" (frame_id: "imu"):
Count: 18056  Min: 0.004353  Max: 0.013893  Mean: 0.010000
[0.004353, 0.005307)	                    	Count: 1 (0.005538%)	Total: 1 (0.005538%)
[0.005307, 0.006261)	                    	Count: 0 (0.000000%)	Total: 1 (0.005538%)
[0.006261, 0.007215)	                    	Count: 0 (0.000000%)	Total: 1 (0.005538%)
[0.007215, 0.008169)	                    	Count: 281 (1.556269%)	Total: 282 (1.561808%)
[0.008169, 0.009123)	                    	Count: 73 (0.404298%)	Total: 355 (1.966105%)
[0.009123, 0.010077)	 ###################	Count: 17197 (95.242577%)	Total: 17552 (97.208687%)
[0.010077, 0.011031)	                    	Count: 151 (0.836287%)	Total: 17703 (98.044968%)
[0.011031, 0.011985)	                    	Count: 266 (1.473194%)	Total: 17969 (99.518166%)
[0.011985, 0.012939)	                    	Count: 86 (0.476296%)	Total: 18055 (99.994461%)
[0.012939, 0.013893]	                    	Count: 1 (0.005538%)	Total: 18056 (100.000000%)
E0316 12:20:33.421423 11044 rosbag_validate_main.cc:382] Point data (frame_id: "rslidar") has a large gap, largest is 0.101069 s, recommended is [0.0005, 0.05] s with no jitter.
I0316 12:20:33.421811 11044 rosbag_validate_main.cc:398] Time delta histogram for consecutive messages on topic "/rslidar_points" (frame_id: "rslidar"):
Count: 1791  Min: 0.100548  Max: 0.101069  Mean: 0.100801
[0.100548, 0.100600)	                    	Count: 10 (0.558347%)	Total: 10 (0.558347%)
[0.100600, 0.100652)	                    	Count: 7 (0.390843%)	Total: 17 (0.949190%)
[0.100652, 0.100704)	                    	Count: 10 (0.558347%)	Total: 27 (1.507538%)
[0.100704, 0.100756)	                   #	Count: 51 (2.847571%)	Total: 78 (4.355109%)
[0.100756, 0.100809)	       #############	Count: 1190 (66.443329%)	Total: 1268 (70.798439%)
[0.100809, 0.100861)	               #####	Count: 478 (26.689001%)	Total: 1746 (97.487434%)
[0.100861, 0.100913)	                    	Count: 21 (1.172529%)	Total: 1767 (98.659966%)
[0.100913, 0.100965)	                    	Count: 10 (0.558347%)	Total: 1777 (99.218315%)
[0.100965, 0.101017)	                    	Count: 9 (0.502513%)	Total: 1786 (99.720825%)
[0.101017, 0.101069]	                    	Count: 5 (0.279174%)	Total: 1791 (100.000000%)

Here is my bag.
The account:<PHONE_NUMBER>7
Password: 123456789
Any suggestions would be highly appreciated!

Hello @Duke-Allen !!! I have exactly the same equipment. I want to ask you how did you connect imu and lidar. They are one above the other ? Did you set that offset in any conf file or anywhere else? Thanks in advance.


Trigger Failover On 3092 And 1022

Pull Request Template
Description
Please include a summary of the change and which issue is fixed. Include samples if adding new API, and include relevant motivation and context. List any dependencies that are required for this change.
Type of change
Please delete options that are not relevant.

[] Bug fix (non-breaking change which fixes an issue)
[] New feature (non-breaking change which adds functionality)
[] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[] This change requires a documentation update

Closing issues
To automatically close an issue: closes #IssueNumber

Was a demo PR. Closing since the original ones got merged.


Feature/mssb 297 service broker api 2.12

Update auf Service Broker API v2.12

@rschollmeyer please put this PR into separated requested. This PR is to big for one single review.


#69 Private key analyzer added.

Pull Request Test Coverage Report for Build 87

33 of 34 (97.06%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+1.1%) to 57.979%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pastepwn/analyzers/tests/privatekeyanalyzer_test.py
26
27
96.3%

Totals

Change from base Build 84:
1.1%

Covered Lines:
723

Relevant Lines:
1247

💛  - Coveralls


Resolve test_multi_pk.py Flask-SQLAlchemy Model DeprecationWarning

Now an error that prevents test collection when using Flask-SQLAlchemy 3.1.1:
 ___________ ERROR collecting flask_admin/tests/sqla/test_multi_pk.py ___________
ImportError while importing test module '/home/runner/work/flask-admin/flask-admin/flask_admin/tests/sqla/test_multi_pk.py'. Hint: make sure your test modules/packages have valid Python names. Traceback:
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/importlib/__init__.py:90: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
flask_admin/tests/sqla/test_multi_pk.py:3: in <module>
    from flask_sqlalchemy import Model
E   ImportError: cannot import name 'Model' from 'flask_sqlalchemy' (/home/runner/work/flask-admin/flask-admin/.tox/py312-flask3-wtforms3/lib/python3.12/site-packages/flask_sqlalchemy/__init__.py). Did you mean: 'model'?

Yeah - I spotted the same thing in https://github.com/pallets-eco/flask-admin/pull/2476, and addressed it there.
It may be good to look at/reference that PR, as unless someone says it's outrageous I'd like to try to get it in.


Add NLT to ExtractorBindingPattern and ExtractorMemberExpression

This adds a [no |LineTerminator| here] assertion to ExtractorBindingPattern and to ExtractorMemberExpression and introduces a new [Assertion] production parameter to ExtractorMemberExpression to align with Option (1) as discussed in #24:

Introduce an NLT in ExtractorBindingPattern but not ExtractorAssignmentPattern.

This is an alternative solution to the one implemented in #27.
The outcome of this change is as follows:

For
let x
(a) = b

the source is interpreted as let x; (a) = b; due to the NLT assertion and ASI.

For
let x
[a](b) = c

the source is interpreted as let x; [a](b) = c; due to the NLT assertion and ASI. Note that [a](b) is not a valid ExtractorAssignmentPattern as [a] is not a valid ExtractorMemberExpression and will result in an Early Error when applying static semantics for destructuring assignment.

For
let x[a]
(b) = c

the source is interpreted as let x[a]; (b) = c; due to the NLT assertion and ASI and results in a Syntax Error at parse time.

For
x
(a) = b

the source is interpreted as x(a) = b; as there is no NLT restriction. This makes ExtractorAssignmentPattern mildly inconsistent with ExtractorBindingPattern.

For
x
[a](b) = c

the source is interpreted as x[a](b) = c; as there is no NLT restriction. This makes ExtractorAssignmentPattern mildly inconsistent with ExtractorBindingPattern.

For
x
[a]
(b) = c

the source is interpreted as x[a](b) = c; as there is no NLT restriction. This makes ExtractorAssignmentPattern mildly inconsistent with ExtractorBindingPattern.

Fixes #24
Related #27

Closed in favor of #27


create unit tests for radio card group component

Closing older engineering tasks to focus on customer facing issues.  Please reactive if this issue is tracking upcoming planned work.


Bug: Extra space seen in accordion when badge and no secondary text

Describe the bug
There is extra space left from the secondary text when there is no secondary text present.

This causes the space between the heading text and the badge to be too much.
Provide Code
No response
To Reproduce
Include badge on accordion header. Space between badge and heading text is too wide. Secondary text span is showing up and moving the badge over.
Relevant console log output
No response
What browsers are you seeing the problem on?
No response
Additional context
No response

I've created a PR of a potential fix: https://github.com/GovAlta/ui-components/pull/1765

:tada: This issue has been resolved in version 1.17.0-alpha.35 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 4.17.0-alpha.21 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 4.20.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 1.20.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 3.0.0-alpha.4 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 3.0.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


maximum recursion depth exceeded

When I want to use OpenPose after an Upscale, I get this error, but if I take the image before the Upscale, I don't get any error.
File "threading.py", line 1016, in _bootstrap_inner File "threading.py", line 953, in run File "D:\ComfyUI_windows_portable\ComfyUI\main.py", line 95, in prompt_worker  e.execute(item[2], prompt_id, item[3], item[4])   File "D:\ComfyUI_windows_portable\ComfyUI\custom_nodes\rgthree-comfy\__init__.py", line 173, in rgthree_execute     return self.old_execute(*args, **kwargs)   File "D:\ComfyUI_windows_portable\ComfyUI\execution.py", line 371, in execute     to_execute = sorted(list(map(lambda a: (len(recursive_will_execute(prompt, self.outputs, a[-1])), a[-1]), to_execute)))   File "D:\ComfyUI_windows_portable\ComfyUI\execution.py", line 371, in <lambda>     to_execute = sorted(list(map(lambda a: (len(recursive_will_execute(prompt, self.outputs, a[-1])), a[-1]), to_execute)))   File "D:\ComfyUI_windows_portable\ComfyUI\custom_nodes\rgthree-comfy\__init__.py", line 195, in rgthree_recursive_will_execute     will_execute_value = execution.recursive_will_execute(prompt, outputs, input_unique_id, *args, **kwargs)   File "D:\ComfyUI_windows_portable\ComfyUI\custom_nodes\rgthree-comfy\__init__.py", line 195, in rgthree_recursive_will_execute     will_execute_value = execution.recursive_will_execute(prompt, outputs, input_unique_id, *args, **kwargs)   File "D:\ComfyUI_windows_portable\ComfyUI\custom_nodes\rgthree-comfy\__init__.py", line 195, in rgthree_recursive_will_execute     will_execute_value = execution.recursive_will_execute(prompt, outputs, input_unique_id, *args, **kwargs)   [Previous line repeated 988 more times]   File "D:\ComfyUI_windows_portable\ComfyUI\custom_nodes\rgthree-comfy\__init__.py", line 179, in rgthree_recursive_will_execute     will_execute = RgthreePatchRecursiveExecute_Set_patch_recursive_execution_to_false_if_not_working(unique_id) RecursionError: maximum recursion depth exceeded
Here's the link to my workflow : https://drive.google.com/drive/folders/1-Gt4BCxEeBnFwUrVlITmr6SLwAtIarsG?usp=sharing

This would mean you have a infinite loop somewhere in your node connections. From your workflow, it looks like the DWpose node's IMAGE output connects to the UPSCALE SOURCE switch, which then goes down to the upscale, and up to the reroute in your screenshot, which could then be fed back into the DWpose etc. That's likely the loop.
This actually doesn't have anything to do with rgthree-comfy, but I have overridden the recursive function to make it 1000s of times faster, so it's not impossible something in there is doing something. You can try setting patch_recursive_execution to false in the comfyui/custom_nodes/rgthree-comfy/rgthree_condifg.json and restart comfy. That will use the comfyui's original, unoptimized code in instead. Let me know if that happens to fix it.

Sorry for wasting your time on an unrelated issue, have a nice day.


Add toggle for filters on mobile UI

Why are these changes being introduced:
The result filters are awkward on a mobile display, and may only be
needed for some users. Rather than having them display by default,
and take up space that is very precious, we want to only show a UI
control to expose them when needed.
Relevant ticket(s):
https://mitlibraries.atlassian.net/browse/gdt-174
How does this address that need:

This adds a button above the filters panel markup, and adds a few
classes to the existing markup at the top of the filters panel.

With CSS, we hide the filters panel on the smallest screens using a
new hidden-sm class. This class is then toggled via javascript when
the user clicks on the UI button.

The javascript is part of a new file - app/javascript/filters.js -
which is loaded by the filters partial.

Document any side effects to this change:

I'm not sure where best to add the .hidden-sm class to this codebase.
For now I'm adding it to a new _layouts module.

During initial testing, it feels awkward to have competing scroll
bars in the filter UI by imposing a maximum height on the panels.
Because the user has now chosen explicitly to show the filters, it
feels better to just have them take up the space they need, rather
than making the user navigate overlapping scroll bars on a linear
display. So this overrides the maximum filter panel height.

Developer
Env

[ ] All new ENV is documented in README
[ ] All new ENV has been added to Heroku Pipeline, Staging and Prod
[x] No ENV implications

A11y

[x] ANDI or Wave has been run in accordance to
our guide and
all issues introduced by these changes have been resolved or opened as new
issues (link to those issues in the Pull Request details above)

Stakeholder

[ ] Stakeholder approval has been confirmed (or is not needed)
[x] Stakeholder approval will come during QA

Requires database migrations?
NO
Includes new or updated dependencies?
NO
Code Reviewer

[x] The commit message is clear and follows our guidelines
(not just this pull request message)
[ ] There are appropriate tests covering any new functionality
[x] The documentation has been updated or is unnecessary
[ ] The changes have been verified
[x] New dependencies are appropriate or there were no changes

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 99.454%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
364

Relevant Lines:
366

💛  - Coveralls

Thanks for catching the needed break point - I've pushed a commit to make this all take effect at the medium screen size, not small.
As for whether we move those other rules into _layouts.scss.... that may be logical. I'm not quite clear at the moment, but it will likely look fine during code review - so if you want to include it under that ticket, that seems fine.


Software Construction in v9 draft

In the v9 draft of Core Programming, MIT Software Construction in Java on edX replaces UBC Software Construction from v8. I see two problems with this. Note that this is coming from someone who looked at the structure of both, but the content of neither so I don't know if one is actually of significantly higher quality or whatever.

MIT Software Construction in Java is an archived course and all the Java Tutor parts are no longer available. This appears to mean that the course no longer teaches Java and assumes that you already have that knowledge.

The obvious solution would be to instead use the ocw version. This is definitely a better idea; after all, it does include 2 pages intended to teach Java. https://ocw.mit.edu/ans7870/6/6.005/s16/getting-started/java.html and https://ocw.mit.edu/ans7870/6/6.005/s16/classes/02-basic-java/. However, and someone else can say if this is actually enough to learn Java, it seems pretty cursory to me. MIT even offers a class (not on OCW) specifically to prepare students for 6.005 called 6.178 Introduction to Software Engineering in Java plus a prerequisite of 6.01. All of which means to say, it doesn't seem like the best fit for ossu.

On the other hand, UBC Software Construction only assumes that you've done How to Code: Simple and Complex Data, which are already on the OSSU curriculum. On campus as well, the only prerequisite is cpsc 110, their version of How to Code. UBC Software Construction seems to be a much better fit for the OSSU curriculum than the MIT equivalent.

Thanks for the heads-up about MIT's course not being fully available anymore. I knew it would likely be too advanced, but I had it there as a placeholder as I do need some kind of Java course to bring students up to speed on Java to the extent needed for the courses on parallelism and concurrency. I haven't found better alternatives yet, but these topics are too important to exclude just because the resources are sparse.
UBC Software Construction is unfortunately kind of bad. Due to the UBC Software Development MicroMasters being designed for people who just want to quickly jump into a new career, the UBC Software Construction courses tend not to take a very shallow approach to teaching Java, not really explaining the semantics in a deep or effective way. Two problems with this:

They don't provide a useful transition from SPD (which uses an almost purely functional style). The major changes to program semantics and data design that occur when moving from functional to imperative style are never explicitly laid out. (It is non-trivial to convert from one style to another as typically one style has to dominate the types.)
They ask students to wade into unfamiliar codebases in a language they barely know. It is certainly useful to practice diving into unfamiliar codebases but this skill is not relevant at this point in the curriculum, and it's not effective when you don't know the language.

They also (at least in the first course of the pair) teach discredited design principles that came from the old days of the OOP fad, and they use some of the worst analogies I've ever heard, like (if I remember correctly) comparing abstraction boundaries / interfaces to the tip of an iceberg...
I will have to take a look at Helsinki's Java materials. It might be just what's needed. Thanks!

Interesting! I kind of just assumed (unlike 6.005 where I took a somewhat closer look) that UBC's would be good since it officially relies only on HtC so that's good to know that that's not the case. I was going to take UBC regardless of what OSSU does; now I'm going to take Helinski regardless of what OSSU does.

@hanjiexi I think I found the perfect resource. I looked through all the colleges that use HtDP to see what they do next and Worcester Polytechnic Institute has the course material for its next course online for free. The professor who changed their CS1 course to use HtDP, Kathi Fisler, is co-director of Bootstrap, an organization whose directors include one of the authors of HtDP and are getting HtDP into middle schools. Anyway, she also created a CS2 course that builds on HtDP and though she has switched to Brown, WPI still uses her material and it's all available online at http://web.cs.wpi.edu/~cs2102/b16/
I also found an article by another of the authors of HtDP, Matthias Felleisen, detailing Northeastern's approach to teaching Computer Science (which uses HtDP in CS1). At the end of the article he lists some other places that have adapted/adopted this curriculum and has this to say about WPI's implementation.

Kathi Fisler mapped out an adaptation of our first-year curriculum at WPI. Her adaptation improved on several aspects of Fundamentals II (CS2)

The article is also super interesting: http://www.ccs.neu.edu/home/matthias/Thoughts/Developing_Developers.html

@Marc5x I apologize that I don't have an answer for you. I was really hoping someone else would answer. On the side of UBC's course, you're already halfway through a two course sequence so you may as well finish it up, on the other hand it's apparently a bad course. On the side of MIT's course, you've already done some Java so you may as well switch over and do a course that's actually good and you can just do the Java tutorials it links to and you'll probably be fine, on the other hand, you're restarting from the starting and will likely cover some material you've already learned. On the side of Helsinki's course, it's pretty much the definitive resource for noobs to learn Java so you may as well start there, on the other hand, it's for noobs so you've probably learned many of the concepts it's teaching even if not specifically in Java. On the side of WPI's course, it's actually meant to continue on from the equivalent of How to Code: Simple and Complex Data so you'll learn the material in a way that makes sense and builds on your HtC knowledge, on the other hand, you're restarting and it doesn't really cover the same material as the UBC and MIT courses and maybe that's actually something that the curriculum wants to be covering now (though it doesn't sound like it from @hanjiexi's comments here.
So I hope that gave you some idea of what the pros and cons might be, but I can't really give you any advice here. I'm guessing at this point you've probably already made an arbitrary decision and are just going with it.

@Alaharon123 also ask if it's better doing the MIT course skipping the material I've already done than doing the second part of UBC.

Idk from a curriculum perspective, but there's a week 0 type thing in the parallel programming course that asks you to program some things and says if you're comfortable with what it's asking then you're ready to take the course. Or something like that.

Can't comment on MIT vs UBC. You're the one doing the actual course so you'd be able to see how well they line up.

Okay thanks anyway!

I got the entirety of http://web.cs.wpi.edu/~cs2102/b16/ put on the wayback machine so if it gets taken down at some point, there's a copy from February 2, 2019

fyi, i noticed that mit previously did 6.005x on edx (back in 2016) and materials are available archived.  They broke it into 2 courses.  haven't tried them yet, but wanted to make sure you were aware they were still available.
https://www.edx.org/course/advanced-software-construction-java-mitx-6-005-2x
https://www.edx.org/course/software-construction-java-mitx-6-005-1x

That's what I'm referring to in the op


Provide BTNode script template

To ease creating of custom behavior tree nodes (extending BTAction or BTCondition), it may be useful to have a template with the tickfunction

When extending a BTNode (anyone), the template becomes available


draft: Generated snippets include fully initialized messages

Generated with googleapis/gapic-generator-csharp#798

Build failures are expected here, see b/332719568#comment5

Closing, but I'm keeping my branch.


Missing cmath include, certain Linux linking issues

Please add #include <cmath> as its complaining that its missing references to std::pow and std::fpclassify
Also on a separate note, on Linux, I have to manually link Intel TBB in my CMake. Maybe you could bundle it together in your CMakeLists?
Below is my example, using CPM.cmake, to get things to compile and link. Tested with gcc-14 and clang-18
# CMakeLists.txt
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)

file(
  DOWNLOAD
  https://github.com/cpm-cmake/CPM.cmake/releases/download/v0.40.2/CPM.cmake
  ${CMAKE_CURRENT_BINARY_DIR}/cmake/CPM.cmake
)
include(${CMAKE_CURRENT_BINARY_DIR}/cmake/CPM.cmake)

project(cpm)

CPMAddPackage("gh:Compaile/ctrack#v1.0.0")

find_package(TBB REQUIRED)

add_executable(
  ${PROJECT_NAME}
  main.cpp
)

target_compile_features(
  ${PROJECT_NAME}
  PRIVATE
  cxx_std_20
)

target_link_libraries(
  ${PROJECT_NAME}
  PRIVATE
  TBB::tbb
  ctrack
)

// main.cpp
#include <iostream>

#include <cmath> // Needed for std::pow and std::fpclassify
#include <ctrack.hpp>

void printFunc() {
  CTRACK;
  std::cout << "Print" << std::endl;
}

int main() {
  printFunc();
  ctrack::result_print();
  return 0;
}

thanks for the report, we are looking into this

Since not all compilers support parallel execution without linking to TBB, we add a flag to fall back to sequential calculation of the results.
The CMake in the example folder also shows how to link to TBB (also added it to the README as a note).
If a user is on a compiler which would need TBB for parallel execution but does not want to include TBB, we added a fallback with a sequential mode.
That way each user can decide if they want to link to tbb (if needed at all to execute parallel c++17 algorithms).

@Compaile
Is it not possible to default target_compile_definitions for CTRACK_DISABLE_EXECUTION_POLICY if TBB is not detected?
So instead of having the user to manually set CTRACK_DISABLE_EXECUTION_POLICY, the user should be able to explicitly define CTRACK_DISABLE_EXECUTION_POLICY to disable parallel execution, but for all other cases, it should default to ON if TBB_FOUND is false

Also I tried v1.0.1, I have TBB installed, but it still failed to link TBB automatically. So I think what can be done is that, TBB should be linked automatically if FOUND, else CTRACK_DISABLE_EXECUTION_POLICY should be defined if TBB is not found. User should be able to explicitly define CTRACK_DISABLE_EXECUTION_POLICY to override the behaviour above

That is exactly whats happening at the moment.
if tbb is needed (non msvc) it checks if it can be found, if yes it will link. if no it will set the compile definition.
If it fails to link it automatically on your system please clear the cmake cache and provide the output of cmake ..

I just tested v1.0.1, clean build, deleted cache. And this is the result I got:
# CmakeLists.txt
cmake_minimum_required(VERSION 3.28 FATAL_ERROR)

file(
  DOWNLOAD
  https://github.com/cpm-cmake/CPM.cmake/releases/download/v0.40.2/CPM.cmake
  ${CMAKE_CURRENT_BINARY_DIR}/cmake/CPM.cmake
)
include(${CMAKE_CURRENT_BINARY_DIR}/cmake/CPM.cmake)

project(main)

<EMAIL_ADDRESS>
add_executable(
  ${PROJECT_NAME}
  main.cpp
)

target_link_libraries(
  ${PROJECT_NAME}
  PRIVATE
  ctrack
)

target_compile_features(
  ${PROJECT_NAME}
  PRIVATE
  cxx_std_17
)

// main.cpp
#include <ctrack.hpp>

int main() {
  CTRACK;
  ctrack::result_print();
  return 0;
}

And I got the output that says a bunch of undefined reference to tbb functions.
To fix it, I had to explicitly add find_package(TBB) and TBB::tbb in the linked libraries.
For reference: I am on CachyOS (Arch Linux distro), TBB is installed as a system package, compiled using clang-18.

ah i see you dont build the examples, you build your project directly.
in the examples we added a cmake file which does exactly what you want/describe
https://github.com/Compaile/ctrack/blob/main/examples/CMakeLists.txt
I am unsure if we can implicit force this in the cmake bundle already or have to require the cmake user to check it themself (they can copy/use the macro from the example files in their cmake project)

i will prepare another branch to see if i can add this behavior automatically

Oh I actually didn't know this, but I did build the examples as well, but it's not working as well alas.
For what's worth, I did try modifying the root CMakeLists.txt in the repo, I added these lines after Line 8 and it seems to be working.
find_package(TBB)
if (TBB_FOUND)
  target_link_libraries(ctrack INTERFACE TBB::tbb)
else()
  target_compile_definitions(ctrack INTERFACE CTRACK_DISABLE_EXECUTION_POLICY)
endif()

can u test
https://github.com/Compaile/ctrack/tree/improve_tbb_interfacing
and confirm if it works?

^ yup seems to work!
Could you also add an option to disable building of examples?

option added and 1.0.2 released


Examples patch

Hey,
I thought about adding a example-script right into the project, so people can see how it works.
Two changes:

Added example script project
Modified TargetExt (.asi to .dll) and added PostBuildEvent (copy dll to asi) so VS can register the dll as dependecy

If you want something changed, just let me know :+1:

Looks good! I will do some additional cleanup in the following commit.

Cleanup done in 708847957bb229e5fec6604a7189bc378b444260.


Localsend on dual boot linux/windows laptop

I have an issues using Localsend on my Acer Dual boot linux/windows laptop. On Linux Mint it works perfect and sees my other PC and also my smartphone. When installed on Windows it sses my other devices BUT both my other PC and smartphone cannot find my Acer Laptop. I have given different names to distinguish between Linux and Windows but still no joy. Reverted to same name and still nothing. Any hints why and how to make it work?? Thanks

Thanks....resolved. Firewall issue from within Avast One on my laptop.

@roy0581 can you close this issue?


Suggestion: Update values based on TP entries

Currently, when some item is sold on the TP we get 2 major issues.
First, the item itself is removed from the loot, this is not an issue when it is a recently dropped item but it messes up the tracker when we sell something we had before the last tracker reset.
Second, we get a minus to the gold gain (because of the TP tax) but we do not get the gold plus (even if not real) of the sale we will eventually do.
What I suggest would be to have a "real" gold and an "expected" gold.
An example situation would be if I'm farming but at some point I have to sell some stuff to get some inventory space. Currently, if it is to the merchant, it's no issue but sometimes we want to sell something on the TP right away because of margins (Specially now with a new expansion, prices change all the time of the new mats for example). At this point, we would get the TP Fee updating the real gold (since it is indeed used), but the expected gold would add the sale value. That way we can have an idea of how much we actually got on the farming session.
This does not completely remove the issue of the "old" item being removed, but at least it won't show as a major negative gain if we do sell and old item.

The farming tracker can only track changes on the account. It cannot distinguish between an item being salvaged, destroyed, used in crafting, sold to vendor or placed on TP as a sell listing. And it cannot distinguish what changed the raw gold. Theoretically there could be even multiple gold/item change events that happen at the same time (e.g. sell and buy the same item at a vendor instantly: 2 gold changes, 2 item changes). Those would then be recognized as a single event (no item change and the difference in raw gold between buying and selling the item).
It would be probably possible to add a setting that will act as if every item that is lost and is tp-sellable, is considered to be set up as sell listing on the trading post. So when this item is lost, it wont affect the profits. But this has a few issues: the ones explained above and additionally the issue when you get.
For now I consider a setting like that to be very niche and it will mess up a lot other farming cases as explained above.


Updated compatibility with earlier versions of guzzlehttp/psr7.

Some CMSs, such as Drupal, may still be using the old version of Guzzle. This PR allows to use this package with old versions.
This has been tested in PROD and works as expected.

Codecov Report

Merging #25 (3b7d189) into main (699f995) will not change coverage.
Report is 1 commits behind head on main.
The diff coverage is n/a.

:exclamation: Current head 3b7d189 differs from pull request most recent head 6f02b1e. Consider uploading reports for the commit 6f02b1e to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff            @@
##               main      #25   +/-   ##
=========================================
  Coverage     92.43%   92.43%
  Complexity      100      100
=========================================
  Files            13       13
  Lines           291      291
=========================================
  Hits            269      269
  Misses           22       22

Files Changed
Coverage Δ

src/Modules/Chromium.php
97.08% <ø> (ø)

src/Modules/LibreOffice.php
100.00% <ø> (ø)

src/Modules/PdfEngines.php
100.00% <ø> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Thanks @AlexSkrypnyk!


Implement OAuth 2.0 Device Authorization Grant

This feature will deliver OAuth 2.0 Device Authorization Grant.
Related to Spring Security client support

@jgrandja Support for OAuth 2.0 Device Authorization Grant was recently added to Keycloak (KEYCLOAK-7675).

It looks like this has been "on-hold" for awhile now.  Any chance that this will get prioritized for an upcoming release?  Would really love to see Device Auth as a feature.

@mikesaurus There are only 2 upvotes for this feature so it's still low priority. We will likely add a sample first before we add the feature to the core code. We have a few higher priority items that need to be completed first. I don't know when the sample will be ready.

@jgrandja Hi! Recently we discovered an urgent need for Device Grant Type support in our project.
Can you please add the consent of such grant type?

@sjohnr seems that you are working on solving this issue. Can you please share details about it? It is so important for us.

@markFieldman thanks for sharing, and I agree it's super fun and important! Feel free to follow along with the sample branch I'm working on. This is an attempt to build a POC of the device grant on top of SAS.
Unfortunately, we're juggling a number of priorities at the moment so I'm only working on this off and on. It's getting closer but not quite there yet. Hopefully, it will be finished in a couple of months. Official support for device grant is probably a ways out on the schedule though.

Hey @sjohnr, I've cloned your branch and are trying to figure out how everything fits together.
I'm finding it really hard to understand all of the stuff in device-grant-authorizationserver.src.main.java.sample.web.authentication.
Why do you need all of those providers & converters?
Would it be possible to achieve the same thing using controllers to make it easier to follow?

Hi @Kvistian.

Would it be possible to achieve the same thing using controllers to make it easier to follow?

Yes, it probably would. However, I was attempting to produce an example that would eventually be contributed back to this project as an official implementation, in which case I can't use controllers or Spring MVC directly.
A few things have changed since that branch so I will have to rebase on 1.0, which is not at the top of my to-do list yet. That could add additional difficulty for you, so sorry about that.


Data cleaning - Sarvesh

Performed cleaning operations on csv files using python meta class
2 csv files used
Loaded the files into a list
Used the meta class to read the list and perform cleaning operations

passed


Lack of dependency gem definition

my env:
$ ruby -v
ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [x86_64-linux]

error message:
/usr/lib/ruby/3.0.0/bundler/rubygems_integration.rb:280:in `block (2 levels) in replace_gem': dry-types is not part of the bundle. Add it to your Gemfile. (Gem::LoadError)
        from /home/m0cchi/dev/ruby/mtga-dumper/vendor/bundler/ruby/3.0.0/gems/roar-1.2.0/lib/roar/coercion.rb:1:in `<top (required)>'
        from /home/m0cchi/dev/ruby/mtga-dumper/vendor/bundler/ruby/3.0.0/gems/mtg_sdk-3.2.1/lib/mtg_sdk/representers/card_representer.rb:2:in `require'
        from /home/m0cchi/dev/ruby/mtga-dumper/vendor/bundler/ruby/3.0.0/gems/mtg_sdk-3.2.1/lib/mtg_sdk/representers/card_representer.rb:2:in `<top (required)>'
        from /home/m0cchi/dev/ruby/mtga-dumper/vendor/bundler/ruby/3.0.0/gems/mtg_sdk-3.2.1/lib/mtg_sdk/card.rb:1:in `require_relative'
        from /home/m0cchi/dev/ruby/mtga-dumper/vendor/bundler/ruby/3.0.0/gems/mtg_sdk-3.2.1/lib/mtg_sdk/card.rb:1:in `<top (required)>'
        from /home/m0cchi/dev/ruby/mtga-dumper/vendor/bundler/ruby/3.0.0/gems/mtg_sdk-3.2.1/lib/mtg_sdk.rb:3:in `require'
        from /home/m0cchi/dev/ruby/mtga-dumper/vendor/bundler/ruby/3.0.0/gems/mtg_sdk-3.2.1/lib/mtg_sdk.rb:3:in `<top (required)>'

It's a roar issue.


Removing User Name and Bot Name after the messages being sent.

Issue Description
I want to remove user name and bot name after each message being sent and received.
Refer the screenshot below :

In  the image i want to remove 'Lindsey from maids in black' and 'userid' after each message.

Hi @satyansh-sagar - If you would like to customize the WebChat module, you can find the source code and instructions here:
https://github.com/Microsoft/BotFramework-WebChat


Only a single RequiredFields validation message shows at a time

Split off from https://github.com/silverstripe/silverstripe-elemental/pull/1178#pullrequestreview-2041868677
Elemental inline-editable blocks when you save the page, only one required field validation message appears at a time.
So if I don't enter any data I only get told about the title, then I add a title and I'm told about the image, then I add an image and I'm told about the page.
The HTTP response does have all three validation errors at the same time
Acceptance criteria

When an elemental block contains multiple form validator errors, all errors are shown in the elemental form.

I can't replicate, seems like it works correctly
Using the following code for my content block
app/src/MyBlock.php
<?php

use DNADesign\Elemental\Models\BaseElement;
use SilverStripe\Forms\CompositeValidator;
use SilverStripe\Forms\RequiredFields;
use SilverStripe\Assets\Image;

class MyBlock extends BaseElement
{
    private static $db = [
        'MyField' => 'Varchar',
        'MyOtherField' => 'Varchar',
    ];

    private static $has_one = [
        'MyImage' => Image::class,
        'MyOtherImage' => Image::class,
    ];

    private static $table_name = 'MyBlock';

    private static $singular_name = 'My Block';

    private static $plural_name = 'My Blocks';

    private static $description = 'This is my block';

    private static $icon = 'font-icon-block-content';

    public function getType()
    {
        return 'My Block';
    }

    public function getCMSCompositeValidator(): CompositeValidator
    {
        return CompositeValidator::create([new RequiredFields([
            'MyField',
            'MyOtherField',
            'MyImage',
            'MyOtherImage'
        ])]);
    }
}

app/src/MyModelAdmin.php
<?php

use SilverStripe\Admin\ModelAdmin;

class MyBlockAdmin extends ModelAdmin
{
    private static $url_segment = 'MyBlockAdmin';

    private static $menu_title = 'My block admin';

    private static $managed_models = [
        MyBlock::class,
    ];
}

When I page save I get this

When I edit from a ModelAdmin I get this

When I inline save I get this, the reason only the textfields have validation message is because there's client side validation that happens before sending it to the server, though it's not active on the upload fields

When I fill in the textfields with values and submit, I get back multiple validation warnings

@GuySartorelli wants to have a second look.

The problem I was seeing only happens if Title is a required field. That's covered by https://github.com/silverstripe/silverstripe-elemental/issues/1179 so I'm happy to call this a non-issue.


Use default SSLSocketFactory to solve TrustManager security vulnerability reported by Google Play

If you try to publish an app that uses this plulgin on Google Play, Google Play will report a security vulnerability because a custom TrustManager is used that overrides methods checkClientTrusted and checkServerTrusted with empty bodies.
To solve this issue we can use the default SSLSocketFactory.

will merge it?

Will have this compile error
 /ios/Pods/gRPC-C++/src/core/lib/iomgr/error.h:22:10: fatal error: 'grpc/support/port_platform.h' file

thx @masewo


CanonicalizeAccessor returns wrong results on cross thread

accessor might be initialized under a different context hence library->Undefined != accessor's->library->Undefined
Recently added an Assert to IsUndefinedObject** checks. That assert helped revealing this issue.
See also https://github.com/Microsoft/ChakraCore/blame/master/lib/Runtime/Types/DictionaryTypeHandler.cpp#L2020

Related to OS14010656

@agarwal-sandeep @Penguinwizzard Thanks for the reviews


Feedback request

So here is the deal, in a recent update adding the arrows for the label box, I moved the rendering of the text in a painter. This has some implications, like text overflow, max lines, text direction and positioning of the text. I have been doing this with ParagraphBuilder, Now, I made some experiments to make the same thing work with TextPainter and the result are plausible, I need it to calculate the correct size of the label box size and padding.
In the end I think I want to avoid dealing with all the quirks when painting and positioning texts. I also think it is not so performant as using plain Text widgets placed in a Column. I'm wondering is it a good idea to limit maxLines for title and the body and work with the TextOverflow to avoid Flutter overflow errors.
I do realize that words could be way longer in different languages and I'm still not sure how to deal with.
Maybe loosening the maxLines and still rely on the TextOverflow? Like Title - 2 lines, body - 5, but if there isn't space for 5 lines display 3 and add ellipsis. Or maybe add scroll to the label box. I honestly think adding scroll to the text in the overlay would be weird UX.
I'm open to discussion here. I can't promise I'll comply to all suggestion, but at least I want to get some user's feedback.
Edit: you can take a look and the suggested code changes here
https://pub.dev/packages/onboarding_overlay/versions/2.3.1-pre.2
or in the branch https://github.com/talamaska/onboarding_overlay/tree/feature/add-forwarding-events

You could use AutoSizeText to handle with the majority of the overflows:
https://pub.dev/packages/auto_size_text
Only if the text is real big this solution won't work (and if that's the case, the dev should rethink it, as it isn't ideal to have a big onboarding text )
The downside is adding a dependency to the package

auto-size is great, but it feels a bit of a magic for the end user and also could lead to unexpected results since we are able to set style for the title and the body. Also I'm not sure if it will not lead to some performance regression. Thanks for the suggestion.

The end user won't know if it was used autosize or the normal text and the configs for both are the same. For the dev it will help when the user has a smaller screen than expected (and the dev can decide the minimum size of the text to avoid weird behaviors). About the performance i really don't know the impact.

You could try something like adding an option autosize: true/false (using false as default) so then the dev chooses if he wishes an autosized or normal text.

I like that idea, just fyi, when I said end-user I meant the the dev using the package. But you are right, this could save me from a whole lot of problems with smaller screen sizes.

Suggested code changes are here
https://pub.dev/packages/onboarding_overlay/versions/2.3.1-pre.3
or in the branch https://github.com/talamaska/onboarding_overlay/tree/feature/add-forwarding-events
Added new global property for the whole Onboarding autoSizeTexts with default value false. So when it is false I fallback toe maxLines for title equal to 2 and maxLines for body text equal to 5.

will wait couple of days to see if there is a reaction from the maintainer and if not will fork and publish the fork.


Latest version broke template strings in JSX

function foo(a) { return <div className={`abcd-${a}`}>
 }

a in template string is not highlighted

Which version of Extension are you using? Also which vscode build? Which theme. This doesn't look like grammar issue. The things are scoped correctly by grammar.

VSCode Version 1.6.1 (1.6.1)
Just downloaded the grammar plugin
Monokai theme

Opened bug in vscode for this.


[pitch] Adding headers for SwiftPM

Hi,
This issue is really just to check whether you'd invite a PR for the addition of two headers to dispatch.h that are required for the Swift Package manager to work.  It wouldn't be permanently necessary (they're trying to make it happen "automagically" in SwiftPM https://github.com/apple/swift-package-manager/blob/master/Documentation/SystemModules.md ).  If you don't want the cruft, no problem, I can keep it in a private repo.
Thanks!

Will

Hi, sorry for the delayed response. I haven't really been following Swift development, but it sounds reasonable to me. Feel free to submit a PR!

Hi Nick, thanks for responding.  I may not bother you with this, it seems like Apple (and a few outside contributors) have started working on the libdispatch portion of that project.  They're saying it's a few weeks away.  For now, I'm going to just wait and see there.  If it doesn't work out I'll submit.  Thanks again!


Download files from wasm builds

This PR adds support for downloading lfortran.js and lfortran.wasm files from wasm_builds.

Looks good to me.


Increase availibility of combat knives to security

About the PR

Added combat knives to sec vend, replaced the combat boots in sec drobe with ones with a combat knife in them already, and added combat knife to the sec lathe for a cost of 2.5 steel and 1 plastic (the handle has a plastic grip, but don't worry, it's still very rugged.)
Why / Balance

There's a recent bug where sometimes people start their shifts with no shoes. This doesn't directly address that, however, all security start with a knife in their boots as a sidearm (so it's clearly not a restricted item), but there is currently no good way to obtain more of these knives which didn't make sense to me personally and several users on a discord discussion ("Latejoined as HoS with no shoes") seemed to agree.
It downright feels weird to, as a security officer, ask Chef for a kitchen knife for my cutting & slashing needs or go the rest of the shift with a glass shiv or something.

Changelog

:cl:

tweak: Security can now find replacements for their trusty Combat Knife in the SecVend, or craft them with the Sec Lathe.

bug or not diona have no shoes so this is very needed for diona sec

(reasoning on whitelist is I feel it's related, it's useful for diona who can't have shoes or others who want to wear a different style of shoes, I don't think security webbing have the whitelist at all and that's a roundstart item now with loadouts and previously with secvend, we've been talking about completely removing the whitelist from belts but obviously that's outside of scope, and many real-life examples of sheaths for knives on belts in real life and in real security / police / military applications for verisimilitude (believability, intuition for what can go in this belt for a new player) and a different role (chef) already has knives whitelisted on their belt for some precedence)


Where is the documentation for arguments?

I followed a link to #azcopy-parameters and it took me to this page but the section is apparently gone. I'm trying to copy files from an Azure DevOps pipeline to an Azure Blob. It says certain arguments are added by default, such as /Y, /Z, V, etc. but no explanation as to what those arguments do and I cannot find documentation for this anywhere.

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

ID: 15911160-5ba2-fb0a-0b24-16b3857e20ce
Version Independent ID: d925bc9f-f825-2f82-168c-6c30d716b9ce
Content: Copy or move data to Azure Storage by using AzCopy v10
Content Source: articles/storage/common/storage-use-azcopy-v10.md
Service: storage
Sub-service: common
GitHub Login: @normesta
Microsoft Alias: normesta

@valuator18 Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

@valuator18 Thank you for reporting this issue. Curious, can you share with me the source of the link that has #azcopy-parameters in it? The AzCopy v8 articles have been archived as the current version is AzCopy v10. The section of the AzCopy v8 content that you are looking for is here - AzCopy Parameters. The AzCopy article that you've landed on has a link to the archived location of the AzCopy V8 content for those still wanting to use AzCopy V8. I would be curious about where the #azcopy-parameters link came from though. If we have links discoverable in search that aren't leading in the right direction, we'd like to fix them. Thank you!

#please-close


fix: avoid unnecessarily copies in decode_zstd_single_frame

Summary of changes

Changes introduced in this pull request:

Resolve a comment // This unnecessarily copies the zstd frame. :( in fn decode_zstd_single_frame

Reference issue to close (if applicable)

Closes
Other information and links

Change checklist

[x] I have performed a self-review of my own code,
[x] I have made corresponding changes to the documentation,
[x] I have added tests that prove my fix is effective or that my feature works (if possible),
[x] I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

@aatifsyed with the below code,
when I use let b: BytesMut = a.as_slice().into(); line, I got
dhat: Total:     2,048 bytes in 2 blocks
dhat: At t-gmax: 2,048 bytes in 2 blocks
dhat: At t-end:  0 bytes in 0 blocks
dhat: The data has been saved to dhat-heap.json, and is viewable with dhat/dh_view.html

when I use let b: BytesMut = a.into_iter().collect(); line, I got
dhat: Total:     1,024 bytes in 1 blocks
dhat: At t-gmax: 1,024 bytes in 1 blocks
dhat: At t-end:  0 bytes in 0 blocks
dhat: The data has been saved to dhat-heap.json, and is viewable with dhat/dh_view.html

use bytes::BytesMut;

#[global_allocator]
static ALLOC: dhat::Alloc = dhat::Alloc;

fn main() {
    let _profiler = dhat::Profiler::new_heap();
    let a = vec![1; 1024];
    let b: BytesMut = a.as_slice().into();
    // let b: BytesMut = a.into_iter().collect();
}


⚠ Bofrost.de has degraded performance

In 921a658, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1362 ms

Resolved: Bofrost.de performance has improved in 2d490d9 after 27 minutes.


Create CSV Configuration Classes

To facilitate easy re-tuning of software without actually changing code, we should create a set of classes which form a "Calibration" infrastructure. This is loosely based on the architecture the famous Team 254 uses (check out https://github.com/Team254/FRC-2015/blob/master/src/com/team254/lib/util/ConstantsBase.java for reference, but don't just copy their code blindly :smile:  )
First Pass Spec
Classes to implement:
Calibration

A single piece of data which may be calibrated externally. Assume this data is always "double" for ease of implementation now.

The constructor should take the following:
- A string for a name for the calibration (will be same as variable name 99% of time)
- A default value
- A reference to a CalWrangler (to be discussed later)
- Optionally, a minimum and maximum range allowable for the calibration
As part of the instantiation process, the constructor should register itself with the CalWrangler (again, discussed later).
Internally, the class must store the present value of the calibration, as well as the default value.
The class should provide a getter for the present value (.get()) and for the default value (.getdefault()), and a setter. It is anticipated the setter should be used only by the CalWrangler. The setter should check that the override value is within the allowable range. If not, print a warning to screen and saturate the set value at the min/max range. Finally, some sort of getter should exist to get the name of the calibration.
The expectation is that for every value to be tuned (shooter RPM, P/I/D constants, etc.), a new instance of Calibration should be instantiated. All of these should be instantiated in a common robot calibration class, which is specific to each year. Then, when a controls method needs to use a cal, it references the calibration object within the robot calibration class, and uses the .get() method to get the actual present cal'ed value.
CalWrangler

A single class which manages all calibrations.

No need to do anything special on instantiate (besides usual stuff for setting variables)
The wrangler should support a registration method where a calibration object may "register" itself inside the calibration wrangler. Registration means that some reference to the calibration is contained within the wrangler's data structures. The driving constraint is that, upon request, the wrangler must be able to iterate over all calibrations present in the system.
The wrangler must support a cal override method. This will be called during autonomous and teleop init methods. During the cal override method, the wranger must open a specific CSV at a specific location on the RIO's filesystem (location and name may be hardcoded). It must then parse this csv to determine which calibrations need to be overriden. Note not all calibrations in the system may have an override in the csv specified. Note also the csv might provide extra, unknown calibrations. A warning should be printed to screen, but otherwise the cal should be ignored. For each cal override specified in the csv, the wrangler must find the appropriate calibration object instance, and call its setter function with the override value.
The wrangler should also support setting all calibration values back to default, and producing a report (printed to screen?) of all cal values in the system, their names, ranges, and whether or not they have been overridden.

The Poofs implementation of this is really slick!  Finally got a chance to really look through it and I like it a lot.  It's definitely very complex (more than I would expect most students to understand) and very similar functionality could be achieved without using reflection (how Java looks at it's own code/finds the static variable names) but I think using this is still our best bet.  For anybody working on this, it's worth paying attention to where the Poofs code actually instantiates the Constants class - it's part of their web server which we don't currently have specific plans to use.

off we go!

basics implemented. Still need to integrate & test with 2016 robot.

Looks like my basic implementation has somewhat diverged from what the poofs example above had... ah well?

Tested on robot last night. Appears functional! Migrated changes to the CasseroleLib Repo. Javadoc will still need a bit of cleanup, but that's for another day...


Broken pytest with 8.3.4 only on Azure

I am unable to reproduce but our azure runners broke with the latest pytest:
https://dev.azure.com/scverse/anndata/_build/results?buildId=8969&view=logs&j=5ea502cf-d418-510c-3b5f-c4ba606ae534&t=13a40d21-d359-5a41-b91d-835dd35380e7&l=23328

did you report this upstream?

I made this as a reminder because I couldn't put together a reproducer ATM (it wasn't happening locally).  Happy to try again.


fix the op strided_slice with tensorflow frontend

*fix the error when get partial dynamic shape eg:[?,6,6]
*transfrom the params into Expr

@vincentchen003 can you update?

closing due to inactivity, but feel free to reopen!


[Introspection] Schema parser should collect all errors before failing

Schema parser fails fast in some scenarios. See these introspection notes for example.
It should collect all parsing errors and report them together.
This might need some spec work.

Using both candidate and product labels so that we can discuss exactly where this belongs.

The linked Notion page doesn't explain anything to me @divyenduz. Can you elaborate please?

Maybe similar to this: https://github.com/prisma/prisma2/issues/1097

Duplicate of https://github.com/prisma/prisma2/issues/1097


memtest fails with unetbootin

(triage) solved?

If it's the same issue I'm having, it seems unrelated to unetbootin.
When I run memtest (either from usb or from grub), it starts giving errors once it arrives at 53%.
I tested on 3 different PC,s with 5 different ram sticks.
When I run memtest86+ 5.01 (same version as nixos) from an arch install usb, all is fine.

IIRC my experience was that it didn't even start.

@vcunat Could you give it a try again?


docs(wiki): Migrate GitHub wiki to docs/usage/wiki directory in repo.

To make wiki editable by contributors.
To fix some issues in wiki.
However, these fixes are incomplete.
Will raise issues on that.

Just found out I forgot to add language selector for code blocks in reuse-package-selector.md.
However, I'm reluctant to fix that until https://github.com/run-z/run-z/issues/62 is resolved.

See https://github.com/run-z/run-z/issues/63, https://github.com/run-z/run-z/issues/64, https://github.com/run-z/run-z/issues/65 for why these fixes are incomplete and how to resolve these.


Add default VolumeSnapshotClass

Towards https://github.com/giantswarm/roadmap/issues/752
This PR adds default VolumeSnapshotClass for Cinder CSI
Checklist

[x] Update changelog in CHANGELOG.md.
[x] Make sure values.yaml and values.schema.json are valid.

This change should have been don at the high level values file here:
https://github.com/giantswarm/cloud-provider-openstack-app/blob/master/helm/cloud-provider-openstack-app/values.yaml


Add support for conditional compilation of GET_DIGEST, GET_CERTIFICAT…

…E, and CHALLENGE.
Just experimental.
Signed-off-by: Kong, Richard<EMAIL_ADDRESS>

An official change, similar to this one, has already been merged into DMTF/libspdm.


🔌 Plugin: Komodor integration

🔖 Summary
Komodor is a dev-first, kubernetes platform, that lets the developer operate, troubleshoot and optimize their kubernetes apps.
The plugin requires installing of the Komodor backend plugin in and an API key of Komodor in order to make it work.
🌐 Project website (if applicable)
https://komodor.com
✌ Context
The plugin lets the user monitor their clusters by showing them crucial information about their workload statuses.
It shows up as a tab in the component window.
👀 Have you spent some time to check if this plugin request has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
Yes I am willing to submit a PR!

Hi there! Has there been any progress/update on this plugin? Is there anywhere I can go to see the progress? I am very interested to know the capabilities of a Komodor plugin for Backstage, thanks!


Conditional expire

Codecov Report

Merging #424 (d9745d3) into master (9aafd62) will increase coverage by 0.24%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #424      +/-   ##
==========================================
+ Coverage   41.57%   41.82%   +0.24%
==========================================
  Files          32       32
  Lines        4839     4854      +15
==========================================
+ Hits         2012     2030      +18
+ Misses       2827     2824       -3

Impacted Files
Coverage Δ

assemblyline_core/dispatching/client.py
79.26% <100.00%> (+2.08%)
:arrow_up:

assemblyline_core/dispatching/dispatcher.py
77.30% <0.00%> (+0.38%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9aafd62...d9745d3. Read the comment docs.


Client error?

Got an error when someone is disconnection: https://pastebin.com/9qajJx06

Please copy all relevant lines from the server log, not your web console.

@Black-Hole https://pastebin.com/vyLs7pEx

0d is the kick packet. So a plugin kicks the player while logging in.

@Black-Hole it says unexpected packet recieved

Those messages only dump the contents, not what would be the packet I'd; something on your server is sending invalid data

The first byte is the packet id. There is no kick packet expected during this early login process.

Dont know what plugin can cause this?¿


Query filtered notifications instead

Issue
Closes #5694 pass param for notitication drop down
Merge Notes
The query wasn't working on older notifications, but Tom said he'll handle this later.  Don't merge this until then.
Changes
See commit messages for walkthrough.

Converted to draft until the server-side issue ("only filtering recent notifications") is handled.

Update

i18n
Rebased to master

Yep, should be good to go now. Updated a bunch last night, and the only ones that need more updates are new content ones, but those are bountiful already.
Planning to finish up the url changes in notifications so we don't have to resolve, and then we can bump up the limit too.


Smoke tests sometimes freeze because TSS is never generated

It happens to me that the smoke tests are stuck in the initialization phase because the TSS is never created
https://github.com/zeta-chain/node/blob/6b860efb1cd378328775113fb572a72271918270/contrib/localnet/orchestrator/smoketest/main.go#L137
The reason for this is that for some reasons the ZetaClient container restarts and misses the block height for keygen generation:
zetaclient0  | 2023-08-16T09:55:59Z INF Waiting For Keygen Block to arrive or new keygen block to be set. Keygen Block : 20 Current Block : 9 module=keygen
zetaclient0  | 2023-08-16T09:56:00Z INF Waiting For Keygen Block to arrive or new keygen block to be set. Keygen Block : 20 Current Block : 10 module=keygen
zetaclient0  | 2023-08-16T09:56:03Z INF Waiting For Keygen Block to arrive or new keygen block to be set. Keygen Block : 20 Current Block : 11 module=keygen
zetaclient0  | Wait for zetacore to exchange genesis file
zetaclient0  | operatorAddress: zeta16c4u3tledclhenpagjqvqt42rqluq5nws5xp79
zetaclient0  | Start zetaclientd
zetaclient0  | rm: can't remove '/root/.tss/*': No such file or directory
zetaclient0  | 2023-08-16T09:57:07Z INF ZetaCore is ready , Trying to connect to  module=startup
zetaclient0  | 2023-08-16T09:57:07Z INF Zeta-core height: 16 module=CoreBridge

…

zetaclient0  | 2023-08-16T10:41:44Z INF Successfully announced! module=communication
zetaclient0  | 2023-08-16T10:41:44Z INF Starting the TSS servers
zetaclient0  | 2023-08-16T10:41:44Z INF LocalID: 16Uiu2HAmCXPGhc6B85FkjK3awKpHxMbnGoDzKjnQCxyQBEQ1VuiN
zetaclient0  | 2023-08-16T10:41:44Z INF TSS Keyshare file NOT found
zetaclient0  | 2023-08-16T10:41:45Z INF Waiting For Keygen Block to arrive or new keygen block to be set. Keygen Block : 20 Current Block : 34 module=keygen
zetaclient0  | 2023-08-16T10:41:48Z INF Waiting For Keygen Block to arrive or new keygen block to be set. Keygen Block : 20 Current Block : 35 module=keygen
zetaclient0  | 2023-08-16T10:41:50Z INF Waiting For Keygen Block to arrive or new keygen block to be set. Keygen Block : 20 Current Block : 36 module=keygen

Considered solution
It appears to me that it is not necessary for ZetaClient to be exactly at cfg.Keygen.BlockNumber to generate TSS but to be at least at this block. In this case, the solution would be to replace the condition at:
https://github.com/zeta-chain/node/blob/6b860efb1cd378328775113fb572a72271918270/cmd/zetaclientd/keygen_tss.go#L65
to
if currentBlock >= cfg.Keygen.BlockNumber {

I think we should also put a max try value at:
https://github.com/zeta-chain/node/blob/6b860efb1cd378328775113fb572a72271918270/contrib/localnet/orchestrator/smoketest/main.go#L137
to make the smoke test stopping with a failure instead of having the initialization in an infinite loop

Using a height here is to coordinate the keygen so that every client broadcasts the transaction simultaneously. If we modify it to >= even though it can enter the keygen loop, the keygen itself will fail.
Curious, though, how often are you getting the error?

Ok, I think it's fine the issue arise around 20% of the time. So maybe just make sure the smoke test fails when tss is not generated is fine.
I'm still wondering why the gneeration couldn't happen asynchronously? Do we need all txs in the same block?

TSS keygen is an interactive "ceremony", this is why they are often called Keygen/Keysign ceremony.
It's a pretty heavy MPC computation.
The participants need to on line at roughly the same time otherwise it will fail. This is why all zetaclients need to synchronized to a certain block.
In your case, why would zetaclientd miss that exact block? Timing or slow computer?

Ok, I think it's fine the issue arise around 20% of the time. So maybe just make sure the smoke test fails when tss is not generated is fine.
I'm still wondering why the gneeration couldn't happen asynchronously? Do we need all txs in the same block?

Thanks for the explanation.
Somehow I can't reproduce the issue anymore. I will close it for now, eventually reopen if it occurs again.


Improve article 2210.11416 (minitoc.sty, scrextend.sty, tgpagella.sty)

Exact location of issue
Frontmatter and Figure 4.
Problem details
From the log:
Conversion complete: 57 warnings; 9 errors; 3 undefined macros[\doparttoc, \parttoc, \faketableofcontents]; 3 missing files[minitoc.sty, scrextend.sty, tgpagella.sty]

Figure 4 can be used as a good test to increase the sizing fidelity in tikz.

Figure 4 now looks almost perfect, safe for needing extra line spacing in the Y-axis caption.


ngx_http_c_func_module.h not found in your system c header path, please copy latest ngx_http_c_func_module.h to your /usr/include or /usr/local/include

I have ady install ngx_http_c_func_module.h in /usr/local/include, why it keep prompting me this error

Are you cloning latest source code? I believe the header has updated, you just recopy the latest header file overwrite the old one will do

Great! it works now. Thanks


[$500] Lack of maximum height for the description field for room hides other options on the page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.44-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @JmillsExpensify
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1709046310280799
Action Performed:

Create a room in the workspace with lengthy description
Open the room and view the details of the room

Expected Result:
All the option in the details page should be visible restricting the max height of the description field
Actual Result:
Lack of a max height for the description field obscures other options
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
Add any screenshot/video evidence

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01b55a4d576f4c3f8a
Upwork Job ID:<PHONE_NUMBER>669859328
Last Price Increase: 2024-02-27

Proposal
Please re-state the problem that we are trying to solve in this issue.
Lack of maximum height for the description field for room hides other options on the page
What is the root cause of that problem?
We are using the autoGrowHeight prop.
https://github.com/Tony-MK/Expensify-App/blob/bc3e5aa4791ed61221a679191e3b9533ed93c891/src/pages/RoomDescriptionPage.tsx#L91
What changes do you think we should make in order to solve the problem?

Remove the autoGrowHeight prop from InputWrapper component.

Proposal
Please re-state the problem that we are trying to solve in this issue.
For lengthy descriptions, other options go out of the screen.
What is the root cause of that problem?
There is no height limit or lines limit in the below code in MenuItem
{!!title && (shouldRenderAsHTML || (shouldParseTitle && !!html.length)) && (
                                                <View style={styles.renderHTMLTitle}>
                                                    <RenderHTML html={getProcessedTitle} />
                                                </View>
                                            )}

What changes do you think we should make in order to solve the problem?
We can pass a prop from details page, which can be set as a max height limit in the above code to ensure that description height is limited.

It's not gonna be that easy guys :P
context https://github.com/Expensify/App/pull/34150#issuecomment-1915928141
Seems we want a solve here for truncating html

Proposal
Please re-state the problem that we are trying to solve in this issue.
We want to limit the number of lines for html content
What is the root cause of that problem?
Our migration from https://github.com/Expensify/App/pull/34150#issuecomment-1915928141 is anticipating markdown support
What changes do you think we should make in order to solve the problem?
I think as we start supporting more markdown/html we need more tooling to parse over this.
We can leverage a library such as https://github.com/arendjr/text-clipper or implement our own to clip html
What alternative solutions did you explore? (Optional)
I also tried to solve it in a hackish way, setting a max height, overflowing, and adding ellipses with a pseudo element. It's ugly.

Proposal
Please re-state the problem that we are trying to solve in this issue.
There is no maximum line for the report description.
What is the root cause of that problem?
Simply we don't limit the maximum line. The report description is rendered with a RenderHTML component and there is no straightforward way to set the number of lines props to the text.
https://github.com/Expensify/App/blob/98461f987e08e1ee977bd60f4974513b84b3c93d/src/components/MenuItem.tsx#L515-L519
What changes do you think we should make in order to solve the problem?

One way is to wrap the description with a new custom tag that will have a custom renderer that can receive a number of lines attribute.

Create a new TextRenderer

function TextRenderer({TDefaultRenderer, textProps, ...props}) {
    return <TDefaultRenderer {...props} textProps={{...textProps, numberOfLines: props.tnode.attributes.line}} />
}

Register it to the custom renderer in HTMLRenderers/index.ts

text: TextRenderer,

and in BaseHTMLEngineProvider
text: HTMLElementModel.fromCustomModel({tagName: 'text', contentModel: HTMLContentModel.textual}),

In MenuItem, wrap the HTML with <text> tag.

return processedTitle ? `<comment><text line="${numberOfLinesTitle}">${processedTitle}</text></comment>` : '';

In ReportDetailsPage, pass numberOfLinesTitle with the agreed value

numberOfLinesTitle={3}

Why we can't create a custom renderer for <comment> tag? That's because comment is a block model, not textual which won't receive textProps

Proposal
Please re-state the problem that we are trying to solve in this issue.
Full description displayed.
What is the root cause of that problem?
We are using RenderHTML to display the discription. The component does not support clipping text.
What changes do you think we should make in order to solve the problem?
We can wrap the component with a Text and numberOfLines={1} prop.
+ <Text  numberOfLines={1}>
  <RenderHTML  html={getProcessedTitle}  />
+ </Text>
/>

POC:
What alternative solutions did you explore? (Optional)

Proposal
Please re-state the problem that we are trying to solve in this issue.
When a room description is long, it pushes menu items off the screen so the user has to scroll down to see them. This happens on all platforms where the screen/window is too short to display everything in the details panel.
What is the root cause of that problem?
The room description's height is variable because it is determined by the length of the user input.
What changes do you think we should make in order to solve the problem?
Move the room description below the menu items in ReportDetailsPage.tsx. This ensures the menu items are always visible and the layout stays consistent. The bottom of long descriptions will still be off the screen, but it will be visually obvious that the user can scroll down to see the full text.
This solution is very simple to implement and doesn't require any adding any tools, functionality, or conditions, so it won't cause regressions. However, if there are design docs or user manuals that show this screen, they will need to be updated.

What alternative solutions did you explore? (Optional)

limit number of lines being displayed; this would unnecessarily hide data on screens that are large enough to display the full description
make the description view height flexible to fit in the available space; this text area would still either need to be scrollable or collapsible for long descriptions, which looks messy and is problematic because it is already acting as a button to open the description editor
make CONST.REPORT_DESCRIPTION.MAX_LENGTH smaller; this would be restrictive for users who want a long description, and wouldn't reliably fix the issue since users can increase their font sizes for accessiblity

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/sarahrosannabusch

@ishpaul777 sure, here is the test branch

Oh, you're right. I only test it with plain text 🤦

@ishpaul777 will you consider removing the option to render the description as HTML and just render as Text, as an option?

@ishpaul777 can you clarify what you're looking for here? If the requirement is to allow the user to input a long description that supports html/md, then we can't simply restrict the height of the description field because it is already a button. It would be very bad UX to have an "expand description" button within a button, which is why I proposed a simple layout change. Unless we don't need to show the full description on the details page and want to force the user to navigate to the Room Description editor to view the full text?

@ishpaul777
My proposal suggested a solution to either implement or leverage existing tooling to parse over HTML and reduce the length by clipping it and appending ellipses. I'm not sure why this is not a solution. I additionally linked a library that already does this as an example of how this is done.
I don't exactly want to write that code that does this or write a library proposal until you can clarify how you want to proceed in solving this ticket.

My RCA also identified this as a new feature request.

@ishpaul777 is still going through proposal review

@ishpaul777 If clipping the plain text is an idea you want to proceed with I can continue to write a POC of this implementation.  I think, in general, my RCA was accurate by identifying the app changes and the decisions made that led to this bug.
Key points in what my intention was when suggesting "new tooling" or a library.

I'm observing larger scale support for markdown in our roadmap
I think to correctly clip/truncate markdown in all cases of HTML it requires a robust implementation, hinting at a common utility or library, but we would foresee re-using this for more cases
It could be an extension of an existing common expensify package

I think because of these factors I reserved some ambiguity as the exact util/architecture/package should require some internal review and I would proceed with some confirmation. But the linked library serves as a good pulse check on what the code would look like, and is about 600 lines to solve for this generically ( all elements ). I think an in-house solution should follow similiar logic.
The previous solution, from @brandonhenry, I think won't cut it because it's assuming its markdown is separate from "\n," but that's not true. And even then can only truncate a whole line at a time.
Thanks! :)

I think to correctly clip/truncate markdown in all cases of HTML it requires a robust implementation, hinting at a common utility or library, but we would foresee re-using this for more cases

Actually we do have some utilities https://github.com/Expensify/expensify-common/blob/main/lib/ExpensiMark.js can we reuse any of utility from here ??

This is exactly the one I was referring to for
"3. It could be an extension of an existing common expensify package"
It seems we could reuse some of the regex for identifying the html blocks but still need an overal implementation for truncating.

I am reviewing https://github.com/Expensify/App/blob/main/contributingGuides/HOW_TO_CREATE_A_PLAN.md, is this what you want me to do?

Truncating the text makes sense to me - how else would we handle this? cc @Expensify/design

Yep, exactly what Shawn said. Also want the truncating

Adding to #vip-vsb per roadmap doc:

Anything related to a DM, room, group chat, thread, or task is in scope for here

For my understanding, does this solution require us to add a new dependency?

@brandonhenry how's it going?

@brandonhenry per CONTRIBUTING.md,

New contributors are limited to working on one job at a time, however experienced contributors may work on numerous jobs simultaneously.

You currently have 6 issues open with non merged or closed.  Please do not submit proposals for new issues until all six PRs have been merged.

Work on PR continues

Linked PR in review

Linked PR in review

Same story! Hopefully we can get this merged this week!

PR remains in review

Hey @brandonhenry - it seems @NikkiWines requested some changes on your PR, are you able to address those?

Damn, sorry to hear @brandonhenry , hope everyone's safe and that you get power back soon.

Thanks for your perseverance here @brandonhenry!

Thanks for your effort here!

Setting back to Daily here as there's active progress and last updates from @NikkiWines indicate that we're close here

Thanks @brandonhenry

Note from @shubham1206agra

There's another PR we need to merge first before completing the issue. But the expensify-common is 10 versions behind as of now.

@greg-schroeder please keep in mind, this might take a bit, with the delay being no fault of @brandonhenry

Sounds good, makes sense. We can update the price for the additional functionality.

PR in review

@brandonhenry This is a very long thread at this point - do you mind linking to the relevant PR that's waiting to be deployed for this issue to be resolved for me? Thanks!

Thanks @shubham1206agra! So hard to find sometimes 😅

PR is on staging, awaiting deploy to prod

@brandonhenry hmm I'm not sure, but actually let's hold off for a sec. I'm not sure that's the best solution. Let me think about it a bit without being rushed for the deploy.

@brandonhenry I'm going to led @nkdengineer raise the PR since they found the proper root cause here. I don't think your solution will work in the scenario where it's longer than 200 characters, but doesn't contain any HTML.

We support images in room descriptions?

Ahh I see. I say let's live with it for a bit to see how we like it before adding more enhancements.

Hmm - was this not picked up by automation or something? @puneetlath do you know?

@greg-schroeder automation has been failing often lately (Rory is working on a fix!)
The PR was deployed to production, automation failed to post it though, the way to check is to look at the deploy checklist, if the checklist is closed, it's been deployed to production.  Labels, title and issue owner updated

Payment summary:
Contributor: @brandonhenry - $500 - Offer sent via Upwork
C+: @shubham1206agra - $500 - Offer sent via Upwork

@greg-schroeder I discussed with both Brandon and Shubham and re-checked the PRs. We had multiple scope increases, so I think we should update the payout to be $1250.

@greg-schroeder @puneetlath thanks, let me know if I need to do anything here

Oh, word. All right - I didn't realize as the issue title still shows $500. I can update the offers.

Hmm - I updated it - did it not go through? I can try again

Tried again. Modified offer for @shubham1206agra - added bonus payment for @brandonhenry


Remove goma dependency from secured builds recipe

go/dircl/3260 is the original change to run recipes in secured build env.
A build from it is here:
https://ci.chromium.org/ui/p/dart-internal/builders/flutter/Linux Framework Smoke Tests/1/overview
We need to remove the goma references from the recipe, since those are not allowed to be run in the secure env.

@godofredoc here are some details on the recipe that needs goma removed. Please let me know if you need anything else.

Landed on https://flutter-review.googlesource.com/c/recipes/+/32841


Add WebUrl property to Commit

Issues, Merge Requests and Milestones expose a WebUrl property that contains the link to the GitLab web interface for the item.
The Commit class does not have such a property, but the server response includes it (according to the GitLab API docs)
This PR adds the WebUrl property to the Commit class as well.
The PR also adds a global.json to pin the .NET Core SDK version to 3.1.100 because the build seems to be broken on the recently released SDK 3.1.200 (https://github.com/dotnet/sdk/issues/10878)

@ap0llo mind reverting 9151b30 ? and merge or rebase with master.

Codecov Report

Merging #127 into master will decrease coverage by 0.03%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #127      +/-   ##
==========================================
- Coverage   71.06%   71.02%   -0.04%
==========================================
  Files         151      151
  Lines        2139     2140       +1
==========================================
  Hits         1520     1520
- Misses        619      620       +1

Impacted Files
Coverage Δ

...GitLabApiClient/Models/Commits/Responses/Commit.cs
15.38% <0.00%> (-1.29%)
:arrow_down:

@jetersen Sure. I removed  9151b30 and rebased onto master


fix(shortcode): Amend glossary definition shortcode

When an "index-less" glossary definition  is being rendered, hugo throws the following nil pointererror:
execute of template failed: template: shortcodes/glossary_definition.html:15:19: executing "shortcodes/glossary_definition.html" at <$term_info.Content>: nil pointer evaluating resource.Resource.Content

This PR fixes this "nil pointer" error, by using an "Eager/greedy" evaluation of $term_info.
Error lines will be else thrown if $term_info variable is nil, stated at the else portion, instead of the initial if.
It won't show a more helpful error because all helpful errors are already included in the code.

/area web-development

@mariasalcedo I think with the PR description you're saying that the existing error message is:

execute of template failed: template: shortcodes/glossary_definition.html:15:19: executing "shortcodes/glossary_definition.html" at <$term_info.Content>: nil pointer evaluating resource.Resource.Content

and that this PR improves on that by showing a more helpful error. Have I got that right?

@mariasalcedo I think with the PR description you're saying that the existing error message is:

execute of template failed: template: shortcodes/glossary_definition.html:15:19: executing "shortcodes/glossary_definition.html" at <$term_info.Content>: nil pointer evaluating resource.Resource.Content

and that this PR improves on that by showing a more helpful error. Have I got that right?

@sftim Sorry for not being clearer on the purpose of this PR! 😞
It won't show a more helpful error because all helpful errors are already included in the code.
This PR fixes the "nil pointer" error, thrown when an "index-less" glossary definition is being rendered.
I will then add a more comprehensive explanation on the description.
Please let me know if the above explanation isn't clear enough.

OK, cool. Thanks for explaining.

@sftim PR description enriched!

/remove-lifecycle stale
/lgtm

/assign @salaxander

/approve


Aliu/load base erisc

@TT-billteng Minor changes to device to load base eth FW and other changes are erisc FW features + tests.

@TT-billteng Changes to device.cpp were minimal : just another if branch in initialize_firmware for specifically ERISC. No other flows should be changed - hopefully!