feat(torch-nccl): Add torch-nccl image

This adds an image with PyTorch v2.0.0-rc1 + torchvision 0.15.0-rc1 libraries built from source with, and extending, the latest CUDA 12.0.1 nccl-tests image.
Notably, the PyTorch build includes the CMake build flags USE_SYSTEM_NCCL=1 and USE_SYSTEM_UCC=1 to properly make use of the packages provided by nccl-tests.

I just published a new CUDA 12 image there, please use it as base. Thank you!

Updated!
Heads up, there is a small typo over in the nccl-tests README:
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ CoreWeave also [publishes images](https://hub.docker.com/r/coreweave/nccl-tests/

 | **Image Tag** | **CUDA** | **NCCL** | **HPC-X** |
 |---------------|----------|----------|-----------|
-| ghcr.io/coreweave/nccl-tests:12.0.1-devel-ubuntu20.04-nccl2.16.5-1-8fc1a44 | 12.0.1   | 2.17.1   | 2.14.0    |
+| ghcr.io/coreweave/nccl-tests:12.0.1-devel-ubuntu20.04-nccl2.17.1-1-8fc1a44 | 12.0.1   | 2.17.1   | 2.14.0    |
 | ghcr.io/coreweave/nccl-tests:11.8.0-devel-ubuntu20.04-nccl2.16.2-1-4a46534 | 11.8.0   | 2.16.2   | 2.14.0    |
 | ghcr.io/coreweave/nccl-tests:11.7.1-devel-ubuntu20.04-nccl2.14.3-1-4a46534 | 11.7.1   | 2.14.3   | 2.14.0    |
 | coreweave/nccl-tests:2022-09-28_16-34-19.392_EDT            | 11.6.2   | 2.12.0   | 2.12      |

Wanna PR that there?On Mar 2, 2023, at 06:23, Eta @.***> wrote:
Updated!
Heads up, there is a small typo over in the nccl-tests README:
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ CoreWeave also [publishes images](https://hub.docker.com/r/coreweave/nccl-tests/

Image Tag
CUDA
NCCL
HPC-X

-
ghcr.io/coreweave/nccl-tests:12.0.1-devel-ubuntu20.04-nccl2.16.5-1-8fc1a44
12.0.1
2.17.1

+
ghcr.io/coreweave/nccl-tests:12.0.1-devel-ubuntu20.04-nccl2.17.1-1-8fc1a44
12.0.1
2.17.1

ghcr.io/coreweave/nccl-tests:11.8.0-devel-ubuntu20.04-nccl2.16.2-1-4a46534
11.8.0
2.16.2
2.14.0

ghcr.io/coreweave/nccl-tests:11.7.1-devel-ubuntu20.04-nccl2.14.3-1-4a46534
11.7.1
2.14.3
2.14.0

coreweave/nccl-tests:2022-09-28_16-34-19.392_EDT
11.6.2
2.12.0
2.12

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

@wbrown the ml containers support multiple build artifacts from the same Dockerfile, so you can have one based on the NCCL test image for distributed training and one on the base nccl from nvidia! It's super neat! The SLURM images do that.

If you are looking at parameterizing one Dockerfile and doing that with the CI, you may want to consider a build matrix for the CI.

@Eta0 Let's merge this, and do the build matrix, etc, as a separate issue/thing.


[Concurrent Segment Search] Support parent-join aggregations

The join field is a special field type that is used to create a relationship between documents in the same index. Parent and child documents must be indexed into the same shard to maintain the lineage relationship for aggregation purposes. Ref: https://opensearch.org/docs/latest/field-types/supported-field-types/join/
For example, if there is a child document on shard_0 and a parent document on shard_1, then a parent aggregation would not collect any buckets because the relationship between the documents would not be found. In the case of concurrent segment search, this shard routing consideration leads to some similar problems.
Focusing on the ParentJoinAggregator, this is a special type of aggregator:
https://github.com/opensearch-project/OpenSearch/blob/bf10ff71029e456f4ef6e0ef4015afe056f5240b/modules/parent-join/src/main/java/org/opensearch/join/aggregations/ParentJoinAggregator.java#L62-L66
Specifically for parent aggregations, the inFilter set is the child documents, while the outFilter set will be the parent documents. This is reversed for children aggregations. Unlike other aggregators, during LeafBucketCollector::colect ParentJoinAggregator does not collect the buckets. Instead it iterates through the inFilter set and saves the globalOrdinal we are aggregating into a CollectionStrategy object.
https://github.com/opensearch-project/OpenSearch/blob/bf10ff71029e456f4ef6e0ef4015afe056f5240b/modules/parent-join/src/main/java/org/opensearch/join/aggregations/ParentJoinAggregator.java#L118-L127
Later at the beginning of the reduce phase ParentJoinAggregator::beforeBuildingBuckets is called which will iterate through the outFilter set and now we will collect buckets using the documents from the outFilter set that were saved in CollectionStrategy.
https://github.com/opensearch-project/OpenSearch/blob/bf10ff71029e456f4ef6e0ef4015afe056f5240b/modules/parent-join/src/main/java/org/opensearch/join/aggregations/ParentJoinAggregator.java#L178-L182
In the concurrent segment search path, there are 2 main problems with this approach.

CollectionStrategy is created per-Aggregator instance, so it will not be shared across segment slices. CollectionStrategy is basically what stores the relationship between parent and children docs, so it not being shared between segment slices means that we will not find the same relationships across segment slices.
ParentJoinAggregator::beforeBuildingBuckets iterates over all of the segments of the entire index.
https://github.com/opensearch-project/OpenSearch/blob/bf10ff71029e456f4ef6e0ef4015afe056f5240b/modules/parent-join/src/main/java/org/opensearch/join/aggregations/ParentJoinAggregator.java#L137-L138
This means that we will call collectBucket for every segment slice where the relationship in CollectionStrategy was found and lead to overcounting in most cases.

Here are a few potential changes we can make:
To address problem 1:

Create CollectionStrategy as a shared object between threads. This will lead to contention between the threads, especially if we implement it as a concurrent hash map and the data set is very low cardinality.
Since LeafBucketCollector::collect is called concurrently in index_searcher threads but ParentJoinAggregator::beforeBuildingBuckets is called sequentially for each aggregator in the reduce phase, we could merge together the CollectionStrategy objects across the aggregators before we call aggregator.buildTopLevel() in AggregationCollectorManager.

To address problem 2:

Each aggregator instance could track every LeafReaderContext that it as collected and in the reduce phase it will only evaluate those same LeafReaderContexts instead of all the leaves for the entire index.
At the reduce level, we only call buildTopLevel for a single ParentJoinAggregator instance. This would work similar to how InternalAggregations::reduce only calls reduce once here:
https://github.com/opensearch-project/OpenSearch/blob/bf10ff71029e456f4ef6e0ef4015afe056f5240b/server/src/main/java/org/opensearch/search/aggregations/InternalAggregations.java#L186

Taking a step back, I think there is a broader problem that not all aggregation plugins may support concurrent search due to the nature of how they are implemented and if a user has a custom plugin that they have created they may want a way to not use concurrent search for their specific plugin. Off the top of my head, there could be other aggregation types that have shard routing considerations similar to this parent-join one or maybe there could be some arithmetic optimizations to an aggregation that specifically works better in the case of sequential searching. To address that I propose introducing a dynamic cluster setting that takes in a comma separated list of aggregator names that we would disable using concurrent search on.
In summary, these are the following changes I think we should make:

[ ] Dynamic cluster setting to disable concurrent segment search for certain types of aggregators. See #9446
[ ] Solution 2 for problem 1 above. This seems like a pretty involved change that needs to happen in one of the Aggregator base classes to provide a new interface for doing the merge.
[ ] Solution 1 for problem 2 above.
[ ] A new test case to cover the issue described in problem 1 above. This should be fairly straightforward as indexing a child document and parent document in separate segments and then performing concurrent segment search on 1 segment per slice should trigger this failure.

This issue was originally created as a subtask for #7357 to focus on parent-join aggregation failure. Keep the original test failures below since the scope of the issue has expanded:
REPRODUCE WITH: ./gradlew ':modules:parent-join:internalClusterTest' --tests "org.opensearch.join.aggregations.ParentIT.testSimpleParentAgg" -Dtests.seed=1D45D9B19138B210 -Dtests.security.manager=true -Dtests.jvm.argline="-XX:TieredStopAtLevel=1 -XX:ReservedCodeCacheSize=64m" -Dtests.locale=da -Dtests.timezone=Etc/GMT-13 -Druntime.java=20

REPRODUCE WITH: ./gradlew 'null' --tests "org.opensearch.join.aggregations.ParentIT.testSimpleParentAgg" -Dtests.seed=1D45D9B19138B210 -Dtests.security.manager=true -Dtests.jvm.argline="-XX:TieredStopAtLevel=1 -XX:ReservedCodeCacheSize=64m" -Dtests.locale=da -Dtests.timezone=Etc/GMT-13 -Druntime.java=11

java.lang.AssertionError: Request: {"size":10000,"query":{"match":{"randomized":{"query":true,"operator":"OR","prefix_length":0,"max_expansions":50,"fuzzy_transpositions":true,"lenient":false,"zero_terms_query":"NONE","auto_generate_synonyms_phrase_query":true,"boost":1.0}}},"aggregations":{"to_article":{"parent":{"type":"comment"},"aggregations":{"category":{"terms":{"field":"category","size":10000,"min_doc_count":1,"shard_min_doc_count":0,"show_term_doc_count_error":false,"order":[{"_count":"desc"},{"_key":"asc"}]}}}}}}
Response: {"took":92462,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":6,"relation":"eq"},"max_score":0.5260931,"hits":[{"_index":"test","_id":"article-1","_score":0.5260931,"_source":{"id":"article-1","category":["1"],"randomized":true,"join_field":{"name":"article"}}},{"_index":"test","_id":"comment-2","_score":0.5260931,"_routing":"article-1","_source":{"id":"comment-2","randomized":true,"join_field":{"parent":"article-1","name":"comment"},"commenter":"2"}},{"_index":"test","_id":"article-0","_score":0.5260931,"_source":{"id":"article-0","category":["0"],"randomized":true,"join_field":{"name":"article"}}},{"_index":"test","_id":"comment-3","_score":0.5260931,"_routing":"article-1","_source":{"id":"comment-3","randomized":true,"join_field":{"parent":"article-1","name":"comment"},"commenter":"3"}},{"_index":"test","_id":"comment-1","_score":0.5260931,"_routing":"article-0","_source":{"id":"comment-1","randomized":true,"join_field":{"parent":"article-0","name":"comment"},"commenter":"1"}},{"_index":"test","_id":"comment-0","_score":0.5260931,"_routing":"article-0","_source":{"id":"comment-0","randomized":true,"join_field":{"parent":"article-0","name":"comment"},"commenter":"0"}}]},"aggregations":{"to_article":{"doc_count":3,"category":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[{"key":"1","doc_count":2},{"key":"0","doc_count":1}]}}}}

Expected: <2L>
     but: was <3L>
Expected :<2L>
Actual   :<3L>
<Click to see difference>

	at __randomizedtesting.SeedInfo.seed([1D45D9B19138B210:C90EB7EA85D96A22]:0)
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
	at org.junit.Assert.assertThat(Assert.java:964)
	at org.opensearch.join.aggregations.ParentIT.testSimpleParentAgg(ParentIT.java:70)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)

The doc_count result in the aggregation is incorrect, even before it reaches the reduce phase.

I repurposed this issue as a backlog item to support parent-join aggregations in concurrent segment search and added all of my findings at the top level. I'll create another issue to track creating a dynamic cluster setting for disabling concurrent segment search for specific aggregators.
In the meantime @reta @sohami would like to get your thoughts on the changes I suggested in the top level issue above (including if you agree with the new dynamic cluster setting).

@jed326 Thanks for capturing the details here around parent-join aggregation. Would be great to verify and add a similar test case for child aggregation which fails with concurrent segment search.

I'll create another issue to track creating a dynamic cluster setting for disabling concurrent segment search for specific aggregators.

+1. As you called out, setting based mechanism will be useful to disable for specific aggregations dynamically for subset of requests having such operations. Whereas other requests can still benefit from using concurrent search.

Would be great to verify and add a similar test case for child aggregation which fails with concurrent segment search.

Added test cases as a part of #9446. A few things to note though:

Children aggregation type doesn't see the same issue with over-counting because it is a many-to-one mapping instead of a one-to-many mapping like parent aggregation.
Because we iterate over all of the segments for the index in each Aggregator instance, this will actually cover up the issues with shard routing considerations at the slice level (problem 1). This means that today if we enable concurrent segment search and have 1 child and 1 parent document on different segment slices, then we would still see the relationship between the documents due to each aggregator iterating over all segments.


Support JITDUMP

This is needed for proper stacks and function names for JS functions in node, and also for Java, I think.
https://raw.githubusercontent.com/torvalds/linux/master/tools/perf/Documentation/jitdump-specification.txt

It looks like we don't need to do anything here: perf report and perf script only support this by making users  run perf inject --jit first. perf inject combines the jitdump files with the perf.data file into an augmented perf.data file, and also creates ELF files for each function. So the augmented perf.data file then looks just like normal perf.data file: It has mmap events for the JITted functions with filenames for actual ELF files. We already know how to deal with those.
So these augmented files should already just work.
But if we want, we could make it work so that users don't have to run perf inject first.
To find the right jitdump files, perf inject looks at mmap events, because the profiled process maps the jitdump files for writing.

And this only works if perf record is run with -k mono so that the perf event timestamps use CLOCK_MONOTONIC, which is also what the jitdump records use.

https://docs.wasmtime.dev/examples-profiling-perf.html has a great example at the bottom.


Rename layout command

I want to rename these layout-related command so that they are named as verb-prefixed, because most commands in Julia-Client are prefixed by verbs, like Julia-Client:Open-Plot-Pane.
This PR also includes a minor change in restoreDefaultLayout.

Looks good, thanks!


admission webhook "regular-user-validation.managed.openshift.io" error when running InstaScale with vscode

While attempting to trigger InstaScale when running locally I get the following error.
I0712 15:33:09.734706   74806 machineset.go:58] Error updating machineset admission webhook "regular-user-validation.managed.openshift.io" denied the request: Prevented from accessing Red Hat managed resources. This is in an effort to prevent harmful actions that may cause unintended consequences or affect the stability of the cluster. If you have any questions about this, please reach out to Red Hat support at https://access.redhat.com/support
I0712 15:33:09.734805   74806 appwrapper_controller.go:319] Completed Scaling for instascaletest

