Preventing front matter and custom syntax from rendering in WYSIWYG mode

Summary
The Toast UI Editor is awesome and we've begun to use it at GitLab. I'm currently exploring options for how we can prevent certain portions of a source file from being edited in WYSIWYG mode. For example:

Simple = raw markdown file (.md solved automatically)
Complex = mixed languages (.html.md.erb example here)

Context
You can view additional context in this issue but I'm currently under the impression that a custom HTML renderer is the way to go.
Questions

Do any approaches other than the custom HTML renderer come to mind?
I'd imagine preventing frontmatter from being edited in the WYSIWYG mode would be a common expectation. Do you know of an existing solution or custom HTML renderer that prevents frontmatter from rendering in WYSIWYG mode?
Can you point us to any existing open source custom HTML renderers that others have created? These would be great learning resources and/or jump-off points.

Thank you
Thank you in advance for any feedback and hopefully we can contribute back to Toast UI Editor as we make progress. For example if #2 above doesn't exist already, I'd imagine others would find such a custom renderer useful.

@derek-knox I checked the mail before this issue. 😅 I think you have already checked the contents of the mail, but I'll put it back together for issue management. Then I would be grateful if you could confirm the email or issue and reply. 🙏

We've checked your detail issue and summarized as below.

Make specific contents uneditable in WYSIWYG.

Header (Frontmatter)
The specific contents of the body
However, we have two problems for solving the above issue.

The Frontmatter is not commonmark spec we follow. So the Frontmatter would be parsed in our markdown preview as heading node.

We think that this issue cannot be solved through our custom renderer. As long as we follow the commonmark, even if we prevent to render the Frontmatter through a custom renderer, it would not match the parsed result and side effects could occur.
=> As Frontmatter is the meta information, we think that it's better not to show this information in both markdown preview and WYSIWYG. It should be displayed in only markdown editor. So, we need to make a plug-in for Frontmatter and discuss about more detail things.

Currently, We don't have the efficient option or API for preventing the specific content in WYSIWYG.
=> To solve this issue, we should discuss about providing other option and after then we can give you the exact answer and guide.

And here is feedback for your question.

Do any approaches other than the custom HTML renderer come to mind?

I'd imagine preventing frontmatter from being edited in the WYSIWYG mode would be a common expectation. Do you know of an existing solution or custom HTML renderer that prevents frontmatter from rendering in WYSIWYG mode?
=> As mentioned above, Frontmatter needs to be handled through plug-in system due to not in commonmark spec. So we will make the plug-in and option for WYSIWYG.

Can you point us to any existing open source custom HTML renderers that others have created? These would be great learning resources and/or jump-off points.
=> Currently, the example code does not exist except our tutorial guide. I don't know if it helps, but here's the format we use internally.

To solve the issue, we need the time for discussing and developing the feature.

@seonim-ryu Let's keep the conversation here vs email. Thank you for responding and adding clarity, we really appreciate it!
My takeaways from your response are:

So, we need to make a plug-in for Frontmatter and discuss about more detail things.... So we will make the plug-in and option for WYSIWYG.

Feel free to @ me as you make progress on the plugin approach as (for now due to time constraints) we'll be opting to pre-parse and manually remove the frontmatter from the WYSIWYG mode

To solve this issue, we should discuss about providing other option and after then we can give you the exact answer and guide.

My takeaway from this response is that the custom HTML renderer approach (as there aren't any pre-existing) is the best approach, can you confirm?

Currently, the example code does not exist except our tutorial guide. I don't know if it helps, but here's the format we use internally.

Thank you for sharing this as I'll be using both as guides.

@derek-knox Thanks for the reply. I checked the issue again through your issue link. I've figured out what features and problems you solve, and I think the following two things.
1. Frontmatter Issue
I saw a discussion on this in the link above. Frontmatter can be handled by other parsers (e.g. gray-matter). I think it's a good idea and the TOAST UI Editor will consider this method when creating the Editor's plugin. When I start creating the plugin, I'll share the progress on it.
2. Custom Renderer
At first, I misunderstood your issue. After all, the feature you want is that a node created using a custom renderer are inserted into specific body content (WYSIWYG) with contenteditabl="false". In order to handle it, the contenteditable attribute must be added to a specific node. However, currently the attribute in paragraph is not applied to WYSIWYG due to our internal code which is wrapping the paragraph in the div block. When this issue is fixed in the Editor, you can define the contenteditable attribute through a custom renderer as shown below.
const renderer = {
  paragraph(node, { origin }) {
    const regexp = /(<%.*%>)|({:toc.*})/;
    const result = origin();
    const { firstChild } = node;

    if (regexp.test(firstChild.literal)) {
      const { attributes = {} } = result;

      attributes.contenteditable = false;
      result.attributes = attributes;
    }

    return result;
  }
}

const editor = new Editor({
  // ...
  customHTMLRenderer: renderer
})

In case of the second issue related to the custom renderer described above, I will try to resolve it as soon as possible. The next version of the Editor will be released in mid-June, and we are going to fix this issue. Is there any problem with your schedule?

@seonim-ryu

...When I start creating the plugin, I'll share the progress on it.

Please do :) Currently we're solving by:

Tracking and dynamically updating a parsedSourceFile object
Which then delagates to <toast-editor>'s initial-value prop
Where an onModeChange listener is our hook for knowing when to feed the aforementioned initial-value the entire raw contents (markdown mode) or just the parsed out body (wysiwyg mode)
Lastly when we save, we ensure that any updates to the body model of the parsedSourceFile object are reflected in the raw

I initially thought we could just use v-model but it turns out that initial-value is instead used in the <toast-editor>. This made sense after I got into the code as the editor needs to internally manage the value model and cursor focus.

If my understanding is incorrect and you know a better way, please share!
If you have a rough pseudo-code implementation for how you plan to solve the removing front matter from WYSIWYG problem then please share as well

When this issue is fixed in the Editor, you can define the contenteditable attribute through a custom renderer as shown below.

Are you saying that until the mid-June release (awesome by the way :)) a custom renderer cannot properly update a node's attributes to contenteditable = false? It look as thought this is currently possible with this approach https://github.com/nhn/tui.editor/blob/master/apps/editor/docs/custom-html-renderer.md#opentag. Assuming it is currently possible, could you please explain which issue exactly you're referring to in your "When this issue is fixed in the Editor" comment?

@derek-knox

...
I initially thought we could just use v-model but it turns out that initial-value is instead used in the <toast-editor>. This made sense after I got into the code as the editor needs to internally manage the value model and cursor focus.

If my understanding is incorrect and you know a better way, please share!
If you have a rough pseudo-code implementation for how you plan to solve the removing front matter from WYSIWYG problem then please share as well

I looked at the code review of the link you gave, and it seems to work fine the way you wrote it, and in the current situation, the way you write is correct. Consider using v-model in the Editor's Vue wrapper to manage data internally. And the pseudo-code related to frontmatter have not been specified yet, so I will share them after the Editor is released.

...
Assuming it is currently possible, could you please explain which issue exactly you're referring to in your "When this issue is fixed in the Editor" comment?

Currently, adding the contenteditable attribute in the custom renderer is fine. The problem is that the contenteditable attribute you set when you change from Markdown to WYSIWYG mode disappears. So we solved this problem in PR, and when this PR is merged, the element with contenteditable="false" works correctly in WYSIWYG.

@derek-knox The Editor was released in version 2.2.0 yesterday. Now you can set the attribute to contenteditable="false" when using the custom renderer, and it has been modified to work properly when you switch to WYSIWYG mode. Check it out!
And plug-in development will start soon. When the schedule is confirmed, I will notify you again. 😃

@seonim-ryu Thank you for the update. I'll look into the new release. I appreciate you keeping us in the loop 😄

@seonim-ryu

I think it's a good idea and the TOAST UI Editor will consider this method when creating the Editor's plugin. When I start creating the plugin, I'll share the progress on it.

Do you have an update on this?
Do you mind sharing the rough approach you plan for this? I ask, as we may be able to do this work assuming our end goals for such a feature align. For context, we want:

Frontmatter to be present in markdown mode editing
Be hidden from WYSIWYG mode editing and instead have a dedicated UI component/form (with input fields, checkboxes, etc). Some rough context on this here https://gitlab.com/gitlab-org/gitlab/-/issues/231725#note_388328042

@derek-knox I checked the issue details you shared. Although the exact completion date has not been determined, development of the plugin for frontmatter is scheduled to begin in mid-August. I think we can plan the development schedule in detail if we need to accurately calculate features. I'll organize this and share it within this month. Is there anything else you need in addition to the above 2?

Frontmatter to be present in markdown mode editing
Be hidden from WYSIWYG mode editing and instead have a dedicated UI component/form (with input fields, checkboxes, etc). Some rough context on this here https://gitlab.com/gitlab-org/gitlab/-/issues/231725#note_388328042

@seonim-ryu Those two bullet points above are the core needs, but you can learn more here: https://gitlab.com/groups/gitlab-org/-/epics/4119#acceptance-criteria.
Regarding my previous "Do you mind sharing the rough approach you plan for this?" ask can you share your rough high-level technical plan?

@derek-knox
Sorry for late replying.
We are planning to develop our front-matter plugin or option and start to develop today as below.

Create the option for parser that can be injected from outside in our markdown parser(toastmark).

This is necessary for not only the front-matters but also for other custom syntax(markdown), so we will review and add this option. It is an important part of our next major update.

Using node(front-matter) created through custom parser, control rendering of WYSIWYG, markdown preview.

Currently, we think that front-matter should be hidden in WYSIWYG, markdown preview because it is unnecessary in WYSIWYG editor, preview.

The issue is that front matter text cannot be stored in WYSIWYG mode so that we will save the raw front-matter text internally.(In next version, it can be stored in our WYSIWYG model.)

Additional, We consider only the yaml format as below.
---
title: title
---

Thank you!

