🐛 Bug Report: [techdocs-cli] mkdocs-mermaid2 plugin not rendering mermaid classes

📜 Description
It seems the mkdocs-mermaid2 plugin is just being ignored when present in the mkdocs.yml file when running techdocs-cli generate. I have verified that running mkdocs build on the same mkdocs.yml file renders the correct mermaid HTML elements. However, when running techdocs-cli generate, it simply renders it out as the default code block with the "language-text" class -
.
mkdocs.yml attempt #1:
site_name: my-site
plugins:
  - mermaid2:
      javascript<EMAIL_ADDRESS>
mkdocs.yml attempt #2:
site_name: my-site
plugins:
  - mermaid2:
      javascript<EMAIL_ADDRESS>markdown_extensions:
  - pymdownx.superfences:
      custom_fences:
        - name: mermaid
          class: mermaid
          format: !!python/name:mermaid2.fence_mermaid_custom

Both of the above mkdocs.yml configurations product the same result. The full output that is produced from running the command: techdocs-cli generate --no-docker --verbose:
info: Using source dir /home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger
info: Will output generated files in /home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger/site
verbose: Creating output directory if it does not exist.
info: Generating documentation...
verbose: DEBUG   -  Loading configuration file: /home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger/mkdocs.yml
verbose: DEBUG   -  Loaded theme configuration for 'mkdocs' from '/home/jstevens/.local/lib/python3.10/site-packages/mkdocs/themes/mkdocs/mkdocs_theme.yml': {'static_templates': ['404.html'], 'locale': 'en', 'include_search_page': False, 'search_index_only': False, 'highlightjs': True, 'hljs_languages': [], 'hljs_style': 'github', 'navigation_depth': 2, 'nav_style': 'primary', 'analytics': {'gtag': None}, 'shortcuts': {'help': 191, 'next': 78, 'previous': 80, 'search': 83}}
verbose: INFO    -  DeprecationWarning: warning_filter doesn't do anything since MkDocs 1.2 and will be removed soon. All messages on the `mkdocs` logger get counted automatically.
  File "/home/jstevens/.local/lib/python3.10/site-packages/mkdocs_monorepo_plugin/parser.py", line 22, in <module>
    from mkdocs.utils import yaml_load, warning_filter, dirname_to_title, get_markdown_title
  File "/home/jstevens/.local/lib/python3.10/site-packages/mkdocs/utils/__init__.py", line 453, in __getattr__
    warnings.warn(
verbose: DEBUG   -  Config value 'config_file_path' = '/home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger/mkdocs.yml'
DEBUG   -  Config value 'site_name' = 'switchboard-cataloger'
verbose: DEBUG   -  Config value 'nav' = None
DEBUG   -  Config value 'pages' = None
DEBUG   -  Config value 'exclude_docs' = None
DEBUG   -  Config value 'not_in_nav' = None
DEBUG   -  Config value 'site_url' = None
DEBUG   -  Config value 'site_description' = None
DEBUG   -  Config value 'site_author' = None
DEBUG   -  Config value 'theme' = Theme(name='mkdocs', dirs=['/home/jstevens/.local/lib/python3.10/site-packages/mkdocs/themes/mkdocs', '/home/jstevens/.local/lib/python3.10/site-packages/mkdocs/templates'], static_templates={'404.html', 'sitemap.xml'}, name='mkdocs', locale=Locale('en'), include_search_page=False, search_index_only=False, highlightjs=True, hljs_languages=[], hljs_style='github', navigation_depth=2, nav_style='primary', analytics={'gtag': None}, shortcuts={'help': 191, 'next': 78, 'previous': 80, 'search': 83})
DEBUG   -  Config value 'docs_dir' = '/home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger/docs'
DEBUG   -  Config value 'site_dir' = '/home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger/site'
DEBUG   -  Config value 'copyright' = None
DEBUG   -  Config value 'google_analytics' = None
DEBUG   -  Config value 'dev_addr' = _IpAddressValue(host='<IP_ADDRESS>', port=8000)
DEBUG   -  Config value 'use_directory_urls' = True
DEBUG   -  Config value 'repo_url' = None
DEBUG   -  Config value 'repo_name' = None
DEBUG   -  Config value 'edit_uri_template' = None
DEBUG   -  Config value 'edit_uri' = None
DEBUG   -  Config value 'extra_css' = []
DEBUG   -  Config value 'extra_javascript' = []
DEBUG   -  Config value 'extra_templates' = []
DEBUG   -  Config value 'markdown_extensions' = ['toc', 'tables', 'fenced_code', 'pymdownx.superfences']
DEBUG   -  Config value 'mdx_configs' = {'pymdownx.superfences': {'custom_fences': [{'name': 'mermaid', 'class': 'mermaid', 'format': functools.partial(<function fence_mermaid at 0x79251cef9c60>, custom=True)}]}}
DEBUG   -  Config value 'strict' = False
DEBUG   -  Config value 'remote_branch' = 'gh-pages'
DEBUG   -  Config value 'remote_name' = 'origin'
DEBUG   -  Config value 'extra' = {}
DEBUG   -  Config value 'plugins' = {'mermaid2': <mermaid2.plugin.MarkdownMermaidPlugin object at 0x79251cd7f8b0>, 'techdocs-core': <src.core.TechDocsCore object at 0x79251c7def50>}
DEBUG   -  Config value 'hooks' = {}
DEBUG   -  Config value 'watch' = []
DEBUG   -  Config value 'validation' = {'nav': {'omitted_files': 20, 'not_found': 30, 'absolute_links': 20}, 'links': {'not_found': 30, 'absolute_links': 20, 'unrecognized_links': 20}}
DEBUG   -  Running 2 `config` events
INFO    -  MERMAID2  - Initialization arguments: {}
INFO    -  MERMAID2  - Using specified javascript library<EMAIL_ADDRESS>verbose: DEBUG   -  Loaded theme configuration for 'material' from '/home/jstevens/.local/lib/python3.10/site-packages/material/templates/mkdocs_theme.yml': {'language': 'en', 'direction': None, 'features': [], 'font': {'text': 'Roboto', 'code': 'Roboto Mono'}, 'icon': None, 'favicon': 'assets/images/favicon.png', 'static_templates': ['404.html']}
verbose: DEBUG   -  Running 1 `pre_build` events
INFO    -  Cleaning site directory
verbose: INFO    -  Building documentation to directory: /home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger/site
verbose: DEBUG   -  Looking for translations for locale 'en'
verbose: DEBUG   -  No translations found here: '/home/jstevens/.local/lib/python3.10/site-packages/mkdocs/contrib/search/templates/locales'
DEBUG   -  No translations found here: '/tmp/tmpa9p4ejqh/locales'
DEBUG   -  No translations found here: '/home/jstevens/.local/lib/python3.10/site-packages/mkdocs/templates/locales'
DEBUG   -  No translations found here: '/home/jstevens/.local/lib/python3.10/site-packages/material/templates/locales'
verbose: DEBUG   -  Reading markdown pages.
verbose: DEBUG   -  Reading: index.md
DEBUG   -  Running 1 `pre_page` events
verbose: INFO    -  DeprecationWarning: Using the add method to register a processor or pattern is deprecated. Use the `register` method instead.
  File "/home/jstevens/.local/lib/python3.10/site-packages/markdown_inline_graphviz.py", line 48, in extendMarkdown
    md.preprocessors.add('graphviz_block',
  File "/home/jstevens/.local/lib/python3.10/site-packages/markdown/util.py", line 462, in add
    warnings.warn(
verbose: INFO    -  DeprecationWarning: The 'md_globals' parameter of 'markdown_inline_graphviz.InlineGraphvizExtension.extendMarkdown' is deprecated.
  File "/home/jstevens/.local/lib/python3.10/site-packages/markdown/core.py", line 125, in registerExtensions
    ext._extendMarkdown(self)
  File "/home/jstevens/.local/lib/python3.10/site-packages/markdown/extensions/__init__.py", line 82, in _extendMarkdown
    warnings.warn(
verbose: INFO    -  DeprecationWarning: 'version' is deprecated. Use '__version__' instead.
  File "/home/jstevens/.local/lib/python3.10/site-packages/markdown/__init__.py", line 51, in __getattr__
    warnings.warn(
  File "/home/jstevens/.local/lib/python3.10/site-packages/mdx_truly_sane_lists/__init__.py", line 1, in
    from .mdx_truly_sane_lists import makeExtension
verbose: DEBUG   -  Copying static assets.
DEBUG   -  Copying media file: 'metadata.yaml'
verbose: DEBUG   -  Copying media file: 'site/index.html'
verbose: DEBUG   -  Copying media file: 'site/404.html'
verbose: DEBUG   -  Copying media file: 'site/metadata.yaml'
verbose: DEBUG   -  Copying media file: 'site/sitemap.xml'
verbose: DEBUG   -  Copying media file: 'site/sitemap.xml.gz'
verbose: DEBUG   -  Copying media file: 'site/techdocs_metadata.json'
verbose: DEBUG   -  Copying media file: 'site/assets/images/favicon.png'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/bundle.cd18aaf1.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/bundle.cd18aaf1.min.js.map'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/tinyseg.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/wordcut.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.ar.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.da.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.de.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.du.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.el.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.es.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.fi.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.fr.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.he.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.hi.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.hu.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.hy.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.it.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.ja.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.jp.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.kn.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.ko.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.multi.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.nl.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.no.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.pt.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.ro.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.ru.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.sa.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.sv.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.ta.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.te.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.th.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.tr.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.vi.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/lunr/min/lunr.zh.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/workers/search.f886a092.min.js'
verbose: DEBUG   -  Copying media file: 'site/assets/javascripts/workers/search.f886a092.min.js.map'
verbose: DEBUG   -  Copying media file: 'site/assets/stylesheets/main.fad675c6.min.css'
verbose: DEBUG   -  Copying media file: 'site/assets/stylesheets/main.fad675c6.min.css.map'
verbose: DEBUG   -  Copying media file: 'site/assets/stylesheets/palette.356b1318.min.css'
verbose: DEBUG   -  Copying media file: 'site/assets/stylesheets/palette.356b1318.min.css.map'
verbose: DEBUG   -  Copying media file: 'site/search/lunr.js'
verbose: DEBUG   -  Copying media file: 'site/search/main.js'
verbose: DEBUG   -  Copying media file: 'site/search/search_index.json'
verbose: DEBUG   -  Copying media file: 'site/search/worker.js'
verbose: DEBUG   -  Copying media file: 'assets/images/favicon.png'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/bundle.cd18aaf1.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/bundle.cd18aaf1.min.js.map'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.ar.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.da.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.de.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.du.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.el.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.es.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.fi.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.fr.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.he.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.hi.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.hu.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.hy.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.it.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.ja.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.jp.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.kn.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.ko.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.multi.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.nl.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.no.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.pt.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.ro.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.ru.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.sa.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.stemmer.support.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.sv.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.ta.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.te.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.th.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.tr.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.vi.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/min/lunr.zh.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/tinyseg.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/lunr/wordcut.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/workers/search.f886a092.min.js'
verbose: DEBUG   -  Copying media file: 'assets/javascripts/workers/search.f886a092.min.js.map'
verbose: DEBUG   -  Copying media file: 'assets/stylesheets/main.fad675c6.min.css'
verbose: DEBUG   -  Copying media file: 'assets/stylesheets/main.fad675c6.min.css.map'
verbose: DEBUG   -  Copying media file: 'assets/stylesheets/palette.356b1318.min.css'
verbose: DEBUG   -  Copying media file: 'assets/stylesheets/palette.356b1318.min.css.map'
verbose: DEBUG   -  Copying media file: 'search/lunr.js'
verbose: DEBUG   -  Copying media file: 'search/main.js'
verbose: DEBUG   -  Copying media file: 'search/worker.js'
verbose: DEBUG   -  Building theme template: techdocs_metadata.json
verbose: DEBUG   -  Building theme template: 404.html
verbose: DEBUG   -  Building theme template: sitemap.xml
verbose: DEBUG   -  Gzipping template: sitemap.xml
verbose: DEBUG   -  Building markdown pages.
DEBUG   -  Building page index.md
verbose: DEBUG   -  Running 1 `page_context` events
verbose: DEBUG   -  Running 1 `post_page` events
verbose: DEBUG   -  Running 1 `post_build` events
verbose: INFO    -  Documentation built in 0.36 seconds
info: Successfully generated docs from /home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger into /home/jstevens/go/src/weavelab.xyz/weave-docs-content/content/services/switchboard-cataloger/site using local mkdocs
info: Done!

From the output, it looks like it's trying to do the mermaid stuff. But, the end result HTML does not have any of the expected mermaid "pre" elements like I see when I run the mkdocs command by itself.
Commands being ran:

techdocs-cli generate --no-docker --output-dir /tmp/site3648345402 --verbose
mkdocs build

👍 Expected behavior
It should be rendering elements that look like this:
...
. But, instead it is rendering elements like this:
...
.
👎 Actual Behavior with Screenshots
Based on this markdown:
```mermaid
graph LR
    hello --> world
    world --> again
    again --> hello

... I expect to see:

But, instead I see:

👟 Reproduction steps
The only reproduction step is to install techdocs-cli version 1.8.5 and mkdocs version 1.5.3 and then run techdocs-cli generate with the above mermaid2 plugin included in the mkdocs.yml config file.
📃 Provide the context for the Bug.
I am willing to submit a PR if I get some more context about how techdocs-cli is working. I have looked at the code and it does not look like there is anything happening after it calls mkdocs build. So, it must be something about how the plugins are loaded.
🖥 Your Environment
No response
👀 Have you spent some time to check if this bug has been raised before?

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

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

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

Hi @jrkt, TechDocs uses the DOMPurify library to sanitize HTML and prevent XSS attacks. Pretty sure this is what you are running in to.

@awanlin that makes sense for the javascript library, but not for the "pre" elements with mermaid classes.

You are right, this doesn't even come into play until you run TechDocs - https://github.com/backstage/backstage/blob/6e14fefe5344653c09b80a99de7d73a9882672f8/plugins/techdocs/src/reader/transformers/html/transformer.ts#L39 - and you are seeing this issue before that based on your description.

Correct. The generated site that we publish to a GCS bucket does not have any of the mermaid classes rendered.  I also tried the mkdocs-export-mermaid-to-svg and had the same result.

Could something in techdocs-core MkDocs plugin play into this? https://github.com/backstage/mkdocs-techdocs-core

@awanlin what do you mean?

Unless you are using the --omitTechdocsCoreMkdocsPlugin flag the techdocs-core plugin gets added to the mkdocs.yml.

Adding that flag got me what I wanted generated for the site. The only problem now is that turning off the core plugin, now the techdocs content page just loads forever. Have there been any reported issues with that flag?

So the techdocs-core plugin is not optional, you need it for TechDocs to work. The docs for sure don't make that as clear as they could, or really at all. As far as that flag goes, I'll be honest, it's sort of contradictory to that fact. Essentially the flag assumes that you have the techdocs-core plugin in your config and won't add it.
BUT this at least tells us that the issue is with something in the techdocs-core plugin. Now what that might be I'm less helpful around as I've never dove into that side of things. I've been lucky enough that it just worked for me needs in the past.

Who would be a better person to bring into the conversation that is knowledgeable about the techdocs-core plugin? It just seems like it's ignoring any plugins provided in mkdocs.yml

exact same problem here

when I use kroki plugin it works like said in the backstage doc, but not with mermaid2 plugin

@awanlin any word? This isn't a huge rush. But, I feel like this is something that has to be affecting lots of people where plugins just simply don't work with the techdocs-cli

No, haven't heard back, shared this issue with them so would expect them to post here. I'll ping them again 👍
I'm not sure that's the case where this is an issue for many people as we would hear more about it. There's a decent group of people who uses several MkDocs plugins that would have posted about it on Discord and that's not what I'm seeing. It's for sure an issue though and we should try and resolve it.

@awanlin any word on this?

Hi! Any updates on this one?
Is there any workaround to make mermaid diagrams work?

Hi! Internally, we're using backstage-plugin-techdocs-addon-mermaid in order to render the mermaid diagrams within our backstage frontend.
In regards to the techdocs-cli, by default I believe it's using the techdocs-cli-embedded-app when serving. For previewing it with the mermaid addon, you can create your own custom app for the techdocs-cli to use:

Clone the techdocs-cli-embedded-app
Install and add the backstage-plugin-techdocs-addon-mermaid to the techdocs addons
Create a dist of the techdocs-cli-embedded-app by running yarn build
In the root of the techdocs, you should be able to run techdocs-cli serve --preview-app-bundle-path <PATH_OF_DIST>

I ended up doing a bit more digging into this and have a fix incoming. Once it's merged in, you'll still need to add a bit of config in your mkdocs.yml to enable the mermaid diagrams within mkdocs.
markdown_extensions:
  - pymdownx.superfences:
      preserve_tabs: true
      custom_fences:
        # Mermaid diagrams
        - name: mermaid
          class: mermaid
          format: !!python/name:pymdownx.superfences.fence_code_format

@PeaWarrior that is great to hear! Waiting patiently for the fix :pray:

So I lied a little bit. The PR does technically fix the issue with the
...
 element not being generated, so running techdocs-cli serve:mkdocs or mkdocs serve will now allow you to preview the mermaid diagrams correctly. However, when serving via backstage, techdocs strips and prevents any external javascript from running due to security reasons which mermaid requires to render its diagrams.
I've looked at previous threads on this issue and it seems that best two options for rendering mermaid diagrams are via:

using the backstage-plugin-techdocs-addon-mermaid as stated above
or following this guide for build-time support of mermaid diagrams

You can read through backstage/backstage#4123 for more info.


Exit on xDS Permission Denied Errors

Exit on xDS Permission Denied Errors
If the management server responds to a DiscoveryRequest with a gRPC error code, Envoy will retry the request. For some error codes, a retry might not make sense.
We're interested in having Envoy exit if the management server returns an Unauthenticated or PermissionDenied error. This would allow a wrapper layer/process around Envoy to reset credentials, for example by rebuilding the bootstrap config, and then restart Envoy to try again.
Whether this behavior is active would need to be configurable, with the feature being off by default.
@htuch

Hmm. I'm not sure how I feel about this. Is this opening a can of worms? Are there other cases in which someone might ask to exit? I'm mainly wondering if the wrapper/process monitor could be looking at stats during startup and tear down envoy and restart it if it sees this?

Thanks for the suggestion Matt. I chatted with @mrice32 about it and we think watching stats should be a reasonable solution, although we might want to build a mechanism to programmatically access stats, similar to #3674 .


Better Rolls 5e produces roll audio on hidden rolls

basically title sheet. everything works fine, but when I roll from a character sheet everybody can hear

I cannot reproduce this - Better Rolls for 5e and Hide GM Rolls enabled, rolling a private roll as a GM, when Hide Private GM Rolls is enabled, does not produce any audio for players.
I'm going to close this for now - if you can provide more information, reproduce with just those two modules enabled, or find another module that's causing this issue, please reopen.

Actually, I can reproduce, sometimes. Seems inconsistent, but they appear to be doing their own audio notifications in BR5E, completely bypassing the core chat notification system.

Unfortunately, the way Better Rolls is handling audio for chat messages means there's no way for me to identify what audio is triggered from a hidden roll, and what is triggered from a regular roll, and BR5E is not seeing much in the way of significant updates these days, so this doesn't seem likely to be fixed for the foreseeable future.
The only real option to fix this behaviour is to disable roll sounds entirely in the BR5E settings, but that will mean you don't get any roll audio at all, I'm afraid :disappointed:


Plex.tv web not skipping

Thanks for a great application.
When I log in to the web player via my_ip:32400 when on LAN, autoskip works ok. However, if I login via app.plex.tv, I get the debug level errors below. I have tried configs with either plex.tv credentials or <IP_ADDRESS> with port 32400. My smart TVs have no issues. My SSL settings are set to Preferred.
I'm on Win11.
Thanks for your help.
2022-06-10 14:51:43 - __main__ - INFO - Found new session 15 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome viewOffset 0 ['mikethebos'], sessions: 2
2022-06-10 14:51:51 - __main__ - INFO - Found skippable chapter Advertisement for media 15 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome with range 7818-29584 and viewOffset 8068
2022-06-10 14:51:51 - __main__ - INFO - Seeking Plex Web player playing 15 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome from 8069 to 29584
2022-06-10 14:51:51 - __main__ - ERROR - BadRequest Error, see https://github.com/mdhiggins/PlexAutoSkip/wiki/Troubleshooting#badrequest-error
2022-06-10 14:51:51 - __main__ - DEBUG - Player Chrome (Plex Web) does not support direct IP connections, nothing to fall back upon, returning None
2022-06-10 14:51:56 - __main__ - DEBUG - Skipping update session 15 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome is actively seeking
```

Did you follow the link in that error and try those setting adjustments? The web player has no viable fallback since it's not a dedicated client so the TV may still work via direct IP connection while the web player will fail without GDM enabled

I just toggled GDM, added all the UDP GDM ports to Windows Defender Firewall, and rebooted. No luck. I also tried accessing app.plex.tv from another system on my LAN. No luck. Any ideas?

Not really. Are the computers you're accessing the web client from on the same subnet as your server?
Other than that, it's got to be something wrong with your local network. I'm curious if the logs for your players that do work indicate if it's forced to use the fallback method, if you wanted to check and post that. That would just confirm my suspicions
Without GDM working though there's no alternative way to send commands to the web player.
I can at least confirm that the web player does work on multiple other users and on my own setup.

Here's an example debug log when using an iOS app client.
2022-06-11 12:39:05 - __main__ - INFO - Found new session 7 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome viewOffset 0 ['mikethebos'], sessions: 2
2022-06-11 12:39:12 - __main__ - INFO - Found skippable chapter Advertisement for media 7 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome with range 7818-29584 and viewOffset 8593
2022-06-11 12:39:12 - __main__ - INFO - Seeking Plex Web player playing 7 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome from 8593 to 29584
2022-06-11 12:39:14 - __main__ - DEBUG - Updating session 7 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome viewOffset 30000, old 30905, diff -905 (1s since last update)
2022-06-11 12:39:14 - __main__ - DEBUG - Recent seek successful, server offset update 30000 meets/exceeds target 29584, setting seeking to False
2022-06-11 12:39:45 - __main__ - DEBUG - Session 7 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome hasn't been updated in 30 seconds
2022-06-11 12:39:45 - __main__ - DEBUG - Deleting session 7 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Chrome, sessions: 2
2022-06-11 15:32:04 - __main__ - INFO - Found new session 8 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Mike’s iPhone viewOffset 0 ['mikethebos'], sessions: 2
2022-06-11 15:32:09 - __main__ - DEBUG - Updating session 8 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Mike’s iPhone viewOffset 5304, old 5259, diff 45 (5s since last update)
2022-06-11 15:32:12 - __main__ - INFO - Found skippable chapter Advertisement for media 8 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Mike’s iPhone with range 7818-29584 and viewOffset 7913
2022-06-11 15:32:12 - __main__ - INFO - Seeking Plex for iOS player playing 8 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Mike’s iPhone from 7913 to 29584
2022-06-11 15:32:12 - __main__ - DEBUG - Updating session 8 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Mike’s iPhone viewOffset 29584, old 29805, diff -221 (0s since last update)
2022-06-11 15:32:12 - __main__ - DEBUG - Recent seek successful, server offset update 29584 meets/exceeds target 29584, setting seeking to False
2022-06-11 15:32:12 - __main__ - DEBUG - Updating session 8 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Mike’s iPhone viewOffset 29584, old 29584, diff 0 (0s since last update)
2022-06-11 15:32:17 - __main__ - DEBUG - Updating session 8 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Mike’s iPhone viewOffset 34567, old 34608, diff -41 (5s since last update)
2022-06-11 15:32:22 - __main__ - DEBUG - Updating session 8 [2117] (iCarly (2021) s02e04 - iHire a New Assistant) Mike’s iPhone viewOffset 39839, old 39830, diff 9 (5s since last update)

Hm this shows chrome working for the skip in addition to iOS. Out of curiosity. When you're playing these things back via the web play using Plex.tv, does the status show these as being LAN sessions and is it using the relay at all?

Relay is disabled. The bandwidth showed in status is all local. I will try running PlexAutoSkip from another box...

I just tried running PlexAutoSkip from a Mac on my subnet. Same BadRequest error...

In that case I'm out of ideas. Does disabling SSL change anything?

No. Just tried ignore-certs = False.
It's alright. Just a minor issue. I will reopen if I find a fix. Cheers!

How about turning off SSL entirely on the Plex server? Just as a test

I only have Preferred and Required as options in Plex settings. It has been on Preferred the whole time.

Ah yeah that's my bad I thought there was some kind of a None type option, remembered incorrectly


disable logical type conversion how?

I wonder if I can prevent conversion of {"type": "long", "logicalType": "timestamp-millis"} into the wondrous datetime (https://stackoverflow.com/questions/6999726/how-can-i-convert-a-datetime-object-to-milliseconds-since-epoch-unix-time-in-p).
Thanks in advance you brave people writing in Python.

import fastavro
fastavro._reader.LOGICAL_READERS['long-timestamp-millis'] = lambda x:x

Nope, this doesn't work, neither with 'timestamp-millis' nor with 'long-timestamp-millis'.

sorry
lambda x:x
=>
lambda d, w, r: d

https://gist.github.com/kkirsanov/d64a3c2899675e8aa35870c608fe7e12

Closing this. Feel free to re-open if you are still having trouble.

FYI, the "solution" has stopped working with the current version (I think I'm at 0.17.10), s/reader/read/ above.
A README note or something will be appreciated, I'm sure.
A solution with less monkey-patching will be even more welcome. Thanks.

@scottbelden Re: logical type removal: thanks, this is even less a solution, since I'm having problem just with the python component, all others are fine and enjoying the logical types, thanks again.
Now I don't think I have any direct business with fastavro, and I'd also like to stay at the confluent_kafka API level.
What I do is:
...
from confluent_kafka import avro
...
    value_schema = avro.load(KAFKA_EMIT_TOPIC+'-value.avsc')
...

    producer = AvroProducer({'bootstrap.servers': KAFKA_BOOTSTRAP_SERVERS, 'schema.registry.url': KAFKA_REGISTRY_URI},
                            default_value_schema=value_schema)

    consumer = AvroConsumer({'bootstrap.servers': KAFKA_BOOTSTRAP_SERVERS, 'group.id': KAFKA_INGEST_GROUP, 'schema.registry.url': KAFKA_REGISTRY_URI})
    consumer.subscribe([KAFKA_INGEST_TOPIC])
...
            msg = consumer.poll(KAFKA_POLL_SEC)
...

Then I use msg.value() which has my (long) ts converted to datetime.
To me, the perfect solution would be giving some options to AvroConsumer (e.g. AvroConsumer({..., 'schema.logical.type': {'ts': None}}) or AvroConsumer({..., 'schema': <specially-augmented-avsc>}))

@costa For the confluent_kafka level you would probably need to create an issue or PR for them. However, I think they would still need a change from us so that they could set the use_logical_types to False.

@costa @kkirsanov I took a stab at this. The changes are in https://github.com/tebeka/fastavro/pull/186.
You can see how this works from the test, but essentially you just use the argument use_logical_types=False when using the reader or schemaless_reader.
Let me know if this would still be useful and if you think this would resolve the issue.

Thanks guys, I've kinda lost interest in this for the period, and I'm a no Python expert to review the code or to help with the design decisions, so just letting you know...


add screen to view details summary before form submission

Add a screen that'll give the user a summary of the details they'll be submitting. This screen would appear last just before the final click to submit the form.
Notes to consider:

If the user wishes to make changes to a section of the flow, then should be able to click a link to take them back to the relevant screen to edit their information.
For the scenario where the flow contains both the Default/CreditCardForm and the Default/CreditCardAndLicenseUploadForm, it should take them to Default/CreditCardForm.
If no details are there to submit, a message should be shown stating this fact. (This should be highly unlikely, however, this edge-case should be handled).
If the user chooses to edit previous filled-in data, then instead of going Next, they would click on Save and be brought back to the Summary screen. This behaviour should also apply to the back button as well.

Will be removing support for having multiple of the SAME controller in the config flow. Now, on app boot, the flow will be filtered down to unique items (unique controller names).

Will be removing the Default/ prefix from ALL flows and screen names. Compatibility has been added to avoid disrupting existing users.


Upload module data, Update README

This PR:

Includes the addition of 2 json files in /data folder
Updates README

Data on modules in the form of json files, taken from NUSMods API.

Includes data from AY19-20 and AY18-20 (just as backup)
Retrieved on 14 Sept 2019

Note:

The files do not contain information like lecture and tutorial timings.
Pre-requisites tree in json format  is also not included.

In order to retrieve these information, requests should be made for individual modules (I think?).
The request URL is in the form https://api.nusmods.com/v2/{acadYear}/modules/{moduleCode}.json
Example: https://api.nusmods.com/v2/2018-2019/modules/CS1010S.json

Hi I suggest to delete moduleInfo_AY1819.json to avoid confusion when coding X-D

Ok ^^


!_debugLocked is not true.

Steps to Reproduce

...
...
...

Target Platform:
Target OS version/browser:
Devices:
Logs

Hi @akshat102
can you please describe the issue in detail
and provide your flutter doctor -v
thank you

Hi @akshat102
can you please describe the issue in detail
and provide your flutter doctor -v
thank you

[√] Flutter (Channel stable, v1.9.1+hotfix.5, on Microsoft Windows [Version 10.0.18362.418], locale en-IN)
• Flutter version 1.9.1+hotfix.5 at C:\flutter
• Framework revision 1aedbb1835 (3 weeks ago), 2019-10-17 08:37:27 -0700
• Engine revision b863200c37
• Dart version 2.5.0
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at C:\Users\aknit\AppData\Local\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.2
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
• All Android licenses accepted.
[√] Android Studio (version 3.5)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 41.0.2
• Dart plugin version 191.8593
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
[√] Connected device (1 available)
• Redmi Note 5 Pro • 92ec6a26 • android-arm64 • Android 9 (API 28)
• No issues found!

Hi @akshat102
can you please describe the issue in detail
and provide your flutter doctor -v
thank you

[√] Flutter (Channel stable, v1.9.1+hotfix.5, on Microsoft Windows [Version 10.0.18362.418], locale en-IN)
• Flutter version 1.9.1+hotfix.5 at C:\flutter
• Framework revision 1aedbb1835 (3 weeks ago), 2019-10-17 08:37:27 -0700
• Engine revision b863200c37
• Dart version 2.5.0
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at C:\Users\aknit\AppData\Local\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.2
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
• All Android licenses accepted.
[√] Android Studio (version 3.5)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 41.0.2
• Dart plugin version 191.8593
• Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b03)
[√] Connected device (1 available)
• Redmi Note 5 Pro • 92ec6a26 • android-arm64 • Android 9 (API 28)
• No issues found!

Hi again @akshat102
can you please describe the issue in detail
thank you for providing your flutter doctor -v

Hi again @akshat102
can you please describe the issue in detail
thank you for providing your flutter doctor -v

Built build\app\outputs\apk\debug\app-debug.apk.
Syncing files to device Redmi Note 5 Pro...
E/flutter (13677): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: setState() or markNeedsBuild() called during build.
E/flutter (13677): This Overlay widget cannot be marked as needing to build because the framework is already in the process of building widgets.  A widget can be marked as needing to be built during the build phase only if one of its ancestors is currently building. This exception is allowed because the framework builds parent widgets before children, which means a dirty descendant will always be built. Otherwise, the framework might not visit this widget during this build phase.
E/flutter (13677): The widget on which setState() or markNeedsBuild() was called was:
E/flutter (13677):   Overlay-[LabeledGlobalKey#deefe]
E/flutter (13677): The widget which was currently being built when the offending call was made was:
E/flutter (13677):   Builder
E/flutter (13677): #0      Element.markNeedsBuild. (package:flutter/src/widgets/framework.dart:3687:11)
E/flutter (13677): #1      Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:3702:6)
E/flutter (13677): #2      State.setState (package:flutter/src/widgets/framework.dart:1161:14)
E/flutter (13677): #3      OverlayState.insertAll (package:flutter/src/widgets/overlay.dart:346:5)
E/flutter (13677): #4      OverlayRoute.install (package:flutter/src/widgets/routes.dart:43:24)
E/flutter (13677): #5      TransitionRoute.install (package:flutter/src/widgets/routes.dart:180:11)
E/flutter (13677): #6      ModalRoute.install (package:flutter/src/widgets/routes.dart:907:11)
E/flutter (13677): #7      NavigatorState.pushReplacement (package:flutter/src/widgets/navigator.dart:1854:14)
E/flutter (13677): #8      _LoadingScreenState.getLocation (package:clima/screens/loading_screen.dart:26:27)
E/flutter (13677): #9      _AsyncAwaitCompleter.start (dart:async-patch/async_patch.dart:43:6)
E/flutter (13677): #10     _LoadingScreenState.getLocation (package:clima/screens/loading_screen.dart:24:19)
E/flutter (13677): #11     _LoadingScreenState.initState (package:clima/screens/loading_screen.dart:21:5)
E/flutter (13677): #12     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4068:58)
E/flutter (13677): #13     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
E/flutter (13677): #14     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (13677): #15     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (13677): #16     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
E/flutter (13677): #17     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (13677): #18     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (13677): #19     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
E/flutter (13677): #20     Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
E/flutter (13677): #21     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
E/flutter (13677): #22     ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
E/flutter (13677): #23     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (13677): #24     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (13677): #25     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
E/flutter (13677): #26     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (13677): #27     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (13677): #28     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
E/flutter (13677): #29     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (13677): #30     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (13677): #31     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
E/flutter (13677): #32     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (13677): #33     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (13677): #34     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
E/flutter (13677): #35     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (13677): #36     Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (13677): #37     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
E/flutter (13677): #38     Ele

Hi again @akshat102
can you please describe the issue in detail
thank you for providing your flutter doctor -v

and the error.............................................
The following assertion was thrown building Navigator-[GlobalObjectKey _WidgetsAppState#5e6d3](dirty, state: NavigatorState#52363(tickers: tracking 2 tickers)):
'package:flutter/src/widgets/navigator.dart': Failed assertion: line 2247 pos 12: '!_debugLocked': is not true.
Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=BUG.md
User-created ancestor of the error-causing widget was:
MaterialApp file:///C:/Users/aknit/AndroidStudioProjects/stack_skills/Clima-Flutter-master/lib/main.dart:11:12
When the exception was thrown, this was the stack:
#2      NavigatorState.build (package:flutter/src/widgets/navigator.dart:2247:12)
#3      StatefulElement.build (package:flutter/src/widgets/framework.dart:4047:27)
#4      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3941:15)
#5      Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
#6      StatefulElement.update (package:flutter/src/widgets/framework.dart:4120:5)
...
════════════════════════════════════════════════════════════════════════════════════════════════════

what happened??

Hi @akshat102
without looking at the code, this error
E/flutter (13677): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: setState() or markNeedsBuild() called during build.
suggest me that you are using set state in the build function of a widget
before "return", please don't build your logic inside the build function.
would be really helpful if you could provide
a minimal code sample to reproduce the problem
thank you

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact descriptions what happens, logs and the output of 'flutter doctor -v'  please.
All system setups can be slightly different so its always better to open new issues and reference related issues.


Longer message list result in decreased performance.

When the message list is long, loading audio as a wave can be a time-consuming process. Consider using the library "react-window" from the GitHub repository "https://github.com/bvaughn/react-window" as a potential solution.

Duplicated #14


subpath app redirect bugs in the version 0.7

Vue.js / vue-router versions
1.0.28 / 0.7.13
What is actually happening?
my app has two language,  http://<IP_ADDRESS>/en/ and http://<IP_ADDRESS>/zh-cn/.
now, if my path is http://<IP_ADDRESS>/en/, it will redirect to http://<IP_ADDRESS>/#!/, the right url is http://<IP_ADDRESS>/en/#!/
and this bug is also with transition.abort() of beforeEach hook ...

You can add this in your index.js file:
import Vue from 'vue'
Vue.use(VueRouter)
const router = new VueRouter({
    history: true,
    hashbang: false
})
configRouter(router)
Route Options

@Fanciervm i just want to use hash mode, i found just change location.replace(formattedPath); to location.replace(location.pathname + formattedPath);
and, i found this issue maybe has solved in the version 2, but not add to version 0.7, i copy the source file and edit it to use for myself now……

Sorry for the late reply 😓
If you activate history mode, using root: '/en/' should work. I couldn't test it though.
Yes, it's doable in v2 with the base option


feat/#608 daily quote app

What does this PR do?
This PR introduces a Daily Quote App that offers motivational, educational, and a variety of other quotes. Users can share their own quotes and even use Copilot to generate amazing new ones.
Related PRs and Issues

LiveLink
Github Repo

Checklist

[x] I have read read the Contribution Guide
[x] If the PR changes or adds functionality, I have updated the relevant documentation

Great job @nitesh2920!

@quest-bot loot #846

Great job @nitesh2920!

Thank You

@NathanTarbert I’d like to include a bonus section featuring links to my Twitter and Dev blog. Since they have been merged, do I need to raise a new PR for this addition?

Yes, quickly submit a PR, and I'll merge it

Yes, quickly submit a PR, and I'll merge it

okay, raised a PR #862 please check it.

@quest-bot loot

@quest-bot loot #608

@nitesh2920 quest close mean will I not receive a swag?


Problems about plot

Thanks for your help.
Recently I have been using squigualiser to check my sequencing data.
But I find a bug about the nucleotide label in plotting.
Here is my command like,
squigualiser plot -f final.fastq -s file.blow5 -a out.paf -o new_read -r 0eaa68b9-5989-44ca-8e00-52eba6ba3ccb --rna --region 1-100
When I changed the region to 1-200, something wrong happened.
The signal is correct and extends to 200 bases, but the base label is wrong.
Because the direction is from 5 to 3, so for the last 100 bases, the x-axis from 200-1 and 100-1 will be the same.
Actually, the first 100 base is the same but labeled the different signals.
I guess it's because you always labeled the first x-axis with the last base in the sequence, that's correct when plotting the whole sequence but the region. Thus I think a new method to label the nucleotide is required, such as using the code like sequence[-200:-1].

Hi @JeremyQuo,
Thank you reporting this bug. I fixed couple of bugs recently on dev branch and this sounds like one of them.
Can you please try the latest dev? I recommend cloning a new copy and using conda to create an env with python3.9 (instructions are available on readme dev).

Thanks for your information. I tried the last version on the dev branch.
It improved the previous bug when I set the region with 1-100 or 1-200.
But I find another bug when I set the region that covers the last part of my read.
For example,
my reads query length is 10000 and the length of the move table is 9996, which means the first 4 will be dropped.
When I set 1-100, it will return 100-5 and it's correct.
When I set 9950-10000, it should return 10000-9950. And the first base should be the last base in my read.
Also, the title showed it return to 10000 but the first base is not the last base in my read. It seems returned 9996 - 9950.
I don't know whether my understanding is correct or if there is any problem with the Squigualiser plot.
Thanks

Or I can say if it starts from 5, it should end in 10000+5

Hi @JeremyQuo,
I think I get what you are saying. I however, cannot reproduce the bug with my test data. Can you please send me a minimal dataset and the commands to reproduce this bug? I really appreciate your support.

Sorry for replying late.
Here is my test data and it should be can cover 6-620 but things seems not that correct.
When I want to set region 1-100, and bug appears.
squigualiser plot -f final.fastq -s file.blow5 -a file.paf -o result --rna --region 1-300
sequence file: final.fastq
alignment file: file.paf
signal file: file.blow5
Info: Signal to read method using PAF ...
plot region: 56-300	read_id: 562eeb47-2b86-4fc7-abfc-5dce62f511ed
BokehUserWarning: ColumnDataSource's columns must be of the same length. Current lengths: ('line_color', 8315), ('x', 8000), ('y', 8000)
BokehUserWarning: ColumnDataSource's columns must be of the same length. Current lengths: ('fill_color', 8315), ('line_color', 8315), ('x', 8000), ('y', 8000)
BokehUserWarning: ColumnDataSource's columns must be of the same length. Current lengths: ('fill_color', 8315), ('hatch_color', 8315), ('line_color', 8315), ('x', 8000), ('y', 8000)
plot region: 1-300	read_id: 562eeb47-2b86-4fc7-abfc-5dce62f511ed
Traceback (most recent call last):
File "/home/zhguo/Program/anaconda3/envs/venv3/bin/squigualiser", line 33, in
sys.exit(load_entry_point('squigualiser==0.0.1', 'console_scripts', 'squigualiser')())
File "/home/zhguo/Program/anaconda3/envs/venv3/lib/python3.9/site-packages/squigualiser-0.0.1-py3.9.egg/src/init.py", line 30, in main
File "/home/zhguo/Program/anaconda3/envs/venv3/lib/python3.9/site-packages/squigualiser-0.0.1-py3.9.egg/src/plot.py", line 853, in run
File "/home/zhguo/Program/anaconda3/envs/venv3/lib/python3.9/site-packages/squigualiser-0.0.1-py3.9.egg/src/plot.py", line 160, in plot_function
IndexError: index 9144 is out of bounds for axis 0 with size 8000
And I don't know why. Many thanks if can help.
test_data.zip

I supposed the index problem is from the region option, which will be different logic with no region option.
And the bug I met is because the insert, there should be some problem when tackle the related problem about insertion

@JeremyQuo,
Thanks a lot. I will get back to you asap.

Hi @JeremyQuo,
Thank you for reporting this bug. I have updated reform.py to support different stride values. Hopefully, this should have resolved the issue. I tested with your dataset as well. Please use the latest dev commit.

Hi @JeremyQuo,
Could you please let me know if this issue is resolved? I will close the issues for now. Feel free to reopen.


Binary-Relay don't expand SOAP message

refer https://github.com/wso2/product-ei/issues/1798

fixed for APIM 2.1.0 with https://github.com/wso2-support/wso2-synapse/pull/427


Update kamon-akka, kamon-bundle, ... to 2.1.1

Updates

io.kamon:kamon-akka
io.kamon:kamon-bundle
io.kamon:kamon-prometheus

from 2.1.0 to 2.1.1.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "io.kamon" } ]

labels: library-update, semver-patch

Done in #587


Fix for bug when extracting WelcomePage that doesn't belong to a list

It now checks if the WelcomePage url is empty or not, without this the folder and filename are incorrect in the template

thx Matt, appreciated.


Select all with filter

Hi Again!
TableFilter working very well and I have just introduced a "select all" checkbox to check all checkboxes on each row of the table (see code below). However when this happens, the selection made is for those items in the filter selection, plus those not - i.e. all items irrespective of filter applied. If I have a data set of 100 records filtered to 5, the select all results are still all 100 records.
Any ideas much appreciated!
Code for "select all":
$(document).ready(function(){
	$('#select_all').on('click',function(){
		if(this.checked){
			$('.checkbox').each(function(){
				this.checked = true;
			});
		}else{
			 $('.checkbox').each(function(){
				this.checked = false;
			});
		}
	});

	$('.checkbox').on('click',function(){
		if($('.checkbox:checked').length == $('.checkbox').length){
			$('#select_all').prop('checked',true);
		}else{
			$('#select_all').prop('checked',false);
		}
	});
});

Hi @shughes111,
If you are not using the [ezEditTable](http://codecanyon.net/item/ezedittable-enhance-html-tables/2425123?ref=koalyptus plugin, what you could do is use the getValidRows() API to retrieve the indexes of the filtered rows. Then refine your checkbox selection logic to verify the checkbox is contained in a row whose index appears in the collection returned by the above API, only in that case you should tick the checkbox.

Thanks for the reply - so I would return the getValidRows() API into an array and use it in the TRUE case functions above (sorry, JQUERY not my strong point!)

Yes, the getValidRows() API returns an array and then you will need to implement your own jquery logic, as explained above, to check a checkbox.

Ok many thanks for your help!


[REQUEST] Implement unique Service ID and Date pair in calendar_dates.txt (GTFS Rule)

Is your feature request related to a problem? Please describe.
Every Service ID and Date pair should be unique in calendar_dates.txt.
Describe the solution you'd like
Verify a Service ID and Date pair is not duplicated in calendar_dates.txt
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
GTFS Spec http://gtfs.org/reference/static/#calendar_datestxt

Implemented in https://github.com/MobilityData/gtfs-validator/pull/84


Extending a trial does not work.

Dear,
It says:
If your first 30-day trial period is expired, you can extend it yourself and things will be business as usual. Just sign in to the demonstration company and start the Extend Trial Period guide from the notification.
But when I, and many others have also reported this to me last week, try this, it does not work. We all get the same error message: "Sorry, you don't have permissions to extend your trial period."

What's wrong here? Is this a bug?
And to confirm, it's the first time we try this in this tenant.

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

ID: dffd5471-dbdb-80b8-56a5-0d6e921eff9f
Version Independent ID: 9f44b4ef-8069-5747-a78b-a85152996b55
Content: Extend Your Trial Version - Business Central
Content Source: business-central/admin-extend-trial.md
Service: dynamics365-business-central
GitHub Login: @bholtorf
Microsoft Alias: bholtorf

As discussed offline, there was a temporary bug in the system, but that has now been fixed so that administrators can again extend the trial as described. Closing issue.


Add hotkeys for translate text tab

Add hotkeys when focus on page context (user click by page or focus on some element)

Swap languages
Add/remove to dictionary
(optional) play/pause TTS for original text and for translation

Use this hotkeys for translate selected text too?


More representative code for benchmarks

The current benchmarks for parser are based on 3 inputs:

TypeScript compiler's checker
PDF.js
Ant Design

The common factor is that they're all library code.
I wonder if it'd be helpful to add a benchmark which is more representative of application code? (which I imagine is more commonly what OXC is run on)
I'd guess that the composition of app code might be quite different from library code. For example, React app code would (obviously) contain JSX syntax. It'd also likely contain a lot more string literals for text that gets displayed to the user in the UI, where as library code is more likely to be pure logic.
Is there some source for a pseudo-typical React app which can be downloaded from Github or somewhere? I guess the ideal would be a whole app bundled into a single file, but not minified or transpiled - but why would someone publish such a thing?

 For example concatenate all files from ant-design and upload load it to a gist for consumption.

ant-design would be good, but it'd still be library code.
What I was thinking is that a typical website built with e.g. React would contain both rendering logic ("if product is in basket, display tick component") and also content ("These shoes are made from the finest Italian leather blah blah blah").
Library code is generic so will tend to just have the logic part but not much content.
So what I had in mind is to find something like a demo e-commerce React site which would have a mix of product pages which pull data from an API and also some content-heavy pages e.g. landing page, "about us". If it's a demo, probably the original source (complete with untranspiled JSX) would be available.
That wouldn't be totally representative of typical application code (what's typical?) but would be a closer approximation than pure library code.
Does that make sense? Can you think of such a demo site off top of your head?

cal.com is probably a good one >> https://github.com/calcom/cal.com

cal.com is probably a good one >> https://github.com/calcom/cal.com

Nice. For a benchmark, we need to avoid all file IOs, who want's to write a script where we walk the repo, extract all the relevant files, and concat them together?
We can setup a repo for this, so our benchmark can get the file from raw.github.com.

Cool. That is a good example app.
When concatenating, do we need to make sure the result is valid JS? e.g. if 2 files both include import React from 'react'; then concatenating them would produce:
import React from 'react';
// blah blah
import React from 'react';
// blah blah

That'd be a syntax error (redefinition of var React). I'm unclear at what point OXC checks for such syntax errors (not in the parser, as far as I can see).

use declare module '<random id>' ?
we wouldn't be able to do the import plugin. but i think it's ok

If you needed another example beyond cal, Radix’s website is a great example of a React app. Not too big, and contains lots of practical, generic React code (a lot of their code is good reference, actually)

Thanks. That's a nice example of a content-heavy site, to complement cal.com which is more app logic.

OK, I'm going to get on with doing this. I can see 2 ways to approach this:
1. The easy way
Just concatenate the files without alteration. So they'll be invalid JS, as will have duplicate bindings in top-level scope.
This would be fine for benchmarking the parser, but would not be suitable for oxc_semantic, oxc_linter, or anything else which depends on semantic analysis.
If going this route, I would propose writing the scraper as a NodeJS script, as it'll be faster than coding it in Rust.
2. The better way
Even if concatenated sources were "legalised" to rename top-level bindings, I imagine these huge concatenated files would not be an ideal benchmark for oxc_semantic, or anything else which depends on it. Presumably, having a very large number of top-level bindings would slow down searching for the binding for a ReferenceIdentifier, due to increased rate of hash table collisions.
It'd be more representative to run semantic/linter/etc on a series of smaller files.
NB: The existing benchmarks for semantic, linter etc probably already have this problem, as they're using pre-bundled sources. It'd be much more typical in the "real world" for linter to be run on smaller files prior to bundling. The current benchmarks probably are underestimating OXC's real-world performance a bit.
So... alter the benchmark framework to handle running a task on multiple smaller files.
TestFiles I guess would download all the files via GitHub's API on each run. Should be reasonably fast on CI, as data transfer is all within Github's internal network. I doubt there's a risk of hitting API rate limits, but if that turns out to be a problem, maybe CI could be configured to cache the directory of downloaded files. For local dev, downloaded files are cached already.
Questions
Which way should we go?
I actually don't think doing it "properly" (option 2) would be so hard to implement, so my preference is to do that.

I'm going to implement "The easy way" today because we need this urgently.


Patch to 4.1.3

Updates project files to their 4.1.3 equivalent
Updates all dependencies

Pull Request Test Coverage Report for Build 936115322

7 of 9 (77.78%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 75.938%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

app/Controllers/Home.php
1
3
33.33%

Totals

Change from base Build 936065230:
0.0%

Covered Lines:
243

Relevant Lines:
320

💛  - Coveralls


Bump event-listener and event-listener-strategy to v4 and v0.4

Fixes https://github.com/smol-rs/async-broadcast/issues/50
I haven't checked yet whether everything works smoothly on wasm32, and it'll probably take me quite a bit more time to get to that point. But considering the build passes without issues, I'd expect things to be smoother from now on.
Considering AFAICT the changes are internal-only, I think this could be released as 0.6.1 without much troubles.

Thanks so much! We'll go straight to v5, with #48.


Clarify purpose of format_reason_default

Tester feedback:

Not sure where to use this format as DCTREASP is created from derive_disposition_reason. Hence not checked this function

It should be clarified that it is not intended that the function is called directly but that it is used as input to derive_disposition_reason().
A "See also" section should be added, too.

This is also one of the functions without an example as mentioned in #745
I'll make this update in that branch


When will you open the evaluation server to get the dev/test results of an LMM?

Thank you for the impressive benchmark.
When the evaluation server will be available for submitting model results on the dev/test sets?

Thank you for your interest in our benchmark. The evaluation server will be available early next week. Please stay tuned! Thanks!


[FR] Toggling Conversion and Profiles

1 - Toggling All Conversion
On a basic level, I think it would be useful to toggle the conversion of the plugin without having to disable the plugin entirely or delete/comment the conversion rules. Preferably, there is a command (+ hotkey) and optionally a ribbon icon that does this.
It would look something like this (except the toggle is properly aligned :P)

OR

(both implemented without the actual functionality)

2 - Disabling certain types conversion rules
Diving a little deeper, It would be nice to be able to disable certain conversion rules.
And for this, I think it would be something that is toggled through plugin settings.
For it to be more intuitive, it could be available through a GUI by clicking a ribbon icon or another command. I don't think it would be ideal to have a bunch of commands for toggling these individually.

3 - Profiles
Finally, the most ultimate form of this FR is to have profiles. There will be different profiles with their own respective rules. You can switch between them.
In the settings, there will be buttons that act like tabs, and there will be a different editor instance opened for each:

(this is what the tabs would look like (source: sailKiteV's tabs CSS))
Again, there would be a menu (activated by commands or a ribbon icon) that lets you choose/cycle between the different profiles.
Optionally, you can bind commands specifically to switch to a certain profile.
Optionally, they will have their own settings for disabling certain types conversion rules, but tbh this feature isn't all that necessary.

My idea about this is marking different profiles using comments and selecting one of them to apply, like ——

I guess it is easier to implement than managing multiple tabs, but I might be wrong considering my limited frontend experience. 👶
Btw, I'm curious what is the original motivation to have multiple profiles to switch? Can you describe some scenes?

I thought whether if it is possible to detect if you are writing a codeblock. There are some formatting and transformation you don't want to do when you are typing in a codeblock. However, I don't think it is possible for this detection, so I thought of asking for profiles.
Multiple profiles would be especially useful for different scenarios such as when you are in a code block or using latex. When using latex, I want to convert 1/2 into \frac{1}{2}, but normally, I don't want to convert this.
This functionality also gives you flexibility when you are writing different kinds of things. For example, if I want to write a formal text, I would want to convert things like idc into I don't care, but if I am writing in my journal, I want to keep the casual tone.
I think having profiles to switch from will be a lot more flexible than other implementations (such as certain rules will be applied if file has tag, if file is linked to... etc.)
Also, I want to request for "global rules". These are rules that are applied no matter which profile you are in, so you don't need to copy and paste them to every profile.

My idea about this is marking different profiles using comments and selecting one of them to apply, like ——

I guess it is easier to implement than managing multiple tabs, but I might be wrong considering my limited frontend experience.

Honestly, I think this will work well. I think you should focus on the feature, then you can optimize it/style it better afterwards.
Thank you for considering my FR!

2 - Disabling certain types conversion rules
Diving a little deeper, It would be nice to be able to disable certain conversion rules. And for this, I think it would be something that is toggled through plugin settings.
For it to be more intuitive, it could be available through a GUI by clicking a ribbon icon or another command. I don't think it would be ideal to have a bunch of commands for toggling these individually.

For the second item in this FR, I think you could reference the interface of easy typing:

2 - Disabling certain types conversion rules
Diving a little deeper, It would be nice to be able to disable certain conversion rules. And for this, I think it would be something that is toggled through plugin settings.
For it to be more intuitive, it could be available through a GUI by clicking a ribbon icon or another command. I don't think it would be ideal to have a bunch of commands for toggling these individually.

For the second item in this FR, I think you could reference the interface of easy typing:

sry, I don't get it now. What does 'certain types' mean, any examples? Is it an option to comment them out?
In my early understanding, if the third item is implemented, the second item can be ignored. What is the relation between the second and third items?

The idea came up when I thought whether if it is possible to detect if you are writing a codeblock. There are some formatting and transformation you don't want to do when you are typing in a codeblock. However, I don't think it is possible for this detection, so I thought of asking for profiles.

Actually it is possible and easy to detect if you are typing in a codeblock、math block, this is even used in the space-inserting feature. But, I think it is nice to split rules into parts and let users combine/select them freely. Also, I'd like to take the opportunity to implement this feature and learn a little bit about frontend frameworks :D

Also, I want to request for "global rules". These are rules that are applied no matter which profile you are in, so you don't need to copy and paste them to every profile.

Yeah, this is reasonable.

2 - Disabling certain types conversion rules
Diving a little deeper, It would be nice to be able to disable certain conversion rules. And for this, I think it would be something that is toggled through plugin settings.
For it to be more intuitive, it could be available through a GUI by clicking a ribbon icon or another command. I don't think it would be ideal to have a bunch of commands for toggling these individually.

For the second item in this FR, I think you could reference the interface of easy typing:

sry, I don't get it now. What does 'certain types' mean, any examples? Is it an option to comment them out? In my early understanding, if the third item is implemented, the second item can be ignored. What is the relation between the second and third items?

Actually, you're right :rofl:. I think this feature would just clutter the plugin and make it more confusing :P. So please don't implement it.

Hi @caasion, please take a look at #52 , I have implemented profiles. It would be nice if you can help testing it.
Oh, don't forget to copy the new styles.css after building the plugin

#56 and #57 were done.


Extract catalog entries by key

In vanilla Intake and Intake-xarray, users access datasets through the Entry class and the to_dask (or to_xarray), e.g:
import intake
cat = intake.open_catalog('catalog.yml')
cat['key1'].to_dask()

Or for nested catalogs,
cat['key1.key2'].to_dask()

It would be nice if single aggregated datasets can be accessed in the same pattern:
cat['CMIP.CCCma.CanESM5.historical.Ofx.gn'].to_xarray()
# is equivalent to
cat.to_datasets_dict(...)['CMIP.CCCma.CanESM5.historical.Ofx.gn']

It may be worth thinking about using the Entry class more explicitly to allow for more intake-like behavior in this way.

@andersy005 - do you have thoughts on if/how this should be done?
I think the target implementation implementation should include:

Addition basic dict methods (e.g. keys(), __len__(), __getitem__() )
__getitem__ returns Entry objects
__getitem__ accepts full and partial keys.

Full key (e.g. 'CMIP.CCCma.CanESM5.historical.Ofx.gn' == '.'.join(cat.df.iloc[0].to_list()[:-2]))  returns a single Entry
Partial key (e.g. CMIP.CCCma.CanESM5.historical.Ofx) returns a new catalog subselected to match provided keys.

Abstract aggregate Entry. This would essentially provide the functionality used in the current to_dataset_dict().

cat.aggregate() would return a new catalog (probably a new class) with Entry objects that included a mergable set of datasets (one key per set)
this would allow users to opt in to aggregation/merging while still providing catalog functionality for individual datasets.

@jhamman

@andersy005 - do you have thoughts on if/how this should be done?

I haven't looked into this yet. However, I'm about to start playing with the Entry class approach. I will let you know how it goes, and will ping you when I need help


Use shared project for shared pubsub topics and subscriptions

Motivation and Context
RM doesn't 'own' the topics and subscriptions which are used to integrate between other products... and as such, they should be kept in a shared project.
What has changed
Use our own project only for internal messaging, otherwise use a shared project.
How to test?
Build Case Processor and Support Tool, then start everything up in docker dev with make up and then run the acceptance tests with make test... should be zero regression.
Links
Trello: https://trello.com/c/yPZ72ten

 Spike: investigating pubsubbing across two different projects (2 days)


Update scene on MaterialX node graph update

PURPOSE
Added scene update on MaterialX nodes edit with active Viewport render.
EFFECT OF CHANGE

fixed issue with regular Blender material update in viewport;
added scene update on MaterialX nodes edit with active Viewport render.

TECHNICAL STEPS

ignored non-MaterialX node trees(USD tree could be assigned as one in UI) during material export;
called for material users re-export to correctly apply updated material;
added scene update handling for MaterialX node tree update;
simplified scene updates info filtering.

NOTES
Calling for viewport scene update on MaterialX node tree structure change would be done as a separate PR.

Closed for requested rework


Unable to load the Logic App Designers window

Describe the Bug with repro steps
I encountered several errors while using Visual Studio Code. Here are the details:

Connection Error: I received the following error message: No connection could be made because the target machine actively refused it. (<IP_ADDRESS>:10000). This error occurred across Azure.Core, System.Net.Http, and System.Net.Sockets.

Blob Storage Error: There was an error performing a read operation on the Blob Storage Secret Repository. The exact error message was: There was an error performing a read operation on the Blob Storage Secret Repository.

Undefined Property Error: I encountered an error stating Cannot read properties of undefined (reading 'credentials2').

What type of Logic App Is this happening in?
Standard (VSCode)
Are you using new designer or old designer
New Designer
Did you refer to the TSG before filing this issue? https://aka.ms/lauxtsg
Yes
Workflow JSON
{
  "definition": {
    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
    "actions": {},
    "contentVersion": "<IP_ADDRESS>",
    "outputs": {},
    "triggers": {}
  },
  "kind": "Stateful"
}

Screenshots or Videos
No response
Browser
chrome
Additional context
10:25:49 AM: Error: Cannot read properties of undefined (reading 'credentials2')
For detailed output, run func with --verbose flag.
[2024-08-06T04:55:44.052Z] Failed to start a new language worker for runtime: node.
[2024-08-06T04:55:44.053Z] System.Private.CoreLib: A task was canceled.
[2024-08-06T04:55:44.764Z] Worker process started and initialized.
[2024-08-06T04:55:44.010Z] Failed to start a new language worker for runtime: node.
[2024-08-06T04:55:44.010Z] System.Private.CoreLib: A task was canceled.
[2024-08-06T04:55:47.266Z] Host lock lease acquired by instance ID '0000000000000000000000006BC66BB1'.
10:25:49 AM: Error: Cannot read properties of undefined (reading 'credentials2')
Value cannot be null. (Parameter 'provider')
Value cannot be null. (Parameter 'provider')
10:28:21 AM: Stopping Design Time Api
Creating temporary folder… C:\Users\MOUNES~1.PAT\AppData\Local\Temp.azurelogicapps\FuncCoreTools
Downloading dependency from: https://github.com/Azure/azure-functions-core-tools/releases/download/4.0.5907/Azure.Functions.Cli.win-x<IP_ADDRESS>07.zip
Successfullly downloaded FuncCoreTools dependency.
Extracting C:\Users\MOUNES~1.PAT\AppData\Local\Temp.azurelogicapps\FuncCoreTools\FuncCoreTools.zip
10:30:33 AM: Timeout: validateFuncCoreToolsIsLatest
10:33:50 AM: Retrying: validateFuncCoreToolsIsLatest
FuncCoreTools Binaries: C:\Users\Mounesh.Pattar.azurelogicapps\dependencies\FuncCoreTools

Hi @Mounesh1881 thanks for raising this issue. I haven't seent the first 2 errors before

First one might be related to a different extension since its trying to connecto to a remote computer or machine.
Second one I don't have any idea on this
Third one is about not being abe to retrive the credentials from your subscription. We use the credentials to be able to load the desinger with azure connectors.

Is there any popup or warning message requesting you to sign in?
Can you try to sign in using the following command from the command palette? Please make sure is the command azure-account.login

thank you so much it is working now.


Telegram webhook error when commit message contains special characters

Description
Telegram webhook respond an error code 400 when commit message contains special characters.
Example message:
{
  "text": "[\u003ca href=\"https://git.example.com/babykart/et0ie\"\u003eKubler/et0ie\u003c/a\u003e:\u003ca href=\"https://git.example.com/babykart/et0ie/commit/6e873e503dd22aa4bf5e577bc9aa348e7b842cf7\"\u003emain\u003c/a\u003e] 1 new commit\n[\u003ca href=\"https://git.example.com/babykart/et0ie/commit/6e873e503dd22aa4bf5e577bc9aa348e7b842cf7\"\u003e6e873e5\u003c/a\u003e] [et0ie] caddy-24.05.301\n\nSigned-off-by: babykart<EMAIL_ADDRESS>- babykart",
  "parse_mode": "HTML",
  "disable_web_page_preview": true
}

Response:
{"ok":false,"error_code":400,"description":"Bad Request: can't parse entities: Unsupported start tag<EMAIL_ADDRESS>at byte offset 326"}

These messages perfectly work with the version 1.21.11.
Gitea Version
1.22.0
Can you reproduce the bug on the Gitea demo site?
Yes
Log Gist
No response
Screenshots
No response
Git Version
2.45.1
Operating System
Gentoo Linux
How are you running Gitea?
Downloaded from https://github.com/go-gitea/gitea/releases/download/v1.22.0/gitea-1.22.0-linux-amd64
Database
PostgreSQL

https://github.com/go-gitea/gitea/pull/29864
That fix broke it.

Hmm, a PR approved by me .... so let's fix it :  Use old behavior for telegram webhook #31588

" Use old behavior for telegram webhook #31588 " has been merged, when the next 1.22-nightly build is ready, please take a try.


Split lesson 04 dataframes into seven pieces

Just FYI: At least one of these added notebooks has a build error (missing import), and the split-out sections need to be added to the table of contents. I'll go through it; (but certainly let me know if this is no longer wanted).


[Discussion] Apps: Actions / Events / Notifications

During the last public meeting it was discussed that there is a concept for apps that isn’t properly covered by the intended APIs & Filter mechanism.
Filters are for changing the behaviour, input or output of Ghost in some way by hooking into data, settings, etc and changing (filtering) the information in some way. A good example being filtering the meta data provided by the {{ghost_head}} helper.
The data API allows Apps access to the CRUD methods of the JSON API.
However, it is considered that Apps may also wish to hook into, or be notified of when an event happens in Ghost - for example when a new post is published. These are ‘Fire and Forget’ notifications where there is no guarantee or knowledge of when all apps have finished responding, and no concept of priority (filters provides both these things).
In WP there is the concept of filters (again for changing data) and actions which are like events but PHP. In JavaScript we have real events.
The first question is shall we call this feature Actions, Events or Notifications?
The second is how to implement it, and what to do about considerations like permissions? Do these things still have enough information (i.e. what the current user is) to have access to things which require permissions?
Thoughts on a postcard please :)

Temporarily closing all of the app specific issues (tagged with later). Will review & reopen those that are still relevant when we kick off that project, which should be shortly after Zelda lands.


how can I stop test suite when an assertions fails?

What are you trying to achieve?
stop tests when an assertion fails
What do you get instead?
my tests are keep running
Details

CodeceptJS version: ^1.2.0
NodeJS Version: v10.9.0
Operating System: windows 10
Configuration file:

{
  "output": "./test/output",
  "helpers": {
    "Puppeteer": {
      "url": "http://some-dev-url",
      "show": true,
      "windowSize": "1600x1200",
      "chrome": {
        "ignoreHTTPSErrors": true
      }
    }
  },
  "include": {
    ...
  },
  "mocha": {},
  "bootstrap": false,
  "teardown": null,
  "hooks": [],
  "tests": "./test/acceptance/*_test.js",
  "timeout": 10000,
  "name": "name"
}

Still nothing on this?
I have a preparation step, which must either succeed or if failed prevent all further steps. Is it possible to achieve?
assert.fail() didn't work

Found that for my case I can put preparation steps inside BeforeSuite(). If an exception is thrown there it will interrupt further execution.


Multicast?

From what I can tell no Z-Wave library supports multicast. They all support single-cast and possibly broadcast for the SwitchAll command class.
The SwitchAll command is useful for things like turning off all the lights in the house. You configure each device in how it responds to SwitchAll On or SwitchAll Off. You could configure your lights to respond to both On and Off but have your ceiling fans only respond to Off.
SwitchAll is not useful in other contexts, like turning off the lights downstairs vs upstairs because devices have to be individually preconfigured.
However, broadcast does support other command classes. It's just dangerous to send a blanket broadcast. For example, my Garage Door opener uses a relay that uses the BinarySwitch command class. If I were to send "BinarySwitch On" as a broadcast not only would my lights and fans turn on, but my Garage Door would also open. Not good.
But from what I can gather you can add a multicast filter to the header that limits which devices respond to the message. The message is still sent to all devices and is un-routed, but you can specify which devices actually respond.
I'm currently working on a personal project that ties my Z-Wave network to HomeKit. From what I can gather when you issues a command like "Hey Siri, Turn Off all the lights downstairs" (zone) HomeKit will send set characteristic data for each device in one HTTP command to the responsible Accessory. The HomeKit libraries currently parse that and send it to each Service making it difficult to know if it was a match command or individual... But it is possible to modify it to batch the changes.
What I want to do is if a batch is detected, send a multi-cast message instead to turn on/off the particular devices and then follow up on status after the fact.
Do you know how this could be done protocol wise? I've been reading docs, but the actual implementation is kind of fuzzy.

I just took a look into the documentation that I have (and that you can find in the specs directory in this repo).
You want to use the SendDataMulti command, which can be found here on page 111. The difference to a normal SendData command is that the node ID is replaced with a variable-length bitmask (I would assume the LSB is node 1).

What's the difference between SendDataMulti and SendDataMulti_Bridge?
Is there an actual library that can be used that matches these headers?

I haven't concerned myself with the Bridge API yet and I'm not sure what the prerequisites for that are. As far as I understand, a Bridge Controller connects two networks and acts as a repeater, hence the additional source node id in the commands.
All this library does (and what I can test) is talk to a static controller (e.g. USB stick) using the serial API, so I've disregarded all bridge/portable/slave APIs.

Is there an actual library that can be used that matches these headers?

Do you mean if there is an implementation which uses this method? I can add support for SendDataMulti here - it doesn't seem to require too much work.

As far as I understand, a Bridge Controller connects two networks and acts as a repeater, hence the additional source node id in the commands.

Ah, sorry I think I'm getting terminology confused. In HomeKit a Bridge is a common device that controls multiple devices. I was thinking about the controller in terms of that.

Do you mean if there is an implementation which uses this method?

Yeah does Silicon Labs have an actual implementation? I've seen header files that seem to indicate an implementation, but I've never actually seen it.

I can add support for SendDataMulti here - it doesn't seem to require too much work.

That would be amazing! I'm in the process of updating the HomeKit library to allow batch updating.

Yeah does Silicon Labs have an actual implementation?

I think so, at least the specification PDFs let it seem like it. I don't have that though - I started by looking at OZW and then googling all the specification files I've collected. It might be that the implementation comes with the developer hardware kits.

https://www.silabs.com/products/development-tools/wireless/mesh-networking/z-wave
I'm assuming this is it? What's the difference between 500 and 700? I thought I remembered seeing a post somewhere about the 700 kit not including the SDK. So I'm guessing the 500 controller kit would be most relevant?
Source code would be amazing, but even having an official binary would be useful for testing I/O. I also wonder what the terms are in regards to open source projects.
If we had to get the controller kit ($1000!?) we could probably split the cost up. Although we'd have to be sure it was a for-sure benefit and we weren't violating any terms.

I'm not interested in buying controller kits. So far I've been doing fine with the specs - most headaches came from the external devices which sometimes have... let's call it "interesting" behavior.

@lukescott The PR for multicast support is up - I'll merge pretty soon. The changes were a bit larger than expected, but mainly because I used the opportunity to do some refactoring I've wanted to do for a while.


Standalone mode. Error message element: can not calculate valence on C, charge 0, connectivity 10 on saving Hydrogen

Steps to Reproduce

Open Ketcher in Standalone mode
Add Hydrogen bond to the canvas
Click Save

Expected behavior
The structure is saved without any errors
Actual behavior
Error message element: can not calculate valence on C, charge 0, connectivity 10
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Browser Chrome Version 93.0.4577.63, Firefox Version 94.0.1, Microsoft Edge Version 93.0.961.47

https://github.com/epam/ketcher/issues/1008