How to replicate the error

Follow the local deployment steps for vscode.
Trigger InstaScale on your cluster.

#109


CM - Refactoring tasks due to JBPM-5452 and standalone showcase integration

Hi Mike,
Well the merge was quite easy, as expected, so good :)
This PR depends on this one.
I finally checked out a new branch from yours, rebased to master, merged conflicts and refactored a few things and that's it! Hope that you can checkout and merge my work, and no issues appear.
Some updates:

Removed unused control implentations for CM except the drag one, which I'm considering it mandatory for Full sessions right now... so have to review this, dont worry
Added read-only session support and some cleans for the session stuff
Split CM modules for project extensions
Added CM into the standalone showcase. Would recommend you to use it, builds and runs faster. You can add as well a CM bpmn2 file in the WEF-INF/diagrams, if you need it to be added by default on the VFS once running the standalone showcase, so you can open it.
The preview works much better now! Just using a different canvas color... hehe :/

So well, hope this works as expected, any issues lemme know!!
BTW I have seen you started working on the graph & command side! good. feel free to change whatever you think! what you think about this stuff? I know it's not easy but dont see how to do it easier.. :( so any suggestions/critisicm wil be appreciated!! xD
Best regards!
Roger

@manstis I had to rebase so this PR says that cannot be merged.. please just checkout my commits and force your push with yout author etc,
Hope you can do it and no issues! I have tested CM in both showcases and works fine! lemme know whatever! Thanks!

