Whitelist assets.adobedtm.com

assets.adobedtm.com is needed by lowes.com

@jonozzz I was able to access https://m.lowes.com with assets.adobedtm.com blocked, what issues are you having?

@jonozzz I just used Little Snitch on this and I cannot see assets.adobedtm.com requested by lowes.com or lowes.ca.
Please clarify?

This is what I get in Chrome:

Try logging in. I think that's where it was dying.

@jonozzz  the domain assets.adobedtm.com is flagged by two of our data sources, mvps.org and @lightswitch05.
I trust our curators.
Daniel @@lightswitch05 will evaluate this.  As for mvps.org, please take this up with them at<EMAIL_ADDRESS> If they both agree to remove their flags, then assets.adobedtm.com will be unblocked.

@jonozzz Please provide some information about the issues you're having. Do you have problems with the elements like pictures etc. on lowes.com?

Yes, with assets.adobedtm.com pointing to <IP_ADDRESS>, open https://m.lowes.com/, click myLowes and login using your lowe's credentials.
Result: page will hang indefinitely, the JS console shows the following error:
Uncaught ReferenceError: _satellite is not defined
at i (account-small.min.js:2)
at t (account-small.min.js:2)
at Object. (account-small.min.js:2)
at d (scaffold.min.js:4)
at Object.fireWith [as resolveWith] (scaffold.min.js:4)
at i (scaffold.min.js:6)
at XMLHttpRequest.e (scaffold.min.js:6)
Expected: login successful and user is redirected to the account home page.

@jonozzz I verified some weirdness with login on Lowes's website - at least on the desktop site, I did not try mobile. When I clicked 'Sign In' using my correct username and password - nothing seemed to happen. I also verified the _satelliteerror in the console. However, when I refresh the page, I'm logged in. It looks like login is successful - its just the logic that closes the popup and refreshes your login info is broken.
assets.adobedtm.com is a hugely popular tracker - I see it all over the internet. I'm really hesitant to remove it over this single issue. Especially since it seems like the login is working successfully after a page refresh. I did send Lowes an email about it, so perhaps they will fix it on their end.

Lowe's response:

This Adobe host is used when assets/an entire site are (somewhat incorrectly, but legitimately) exported from Adobe XD or any of their newer apps when used alongside XD. I also had to whitelist it in order for the new Chelsea FC website to function correctly (along with 'sp.auth.adobe.com'). I agree that it is poor implementation on their part, but if it's happening with some of these large corporate redesigns, I can imagine that we will only see more and more sites having the same issue.

@WillPresley sp.auth.adobe.com is not currently blocked in this project.
It looks likes assets.adobedtm.com was whitelisted by MVPS. Its without a doubt a tracking site, but if its causing a lot of people issues I'll move it to my aggressive list, which is not in this project. If anyone doesn't mind a few broken sites, I recommend adding assets.adobedtm.com to your own blocklists.

Closing...

Closed GH issue I know, but wanted to just add that CrateAndBarrel.com also relies on JavaScript hosted on that domain in order for their product details pages to work. When blocking that domain (Privacy Badger in my case) color picker and other product details javascripts spew JS errors.

assets.adobedtm.com is no longer blocked in this project

Also thought I'd let you know that the login for https://www.disneytravelagents.ca/doesn't work with assets.adobedtm.com blocked

Hi @matthewparkes, assets.adobedtm.com is blocked by a rock-solid curator, the fine folks over at mvps.org.  Please take this up with them at email<EMAIL_ADDRESS>Thanks!

This Adobe host is used when assets/an entire site are (somewhat incorrectly, but legitimately) exported from Adobe XD or any of their newer apps when used alongside XD. I also had to whitelist it in order for the new Chelsea FC website to function correctly (along with 'sp.auth.adobe.com'). I agree that it is poor implementation on their part, but if it's happening with some of these large corporate redesigns, I can imagine that we will only see more and more sites having the same issue.

Of curse you will see more of this. Why? because you let them. If you write to them telling them they lost a user whom they could track and sell data from, and to manipulate you to spendt more of your hard earned money on there product, which I'll guess is something with a ball, then things would start changing.

I know my answer to this, what is yours answer? think about it next time you're about to do some whitelisting, and the long term consequences of it..

FWIW: I needed to whitelist this (on one device; trial and error with 10 domains) for MSNBC and Eurosport Apps to work on Android TV


Add missing error messages to asserts in QuotesImpl

closes #20946

Right! I didn't think about the fact that the whole stack trace is very implementation dependent. Looks a bit hacky now, but works. Nice catch!


Fix setting breakpoint on solution load = no logs.

Because projections can be requested from soooo many different pieces of the Razor sub-system (debugging being one of them) we need to initialize our logger whenever projections are attempted to be resolved. This may seem expensive but 99.9% of the time the async method will run synchronously resulting in no harm to perf.

Found because this Debug.Assert being hit:

Fixes dotnet/aspnetcore#32088
/cc @TanayParikh would you mind taking a look since this touches on the LogHub infrastructure you added.

You'll need to update the strict mocks in your tests though.


DMP-1033-View-Transcript-Via-Your-Transcripts

Jira link (if applicable)
https://tools.hmcts.net/jira/browse/DMP-1033
Change description

Removal of dependency on Case Service endpoint to return reporting restriction
Changes to reflect reporting restriction data from transcription endpoint

Checklist

[x] commit messages are meaningful and follow good commit message guidelines
[x] README and other documentation has been updated / added (if needed)
[ ] tests have been updated / new tests has been added (if needed)
[ ] Does this PR introduce a breaking change

There are Functional tests for view transcript from your transcripts

Here's the link to the PR with the Functional tests for view transcript from your-transcripts
https://github.com/hmcts/darts-portal/pull/565/files#diff-ed53b4dd7d0c3da21fc5561f35abf806fb32aef0a8afe31effa4e99d5cc40f6e


Roll Engine from 1d537824d6d2 to 42019c836157 (10 revisions)

