Major changes for WeasyPrint

Main changes:

ElementWrapper doesn't try to mimic ElementTree's Element, Element's attributes and methods (get) are not available from the wrapper,
a base_url attribute has been added to the wrapper and is automatically taken from the parent if needed,
match returns (specificity, order, pseudo, payload) instead of just the payload.

Fixes (both issues found by Acid2):

selectors with pseudo-classes missing the universal selectors (like html :hover) are now parsed correctly,
the declaration order is explicitely kept to fix cases where two selectors have the same global specificity but their last simple selectors don't have the same specificity:

    This text was red and is now blue.

I'm not really happy with this API, especially with what's returned by match. The goal of this PR is to have a 0.1 version released quickly, use it in WeasyPrint and have a discussion with other users interested in cssselect2 (about the API, #1 and everything else) with a real-life working example.
Selectors level 4 (in cssselect2) and Named pages (in WeasyPrint) are some of the next challenges :wink:.
@SimonSapin is that OK for you?

Feel free to do whatever’s good for WeasyPrint with this repo :) Maybe even move into the WeasyPrint repository? You could still publish packages to PyPI separately if desired. (BTW I just gave you PyPI access.)
I haven’t looked at the diffs, but based on your "main changes" description:

I think ElementWrapper should go further and not be a wrapper at all. Maybe eliminate the children list and instead have previous_siblings, next_sibling, first_child, and last_child links to other elements directly, if that makes matching easier.
Unless you want to support xml:base (which is fairly obscure), the base URL is the same for an entire documents. Maybe it doesn’t need to be stored on each element?
We’ve discussed the match return type on IRC, I think this change should not be needed if you have multiple Matchers. But whatever you find convenient.
I think declaration order was preserved by using a stable sort. Was that buggy?

Maybe even move into the WeasyPrint repository? You could still publish packages to PyPI separately if desired. (BTW I just gave you PyPI access.)

I'd like to see if anyone else is interested in cssselect2 before merging it into WeasyPrint.

I think ElementWrapper should go further and not be a wrapper at all. Maybe eliminate the children list and instead have previous_siblings, next_sibling, first_child, and last_child links to other elements directly, if that makes matching easier.

I agree, I'll do that later.

Unless you want to support xml:base (which is fairly obscure), the base URL is the same for an entire documents. Maybe it doesn’t need to be stored on each element?

Yes, I've added it because it was easier, I should remove it before the release (I think that the hard part is already done in WeasyPrint).

We’ve discussed the match return type on IRC, I think this change should not be needed if you have multiple Matchers. But whatever you find convenient.

I think that having one matcher helps to keep the code simple in WeasyPrint for now.

I think declaration order was preserved by using a stable sort. Was that buggy?

Yes, because in match the relevant_selectors are added in an order related to the specificity of their last simple selector.


/etc/iml/profile.conf does not exist

The latest iml-update-check is expecting an environment file named: /etc/iml/profile.conf.
This file needs to contain:

IML_PROFILE_PACKAGES (a comma separated list of packages)
IML_PROFILE_REPOS (a comma separated list of repos)

Not the actual issue, closing.


error about silent installation in the Windows installer

When I run the windows installer with the silent parameter /S, it appears some errors.

The grooves were installed at the driver C root directory.
The installer don't support to specify directory.

Finally,, I wish the installer can support the silent parameters. Such as: sws.exe /S /D "e:\abc\reaper"

Thanks for reporting this! Fixing for the next update. You can try it here under "Visual Studio 2019": https://github.com/reaper-oss/sws/pull/1255#issuecomment-565788965.


WebTransport

Is it possible to add webtransport support on netcode and target browser games with emscripten?
https://developer.mozilla.org/en-US/docs/Web/API/WebTransport

Why not just use WebTransport directly?


Fix typo in s:buffers()

s:buffers() currently looks for files when running s:convert_for_fzf(), but should use buffers defined right above. Fixes https://github.com/yuki-ycino/fzf-preview.vim/issues/28

Thunks!


Soft delete period for the SharePoint site

Can you confirm what the soft delete period of the SharePoint site associated with the Team is? This page says soft delete for everything in the group is 30 days.
However on the SharePoint microsoft doc pages it states the SharePoint site is soft deleted for 93 days https://docs.microsoft.com/en-us/sharepoint/delete-site-collection

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

ID: 7d49db57-a705-20aa-e98d-5b3d6bbbf9fd
Version Independent ID: 5a056f2c-03c9-7a34-3196-8bfb1039f6a5
Content: Restore a deleted Microsoft 365 group - Microsoft 365 admin
Content Source: microsoft-365/admin/create-groups/restore-deleted-group.md
Service: o365-administration
GitHub Login: @MikePlumleyMSFT
Microsoft Alias: mikeplum

@nikki-c Thank you for your feedback. Microsoft 365 group-connected team sites are in a soft deleted state only for 30 days unlike other SharePoint sites.
Hope this helps!
Thanks
Sri