oh no, as while I was doing the rebase work eder added a new commit, it appears on top of your work!!! :( now what? Eder's commit is really small but not sure how to handle this commit.. :/

arghh sorry I think I'm getting confused with this info... looking at my source branch for this PR it's all good!

@romartin Arrrrrrrrrrrrgggggggggggggghh! This is proving a complete feck-fest to merge!!

@romartin Finally merged into my fork and PR submitted for droolsjbpm/master@kie-wb-common. Closing this PR as it was merged (and squashed) with https://github.com/manstis/kie-wb-common/commit/3bb68278a8e990cc73c4399c3e7f7885ef679c74


dot_parse don't support brackets

This graph is parsed OK:
a -> b
a -> c

But this shortening don't work:
a -> {b, c}

Original issue reported on code.google.com by<EMAIL_ADDRESS>on 14 Jan 2008 at 4:11

Of all the examples given in this thread, the only one I am still seeing a problem with is this one:
digraph G{
    a -> b -> {c; d}
}

Expected result, as when loaded directly by Graphviz:

Actual result when first parsed by pydot, then sent to Graphviz:

The pydot parser only returns a -> b:
> dot_parser.py(548)parse_dot_data()
-> tokens = graphparser.parseString(s)
(Pdb) n
> dot_parser.py(549)parse_dot_data()
-> return list(tokens)
(Pdb) pp tokens
([<pydot.Dot object at 0x7f5b49cfaf98>], {})
(Pdb) pp tokens[0].obj_dict
{'attributes': {},
 'current_child_sequence': 2,
 'edges': {('a', 'b'): [{'attributes': {},
                         'parent_edge_list': None,
                         'parent_graph': <pydot.Dot object at 0x7f5b49cfaf98>,
                         'points': ('a', 'b'),
                         'sequence': 1,
                         'type': 'edge'}]},
 'name': 'G',
 'nodes': {},
 'parent_graph': <pydot.Dot object at 0x7f5b49cfaf98>,
 'simplify': False,
 'strict': False,
 'subgraphs': {},
 'suppress_disconnected': False,
 'type': 'digraph'}

However, a graph with a -> b -> c gets correctly parsed as a -> b; b -> c;. And a graph with a -> {b; c} also gets correctly parsed as a -> subgraph  { b; c; } as well. It is just the mix of these two that does not work.
It is not easy to debug the parsing by stepping through the code. Instead, PyParsing has some special debugging functions. I do not know when I will get around to that, so anyone else feel free to pick this up.
Versions: pydot 1.4.1, pyparsing 2.4.7, python 3.7.3.


[cryfs-mac] Update to latest version 0.11.0

Please update to latest cryfs, 0.11.0
Thanks for this Tap, saved my day

Thanks for the heads-up, cryfs-mac now at 0.11.0.

@gromgit please update it to latest bug fixe release.
Thanks!

Done, but please open a new issue in future, so that proper tracking is maintained. Thanks much!

Done, but please open a new issue in future, so that proper tracking is maintained. Thanks much!

I will do ...
Thanks
Happy new year 2022

I will do ...
Thanks
Happy new year 2022


Support more DDL statements

Suggestions to include more DDL statements that are supported by the DDL API

hey @abdel! Thank you for the contribution! The lint is failing, address that please, and i'll merge this, this is a good addition to the tool.

@mdovhopo thanks for that. I have addressed the lint errors now.

@abdel merged. Changes will be in 1.7.0 version. There are some problems in release, I'll look into it. Thank you!

Unsure if related, but I realised that Views are not supported in the emulator. I can do another PR to ensure that they're part of the unsupported statements

I think it is not related, but open pr anyway, of views are not supported, migrations can break at some point locally.

@abdel works now, was some random rate limit from github. Feel free to open up new PR to ignore VIEW in emulator.

@mdovhopo Thanks! I have addressed these issues in the follow up PR https://github.com/mdovhopo/google-spanner-migrations-runner/pull/5


Editor window steals focus multiple times while launching

Tested versions
4.4 dev2
System information
Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 (NVIDIA; <IP_ADDRESS>33) - Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (8 Threads)
Issue description
After #93064 the editor will show multiple progress dialogs while launching. Each time new dialog appears, the main window will steal focus, making it almost impossible to do anything while a project is loading. It's especially annoying during long reimports, because the window is focused multiple times with long intervals between operation.
The editor should not steal window focus while doing its background tasks. It's useless and disturbing.
Steps to reproduce

Delete .godot folder for better result
Open a medium/big project that takes a while to launch
Minimize Godot and try to do something else
Godot will keep interrupting whatever else you are trying to do

Minimal reproduction project (MRP)
N/A

This is linked the same problem as #90944 because the root cause is the Progress Dialog which steals the focus.


[Bug Report] Install gymnasium with atari games using conda

Describe the bug
When trying to install gymnasium with Atari games using conda, I get various error messages, for example:

No module named 'ale_py'
No such file or directory: '[...]/ale_py/roms/pong.bin'

Code example
My setup.py:
from setuptools import find_packages
from setuptools import setup

setup(
    name="benchmarks",
    version="0.0.0",
    ...
    packages=find_packages(),
    scripts=["scripts/run_training"],
    include_package_data=True,
    install_requires=[
        # "gymnasium==1.0.0",
        # or "gymnasium-atari==1.0.0",
        # or "gymnasium-all==1.0.0",
        "pytorch==2.5.1",
        "pytorchrl==0.6.0",
    ],
    python_requires="~=3.11",
    ...
)

My code:
import gymnasium as gym
import ale_py

if __name__ == '__main__':
    gym.register_envs(ale_py)
    env = gym.make("ALE/Pong-v5")

When I import "gymnasium==1.0.0", I get the error:
ModuleNotFoundError: No module named 'ale_py'

When I import "gymnasium-atari==1.0.0", I get the error:
FileNotFoundError: [Errno 2] No such file or directory: '[...]/lib/python3.11/site-packages/ale_py/roms/pong.bin'

When I import "gymnasium-all==1.0.0", I get the error:
FileNotFoundError: [Errno 2] No such file or directory: '[...]/lib/python3.11/site-packages/ale_py/roms/pong.bin'

I have also tried to import "ale_py==0.10.1" but it seems to be a dependency of both previously mentioned packages, and did not change anything.
System info
Ubuntu 24.04.1 LTS
Gymnasium 1.0.0
Python 3.11
Conda 24.5.0
Additional context
No response
Checklist

[X] I have checked that there is no similar issue in the repo

import gymnasium as gym
if name == 'main':
env = gym.make("ALE/Pong-v5", render_mode="human")
observation, info = env.reset()
for _ in range(1000):
    env.render()
    action = env.action_space.sample()
    observation, reward, terminated, truncated, info = env.step(action)
    if terminated or truncated:
        observation, info = env.reset()

env.close()

Thanks for you answer, I have tried many things including this variation. Unfortunately, I still get the same errors.
Just to make it clear my problem is about using conda, more specifically setup.py to create a package.
For example, I am able to install gymnasium using pip and requirements.txt as follows:
gymnasium[atari, accept-rom-licesnse]==1.0.0
torch==2.5.1
torchrl==0.6.0
tensorboard==2.18.0

Then, the following code runs:
import gymnasium as gym
import ale_py

if __name__ == '__main__':
    env = gym.make("ALE/Pong-v5", render_mode="human")
    observation, info = env.reset()

    for _ in range(1000):
        env.render()
        action = env.action_space.sample()
        observation, reward, terminated, truncated, info = env.step(action)
        if terminated or truncated:
            observation, info = env.reset()

    env.close()

Note, import ale_py is actually useful as otherwise I get the following error:
Traceback (most recent call last):
  File "/home/theophile/Desktop/portfolio/ReinforcementLearningBenckmarks/scripts/run_training.py", line 25, in <module>
    env = gym.make("ALE/Pong-v5", render_mode="human")
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/theophile/Desktop/portfolio/ReinforcementLearningBenckmarks/rl-bench-venv/lib/python3.12/site-packages/gymnasium/envs/registration.py", line 687, in make
    env_spec = _find_spec(id)
               ^^^^^^^^^^^^^^
  File "/home/theophile/Desktop/portfolio/ReinforcementLearningBenckmarks/rl-bench-venv/lib/python3.12/site-packages/gymnasium/envs/registration.py", line 531, in _find_spec
    _check_version_exists(ns, name, version)
  File "/home/theophile/Desktop/portfolio/ReinforcementLearningBenckmarks/rl-bench-venv/lib/python3.12/site-packages/gymnasium/envs/registration.py", line 397, in _check_version_exists
    _check_name_exists(ns, name)
  File "/home/theophile/Desktop/portfolio/ReinforcementLearningBenckmarks/rl-bench-venv/lib/python3.12/site-packages/gymnasium/envs/registration.py", line 360, in _check_name_exists
    _check_namespace_exists(ns)
  File "/home/theophile/Desktop/portfolio/ReinforcementLearningBenckmarks/rl-bench-venv/lib/python3.12/site-packages/gymnasium/envs/registration.py", line 354, in _check_namespace_exists
    raise error.NamespaceNotFound(f"Namespace {ns} not found. {suggestion_msg}")
gymnasium.error.NamespaceNotFound: Namespace ALE not found. Have you installed the proper package for ALE?

Apologies, I thought this was fixed, I would use pip install ale-py if you using gymnasium>=1.0 as the conda package for ale-py is broken currently.
I'm working on a fix

Sounds good, for now I am using the requirements.txt with pip and everything works fine.


added jobs-bulletin watchdog

As per title. Fixes #344. Feedback welcome.

Messages user with #jobs-bulletin rules when they join.
Reminds users who post in #jobs-bulletin of the rules.
Messages #jobs-bulletin directing conversation to DM or #jobs-discussion.

On posting in channel example:

Also wondering if it would be possible to make a subprocess that sticks around for ~min after someone posts to delete the chat redirection message if the original message is deleted?

message wording looks good 👍 could "Only employers advertising jobs" be reworded though maybe? "Only job advertisements"?
will give a code review "soon"

re: "Also wondering if it would be possible to make a subprocess that sticks around for ~min after someone posts to delete the chat redirection message if the original message is deleted?"
Sounds definitely possible but 10x more work + effort, save it for another PR :^) if you think its super valuable chuck up an issue, but personally I don't think its worth

I'll second the change to  Only employers advertising jobs.


Enhancing LogEntry Validation and Upgrading Column Qualifier Format- 3943 ticket

Updated the code to drop "-/" portion and expect 3 items

It looks like this depends on #3997, so I'll review this after that's done and merged.

I resolved the conflicts so this could build, and we could see the differences that this PR introduces more easily, but it looks like it still has some old commits from #3997  that were excluded when that was reverted and redone with #4071 (like keeping the filePath names). So, this PR will have to be rebase'd onto the current main branch and the diffs trimmed down to just the new changes intended to be part of this PR rather than carried over from #3997.

This stricter validation was based on the misunderstanding that the log entry had a fixed number of elements. However, the entry contains a path, which can have an arbitrary number of elements, so I think the current validation is sufficient. It checks the last two path elements for the tserver and uuid.


Smoke and perf test Kotlin 1.8.21

See https://github.com/JetBrains/kotlin/releases/tag/v1.8.21

@bot-gradle test AFT, AST, APT

I've triggered the following builds for you:

AllFunctionalTestsPullRequestFeedback build
AllSmokeTestsPullRequestFeedback build
AllPerformanceTestsReadyForRelease build

@bot-gradle test and merge

I've triggered a build for you.

Pre-tested commit build failed.


remove null trainer attribute

Not sure why this was null, but a Pokedex should be associated with a trainer since a trainer owns these pokedexes

oh I think I was seeing problems with migrating the changes without setting a null or a default value for a foreign key?


link to argoCD

argoWorkflows users will often also use argoCD
idea is to have a link on the specific object (ie cronworkflowXYZ, workflowtemplateABC) that will open up that object in argoCD UI
benefit is that it would link back to commit details, also show deployment errors (ie in case new version of object was not being reflected in argoWorkflows)
basic implementation idea:
optional config for argoCD base URL
ui change to show that argoCD href link on each relevant object in argoWorkflows

Hi
Will you be accepting a PR request for this?
I would like to contribute to this enhancement:)

yes @gitsan13

duplicate of #7912 I believe. There should be a presentation about this new plugin in an upcoming Argo Workflows community meeting.
See this repo for now: https://github.com/crenshaw-dev/argocd-executor-plugin

This request sounds more UI-oriented, something my plugin can't do.

optional config for argoCD base URL

You'll need more information to construct a link to the resource. Specifically, you'll need the name of the Application which manages the resource, and the namespace in which that Application is installed (both used to construct the Argo CD application URL). That information might be available in a tracking annotation on the resource.

maybe https://argoproj.github.io/argo-workflows/links/ does this?


Slightly unify color usage

Biggest change is a freshly implemented leaflet marker icon component. The old one didn't let me choose the Quasar colors.

differentiate colors secondary and positive better
reduce usage of ugly tertiary color
reduce footer size and make look lighter

Address picker supports custom marker colors and font icons:

The footer text looks a bit small

I'll merge, but I have no resistance against making the footer font a bit bigger and the icon in the center (was only centered in mobile view before, not on desktop).


Fixes #280. Problem spec intact.

Fixes #280 without modifying base 1 behavior. Fixes leading_zeros test case and requires std::error for test cases where the base is invalid.

Oh, also you need to fix the example solution so that it passes the new tests.

Made the changes. Kindly review.

Looks good 👍  Thanks!


Fsharp collections

Resolves #1 by adding basic support for collections:

Arrays (an empty array no longer deserialises down to Null)
F# Lists

This is still a POC. Waiting for the upstream PR as described in #1 before this is merged.

#3 fixes point 1 without library changes upstream