https://github.com/flutter/engine/compare/1d537824d6d2...42019c836157
2021-02-13<EMAIL_ADDRESS>Roll Fuchsia Linux SDK from YMY-cajLa... to AjjJVX_95... (flutter/engine#24381)
2021-02-13<EMAIL_ADDRESS>[canvaskit] fix Path.from (flutter/engine#24382)
2021-02-12<EMAIL_ADDRESS>Roll Skia from 2494942f0d8d to 6e73404a782c (3 revisions) (flutter/engine#24383)
2021-02-12<EMAIL_ADDRESS>Roll Skia from 3354f8c4f8cb to 2494942f0d8d (4 revisions) (flutter/engine#24380)
2021-02-12<EMAIL_ADDRESS>Fix vulkan surface leaks. (flutter/engine#24372)
2021-02-12<EMAIL_ADDRESS>Roll Skia from 28698696f1b3 to 3354f8c4f8cb (2 revisions) (flutter/engine#24378)
2021-02-12<EMAIL_ADDRESS>Roll Dart SDK from 1e0fec6e48cf to add1eac3622c (1 revision) (flutter/engine#24375)
2021-02-12<EMAIL_ADDRESS>[canvaskit] support adding leaf layers w/o container layers (flutter/engine#24357)
2021-02-12<EMAIL_ADDRESS>Roll Skia from ec24154521f3 to 28698696f1b3 (4 revisions) (flutter/engine#24374)
2021-02-12<EMAIL_ADDRESS>Replace Flutter surface only after all platform views are destroyed (flutter/engine#24363)
Also rolling transitive DEPS:
fuchsia/sdk/core/linux-amd64 from YMY-cajLa0mb to AjjJVX_95iiT
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC<EMAIL_ADDRESS>on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Commit queue failed; closing this roll.


Added new option allowing for multiline cards with empty lines

Added multilineCardEndMarker setting storing a delimiting string. The user can choose for example '---'. This allows handling flashcards with empty lines, without resorting to expedients such as hidden characters to mimic the empty line.

Hi @alberti42, I've just noticed that you have rearchitected the parser from the ground up. You must have put in much time and thought into this!
@4Source initiated the discussion Rework the flashcard seperator/detecting system #1018 noting that there are many outstanding requests that relate to the parser and that it's not very easy to enhance in its current form.
(The list including the issue titles at https://github.com/users/ronzulu/projects/1)
So your rearchitect of this part of the plugin might be perfect!
I don't have familiarity with https://github.com/pegjs/pegjs/wiki, one question that comes to mind is regarding tokens that you currently have hardcoded in grammar.pegjs. Will you be able to modify this to use the settings contained in:

@4Source and @st3v3nmw given the significance of the changes in this PR, would be great if you could both look at this as well.
Cheers
Ronny

Hi @alberti42 thanks for this, many people have been after this for a long time, and will be very happy when it is released.
A few requests:
1. Currently some of the existing unit test cases fail. Please update your enhancement so that the existing tests all pass. See https://www.stephenmwangi.com/obsidian-spaced-repetition/contributing/#code for details

2. Update the user facing documentation, see https://www.stephenmwangi.com/obsidian-spaced-repetition/contributing/#documentation

3. Let me know and I'll review at that time

4. We will need some new unit test cases. You may prefer to wait till I complete step 3. and provide feedback about functionality.

Thanks once again! Cheers

It required much more work than what I thought because I wanted to have a clean solution. I created a true parser. It is quick and easy to maintain for the future. The old parser was quite untransparent and could not be easily extended.
The new parser makes use of Peggy. The rules are defined with peggy.pegjs. You can find highlighter to supper in your editor highlighting of peg.js syntax.
If you modify peggy.pegjs, you need to run npm run grammar to generate automatically peggy.mjs file, which is the real parser.
The peggy.pegjs can be tested with https://peggyjs.org/online.html, which is great when you want to test the different grammar rules.
The only part that is not nice in peggy.pegjs is the block called HACK. You will see it.  The purpose is to allow the user-defined keywords, when the user wants to redefine "??" or "?".
For the multilineCardEndMarker separating multiline notes, I like to use '---'.
If you leave the field empty in Obsidian configuration pane, then the old behavior will apply.

Hi @alberti42, I've just noticed that you have rearchitected the parser from the ground up. You must have put in much time and thought into this!
@4Source initiated the discussion Rework the flashcard seperator/detecting system #1018 noting that there are many outstanding requests that relate to the parser and that it's not very easy to enhance in its current form. (The list including the issue titles at https://github.com/users/ronzulu/projects/1)
So your rearchitect of this part of the plugin might be perfect!
I don't have familiarity with https://github.com/pegjs/pegjs/wiki, one question that comes to mind is regarding tokens that you currently have hardcoded in grammar.pegjs. Will you be able to modify this to use the settings contained in:
@4Source and @st3v3nmw given the significance of the changes in this PR, would be great if you could both look at this as well.
Cheers Ronny

Sorry, I did not see this message when I wrote the previous one just a moment ago.
Yes, we have a new parser, which should be much easier to understand and maintain. The rules can still be simplified a tiny bit to make the grammar more streamlined.. but let's first see what you think of it.

I don't have familiarity with https://github.com/pegjs/pegjs/wiki, one question that comes to mind is regarding tokens that you currently have hardcoded in grammar.pegjs. Will you be able to modify this to use the settings contained in:

It now works with the user-based keywords. For this, I required what I called a HACK in the previous message. The HACK is pretty straightforward and does not compromise efficiency. At least, it does not make it slower. However, cosmetically, it does not look nice if you are a purist of good coding.

For the multilineCardEndMarker separating multiline notes, I like to use '---'.

I think this is a bad Idea we had already issues with the --- because it is used in other formatting like tables or horizontal lines

If you modify peggy.pegjs, you need to run npm run grammar to generate automatically peggy.mjs file, which is the real parser.

If I understand this correctly I think how this works should be well documented somewhere in dev guide

Sure. I did not say that this needs to be the default behavior. This is just what I find nice for me. From the preference pane, the user can choose --- or +++ or any other sequence of characters she/he likes.

I just meant this should not be the default setting. So user who try this plugin for first time or user there not investigate in the settings have a normally functional experience

Sure. I did not say that this needs to be the default behavior. This is just what I find nice for me. From the preference pane, the user can choose --- or +++ or any other sequence of characters she/he likes.

I just meant this should not be the default setting. So user who try this plugin for first time or user there not investigate in the settings have a normally functional experience

I agree 100%. Actually, I would have left the field as empty as the default setting. When empty, the old behavior applies, which is what probably people in the community expect.

That's great!
@alberti42 , there may be an alternative to the HACK. Have you come across this? Does this help?
 Dynamically generate / parse rules based on configuration #512
Cheers
Ronny

That's great!
@alberti42 , there may be an alternative to the HACK. Have you come across this? Does this help?  Dynamically generate / parse rules based on configuration #512
Cheers Ronny

Hey Ronny,
Thanks! Yes, I had read the page before. You can indeed use predicates & { predicate } to evaluate whether an expression finally matches or not. This is also nicely documented in https://peggyjs.org/documentation.html.
I have used such predicates already for evaluating dynamically the flags deciding what sybols define a close. They work nicely.
The reason why I did not use it for the other symbols such as ? and ?? is because I thought the parsing efficiency may be affected. But we can give it a try.
To try this, we would need to define our own grammar of what are the sequences of characters the user is allowed to type. In principle, we could decide any characters except newlines. However, my guess is that the predication function will be evaluated a lot of times to decide if there is a match or not.
There are also other options if you do not like the HACK (I don't like it either).
We could generate the parser.mjs anew directly in Obsidian every time the user changes the configuration in the setting pnae. This happens only rarely anyway, and peggyjs is quite fast to generate from the grammar.pegjs a new .mjs file. The downside is that we need to ship with the app the entire transpiler of peggy.js. So, I would avoid it if we find other and better solutions.
The other possibility is that we use in the grammar.pegjs different PLACEHOLDERSTRINGS123 for each of the strings to be then replaced by the user.
We then write a little .js program of a few lines introducing a second-step transpiler. The purpos is to process the parser.mjs generated by peggyjs. This step can be combined with npm run grammar. So it will look like as a single step for the developer of other features.
Such second-step transpiler replaces the static placeholders with javascript code importing the values for each placeholder from the variable options. In fact, you may have noticed that it is already possible to dynamically provide content to peggyjs parser, and we are already using it.
This last approach is possibly the most elegant, but not without caveats. If we use static placeholders, peggyjs optimizes the parsing by detecting their string length. Our transpiler would have to replace in the .mjs code the static length with one dynamically optained from the user variables. This is quite efficient in terms of execution speed. However, the transpiler is a bit fragile because it needs to do a surgery on the .mjs file about the length of the PLACEHOLDERS. If something changes in future versions of peggyjs, these changes may break the compatibility with our transpiler, and some small fix will be needed.
Other possibilities. I know it is possible to create plugins for peggyjs, but I do not know if these allow to have dynamical keywords.
And the last possibility, we improve peggyjs and make a pull request to introduce the feature of dynamical keywords.  😅
Bottom line:
If you are happy with the parser, I would focus on testing all features, removing any possible small bugs, and streamlining the grammar file. It can be cleaned up a little. We can then release with the community.
We could think how to replace the HACK in the future. In my assessment, the HACK has no impact on the execution speed or anything else. It is not elegant, and it is not easy to understand someone just opens the code for the first time, and was not given any explanation.
Best,
Andrea

Hi @alberti42 thanks for such a comprehensive post!
If I understand correctly, the best way would be for the parser to be generated whenever any of the relevant user options are changed. The downside is needing to include the peggy package (and it's dependencies) increasing memory requirements.
Out of curiosity, I tried the following code which dynamically generates the parser:
test("hello", () => {
    var peg = require("peggy");
    var inlineMark = '"::" / "--"';
    var grammar = `
start
    = q:question inline_mark a:answer { return "Q: " + q +  ", A: " + a}

question = text

answer = text

text = t:[a-zA-Z ]+ { return t.join(""); }

inline_mark = ${inlineMark}
`
    var parser = peg.generate(grammar);

    var actual = parser.parse("What should I eat for dinner::chocolate cake");
    expect(actual).toEqual("Q: What should I eat for dinner, A: chocolate cake");

    actual = parser.parse("What should I eat for dinner--chocolate cake");
    expect(actual).toEqual("Q: What should I eat for dinner, A: chocolate cake");
});

I think this is a very clean solution. In terms of package size, I came across this web site:
<EMAIL_ADDRESS>It reported:

To me, the benefit outweighs the additional memory usage.
I'm wondering if you have had a chance to look at some of the other related PRs and issues:
https://github.com/users/ronzulu/projects/1
With some of those, there will be more user options, and so whatever we come up with needs to handle the future requirements.
Cheers
Ronny

I tested your example and worked very nicely. Great that it is so smooth to generate the parser from the grammar.

var parser = peg.generate(grammar);

I agree, speed and memory consumption should not be a problem. Even if this operation takes a bunch of ms, it is only executed rarely, when the user changes the keywords in the configuration pane.
I would only add a debouncing solution, so the function is not called to many times, each time that the user press a key in the editing field; see for example https://github.com/alberti42/obsidian-plugins-annotations/blob/main/src/main.ts#L566

I'm wondering if you have had a chance to look at some of the other related PRs and issues: https://github.com/users/ronzulu/projects/1

Not really. Is there anything in particular you think it is important to consider? I think the parser is very powerful and I cannot imagine a situation that cannot be handled.
I was surprised that currently all parsed information is not really stored. At the end, you only store the beginning and end position of the card. In principle, one can make more use of the parser and store the different parts of a flash card in different fields, with annotated the position in the text. But, it seems you did not need this extra structuring of parsed information... so maybe we do not need to put extra work on something like this that is not really needed.

Any idea when this PR will be merged ?

I tested your example and worked very nicely. Great that it is so smooth to generate the parser from the grammar.

That all sounds great. Are you planning to update your code to use this technique?

Not really. Is there anything in particular you think it is important to consider? I think the parser is very powerful and I cannot imagine a situation that cannot be handled.

I'm sure you're right, so let's not worry about future changes right now.
Thanks!

That all sounds great. Are you planning to update your code to use this technique?

I have implemented it. It worked for my usage cases. There are some tests that did not pass yet. I will have to look at them in the next days to understand what goes wrong. Hopefully, it will be a very quick fix.
I tested the time to generate the parser. It is already in the debouncing function, which avoids generating the parser too many times if the user changes the options very quickly.
In any case, it takes on my laptop 20 ms. Which is superfast, given the fact that it is generated only once when the plugin is loaded and every time the user changes one of the relevant settings, requiring producing a new parser. So very seldom.

The other day I was in a hurry and had to leave quickly. I checked the messages generated in the test again. It seems to me that all tests are passed. There is some red warning because of some part of code that are never reached. This concerns code when using try /  catch construct. The catch part is only reached and executed if an error is produced. One would need to include in the test modules some tests generating on purpose the error to execute the code in the catch part. Or alternatively, we can remove the try+catch construct (which is not good style either).
So I think it is not so important, and it is very time consuming to write test modules that verify all try and catch constructs. Did you do so before? Or simply avoided using try/catch constructs?
I show you a screenshot of what the result of the tests is:

Will you handle the integration of the pull request into the main branch? Is there anything else you want me to do?

Ok.

Ok. I understood that I need to do some more changes on the test routines. Also my latest commit does not include some changes I did before which I need to reintroduce. I need some more time to finish it. It should not last long.

I made one more commit. I believe everything works. However, many tests are still not passing because the test routines need to be updated to integrate with the new syntax of the parser.
I am afraid I don't have anymore time to invest in this project.
Regarding the test modules, it is often very difficult for me to understand the reasons of certain rules that seem to be inserted ad hoc. For example, I had to debug a test in tests/unit/FlashcardReviewSequencer.test.ts saying:
test("Question starts line after tag (single space after tag before newline); New card", async () => {
                let originalQuestionStr: string = `#flashcards${space}
Q2
?
A2`;

                let fileText: string = `
${originalQuestionStr}

#flashcards Q1::A1

#flashcards Q3::A3`;

                let updatedQuestionText: string = `Multiline question
Question starting immediately after tag
?

It was not clear to me at all why if I give:
#flashcards<space here>
Q2
?
A2

#flashcards Q1::A1

#flashcards Q3::A3

then it expects something without the space after #flashcards. Why to make such a big deal for the space? And why to remove it? Why does it bother? It is hard to understand these rules and generalize them without creating ad hoc solutions. For the case presented above, I created an ad hoc rule recognizing the tags in a multiline card. But it seems to me not the right approach. For sure I am missing something else.
Also, ideally you would like to parse Obsidian tags with the proper parser. I already made a rule in the grammar.
And the frontmatter could be parsed as well with peggy rules without creating any problem. It does not need to be treated separately.
I need your support. We should reduce the test cases and streamline the code. I myself cannot invest any more time in this plugin. I am sorry.
In the worst case, I will create a new plugin for spaced repetitions from scratch with a shorter and cleaner code.

I try to help you with writing and fixing some of the test cases I hope I can push to this pr, if not I will create one on your fork

Ok final attempt.

All tests now passed successfully.
I only modified two tests.
One testing for multicards of basic type with no content in the question. My parser does not detect this type of cards. But I argue, it makes sense. Because what should one reply to a question containing no text? I believe it makes no sense to have such empty questions in a deck. For this test, I added "some content" in the question to make it pass.
The other test I modified was actually disabled. It tests for tags "#flashcard " and checks that the space is removed. I don't understand why we need that. I want to avoid ad hoc patches without understanding the meaning. I presume this is a left over from the previous parser, where all lines added to the cards were treated with "trimEnd()" to remove trailing empty spaces. To implement this with the new parser, it requires quite some extra work, and I would need to understand what the purpose is.
So, from my point of view, the pull request is now ready. You can test it and, hopefully, you will find it useful.

I try to help you with writing and fixing some of the test cases I hope I can push to this pr, if not I will create one on your fork

Hi @4Source, it would be great if you can have a look. I did not notice your reply and worked more on fixing all test cases, with the exception of two, which I explained above in the previous post. Hopefully, this simplifies your work because in my view, everything works now, if you accept the two test cases I have modified.

The other test I modified was actually disabled. It tests for tags "#flashcard " and checks that the space is removed. I don't understand why we need that. I want to avoid ad hoc patches without understanding the meaning. I presume this is a left over from the previous parser, where all lines added to the cards were treated with "trimEnd()" to remove trailing empty spaces. To implement this with the new parser, it requires quite some extra work, and I would need to understand what the purpose is.

I think your correct I mean to remember something like this but @ronzulu may now this better I think he wrote the test. If it is like that we should remove it completele

Thanks for the detailed and comprehensive thinking about this. I've read through all the recent posts and hopefully will be able to reply properly over the next few days.
And totally understand @alberti42 that you can't spend any more time on this. Thankfully it seems like there is nothing further for you to do. If I have specific questions before finalising, hopefully you'll have a small amount of time to answer.
I think what you've added allows us to extend what syntax is supported, without pulling our hair out!
Cheers
Ronny

Thank you @4Source and @ronzulu for your comments and review of the PR, and understanding about my time constraints.
Of course, I am happy to still help and support the project. It would be great to see changes integrated in the upstream.

In my opinion this could be a case for syntax error. I personal don't like the solution adding "some text" because this was the test case to cover such problems. I think it would be better to change the expected result or treat it as syntax error but than all files starting with a separator would be seen as syntax error

Let me add some explanation about the parser and what a syntax error is.
The important part is:
main
  = blocks:block* { return filterBlocks(blocks); }

block
  = html_comment / inline_rev_card / inline_card / multiline_rev_card / multiline_card / close_card / loose_line

One way to trigger a syntax error is by removing loose_line in the rule block above. If there are loose lines [meaning lines added by the user that do not belong to any card (e.g., some comments in between cards, a title, or an obsidian tag)] then the parser would not know, without loose_line how to proceed to parse those lines.
Syntax errors by the parser are very bad and you really want to avoid them. If we are parsing a programming language (not our case, but just to make an example), it is clear that a syntax error can be generated when the user writes something that makes no sense or contains some syntax error. Then parser would inform the user that it does not know how to interpret the instructions.
In our case, we do not want to throw errors at the users because they just simply write something beteen two cards, or they use a wrong symbol, for example instead of "??" the user types "???". In my view, it would be bad to display a syntax error. Moreover, when a syntax error is triggered, the parser would stop. Meaning that nothing is parsed at all, it is just an invalid result.
In our case we do not want this to happen. If now the user mistypes "???" instead of "??" nothing bad happens. The parser moves through the card interpreting it as normal loose_lines. Of course, the user will notice at some point that the card is not displayed in the deck and will figure out she/he mistyped.
Regarding the test case for a multiline card with a question set to an empty string "", for me it makes no sense to parse it and add it to the deck. With the present grammar, the parser moves through and ignore this block interpreting it as loose_lines.
If you really insist that the case of an empty block in front of "?" should be accepted as a possible quesiton, we could look for ways to change the parser to accept it. But I personally do not see any compelling reason for it and why we should invest an extra effort on something that is debatable.
So, if you want to remove the try and catch statement, please feel free to do so. If you want to add a test that triggers the catch, you need to modify the code to allow overwriting the grammar with a custom (weaker) grammar that can produce a syntax error. With the present grammar, I cannot think of any possible text that is not parsed to the end. A syntax error is only produced when the parser encounters some text and does not know how to interpret it and thus cannot reach the end of the note/text.

If you really insist that the case of an empty block in front of "?" should be accepted as a possible quesiton, we could look for ways to change the parser to accept it. But I personally do not see any compelling reason for it and why we should invest an extra effort on something that is debatable.

I think we should change the test case and see it as an error case where no card is detected at all.

So, if you want to remove the try and catch statement, please feel free to do so. If you want to add a test that triggers the catch, you need to modify the code to allow overwriting the grammar with a custom (weaker) grammar that can produce a syntax error. With the present grammar, I cannot think of any possible text that is not parsed to the end. A syntax error is only produced when the parser encounters some text and does not know how to interpret it and thus cannot reach the end of the note/text.

@alberti42 I created a pull request to your fork with some small changes I think there would be nice to have. So @ronzulu  please don't rush this pr and merge it before those are in.

@4Source Thank you for the changes and improvements. I took all of them. I did some more commits:

Added tests for multiline clozes with multilineCardEndMarker
Added more comments to the code
Improve parser debug infos
Added a few test cases for testing multilineCardEndMarker
Minor changes to the language translations

In my view, we are ready for the changes to be included in the upstream. What do you think?
Minor question:

All tests passed successfully. However, some code is not executed. I checked the lines of code not executed, and in some cases it seems to me ok that they are not executed because they concern situations that are not triggered with the tests.

All tests passed successfully. However, some code is not executed. I checked the lines of code not executed, and in some cases it seems to me ok that they are not executed because they concern situations that are not triggered with the tests.

Have you fixed the coverage because for me everything is covered? And I think it would be nice to reach the current conditions because there is an different pr I am working on that improves the overall test coverage

All tests passed successfully. However, some code is not executed. I checked the lines of code not executed, and in some cases it seems to me ok that they are not executed because they concern situations that are not triggered with the tests.

Have you fixed the coverage because for me everything is covered? And I think it would be nice to reach the current conditions because there is an different pr I am working on that improves the overall test coverage

I am not sure I understand your question. I did not change anything in src/lang/helper.ts nor in scheduling.ts. I did some minor modifications to the language translation, like I added the translation for the Italian one.
I also did some other improvements to make the code more readable and better, as I posted before. And also added more tests about the new added feature about multiline notes, which were not included yet. So, I think these are still changes you want to have.
So, I am not sure why it is now yellow instead of green. I was hoping you would know what I should pay attention to. I agree that it gives a nice feeling when everything is green.

I was confused because I checked out your branch and for me everything is green

I thought you may changed something since the screenshot.

So, I am not sure why it is now yellow instead of green. I was hoping you would know what I should pay attention to. I agree that it gives a nice feeling when everything is green.

And I am pretty sure the workflow will insist on it that the global threshold coverage is 100%

Thanks a lot for the answer. I was confused too. I tried all tests again and now everything is green. Nothing has changed since when I generated the previous screenshot with yellow warnings. Maybe some cache in the terminal session was causing it (but I would not put my money on it)... anyhow, it seems not important now.
I am glad that we have everything green and passed!

@4Source Some idea for the future. If would be nice to have a toggle that displays what lines are parsed as a flashcard. We could use light green for the background. In this way, if the user mistyped something (e.g., typed ??? instead of ??), then he/she would notice it.
I know how to do it from the point of view of the parser to retrieve this information. But I would have to figure out how to modify the visualization of the flashcards in Obsidian editor. I know it can be done. Alternatively (and a bit more elegant), one could highlight the parsed flashcards in the gutter on the left-hand side of the editor.

@4Source Some idea for the future. If would be nice to have a toggle that displays what lines are parsed as a flashcard. We could use light green for the background. In this way, if the user mistyped something (e.g., typed ??? instead of ??), then he/she would notice it.
I know how to do it from the point of view of the parser to retrieve this information. But I would have to figure out how to modify the visualization of the flashcards in Obsidian editor. I know it can be done. Alternatively (and a bit more elegant), one could highlight the parsed flashcards in the gutter on the left-hand side of the editor.

I like this Idea to give the user a visual feedback there flashcards are working properly. Maybe we could also add a command to display the test for current file.

If we want to discuss this seriously, we should open a different channel.

But yes definitely new channel

In any case, it takes on my laptop 20 ms. Which is superfast, given the fact that it is generated only once when the plugin is loaded and every time the user changes one of the relevant settings, requiring producing a new parser. So very seldom.

Great! Thanks for testing the performance.

There is some red warning because of some part of code that are never reached. This concerns code when using try / catch construct.
S o I think it is not so important, and it is very time consuming to write test modules that verify all try and catch constructs. Did you do so before? Or simply avoided using try/catch constructs?

I agree, sometimes it's too difficult and not worth the effort to get 100% test coverage.

Will you handle the integration of the pull request into the main branch? Is there anything else you want me to do?

I'm only planning to complete the review, and I'll leave merging into the main branch to @st3v3nmw .

then it expects something without the space after #flashcards. Why to make such a big deal for the space? And why to remove it? Why does it bother? It is hard to understand these rules and generalize them without creating ad hoc solutions.

All valid comments. Honestly I don't remember the reason for the test, but presumably there was one. And in this case of a line just containing a tag, there is no reason to care whether or not the trailing space character is removed. I think here it's just a case that the checkUpdateCurrentQuestionText method does an exact string match of the result.
I've deleted the test case that's been commented out.

Also, ideally you would like to parse Obsidian tags with the proper parser. I already made a rule in the grammar.

Just checking… The "tag" rule is defined, but not used at present. Is that correct?

And the frontmatter could be parsed as well with peggy rules without creating any problem. It does not need to be treated separately.

Good idea, that would be cleaner. But I'm sure many other priorities…

In the worst case, I will create a new plugin for spaced repetitions from scratch with a shorter and cleaner code.

Do you still think that might be a possibility? Hopefully not!

Ok, maybe the only usage case of this try-catch statement is for future modifications. If someone does modifications to the rules, it is possible that the parser is not able to parse the whole text without throwing a parse syntax error. But I leave it to you whether to include this try-catch for future possible pitfalls or not. Now we do not need it.

I've added a comment regarding syntax errors into the code.

One testing for multicards of basic type with no content in the question. My parser does not detect this type of cards. But I argue, it makes sense. Because what should one reply to a question containing no text? I believe it makes no sense to have such empty questions in a deck. For this test, I added "some content" in the question to make it pass.

The test description is "Multi-line without question (i.e. question is blank)" - so I've updated the test case to check that only Q2/A2 is parsed
---
?
A1

Q2
?
A2

Some idea for the future. If would be nice to have a toggle that displays what lines are parsed as a flashcard. We could use light green for the background. In this way, if the user mistyped something (e.g., typed ??? instead of ??), then he/she would notice it.

Agreed, let's discuss separately…
Other
I've made some minor naming changes (hopefully makes easier to understand)
not_newline->text_till_newline
_->whitespace
_*->optional_whitespace
[^\\n] -> non_newline
PR

@alberti42 I created a pull request to your fork with some small changes I think there would be nice to have. So @ronzulu please don't rush this pr and merge it before those are in.

I'll try to do the same

Hi @alberti42
Sorry, but I can't work out how to create the pull request.
Are you able to merge the changes from my branch?
https://github.com/ronzulu/obsidian-spaced-repetition/tree/rz-alberti42
Note that I created that branch from upstream master, and not from your repository.
If too difficult, let me know and I'll simply post the small number of files.
Cheers
Ronny

Do you still think that might be a possibility? Hopefully not!

No, I prefer to be helpful with the existing plugin. Some of the code of obsidian spaced repetition is not very stylish, but it gets the job for the user done very well!

Just checking… The "tag" rule is defined, but not used at present. Is that correct?

Yes, it was an attempt to deal with the rule/test we have discussed. It worked, but I felt that the rule/test was not well justified. So, I removed having to deal with tags in the current parser, because it was really ad hoc only for that rule/test.
However, I did not delete it because we may need it one day if we want to expand the parser to properly detect tags and frontmatter.
Also, we already use the parser to identify the different parts of a flashcard. At the moment, we detect all parts, but then throw away this information. It would be much nicer for the code if we store infos about the parsed cards, and then use it later without reparsing the individual cards when using them.

Are you able to merge the changes from my branch? https://github.com/ronzulu/obsidian-spaced-repetition/tree/rz-alberti42

Yes, I have done it. However, the tests now throw hundreds of errors. I checked again. Before, it was 100% pass everywhere.

I've made some minor naming changes (hopefully makes easier to understand)

Yes, I have seen them and agree with the improvements.
The errors in the tests come certainly from other changes you made that do not concern my PR. I simply accepted all your changes in your branch and did not filter those changes regarding my PR only.

The errors in the tests come certainly from other changes you made that do not concern my PR. I simply accepted all your changes in your branch and did not filter those changes regarding my PR only.

Sorry, that's all my fault... this is the first project that I've worked on using git. I think the main problem is that the "squashed commit" didn't track the connection to your branch from where the changes were obtained.
I'll do this cleanly, creating a new fresh branch starting from your "Minor cleanup of the parser grammar"

Hi @alberti42 I've published the new branch https://github.com/ronzulu/obsidian-spaced-repetition/tree/rz-alberti42-v2.
I'm updating the user documentation as well, I'll commit that separately.

Hi @alberti42
As I'm writing up the user documentation, I noticed that your enhancement permits blank lines in the answer of a multiline flash card, but not in the question. Is this intentional?
You've put in so much work into this, what do you prefer?

Release the PR as is, and the modification can be sorted out down the track
We make the change now

A complexity is that there is slightly different behaviour if a blank line is the delimiter or if there are actual characters. No blank line would be needed at the start of the file (or immediately after the front matter)
Cheers
Ronny

I have been closely following this PR mainly because I am super excited about having multiline support . So throwing out my opinion. I feel multiline support is more important than in answer than questions. So I don’t want to delay this PR and would love it to see go out. You can always add multiline support in question as an additional capability. Just my two cents 😬

I have been closely following this PR mainly because I am super excited about having multiline support . So throwing out my opinion. I feel multiline support is more important in answer than questions. So I don’t want to delay this PR and would love it to see go out. You can always add multi line support in question as an additional capability. Just my two cents 😬

@ragrawal We already have multi line support.
<!-- empty line here is important -->
This is a multi line example in <!-- no empty line here -->
the question
? <!-- must be in separate line -->
and in the <!-- no empty line here -->
answer
<!-- empty line here is important -->

the ? is default but you can double check it in the settings Seperator for multiline flashcards

Sorry, that's all my fault... this is the first project that I've worked on using git.

Hi @ronzulu, you can use ChatGPT. It is quite helpful to give you precise instructions what to do from command line if you describe your problem. Git and GitHub support a myriad of possibilities (which is hardly possible to remember and know all).
I am not sure where I have to follow updates. Will you post here in this channel an update when the PR will be finally integrated upstream?

Hi @alberti42
As I'm writing up the user documentation, I noticed that your enhancement permits blank lines in the answer of a multiline flash card, but not in the question. Is this intentional?
You've put in so much work into this, what do you prefer?
1. Release the PR as is, and the modification can be sorted out down the track

2. We make the change now

A complexity is that there is slightly different behaviour if a blank line is the delimiter or if there are actual characters. No blank line would be needed at the start of the file (or immediately after the front matter)
Cheers Ronny

Hi Ronny,
It was intentional from my side because I did not need to make questions spanning over multiple lines. We can think about what a convenient way is to denote the beginning of a question. However, at the moment we do not have a clearly defined symbol where the question is supposed to start. The current implementation checks that we have a block of text without empty lines followed by either "?" and "??".
Of course, we could add in the future a new symbol denoting the beginning of a multiline question containig empty spaces.
One can choose the same characters/symbol to denote the end of a multiline question. In this way, where one question ends, the new one starts.
It kind of make sense to me and can I can imagine it should not be hard to implement. However, I would not delay the release of the new feature for having blank lines in the questions.
Once this PR is released, then we can open a new branch to implement multilines in the question.
That being said, I leave the final decision to you whether you want to have everything together or not. I do not have time in the next days to program this feature but I can imagine in the next 5 weeks it can be done.

I have been closely following this PR mainly because I am super excited about having multiline support . So throwing out my opinion. I feel multiline support is more important in answer than questions. So I don’t want to delay this PR and would love it to see go out. You can always add multi line support in question as an additional capability. Just my two cents 😬

@ragrawal We already have multi line support.
<!-- empty line here is important -->
This is a multi line example in <!-- no empty line here -->
the question
? <!-- must be in separate line -->
and in the <!-- no empty line here -->
answer
<!-- empty line here is important -->

the ? is default but you can double check it in the settings Seperator for multiline flashcards

Sorry by multiline, I meant empty line support in answer . Lot of my cards have table and equations. They do tend to have empty lines . Hence waiting for this PR

Hi Ronny, sure, no problem, let me when you are ready and then restore the old branch of mine and repeat the merge with your branch.

(Note: I've never had to restore a branch to a previous state. Hopefully that can be done safely.)

@ronzulu Not sure this helps you but you can revert a commit. Alternatively you can reset branch without losing the changes not sure how good this works for already pushed commits
I would recommend first trying to use reset keeps the history cleaner
git reset HEAD~<number of commits to go back> Keeps the changes as staged
git revert <commit> creates new commit which undo all back to the commit

Hi @alberti42
I think I've found a bug whilst writing the user notes.
Here is a multiline card with a table in the answer...

Table with preceding blank line and+++.md
This displays correctly during review...

But after clicking on hard, the scheduling info isn't added to the file, and this error is shown in the error log

obsidian.md-1724468486804.log
Cheers
Ronny

Hi Ronny,
Good that you found the bug. Can you provide the text of your flash card and how you configured the delimiters? In other words, are you using the default settings? Or you chose some special character/symbol?
I will have a look at it.

To my understanding it has nothing to do with the tables.
Testing card
?

Line 1
Line 2

---

The problem seems to be when you have multicards with empty lines and there is an empty line after ?. I will check the details.

Hi Ronny,
I found the problem. It was my fault. I used .trim() instrad of .trimEnd() in the parser. I fixed the problem and added one more test case.

Hi @alberti42 I've completed changes to the user guide at:
https://github.com/ronzulu/obsidian-spaced-repetition/tree/rz-alberti42-v2
Feel free to merge and make any changes.
The end is in sight!

Wonderful. I accepted all your changes. All tests are green!!

Thanks @alberti42, @ronzulu & @4Source for the work put in!

Thanks @alberti42, @ronzulu & @4Source for the work put in!

I think if this was IRL we would be going to the pub for a drink to celebrate :-)

So do I just need to reinstall the plugin to get the latest version of the spaced repetition plugin

I think if this was IRL we would be going to the pub for a drink to celebrate :-)

🎉🎉🎉 Absolutely 😀

So do I just need to reinstall the plugin to get the latest version of the spaced repetition plugin

I don't think you need to uninstall it. However, you need to wait for the upstream changes to be part of the new release. I am not sure when this will happen, but I celebrate that the changes are now part of the upstream and the release will happen at some point.

wondering when will this be available. Seems like the updated the plugin was never released. The github page shows the last release to be 1.12.5 which was about a month ago

This is now part of the latest beta release:
https://github.com/st3v3nmw/obsidian-spaced-repetition/discussions/1011

wondering when will this be available. Seems like the updated the plugin was never released. The github page shows the last release to be 1.12.5 which was about a month ago

Hi @ragrawal, wondering if you've had a chance to try this out yet. #1011

I started using it. Thanks. It’s working great. Didn’t notice any issue .


Carousel - display multiple items

It would be nice to be able to set the amount of items to display.
If I have a page wide carousel with 50 content items (product photos for instance), it would be nice to be able to show 5 items per time.
Also with the option to display more items in the carousel container, the following extra options and functions would be needed for flexibility.
Options:
displayitems = number - default 1
skipsize = number - default displayitems
direction = string - horizontal | vertical default horizontal
Functions:
skip(amount_of_items:Number - default 1, direction:String(next | previous) - default next)
I hope this makes sense! Thanks

just another limited idea bro...thing about the css....quite easy!!!!!!!!!!!

We won't be supporting this anytime soon.


Panic: out of memory when running replay from HTTP API

When running a live batch replay from the HTTP API, kapacitord takes up all the memory and crashes. This happens with any script.
For instance:
TICKscript:
batch
|query('''SELECT LAST(temperature) as temperature FROM "db"."autogen".data''')
.period(5m)
.every(5m)
When running HTTP API (/kapacitor/v1/replays/batch", json={'past': '5m', 'task': 'task'}) it will crash with out of memory
When running from CLI everything is ok: kapacitor replay-live batch -task task -past 5m

stack.txt

seems like the API doesn't handle "past" correctly.
Problem seems to go away when using "start" instead


Split init_plugin in to load + start methods

When running init_plugin in a Rails app, the agent makes explicit references to ActiveRecord::Base and ActionView::Base. This causes these classes (as well as ActiveJob) to run_load_hooks which configures these components before any settings in config/initializers are processed, effectively ignoring those files.
In lib/newrelic_rpm.rb, we create a Rails initializer that loads and runs the agent before Rails config initializers are loaded:
  initializer "newrelic_rpm.start_plugin", before: :load_config_initializers do |app|
    NewRelic::Control.instance.init_plugin
  end

Moving this initializer to run after config initializers are loaded solves the config issue, but creates new problems due to method tracing not being set up before add_method_tracer is used in code.
The proposed solution here splits init_plugin into two methods: setup_agent and start_agent. Since start_agent is what fires off lazy loading in Rails components, this part can be run after load_config_initializers, and setting up the agent environment (along with method tracers) can be run before.
Fixes #662
Reviewer Checklist

[ ] Perform code review
[ ] Add performance label
[ ] Perform appropriate level of performance testing
[ ] Confirm all checks passed
[ ] Add version label prior to acceptance

@kaylareopelle
I made a pass on trying to minimize the methods named *_agent because it was vague (to my eye, anyway) what was going on in these methods, and I didn't want to keep finding new synonyms for start/setup/configure/load/etc. Hence the change from configure_agent to load_config. I was trying to conventionalize using *_agent as the "public-facing" handles to the two-part initialization process.
IMO this is a general problem with init_plugin - see also lines like NewRelic::Agent.agent = NewRelic::Agent::Agent.instance - that I'm reluctant to tackle in this PR. really_start_the_agent is an admittedly silly name for a private method - I intend to change it or simply fold this method back into start_agent.
The comment about the "real" agent refers to calling Agent.start as opposed to the agent shim, which gets installed if init_plugin is called when agent_enabled is false.


Update silencer-lib, silencer-lib_2.13.7, ... to 1.7.14

About this PR
📦 Updates

com.github.ghik:silencer-lib
com.github.ghik:silencer-lib_2.13.7
com.github.ghik:silencer-plugin

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

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.github.ghik" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "com.github.ghik" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #260.


return back chat id, token alias status on token add flow

@h1alexbel thank you for reporting this. I'll assign someone to take care of it soon.

@l3r8yJ this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2023-09-18T20:09:05.827245.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@l3r8yJ Don't forget to close this ticket before the deadline (2023-09-18T20:09:06). You are past the first half of the allowed period.

@l3r8yJ Looks like you've missed the task deadline (2023-09-18T20:09:06). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@h1alexbel this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2023-09-28T20:30:00.978367.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@h1alexbel Don't forget to close this ticket before the deadline (2023-09-28T20:30:01). You are past the first half of the allowed period.

@h1alexbel Looks like you've missed the task deadline (2023-09-28T20:30:01). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@NikiTuz18 this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2023-11-19T14:32:14.902290.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@NikiTuz18 Don't forget to close this ticket before the deadline (2023-11-19T14:32:15). You are past the first half of the allowed period.

@NikiTuz18 Looks like you've missed the task deadline (2023-11-19T14:32:15). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@PavelRyauzov this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2023-11-29T15:01:08.009730.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@PavelRyauzov Don't forget to close this ticket before the deadline (2023-11-29T15:01:08). You are past the first half of the allowed period.

@PavelRyauzov Looks like you've missed the task deadline (2023-11-29T15:01:08). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@lisitsaaa this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2023-12-09T15:31:29.111326.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@lisitsaaa Looks like you've missed the task deadline (2023-12-09T15:31:29). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@erstediy this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2023-12-19T16:01:13.070184.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@erstediy Don't forget to close this ticket before the deadline (2023-12-19T16:01:13). You are past the first half of the allowed period.

@erstediy Looks like you've missed the task deadline (2023-12-19T16:01:13). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@LeonovAlexProg this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2023-12-29T16:30:24.488121.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@LeonovAlexProg Don't forget to close this ticket before the deadline (2023-12-29T16:30:24). You are past the first half of the allowed period.

@LeonovAlexProg Looks like you've missed the task deadline (2023-12-29T16:30:24). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@iColdLight this is your task now, please go ahead. Deadline (when this ticket should be closed) is 2024-01-08T16:59:49.446846.
Estimation here is 60 minutes, that's how much you will be paid.
Remember, you don't have to solve everything in this ticket - you can solve it partially and leave todo markers in the code, which will become future tasks.
If you have any questions don't ask me, I'm not a technical person. Open new tickets instead.
If you don't have time or simply don't want to work on this, you can always resign.

@iColdLight Don't forget to close this ticket before the deadline (2024-01-08T16:59:49). You are past the first half of the allowed period.

@iColdLight Looks like you've missed the task deadline (2024-01-08T16:59:49). You are now resigned from this task.
Please stop working on it, you will not be paid. I will assign it to someone else soon.

@h1alexbel I couldn't find any assignee for this task. This is either because there are no contributors with role DEV available or because the project does not have enough funds.
Please, make sure there is at least one available contributor with the required role and the project can afford to pay them.


After accepting a group invitation fez doesn't allow uploading with group credentials

The error message I get with checkbuild is:
=<< "raku-community-modules" does not match the username you last logged in with (vrurg) or a group you belong to,
=<< you will need to login before uploading your dist

The config file has this entry:
"groups":[{"group":"raku-community-modules","role":"member"}]

The bug is in the following line in Fez::CLI:
  if !($meta<auth>.substr(4) (elem) [(config-value('un')//'<unset>'), |(config-value('groups')//[])]) {

It tries to match a string with group name from auth key with a hash of group information. I.e., after adding a debug print here is what I see:
Match: raku-community-modules
match with: [{group => raku-community-modules, role => member}]

Thank you for the PR - approved


Add tutorials on Curry-Howard Isomorphism

The following should also contain some common isomorphisms and code samples from supported languages. The user should be able to select which language to choose for the samples.

Hello,
Not exactly a tutorial, but this talk of prof. P. Wadler is an amazing introduction to the Curry-Howard Isomorphism.
If you want I can write a summary of the ideas mentioned there.
Regarding the common isomorphisms and code samples I'll have to do further research.
Overall really interesting enhancement, I'd love to work on this.
Cheers !
ps: Also these two talks of prof. Wadler [1][2] are very interesting as well, if you haven't watched them before. And finally, this paper [3] of prof. Baez is a must read, if only to keep the final result, the table with all the isomorphisms between the scientific fields mentioned there, that I believe is related to the Curry-Howard isomorphism.

[1] YouTube: "Everything Old is New Again: Quoted Domain Specific Languages"
[2] YouTube: "Categories for the Working Hacker"
[3] Arxiv.org: Physics, Topology, Logic and Computation: A Rosetta Stone

Not exactly a tutorial, but this talk of prof. P. Wadler is an amazing introduction to the Curry-Howard Isomorphism.
Yes, I've watched this one before. It may actually be one of the resources I used to learn Curry-Howard Isomorphism. It's really useful.

@mlliarm I'd really appreciate it if you would work on this. It's good to see other people also interested in these topics.
Thanks for the links. I think I've only watched the second one.

I'd love to, @melvic-ybanez ! Thank you for creating such an interesting project !
Feel free to assign this issue to me.
If I write the tutorial/notes of the talk (and perhaps the basic ideas from Howards' paper) in Markdown, would it be okay?
Cheers !

The plan is to eventually add the tutorial to the UI. So users can select a Tutorial menu item and see a new panel of explanations and examples. However, we can also have a separate task for that.
For now, it's okay to write it in Markdown, unless you also want to write the UI. I'm also open to other suggestions.

@melvic-ybanez I'll start with the Markdown and then I can help with the UI, but will need some help to get started (like directions etc), because I don't know much about UI development. Thanks again.

Sorry, I got distracted from work and stuff. I'll try to start what I said earlier this week.

No worries @mlliarm! The steps look good to me. Thanks for taking this one.


cant change window height/width on windows once window has loaded.

Only resizeTo works which doesn't look good

This issue comes into scene when using xul wrapper and iframe. No such issue when using html.


Fixed app crashing and language issue

If multiple language is present for a field, then I am always taking the first one.


Doesn't run. No message or anything at all

VS Code Version: 1.23.1
node -v:  8.11.1
npm -v: 6.0.1
My .eslintrc.js
module.exports = {
  "extends": "airbnb",
  "rules": {
    "react/prefer-stateless-function": 0,
    "react/jsx-filename-extension": 0,
    "import/no-extraneous-dependencies": 0, // to allow the convenience package
    "jsx-a11y/anchor-is-valid": 0,
    "react/forbid-prop-types": 0, // for object prop type,
    "import/prefer-default-export": 0,

    "max-len": ["error", {
      "code": 120
    }],
  },
  "globals": {
    "document": true
  },
  "parser": "babel-eslint"
};

I have added the following lines to my user settings:
"eslint.trace.server": "messages",
"eslint.alwaysShowStatus": true,
"eslint.enable": true

But I dont see the eslint icon in the status bar nor the eslint output.

It was working fine before and just now it isn't working any more.
I also have eslint installed locally instead. But before I had eslint installed globally and it was just working fine.
I also tried reinstalling the extension, didn't help either.

Looks really strange. One thing: the ESlint extension only contributes a status bar icon / output channel if you have opened a JS file. Looks like your current file is a JavaScript React file. Have you configured ESLint extension to validate those ?

My ESLint rules are just default. And the weird thing is that it has been working before and there was no changes on my repo or any of my configuration. It just didn't work out of the blue.
I will try to replicate the issue on another machine.

This will be the repo I will be testing out.
And 2 machines:

Home
Office

This issue was opened on the home machine.

Home Machine. ESLint not working

No ESLint in the output window
No ESLint text on the status bar
No error was reported when I removed the semi colon of the same file

I also tried disabling all other extensions and only run ESLint but still no luck

@dbaeumer any other way that I can try to debug this? My last resort is to reinstall vscode but I'd rather not reach that point.

I also found these in the Log (Extension Host)

Reinstalled vscode without deleting the extensions. ESLint still doesn't run

It works now.
Completely removed everything and reinstalled. But kinda annoying to go through setting up again just to fix eslint


Enquiry

Hi, here i wanted to ask is this a post installation guide after installing hyprland in linux,and should i install everything separtely

Bro First you have to install archilnux with minimal installation and then you have to clone this install script repo and then just paste my dotfiles in your .config folder(remember is this repo I have so my BSPWM and grub configs also be careful if you know some racing stuff you will understand )
here is link of installation process https://www.youtube.com/watch?v=W2UFwkgdwNo&list=WL&index=2

Thanks brother for you kind reply
On Fri, 28 Jun 2024, 12:36 Ahmad Hassan, @.***> wrote:

Bro First you have to install archilnux with minimal installation and then
you have to clone this install script repo
https://github.com/JaKooLit/Arch-Hyprland and then just paste my
dotfiles in your .config folder(remember is this repo I have so my BSPWM
and grub configs also be careful if you know some racing stuff you will
understand )
here is link of installation process
https://www.youtube.com/watch?v=W2UFwkgdwNo&list=WL&index=2
—
Reply to this email directly, view it on GitHub
https://github.com/ahmad9059/dotfiles/issues/1#issuecomment-2196277736,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BH3KGEF3E2MMYNCUKIZWOQLZJUDO5AVCNFSM6AAAAABJ7O2GJ2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOJWGI3TONZTGY
.
You are receiving this because you authored the thread.Message ID:
@.***>


js4.red is down

There's a cloudflare 502 error

I have no idea I sold it a few years ago for almost no money and I don't
own the domain anymore.
-Ben
On Thu, Nov 11, 2021, 11:20 AM CubeyTheCube @.***>
wrote:

There's a cloudflare 502 error
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/BenjaminAdams/RedditJS/issues/85, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAC5K3EE6EBMGE66TOYSCVLULP3PFANCNFSM5H26R4OA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

It worked until a few days ago.


WebBluetooth connection issues

Hello, I am trying to implement ble simple server with notify and write services. ESP32-S3
It seems to work well inside nrf connect (to check for debugging)

However when i try to connect via web bluetooth i seem to be getting error:
NotSupportedError: GATT Error Unknown
as soon as i try to subscribe to notifications (i checked if i connect to correct control point and even tried to swap them)
this.ctrlChar = await btService.getCharacteristic(BluetoothTransport.CONTROL_POINT);
console.log(this.ctrlChar);
this.ctrlChar.addEventListener('characteristicvaluechanged', this.resolver.bind(this));
console.log(1);
await this.ctrlChar.startNotifications();

this my code for whole server:
#include "AppSerial.h"

BLEServer* pServer = NULL;
BLECharacteristic* pTxCharacteristic;
bool deviceConnected = false;
bool oldDeviceConnected = false;
uint8_t txValue = 0;

void bleLoop(void* p) {
	while (true) {
		if (deviceConnected) {
			pTxCharacteristic->setValue(&txValue, 1);
			pTxCharacteristic->notify();
			txValue++;
			delay(10);	// bluetooth stack will go into congestion, if too many packets are sent
		}

		// disconnecting
		if (!deviceConnected && oldDeviceConnected) {
			delay(500);					  // give the bluetooth stack the chance to get things ready
			bool success = pServer->startAdvertising();  // restart advertising
			Serial.print("start advertising: ");
			Serial.println(success ? "true" : "false");
			oldDeviceConnected = deviceConnected;
		}
		// connecting
		if (deviceConnected && !oldDeviceConnected) {
			// do stuff here on connecting
			oldDeviceConnected = deviceConnected;
		}
		delay(10);
	}
}

void bleSetup() {
	// Serial.begin(115200);

	// Create the BLE Device
	BLEDevice::init("UART Service");
	NimBLEDevice::setPower(ESP_PWR_LVL_P9);

	// Create the BLE Server
	pServer = BLEDevice::createServer();
	pServer->setCallbacks(new MyServerCallbacks());

	// Create the BLE Service
	BLEService* pService = pServer->createService(SERVICE_UUID);

	// Create a BLE Characteristic
	pTxCharacteristic = pService->createCharacteristic(
		CHARACTERISTIC_UUID_TX, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE | NIMBLE_PROPERTY::NOTIFY
	);

	NimBLE2904* pBeef2904 = (NimBLE2904*)pTxCharacteristic->createDescriptor("2904");
	pBeef2904->setFormat(NimBLE2904::FORMAT_UTF8);

	BLECharacteristic* pRxCharacteristic =
		pService->createCharacteristic(CHARACTERISTIC_UUID_RX, NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE, 128);

	pRxCharacteristic->setCallbacks(new MyCallbacks());

	// Start the service
	pService->start();

	// Start the server
	pServer->start();

	NimBLEAdvertising* pAdvertising = NimBLEDevice::getAdvertising();
	pAdvertising->addServiceUUID(pService->getUUID());
	/** If your device is battery powered you may consider setting scan response
	 *  to false as it will extend battery life at the expense of less data sent.
	 */
	pAdvertising->setScanResponse(true);
	// Start advertising
	pAdvertising->start();

	Serial.println("Waiting a client connection to notify...");

	xTaskCreatePinnedToCore(bleLoop, "bleLoop", 8192, nullptr, 6, nullptr, ARDUINO_RUNNING_CORE);
}

void MyCallbacks::onWrite(BLECharacteristic* pCharacteristic) {
	std::string rxValue = pCharacteristic->getValue();

	if (rxValue.length() > 0) {
		Serial.println("*********");
		Serial.print("Received Value: ");
		for (int i = 0; i < rxValue.length(); i++) Serial.print(rxValue[i]);

		Serial.println();
		Serial.println("*********");
	}
}

void MyServerCallbacks::onConnect(BLEServer* pServer) {
	deviceConnected = true;
}

void MyServerCallbacks::onDisconnect(BLEServer* pServer) {
	deviceConnected = false;
}

what am i doing wrong?

Nevermind, figured it out, if anyone stumbled upon this error, you should not create Descriptor for notify service, it's created automatically. So this code above works just delete those lines:
NimBLE2904* pBeef2904 = (NimBLE2904*)pTxCharacteristic->createDescriptor("2904");
	pBeef2904->setFormat(NimBLE2904::FORMAT_UTF8);


GraphQL: Add description to Volume type and expose thumbnails

Few, if any, chapters will have an official description and so relies on users to create them. Volumes on the other hand, will usually have descriptions created by the publisher.
Similarly to the above and it seems that the DB has an image field for volumes but isn't exposed via GQL.

Few, if any, chapters will have an official description and so relies on users to create them. Volumes on the other hand, will usually have descriptions created by the publisher.

As you pointed out, currently volumes don't have a description column.
I'd suggest you to ask on the #dev channel on the discord server if that field is planned or not for Kitsu V4.
For what is my personal opinion though I stand with your idea, and if turns out it's planned I could do a PR to add it (if no one else does before) when I have some free time to work on kitsu!


Fix isChainSupported in BalanceButton

Found issue:

When showBalance=true on ConnectKitButton and when chain is supported, balance is not properly displayed.
Bad loading on Chain component logo at initialization.
Invalid useConfig hook order inside useChainIsSupported hook.

Proposed solution:

Rename "unsupported" to "isChainSupported" to improve consistency with other parts of the codebase.
Inverse boolean condition to fix the bug on balance.
Proper initial logo loading by adding id prop to Chain component.
Move useConfig hook at the top of useChainIsSupported hook to avoid "change in the order of Hooks" on early return.

This update is now in ConnectKit 1.7.2, thanks @philogicae 🙏


error message testing devkit installation

I think I have devkit installed successfully. But when I tried to test the installation using "gem install json --platform=ruby", all I got was the following error message:
ERROR:  Could not find a valid gem 'json' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://rubygems.org/latest_specs.4.8.gz)
Anyone who can tell me how to solve this problem is greatly appreciated. Thanks

Please Take a look at:
https://gist.github.com/luislavena/f064211759ee0f806c88


update config check and fix generate config error

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: liubo0127:x: Bo LiuBo Liu seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


How to use temperature scaling for binary classification using sigmoid?

My network is trained according to a binary classification approach, so the model outputs as a single logit value which I then convert into probability by applying the sigmoid function. How can I modify the temperature scaling code to apply it to my network?
Thank you in advance.

I think the following approach should work:

Replace the CrossEntropyLoss with BCEWithLogitsLoss
Change the size of self.temperature to number of classes

Sigmoid can be regarded as a special case of softmax where one of the logits is 0: $\frac{e^x}{e^0 + e^x}$. Then we only need to learn the temperature for each class.


How to run run-hic-phaser.sh

Hi, @dudcha
New release of 3d-dna have include the phasing module, but I didn't found the detailed description for the this module. Would you mind how to use this workflow for diploidy assembly?
Zhigui Bao

Hey Zhigui,
Thanks for your interest. Indeed this is now available. The paper is accepted and hopefully should be in print soon, I'll post a link once available here. In the meantime, in brief, the phasing module (phase/run-hic-phaser.sh --help) will take the vcf file (it can be partially phased) and the merged_nodups.txt file (make sure both are with respect to the same reference), extract reads that overlap SNPs passing filter and create chromosome-length phasing. As with the rest of 3d-dna everything's very visual, and phasing hic maps are created along the way that give you an idea of how well the phasing went. The phasing maps are loadable and can be interactively manipulated in JBAT.
Best,
Olga

Hi @dudcha, is there any manual to get phased assembly with 3D-DNA? Thank you in advance.

Hi,
There isn’t one yet, unfortunately, but I’ll work to add a chapter to Genome Assembly Cookbook as soon as possible. For now please see the supplement to Hoencamp et al. 2021: https://science.sciencemag.org/content/372/6545/984/tab-figures-data
And 3d-dna/phase/run-hic-phaser.sh -h
The latter will tell you to pass a vcf and mnd, just make sure the same ref is used for both.
Best,
Olga

On May 30, 2021, at 4:10 AM, chhylp123 @.***> wrote:

Hi @dudcha, is there any manual to get phased assembly with 3D-DNA? Thank you in advance.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hi Zhigui,
This paper is now out: https://science.sciencemag.org/content/372/6545/984
Thanks again for your interest!
Olga

On May 10, 2021, at 10:14 AM, Zhigui Bao @.***> wrote:

Thanks
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Could you please let me know what are the inputs and outputs of phasing mode? Thank you so much!

Not sure if I have responded to this already on the forum, but duplicating here as well.
The inputs are vcf file and the merged_nodups.txt file. The first one represents the list of positions and variations. The second one contains a list of deduplicated Hi-C contacts as generated by the Juicer pipeline.
The output is another vcf file, with phasing information, and "phasing contact maps" as described in Hoencamp et al., 2021 supplement.
Best,
Olga

On Jun 10, 2021, at 8:08 AM, chhylp123 @.***> wrote:
Could you please let me know what are the inputs and outputs of phasing mode? Thank you so much!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/aidenlab/3d-dna/issues/111#issuecomment-858606519, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACLAMG3THLOH3RSRKTQOQNDTSC2LFANCNFSM42U3MRNA.

Thanks. So for diploid samples, how can I get two phased assemblies if the output file is a vcf file?

If you mean how to get a fasta corresponding to one haplotype there are separate tools for that. Note that you are not guaranteed by any means to phase every single variant, so there is variability in what exactly you would output as a haplotype in this case. A phased vcf file is as such more more appropriate format.
-Olga

On Jul 16, 2021, at 6:36 PM, chhylp123 @.***> wrote:

Thanks. So for diploid samples, how can I get two phased assemblies if the output file is a vcf file?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Could you please recommend some tools to generate fasta from phased vcf? It would be very helpful for me. Thank you so much!

https://gatk.broadinstitute.org/hc/en-us/articles/360037594571-FastaAlternateReferenceMaker

On Jul 16, 2021, at 7:22 PM, chhylp123 @.***> wrote:

Could you please recommend some tools to generate fasta from phased vcf? It would be very helpful for me. Thank you so much!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

I see. Thank you so much!

From the Hoencamp et al. 2021 Science paper, I found "The pipeline was used with the following setting to allow for
independent alignment of paired-end Hi-C reads: --Aligner.unpaired-pen=0." If I align with bwa, should I directly align reads in single-end mode?

What are you trying to do? Generate merged_nodups or call snps?

On Jul 17, 2021, at 4:35 PM, chhylp123 @.***> wrote:

From the Hoencamp et al. 2021 Science paper, I found "The pipeline was used with the following setting to allow for
independent alignment of paired-end Hi-C reads: --Aligner.unpaired-pen=0." If I align with bwa, should I directly align reads in single-end mode?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

I guess the pipeline should be: 1) get primary assembly -> 2) call SNP by Hi-C alignment to primary assembly -> 3) phasing SNPs -> 4) generate phased VCF -> 5) output phased assemblies. How do I call SNPs in step 2)? Should I align Hi-C reads in single-end mode?

You can use the recommendation cited in Hoencamp et al 2021 if you have access to FPGA. If not you can use GATK. For Hi-C alignment you can use alignments generated by Juicer. Juicer2 if particularly well suited for this as it produces dedupped bam in addition to merged_nodups. -Olga

On Jul 17, 2021, at 4:50 PM, chhylp123 @.***> wrote:

I guess the pipeline should be: 1) get primary assembly -> 2) call SNP by Hi-C alignment to primary assembly -> 3) phasing SNPs -> 4) generate phased VCF -> 5) output phased assemblies. How do I call SNPs in step 2)? Should I align Hi-C reads in single-end mode?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks a lot. Since I'm not familiar with Juicer, I'm still running Juicer 1.6 instead of Juicer 2. In this case, which alignment file should I use for GATK? Should I use 'topDir/splits/splits/FASTQ_NAME.sam'?

These are not deduplicated, you would have to dedup separately. Just use Juicer2, should save you some trouble.

On Jul 17, 2021, at 6:06 PM, chhylp123 @.***> wrote:

Thanks a lot. Since I'm not familiar with Juicer, I'm still running Juicer 1.6 instead of Juicer 2. In this case, which alignment file should I use for GATK? Should I use 'topDir/splits/splits/FASTQ_NAME.sam'?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Sorry may I ask where is Juicer2? I cannot find it on github release page.

I believe it’s encode branch on the juicer GitHub. This discussion is not very fitting for issues. If you don’t mind, it would be best if this could be moved for the forum https://groups.google.com/g/3d-genomics
Thanks!
Olga

On Jul 17, 2021, at 6:37 PM, chhylp123 @.***> wrote:

Sorry may I ask where is Juicer2? I cannot find it on github release page.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks a lot!


Should we replace urllib(2) with requests?

Right now, we have some code copied over from pip to ensure that urllib(2) will verify SSL certificates and so on.
I think we are better off replacing the lower-level urllib(2) code with the requests library instead. Even pip does so now.
However, we need to check whether requests will allow us to control things like watching for a slow retrieval attack and so on.

requests was introduced with #781. Closing here.


Selectable derive does not work with generic embed sub-fields

Setup
Versions

Diesel: Latest master (b2c58897c39c519a946314bd5b63765d3af56204)

What are you trying to accomplish?
#[derive(Queryable, Selectable)]
#[table_name = "schema::xxx"]
pub struct WithField<T> {
	pub field: i32,
	#[diesel(embed)]
	pub inner: T,
}

What is the expected output?
impl<T, __DB> Selectable<__DB> for WithField<T>
where T: Selectable<__DB> {}

What is the actual output?
impl<T, __DB> Selectable<__DB> for WithField<T> {}

-> fails to compile with "the trait bound T: diesel::Selectable<__DB> is not satisfied".
Solving
Looks like if a field has embed, the Selectable derive should add bounds FieldType: diesel::Selectable<__DB>, regardless of whether the type is generic or not.
This would also allow the Selectable derive to interact as expected with manual implementations of Selectable on a single backend (non-generic).

I'm not sure if there is an easy way to fix this issue. We would need to do some simplified form of type resolution there to understand that the type T is a generic parameter to restrict it to T: Selectable.  We cannot add this bound for any generic parameter, as this would potentially add the bound to non #[diesel(embedded)] fields as well, which may result in unwanted behaviour there.
To workaround this issue, you can add this bound directly to your struct definition. This should also force the bound in any generated code.

We cannot add this bound for any generic parameter, as this would potentially add the bound to non #[diesel(embedded)] fields as well, which may result in unwanted behaviour there.

My suggestion was to add the bound not on the generic types, but on the field types that are embed.
e.g., here:
#[derive(Selectable)]
struct S<T> {
    #[diesel(embed)]
    a: SomeStruct,
    #[diesel(embed)]
    b: T,
    some_field: i32,
}

the where clause would be where SomeStruct: Selectable<__DB>, T: Selectable<__DB>

This would also allow the Selectable derive to interact as expected with manual implementations of Selectable on a single backend (non-generic).

e.g.
struct S {
   ...
}
impl Selectable<Pg> for S { ... }
#[derive(Selectable)]
struct S2 {
    #[diesel(embed)]
    f: S,
}

My suggestion was to add the bound not on the generic types, but on the field types that are embed.
e.g., here:
#[derive(Selectable)]
struct S<T> {
   #[diesel(embed)]
   a: SomeStruct,
   #[diesel(embed)]
   b: T,
   some_field: i32,
}

the where clause would be where SomeStruct: Selectable<__DB>, T: Selectable<__DB>>

That's a great idea and that should be really simple to add. Basically just add a loop over fields here and add the corresponding bounds to the where clause:
https://github.com/diesel-rs/diesel/blob/b2c58897c39c519a946314bd5b63765d3af56204/diesel_derives/src/selectable.rs#L12-L16

for field in model.fields() {
    if field.has_flag("embed") {
        let where_clause = generics.where_clause.get_or_insert(parse_quote!(where));
        let embed_ty = &field.ty;

        where_clause
                .predicates
                .push(parse_quote!(#embed_ty: Selectable<__DB>));
    }
}

Feel free to open a PR with this + a test case showing that it works as expected.


[Feature] enable modular development like springboot modulith or google service weaver

Pre-check

[X] I am sure that all the content I provide is in English.

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Apache Dubbo Component
Java SDK (apache/dubbo)
Descriptions
Currently, there are many concerns in modular development, no matter springboot modulith or google service weaver. We notice that we can achieve those benefit by the modular development.

developing with only focus on his own business
deploy much faster
cost less resource
more simper cooperation with other developers
and so on

So, How to enable modular development in dubbo? Can we discompose the mess  code into small and separated modulars，develop and deploy separately (hot deploy).
Related issues
No response
Are you willing to submit a pull request to fix on your own?

[X] Yes I am willing to submit a pull request on my own!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Dubbo supports multi-layer isolation with ScopeModel https://cn.dubbo.apache.org/zh-cn/blog/1/01/01/dubbo-3-中的三层配置隔离/ and already provides dynamic service export and unexport. For hot deployment, you only need to properly handle dubbo service provider destroy and recreation during module updates..

Yes, ScopeModel provided the isolation in runtime, but for modular development it's also need to define sharing layers. and also there are still many tools needed to get fully benefit of modular development, which from our practical. like

module package into seperated module jar
operation tunnel to install and uninstall the module
communication between models
modular serving system like k8s
and so on

which we can find in koupleless.io


Can't use custom varialbes in message translation built by validate block

For now I can't pass vars there, even more it seems like there is no access to option vars

I need to figure out an API for this. It would be nice if this was "close" to the actual validate block definition.

@solnic any update ?

@dsounded mostly this https://discuss.dry-rb.org/t/plans-for-dry-validation-dry-schema-a-new-gem/215

this will be finally addressed by the rewrite (first step is #440 then I'll add support for message translations and this issue will be fixed, finally).


Support optional Arg

I have a need for an optional argument or two.
This program would behave differently based on whether it has 0, 1, or 2 arguments.  I don't see a way to handle that cleanly in kingpin.  I suspect that is because of the multi-level command support.
Could we add OptionalArg which cannot be followed by anything else (except another OptionalArg)?
  debug =       kingpin.Flag("debug", "Enable debug mode.").Bool(),
  flagged =     kingpin.Flag("flagged", "Enable flagged mode. (make each key name as to whether it came from vault (v) or consul (c)").Bool(),
  productGroup = kingpin.OptionalArg("product-group", "product group to list.").String(),
  template_file = kingpin.OptionalArg("template-filename", "filename of the template file to verify.").String(),

ehj
ehj group
ehj group template_file

Arguments are always optional unless .Required(). The default behavior is exactly as you describe, unless I'm misunderstanding.


angular build adatper draft

angular build adapter script
output directory structure & bundle.yaml file after running adapter:

Removed manually loading angular application builder options & normalizing options
Use build manifest from stdout, verify its format with zod, and then extract the output paths.
Errors and warnings from the manifest will be logged.


optimizer: bool expression folding "self equal" as always true

https://github.com/risingwavelabs/risingwave/blob/34ec26075cf45cd2679f0e30aaa4d4e52eb5187d/src/frontend/planner_test/tests/testdata/output/ch_benchmark.yaml#L693-L694

It's worth noticing that this does not only happen to StreamFilter, but also the predicates of StreamHashJoin and BatchHashJoin.
https://github.com/risingwavelabs/risingwave/blob/34ec26075cf45cd2679f0e30aaa4d4e52eb5187d/src/frontend/planner_test/tests/testdata/output/ch_benchmark.yaml#L3333
https://github.com/risingwavelabs/risingwave/blob/34ec26075cf45cd2679f0e30aaa4d4e52eb5187d/src/frontend/planner_test/tests/testdata/output/ch_benchmark.yaml#L3351
https://github.com/risingwavelabs/risingwave/blob/34ec26075cf45cd2679f0e30aaa4d4e52eb5187d/src/frontend/planner_test/tests/testdata/output/ch_benchmark.yaml#L3370


iOS build fail

Please provide all the information requested. Issues that do not follow this format are likely to stall.
Description
Trying to build on Xcode and it's failing.
This is in RCTConvert.m

My pod file
target 'my_takeouts_restaurant' do
  # Comment the next line if you don't want to use dynamic frameworks
  # use_frameworks!

  # Pods for my_takeouts_restaurant
  pod 'FBLazyVector', :path => '../node_modules/react-native/Libraries/FBLazyVector'
  pod 'FBReactNativeSpec', :path => '../node_modules/react-native/React/FBReactNativeSpec'
  pod 'RCTRequired', :path => '../node_modules/react-native/Libraries/RCTRequired'
  pod 'RCTTypeSafety', :path => '../node_modules/react-native/Libraries/TypeSafety'

  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'React-callinvoker', :path => '../node_modules/react-native/ReactCommon/callinvoker'
  pod 'React-perflogger', :path => '../node_modules/react-native/ReactCommon/reactperflogger'
  pod 'React-runtimeexecutor', :path => '../node_modules/react-native/ReactCommon/runtimeexecutor'
  pod 'ReactCommon/turbomodule/core', :path => '../node_modules/react-native/ReactCommon'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'

  pod 'RCT-Folly', :podspec => '../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec'
  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'

  pod 'Firebase/Messaging'

  use_native_modules!

  target 'my_takeouts_restaurantTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

React Native version:
System:
    OS: macOS 11.1
    CPU: (8) x64 Intel(R) Core(TM) i7-4850HQ CPU @ 2.30GHz
    Memory: 1.93 GB / 16.00 GB
    Shell: 3.2.57 - /bin/bash
  Binaries:
    Node: 15.6.0 - /usr/local/bin/node
    Yarn: 1.22.5 - ~/.yarn/bin/yarn
    npm: 7.4.0 - /usr/local/bin/npm
    Watchman: Not Found
  Managers:
    CocoaPods: 1.10.1 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 14.3, DriverKit 20.2, macOS 11.1, tvOS 14.3, watchOS 7.2
    Android SDK: Not Found
  IDEs:
    Android Studio: Not Found
    Xcode: 12.3/12C33 - /usr/bin/xcodebuild
  Languages:
    Java: Not Found
    Python: 2.7.16 - /usr/bin/python
  npmPackages:
    @react-native-community/cli: Not Found
    react: Not Found
    react-native: Not Found
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Steps To Reproduce
Not sure how this can be reproduce. Previously, it was building fine but after upgrading to 0.64.2, this happened.
Expected Results
Describe what you expected to happen.
Snack, code example, screenshot, or link to a repository:
Please provide a Snack (https://snack.expo.io/), a link to a repository on GitHub, or provide a minimal code example that reproduces the problem.
You may provide a screenshot of the application if you think it is relevant to your bug report.
Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve

Fixed it by adding Yoga to podfile.


Add a connection flush before interrupting

I noticed that sometimes the nats CLI process would exit before the reply command response was sent; this resolves that issue.

Nice catch, mind signing the commit?

Hmm... something is not right... I'll try to fix it.

I tried both signatures...

Not sure where to go from here except try another branch/PR.  Or maybe you can just trust that I'm Colin?  :)

Did you upload the public keys to your GH profile?
If you did then sure will merge

Yeah, I added a GPG, will make another SSH sometime this weekend...

Thanks for trying :)