It may be worth mentioning that on the Microsoft Docs page. I have been asked this question several times rom clients. It would be good to be able to point them to a specific Microsoft Docs page.
Nikki Chapple
Organisational Change Manager
United Kingdom | Cloud Communications
NTT
T:
+442080800656
M:
+447500766185
NTT Cloud Communications UK Ltd. is an entity of NTT Ltd.
[cid:image001.jpg@01D711A8.46DF82B0]https://arkadin.com/<EMAIL_ADDRESS>https://twitter.com/arkadinservices#xd_co_f=MDgwMzM4NzQtY2Y5Mi00YTEyLWIxMGQtODQwNWIxMzhiZDgz~<EMAIL_ADDRESS>https://www.linkedin.com/company/arkadin/<EMAIL_ADDRESS>https://www.facebook.com/ArkadinCloudComm<EMAIL_ADDRESS>https://www.instagram.com/globalntt/<EMAIL_ADDRESS>https://www.youtube.com/user/ArkadinConference
[cid:image007.jpg@01D711A8.46DF82B0]http://www.arkadin.com/
From: Sriraman M S<EMAIL_ADDRESS>Sent: 05 March 2021 05:19
To: MicrosoftDocs/microsoft-365-docs<EMAIL_ADDRESS>Cc: Nikki Chapple (Group<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/microsoft-365-docs] Soft delete period for the SharePoint site (#4282)
@nikki-chttps://github.com/nikki-c Thank you for your feedback. Microsoft 365 group-connected team sites are in a soft deleted state only for 30 days unlike other SharePoint sites.
Hope this helps!
Thanks
Sri
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/microsoft-365-docs/issues/4282#issuecomment-791161696, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQRY4GWKE7LH4SAEVW57HI3TCBSVXANCNFSM4YNDZWFA.
itevomcid

@nikki-c Thank you for your feedback. The document now contains "After 30 days, the group and its associated contents are permanently deleted and cannot be restored."
Hope this helps!
Thanks
Sri


In general, the documentation is lacks of examples.

[Enter feedback here]

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

ID: 0674abde-64e0-1226-55ce-ed4994734c6e
Version Independent ID: 0674abde-64e0-1226-55ce-ed4994734c6e
Content: Set Up Vendor Bank Account - Business Central
Content Source: business-central/purchasing-how-set-up-vendors-bank-accounts.md
Service: dynamics365-business-central
GitHub Login: @rubenseishima
Microsoft Alias: a-reishima

Thanks for your feedback.
We are collaborating with subject matter experts to include examples in multiple areas.


Csrf-Token

I'm curious why the csrf token is used by angular. Setting a csfr-token header value to "nocheck" would achieve the same amount of security against csfr attacks. So is the benefit of the token to simply future proof against possible vulnerabilities? Or is there another current vulnerability that it protects against?

Also have a similar question for why "application/json" is included in the csfr blacklist. Thanks.

It's an example which shows how the token can be implemented on the Play and the Angular side and I think it provides the most secure way now and in the future.

Also have a similar question for why "application/json" is included in the csfr blacklist. Thanks.

In this example forms are submitted via Json so it's needed to check for the CSFR token.

Thanks for the reply. I appreciate the framework and example app. The goal of my question was just to find out if there are some vulnerabilities that I'm unaware of, which are addressed by this implementation. CSFR attacks can't be made by posting application/json or by setting custom headers. But I understand it doesn't hurt to be "over" secure when it comes to web apps.

Nice to hear that you like the lib :+1:
Yes, currently it isn't possible and I was first unsure if I should implement the token in the example. But then I've read this on Security StackExchange.


commmunicate between two nodes  from different docker containers

How ?

@jhx2002 I think we need to add some more detailed documentation for this.
We have a very poorly documented example which should run out of the box (if not it should at least provide some insights): https://github.com/eclipse-iceoryx/iceoryx/tree/master/iceoryx_dds/examples
Here I rough draft on how you can accomplish a network communication between iceoryx instances:

Create and start two docker containers which are able to communicate via ethernet. You can verify if the network connection is available by typing: ip addr look up the IP address of the containers and try to ping them. If this works you are ready to go.
Use the iceoryx dds example to setup the icedelivery example so that it communicates between those two docker containers: https://github.com/eclipse-iceoryx/iceoryx/tree/master/iceoryx_dds. For this you need to create a config file in /etc/iceoryx/gateway_config.toml in each docker container.
Add the entry

[[services]]
service     = "Radar"
instance    = "FrontLeft"
event       = "Object"

to the config file. This is the service description of the publisher of the icedelivery example.
In theory everything should be setup and now you can compile iceoryx with the following commands in both docker containers:
cmake -Bbuild -Hiceoryx_meta -DEXAMPLES=ON -DDDS_GATEWAY=ON
cd build
make

Now open 3 terminals in the first docker container and start the following applications:

Terminal 1: ./build/iox-roudi
Terminal 2: ./build/iceoryx_dds/iox-gw-iceoryx2dds
Terminal 3: ./build/iceoryx_examples/icedelivery/iox-cpp-publisher
The first docker container is now offering the service in the config file and the iceoryx2dds gateway is publishing them via DDS on the network

Open another 3 terminals in the second docker container and start the following applications:

Terminal 1: ./build/iox-roudi
Terminal 2: ./build/iceoryx_dds/iox-gw-dds2iceoryx
Terminal 3: ./build/iceoryx_examples/icedelivery/iox-cpp-subscriber
The second docker container receives now network messages of the first docker container via DDS and the subscriber should be able to receive them and print them out. The output should be identical to the icedelivery example on a single machine.

@elfenpiff should this issue be linked to https://github.com/eclipse-iceoryx/iceoryx/pull/925?


Parsing inconsistency with tags and text directly inside tables

I'm using jsoup-1.7.3 via Maven.
Tags and text are treated differently when embedded directly inside a table tag. For raw text content, it leaves the text within the table tag as follows:
System.out.println(Jsoup.parse("
Content text
").html());

    Content text

But, for tag-wrapped text, it pulls the content outside (before) the table like this:
System.out.println(Jsoup.parse("
Content text
").html());

  Content text

Now, this is particularly troubling when you have a combination of raw text (not wrapped inside a tag) and tag-wrapped text. As the following shows, you end up with "Content text" showing as "text Content".
System.out.println(Jsoup.parse("
Content text
").html());

  text

    Content

Granted this isn't the best html, but FireFox, IE, and Chrome handle it by pulling all the content (both raw text and tag-wrapped text) out of (before) the table. Given that all three browsers do it that way, you probably want to make sure that raw text is pulled out of the table along with the tags.
I've demonstrated a very scaled down use case compared to my production output so that you can see the heart of the issue. Please let me know if you would like a more complex example. This is an urgent issue for me, so I'd be interested in suggestions for work-arounds. Thanks.

(Closing out old, dormant bugs. If you are still impacted by this, please reopen & vote.)


clangd crashed in a complicated template type deduction

template<typename T>
struct Test{
    template<template<typename>class head, template<typename>class... tails>
    struct delegate{
        template<typename Y>
        struct result{
            typedef typename delegate<tails...>::template result<typename head<Y>::type>::type type;
        };
    };
    template<template<typename>class head>
    struct delegate<head>{
        template<typename Y>
        struct result{
            typedef typename head<Y>::type type;
        };
    };
    template<template<typename...>class typeclass>
    struct check{
        template<typename Y>
        struct result{
            typedef typeclass<Y> type;
        };
    };
    typedef typename delegate<
        // check<std::forward_list>::template result,
        // check<std::list>::template result,
        // check<std::deque>::template result,
        check<std::vector>::template result
    >::template result<T>::type type;
};

it's just an example, in which some significant type conversions are removed.
when I typed the template arguments in the last typedef , clangd crashed.
but it actually works, in clang. it's obviously Test<int>::type is std::vector<int>. and static_assert(std::is_same_v<Test<int>::type, std::vector<int>>); does not cause any error.
so why clangd crashed? or what mistake?
by the way, clang does not support the C++17 feature that makes template<typename>class match std::vector now? but cppreference says it does.
System information
clang 11.0.3, -std=c++17
VSCode 1.46.0, Xcode 11.4.1
MacOS 10.15.5

by the way, clang does not support the C++17 feature that makes template<typename>class match std::vector now? but cppreference says it does.

There is an entry for this on clang's C++ status page, in the C++17 table, under "Matching template template parameters to compatible arguments". The status is marked as "Partial", with the following note:

Despite being the resolution to a Defect Report, this feature is disabled by default in all language versions, and can be enabled explicitly with the flag -frelaxed-template-template-args in Clang 4 onwards. The change to the standard lacks a corresponding change for template partial ordering, resulting in ambiguity errors for reasonable and previously-valid code. This issue is expected to be rectified soon.

As for the crash, I haven't been able to reproduce it (testing on Linux).
Could you provide a few more specifics please:

The complete file contents, including any #include statements at the top (presumably, you need at least #include <vector> for the code to compile).
What standard library you are using (libc++ or libstdc++).
Is pasting the code into an empty editor enough to reproduce the error, or do I need to take some editor action like uncommenting the commented lines, or invoking code-complete somewhere?

by the way, clang does not support the C++17 feature that makes template<typename>class match std::vector now? but cppreference says it does.

There is an entry for this on clang's C++ status page, in the C++17 table, under "Matching template template parameters to compatible arguments". The status is marked as "Partial", with the following note:

Despite being the resolution to a Defect Report, this feature is disabled by default in all language versions, and can be enabled explicitly with the flag -frelaxed-template-template-args in Clang 4 onwards. The change to the standard lacks a corresponding change for template partial ordering, resulting in ambiguity errors for reasonable and previously-valid code. This issue is expected to be rectified soon.

okay, thanks for your help.

As for the crash, I haven't been able to reproduce it (testing on Linux).
Could you provide a few more specifics please:

The complete file contents, including any #include statements at the top (presumably, you need at least #include <vector> for the code to compile).
What standard library you are using (libc++ or libstdc++).
Is pasting the code into an empty editor enough to reproduce the error, or do I need to take some editor action like uncommenting the commented lines, or invoking code-complete somewhere?

#include <vector>
#include <type_traits>

template<typename T>
struct Test{
    template<template<typename>class head, template<typename>class... tails>
    struct delegate{
        template<typename Y>
        struct result{
            typedef typename delegate<tails...>::template result<typename head<Y>::type>::type type;
        };
    };
    template<template<typename>class head>
    struct delegate<head>{
        template<typename Y>
        struct result{
            typedef typename head<Y>::type type;
        };
    };
    template<template<typename...>class typeclass>
    struct check{
        template<typename Y>
        struct result{
            typedef typeclass<Y> type;
        };
    };
    typedef typename delegate<
        check<std::vector>::template result
    >::template result<T>::type type;
};

int main(){
    static_assert(std::is_same_v<std::vector<int>, Test<int>::type>);
    return 0;
}

just this code could crash the clangd, and still compile correctly in Xcode, clang -std=c++17 -stdlib=libc++.
and I put it in an independent workspace, and set these flags
clang -std=c++17 -Wall -DDEBUG -stdlib=libc++

in compile_commands.json. clangd crashes as soon as I reopen this workspace.
it looks like this code is thought invalid by clangd server, it crashes (5 times and gives up) when the entire typedef is written completely, rather than some editor actions make it crash.

Thanks for the additional info. I did try your updated example with libc++ headers, and was still unable to reproduce the crash.
Maybe it's a Linux vs. Mac related difference, e.g. custom patches in Xcode's clang version, or system-specific things in the libc++ headers.
I will leave it to a Mac user to try to repro this.

@HighCommander4
clangd crashed in another situation today. so I tried to compare their similarity and finally I found a minimum code:
template<typename Y>
struct A{
    template<typename T>
    struct B{
        typedef T type;
    };
};

template<template<typename...>class X>
struct C{
    typedef int type;
};

template<typename T>
using C_t = typename C<A<T>::template B>::type;

it exactly means, clangd crashes if an internal class template of a class template is transmitted as a template argument, in the case the enclosing class template is a dependent type.
so is it a bug of clangd or anything else that expose in this case?

I do not get a crash on this reduced example, either.

after clangd is updated to 11.0.0, this problem is solved.


Add uv-virtualenv tests for a wide range of Pythons

virtualenv has a nice setup for this: https://github.com/pypa/virtualenv/blob/main/.github/workflows/check.yml.

Charlie has a good start on this with the system-install.yaml GitHub Actions workflow.
I think the major downside of that approach is that it cannot be run locally.
Running cross-platform tests locally is going to be quite challenging as we need a VM or remote runner to execute Windows tests on Linux or vice-versa.
In the long run, I imagine using BuildKit with multi-node build daemons so we can run containerized tests on Windows and Linux. However, they just recently added support for Windows and I'm hesitant to try to build on top of it. If we wait, we might be able to take advantage of tools that extend BuildKit (like Earthly) to avoid implementing much of the infrastructure.
In the short term, I think we should containerize the system-install test suite and split it into "host" platforms. We can run everything in CI by making use of GitHub Action's multiplatform hosts. Locally, developers will be limited to the subset matching their current host. We can explore using Vagrant to run VMs for local cross-platform tests, but I don't think it's critical at this time.

cc @konstin here I talk a bit about vagrant and buildkit dreams.
I'm going to close this because we have lots of system install tests now.


SQLite: Add support for WHERE clause on the FTS5 Table Name

What do you want to change?
SQLite supports WHERE clause directly over the Table name to query all the columns.
CREATE VIRTUAL TABLE IF NOT EXISTS ft
USING fts5(id, name, content);

SELECT name, snippet(ft, -1, "...", "...", "", 30)
FROM ft
WHERE ft MATCH @query

But SQLC does not work with this Query.
# package gen
query.sql:77:7: column "ft" does not exist

What database engines need to be changed?
SQLite
What programming language backends need to be changed?
Go

I have created PR for this #3498.


[Keystone] Minor logging improvements

@HenryNguyen5 I re-ran make generate, could you re-stamp please?


StatementAdded/Removed events for duplicate events in same txn

(Migrated from https://openrdf.atlassian.net/browse/SES-2382)
See dicussion on https://groups.google.com/d/msgid/sesame-users/daef45b8-a3ba-43c6-bc21-88da64112289%40googlegroups.com?utm_medium=email&utm_source=footer

Is this a duplicate of #183 ?


Refactor the python interface

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Custom datasets (including dynamic regions)

hello,
I'm really interested in running your code. My dataset consists of images from a outdoor scenes, captured using an smartphone. I've already converted the video frames into individual images. There are some moving objects in the images. I have used colmap to obtain the camera poses corresponding to the images (using motion mask).
I'm quite new to the field of MVS and find some aspects challenging to grasp. Can I use your model to get a point cloud of a static area?Or do you think there are other models that can achieve my purpose? Any guidance would be greatly appreciated.
thank you!

Hi @hhhddddddd , you can refer to this section to prepare your own data. Theoretically MVS do not deal with moving objects. If they do not occupy the majority of the images, the post processing step can filter them out.


Enhance IMIS build process

This pull request introduces various enhancements to the IMIS build process, the most significant being the integration of the complete Swagger API client generation process (closes #453) and the improvements to incremental building, which allows to skip more tasks when the respective files have not been changed (e.g. :client:buildFrontend and the Swagger client generation process).
Further details on additions / modifications:

adds :server:buildSwaggerConfig build task that generates the swagger config JSON file required by the :client:generateClient task
adds a replacement for the GenerateSwagger test: SwaggerConfigExport, configurable via command line arguments
adds enhanced incremental building, reducing time to startup quite significantly when respective source code has not been touched; supported for tasks

:client:lint
:client:buildFrontend
:client:generateClient
:server:generateTestData
:server:buildSwaggerConfig

adds standard run, build and jar tasks, which should make contribution a little bit easier since working with well-known tasks

Note: run and runFrontendDev tasks have been added to potentially replace :server:bootRun and :client:serve tasks, respectively

modifies the gradle inter-task dependencies such that these match up to the requirements of IMIS project
README files are updated to reflect the changes
CI and deployment is adopted to work with the updated build process

Still existing problems:

[ ] CORS: Had been removed to fix problems on deployment, which means frontend dev server cannot issue API calls
[ ] Test Data Loading on Cloud Run: Since Cloud Run seems to completely restart the server after some amount of idle time, the time-costly test data insertion into the database can be triggered quite often; it would be beneficial if the database could be populated exactly once on PR deployment by a separate initialization process, which is decoupled from the IMIS server that is subject to Cloud Run process management (restarts)

Wow! Very nice!
It doesn't work, because during CI run there is no DB available.. Is it possible to generate the swagger without a running DB?

I think I found a way by using the In-memory H2 DB

I think I found a way by using the In-memory H2 DB

Wouldn't surprise me if that's the database configured for Unit testing. Since SwaggerConfigExport is not running as such, it will look for the Postgres database instead.

good to go, if you'd ask me

@MichaelSp I'd still like to make adjustments to the README in order to reflect the updated build process. And I think that the new tasks could use some descriptions as well, so that one knows what they do when running gradle tasks.

@MichaelSp There are still some bugs regarding the jib task. It is probably due to the resources being copied to the wrong directory. I'm on it.

@MichaelSp The last thing that needs to be fixed before merging: Logging into the deployed image does not work, which is most likely due to the test data not being loaded. Could you make sure that the deployed image is run with the feature.testdata property set to true? You just have to make sure that test data is not loaded during Swagger generation, since that will throw an exception.

Login currently not working. Reason unclear. Potential issues:

DB not fully populated?!
CORS issues?!

Logging into the deployed image is now working correctly, since CORS is no longer handled by Spring and the very long-running process of inserting patient test data is executed AFTER the test accounts, so that one can now log in after a reasonable amount of time. However, due to CORS being disabled, we now got the problem that the client code served by the frontend development server (alas runFrontendDev) cannot issue API calls :roll_eyes:.

Isn't https://github.com/ImisDevelopers/1_011_a_infektionsfall_uebermittellung/blob/9e7e0d97f4741eadb6e7d1e50a2b5bb55aa5ec0a/server/src/main/resources/application.yml#L72 and/or https://github.com/ImisDevelopers/1_011_a_infektionsfall_uebermittellung/blob/9e7e0d97f4741eadb6e7d1e50a2b5bb55aa5ec0a/server/src/main/resources/application.yml#L77 the problem? There is no proper schema evolution. I'm not a spring expert, but shouldn't we use Flyway or Liquibase?

@MichaelSp In the long run definitely, since it would be no good to just drop the database on an update :stuck_out_tongue:. I think for testing it would be nice if we just had a separate component that initializes the database that could be executed independently of the actual server system.

hm, so H2 in memory for PR?!

I know. I just tested what happens when executing all those patient insertions in a single transaction, hoping for the persistence layer to batch the operations and speed up the process. But then any patient data is only available after the whole transaction, which still takes its time.
In my opinion, any further database usage optimization could be content for another issue. I think the current state is stable enough that it can be considered merge-able.


fixed: js runtime __spawn_thread signature

i'm not sure if this was intentional the way it was, but this change allowed me to compile with -r js --multi-threaded.
Feel free to close this if this isn't correct.

That was not intentional; just a side-effect of code rot because I have not used the JS platform outside of the playground in a long time. Thanks for the fix!


DCR: Add ability to create a ConversationReference from a TurnContext + ResourceResponse

SendActivities returns an array of ResourceResponses.
These ResourceResponses contain the activity id, which is a key value needed to call updateActivity or deleteActivity in the future. However, ResourceResponse does not necessarily contain all of the information required to construct a ConversationReference needed to actually call these methods.
Since the type of messages that will be deleted or updated are most likely to be those sent by the bot itself, we need to provide an easy to use method that takes a ResourceResponse returned from sendActivity and combines it with a TurnContext to create a reusable (and data-complete) ConversationReference.

@benbrown , please ping @johnataylor  once you are done with this.

This issue was moved to Microsoft/BotBuilder#5128


Expose minimal solvers for fundamental matrix estimation

Exposing 7-point and 8-point minimal solvers for fundamental matrix estimation, decoupled from RANSAC.

COLMAP will soon switch solvers to Poselib (https://github.com/colmap/colmap/pull/2288), which has both 7 and 8 point algorithms and has good Python bindings. Maybe we shouldn't duplicate the work here.

got it


Allow to evaluate arbitrary Python expressions in native frames

When doing mixed mode debugging, we currently show [Python view] nodes for PyObject values in native frames, but they and their children don't work with Add Watch, because there's no way to represent them as an expression.
In VS 2015, there are some new NatVis APIs that allow registering custom intrinsics, which we can use to implement evaluation of arbitrary expressions. Basically it would be a new C++ intrinsic that will take a Python expression as a string literal, plus a variable number of PyObject pointers that would be substituted instead of placeholders in that expression, evaluate the expression, and return the result as another PyObject pointer. For example, given a C++ frame with a local variable foo of type PyObject*, you could do something like:
$PTVS_Eval("type(_0).__name__", foo)->ob_size

where _0, _1 etc are placeholders that are filled from the arguments of $PTVS_Eval.

This is post-2.2, but the basic prototype (to validate that the new VS 2015 APIs are up to the task) is at https://github.com/int19h/PTVS/tree/mmd-eval

We're closing old issues with no recent activity. If this is still important, please open a new issue.


[feature request] change scene collections

Add ability to change scene collections.

Made a pull request for scene collections.


Using plugin-react, but cannot see React tab in dashboard

I have setup Bugsnag in my create-react-app in the following manner:
// bugsnag.js
import React from 'react';
import bugsnag from '@bugsnag/js';
import bugsnagReact from '@bugsnag/plugin-react';

const bugsnagClient = bugsnag(<API_KEY>);
bugsnagClient.use(bugsnagReact, React);

const ErrorBoundary = bugsnagClient.getPlugin('react');

export { bugsnagClient, ErrorBoundary };

// index.js
...
...
import { ErrorBoundary } from "./bugsnag";

ReactDOM.render(
  <ErrorBoundary>
    <Provider store={store}>
      <App/>
    </Provider>
  </ErrorBoundary>
  , document.getElementById('root')
);

And finally, raise the error in App.js:
import { bugsnagClient } from './bugsnag';

const App = () => {
  bugsnagClient.notify(new Error('Test error'));
  return (...);
}

Bugsnag gets notified of the error, but the docs say extra debugging info would be visible in a "React" tab.
However, this is what I see:

What am I missing?

Hi @charl3sj, you'll only see the "React" tab when there is extra info from React that we can get. That means it only appears when the <ErrorBoundary/> captures the error.
If you throw new Error('Test error') inside your App function you should see the component info in the "React" tab, but your example manually calls Bugsnag's notify() function, so the error came straight from you and not via React.
Hope this helps.

Got it. Thanks!


Logger calls decrease performance

Lines like ada_log("RELATIVE_SLASH ", helpers::substring(url_data, input_position)); reduces performance. We should trim ada_log calls from production builds (and from benchmarks).

Unlikely. It is not a function, but a macro. At compile time, the macro replaces ada_log("RELATIVE_SLASH ", helpers::substring(url_data, input_position)); with nothing. To be clear, the macro gets processed before the C++ compiler does its work, so the C++ compiler does not even see what was in the macro !
If you compile this...
#include <string_view>
#include <string>

#if ADA_LOGGING

#ifndef ada_log
#define ada_log(...) do { \
    ada::log(__VA_ARGS__); \
} while(0)
#endif // ada_log
#else
#define ada_log(...)
#endif // ADA_LOGGING

void increment(std::string_view v) {
    ada_log(std::string(v) + ":", "joe");
}

The increment function is the empty function.

Try it. Replace ada_log("RELATIVE_SLASH ", helpers::substring(url_data, input_position)) by some nonesense like ada_log("RELATIVE_SLASH ", ssssssshelpers::mysubstring(url_data, input_position)) and you will see that it still builds.

Amazing. Thanks. It was bugging me for a while.


Adyen doesn't show

Adyen Payment option doesn't show in payment, I added Adyen in the settings and filled out the keys

Can you give more information? I just tested and Adyen is working for me. Does your terminal show any errors?

Terminal doesn't show any errors, it's just Ayden doesn't appear on the payment options (ss above)

Could you check the browser console too for any errors. It's highly likely a config issue given it's working perfectly fine for me.

Quick question: How do I implement this on my version? I tried putting the code, doesn't work.

Quick question: How do I implement this on my version? I tried putting the code, doesn't work.

Added in 41c997e3375c52bf35421b2eaca3a6a5bc386949.

Terminal doesn't show any errors, it's just Ayden doesn't appear on the payment options (ss above)

Could you show the config where you are turning on Adyen? Maybe even share your Adyen config with the sensitive parts removed?

Alr, and also to let you know I modified the code but I am not sure if it was the one causing the error, so I was trying to add  GCash as an payment option for the site and here's the modified code (not really much modified)
const express = require('express');
const { indexOrders } = require('../indexing');
const numeral = require('numeral');
const { Client, CheckoutAPI } = require('@adyen/api-library');
const { getId, sendEmail, getEmailTemplate } = require('../common');
const { getPaymentConfig } = require('../config');
const { emptyCart } = require('../cart');
const router = express.Router();

router.post('/setup', async (req, res, next) => {
    const adyenConfig = getPaymentConfig('adyen');

    const client = new Client({
        apiKey: adyenConfig.apiKey,
        environment: adyenConfig.environment
    });
    const checkout = new CheckoutAPI(client);
    let paymentsResponse;
    try{
        paymentsResponse = await checkout.paymentMethods({
            amount: {
                currency: 'PHP',
                value: 0
            },
            countryCode: 'PH',
            channel: 'Web',
            merchantAccount: adyenConfig.merchantAccount
  });
    }catch(ex){
        console.log('Exception getting supported payment methods', ex.message);
        res.status(400).json({ message: `Failed to retrieve payment methods.${ex.message}` });
    }
    res.status(200).json({
        paymentsResponse,
        environment: adyenConfig.environment,
        originKey: adyenConfig.originKey
    });
});

router.post('/checkout_action', async (req, res, next) => {
    const db = req.app.db;
    const config = req.app.config;
    const adyenConfig = getPaymentConfig('adyen');

    const client = new Client({
        apiKey: adyenConfig.apiKey,
        environment: adyenConfig.environment
    });

// Rest are the same code as in the repo

Used wrong link - here's the correct link: https://docs.adyen.com/payment-methods/gcash/api-only

I've updated the Adyen integration to the latest and greatest here: 7c29782207d94861504f0151cb730b22929b7f35.
Note: The configuration changes: /config/payment/config/adyen.json
I can't test the specific payment method you are trying to use. Let me know how you get on.

So, I just filled out the new config of Adyen and I tried running it but returns this error while running it.

So I tried to setup the Adyen, and it still the same as earlier but now it has error on console:

Error only show when I am on checkout page

There was come config values which were removed. Check your config matches the adyen.json example. Checking carefully there is no old configs that are no longer needed with the new version.

Here is my current config for adyen
{
    "description": "Card payment",
    "environment": "test",
    "apiKey": "API here",
    "clientKey": "key here",
    "merchantAccount": "Account here",
    "currency": "AUD",
    "countryCode": "AU"
}

I think the payment type you want is quite niche and I'm not sure most will benefit my me adding it to master.
Re-reading the guide, is seems the GCash payment method isn't supported on the drop-in UI/integration which I've built for.
It looks easy enough to integrate though. You can simply add something like this code to your /setup endpoint in adyen.js: https://docs.adyen.com/payment-methods/gcash/api-only#api-only-payments
Then something like this (not tested at all) in /public/javascripts/common.js:
if($('#dropin-container').length > 0){
        $.ajax({
            method: 'POST',
            url: '/adyen/setup'
        })
        .done(async function(response){
             $('#adyen-gcash-link').attr('href', response.action.url);
        })
        .fail(function(msg){
            showNotification(msg.responseJSON.message, 'danger');
        });
    };

The idea is to get the response from /adyen/setup and set the URL of the link on the payment form.

Then in /views/partials/payments/adyen.hbs add something like:

Alright, but in the code that you sent me, should I replace it with the current code in the script or just add those? And for the GCash API, I think all are already except for the paymentMethod right?
// COMMON.JS
 if($('#dropin-container').length > 0){
        $.ajax({
            method: 'POST',
            url: '/adyen/setup'
        })
        .done(async function(response){
            const configuration = {
                environment: response.environment,
                clientKey: response.clientKey,
                session: {
                    id: response.paymentsResponse.id,
                    sessionData: response.paymentsResponse.sessionData
                },
                onPaymentCompleted: (result, component) => {
                    console.log('result', result);
                    console.log('component', component);
                    if($('#shipping-form').validator('validate').has('.has-error').length === 0){
                        $.ajax({
                            type: 'POST',
                            url: '/adyen/checkout_action',
                            data: {
                                paymentCode: result.resultCode,
                                paymentId: component._id
                            }
                        }).done((response) => {
                            window.location = '/payment/' + response.paymentId;
                        }).fail((response) => {
                            showNotification('Failed to complete transaction', 'danger', true);
                        });
                    }
                },
                onError: (error, component) => {
                    console.log(error.name, error.message, error.stack, component);
                },
                paymentMethodsConfiguration: {
                    hasHolderName: false,
                    holderNameRequired: false,
                    billingAddressRequired: false
                }
            };
            const checkout = await AdyenCheckout(configuration);
            checkout.create('dropin').mount('#dropin-container');
        })
        .fail(function(msg){
            showNotification(msg.responseJSON.message, 'danger');
        });
    };

This is my current code on adyen.js
const payload = {
        merchantAccount: adyenConfig.merchantAccount,
        amount: {
            currency: adyenConfig.currency,
            value: numeral(req.session.totalCartAmount).format('0.00').replace('.', '')
        },
	paymentMethod: {
		type: 'gcash',
		storedPaymentMethodId: "7219687191761347"
			},
        returnUrl: `${config.baseUrl}/adyen/checkout_return`,
        reference: Object.keys(req.session.cart)[0],
        countryCode: adyenConfig.countryCode,
        shopperEmail: req.session.customerEmail
    };

I don't really know how it should be even though I read the docs

Ok. I've had a quick play and got it working.
adyen.js:
router.post('/setup', async (req, res, next) => {
    const config = req.app.config;
    const adyenConfig = getPaymentConfig('adyen');

    const payload = {
        merchantAccount: adyenConfig.merchantAccount,
        amount: { currency: 'PHP', value: 1000 },
        paymentMethod: {
            type: 'gcash'
        },
        returnUrl: `${config.baseUrl}/adyen/checkout_return`,
        reference: Object.keys(req.session.cart)[0]
    };

    let paymentsResponse;
    try{
        paymentsResponse = await got.post(`https://checkout-${adyenConfig.environment}.adyen.com/v67/payments'`, {
            headers: {
                'content-type': 'application/json',
                'x-API-key': adyenConfig.apiKey
            },
            json: payload
        });
        paymentsResponse = JSON.parse(paymentsResponse.body);
    }catch(ex){
        console.log('Exception getting supported payment methods', ex.message);
        res.status(400).json({ message: `Failed to retrieve payment methods.${ex.message}` });
        return;
    }
    res.status(200).json({
        paymentsResponse,
        environment: adyenConfig.environment
    });
});

common.js:
if($('#adyen-gcash-container').length > 0){
        $.ajax({
            method: 'POST',
            url: '/adyen/setup'
        })
        .done(async function(response){
            $('#adyen-gcash-link').attr('href', response.paymentsResponse.action.url);
            $('#adyen-gcash-link').text('Pay GCash');
        })
        .fail(function(msg){
            showNotification(msg.responseJSON.message, 'danger');
        });
};

adyen.hbs

    <div<EMAIL_ADDRESS>

        Loading...

Note: I have no idea what GCash actually is and how to test a payment so the /checkout_action return code will need some work


UART_DATE_REG_ADDR seems wrong for some chips in const.ts

ESP8266: UART_DATE_REG_ADDR = 0x60000078
ESP32: UART_DATE_REG_ADDR = 0x60000080
ESP32C3: UART_DATE_REG_ADDR = 0x6000007c
Source latest dev version of esptool.py
The c3 support seems is never tested. It would be great to get it going!

@Jason2866
UART_DATE_REG_ADDR values are correct for ESP8266 and ESP32. The value that you shared for ESP32 is actually for the ESP32-S3, not for the original ESP32.
For the C3 you are correct, that DATE_REG_ADDRESS should be 0x6000007c, there is a function for retrieving the ADDRESS in const.ts given the chip family, and it is not ready for the C3 family, so it returns -1.
However right now the esp-flasher never uses this register in any operation since it is only used in "writeRegister" when delayAfterUs is greater than 0, and no function currently makes use of this parameter. So while the value is incorrect, it cannot be the reason why flashing to C3 is not working for you.
Can you share more information on your test? Log information to see what chip family is being detected, etc....I tested this with my C3 board when I submitted the PR and it worked, I'll try and re-test again though.

@conradopoole  Thx, for looking into!
I get this with my C3 with latest development esptool.py
d:\>esptool.py chip_id
esptool.py v3.2-dev
Serial port COM5
Connecting....
Detecting chip type... ESP32-C3
Chip is ESP32-C3 (revision 3)
Features: Wi-Fi
Crystal is 40MHz
MAC: 7c:df:a1:a4:4f:c0
Uploading stub...
Running stub...
Stub running...
Warning: ESP32-C3 has no Chip ID. Reading MAC instead.
MAC: 7c:df:a1:a4:4f:c0
Hard resetting via RTS pin...

Connecting....
Detecting chip type... ESP32-C3
espefuse.py v3.1
EFUSE_NAME (Block)                       Description  = [Meaningful Value] [Readable/Writeable] (Hex Value)
----------------------------------------------------------------------------------------
Config fuses:
DIS_RTC_RAM_BOOT (BLOCK0)                Disables boot from RTC RAM                         = False R/W (0b0)
DIS_ICACHE (BLOCK0)                      Disables ICache                                    = False R/W (0b0)
DIS_DOWNLOAD_ICACHE (BLOCK0)             Disables Icache when SoC is in Download mode       = False R/W (0b0)
DIS_FORCE_DOWNLOAD (BLOCK0)              Disables forcing chip into Download mode           = False R/W (0b0)
DIS_CAN (BLOCK0)                         Disables the TWAI Controller hardware              = False R/W (0b0)
VDD_SPI_AS_GPIO (BLOCK0)                 Set this bit to vdd spi pin function as gpio       = False R/W (0b0)
BTLC_GPIO_ENABLE (BLOCK0)                Enable btlc gpio                                   = 0 R/W (0b00)
POWERGLITCH_EN (BLOCK0)                  Set this bit to enable power glitch function       = False R/W (0b0)
POWER_GLITCH_DSENSE (BLOCK0)             Sample delay configuration of power glitch         = 0 R/W (0b00)
DIS_LEGACY_SPI_BOOT (BLOCK0)             Disables Legacy SPI boot mode                      = False R/W (0b0)
UART_PRINT_CHANNEL (BLOCK0)              Selects the default UART for printing boot msg     = UART0 R/W (0b0)
UART_PRINT_CONTROL (BLOCK0)              Sets the default UART boot message output mode     = Enabled R/W (0b00)
FORCE_SEND_RESUME (BLOCK0)               Force ROM code to send a resume command during SPI = False R/W (0b0)
                                          bootduring SPI boot
BLOCK_USR_DATA (BLOCK3)                  User data
   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W

Efuse fuses:
WR_DIS (BLOCK0)                          Disables programming of individual eFuses          = 0 R/W (0x00000000)
RD_DIS (BLOCK0)                          Disables software reading from BLOCK4-10           = 0 R/W (0b0000000)

Flash Config fuses:
FLASH_TPUW (BLOCK0)                      Configures flash startup delay after SoC power-up, = 0 R/W (0x0)
                                          unit is (ms/2). When the value is 15, delay is 7.
                                         5 ms
FLASH_ECC_MODE (BLOCK0)                  Set this bit to set flsah ecc mode.
   = flash ecc 16to18 byte mode R/W (0b0)
FLASH_TYPE (BLOCK0)                      Selects SPI flash type                             = 4 data lines R/W (0b0)
FLASH_PAGE_SIZE (BLOCK0)                 Flash page size                                    = 0 R/W (0b00)
FLASH_ECC_EN (BLOCK0)                    Enable ECC for flash boot                          = False R/W (0b0)

Identity fuses:
SECURE_VERSION (BLOCK0)                  Secure version (used by ESP-IDF anti-rollback feat = 0 R/W (0x0000)
                                         ure)
MAC (BLOCK1)                             Factory MAC Address
   = 7c:df:a1:a4:4f:c0: (OK) R/W
WAFER_VERSION (BLOCK1)                   WAFER version                                      = 3 R/W (0b011)
PKG_VERSION (BLOCK1)                     Package version                                    = 8 R/W (0x8)
BLOCK1_VERSION (BLOCK1)                  BLOCK1 efuse version                               = 4 R/W (0b100)
OPTIONAL_UNIQUE_ID (BLOCK2)(0 errors):   Optional unique 128-bit ID
   = 67 7f 07 db 6e ab 06 cf 23 d3 2e 58 98 3f b7 91 R/W
BLOCK2_VERSION (BLOCK2)                  Version of BLOCK2                                  = 2 R/W (0b010)

Jtag Config fuses:
JTAG_SEL_ENABLE (BLOCK0)                 Set this bit to enable selection between usb_to_jt = False R/W (0b0)
                                         ag and pad_to_jtag through strapping gpio10 when b
                                         oth reg_dis_usb_jtag and reg_dis_pad_jtag are equa
                                         l to 0.
SOFT_DIS_JTAG (BLOCK0)                   Software disables JTAG. When software disabled, JT = 0 R/W (0b00)
                                         AG can be activated temporarily by HMAC peripheral
DIS_PAD_JTAG (BLOCK0)                    Permanently disable JTAG access via pads. USB JTAG = False R/W (0b0)
                                          is controlled separately.

Security fuses:
DIS_DOWNLOAD_MANUAL_ENCRYPT (BLOCK0)     Disables flash encryption when in download boot mo = False R/W (0b0)
                                         des
SPI_BOOT_CRYPT_CNT (BLOCK0)              Enables encryption and decryption, when an SPI boo = Disable R/W (0b000)
                                         t mode is set. Enabled when 1 or 3 bits are set,di
                                         sabled otherwise
SECURE_BOOT_KEY_REVOKE0 (BLOCK0)         If set, revokes use of secure boot key digest 0    = False R/W (0b0)
SECURE_BOOT_KEY_REVOKE1 (BLOCK0)         If set, revokes use of secure boot key digest 1    = False R/W (0b0)
SECURE_BOOT_KEY_REVOKE2 (BLOCK0)         If set, revokes use of secure boot key digest 2    = False R/W (0b0)
KEY_PURPOSE_0 (BLOCK0)                   KEY0 purpose                                       = USER R/W (0x0)
KEY_PURPOSE_1 (BLOCK0)                   KEY1 purpose                                       = USER R/W (0x0)
KEY_PURPOSE_2 (BLOCK0)                   KEY2 purpose                                       = USER R/W (0x0)
KEY_PURPOSE_3 (BLOCK0)                   KEY3 purpose                                       = USER R/W (0x0)
KEY_PURPOSE_4 (BLOCK0)                   KEY4 purpose                                       = USER R/W (0x0)
KEY_PURPOSE_5 (BLOCK0)                   KEY5 purpose                                       = USER R/W (0x0)
SECURE_BOOT_EN (BLOCK0)                  Enables secure boot                                = False R/W (0b0)
SECURE_BOOT_AGGRESSIVE_REVOKE (BLOCK0)   Enables aggressive secure boot key revocation mode = False R/W (0b0)
DIS_DOWNLOAD_MODE (BLOCK0)               Disables all Download boot modes                   = False R/W (0b0)
ENABLE_SECURITY_DOWNLOAD (BLOCK0)        Enables secure UART download mode (read/write flas = False R/W (0b0)
                                         h only)
BLOCK_KEY0 (BLOCK4)(0 errors):
  Purpose: USER
  Encryption key0 or user data
   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
BLOCK_KEY1 (BLOCK5)(0 errors):
  Purpose: USER
  Encryption key1 or user data
   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
BLOCK_KEY2 (BLOCK6)(0 errors):
  Purpose: USER
  Encryption key2 or user data
   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
BLOCK_KEY3 (BLOCK7)(0 errors):
  Purpose: USER
  Encryption key3 or user data
   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
BLOCK_KEY4 (BLOCK8)(0 errors):
  Purpose: USER
  Encryption key4 or user data
   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
BLOCK_KEY5 (BLOCK9)(0 errors):
  Purpose: USER
  Encryption key5 or user data
   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
BLOCK_SYS_DATA2 (BLOCK10)(0 errors):     System data (part 2)
   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W

Spi_Pad_Config fuses:
SPI_PAD_CONFIG_CLK (BLOCK1)              SPI CLK pad                                        = 0 R/W (0b000000)
SPI_PAD_CONFIG_Q (BLOCK1)                SPI Q (D1) pad                                     = 0 R/W (0b000000)
SPI_PAD_CONFIG_D (BLOCK1)                SPI D (D0) pad                                     = 0 R/W (0b000000)
SPI_PAD_CONFIG_CS (BLOCK1)               SPI CS pad                                         = 0 R/W (0b000000)
SPI_PAD_CONFIG_HD (BLOCK1)               SPI HD (D3) pad                                    = 0 R/W (0b000000)
SPI_PAD_CONFIG_WP (BLOCK1)               SPI WP (D2) pad                                    = 0 R/W (0b000000)
SPI_PAD_CONFIG_DQS (BLOCK1)              SPI DQS pad                                        = 0 R/W (0b000000)
SPI_PAD_CONFIG_D4 (BLOCK1)               SPI D4 pad                                         = 0 R/W (0b000000)
SPI_PAD_CONFIG_D5 (BLOCK1)               SPI D5 pad                                         = 0 R/W (0b000000)
SPI_PAD_CONFIG_D6 (BLOCK1)               SPI D6 pad                                         = 0 R/W (0b000000)
SPI_PAD_CONFIG_D7 (BLOCK1)               SPI D7 pad                                         = 0 R/W (0b000000)

Usb Config fuses:
DIS_USB_JTAG (BLOCK0)                    Disables USB JTAG. JTAG access via pads is control = False R/W (0b0)
                                         led separately
DIS_USB_DEVICE (BLOCK0)                  Disables USB DEVICE                                = False R/W (0b0)
DIS_USB (BLOCK0)                         Disables the USB OTG hardware                      = False R/W (0b0)
USB_EXCHG_PINS (BLOCK0)                  Exchanges USB D+ and D- pins                       = False R/W (0b0)
DIS_USB_DOWNLOAD_MODE (BLOCK0)           Disables use of USB in UART download boot mode     = False R/W (0b0)

Vdd_Spi Config fuses:
PIN_POWER_SELECTION (BLOCK0)             GPIO33-GPIO37 power supply selection in ROM code   = VDD3P3_CPU R/W (0b0)

Wdt Config fuses:
WDT_DELAY_SEL (BLOCK0)                   Selects RTC WDT timeout threshold at startup       = False R/W (0b0)

Fixed. Thx


Automatic release version detection

Changes for detecting automatically version from gradle.properties to release and incrementing new snapshot version.
'-PreleaseVersion' and '-PnewVersion' for releaseStart and releaseFinish jobs are optional in this change.
If 'releaseVersion' is not set, version from gradle.properties without '-SNAPSHOT' is taken.
If 'newVersion' is not set, next version is taken from releaseVersion with incremented patch version and '-SNAPSHOT' postfix.
I also added appropriate tests for this functionality :)
I made those changes because maven jgitflow plugin already has such functionality and we would like to use it. Please, let me know what do you think of it.

Coverage increased (+1.5%) to 55.114% when pulling 25ef2480c00012f72e1d0d34effbe46490877e34 on Mati20041:master into a9ed76ac6ec3ce2ae14fc0280b8193538cf57752 on RobWin:master.

That's awesome. Thx. Could you please update the Readme as well?

Hi,
I added new commit with readme and release notes update as you suggested. Feel free to edit if it doesn't follow your conventions :)

Coverage increased (+1.5%) to 55.114% when pulling 4d920bd1104cf993f2a8f7ff55c2aae3b42799cf on Mati20041:master into a9ed76ac6ec3ce2ae14fc0280b8193538cf57752 on RobWin:master.

Thx

Hi Rob,
Could you give me a hint about when will you able to release v0.5.0?

Done

Thx :)