Segmentation fault when trying to open a file

Hi,
I wanted to try out gifcurry, but the program (GUI) crashes as soon as I try to open a file like mp4 or webm.
./gifcurry-<IP_ADDRESS>-x86_64.AppImage
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:01.650: Content added to the action area of a dialog using header bars
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:01.650: Content added to the action area of a dialog using header bars
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:01.650: Content added to the action area of a dialog using header bars
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:01.692: Content added to the action area of a dialog using header bars
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:01.692: Content added to the action area of a dialog using header bars
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:01.744: Content added to the action area of a dialog using header bars
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:01.744: Content added to the action area of a dialog using header bars
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:02.064: Theme parsing error: <data>:98:17: The :insensitive pseudo-class is deprecated. Use :disabled instead.
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:02.064: Theme parsing error: <data>:99:20: The :insensitive pseudo-class is deprecated. Use :disabled instead.
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:02.064: Theme parsing error: <data>:103:18: The :insensitive pseudo-class is deprecated. Use :disabled instead.
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:02.064: Theme parsing error: <data>:104:21: The :insensitive pseudo-class is deprecated. Use :disabled instead.
(gifcurry_gui:265563): Gtk-WARNING **: 17:50:02.065: Theme parsing error: <data>:731:25: The style property GtkPaned:handle-size is deprecated and shouldn't be used anymore. It will be removed in a future version
Segmentation fault (core dumped)

Steps to reproduce:

Open gifcurry
Click "open"
Select a file
Click "open"

The GUI shows up for a split second and disappears again.
I'm on Ubuntu 20.10 (Wayland) with:

gifcurry <IP_ADDRESS> (AppImage)
imagemagic <IP_ADDRESS>
ffmpeg 4.3.1
gstreamer 1.18.0

The same thing happens with the prebuild gifcurry_gui.

I'm experiencing the same issue. Usually, if I restart gifcurry, it will open the file on a second try. On one occasion, it did not succeed until the fourth try.
Console output:
(gifcurry_gui:16112): Gtk-WARNING **: 15:30:59.813: Theme parsing error: <data>:98:17: The :insensitive pseudo-class is deprecated. Use :disabled instead.

(gifcurry_gui:16112): Gtk-WARNING **: 15:30:59.813: Theme parsing error: <data>:99:20: The :insensitive pseudo-class is deprecated. Use :disabled instead.

(gifcurry_gui:16112): Gtk-WARNING **: 15:30:59.813: Theme parsing error: <data>:103:18: The :insensitive pseudo-class is deprecated. Use :disabled instead.

(gifcurry_gui:16112): Gtk-WARNING **: 15:30:59.813: Theme parsing error: <data>:104:21: The :insensitive pseudo-class is deprecated. Use :disabled instead.

(gifcurry_gui:16112): Gtk-WARNING **: 15:30:59.815: Theme parsing error: <data>:731:25: The style property GtkPaned:handle-size is deprecated and shouldn't be used anymore. It will be removed in a future version
[ERROR] gst-inspect-1.0: readCreateProcessWithExitCode: runInteractiveProcess: exec: does not exist (No such file or directory)

** (gifcurry_gui:16112): CRITICAL **: 15:31:09.823: gst_vaapi_display_lock: assertion 'display != NULL' failed

** (gifcurry_gui:16112): CRITICAL **: 15:31:09.823: gst_vaapi_display_unlock: assertion 'display != NULL' failed
Segmentation fault (core dumped)

These messages are in /var/log/syslog and line up with the crashes:
kernel: [12427.111776] qtdemux0:sink[16099]: segfault at 7f3e80003070 ip 00007f3e9d07c14d sp 00007f3e55ff8ce8 error 7 in libc-2.31.so[7f3e9cf38000+178000]
kernel: [12451.640778] qtdemux0:sink[16178]: segfault at 7fc9b829c070 ip 00007fc9d6ebf14d sp 00007fc9b99bbce8 error 7 in libc-2.31.so[7fc9d6d7b000+178000]

Ubuntu 20.04 LTS
Gifcurry <IP_ADDRESS> (AppImage)
imagemagick <IP_ADDRESS>
ffmpeg 4.2.4

same here from the tgz on debian testing
ffmpeg : 7:4.3.2-0+deb11u1
imagemagick :  8:<IP_ADDRESS>+dfsg-1

Hello,
Unfortunately, I could not reproduce this.
Ubuntu 20.04 Wayland:

Ubuntu 20.10 Wayland:

:+1:

Still segfaults for me when opening an MP4 on Ubuntu 21.04 (X.org) with the <IP_ADDRESS> AppImage. The same happened on Ubuntu 20.10 (X.org) earlier.
$ uname -a
Linux raf 5.11.0-22-generic #23-Ubuntu SMP Thu Jun 17 00:34:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

@lettier do you try from a clean install ?
Because you maybe have some not list dependancies or a custom build env.


[WIP] Re-activate RDKit as requirement to enable testing of packmol tools.

This re-activates RDKit as a requirement as per #221 to allow the existing packmol tests to work.
I expect that this will initially fail at least on the OpenEye betas because of #219 ; it may also fail because of https://github.com/omnia-md/conda-recipes/issues/512 - library issues with omnia RDKit.

Ah, right, we didn't even get that far - this is failing because of https://github.com/omnia-md/conda-recipes/issues/488.

We have a temporary fix in place for https://github.com/omnia-md/conda-recipes/issues/488

Well, that wasn't too painful - my concerns about things being broken were mostly unfounded. Merging.


Inconsistent current working directory when running built application

Describe the bug
Typically, we're suppose to access a server asset by joining process.cwd() and the path of the asset imported and handled by Vite.
// +page.server.js
import path from 'node:path';
import fs from 'node:fs';
import text_file from './file.txt';

export async function load() {
    // we can get the absolute path with `process.cwd()`
	const filepath = path.join(process.cwd(), text_file);
	const text = fs.readFileSync(filepath, { encoding: 'utf-8' });
	return { text };
}

However, this doesn't work when running vite preview or node build with the Node adapter.
// +page.server.js
import path from 'node:path';
import fs from 'node:fs';
import text_file from './file.txt';

export async function load() {
    // the filepath is incorrect because the path returned by `process.cwd()` is not near the server assets.
    // So we need to change the path when not in dev??
	const filepath = path.join(process.cwd(), text_file);
	const text = fs.readFileSync(filepath, { encoding: 'utf-8' });
	return { text };
}

This can be fixed by changing the current directory when vite preview is run. Hence, the filepath would correctly return /.svelte-kit/output/server/_app/... instead of the project root /_app/... which doesn't exist.
const dir = join(svelte_config.kit.outDir, 'output/server');

if (!fs.existsSync(dir)) {
	throw new Error(`Server files not found at ${dir}, did you run \`build\` first?`);
}

// always set the working directory to where our server assets are located
process.chdir(dir)

https://github.com/sveltejs/kit/blob/master/packages/kit/src/exports/vite/preview/index.js
A similar thing occurs when we use adapter-node. The path returned by process.cwd() keeps changing depending on from which directory we start the server. This could be considered the intended behaviour, but it also leads to unwanted behaviour (such as being unable to correctly resolve the filepath as shown in the example above).
Reproduction
https://stackblitz.com/edit/sveltejs-kit-template-default-y1duvx?file=src%2Froutes%2F%2Bpage.server.js

Run the application with pnpm dev, this has no issue.
Build the application with pnpm build.
Preview the build with pnpm preview. The page cannot render because the filepath is incorrect in the load function.