@derek-knox
We added frontMatter option(#1171) and release it in v2.4.0.
I will explain about a few things as below.

The front matter is supported by configuring the option because there are a lot of related layer to make it hard to separate as plugin. Also, since it is not an official specification of commonmark, we decide that it is better to provide it as an option like gfm.
The front matter is parsed into the paragraph with customType prop using our custom parser.
It is hidden in the markdown preview or viewer mode.
We decided to show the front matter in WYSIWYG. This is different from what I said before, for the following reasons.
The purpose of our editor is the synchronization between Markdown and WISYWIG. Therefore, if it is editable in Markdown, it should also be editable in WISYWIG as below.

You can have a question that WISYWIG should provide a different format for editing front matter, but we think it is something that needs to be planned and solved later.
What you wanted at first was to prevent to edit the front matters in WISYWIG. This can be solved through the following example code.

const editor = new Editor({
  el: document.querySelector('#editor'),
  // ...
  frontMatter: true,
  customHTMLRenderer: {
    paragraph(node, { origin, options }) {
      const { customProp = {} } = options;
      const showFrontMatter = customProp.showFrontMatter && node.customType;
      const attributes = {};

      // prevent to edit the front matter in WYSIWYG
      if (showFrontMatter) {
        attributes.contenteditable = false ;
      }
      return { ...origin(), attributes };
    },
  }
});

Additionally, there are some issues that cannot be implemented in our current structure such as markdown custom syntax and exact synchronization between WISYWIG and Markdown. And front matter options needs supplement(syntax highlighting, internal logic for switching to WISYWIG). To solve these problems, we are currently planning to rebuild the editor completely in the next major version and are already in progress. I will register the related information on next week, so if you are interested, please give me your opinion! Thank you :)

Hi,
Toast UI is supercool! We are trying to integrate it for our physicians at https://projectvikram.github.io
Which version should we use for the above fix ?
We are facing an issue importing GFM markdown with inline HTML! On encountering any HTML tag other than  the entire content vanishes. Verified by switching between markdown and wysiwyg modes manually too.
      const Editor = toastui.Editor;
      const wysiwyg = new Editor({
        el: document.querySelector('#editor'),
        height: '500px',
        initialValue: 'Loading...',
        initialEditType: 'wysiwyg'
      });

       mycont = '# Head 1\\n### Head 3\\nPara       Word'; // works
       //mycont = '# Head 1\\n### Head 3\\nPara       Word
'; //does not work - entire content vanishes
       wysiwyg.setMarkdown(mycont,0);

We are using toastui-editor.min.css with toastui-editor-all.min.js from "latest".  Meanwhile I will experiment with the custom renderer example above.
Regards,
Abhishek


Crash with Custom Type Deserializer

This code crashes with serde_yaml, but not with serde_json. The original example for this code was here
use serde::ser::SerializeMap;
use serde::{Serialize, Serializer, de::Visitor, de::MapAccess, Deserialize, Deserializer};
use std::fmt;

#[derive(Debug)]
struct Custom(String, u32);

impl Serialize for Custom {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        let mut seq = serializer.serialize_map(Some(2))?;
        seq.serialize_entry("first", &self.0)?;
        seq.serialize_entry("second", &self.1)?;
        seq.end()
    }
}

impl<'de> Deserialize<'de> for Custom {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
        where
            D: Deserializer<'de>
    {
        //deserializer.deserialize_any(CustomVisitor)
        deserializer.deserialize_map(CustomVisitor)
    }
}

struct CustomVisitor;

impl<'de> Visitor<'de> for CustomVisitor {
    type Value = Custom;

    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
        write!(formatter, "a map with keys 'first' and 'second'")
    }

    fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
    where
        M: MapAccess<'de>
    {
        let mut first = None;
        let mut second = None;

        while let Some(k) = map.next_key::<&str>()? {
            if k == "first" {
                first = Some(map.next_value()?);
            }
            else if k == "second" {
                second = Some(map.next_value()?);
            }
            else {
                return Err(serde::de::Error::custom(&format!("Invalid key: {}", k)));
            }
        }

        if first.is_none() || second.is_none() {
            return Err(serde::de::Error::custom("Missing first or second"));
        }

        Ok(Custom(first.unwrap(), second.unwrap()))
    }
}

fn main() {
    let stru = Custom("lala".to_string(), 123);
    println!("Orig {:?}", stru);

    let serialized = serde_yaml::to_string(&stru).expect("err ser");

    println!("Seri {}", serialized);

    let unse : Custom = serde_yaml::from_str(&serialized).expect("err unser");
    println!("New {:?}", unse);
}

Error message:
thread 'main' panicked at 'err unser: Message("invalid type: string \"first\", expected a borrowed string", Some(Pos { marker: Marker { index: 4, line: 2, cker { index: 4, line: 2, col: 0 }, path: "." }))', src\main.rs:75:59
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Seems to work for me. Here is the output I get:
Orig Custom("lala", 123)
Seri first: lala
second: 123

New Custom("lala", 123)

In case it helps anyone who comes across this issue, I was having the same error reported in this issue, and it turned out that I was using serde_yaml 0.8 (because that was what was listed in the example I was starting from).  Upgrading to serde_yaml 0.9 fixed the problem.


feat: sideEffects false

closes https://github.com/chartjs/Chart.js/issues/10284
The problem was what Rollup was applying sideEffects: false to test build for Karma, which has side effects.
NOTE: need to merge https://github.com/chartjs/Chart.js/pull/10504  and https://github.com/chartjs/Chart.js/pull/10525 first

Isn't that the same build that would end up in cdn? If tests needs. treeshake: false, then the umd build would not be complete, right?

@kurkle Yes. But here they marked as files with side effects.

I committed the dist/chart.js to a test repository for a diff. This is what changes on the output with these additions:
https://github.com/kurkle/chart-test/commit/df9562b9fcdbae96c7827d7c23a6fc38d395f5ea

@kurkle Sorry. Fixed. I missed that we have one file with side effects in src.

If you are worried about that side-effects from "core.scale.defaults" will every time in the bundle, I can calm down you: in PR with tree-shaking this problem is solved, you can test it on my test bench.

It's not true. defaults.set code will always be in the user's bundle because it is a side-effect.

Maybe we should just point to the entry in src/ or copy them from src/ to dist/ if needed

It will not help.

Is there a way that we can set the defaults in a side-effect free manner so that we don't have to include either file regardless?

I will try to make it

I will try to make it

I think it doesn't make sense because this code will be in a bundle in most cases anyway.

@kurkle Could you please restart CI? It has strange error.

@kurkle Could you please restart CI? It has strange error.

Restarted, though it might be due to other merges. Maybe a rebase is needed.

master:

"refactor: apply defaults by pure way":

If you don't mind waiting a little bit, I'll send an alternative idea for review and we can decide which approach we might want to take. I'll do that in the next few hours

I started on making animations optional here: https://github.com/chartjs/Chart.js/pull/10574. After digging into the code, it looks like this won't necessarily conflict with that work, so we could probably merge this and then I can just build on top of it


duckdb HUGEINT is represented using Decimal datatype and Uint32[] values in the resultset

What happens?
Querying a SUM on a Bigint value results in duckdb wasm returning the data using a Decimal field type and Uint32[] values, while the DESCRIBE query on the statement indicates the SUM (bigint) expression would result in a DuckDB HUGEINT. It was expected that the duckdb HUGEINT would be returned as javascript BigInteger
It was expected that
To Reproduce

instantiate duckdb and register the parquet file:

https://static.data.gouv.fr/resources/populations-legales-communales-2017-2021/20231228-135143/poplegales2017-2021.parquet

get a connection and run the following script to verify what duckdb thinks the type info is:

  var sql = 'SELECT MIN( PMUN ),  SUM( PMUN ) FROM "poplegales2017-2021.parquet"';
  var row, describeResults = await connection.query(`DESCRIBE ${sql}`);

  row = describeResults.get(0);
  // column type is BIGINT as expected
  console.log(row.column_type);
  row = describeResults.get(1);
  // sum type is HUGEINT (which makes sense)
  console.log(row.column_type);

run the actual query to see the runtime types and values returned by the query:

  var field, dataResults = await connection.query(sql);
  row = dataResults.get(0);

  field = dataResults.schema.fields[0];
  // field type is BigInteger, as expected
  console.log( field.type );
  // value type is bigint as expected
  console.log( row[field.name] );

  field = dataResults.schema.fields[1];
  // field type is Decimal. Expected: BigInteger
  console.log( field.type );
  // value type is Uint32Array. Expectd: javascript BigInteger
  console.log( row[field.name] );

Observe that while the first column behaves as expected, the second does not: it represents the duckdb HUGEINT with a Decimal datatype and returns the value as Uint32[4] array.
The Decimal type in the field also does not seem to offer any methods to process this value and don't understand how it is expected for the client to process the result.

Browser/Environment:
Version 120.0.6099.130 (Official Build) (64-bit)
Device:
Windows 11 Desktop
DuckDB-Wasm Version:
1.28.0
DuckDB-Wasm Deployment:
https://cdn.jsdelivr.net/npm/<EMAIL_ADDRESS>Full Name:
Roland Bouman
Affiliation:
EPAM Systems BV Netherlands

Screenhot showing script output in the browser console.

After reading up a little I believe I understand now what is happening.
Duckdb wasm uses arrow data types, and there does not seem to be a 128 bit wide Arrow integer flavor.
So, it uses the next best thing which is a decimal with zero decimals, and unfortunately that means the actual value is represented as a Uint32 array because that's just what arrow does.
My initial idea that a javascript bigint was expected because that could easily handle the duckdb HUGEINT type is irrelevant as the arrow interface is leading here, not the fact that the value could have been conveniently represented by bigint.
As for processing the value, String(value) or value.toString() will return a string representation of the intended numerical value and this should then further be handled by the client.
My conclusion now is that this is not a duckdb wasm issue. I'm sorry for bothering.


Statically build gRPC with embedding libprotobuf