Logs
Error: ENOENT: no such file or directory, open '/home/projects/sveltejs-kit-template-default-y1duvx/_app/immutable/assets/file.c0535e4b.txt'
    at Object.openSync (https://sveltejskittemplatedefaulty1du-uwot.w-credentialless.staticblitz.com/blitz.5a198b5c.js:49:16217)
    at Object.readFileSync (https://sveltejskittemplatedefaulty1du-uwot.w-credentialless.staticblitz.com/blitz.5a198b5c.js:49:17820)
    at load (file:///home/projects/sveltejs-kit-template-default-y1duvx/.svelte-kit/output/server/entries/pages/_page.server.js:21:32)
    at load_server_data (file:///home/projects/sveltejs-kit-template-default-y1duvx/.svelte-kit/output/server/index.js:1119:42)
    at eval (file:///home/projects/sveltejs-kit-template-default-y1duvx/.svelte-kit/output/server/index.js:2537:24) {
  syscall: 'open',
  errno: -2,
  code: 'ENOENT',
  path: '/home/projects/sveltejs-kit-template-default-y1duvx/_app/immutable/assets/file.c0535e4b.txt'
}
Error: ENOENT: no such file or directory, open '/home/projects/sveltejs-kit-template-default-y1duvx/_app/immutable/assets/file.c0535e4b.txt'
    at Object.openSync (https://sveltejskittemplatedefaulty1du-uwot.w-credentialless.staticblitz.com/blitz.5a198b5c.js:49:16217)
    at Object.readFileSync (https://sveltejskittemplatedefaulty1du-uwot.w-credentialless.staticblitz.com/blitz.5a198b5c.js:49:17820)
    at load (file:///home/projects/sveltejs-kit-template-default-y1duvx/.svelte-kit/output/server/entries/pages/_page.server.js:21:32)
    at load_server_data (file:///home/projects/sveltejs-kit-template-default-y1duvx/.svelte-kit/output/server/index.js:1119:42)
    at eval (file:///home/projects/sveltejs-kit-template-default-y1duvx/.svelte-kit/output/server/index.js:2537:24) {
  syscall: 'open',
  errno: -2,
  code: 'ENOENT',
  path: '/home/projects/sveltejs-kit-template-default-y1duvx/_app/immutable/assets/file.c0535e4b.txt'
}

System Info
System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 18.18.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 9.4.2 - /usr/local/bin/npm
    pnpm: 8.9.2 - /usr/local/bin/pnpm
  npmPackages:
    @sveltejs/adapter-node: ^1.3.1 => 1.3.1
    @sveltejs/kit: ^1.20.4 => 1.27.5
    svelte: ^4.0.5 => 4.2.3
    vite: ^4.4.2 => 4.5.0

Severity
serious, but I can work around it

Hm. This feels to me like something that shouldn't be our responsibility.
IIRC, running npm run <whatever> will set the CWD to the directory containing the relevant package.json file before running the script. Does that match what you're seeing?
For the production output from the Node adapter, I don't feel like the generated code should default to changing the CWD at all. It should just accept what the user called the built code with. If you have particular CWD needs, you can put something at the top-level in your hooks file.
In any case, changes to these defaults (whether in dev/preview mode, or in Node adapter output) would be a breaking change for anyone who is already resolving anything relative to the CWD.

IIRC, running npm run <whatever> will set the CWD to the directory containing the relevant package.json file before running the script. Does that match what you're seeing?

Yes, npm run preview consistently runs from the root of the project.

In any case, changes to these defaults (whether in dev/preview mode, or in Node adapter output) would be a breaking change for anyone who is already resolving anything relative to the CWD.

That's true, but I hope we'd at least change the default for preview mode to remove one of these steps.
// +page.server.js
import path from 'node:path';
import fs from 'node:fs';
import text_file from './file.txt';
import { env } from '$env/dynamic/private';

let filepath;

if (!dev && env.NODE) {
  filepath = path.join(process.cwd(), 'server', text_file);
}
else if (!dev) {
  filepath = path.join(process.cwd(), '.svelte-kit/output/server', text_file);
}
else {
  filepath = path.join(process.cwd(), text_file);
}

export async function load() {
    // we can get the absolute path with `process.cwd()`
	const text = fs.readFileSync(filepath, { encoding: 'utf-8' });
	return { text };
}

Sounds good. Should we at least move the server assets to the same directory as the recommended cwd the node process runs at? Currently, they always live in a subfolder named “server/_app/…”, so a prod build with adapter-node would require changing the lookup path to the asset again.

So that means that fs.readFileSync doesn't work at all without adjustments currently for adapter-node? I'm a bit surprised this hasn't been reported before then.

Rich had the nice idea of making this a function cwd you can import from @sveltejs/kit/node which basically does the if-else-dance outlined in https://github.com/sveltejs/kit/issues/11020#issuecomment-1807151310 . We would optionally allow to pass in the .svelte-kit/ thingy because maybe for whatever reason you changed that config, but other than that.

Would the function return a consistent root directory, or would it actually chdir to that directory? Either way, I think cwd isn't an ideal name, because it's not really returning the current working directory.

It would need to be written in such a way that it would. I guess it actually would be good to not touch vite preview in this case because it surfaces the error earlier ("oh this isn't the path I thought it would be, what to do? Oh, SvelteKit has something for me here, nice")

I misunderstood the problem when I proposed this earlier. I thought the issue was that process.cwd() was the thing that was different between dev, preview and prod and we were trying to enable this...
path.join(cwd(), 'file-in-my-project-directory.text');

...but that's not the case – process.cwd() is the same, but text_file is different because it's an asset URL. Sounds like what we actually need here is something like this:
// +page.server.js
import path from 'node:path';
import fs from 'node:fs';
+import { serverAssets } from '$app/paths';
import text_file from './file.txt';

export async function load() {
    // we can get the absolute path with `process.cwd()`
-	const filepath = path.join(process.cwd(), text_file);
+	const filepath = path.join(serverAssets, text_file);
	const text = fs.readFileSync(filepath, { encoding: 'utf-8' });
	return { text };
}

Seems simple enough to implement. The challenge is making it visible — how do we force people to use serverAssets when it works as expected in dev? We need to make it fail early. Browser-side we make this work by serving assets inside /_svelte_kit_assets so you have to do fetch(${assets}/data.json) (if assets is specified); is there some clever trick we can apply on the server in dev?

The only options I can think of right now are to purposefully process.chdir() to somewhere weird where nothing will automatically resolve (which seems very rude), or to monkeypatch fs functions (which seems very error-prone).

I'm inclined to remove this from the 2.0 milestone, since I don't see how we can fix it without adding something like serverAssets, which would be a non-breaking change. Any objections?


The URL_RE doesn't work if the font URL contains a ")" close paren character

🐛 The bug
There are some packages, for example, the inter-ui NPM package (which is recommended by the official inter GH readme for NPM) which, very unfortunately, have parens in some of the folder names.
For example from the inter-ui package the fonts are under folders with parens in their names.
Example font file: inter-ui/Inter (web)/Inter-Regular.woff2
The URL_RE that fontaine is using is defined as
const URL_RE = createRegExp(
  exactly("url(").and(charNotIn(")").times.any().as("url")).and(")"),
  ["g"]
);

So no matter what it breaks with these URLs.
The problem is that source URL would get regex'd out as inter-ui/Inter (web and then the next check is to see if the source ends with one of the supported extensions (and since the regex mangled the URL, the extension was lost).
🛠 To reproduce
https://stackblitz.com/edit/github-hdufeg?file=index.css
🌈 Expected behaviour
Parsing of the source url should support any valid URL characters
ℹ Additional context
No response

MDN has some details about the flexible varaitions that the CSS url() supports.
Based on the description and some googling, I'm not sure that this formal spec can be succinctly represented by a single regex.
Nearly all answers use a naive variation of what this library is already doing.

I’ve played with bringing in lightningcss and using a url visitor to aggregate all valid urls in a font face rule instead of the URL_RE behavior
I believe it works well, except, it will behave differently for the existing test case of invalid syntax on the family name when the quotes aren’t closed properly.
I’ll look to open a PR and possibly hide it behind a feature flag

Using lightningcss to parse the @font-face rules definitely works, however, it would be in a stricter, more standards compliant way.
This means potential behavioral differences to how this library currently behaves, which is using some relatively naive regexes that make it usually do the right thing even when it's presented with relatively or very invalid @font-face rule definitions....
Happy to pursue this avenue if there's interest, otherwise, maybe a URL_RE update with a better regex (but still imperfect) would be sufficient

This may be a good regex to use for the URL_RE in lieu of using a full blown CSS AST parser:
url\((?:(?:"((?:\\.|[^"\\])*)")|(?:'((?:\\.|[^'\\])*)')|((?:[^'")\\]*(?:\\.[^'")\\]*)*)))\)

Seems to work reasonably well and accounts for most of the ways a valid CSS url() can be specified, including unquoted URLs with escaped parens, or quoted URLs with parens (no escaping needed, as per spec)
Works with the following input URLs
url("https://somesite.com/static/ok.ttf")
url("http://somesite.com/static/ok.ttf")
url("http://www.somesite.com:8080/static/ok.woff2")
url("https://www.somesite.com:443/static/ok.woff2")
url("https://ok.)woff")
url(ok)
url("ok")
url('ok')
url('is )ok.woff')
url(what\ ablut)
url(isthis\)ok.woff)
url(../node_modules/some-font/with\ \(parens\)/ok.woff)
url("../node_modules/some-font-with (parens)/ok.woff")
url('../node_modules/some-font-with (parens)/ok.woff')
url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o\as+fa==)

See https://regex101.com/r/7eVGaW/1


getNumber blank right after initialization

Hi,
I would like to get the phone number formatted after intl-tel-input initialize, but it return blank.
ie:
$(this).intlTelInput({
  defaultCountry: "fr",
  utilsScript: "/Web/Scripts/Libraries/libphonenumber.js",
  numberType: "FIXED_LINE"
});
$(this).intlTelInput("getNumber", 1);

I've read #160 and #153, because I guess it's due to the loading of libphonenumber, I'm missing some callback or event to know when the input is ready, unless I missed something.

One workaround this issue is to load libphonenumber like any other scripts in the DOM rather than using utilsScript.
Is there a down side of doing this ?
I doesn't look like there is anything linked directly to the loading of libphonenumber in your code, but I'm not sure.

You need to put your code in a done() callback - see https://github.com/Bluefieldscom/intl-tel-input/issues/227


Proposal: JSVM functionality to load more templates for an existing renderer

It would be nice if it was possible to extend a renderer with more templates
const renderer = $template
  .loadString(`{{ template "head.html" }}`)
  .loadFS($os.dirFS(`${__hooks}/views/partials/*.html`));

Without details what actually is the use case and why this is needed, I'm not planning further changes to current templates helpers.
Also note that I'm planning sometime in the future to write a new Go template engine that may replace the current one and I'll consider porting it also for the JSVM.

Okay let me expand on the use-case. Allowing for adding templates like that, would make PocketBase surprisingly powerful as a CMS for something like blogs or similar. It would allow one to mix template types or allow one to more easily get templates dynamically.
A way to do this, may be to expose .Registry() to the JSVM, so one had more control of templates loaded.

In conjuction with this, being able to name templates would make it extremely powerful.
// assume we have variable "tmpl" from collection
const renderer = $template
  .loadString(tmpl.content, tmpl.name)
  .loadFS($os.dirFS(`${__hooks}/views/partials/*.html`))

I understand if this isn't a priority, but the restriction of having to choose one of loadString(), loadFile() or loadFS() makes it hard to mix the templates, depending one where one got it from.
One could add {{ define "${tmpl.name}" }} and {{ end }} to each template content dynamically, then use loadString(), but that doesn't seem very optimal nor clean.
I understand not wanting to generalize PocketBase too much, as it may also increase the complexity, it is just a proposal after all, you're the boss :sunglasses:


⚠ Roblox Devforum has degraded performance

In f7792cb, Roblox Devforum (https://devforum.roblox.com) experienced degraded performance:

HTTP code: 502
Response time: 3293 ms

Resolved: Roblox Devforum performance has improved in 8ce328e after 14 minutes.


Update ingest-data-managed-identity.md

BlobSourceOptions does not exist in Kusto.Ingest library, changed to StorageSourceOptions to match
@shsagir

#sign-off

@shsagir

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


Fixes different react warnings (keys and props)

fixes https://github.com/frontity/saturn-theme/issues/37

:tada: This PR is included in version 0.7.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.6.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


fix: Disable network access during build of operator catalog

Fixes #1263

This seems to solve it. The logs show opm serve runs overlap for the ppc64le and arm64 builds.
#14 [linux/amd64 3/3] RUN ["/bin/opm", "serve", "/configs", "--cache-dir=/tmp/cache", "--cache-only"]
#14 0.090 time="2024-12-03T12:39:17Z" level=warning msg="unable to set termination log path" error="open /dev/termination-log: permission denied"
#14 0.091 time="2024-12-03T12:39:17Z" level=info msg="starting pprof endpoint" address="localhost:6060"
#14 0.091 time="2024-12-03T12:39:17Z" level=info msg="cache directory is empty, using preferred backend" backend=pogreb.v1 cache=/tmp/cache configs=/configs
#14 0.093 time="2024-12-03T12:39:17Z" level=info msg="building cache" cache=/tmp/cache configs=/configs
#14 DONE 0.1s

#15 [linux/ppc64le 3/3] RUN ["/bin/opm", "serve", "/configs", "--cache-dir=/tmp/cache", "--cache-only"]
#15 0.921 time="2024-12-03T12:39:17Z" level=warning msg="unable to set termination log path" error="open /dev/termination-log: permission denied"
#15 0.923 time="2024-12-03T12:39:17Z" level=info msg="starting pprof endpoint" address="localhost:6060"
#15 0.927 time="2024-12-03T12:39:17Z" level=info msg="cache directory is empty, using preferred backend" backend=pogreb.v1 cache=/tmp/cache configs=/configs
#15 0.966 time="2024-12-03T12:39:17Z" level=info msg="building cache" cache=/tmp/cache configs=/configs
#15 DONE 1.2s

#12 [linux/arm64 3/3] RUN ["/bin/opm", "serve", "/configs", "--cache-dir=/tmp/cache", "--cache-only"]
#12 0.898 time="2024-12-03T12:39:17Z" level=warning msg="unable to set termination log path" error="open /dev/termination-log: permission denied"
#12 0.899 time="2024-12-03T12:39:17Z" level=info msg="starting pprof endpoint" address="localhost:6060"
#12 0.902 time="2024-12-03T12:39:17Z" level=info msg="cache directory is empty, using preferred backend" backend=pogreb.v1 cache=/tmp/cache configs=/configs
#12 0.955 time="2024-12-03T12:39:17Z" level=info msg="building cache" cache=/tmp/cache configs=/configs
#12 DONE 1.2s


Closing newline insertion

I'm reopening the discussion on the closing newline issue, as the current behaviour of TESTed has confused many students as seen from their reactions in the Q&A module.
Student identify the closing newline issue (expected stdout/stderr is rendered by Dodona without a closing newline if no such newline is explicitly specified in the test suite, whereas the actual ouput of their submission is rendered with a closing newline) as one of the reasons why their submission fails (while this is not the issue as TESTed strips newlines before comparison).
Even worse, it has triggered student into deliberately stripping/suppressing the closing newline in their submissions, which is definitely not the learning behavior we want achieve. On the contrary, the closing newline is the de facto standard, that students should follow as much as possible.
Therefore I would like to propose (again) that TESTed inserts closing newlines for expected string results channeled to stdout/stderr, in case such a closing newline is missing. This way, the test suite is not cluttered with these explicit newline (it is also missing in YAML multiline strings syntax with vertical bar (|) without inserting empty lines), while we still follow the de facto standard, and must suppress closing newline insertion with an explicit parameter setting (which is usually not needed). As such, the case that is needed most often, is also the default case.

That the expected/generated values are not the same is a big argument in favour of doing strict comparison in my opinion, so I would not be against making the validations strict (as the main argument against it previously was that the status quo caused no problems if I recall correctly).

This is a duplicate of #462, so I will close this issue.


 The bars act like they in slow mo or something. I tried lowering the sound resolution but that doesn't help.

It seems that you have an memory leak, did you check in Task-Manager if Rainmeter is using a lot of memory when it happens? If yes, please make a screenshot and post it here.
Also you please send a screenshot from the debug log of Rainmeter (https://docs.rainmeter.net/manual/user-interface/about/) and  please write down your OS version, Rainmeter version, GPMDP plugin version and skin version so we can propertly go through all the possible issues you're facing.

OS: Windows 10 home version 1607
Rain meter: 4.0.0 r2756 64-bit
GPMDP: 4.4.0
Skin version:  gpmdp-arc-theme i can't find the version of the skin but ik it's the newest version.

@tjhrulz This seems like a memory leak on the GPMDP plugin, any idea what would cause it?

That is not a memory leak, that seems pretty normal RAM usage. However that CPU is out of control and it may have something to do with the song not being found in the queue. I do have some questions if you could answer/test them.
There is no version 4.4.0 for the plugin, it should be listed in your plugins tab.
What was the metadata for the song you were listening to?
If you skip to a different song does it go away?
If you unload all the components to Monstercat Visualizer does it go away?
Is it always there the moment the refresh all the rainmeter or does it take several minutes?

Rainmeter.txt
GPMDP: <IP_ADDRESS>
What was the metadata for the song you were listening to? idk how to find that.
If you skip to a different song does it go away? No
If you unload all the components to Monstercat Visualizer does it go away? No
Is it always there the moment the refresh all the rainmeter or does it take several minutes? It's always there
The only way I have been able to get rid of it is to close and re open rainmeter, then at times when I do that the visualizer will only stay stationary as a line.

Try downloading 1.4 and see if that helps. https://github.com/tjhrulz/GPMDP-Plugin/releases/download/1.4/GPMDP.Plugin_1.4.rmskin
However thinking about it now the only thing that can use that kind of CPU is the mouse plugin. Some local changes were made to take advantage of the newer update so maybe try doing a manual install and see if that does anything. https://github.com/MarcoPixel/Monstercat-Visualizer#manual-installation

The visualizer is still going slow after the manual install.

And doing the plugin update after? I noticed you had some other skins installed, I think it may be one of them causing it as I have tried to look for any issues and have found nothing.

I went and took out my others skins and it's still slow imma just try and do a full wipe of rain meter

Nope still going slow

🤷♂ I got nothing. There is no indication that there should be anything going wrong like that. Maybe it is a sound issue but that would unload itself after a while.

.settings.txt

Yeah that is the only area I could think of that could cause that issue and it all looks fine. At this point it has gotta be a rainmeter or a computer issue. Everything we have tested seems to indicate it is not the monstercat visualizer.
Sorry we could not figure out the source of the issue though and have to leave you with that vague response.

@redsregards I have found the cause of the issue. It seems to have been caused by being on the beta branch of rainmeter. I will have a new build up of GPMDP plugin shortly and it will be included in the bug fix update we have planned for monstercat visualizer which should happen soon.

Feel free to either manually update or wait for the next release.
Really sorry that I did not catch and fix this issue sooner. You get 1 free priority bug fix in the future :P

sorry i am having this problem currently, what should I do to fix it, I use monstercat visualizer


test: fix a couple failures on certain systems

test/caveats_spec could fail if neither launchctl or systemd were available (e.g. Ubuntu images without systemd installed).

We should probably adjust generic OS tests to assume neither are available.

test/unpack_strategy_spec could fail if run as root as writable? is always true as root.

Thanks again @Bo98!


Needs more details on impact of customer using VNET or not how this changes connectivity behavior.

[Enter feedback here]

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

ID: e1a62365-4312-8aad-d2f1-bb5c4184adf1
Version Independent ID: 2ba5b809-8025-d7ee-c756-d6d1bab033fb
Content: Azure SQL Database Connectivity Architecture - Azure SQL Database and Azure Synapse Analytics
Content Source: articles/azure-sql/database/connectivity-architecture.md
Service: sql-database
Sub-service: development
GitHub Login: @rohitnayakmsft
Microsoft Alias: rohitna

@mattneerincx  We are checking this and will get back to you.

@mattneerincx Can you please elaborate your question. What exact information you are looking for or any other architecture info you can provide.

Depending upon client drivers you use, you may or may not get redirected.
Depending if you use VNET or not, you may or may not get redirected.
Depending if you are using ipv6 or not, you may or may not get redirected.
Connections that go through gateway are more throughput limited than re-directed connections.
So customers want to ensure they get re-directed to ensure optimal performance.
Also, should include means for customer to understand if their connections are re-directed or not, how can they verify this.
Matt
From: NavtejSaini-MSFT<EMAIL_ADDRESS>Sent: Friday, October 16, 2020 05:54
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Matt Neerincx<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] Needs more details on impact of customer using VNET or not how this changes connectivity behavior. (#64262)
@mattneerincxhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmattneerincx&data=04|01|mattn%40microsoft.com|bdad91367ae34227f8cb08d871d28b18|72f988bf86f141af91ab2d7cd011db47|1|0|637384496374704556|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=v91DHFNlnGleOqPRILz47DFC%2FWTCgkuGJIY9C9h1T60%3D&reserved=0 Can you please elaborate your question. What exact information you are looking for or any other architecture info you can provide.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fazure-docs%2Fissues%2F64262%23issuecomment-710027036&data=04|01|mattn%40microsoft.com|bdad91367ae34227f8cb08d871d28b18|72f988bf86f141af91ab2d7cd011db47|1|0|637384496374714557|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=FAouQloJ9LeQpTLDyeihG0tCH7bkUwIBl2u99iMc%2FYo%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAALPFCDTXIGEKI5FPMID4K3SLA66JANCNFSM4SNPMKSQ&data=04|01|mattn%40microsoft.com|bdad91367ae34227f8cb08d871d28b18|72f988bf86f141af91ab2d7cd011db47|1|0|637384496374714557|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=R%2Fj%2FgDlxT1rm87xSJllnT2l1exV97HsyAARdMFqIOzE%3D&reserved=0.

@mattneerincx We are checking this our author regarding the same.
@rohitnayakmsft Please check if the document can be enhanced.

Hi @mattneerincx - More information about changing the connection policy is located in this document: https://docs.microsoft.com/azure/azure-sql/database/connectivity-settings
The only factor on whether a connection goes through the proxy, or gets re-directed is determined by your firewall and virtual network settings. Please let me know if I have misunderstood your feedback.
#please-close

Hi @mattneerincx - More information about changing the connection policy is located in this document: https://docs.microsoft.com/azure/azure-sql/database/connectivity-settings
The only factor on whether a connection goes through the proxy, or gets re-directed is determined by your firewall and virtual network settings. Please let me know if I have misunderstood your feedback.
#please-close


Provide Gradle plugin for JQF

It would be great if JQF based fuzzing could be simply integrated via a Gradle plugin (akin to jqf-maven-plugin).
Ideally users would just need  to create test drivers under e.g. src/fuzz/java which are executed via a fuzz target (e.g. gradle fuzz).

Completely agree! Pull requests are very welcome. Someone started this in #86 but then the thread died out. Looking for volunteers to implement this (I don't know anything about gradle myself).

👀 https://github.com/mborzenkov/jqf-gradle-plugin


Improve module template, add custom installation notes for ngMock

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
docs update
What is the current behavior? (You can also link to an open issue here)

module install page doesn't mention npm
ngMock install page is misleading, as angular-mocks shouldn't be included in application code

Please check if the PR fulfills these requirements

[x] The commit message follows our guidelines: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format
[x] Docs have been added / updated (for bug fixes / features)

FWIW, I prefer [ /*TEXT*/ ]( /*URL*/ ) for creating links (instead of <a href=" /*URL*/ "> /*TEXT*/ </a>).
It looks cleaner :smiley:
A couple of nitpicks, but LGTM :+1:

LGTM (and LSETM (as in Looks Short Enough To Me)) :smiley:

LSEFG!


N/A - Fix black text on home page, for some languages

What does this pull request aim to achieve? 💯
Fixes this issue, of black text on the home page for languages like Russian and Arabic

Please be concise and link any related issue(s):
N/A

[x] I have checked that no one else is working on similar changes.
[x] I have read the latest README and understand the development workflow.
[ ] The name of this branch is: feature/<branch_name>, or hotfix/<branch_name> if this is a hotfix, where <branch_name> briefly describes the issue(s) resolved and is prefixed with the issue number(s) (e.g. 1127-1130-update-git-branching-model). The branch is created in a cloned version of this repo, not a forked repo.
[x] This branch is rebased/merged with the latest staging (or the latest production if it is a hotfix).
[x] There are no merge conflicts.
[x] There are no console warnings and errors.
[ ] On the right hand side of this PR, I have linked the appropriate issue(s) under "Issues" and added a project progress under "Projects".
[ ] The title describes the issue(s) being addressed using format: <issue_numbers> - <brief_issue_description> (e.g. #1127/#1130 - Update Git Branching Model)

@Zaydme can you left align this?

@Zaydme it looks like the subtext font size for the arabic and russian are smaller compared the other languages.

Other languages:

Other than that verified the fix the text color and alignment looks good. Please see below screenshot.

I can't change the font size depending on language, so I think we should keep the current size
cc @rabbi08 @jessica-lau


Prod build does not return images

I followed the steps in the readme to build the docker image and this is what I get:
It works, except that the logo and the favicon return a 404

@gjgd I added the missing image folder to the Docker file, which should fix this issue. Thanks for spotting this problem.

Thanks @philpotisk , that fixed the logo issue but the favicon still wasn't showing. I submitted a PR: https://github.com/decentralized-identity/universal-resolver-frontend/pull/18


fix(staking): currency tooltip duplication removed

Checklist

[ ] JIRA - LW-9616
[ ] Proper tests implemented
[ ] Screenshots added.

Proposed solution
Remove duplication of currency
Testing
With HW and mnemonic, check total staked, total rewards, last reward tooltips for pool overview
Screenshots
Attach screenshots here if implementation involves some UI changes

coverage: 52.396%. remained the same
when pulling d83aaa337460d732f0c6a76e8b9ec5b53624cb41 on fix/lw-9616
into 5a2363683e37bbdf2c87e211d86a3bff9c27e179 on main.


Learn: Admin - Add template variables for Quote inside the whole overview

https://help.superoffice.com/Documentation/Help/EN/CRM/WebHelpAdmin/index.htm#t=Template_variables.htm%23Quote_line_subscription_variables
Need a link to the pdf that shows all the quote template variables and how to set up the doc template.
The pdf is stored inside the help, but it's not linked on the variables page, and that is missing.
https://help.superoffice.com/Documentation/Help/EN/CRM/WebHelpAdmin/Quote_templates.pdf
SuperOffice CRM
Quote templates
CONTENTS
Quote templates ..............................................................................................................3
Design......................................................................................................................................................4
Preparations.............................................................................................................................................5
Create a sale for testing the template document.................................................................................5
Select the fields to be displayed..........................................................................................................5
Copy the template to be modified........................................................................................................5
Link the template document to a sale type..........................................................................................6
Modify the template..................................................................................................................................6
Insert fields in Word.............................................................................................................................6
Insert fields in the template document.................................................................................................7
View the order confirmation in SuperOffice CRM................................................................................8
Grouping and sorting of products ........................................................................................................8
Customisation options............................................................................................................................10
Formatting .........................................................................................................................................10
Numbers............................................................................................................................................11
Date/time...........................................................................................................................................11
Settings for language and country ("culture")....................................................................................11
Quote templates
Note: This document is an excerpt from SuperOffice CRM Administrator
Training.
The templates for quote documents, quote details and order confirmations differ
from ordinary document templates, as they use "mergefields" in addition to
standard template variables.
• The quote document is the document that is available via the link on
the Quote section tab and via the Print button.
• The quote details are generated as a PDF file together with the quote
document (if one is created) when you click Send on the quote.
• The order confirmation is generated as a PDF file together with the
quote document (if one is created) when you click the Place order
button.
A quote often consists of more than one product. It is therefore necessary to
create a quote details template (and an order confirmation template) in which
each product is listed in a table with different groupings (e.g. alternatives).
The user will only be able to edit the quote document in Word. The quote
details template and the order confirmation template will only be generated as a
PDF and cannot be edited by the user. All quote templates can be edited in the
normal way in Settings and maintenance.
You can customise your own templates for quotes and order confirmations.
Using fields (mergefields) in Word, you can insert quote information in the
template. Combined with the template variables which you use to retrieve
customer data and other information, you can create exactly the quote or order
confirmation you want. SuperOffice CRM is supplied with a number of standard
templates that you can use as they are or adapt to suit your needs.
Note: This requires the Sales User licence.
The mergefields with the quote details (lines, prices, product names, etc.) are
normally placed in a separate template document separated from the quote
document. The quote document is the document/covering letter which the sales
person creates (the Quote section tab in the Sales screen). The quote is
generated as a PDF file in which the quote details are merged into the quote
document and attached to the e-mail that is sent to the customer.
• If you use both the tender document and the quote details, there are
two options:
• If the "QuoteDetails" mergefield is present in the quote document,
the quote details will be inserted where the field is located.
• If the "QuoteDetails" mergefield is NOT present in the quote
document, the quote details will be inserted right at the end of the
document.
• If you only use either the quote document or the quote details, the
quote will be generated as a PDF and attached to the e-mail that is
sent to the customer.
In both cases, one PDF file will be generated and then attached to the e-mail.
Design
Mergefields are used differently to template variables. Whereas template
variables can be placed anywhere in a template document, mergefields must
follow a structure or a hierarchy. This hierarchy consists of four levels (tables)
which must be placed in the following order ("nesting order"): quote >
alternative > group > line (row)
The "TableStart:xxx" and "TableEnd:xxx" fields define the start and end of
the various table areas (levels):
"TableStart:quote"
"TableStart:alternative"
"TableStart:group"
"TableStart:line"
"TableEnd:line"
"TableEnd:group"
"TableEnd:alternative"
"TableEnd:quote"
For example: Line fields (such as "line/name") can only be placed within the
line table ("TableStart:line""TableEnd:line"), while alternative fields can be
placed within both the alternative table and the underlying tables (group and
line).
You only need to enter each table once in the template. For example: A product
line is shown as one row in the template, but when you generate a quote or an order confirmation in SuperOffice CRM, this row is repeated for each product in
the quote. The same applies to alternatives and groups.
The group table is not obligatory, so you do not need to use this table if you do
not want to group the products.
Preparations
Create a sale for testing the template document
In SuperOffice CRM, you should first create a quote with a number of products.
This will make it easier to test the template document you want to create. The
products should be from different product families, so that you can see how
grouping works. The sale should have the same sale type as that which you
link the template document to (see "Link the template document to a sale type"
below). In the quote, you must click Place order, so that the Show
confirmation button becomes available.
Select the fields to be displayed
Each product consists of many fields containing product data, but by default not
all these fields will be visible. If you want to modify a template document and
insert new fields, you must check that the fields concerned are set as visible in
the Configure product dialog. No value is set for fields which are not defined
as visible in Settings and maintenance. For more details, see "Configure
products" in Help for Settings and maintenance.
Copy the template to be modified
You are now going to copy an existing template and add it as a new template in
Settings and maintenance. We will use an order confirmation template as a
basis. To do this:

Go to the Lists screen and select the Items tab.
Click the arrow ( ) and select Document - Template from the List list
box.
Double-click the Order confirmation template and click the Edit button.
The template document will open in Word.
Save the template document under a new name, and place it somewhere
where you will easily be able to find it again later.
Add the template document as described in "Add items to the Document
– Template list" in Help for Settings and maintenance.
Give the template document a logical name, such as "Order confirmation
– Grouped".
Check the Quote document type option so that the template document
becomes available when you create a quote in SuperOffice CRM. You
must also select the Template for order confirmations type in the list
box.
Click Save when you have finished.

Link the template document to a sale type
We are now going to link the template document to a sale type. Sales with this
sale type will then use this template when you display the confirmation in
SuperOffice CRM. If you have already created a sale in SuperOffice CRM, you
can use this sale type for this sale. To do this:

Open the Lists screen.
Double-click Sale - Type, Stages, Quote in the Lists tab. The list opens
in the Items tab.
Double-click a sale type in the List items overview. The Edit list item
dialog opens.
Open the Default values tab > Order confirmation template list, and
select the template document you have created.
Click OK.

Modify the template
We are now going to modify the template document you have prepared. We will
start by inserting some simple fields and an extra column containing product
images in the product list. We will then group the products according to product
family and choose the sorting order.
Insert fields in Word
Below, we have described two methods for inserting fields in a template
document. The first method is the quickest.

Copy an existing field in the template. Make sure you copy the entire
field, including «».
Paste the field into the template.
Right-click on the field and select Edit fields.
In the Field name field under Field properties, enter/paste the field
name you want to insert. Do not include «». For a full list of fields, see
"Annex: Mergefields for quotes" on page 12.
Click OK.
OR
Place the cursor where you want to insert the field.
Go to Insert > Quick Parts > Field. The Field dialog opens.
Click in the Field name list under Select a field, and type in "merge".
The MergeField field name is now highlighted in the list.
In the Field name field under Field properties, enter/paste the field you
want to insert. Do not include «». For a full list of fields, see "Annex:
Mergefields for quotes" on page 12.
Click OK.
Note: You cannot edit the field name (MergeField) directly in the template
document. You must right-click on it and select Edit fields.

Insert fields in the template document

Open the template document from the Document - Template list (as
described above).
Insert the following fields in the template document:
Note: It is important that you distinguish between capital and lower case letters
when you type in the field names.
Once you have done this, the template document will look like this (new fields
have been highlighted in the image below):
Field name Location Description
«alternative/name» After the title ("Details") The name of the
alternative (taken
from the quote)
«alternative/numLines» Below the product table (leftaligned on the same row as
the sum total for the
alternative). You should also
enter the label Lines: to the
left of the field.
Number of lines in the
alternative
«Image:line/quoteLineThumbnail» Insert a new column with the
title "Image".
Thumbnail of the
product.
Save the template document, but do not close it.

View the order confirmation in SuperOffice CRM
Before we move on, you can view the order confirmation in SuperOffice CRM
and verify that your changes are displayed correctly. To do this:

Open a sale of the same sale type to which the template is linked.
Open the Quote tab in the sale and click Open.
Click Place order if you have not already done so.
Click Show confirmation in the Edit quote dialog. The order confirmation
opens as a PDF file.
Check that the order confirmation is displayed correctly:
 All content in the tables must be displayed correctly. Numbers
must not be split over two lines.
 There must be no field names in the document. If there are, you
have entered the wrong field name in the template.
 Are any fields which you have inserted in the template missing?
This may be because data for the field concerned is missing in the
quote/product.
Make any modifications you wish to make to the template document and
save it.
View the order confirmation again and check that everything is displayed
correctly.

Grouping and sorting of products
We are now going to do the following:
• Sort the products by product name.
• Group the products in the template document by product family. A
product family could for example be "hardware", "software" or
"accessory".
• Enter a sum total for the products in each group, but retain the sum
total for the alternative that already exists in the template document.
Specify sort order
By default, the products are displayed in the same order (ranking) as in the
quote. However, you can use "OrderBy:" to choose a different sorting order for
the products. "OrderBy:name" sorts the products alphabetically by product
name, while "OrderBy:vatInfo" sorts the products according to VAT status.
• Insert the "OrderBy:name" field somewhere in the template
document.
All the products will now be sorted by product name within each alternative.
They will also be sorted within each group after the grouping area has been
defined (see below).
Specify grouping area
The group must start with "TableStart:group" and end with
"TableEnd:group".
• Insert the "TableStart:group" anywhere in front of "TableStart:line",
e.g. immediately after the name of the alternative.
• Insert the "TableEnd:group" field after "TableEnd:line", e.g.
immediately after the table containing the product fields.
See the screen under "Insert group field" on page 9.
Specify the grouping key
You must also add a field which indicates what you want to group by
("GroupBy:"). In our case, we are going to group according to product family.
You can of course group using a different criterion, such as product category or
an extra field that you have defined yourself. It is possible to group all fields at
line level (i.e. all data that is linked to the products).
• Insert the "GroupBy:productFamilyKey" field somewhere in the
template document.
You can place this field anywhere. It will not be shown in the order actual
confirmation. You can only specify one grouping key.
Insert group field
In the group (i.e. between "TableStart:group" and "TableEnd:group"), you
can add fields which are group-specific. For a full list of fields, see "Annex:
Mergefields for quotes" on page 12.
Tip: Move the table with the sum total for the alternative (including the total
number of lines) down a few lines, so that you have room to insert the group
fields. See the screen below.

Insert the following fields:
Field name Location Description
«group/groupField» Between the title and the table
containing the products. Give the
field a header style.
The title of the group (the
name of the field by which the
products are grouped).
«group/sumtotalPrice» At the bottom of the column with
prices.
Sum total for the entire group.
«group/groupField»: In the cell to the left of the sum
total for the entire group. You
The title of the group (the
name of the field by which the
Page 9
SuperOffice CRM – Quote templates
should also type in the label
Sum to the left of the field.
products are grouped).
Once you have done this, the template document will look like this (new fields
have been highlighted in the image below):
Save the template document and display it in SuperOffice CRM, as
described above.

Customisation options
We have summarised below a number of customisation options you can use in
the template documents for quotes.
Formatting
You can use the formatting options in Word to customise the way in which
fields are displayed in the template documents.
Below, you will see an example of a summary of groups and prices in a quote,
including the sum total for the entire alternative (the quote). In this example, we
have used tabs to place the fields.
Template document
Generated quote
Numbers
Number fields (e.g. "line/totalPrice") can be formatted with the required
number of decimal places. "line/totalPrice:2" shows a number to two decimal
places. You can also specify five decimal places. If no formatting is specified,
the default value for the selected language will be used.
Date/time
Date fields (e.g. "quote/sent") can be specified with different date formats. For
example, you can insert the "quote/sent:ShortDate" field if you want a short
date format, or "quote/sent:LongDateTime" if you want to show the full date
and time. The actual format that is displayed will take account of the
language/country ("culture") that has been selected for the quote. If no
formatting is specified, the default value for the selected language will be used.
The following formats are available: ShortDate, ShortTime, ShortDateTime,
LongDate, LongTime and LongDateTime.
Settings for language and country ("culture")
When you send a quote or an order confirmation in SuperOffice CRM, you must
also select a language. The template for the relevant language will be selected,
and the date, time and numbers will be shown in the correct format for the
chosen language.
However, date, time and number formats are not always the same for all
countries, even if they use the same language. In these cases, you can create
a special template for the language and country concerned (e.g. "Quote to
Swiss customers"). In the template, you must insert the "Culture:xx-YY", field,
where xx-YY is the language/country code. For example: de-CH is GermanSwitzerland and ar-KW is Arabic-Kuwait. You can place the field anywhere in
the template.
For an overview of language codes, see the MSDN pages
(http://msdn.microsoft.com/enus/library/system.globalization.cultureinfo(v=vs.80).aspx).

The PDF is already available on docs at https://docs.superoffice.com/downloads/quote-templates.pdf
Stored in the assets folder.


Rate the website feature(SS attached)

FOR EXAMPLE :
RATE OUR WEBSITE

Hello, can you please give us more information?

@Rihem-taboubi  I want to add the rate section in the website where user can rate the website in 5 star in the footer section probably.

that to make it more interactive to the user


Rf 265 Directory restructure

Which Issue was this PR made for?

Closes #265

What is within the scope with this PR

Changing directory structure
Resolving import issues that will be caused by this

Other sidenotes that reviewer should be aware of

Left atomize_wrapper as is, since it is like its own thing. Will solve this in different issue
Also this PR is based on #262 branch

Also, I personally think the directory names should follow a kebab-case style (keep camel cases for class/component names) for readability

I agree. Were there any that needs to be changed for this?

Also, I personally think the directory names should follow a kebab-case style (keep camel cases for class/component names) for readability

I agree. Were there any that needs to be changed for this?

I was thinking like:
AvatarCanvas -> avatar-canvas
AvatarDOM -> avatar-dom
ButtonsBar -> buttons-bar
etc.

For the directory names, I want to keep it the way it is. At least for the component ones.
https://github.com/airbnb/javascript

For the directory names, I want to keep it the way airbnb style says. Keep the directory name same as the default export component name
https://github.com/airbnb/javascript

Sounds good that's fine with me👍


Blinking leds

Hi!
https://youtu.be/T-QoqgUnS3Y
If I touched the data pin, the blinking disappears. How to fix it.

Do you have a resistor between controller and LED?
And you have to join both ground cables (power supplay ground and LED ground should be the same:)

Ok I repaired

Hey, i heard different opinions about using a resistor. Is it really neceassary to have one?


Add: description

Codecov Report

Merging #424 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master   #424   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files         154    154
  Lines        1530   1530
=====================================
  Hits         1530   1530

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 f1185a1...379437c. Read the comment docs.


Configurable enchantment max level

This patch is from an old feature of Purpur:
https://github.com/pl3xgaming/Purpur/blob/ver/1.15/patches/server/0103-Configurable-enchantment-max-level.patch

This patch was dropped because it did more harm that good. Too many people tried setting values that broke the balance of the game in unexpected ways. It wasn't worth the trouble trying to support that.


Include MeshShape class

Related with this issue: https://github.com/ros2/rviz/issues/763

Linux
Linux-aarch64
Windows

Windows


Code completion doesn't work correctly with function name start with $ (dollar sign)

Hi!
When I select a function named $S from the code completion:

Similiar issue with $M, $L, $XL.
No issue with $.

Note: To reproduce, the function must have at least one parameter, which causes the CompletionItem to be treated as a snippet (where $ is a special character that needs to be escaped).
public static function $S(a:Object):void {}