I need to build a static version of gRPC library so that it can be used in another application without the need of libprotobuf.so. I mean, we be able to just include libgrpc++.so in our application build command.
Thanks in advance

I'm interested too

You can get a statically link monolith two ways:

use bazel
use cmake with the right options so that everything is linked statically.


Possible to close drawer on configuration toggle?

In the leafy app, we have a configuration inside a drawer. We want to close the drawer when the configuration is toggled. Is there anyway to achieve this?

@HansMuller or @Hixie would know.

Not sure I understand the situation, but ping me at the office and I'll see what I can do to help.

Thanks! pop actually solves the problem

route.pop is a non-obvious solution in this case -- opening the app drawer doesn't traditionally seem like an action that would change the app routing state.  Can we get clarification on why this is the case?

Opening the drawer is very much a route. You can tell because hitting the back button on Android closes it. (It's an entry in a LocalHistoryRoute, to be precise.)

but yes, we should document this better

That's very interesting.  Our native Android app does not close its drawer with the back button, hence my previous comment.  Looking at other material apps, they are in agreement with you.
Thank you for the clarification!


Referencing Table Inside a Schema

I'm working with a database that has multiple schemas. I'd like to get a DataFrame from the table "Reference"."Date".
When I run list_tables(conn), I get "Date" in the list of tables, but when I run, read_table(conn, "Date"), it errors because there is no such table. And when I try "Reference.Date" or ""Reference"."Date"", I get an error because table_name can only have alphanumeric characters (I think it is erroring on the period).
I'm relatively new to Julia and TableIO, so I'm sure I'm just missing something. I'd appreciate any help getting a solution for this.

Thanks for reporting!
There is an explicit check for valid characters in table names, now it also allows dots.
Please let me know if your issue persists in the new version which will be released shortly.

Thanks for working on this!


Fix docs root redirect

Motivation
Visiting https://frontside.com/interactors redirects to https://frontside.com/interactors/interactors.
Approach
Move the old interactors page to the index.

This looks good, but I'll defer to @jorgelainfiesta and @minkimcello for final approval. Things I've noticed:

We still have a CTA to sign up for the BigTest email list. Do we want to have that?
In the "why interactors" section, we should have a link to existing interactors piece.
Should the "Beta" tag be on Interactors, not Docs? It feels like the docs are beta
We have great typedoc for interactors. We should begin to render it.

Removed BigTest newsletter form. We can tackle other design and content pieces next week, after merge.


[Feature Request] Build and Publish Maestro CLI executable for Chocolatey on Windows x64

Is your feature request related to a problem? Please describe.
According to the Maestro docs, you need to install the CLI tool via WSL2. So effectively there is no native Windows support for the CLI tool.
Describe the solution you'd like
Maestro CLI tool is packaged for Windows x64 and published on Chocolatey package registry for easy install.
Describe alternatives you've considered
The current WSL2 install method works but it is tedious and a huge barrier to entry for getting non-technical testers to get up and running with Maestro on their Windows computers.
Additional context
It appears Maestro CLI is built on Pico CLI, is there any reason why the executable has not been built for Windows x64 yet? Resources:

https://picocli.info/#_packaging_your_application
https://github.com/remkop/picocli/blob/main/docs/build-great-native-cli-apps-in-java-with-graalvm-and-picocli.adoc

I'd be happy to investigate this further if there are any specific blocks that are preventing Maestro CLI from being packaged for Windows x64!

As a beginner with Maestro, I would clearly benefit from having a Windows executable of the CLI (maybe released on Winget as well). It would make it so easier to try out Maestro and then to use it.

Thanks for creating the issue, this sounds very valid.
@amanjeetsingh150 Are there any reasons to force WSL2?


Conceptual support for multiple masters?

From what I can glean from the docs, fontparts is still single-master centric. Are there plans to support a multiple-master scenario like e.g. UFO+Designspace or, in theory, .glyphs files? FontLab 6 is also using a multiple-masters-in-single-file approach.

Interpolation is a deeply complex series of steps, implemented in different ways across different editors. Abstracting these at a high-level is not something we have time for, nor a pressing need for. If you want to add support to a particular environment, the fontParts documentation clearly states how this can be done. If you want it, we've given you the parts to build it.
If you have a proposal for abstracting this to a universal level, please submit it. These constant "Will you do this work for me?" issues are taking up valuable development time. Literally. I was planning to work on some code this morning and instead I am writing this.

These constant "Will you do this work for me?" issues are taking up valuable development time.

I'm sure Nikolaus didn't me that :smile:
I believe this is less about fontParts and more about the proposed "Unified Font Set" in the UFO spec roadmap: http://unifiedfontobject.org/roadmap/
It would be great to revive that discussion -- of course, not as in will-you-do-this-work-for-me :wink:

Cool your head? You chose to type all that instead of "This is not currently implemented because we had no need, but we welcome proposals and implementations". I was simply wondering if it was possible to build a fontParts backend for glyphsLib or if this would lead to impendance mismatches.
I suppose implementing an open standard like e.g. UFS needs to come before thinking of adapting fontParts to it.

I was simply wondering if it was possible to build a fontParts backend for glyphsLib or if this would lead to impendance mismatches.

But that's not how you formulated your initial question, "fontparts is still single-master centric". UFOs + designspaces + FontParts work just fine in producing all sorts of variable fonts.

Cool your head?

Wow. Noted.

You mean using RFont objects as masters and tying them together in a DesignspaceDocument?

The answer to this is easily found.


Quarts and nether rack

some of the blocks wont spawn and I cant find the part of the config files to fix it (im using a Aternos server if that changes anything)

nevermind I fixed it


Marks test_group_failed_only_change_retries_all_active as xfail

Changes proposed in this PR

marking test_group_failed_only_change_retries_all_active as xfail

Why are we making these changes?
We've seen this test fail because one of the 5 jobs fails with Invalid task. Here's an example:
https://travis-ci.org/twosigma/Cook/jobs/467034340#L1465

@DaoWen Do you have any feedback on this?


add cidr, cidrv4 and cidrv6 validators

add validate functions
add tests
put validators as builtin in docs

Thanks! looks great
I noted 1 small error in the documentation.
I will probably get to this either this afternoon or after I get off work today

Already fix an error, hope is fine now.


raneto can't support all markdown grammar

if you add a page
save this content, raneto can't find this .md file
This is an H1
=============

This is an H2
---

http://i.imgur.com/2Ug5YBW.png

Just tested with<EMAIL_ADDRESS>and it works. Could you describe a bit more where you create the page ? From the online interface or from the filesytem

I will investigate in QA testing.
Recommendations:

Try the latest version of Raneto as @gabrielstuff mentioned
a regular URI to an image is no longer valid markdown (it might have been at one point)
New syntax for images: ![ALT TEXT](https://example.com/image.png)


[AppService] Bugfix: Better error handling when trying to create duplicate ASP in diff location

Description
Fixes #16008
When using az webapp up to create an app with existing ASP in a different location, we show the following unhandled error message (notice UnknownError):

This PR is to handle the error msg:

Testing Guide

run az webapp up --location location1 --name name1
re-run using different name and location. plan should be defaulted to the same plan created from the first invocation of the command. az webapp up --location location2 --name name2

Should get error message saying ASP exists in different location
cls

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

[x] I adhere to the Error Handling Guidelines.

so this repros with or without --html flag - I think the reported error was specific to --html parameter used in the command

AppService

CLIError is not recommended any more. @houk-ms
https://github.com/Azure/azure-cli/blob/dev/doc/error_handling_guidelines.md

Is CLIError allowed? @houk-ms @yungezz

@calvinsID Thank you for updating error type!


component Menubar  like tabs with links

so not sure about the correct wording. From a Prior conversation I learned that there is no Material Design Lite proper way to style menubars with links, like the Tab Navigation.
From my point this is essential- the single page all content html, navigatet by anchor tags, is not the solution for  rich web sites. Websites should be splitette in pages (and links).
From this perspective the navigation is the first  task for a web dev (example here http://www.getmdl.io/). And this should be easy.
as q&d Workaround I have done this
var navigationlinks = document.getElementsByClassName("mdl-navigation__link");
var p = window.location.pathname.toLowerCase();
for (var i = 0; i < navigationlinks.length; i++) {
var a = navigationlinks[i].getAttribute("href").toLowerCase();
if (p.indexOf(a) > 0) {
navigationlinks[i].className = "mdl-navigation__link about";
    };
}

I'm not quite sure what the exact request is.
Do you want us to provide default active state styling?
Or do you want us to allow general links in a tab navigation layout?
Something else?

hmm...
Default active state styling - means a menu link is styled as active? not bad
tab navigation with URL - sounds better and feels more natural- cause the limitation on #hash is surprising

Allowing general links in mdl-layout__tab would be cool too, I was figuring out why I couldn't set a link for it to point to.

General links shouldn't use the tab system. That is confusing. "Am I getting a new page or new content on this one?" You should use a normal navigation area for links and tabs for content changing without reloading the entire page.

@Garbee The MDL website do the same. The header navigation contains real links and is styled like tabs. http://www.getmdl.io/

@Twaldigas Styling like tabs is one thing. But we are not using the tab component to dynamically change the content without redirecting the user and then mixing in anchors that take them away into the same UX.
We should get in touch with the MD team and see if this is an acceptable pattern to them. It isn't defined in the spec and is a major UX concern.

What exactly is a use-case for having normal links mixed with tabs? As far as I can tell the spec makes no direct mention of this case. However I don't see where the spec would have any substance to support the functionality.
It seems best that we just add an active modifier to navigation links inside of the layout header to fit the case for having some active styling of links there. Then you should have a section of external links in the primary header row with a secondary header row with the tabs for the page.

Based on what you said @Garbee, maybe we could have something to easily style a navigation as tabs? (meaning having just the styles without the tab-panel switch)
On the doc website, you pretty much styled it as tabs, but because of that, it set a relation between the custom css and the MDL css, which means that if for any reason the tab styles changes in MDL, you'll have to change it there as well.

What do you think of using the same CSS classes as the one used for the Tabs component?
That way, we could have the same styling, keeping them inside MDL, and without the code to switch panels?

I'd like to use an href on tabs for navigation also. The spec specifically states "different views"

https://www.google.com/design/spec/components/tabs.html
and also says they're a navigation pattern:

https://www.google.com/design/spec/patterns/navigation.html#navigation-patterns

looks like this PR may have fixed, is that correct? https://github.com/google/material-design-lite/pull/929 (doesn't look like this is in the latest release though)

It will be in V1.1.


Chef Client ignores config option when executing search

When running chef-client and providing a --config option to a client configuration, the chef-client will also take up the settings from /etc/chef/client.rb and override the --config options when executing a search.
I was able to uncover this by using the chef-client cookbook and changing the Chef Server URL. Upon executing a search, it would run the search against the Chef Server URL in the /etc/chef/client.rb instead of the provided one in /tmp/kitchen when using Test Kitchen.

I don't think this is actually fixable.  If you enforce in your chef-client cookbook that your chef_server_url points at hosted, then chef-client will dutifully change your chef_server_url on the host you are running on and reload its config.  That is useful behavior for settings like no_lazy_load and other client settings you might enforce with the chef-client cookbook.  When you use it to enforce your chef_server_url and you run that under test-kitchen and chef-zero then it points your chef_server_url away from the chef-zero instance and to hosted which explodes.
I don't see a solution to the problem here, and your title is misleading.  If anything the chef-client cookbook could be modified to try to detect running under chef-zero and then not drop the chef_server_url attribute.  It certainly isn't a bug in chef-client, and the fact that the subsequent search hit fails is just because its the next API request your chef-client run happened to make and the bug isn't in chef-client's search API.
So, my advice is to just not use that setting.  You can also open an issue against the chef-client cookbook, but I'm not sure we have a way to determine running under chef-zero or test-kitchen.


./gradlew deployModl Failed

I mostly stick to maven myself, so this might be a complete amateur problem, but the gradle deployModl task is failing. I'm happy to look into/debug this if somebody can point me in the right direction I can debug this. Is it a problem with this module's setup, user error, or is this a bug in the gradle plugin?
I'm running:
./gradlew deployModl

Output:

FAILURE: Build failed with an exception.

* What went wrong:
A problem was found with the configuration of task ':deployModl' (type 'Deploy').
  - In plugin 'io.ia.sdk.modl' type 'io.ia.sdk.gradle.modl.task.Deploy' property 'module' has @Input annotation used on property of type 'RegularFileProperty'.

    Reason: A property of type 'RegularFileProperty' annotated with @Input cannot determine how to interpret the file.

    Possible solutions:
      1. Annotate with @InputFile for regular files.
      2. Annotate with @InputFiles for collections of files.
      3. If you want to track the path, return File.absolutePath as a String and keep @Input.

    For more information, please refer to https://docs.gradle.org/8.5/userguide/validation_problems.html#incorrect_use_of_input_annotation in the Gradle documentation.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 856ms
24 actionable tasks: 4 executed, 20 up-to-date

I think it's most likely an issue with the gradle plugin, but I'll do some investigation.


[ UseCase | FeatureRequest ] Url query parameter without name

This could be an edge-case, but didn't find much on handling of this sort of query-parameter in other libraries too (searched in react-navigation too).
Use case
In url, if the parameter is just a value. For example: https://test.test/register?34asdf32gsdf232213ds.
Handle
In this case, had to break out of solito to get the current url depending on ReactNavigation.useRoute().path for native/react-navigation and window.location.pathname for browser. And then splitting at ? to get the last part.
Curious
What is the opinion of the author of the library on this? Btw, this way of url making is not against the standards (per this answer).
Could this be handled in solito?

Yeah this has been requested a lot, it's just a complicated thing to solve in a safe way as a library. I recommend checking out what Showtime does. If you're using Expo Router, this is solved.
Duplicates: #10 #235 #314 #321

@nandorojo  thanks for the input and pointers.👍
Btw awesome library. 🚀🎉👍


[DOCFIX] Improve Docker documentation

This change corrects the Alluxio-Docker deployment doc.

Correct JAVA OPTs for docker deployment in host network and bridge network
Simplify HA related doc by adding Refs
Various typos and format issues

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6611/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6631/
Test PASSed.

@ZacBlanco Do you mind merging this doc fix please?

@ZacBlanco requested change resolved. I'll stick to Internal Leader Election and leave refs to embedded journal.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6661/
Test FAILed.

retest this please

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6662/
Test PASSed.

alluxio-bot, test this please

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6666/
Test FAILed.

alluxio-bot, test this please

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/6667/
Test PASSed.

alluxio-bot, merge this please

alluxio-bot, cherry-pick this to branch-2.1 please


There is no mention of the installation of Microsoft.Azure.WebJobs.Extensions.DurableTask.

There is no mention of the installation of Microsoft.Azure.WebJobs.Extensions.DurableTask, so the description of the version seems to be confusing.
I think this document is missing a description of the extension installation
$ func extensions install -p Microsoft.Azure.WebJobs.Extensions.DurableTask -v 1.7.0
which is described in https://github.com/Azure/azure-functions-durable-js

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

ID: 7bc8fe9b-d51f-7858-8989-c37699a98a62
Version Independent ID: b170803b-7bdc-b169-d76a-b0dd418ba629
Content: Create your first durable function in Azure using JavaScript
Content Source: articles/azure-functions/durable/quickstart-js-vscode.md
Service: azure-functions
GitHub Login: @ColbyTresness
Microsoft Alias: azfuncdf, cotresne, glenga

@lesomnus Thanks for the feedback. We are looking into this and will get back to you shortly.

@lesomnus Note in the doc mentions

JavaScript Durable Functions require version 1.7.0 or greater of the Microsoft.Azure.WebJobs.Extensions.DurableTask extension. Verify the Durable Functions extension's version in your extensions.csproj file meets this requirement. If it does not, stop your function app, change the version, and press F5 to restart your function app.

Let me know if there are still any additional queries I can help with.

@KetanChawda-MSFT That's where I got confused. The documentation only covers the installation of the Azure Functions extension of vscode and the durable-functions package of npm, but there is nothing about the installation of Microsoft.Azure.WebJobs.Extensions.DurableTask.
I did not even know that there was a command like func extensions insall until I saw this page.
If you follow the documentation, there is no file called extensions.csproj. This is because the file is created only after the func extension insall ....

@lesomnus Created a PR to update the note with command in the doc. Thank you for pointing this out.
We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.

This command actually isn't necessary anymore with the new extension bundling feature we released at build. So the doc was in fact incorrect, but now is correct as is. I have an open PR on the private docs repo that addresses some other feedback about this doc, so I'd appreciate if we didn't merge this change.


Feature Toggle bar rotate

Preveious button is not rotating
https://github.com/Sayak-Bhunia/mystory/assets/109230049/4be3f47f-b30a-4f62-bac9-b75423023b75
Button not rotating
https://github.com/Sayak-Bhunia/mystory/assets/109230049/5e096b03-86cc-4024-a522-a48d90cc8bdd

no need for this feature now.


latest DRAFT LMSS 2.1.1 (2022-08-22) changes

pulled in latest 2.1.1 changes. As-Is, no other changes

The pull request to was to Pull to master; I'd recommend creating a separate Branch for 2.1.

Apologies for missing this in August. Just confirmed your recent Pull Request. Thank you!


Document how to pass a callback contexts to the callbacks

Some callbacks require state. It is extremely common practice that C libraries taking callbacks allow the user to forward a callback context to the callbacks in order to avoid relying on global state.
For whatever reason GLFW doesn't directly allow/encourage this. The documentation, and in particular the quickstart, leaves one wondering whether it is possible, and the FAQ asserts that C++ objects methods cannot be used as callbacks (since they require state), which is "incorrect" for most callbacks (they can be used, but the objects have to be available within the callback). Recommending users to "use global state" is a smell to many. I think the docs should rather hint that "that's the easy way, but that passing a context object is possible to most callbacks". And then point users to the techniques to allow this in C and C++.
I don't know what is the best way to pass contexts to callbacks in GLFW. The only way I know exploits the fact that most callbacks take a GLFWWindow object, so one just needs to:

create a new type that contains a GLFWWindow such that the address of the type always matches the address of the GLFWWindow it contains (e.g. via inheritance in C++, or by having GLFWWindow as the first data-member of the type in C),
create an object of that type and initialize the GLFWWindow as usual (e.g. with glfwCreateWindow),
pass this object to GLFW as a GLFWWindow (e.g. by upcasting, taking the address of the window data member, ...)
from the callbacks that take a GLFWWindow (that is, most of them), down cast it back to your type (using dynamic_cast, reinterpret_cast, a C cast...) to access the content of your context (don't screw up the casting or you'll get UB).

To use a C++ object method as callback one just needs to store how to call the method in the callback context (e.g. by storing the object itself there, storing a std::function, ...), and then call it through the callback context from the callbacks.
From the documentation it seem as if GLFW wasn't designed at all with callback contexts in mind (in particular since some callbacks don't get passed a GLFWWindow), but in practice it supports it, and since it is what most users would expect one might just document how to do it properly.

IMO the FAQ is perfectly correct: you cannot use a C++ member function as a callback. As in, you cannot pass the address of an object's member function to any of glfw's setcallback functions and expect it to work, it has to be a regular/static function.
The best way to achieve the mapping between glfw and C++ objects, in my opinion, is the way suggested by the FAQ: through glfwSetWindowUserPointer and glfwGetWindowUserPointer. A simple static wrapper function can then be used to call the relevant member function on the pointer with no additional global state required. http://www.glfw.org/docs/latest/window_guide.html#window_userptr.
I don't see where in the documentation it recommends to use global state for this. Could you link to the part you believe is misleading/incorrect?
I am a bit confused by your proposed method. In particular, how do you "pass this object to GLFW as a GLFWWindow"? glfw creates the struct internally, and only returns to you a pointer from glfwCreateWindow.
Any callbacks that do not have a window pointer are either not directly related to a window, or an oversight that should be corrected in a future release (if there is not an issue to track these, one should should definitely be added).

The best way to achieve the mapping between glfw and C++ objects, in my opinion, is the way suggested by the FAQ: through glfwSetWindowUserPointer and glfwGetWindowUserPointer. A simple static wrapper function can then be used to call the relevant member function on the pointer with no additional global state required. http://www.glfw.org/docs/latest/window_guide.html#window_userptr.

I wouldn't recommend adding a static member function (which might not be possible) and passing a pointer to the object directly (which doesn't work directly if you need two objects). I would just recommend passing a real context object, and accessing everything through there.
To improve the docs I would point this out in the quickstart guide when the first callback is encountered. That is, point out that if you want to access a callback context you can use this and that function to set it and get it from a window.
In the FAQ instead of recommending using a static member function, I'd either recommend casting the address of the object to its type (which allows you calling the member function directly without needing a static function), or just using a context object if one needs to call multiple member functions. It might be worth adding to the FAQ a section about how to pass a callback context that points to the Window User Pointer section.
In the Window User Pointer section I would add: "This can be used for any purpose you need (like passing a callback context)", and show an example.

instead of recommending using a static member function, I'd either recommend casting the address of the object to its type (which allows you calling the member function directly without needing a static function), or just using a context object if one needs to call multiple member functions

Do you have any code examples of your approach you could share? Without a regular C or static function for glfw to call in the first place, I am struggling to understand how it would work.

This has only been compiled in my head but it shows how it is done:
#include <iostream>

// Given two types
struct Foo { void foo() { std::cout << "foo" << std::endl; } };
struct Bar { void bar() { std::cout << "bar" << std::endl; } };

// And a callback context:
struct callback_context {
  Foo foo;
  Bar bar;
};

int main() {
  // We can construct a callback context:
  callback_context cbc;

  // Then we get a GLFW window, and set the pointer type to the context:
  auto* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
  glfwSetWindowUserPointer(window, &cbc);

  // We then define some callback that gets the user pointer can calls the methods:
  auto wcc = [](GLFWwindow* w) {
    callback_context* cbc_ptr
        = static_cast<callback_context*>(glfwGetWindowUserPointer(w));
    cbc_ptr->foo.foo();
    cbc_ptr->bar.bar();
  };

  // Set the callback (lambdas that are not closures decay to function pointers):
  glfwSetWindowCloseCallback(wcc);

  while (!glfwWindowShouldClose(w)) {
    glfwPollEvents();
    // when you close the window you'll get "foo\nbar\n" printed to stdout.
  }
  // destroy windows and close
  return 0;
}

Am I going crazy, or is that a completely different approach from the one in your original post?
Anyway, that example is pretty much identical to the method I was proposing, except using a lambda instead of a regular function (note I also don't recommend adding a static member to any types). It should be easy enough to get this written into the documentation.

I'll update the documentation with an example and more mentions of the window user pointer.

Callbacks are really bad in glfw and it's to easy to fix them!! Just update callbacks to work like this:
glfwSetFramebufferSizeCallback(window, (void *)MyWindowObject, OnWindowResize)

void OnWindowResize(GLFWwindow *window, void *object, int width, int height)
{
    WindowClass *w = (WindowClass *)object;

    w->SetWindowWidth(width);
    w->SetWindowHeight(height);
}

Please we really need callbacks that work like that!!! Now we have to make all the variables Global in order to update them inside callback functions!!!!!

Please we really need callbacks that work like that!!! Now we have to make all the variables Global in order to update them inside callback functions!!!!!

This is wrong, you don't have to do that. See my comment: https://github.com/glfw/glfw/issues/815#issuecomment-235986227


Error when compiling insert code

The following code won't compile
val insertUser = quote { user: User => query[User].insert(_.name -> lift(user).name, _.createdAt -> lift(user).createdAt) }

It produces a weird error:
Error:scalac: Error while emitting Main.scala
value user

Expected behaviour
The following code gets successfully compiled
val insertUser = quote { user: User => query[User].insert(_.name -> lift(user).name, _.createdAt -> lift(user).createdAt) }

Actual behaviour
It produces a weird error:
Error:scalac: Error while emitting Main.scala
value user

Steps to reproduce the behaviour
https://scastie.scala-lang.org/jonhkr/Nl8c5VfbSieq39SF6RUpkA/1
Workaround
Provided in the scalatie sample
@getquill/maintainers

@jonhkr lift is meant to lift runtime values into the quotation (which produces a SQL bind variable). In this case, it's used to lift user, which is a quoted value, not a runtime one. The gitter channel is a better way to get help with this kind of problem


Web binding

Will need to update with new .wasm files when ready and adjust initial wasm memory (orca.ts).

Is it easy to add a 'download' feature to the demo?

Good job! once @ksyeo1010 and @bejager approve this, will merge it to master

I believe this is good to merge, the one failing link is to the demo which won't exist until this is merged


Add include_file

Given a file: universe_a.ion, with contents:
// universe_a.ion:
(define toy_lang (domain ... ))

And another file universe_b.ion that resides in a different directory, I should be able to include the universe_a.ion file in universe_b.ion.
We might find a need to make this more sophisticated in the future, but to keep this simple for now, the result will be the same as if the (include_file ...) statement were replaced with the contents of  universe_a.ion:
// universe_b.ion:

(include_file "universe_a.ion")

// now domains defined in universe_a.ion are available for permutation

(define permuted_domain
       (permute_domain toy_lang ...))

The grammar of the include_file statement is:
include_file_stmt :== '(' 'include_file' <string> ')'

Other requirements (not in any order):

Attempts to include the same file twice should be ignored, thereby preventing cyclic includes.
After all of the include_file statements in all included files have been processed, the result should be a single type universe with all of the domains from all of the included files, which can then be passed through the remaining processing steps that exist today.  No changes to those processing steps are needed.
Since we're now dealing with multiple files, we must include the path to the file containing the error in any error messages produced by pig.  We currently use IonElement's IonLocation meta for this, but it lacks a property for the filename.  The filename should either be specified in a different meta, or a new meta should be used that has properties for the source file, line and character offset.
When error information including the source file, line, column & message is output to the console, the format should be:  <relative-path-to-ion-file>:<line>:<column>: <message> This format is understood by certain IDEs such as Visual Studio and IntelliJ (with a plugin) and causes the IDE to to turn the location text in the console output into a clickable hyperlink.  (A quality of life improvement.)

Probably, this will take the form of some form of import mechanism.

Without this feature (or discussion of its future), I do not see how this will work in the long term.
Use-case: I want to directly support the some expressions defined by the partiql_ast for my own domain (using permute_domain). Without this feature I copy-paste the entire contents of partiql_ast.ion into my own .ion file.

Amended the title and description of this issue by replacing the term "import" with "include" to reflect this decision that was made during the review of #74.


Part 2: Introducing JSON Schema for Param and Outputs

This is Part 2 of the change to introduce json schema support. This introduces a dependency on
https://github.com/qri-io/jsonschema and introduces a facade layer that hides that implementation detail
from the users of cnab-go. A struct was added, called Schema, to a new "definitions" package. This exposes an exported type that covers all the JSON schema bits. This was desirable to shield end users of cnab-go from the implementation details of a specific library and for some libraries, necessary because the generally used jsonschema libraries for Go either don't export the types directly (https://github.com/xeipuuv/gojsonschema), export but in a harder to directly use way (https://github.com/qri-io/jsonschema). A third library did check most of the boxes (https://github.com/santhosh-tekuri/jsonschema), but I felt like not exposing the choice directly to the end consumer makes it easier to switch if needed.
The wrapping package currently uses (https://github.com/qri-io/jsonschema and marshalls into that schema type when a validation is requested. This also removes old ParameterDefinition validation logic, as it is replaced by the use of json schema validation.
Part three will wire up all of this for outputs. They are currently present in structure, but there is no validation done in cnab-go for outputs (paths etc)

One thing to note here, our definitions section doens't match 100% with json schema:
https://github.com/deislabs/cnab-spec/blob/master/101-bundle-json.md#definitions
Notably:
additionalItems: Parameter validation requiring that any additional items included in a user-provided array must conform to the specified schema. MUST be a JSON schema. (OPTIONAL)
additionalProperties: Parameter validation requiring that any additional properties in the user-provided object conform to the specified schema. MUST be a JSON schema. (OPTIONAL)

These differ from schema. additionalProperties, for example can be a boolean or schema to define additional types. I went with schema here, but can restrict it down.


[DEVOPS-398] Script to launch demo cluster with new testnet genesis

Description
Adds a script which launches a demo cluster. The difference with the other demo script is that it uses the same method as used to launch the public testnet cluster.
Linked issue
https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-398
Type of change

[~] 🐞 Bug fix (non-breaking change which fixes an issue)
[x] 🛠 New feature (non-breaking change which adds functionality)
[~] ⚠ Breaking change (fix or feature that would cause existing functionality to change)
[x] 🏭 Refactoring that does not change existing functionality but does improve things like code readability, structure etc
[x] 🔨 New or improved tests for existing code
[~] ⛑ git-flow chore (backport, hotfix, etc)

Developer checklist

[x] I have read the style guide document, and my code follows the code style of this project.
[x] If my code deals with exceptions, it follows the guidelines.
[x] I have updated any documentation accordingly, if needed. Documentation changes can be reflected in opening a PR on cardanodocs.com, amending the inline Haddock comments, any relevant README file or one of the document listed in the docs directory.

Testing checklist

[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

QA Steps
Run the demo script and see if it works.

hm - whats up with the so big git diff

@akegalj The base branch was behind develop. I changed it to develop since devops-398-testnet got merged.


Issue fixes

Following issues are marked as closed, but don't see the features in latest version. Tried these in 9.2.0. Any idea?
602
682
686
Sorry for a duplicate issue. Will close once I get your answer.

Fixing an issue is different from releasing it.
These issues could hav been fixed but not released. To test it out pick the unreleased version of rapidoc from dist folder

Any idea when these will be released?

Also where is dist folder?


How to use LoadBalanced RestTemplate during bean creation time

I'm trying to use RestTemplate with LoadBalanced annotation (instead of Feign) in my project.
One bean (let me call it client bean) uses this RestTemplate and make some requests durning init (inside @Bean annotation). The problem of this is that LoadBalancerInterceptor has not been added to this RestTemplate. So the call to http://service-name fails because of unknown host.
So in the same configuration file as where this client bean is, I add autowired LoadBalancerInterceptor, and add this interceptor manually to RestTemplate. But then I get another error EurekaClient has not been initialized yet, returning an empty list from DiscoveryEnabledNIWSServerList.
How to use LoadBalanced RestTemplate during creating beans? Any idea?
spring-cloud version 1.1.7.RELEASE

I'm not sure it's possible. We use SmartLifecycle beans where we need that in spring cloud.

@spencergibb do you mean EurekaDiscoveryClientConfiguration?

no, I don't. We don't use eureka client during bean creation.

Closing due to age of the question. If you would like us to look at this issue, please comment and we will look at re-opening the issue.


Allow Col to have no children

Often you want a <Col> merely for layout purposes / with no content. Seems to currently work fine when using <Col/> except there is a prop warning. One can do <Col><span/></Col> and everything still works and no error. This just gets rid of the children requirement.

@LegNeato sounds good, perhaps just remove the isRequired flag rather than the entire propType declaration though?

Ah, yeah :+1:

Thanks!


Fix Sign up error

This fixes the fact that everyone currently gets an error when the sign up! When someone signs up we don't receive a token for them yet. They have to verify their email, and then they get a token.
This now reflects that. They sign up, and we tell them to verify their email. Then when they click on the link in their email, they can log in, and get the token.

I think leaving the console.log in there for now is okay.


Log.txt file automatic creation in PWD is kind of an anti-feature

Hi, great tool, but I have a bit of a UX nitpick. By default, every time you run bump-pydantic it generates log.txt in the current directory. This is usually at the project root of a repo and I really don't care about the log file 99% of the time, and I have to remember not to accidentally git commit it. I would add a rule but for a basically one-off process it seems unnecessary.
I think it would be a better experience if it did one of the following:

Don't generate a log file unless --log-file option is requested
Generate a log file in an inconsequential dir by default (e.g. /tmp/bump-pydantic/log.txt)
Accept --no-log-file to suppress the generation of the log file. (I suppose I can --log-file=/dev/null but I have to remember that each time)

Second option is good 👍
PR welcome 🙏

Also, is the log file supposed to output things? I just ran the tool and updated my code (44 lines changed) and there was nothing in the log file.

@xkortex Are you still interested in helping here?


This mod doesn't appear to be working in Linux

I'm currently running a modded Cyberpunk install in Linux, and this mod doesn't appear to be working. No log file gets created, and my input doesn't work when in-game. Do you perhaps know where I can start with debugging this?

Same issue here. Would love to figure out what's going wrong.


Feature/navigation cancelled finished

Referring to this and this
On iOS, event handling is fixed, now uses enums string instead of int so we can properly get on Dart side instead of relying on index.
When a user ends navigation we get navigation_finished events and also we can collect feedback (rating and comment) in Dart.
On Android, creating a custom InfoPanelEndNavButton (with the same UI) let us override the onTap action, I set it to stop the navigation and send back to dart the navigation_cancelled events.

@marcotrumpet Thanks a lot mate, @eopeter can we get new build with this fix soon ?
We already have deploy our iOS app to apple play store and but we didn't deploy our android app to play store duet to issue #229 , if you can prepare for the release , it is really good for us and this is really top urgent fix for us. We really appreciate your help. 👍

@marcotrumpet Not entirely sure about this PR; Why does ending navigation depend on the Feedback?

@marcotrumpet Not entirely sure about this PR; Why does ending navigation depend on the Feedback?

It does not. It gives you more infos back (rating and comment from the native view) in case you need in flutter app. Main thing here is that now events are received properly on dart side. Previously there were an issue because the enum was index based but the ios enum are different than dart enum


Provide URLSession based HTTPClient for iOS

URLSession has special entitlements on iOS. It runs in the background so downloads can run while apps are minimised. We should provide access to this through an HTTPClient that utilises URLSession.
This is reliant on #165

URLSession has special entitlements on iOS. It runs in the background so downloads can run while apps are minimised.

This will be super hard to implement in a library, since the NSURLSessionTasks taskId needs to be persisted between calls. Only use case I can come up is downloading from and uploading to s3. This is already implemented by AWS: https://aws.amazon.com/blogs/mobile/amazon-s3-transfer-utility-for-ios/

This will be super hard to implement in a library, since the NSURLSessionTasks taskId needs to be persisted between calls. Only use case I can come up is downloading from and uploading to s3. This is already implemented by AWS: https://aws.amazon.com/blogs/mobile/amazon-s3-transfer-utility-for-ios/

If user is providing HTTPClient (a la #165) the NSURLSessionTask taskId can persist in the HTTPClient. Don't think this is a huge requirement but if we are providing HTTPClient to aws-swift-sdk this makes this quite possible.

If user is providing HTTPClient (a la #165) the NSURLSessionTask taskId can persist in the HTTPClient. Don't think this is a huge requirement but if we are providing HTTPClient to aws-swift-sdk this makes this quite possible.

But the complete callbacks are gone. BackgroundSession can not be implemented like "normal" URLSessions and they IMHO make only sense for downloads and uploads.

But the complete callbacks are gone. BackgroundSession can not be implemented like "normal" URLSessions and they IMHO make only sense for downloads and uploads.

I was under the impression the complete callbacks were still called, but only when you bring your app to the front again.

I was under the impression the complete callbacks were still called, but only when you bring your app to the front again.

That would be so awesome. Sadly this is not the case and I have cried many, many tears about this.
With background sessions you can’t assume that your app is just in inactive state. It might be terminated completely.


Update the Wiki Roadmap "General Focus" text

The "Roadmap" Wiki page
https://github.com/TryGhost/Ghost/wiki/Roadmap#general-focus
ends with a section called "General Focus" which is two years out of date and needs a quick update, please. (Or perhaps remove the section if preferred.)
It currently refers to the "Road to 0.6" and the plan "up until early 2015".

Yeah, wiki content gets out of date - we don't use that page anymore :)
If you want to follow what we're up to, it's much better to follow along with dev.ghost.org and blog.ghost.org, which are regularly updated 👍

So is it OK if I delete that page and the references that led me to it?

Please don't, someone else will come along and raise an issue that it 404s ;)

What solution do you prefer? Shall I delete the reference to it (which is at the top of the Wiki home page) and insert a note at the top of the Roadmap page saying "Obsolete -- see dev.ghost.org and blog.ghost.org instead" ?

Or is it mostly still valid and I should just delete the "General Focus" section at the bottom?
Seriously, I want to improve the out-of-dateness situation one way or another. Please advise.


Feature Request: Add Default property to RuleInfo object

Spec:
[Boolean] Default
$True when the rule runs by default. Else, $False
Scenarios:

I run Invoke-ScriptAnalyzer and all rules pass. But, I want to know which rules ran, especially when dealing with different versions of PSScriptAnalyzer that return different results.

I'm establishing standards for my org and I want all scripts/modules to pass certain rules w/o warning, etc. I need to know which rules run by default and which do not.

I notice a new rule in PSScriptAnalyzer. I know my script violates that rule, but when I run Invoke-ScriptAnalyzer, it does not return any rule violations. I get the RuleInfo object and examine all of its properties, but nothing tells me that it doesn't run by default. I can find that in the rule docs, but I can't do:

Get-ScriptAnalyzerRule | where Default

I'm determined, so I run:
 Invoke-ScriptAnalyzer -IncludeRule <RuleName>

Return is $null. And nothing tells me what went wrong.

In the current scheme of things, the PSSA engine doesn't use RuleInfo objects during invocation, and hence it will be hard to justify adding a Default property to a RuleInfo object. A RuleInfo object is just some static information about the rule and doesn't provide any information about its runtime behavior. We control the runtime behavior by providing settings, which are not  part of the RuleInfo object, to the engine.
We do, however, have the ability to enable or disable a few rules through an Enable switch. See Settings/CodeFormatting.psd1 for some examples. These rules are derived from ConfigurableRule class and provide a Default like feature. All the rules in CodeFormatting are disabled by default because we do not want PSSA to run them by default as it can potentially result in a very noisy output. So, if you run them using just the IncludeRule parameter they will not run. You need to enable them using the enable switch through settings
Having said that, ideally, a DiagnosticRecord object should encapsulate/point to a RuleInfo object that gives complete information about the rule that fired the violation. In that case the RuleInfo object should not only have a Default like property but other Settings parameters provided by the user.
To sum it all up, we will not be adding a Default property to the RuleInfo object anytime soon and hence I will mark this as wontfix and close it. But, whenever we have a chance to upgrade the internals of PSSA we will move towards the more ideal form, which then will have your requested feature.

The problem is not how the PSSA engine works during invocation. It's how end-users discover which rules run by default and which require a Settings file.

This requirement is not for the PSSA engine. It's a discoverability feature for the end-user. Without something like a Default property, how do end-users determine which rules run by default and which require a settings file?


Curved rack gears

In the gears API, do you envision being able to make curved racks (with teeth along the side or along the curve)?
Teeth along the side:

Teeth along the curve:

My use case for having rack teeth along the side (the first image) would be for a motor shaft (whose axis of rotation was the X axis) to be able to drive/rotate a revolute joint along the Y or Z axes.

Will try that using a beveled gear in your openscad tool and update this thread if that works.

Looks like a bevel gear gets me closer to my goal, but aside from being secured to a shaft, I also need to be able to screw the gear onto another flat surface (i.e, the subsequent link's surface), so that that section rotates along with the bevel gear (i.e, around the same axis/shaft). So, I'd like to include screw holes (illustrated in red color below), that I could use to attach the gear firmly to the subsequent section:

I generated the image above using the tool you have on thingiverse, but since it is STL I can't import it into cadquery for adding the holes. One option would be to print and then drill out the holes for the time being. But, if there is another (more straightforward) option you know of, I'd love to get your thoughts.
Sorry if this seems like a silly or obvious question. I just started reading up about gears a week ago and am still a little lost. I'm trying to build a robot arm with 3DOF. I've already implemented one revolute joint (with axis along the motor shaft), but the other two axes (for pitch and yaw) are what I'm stuck on. I understand there are multiple ways of achieving rotational motion that is perpendicular to the axis of the motor shaft -- using beveled gears, or worm gears, but in either case, I need some way of attaching the final gear firmly onto the body (link) that's being rotated. One option would be to secure both the gear and the next section together indirectly by securing each to the common shaft using their respective setscrews, but it feels like better design to attach the gear to the part directly first, and then attach that apparatus onto the shaft in just one place. Hope I explained that well...

Curved rack gears could be miter gears or spiral gears with the center
section removed from the larger gear. Teeth along the curve gear pair could
be spur gears with the large gear center removed (i.e. a very large bore
dimension).
On Tue, Sep 28, 2021 at 10:45 PM Ali Safdar Kureishy <
@.***> wrote:

In the gears API, do you envision being able to make curved racks (with
teeth along the side as well as along the curve)?
Teeth along the side:
[image: curved_rack]
https://user-images.githubusercontent.com/1193219/135193757-0a03b0c7-decf-42d7-a928-93ca4a0f12c4.png
Teeth along the curve:
[image: curved_rack]
https://user-images.githubusercontent.com/1193219/135193841-7f715d7a-fff1-4a77-9334-8f15be2b5c2e.jpeg
My use case would be for a motor shaft (whose axis of rotation was the X
axis) to be able to drive/rotate a revolute joint along the Y or Z axes.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/gumyr/cq_warehouse/issues/4, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUNL25RKGIIEONOHYH6ZCF3UEJ4TFANCNFSM5E6ZEVNA
.

I designed the gear_warehouse (which inspired cq_warehouse) to be easy for
OpenSCAD developers to create the base shape and then manipulate further
with simple OpenSCAD facilities. Here is a example of how to add holes to a
gear (make sure gearWarehouseV1.0.scad is in the same directory as your
design):
use <gearWarehouseV1.0.scad>
mm = 1;
difference() {
involuteGear(gearType="spiral",gearModule=3,totalNumTeeth=20,faceWidth=15mm,pitchAngle=55,spiralTwist=30,bottomHub=false,hubDiameter=20mm,setscrew="3",keyway="3x3");
for (angle=[45:90:360])
rotate([0,0,angle]) translate([13mm,0,0])
cylinder(h=50mm,r=2*mm,center=true,$fn=32);
}
which results in this:
[image: image.png]
(It has been a long time since I've done anything with OpenSCAD and I've
realized I'm very rusty!)
The more securely you can attach your gears the better.
You could do the same thing by importing a STEP model (from McMaster) and
adding holes in cadquery.
By the way, there are some excellent YouTube channels on robot design. I've
seen some good ones on joint design, motor placement and selection, etc.
Cheers,
Roger
On Wed, Sep 29, 2021 at 2:10 AM Ali Safdar Kureishy <
@.***> wrote:

Looks like a bevel gear gets me closer to my goal, but aside from being
secured to a shaft, I also need to be able to screw the gear onto another
flat surface (i.e, the subsequent link's surface), so that that section
rotates along with the bevel gear (i.e, around the same axis/shaft). So,
I'd like to include screw holes (illustrated in red color below), that I
could use to attach the gear firmly to the subsequent section:
[image: marked]
https://user-images.githubusercontent.com/1193219/135210509-7c657ee1-b6bd-4e9f-bd05-48e6dc905100.png
I generated the image above using the tool you have on thingiverse, but
since it is STL I can't import it into cadquery for adding the holes. One
option would be to print and then drill out the holes for the time being.
But, if there is another (more straightforward) option you know of, I'd
love to get your thoughts.
Sorry if this seems like a silly or obvious question. I just started
reading up about gears a week ago and am still a little lost. I'm trying to
build a robot arm with 3DOF. I've already implemented one revolute joint
(with axis along the motor shaft), but the other two axes (for pitch and
yaw) are what I'm stuck on. I understand there are multiple ways of
achieving rotational motion that is perpendicular to the axis of the motor
shaft -- using beveled gears, or worm gears, but in either case, I need
some way of attaching the final gear firmly onto the body (link) that's
being rotated. One option would be to secure both the gear and the next
section together indirectly by securing each to the common shaft using
their respective setscrews, but it feels like better design to attach the
gear to the part directly first, and then attach that apparatus onto the
shaft in just one place. Hope I explained that well...
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/gumyr/cq_warehouse/issues/4#issuecomment-929866441,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUNL25RNA6QTUJONKRSY4PTUEKUU3ANCNFSM5E6ZEVNA
.

Thanks a million, Roger!
Your code suggestion above worked perfectly. I need to start learning OpenSCAD, to round out my CAD skills ;).
As for step files from McMaster ... thx for the tip... I've added that to my todo list.
Many thanks again for the help.
[It'd be awesome to stay connected via linkedin, if that's something you'd be open to. If yes, please feel free to add me].


[Bug] Excess spacing in filters of story list

Describe the bug
Currently, there is extra spacing between the elements in the filers of story list.

To Reproduce
Steps to reproduce the behavior:

Open userstory.eosdesignsystem.com
Scroll down to story list
There is extra spacing in elements of filter

Expected behavior
The elements should be properly spaced such that the UI looks better.
The proper view should be:

Environment (please complete the following information):

OS: Windows 10
Browser: Chrome

@cyntss @mharshita
I want to work on this issue.

Duplicate issue as #131


Bump identity-api-server version from 1.0.236 to 1.0.237

Bump identity-api-server version from 1.0.236 to 1.0.237

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/1047674434

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/1047674434
Status: failure

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/1048338489

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/1048338489
Status: success


Renaming repository name from headers and docs

Provide a narrative description of what you are trying to accomplish:

[ ] Are you fixing a bug?

[ ] Detail how the bug is invoked currently.
[ ] Detail the original, incorrect behavior.
[ ] Detail the new, expected behavior.
[ ] Base your feature on the master branch, and submit against that branch.
[ ] Add a regression test that demonstrates the bug, and proves the fix.
[ ] Add a CHANGELOG.md entry for the fix.

[ ] Are you creating a new feature?

[ ] Why is the new feature needed? What purpose does it serve?
[ ] How will users use the new feature?
[ ] Base your feature on the develop branch, and submit against that branch.
[ ] Add only one feature per pull request; split multiple features over multiple pull requests
[ ] Add tests for the new feature.
[ ] Add documentation for the new feature.
[ ] Add a CHANGELOG.md entry for the new feature.

[ ] Is this related to quality assurance?

[X] Is this related to documentation?
Renaming repository name from headers and docs.

Thanks, @Lansoweb!


Python file upload

Logging statements finished and neo4j file upload methods for my classes are updated and rj's are removed.

+1

+1
On Mon, Feb 8, 2016, 1:44 PM Andrew Bowler<EMAIL_ADDRESS>wrote:

+1
—
Reply to this email directly or view it on GitHub
https://github.com/rwhite226/Graphalyzer/pull/21#issuecomment-181489588.

+1

+1


Coupling Motors via Fixed Tendons - Search for Best Practices

Discussed in https://github.com/deepmind/mujoco/discussions/927

Originally posted by psclklnk June 15, 2023
Hi everyone,
I am currently aiming to create a fairly accurate model of the Barrett WAM 4DoF Robotic Arm. Doing some first Sys-Id experiments, I realized that the coupling of joints 2 and 3 (e.g. described on Page 68 of the WAM Documentation) makes it hard to accurately capture their dynamics without explicitly modeling this motor coupling.
My idea for coupling the motors was to add two additional joints (representing the motors) that are coupled with the actual joints via a fixed tendon. In XML, this corresponds to
<body name="wam/links/base" pos="0 0 1.2" euler="0 0 0">
            ...

            <body name="wam/rotor1" pos="0.22 0 0.173" euler="0 0 0">
                <joint name="wam/joints/motor_pitch" pos="0 0 0" axis="0 0 1" armature="0.053249" damping="0.1"
                       frictionloss="0.1" limited="false"/>
                <inertial pos="0 0 0" mass="1e-3" diaginertia="1e-7 1e-7 1e-7" quat="1 0 0 0"/>
                <geom class="viz" type="cylinder" size="0.03 0.01" rgba="1 0 0 1"/>
            </body>

            <body name="wam/rotor2" pos="0.22 0.28 0.173" euler="0 0 0">
                <joint name="wam/joints/motor_roll" pos="0 0 0" axis="0 0 1" armature="0.0564972" damping="0.1"
                       frictionloss="0.1" limited="false"/>
                <inertial pos="0 0 0" mass="1e-3" diaginertia="1e-7 1e-7 1e-7" quat="1 0 0 0"/>
                <geom class="viz" type="cylinder" size="0.03 0.01" rgba="1 0 0 1"/>
            </body>

            <body name="wam/links/shoulder_yaw" pos="0.22 0.14 0.346" euler="0 0 0">
                ....
               <body name="wam/links/shoulder_pitch" pos="0. 0. 0." euler="-1.570796 0 0">
                    <joint name="wam/joints/shoulder_pitch" pos="0 0 0" axis="0 0 1" range="-2 2" damping="0.1"
                           frictionloss="0" armature="0"/>
                    ...

    <tendon>
        <fixed name="pitch_coupling" limited="true" range="0. 0.001">
            <joint joint="wam/joints/motor_pitch" coef="0.01768812"/>
            <joint joint="wam/joints/motor_roll" coef="-0.01768812"/>
            <joint joint="wam/joints/shoulder_pitch" coef="1"/>
        </fixed>
        ...

While this works nicely in simulation (Sys-Id is to be done with this model), I was wondering whether there is a more elegant solution that does not require to specify additional rotating bodies. What I don't like about this solution is the need to specify additional inertias and masses. (I am assuming that the tendon effectively "propagates" the inertia of the attached bodies to the motor joints, but maybe this assumption is wrong.)
Can this be avoided by representing the actuated joint differently?

I don't understand why you need the extra joint. WAM has very little backlash.
Why aren't you just coupling the joints directly?

Good point with the equality constraints. I remember looking at it but then concluding that I cannot easily (or at all) model the desired effect using the equality constraints.
If I understood the documentation correctly, the equality element only allows to express relations between two joints (albeit non-linear ones). However,  the coupling of the BarrettWAM motors is expressed by two linear equations, each equation featuring three variables (the two motor positions and one of the two joint positions).
This is why I rather went for modeling the linear equations directly via the fixed tendons instead of trying to find a formulation via the equality element (if there even exists an equivalent formulation).
Does this reasoning make sense?

Yes that makes sense. Perhaps some variables can be eliminated? Depends on the system. Can you make a minimal (planar) model with the two (I guess four now?) relevant joints and we can think about it together?
Anyway even in your formulation, unless you want backlash, I suspect you probably want a bilateral equality constraint on your tendon, rather than two unilateral inequality constraints that you'd get with the length range you have now.
PS remember with the WAM you'll want to use precisely computed joint armature to get the correct dynamics. The motor rotation is highly backdrivable and reflected inertia plays an important role.

PS remember with the WAM you'll want to use precisely computed joint armature to get the correct dynamics. The motor rotation is highly backdrivable and reflected inertia plays an important role.

 On a second thought, modeling a rotating body that is attached to the motor may actually turn out to be important. I now included the rotor inertias at the bottom of the WAM Inertia Document by setting the diagonal elements of the rotating bodies to the specified values, resulting in this model (the model comes with meshes and everything so I hope you load it without problems).
I also checked whether modeling coupled motors can improve the realism of the simulation. For that, I tuned the parameters of my friction model (basically a Stribeck model) on trajectories that have been generated using a PD+Gravity Compensation controller. I then compared the model with motor coupling and without motor coupling on an unseen trajectory. The error in the position is negligible. However, when looking at the velocities, we see a benefit of the motor coupling:

Particularly in q_1 between second 0 and 3, the coupled model captures the behavior much better. Looking at torques, I would also say that the coupled model does a better job during movement.

However, it cannot compensate for some "steady-state errors" at the end of the trajectory and even increases this error in q_1. Maybe I can get rid of these errors by allowing to slightly deviate from the official inertia specifications.

Sorry, misclosed this.

Is there anything still pending here?
I'm closing for now but feel free to keep discussing.


Allow dynamic schedule for resque scheduler

This changes allow turning on resque dynamic schedule. Also, it fixes resque:scheduler:start not showing up when doing cap -T

Looks good. Thanks!


Feature request: support including third-party (opam or elsewhere) dependencies on jengaroot

I'd like to be able to use e.g. YoJson in my jengaroot. Some of our metadata files are in json.
cc @diml

We are currently looking at this as we are looking into building our public packages with jenga. In the meantine a workaround is to rebuild jenga with an embed YoJson; you can do that by adding yojson there and there.

I have tried this workaround about but stuck with this error
*** jenga: [11392] root=/home/vramana/Documents/reasonml/exampleProject, sys=Linux, j=7, f=2 (NO_VERSION_UTIL)
*** jenga: reading node_modules/rebel/jenga.conf (rebel)
*** jenga: ERROR: Plugin failed: (src/ocaml_dynloader.ml.Dynlink_error
 "error loading shared library: /tmp/ocaml_plugin_0cf334.build/m_dyn_0_.cmxs: undefined symbol: camlYojson")
*** jenga: ERROR: .jengaroot: User-code load failed
*** jenga: (src/ocaml_dynloader.ml.Dynlink_error"error loading shared library: /tmp/ocaml_plugin_0cf334.build/m_dyn_0_.cmxs: undefined symbol: camlYojson")
*** jenga: 0/2 targets are up to date
*** jenga: failed (#1, 0ms, heap=204.312m, stat=35, digest=1, ls=1, db-save=0)
*** jenga: todo: 0 (0 / 2) !1 ~1 j=0+0 con=2 save=0 act=0, finished
*** jenga: ERROR: (summary) .jengaroot: User-code load failed
*** jenga: (src/ocaml_dynloader.ml.Dynlink_error"error loading shared library: /tmp/ocaml_plugin_0cf334.build/m_dyn_0_.cmxs: undefined symbol: camlYojson")
*** jenga: build finished; not in polling mode so quitting
*** jenga: Quit; exit_code = 1

I don't have much time to debug this at the moment, but one another approach you could try is to build a jenga with the rules statically linked in. We have an example with the Jane Street rules here.
Essentially you need to write a .ml file containing:
open Core.Std
module J = Jenga_lib

let root_markers =
  [ ".git"
  ; ".hg"
  ]
  |> List.map ~f:J.Path.Rel.create

let () =
  J.Cli.main () ~run:(fun config ->
    let root_dir =
      J.Special_paths.find_ancestor_directory_containing
        ~one_of:root_markers
      |> ok_exn
    in
    J.Run.main' ~root_dir (Env Jenga_rules.Root.setup) config)

and compile it as a normal program. Jenga_rules.Root is the module containing the rules.

Thanks for the quick reply. I can understand the above code snippet but I don't know how I can use it with https://github.com/reasonml/rebel I will try to think some more about it.
Documenation around jenga is extremely scarce. If I have more questions, where I can ask them?

I guess you would need to replace Jenga_rules.Root by Rebel and link the Rebel module in.
You can ask jenga questions on the jenga project on github or on the<EMAIL_ADDRESS>mailing list


It takes too long to execute the empty operation on Ubuntu18.04.

Testcase
namespace Quantum.Kata.Superposition {
	open Microsoft.Quantum.Intrinsic;
	open Microsoft.Quantum.Canon;

	operation MinusState(q:Qubit) : Unit {
	}

	@EntryPoint()
	operation main() : Unit {
		use var0 = Qubit();
		mutable loops = 1;
		repeat {
			mutable tmp = MinusState(var0);
			Reset(var0);
			set loops += 1;
		} until (loops > 923);
	}
}

Enviroment
Operating system: Ubuntu18.04
dotnet version: 3.1.410
QDK: 0.18.2106148911
Command：
dotnet run
Description
As shown above, the testcase has an empty operation MinusState. When executing the testcase on Windows, it takes about 8 seconds. But it takes  about 87 seconds on Ubuntu18.04. After I fill the operation with the Hadamard transformation as shown below, it just costs about 6 seconds on Ubuntu18.04 and about 8 seconds on windows. May I ask Why it happens?
namespace Quantum.Kata.Superposition {
	open Microsoft.Quantum.Intrinsic;
	open Microsoft.Quantum.Canon;

	operation MinusState(q:Qubit) : Unit {
	    H(q);
	}

	@EntryPoint()
	operation main() : Unit {
		use var0 = Qubit();
		mutable loops = 1;
		repeat {
			mutable tmp = MinusState(var0);
			Reset(var0);
			set loops += 1;
		} until (loops > 923);
	}
}

That is an interesting one. No idea why that would be.


YT Audio Bug

Script version
Version 5.5
Describe the bug
Sometimes immediately, sometimes after several seconds, a second audio track plays with the video.
The second track is sometimes the audio track for the video that is already playing (doubling effect).
Other times it's the audio for an ad, which is followed by audio for the video already playing.
Expected behavior
Removing the Adblock thing without allowing this audio track to occur in the background.
Desktop (please complete the following information):

OS: Win10
Browser: Chrome
Version: 125.0.6422.142

Additional context
It should be noted that this bug has been occuring since the 5.4 update and was not addressed with 5.5
Also the video for YT shorts appears to cut out now after a few secs while the audio continues to play.

yuup same problem bro

Same problem here :(

Same issue on Firefox.

Fix that worked for me:
https://github.com/TheRealJoelmatic/RemoveAdblockThing/issues/460#issuecomment-2146297048

I have same problem too.

I am having the exact same issue. I always have to refresh the video page a couple of time to play properly. The first attempt without a refresh plays both the audio associated with the main video and the one from ads. When the page is refreshed for the first time, then only the audio for the video plays but it echoes.

Fix that worked for me: #460 (comment)

This is a solid temporary fix for sure.
Hopefully we can get a real fix somewhere down the line before YT makes things worse.

This is a solid temporary fix for sure. Hopefully we can get a real fix somewhere down the line before YT makes things worse.

It appears YT is catching up to this version and i'm getting the block screen, but only for the first ads. One or two refreshes and an ad free version will start, and the mid roll ads work fine. But we're definitely going to need a working fix for this soon.


Short solution needed: "How to change resolution" (ffmpeg)

Please help us write most modern and shortest code solution for this issue:
How to change resolution (technology: ffmpeg)
Fast way
Just write the code solution in the comments.
Prefered way

Create pull request with a new code file inside inbox folder.
Don't forget to use comments explain solution.
Link to this issue in comments of pull request.

How to change video resolution


Security warning due to Pillow

https://github.com/os-climate/corporate_data_extraction/security/dependabot/19
It has to be checked if we can easily upgrade to the suggested Pillow version.

Additional note: A lot of the security warnings are due to Pillow.
https://github.com/os-climate/corporate_data_extraction/security/dependabot

Sorted today.