Refactor of internal role hierarchy model + changes for 3.0.0

This PR contains a big refactoring of the role hierarchy model with minor changes in the APIs. This PR contains a potential 3.0.0 release for zend-permissions-rbac, containing BC breaks.
This PR includes the following changes:
Added

Check for circular references in role hierarchy when using Role::addChild() and Role::addParent() functions.

Changed

Role::addChild(RoleInterface $child), accepts only RoleInterface parameter, no string anymore.
Role::addParent(RoleInterface $parent), accepts only RoleInterface parameter, no string anymore.
Zend\Permissions\Rbac\AssertionInterface, added the optional parameters $permission and $role in the assert() function, as follows:
assert(Rbac $rbac, string $permission = null, RoleInterface $role = null)

Deprecated

Nothing.

Removed

AbstractIterator, removed the class. The role hierarchy is not based anymore on RecursiveIterator.

AbstractRole,  removed the class. All the functions have been moved in Zend\Permissions\Rbac\Role.

Role::setParent(), use Role::addParent() instead.

Fixed

#30, Fixed circular references with the protected functions Role::hasAncestor($role) used in Role::addChild() and Role::hasDescendant($role) in Role::addParent().

@ezimuel just a quick question - are we not going to bump PHP requirements to version 7.1 with 3.0.0 release??

@webimpress yes, I'm removing the support for PHP 5.6 and PHP 7.0, thanks for the reminder.

@webimpress fixed now, requiring PHP 7.1+.

Ping @Ocramius, @webimpress for review.
Ping also @olegkrivtsov, @asgrim, @DominicDetta, @codeaid for comments and feedback.

Hi all,
Thanks for including me in this conversation!
As you can imagine, a lot has happened since I posted the original issue. I ended up developing my own solution, which, to be honest, I'm really happy with and having successfully used it for several months in production environment there is no real need for me to switch back to Zend RBAC.
My solution literally consists of two classes - container and role - and supports adding roles by names and works around circular references. I posted the related files in this Gist in case anyone's interested to have a look. There's a usage.php file at the bottom showing how I'm using the container by building it from my service, which could really be anything.
Speaking about the PR - looks good to me at a glance. I like that the add* methods use type hinting -
stricter is always better in my books. Also, getting rid of the iterators should result in some performance increase (even if it's a small one). It's always good to strip out something that is not absolutely needed.
Other than that, I can only go by what @weierophinney says as he's the expert when it comes to framework standards. Sorry, if I'm not really being helpful :/

@codeaid

…there is no real need for me to switch back to Zend RBAC.

Maybe (unit) tests? 😉

@froschdesign You mean unit testing my implementation or zend-permissions-rbac?

@codeaid thanks for sharing your code with us. It's always interesting to compare different solutions to the same problem. If this works for you that's great! Of course, as @froschdesign suggested unit test will help. I suggest to add it in your implementation to find issues before they will happens in production. Thanks again for your feedbacks!

@froschdesign @ezimuel - Of course I have unit tests! How could you even assume otherwise!? :D I added them to the gist (if it helps). I believe they yield a 100% coverage too so I'm covered (pun intended).

@webimpress, @weierophinney I incorporated all the feedbacks, including: declare(strict_types=1); on each file, and removing fluent interface. Moreover, I added some unit tests to improve the code coverage.

Now we have 100% code coverage!

Ciao a tutti 😄
I'm looking forward to this release because it contains changes which are perfect for my requirements.
I really like the new signature of the assert() function which by the way is something similar to what I did currently in a project.  I'm not an expert so I don't think I can be useful, but I can express some questions.
Right now there have been only 2 requirements that I don't know how to achieve with this component:

How to deny  the inheritance for a specific permission (more explanation here)
How to return to the client a list of resources filtered by the RBAC rules (I would need to invoke the isGranted  method for each resource to verifiy accessibility by the current role: the permission string need to be generated for each resource and eventually the assert class can be different for each resource)

As always thanks for your contributions 👍

@DominicDetta for the first question I replied on discourse.zendframework.com.
For the second question, if a resource that you mentioned is a permission, you should have a list of permission stored somewhere in your implementation (maybe into a db table or a configuration file). You can iterate on it and check for grant using the Zend\Permission\Rbac\Rbac::isGranted() function.

@weierophinney I updated the PR with all your suggestions, thanks!

The point is consistency within our components. We have been using the
spaces around the : operator consistently since we first started
declaring return types. If we do differently here, we are indicating
"anything goes".
Interestingly, there is an open discussion on psr-12 (which is a revision
of psr-1/2 for PHP 7) currently happening about this very subject; a number
of people would prefer the extra space.
For now: we need to keep a consistent style across all repos, which means
the extra space. If psr-12 goes in favor of no space, we'll revisit later
and update.
On Feb 19, 2018 11:01 AM, "codeaid"<EMAIL_ADDRESS>wrote:

@codeaid commented on this pull request.
In src/Rbac.php
https://github.com/zendframework/zend-permissions-rbac/pull/34#discussion_r169131690
:

  */

public function setCreateMissingRoles($createMissingRoles)

public function setCreateMissingRoles(bool $createMissingRoles): void

@weierophinney https://github.com/weierophinney I know it's not my
place to speak but I don't think there should be a space on the left side
of the colon. All php.net code snippets (e.g. here
http://php.net/manual/en/migration71.new-features.php) have it without
it and many IDE's (such as PhpStorm) default to not having it too.
Having a space to the left would mean extra configuration would need to be
specified only to achieve something that's contrary to the current
"standard".
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zendframework/zend-permissions-rbac/pull/34#discussion_r169131690,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABlVxknssjSMNzg0O2IJe-4F5JTnM9Yks5tWaj3gaJpZM4SEFws
.

@weierophinney I wrote the migration guide, removed the optionals in AssertionInterface and fixed an issue on CHANGELOG.

@ezimuel I've edited and expanded the migration document; I think this is good to go at this point!

@froschdesign I added the backslash for pipe in docs, as you suggested. Thanks!

Thanks, @ezimuel - great improvement! Merged to develop.


start/stop a server from the extension

It should technically be possible to start and stop the server from the extension. Seems like a helpful feature, and probably should exist for the sake of coverage of features from a usability point of view.

This should be implemented as an inline view/item/context that would trigger a command to either start or stop a training server.


Add box sizing to everything

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/8206421-add-box-sizing-to-everything?utm_campaign=plugin&utm_content=tracker%2F1241729&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F1241729&utm_medium=issues&utm_source=github).

Fixed in d90b71f0dc1c1aad0b49ebd32105cebb89da0904


Adding tests for protobuf

Not finished yet

Can you continue with this @merlijn
Guess just merge in the protobuf branch and complete it from there?

Codecov Report

Merging #89 into event-protobuf-serialization will increase coverage by 2.06%.
The diff coverage is 41.17%.

@@                       Coverage Diff                        @@
##           event-protobuf-serialization      #89      +/-   ##
================================================================
+ Coverage                         76.58%   78.65%   +2.06%
================================================================
  Files                               114      114
  Lines                              2661     2670       +9
  Branches                            133      135       +2
================================================================
+ Hits                               2038     2100      +62
+ Misses                              623      570      -53

Impacted Files
Coverage Δ

...rc/main/scala/com/ing/baker/types/Converters.scala
86.36% <100%> (+4.88%)
:arrow_up:

...untime/actor/serialization/ProtoEventAdapter.scala
70.7% <33.33%> (+16.91%)
:arrow_up:

...ypes/src/main/scala/com/ing/baker/types/Type.scala
57.89% <0%> (+5.26%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8585e16...7b22fc5. Read the comment docs.


Fix #377 - Refactor the Oni language service types to use CompletionItemKind from the vscode language server

This is an incremental step towards moving to a LSP-backed implementation of the TypeScript language service. There are several enums and entries, like CompletionItemKind, that were created one-off based on the typescript standalone server implementation, but this refactors to use the language server types provided in vscode-languageserver-types, so that we don't need a duplicate or parallel implementation.

WIP to Fix #377


Dependency updates

Addresses some vulnerabilities too.
Note: Was unable to update tap without breaking the unit tests.

This adds @xmldom/xmldom but does not use it or remove xmldom. I'll create a branch with this as a base.

Thanks! Resolved in #59

Thanks @tmcw. I'm not sure what happened. I updated the code. I guess I forgot to push the commit.


(FACT-1552) Add disk-related facts on AIX

This adds the disks, filesystems, partitions, and mountpoints facts to AIX.
This still needs updates to the schema and acceptance tests before it can be merged.

I'm totally expecting lint to throw some curveballs at me before this will pass Travis

CLA signed by all contributors.

Yup. So did doxygen.

@MikaelSmith fixed the npos issue. I also pushed up resolution info in the schema (which probably needs to be updated/audited for several of the weird platforms at this point)

It looks like the acceptance tests don't cover disk/filesystem on any platform. I'm happy to add those on AIX if we want them, but I'd be worried about them being pretty heavily tied to our internal infrastructure in its current form. They'd be broken for anyone outside our firewall, and very likely break when we make changes to how we build out the AIX machines.


mod_cgi - use MAP_PRIVATE to mmap temporary file

instead of MAP_SHARED.  flash filesystem JFFS2 does not support mmap PROT_READ MAP_SHARED, though it does support mmap PROT_READ MAP_PRIVATE
Reference: https://redmine.lighttpd.net/issues/2715
Although MAP_SHARED is preferred, CGI input body is fully collected prior to handler invoking the CGI, so the temporary file is never modified after being mapped.  Since the request input body is specific to request and is temporary file, mmap PROT_READ MAP_PRIVATE works fine.

It seems like MAP_PRIVATE is the better choice here, yes.
Thanks!
Merged in 3fd80ff8ec0196274eec4e0ef42718eee627cae5


[sb] ignore enum subclass

Fixes #38728

API change check
API changes are not detected in this pull request.

/check-enforcer override

check enforcer is sticking today


Support for the "rendered" Tuned CR.

Recent NTO stops using ConfigMaps to communicate profile changes between
the operator and this operands.  This change adds support for the "rendered"
Tuned CR which is now used by the operator to inform the operand about
the global tuned profile changes.  Support for the old way of communicating
the changes (ConfigMaps) is still present, but will be removed soon.
Companion PR: https://github.com/openshift/cluster-node-tuning-operator/pull/98

@sjug, PTAL

I will cancel the hold when both PRs are ready to merge

/hold

/lgtm

/hold cancel


Event extraction.

Hi, I notice that you report the few-shot results on ACE-2005 and I'm very interested in your implementation. Do you have any plan to share the code for event extraction? It would be very helpful.

Hi, thank you for your attention. We implement our model for event detection (only event argument extraction) as a classification task similar to the GLUE. We use manual prompt for each event type to classify the event argument role. Recently, the code is not available. We are  using the model in a IE toolkit for a business project.


Trace does not close properly when using ViewController

I have single index.jsp inside webapp and next configuration:
@SpringBootApplication
public class AggregationServiceApplication extends WebMvcConfigurerAdapter {

    public static void main(String[] args) {
        SpringApplication.run(AggregationServiceApplication.class, args);
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/index").setViewName("index");
    }
}

application.yml
spring.mvc.view.prefix: /
spring.mvc.view.suffix: .jsp

When I'm trying to access /index (/index.jsp is ok) sleuth warns:

Tried to close span but it is not the current span: [Trace: bdb52aad2860fb80, Span: bdb52aad2860fb80, Parent: null, exportable:false].  You may have forgotten to close or detach [Trace: bdb52aad2860fb80, Span: 334110a624d20d76, Parent: bdb52aad2860fb80, exportable:false]

Request flow:
Request
    -> TraceFilter
        -> spanFromRequest = null
        -> createSpan
            -> SpanContextHolder.push([Trace: bdb52aad2860fb80, Span: bdb52aad2860fb80, Parent: null, exportable:false])
        -> filterChain.doFilter
            -> DispatcherServlet
                -> TraceHandlerInterceptor.preHandle
                    -> createSpan
                        -> SpanContextHolder.push([Trace: bdb52aad2860fb80, Span: 334110a624d20d76, Parent: bdb52aad2860fb80, exportable:false])
                -> TraceFilter
                    -> spanFromRequest = [Trace: bdb52aad2860fb80, Span: bdb52aad2860fb80, Parent: null, exportable:false]
                    -> continueSpan
                        -> SpanContextHolder.push([Trace: bdb52aad2860fb80, Span: bdb52aad2860fb80, Parent: null, exportable:false])
                    -> createSpan
                        -> return spanFromRequest
                    -> filterChain.doFilter
                    -> detachOrCloseSpans
                        -> SpanContextHolder.close([Trace: bdb52aad2860fb80, Span: bdb52aad2860fb80, Parent: null, exportable:false])
                            -> current = [Trace: bdb52aad2860fb80, Span: bdb52aad2860fb80, Parent: null, exportable:false]
                            -> current.parent = [Trace: bdb52aad2860fb80, Span: 334110a624d20d76, Parent: bdb52aad2860fb80, exportable:false]
                            -> CURRENT_SPAN.set([Trace: bdb52aad2860fb80, Span: 334110a624d20d76, Parent: bdb52aad2860fb80, exportable:false])
                -> TraceHandlerInterceptor.afterCompletion
                    -> isSpanContinued(request)
                        -> return true
                    -> return WITHOUT tracer.close([Trace: bdb52aad2860fb80, Span: 334110a624d20d76, Parent: bdb52aad2860fb80, exportable:false])
        -> detachOrCloseSpans
            -> SpanContextHolder.close([Trace: bdb52aad2860fb80, Span: bdb52aad2860fb80, Parent: null, exportable:false])
                -> cur = [Trace: bdb52aad2860fb80, Span: 334110a624d20d76, Parent: bdb52aad2860fb80, exportable:false]
                -> ExceptionUtils.warn

SpanContextHolder.getCurrentSpan() = [Trace: bdb52aad2860fb80, Span: 334110a624d20d76, Parent: bdb52aad2860fb80, exportable:false]

And at the end of request SpanContextHolder does not empty, thus next requests (in this thread) will have this span as parent.

@marcingrzejszczak, you implemented continueSpan header, could you please help me understand what is it used for, so that I can do the pull request?
Seems so it is the only cause of the issue.

We've been working mostly with Rest based controllers so we had such a flow
TraceFilter#doFilter
  TraceHandlerInterceptor#preHandle
    Controller
  TraceHandlerInterceptor#afterCompletion
TraceFilter#doFilter#finally

I see that there's some additional flow when taking into consideration view controller.
The problem with TraceHandlerInterceptor is that it starts and needs to close a span. In 1.2.0 most likely we'll try to remove this problem by solving this issue https://github.com/spring-cloud/spring-cloud-sleuth/issues/471 .
In 1.1.x and 1.0.x we'll have to try to tackle this differently. Coming back to your question... The TraceHandlerInterceptor is responsible for starting and closing a new span whose name is the Controller's method name. TraceFilter might be processing the same span multiple times and then we just want to continue this instead of creating a new span again. That's why we're setting the TraceRequestAttributes.SPAN_CONTINUED_REQUEST_ATTR. In this case then in the TraceHandlerInterceptor we want to just continue the span upon preHandle and not do anything on afterCompletion cause it will be the TraceFilter that will detach the span (welcome to the tracing hell ;) ). In your case the order is shifted unfortunately :/

In my case flow next:
TraceFilter#doFilter
  TraceHandlerInterceptor#preHandle
    TraceFilter#continueSpan
        request.setAttribute(TraceRequestAttributes.SPAN_CONTINUED_REQUEST_ATTR, true)
    TraceFilter#doFilter
      Controller
    TraceFilter#doFilter#finally
  TraceHandlerInterceptor#afterCompletion
    if (request.getAttribute(TraceRequestAttributes.SPAN_CONTINUED_REQUEST_ATTR)) - do not close span
TraceFilter#doFilter#finally

TraceHandlerInterceptor checks flag TraceRequestAttributes.SPAN_CONTINUED_REQUEST_ATTR and creates new span as flag is false, second call of TraceFilter continues span, sets flag and closes it in finally, but doesn't remove flag from the request when closes span and TraceHandlerInterceptor does not close it because it has TraceRequestAttributes.SPAN_CONTINUED_REQUEST_ATTR flag.
Thus I think either TraceFilter should remove this flag when span closes or TraceHandlerInterceptorshould override Trace.TRACE_REQUEST_ATTR attribute with created span or TraceHandlerInterceptor should not check flag if it is creator of current span.

Or second choice is in TraceHandlerInterceptor#preHandle set flag, that request instrumented by controller interceptor and check in TraceFilter if this flag is set not create another span and of cource remove this flag in TraceHandlerInterceptor#afterCompletion. So you will have clear span hierarchy with two spans.
I think create span for controller method is fine, it will visualize the flow and you can measure the time between filters run and service run.

I think create span for controller method is fine, it visualizes the flow and you can measure the time between filters run and controller run.

You'll still be able to do it if you want to. In your controller you can create a span and close it as you wish. This is related to this: https://github.com/spring-cloud/spring-cloud-sleuth/issues/180

Agree, have abillity to add is always betten than have no abillity to remove :)

I wrote to you on Gitter that I like the idea of removing the attribute upon closing (it just makes sense ;) ) but I'll give it a longer thought tomorrow cause it's almost 00:00 here ;)

done via https://github.com/spring-cloud/spring-cloud-sleuth/commit/ee8c73df53478b031e7cd080b328a7b2131b391f


Implement course sections

Adds an optional argument section-number to /course join that allows user to join specific section of course.
Todo:

[x] Add documentation
[x] Allow switching section without leaving/rejoining course
[x] Add command to list classmates
[x] Add optional argument section-number to /course roster to get only members of a specific section

@j-651 What would a get-section command do?


plugin-less instantiates CSSPluginBase() when it is not running in a browser.

I am trying (unsuccessfully) to use plugin-less in conjunction with server-side rendering. The root cause of the problem is CSSPluginBase.prototype.instantiate(), which attempts to inject a style element into the DOM without document being defined:
CSSPluginBase.prototype.instantiate = function(load) {
  if (this.builder)
    return;

  var style = document.createElement('style');
  style.type = 'text/css';
  style.innerHTML = load.metadata.style;
  document.head.appendChild(style);
};

module.exports = CSSPluginBase;

I am not sure what the correct fix is in this case. There may be two. First, explicitly checking if document is defined in CSSPluginBase.prototype.instantiate() seems appropriate and works for me in practice:
  if (this.builder || typeof document === 'undefined')
    return;

Second, less.js may require a fix so that the CSSPluginBase() constructor is not even called unless plugin-less is running in a browser. plugin-css explicitly checks if it is running in a browser, for example, and does not have an issue with server-side rendering. Neither does mobilexag/plugin-sass.

It should be fine to entirely short-circuit the CSS loading when running in a non-browser environment, with a check exactly like that.
If you think that will do it, please do send a PR. Or do we need to do something here as well?

Will be fixed by systemjs/plugin-css/pull/113. After thinking about this for a bit, I like the fact that plugins built on top of CSSPluginBase are not required to worry about the browser injection issue.


Consider making it a gem

I would recommend to make this into a gem too, so that installation becomes easier.
As for a name, perhaps:
jhero-sinatra-tutorial
jhero_sinatra_tutorial

or something like that.
And then perhaps even self-serve this through sinatra for people to follow; e. g. with sub-routes such as "step1", "step2" etc... to link between them like a chapter in a book.

Thank you, I will keep that into consideration for a final version. For right now, this is just to introduce people to ruby programming and how it works in  a web development environment, so making it into a gem would be something more advanced. I appreciate the suggestion though, will look into it in the future.


Data Science with Python : Dealing with Missing Values

Description
Welcome to the 'DSWP' Team, good to see you here.
With this issue, readers will get introduced to the core information about 'Dealing with Missing Values' along with sample code completely in an effective way.
To get assigned to this issue, add your serial numbers mentioned in the spreadsheet of "Data Science with Python", the approach one would follow and the choice you prefer (Documentation, Audio, Video). You can go with all three or any number of options you're interested to work on.
If you had referred any resources, add them up in "DS Resources". Similarly, if you had used datasets, include them in "DS Datasets".
Domain: Machine Learning
Mentors Assigned: Aarya Patel / Yash Goel
Points to Note :
The issues will be assigned on a first come first serve basis, 1 Issue == 1 PR.
"Issue Title" and "PR Title should be the same. Include the issue number along with it.
Changes should be made inside the Datascience_With_Python/ directory & Datascience_With_Python branch.
Follow Contributing Guidelines & Code of Conduct before start Contributing.
This issue is only for 'GWOC' contributors of the 'DSWP' domain.
All the best. Enjoy your journey ahead. 😎
Domain
Datascience with Python
Type of Contribution
Audio, Video, Documentation
Code of Conduct

[ ] I will follow Contributing Guidelines & Code of conduct of this project.

/assign

/Name: Shiwansh Raj
Batch: 10
Sr. No: 368
Documentation
Approach: several ways of dealing with missing values , and explaination giving examples
@prathimacode-hub please assign the same to me

Hey, there is already same issue that's assigned to you. I shall close this one as it's duplicate. @photon149


Emit network error from ImageUrl

Add minimal-event-emitter functionality to ImageUrl to be able to emit networkError events.
While doing this, I also realized that NetworkError can't extend built-in methods of native classes like Error (I was getting an empty string as the message), so I had to explicitly add message to the constructor method. Let me know if you think there's a cleaner way of doing this.

Bump - changes have been made.

Thanks!


Export for VS Code Usage

Is it possible that this code be packaged for use in VS Code. There is a popular Mermaid syntax highlighter for VS Code currently, however it doesn't offer support for all diagram types. Is it possible to convert this package into an extension for use in VS Code since Monaco is its default editor? Thanks,

Currently, it seems, that VSCode, even though it uses Monaco Editor internally doesn't allow you to build extensions that use a Monaco Grammar, but only in TextMate Grammars. I tried to convert this grammar into a TextMate grammar, but the grammar method is way too low level and things got out of hand very quickly. In a programmatic language, we can use data structures that can then be imported in tokenizers, but that's not the case in TextMate, it's plain JSON. Also, TextMate uses a different RegExp syntax called oniguruma, so things won't be compatible. For now, we'll just have to wait for support or try to convert the whole grammar to TextMate, which won't be too easy given the bad debugging features it gives. Related: microsoft/vscode#216

This would be useful also for support in vscode notebooks


[BUG] Scratchpad stays on screen when hidden after reconnecting monitor

Pyprland version
2.0.2
Describe the bug
When disconnecting external monitor scratchpad will always stays on screen. When hidden it show on top of all windows and is unable to focus. When shown it behaves as usual. The problem stays after all of: close scratchapd window, hyprctl reload, restart pypr.
To Reproduce

Scratchpad is shown on external monitor
Disconnect monitor
Observe wrong behavior on laptop screen. Stays broken after connecting monitor

Expected behavior
Behave as usual: hide scratchpad completely
Configuration (provide following files/samples when relevant):

pyprland.toml    [scratchpads.term-quake]
    command = "wezterm start --class term-quake"
    position = "0% 0%"
    size = "100% 50%"

hyprland.conf      bind = ,T, exec, pypr toggle term-quake
      bind = ,T, submap, reset
      $term_quake = ^(term-quake)$
      windowrule = workspace special silent,$term_quake
      windowrule = float,$term_quake

Additional context
I was able to fix manually by hyprctl dispatch togglespecialworkspace scratch_term-quake. After that works as expected.

I don't reproduce this issue the same way as you, I can't figure the scenario which triggers it on my system.
Anyway, I did some reasonable change in the git version which is very likely to fix the problem. Would you have a chance to test it and provide some feedback?

I think there is another issue visible with the monitors plugin when scratchpads are visible and the monitors are re-layout.
I think this is a problem in general of floating windows when moving the screens layout, the floating windows aren't "following" the shift (in case a monitor changes place).
Do you confirm ? Maybe you are also hitting this problem...

Not sure if this one concerns you too, but for the related hyprland problem, I opened an issue: https://github.com/hyprwm/Hyprland/issues/4765
I also face a problem sometimes (not easy to identify) where special workspaces are made visible while they were not after a monitor change... this could add to the symtom but I don't think it's pyprland related.

I don't reproduce this issue the same way as you, I can't figure the scenario which triggers it on my system. Anyway, I did some reasonable change in the git version which is very likely to fix the problem. Would you have a chance to test it and provide some feedback?

Hi. Yes, on the last commit I can't reproduce it, seems fine. Thanks!


[Bug] Unjustified W0326 (mixed-task-test-settings) warning when file doesn't contain neither Test Cases nor Tasks

What happened?
Robocop throws unjustified W0326 (mixed-task-test-settings) warning on following file:
# __init__.robot
*** Settings ***
Documentation       My task documentation.

Task Tags           common_tag_for_task_suites

What command/code did you try to run?
robocop
What is the full error message?
tasks/init.robot:4:1 [W] 0326 Use test-related setting 'Test Tags' if Test Cases section is used (mixed-task-test-settings)
What did you expect to happen instead?
Task Tags should be allowed for init.robot files which doesn't contain neither Test Cases nor Tasks sections.
Operating System
Linux
Robocop version
5.3.0

It sounds like a bug I fixed 2 weeks ago but didn't release it yet (#1101). I will do the release now and you can update the thread later if the issue was fixed or not.

Released Robocop 5.4.0

This issue was fixed in 5.4.0 version. Thank you!


Error chain compat

Hello,
this pull requests introduces error-chain for the error handling. It automatically introduces traits like Display and Error making the library easier to use in dependent crates.

Thanks for the feedback. I'll apply them the next days!


Playstation-gamers have lags

It often resets a few blocks and chests take forever to open.
I have added a Samle-Vid, Dump-Link, and Logs from Server and Bungee
Vid: https://youtu.be/p6ptuAYn2_k
Dump: https://dump.geysermc.org/RY1SJeqgNcKAYIEUXcddzI5qpo7Shsxo
bungee.log
2022-11-08-2.log

You opened this issue in the GlobalLinkServer repo. Please open an issue in Geyser repo: https://github.com/GeyserMC/Geyser/issues/new/choose


add SIMD support for long sequences

for sequences with lengths over 64 characters it would still be possible to calculate the similarity for multiple sequences in parallel using simd. However for very long sequences it might be faster to compare individual sequences especially when a score_cutoff is specified

This has a couple of problems:

depending on the metric it can be hard to implement, since the algorithms behavior depends on the individual string lengths
many of the algorithms use ukkonen bands to improve the runtime when the user provides a score_cutoff. Since the ukkonen bands depend on the string lengths it's not really possible to use both of them. Depending on the user provided score cutoff, this can provide a much larger speedup.


vEOS MLAG won't come up due to auto generated mac addresses

it seems auto-generated macs causing mlag issues:
https://github.com/GNS3/gns3-gui/issues/2475
I tried to change that in /vrnetlab/veos/docker/vrnetlab.py
def gen_mac(last_octet=None):
""" Generate a random MAC address that is in the qemu OUI space and that
has the given last octet.
"""
return "0C:54:00:%02x:%02x:%02x" % (
random.randint(0x00, 0xff),
random.randint(0x00, 0xff),
last_octet
)

but somehow after running "make" it returns to the original value and the device booted from that image still has the macs that start with 52:54 instead of 0C:54 . I think after running make, the docker image installs a new vrnetlab.py

@monrad  , could you have a look please?

vrnetlab.py is copied in from common/vrnetlab.py by the Makefiles so you would need to modify common/vrnetlab.py or the better way is to override the gen_mac function specifically for veos.

Awesome, thanks a lot, @plajjan. Yeap, that fixed it. Once I figure out how to selectively do it for vEOS, I can create a pull request


Change asserts to raised errors.

Change the assert checks to raise an appropriate Error along with helpful message.

I just did this in #16 , can you assign this issue to me?
BTW, what is the Python version (2 or 3)? That matters.


python3Packages.aiohue: 2.3.1 -> 2.5.0

Motivation for this change
Update to latest upstream release 2.5.0
Change log: https://github.com/home-assistant-libs/aiohue/releases/tag/2.5.0
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Added a release notes entry if the change is major or breaking
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 124858 at aa390011 run on aarch64-linux 1

1 package failed to build:

home-assistant

2 packages built successfully:

python38Packages.aiohue
python39Packages.aiohue

Note that build failures may predate this PR, and could be nondeterministic or hardware dependent.
Please exercise your independent judgement. Does something look off? Please file an issue or reach out on IRC.

I have cherry-picked this change into my staging tree, thank you!


"Vulturești", "Dienci", "Valea lui Alb" and "Vlăngărești" are listed in the drop-down menu

Description:
The villages are listed in the drop-down menu alongside its corresponding county and commune, according to the law
Preconditions:
The website (https://peviitor-ro.github.io/ui.orase/) is up and runing. After every step delete the text you typed from the search bar.

Step 1
Write in the search bar "Vulturești".

Expected results
The location is listed in the drop-down menu as "Sat Vulturești OLT (Vulturești)".

Step 2
Write in the search bar "Dienci".

Expected results
The location is listed in the drop-down menu as "Sat Dienci OLT (Vulturești)".

Step 3
Write in the search bar "Valea lui Alb".

Expected results
The location is listed in the drop-down menu as "Sat Valea lui Alb OLT (Vulturești)".

Step 4
Write in the search bar "Vlăngărești".

Expected results
The location is listed in the drop-down menu as "Sat Vlăngărești OLT (Vulturești)".


Exception when detaching model that have active reaction with reference

this sample
const aRef = rootRef<A>("aRef");

@model("A")
class A extends Model({
  n: idProp.withSetter(),
  aref: tProp(types.maybe(types.ref(aRef))).withSetter()
}) {
  protected onAttachedToRootStore() {
    console.log("attach", this.n);
    const disposers = [
      autorun(() => {
        console.log("reaction", this.aref?.current);
      })
    ];
    return () => {
      console.log("detach", this.n);
      disposers.forEach((it) => it());
    };
  }
}

@model("B")
class B extends Model({
  as: tProp(types.array(types.model(A))).withSetter()
}) {
  @modelAction delA() {
    this.as.splice(1, 1);
  }
}

const b = new B({
  as: [new A({ n: "1" }), new A({ n: "2" })]
});
registerRootStore(b);
b.as[1].setAref(aRef(b.as[0]));
b.delA();

causes  [mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: 'Reaction[Autorun@166]' Error: a reference of type 'aRef' could not resolve an object with id '1'

use
this.aref?.maybeCurrent

instead of
this.aref?.current

or use isValid before accessing current if the referenced object might cease to exist

why reference is not valid? i`m deleting model with id '2'? not '1'

Because a[1] holds a reference to id "1" through the rootstore (that's why it is called a "root" reference, but when a[1] gets detached from the root store then a[1] cannot "reach" a[0] (id: 1) and becomes null

thanks


help2man is now required for crosstool-NG

This commit fixes this issue during esp-open-sdk build:
configure: error: missing required tool: help2man
make[1]: *** [_ct-ng] Error 1

Awesome thanks for catching that and contributing!  Just checked it out and yep that fixed the issue.  Will merge in now, thanks!


docs(redirectOptions): fix exclude wildcard example

Types of changes

[x] Documentation change/clarification

Description

I tried adding /api/scan/* to my supabase.redirectOptions.exclude array in my Nuxt config, but it did not match a server route (server/api/scan/[id].ts), whereas /api/scan/** seems to work – let me know if this is expected or i'm "holding it wrong". If this is the expected usage, then I've proposed a docs update.
P.S. Thanks for the module! :3
Checklist:

[x] I have updated the documentation accordingly.

You're right, thanks!


[BEAM-954] FileBasedSink: remove unused code of TemporaryFileRetention.

Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

[x] Make sure the PR title is formatted like:
[BEAM-<Jira issue #>] Description of pull request
[x] Make sure tests pass via mvn clean verify. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
[x] Replace <Jira issue #> in the title with the actual Jira issue
number, if there is one.
[ ] If this contribution is large, please file an Apache
Individual Contributor License Agreement.

@dhalperi

LGTM


fix: stricter lakefile.olean compatibility check

Split from/builds on #2749.

@Kha Sorry, that was just a rebase cleanup push. I am still working on the mathlib breakage @semorrison mentioned.

@semorrison I have hopefully fixed the mathlib incompatibility, but it appears that despite being based on the latest nightly the bot does not wish to test it. Is this expected (i.e., is their some behind-the-scenes work that has to been done before we can test on a particularly nightly)?

Yes, unless the bot can find a commit on the nightly-testing branch at Mathlib that already compiles using nightly-2023-11-14, it won't start. Because of the backlog of divergences, this might be the case now. I'll manually intervene. :-)

Ah, this is not happening because #2749 broke cache.

Ah, this is not happening because #2749 broke cache.
I've fixed cache, and a build of nightly-testing is hopefully on the way soon, after which we'll be able to test this PR.

@semorrison, I'm confused, I thought those breakages were already fixed by mathlib4#8216 (which is why #2749) got a checkmark from the bot?

The problem is that that leanprover-community/mathlib4#8216 was not yet merged into nightly-testing. This step is still entirely manual, but will not be next time around!

Okay, lean-pr-testing-2842 now compiles (and tests, in parallel!) locally for me now. Hopefully the bot will report the same shortly.

I addressed @Kha's comments, @semorrison helped me get a successful build of mathlib, and I have now cleaned up the commit history, so this should be ready for review! @joehendrix, as the IO tsar, I leave the final word to you.

I am fine with the IO changes.

Both the PR title and changelog say that there is a "stricter check", but what precisely has changed? What was the check doing before and what is it doing now and why will it help?

@digama0 I add a brief summary to the PR body and link to the PR in the release note.


Issues on Codes blocks generation

Hi team,
I just install Showdown in version 1.8.7 :

Currently, I'm facing of an old issue which must be fixed (#184)
The following Markdown code produce this result :
* **Author** : ``Nicolas DUPRE (NDU9005)``
* **Release** : ``01.10.2018``
* **JIRA request** : ``CEPS01T-83283``
* **Edition Tags** :
    ````abap
    * BEGIN_ADDITION - NDU90045 - CEPS01T-83283
      <<Code Changes Here>>
    */ END_ADDITION - NDU90045 - CEPS01T-83283
    ````

It's very weird, because the underscore in BEGIN_ADDITION disapears. I try to break BEGIN_ADDITION which can be an instruction in the Showdown engine, but nothing change.

The following Markdown code produce the good result :
* **Author** : ``Nicolas DUPRE (NDU9005)``
* **Release** : ``01.10.2018``
* **JIRA request** : ``CEPS01T-83283``
* **Edition Tags** :
````abap
* BEGIN_ADDITION - NDU90045 - CEPS01T-83283
  Code Changes Here
*/ END_ADDITION - NDU90045 - CEPS01T-83283

( Dont take care of code highlight)

I expected this result :

When I add a new line , that works, but I don't want these spaced lines :
* **Author** : ``Nicolas DUPRE (NDU90045)``
* **Release** : ``01.10.2018``
* **JIRA request** : ``CEPS01T-83283``
* **Edition Tags** :

    ````abap
    * BEGIN_ADDITION - NDU90045 - CEPS01T-83283
      Code Changes Here
    */ END_ADDITION - NDU90045 - CEPS01T-83283
    ````

UPDATE :
When I use Indented code block, , in this following code block, the result is a Code block into another one :
      " Parcourir le niveau 1 de la hiérachie.
      LOOP AT lt_rgsb1.
        CALL FUNCTION 'G_SET_FETCH'
          EXPORTING
            setnr            = lt_rgsb1-setnr
          TABLES
            set_lines_single = lt_rgsb2
          EXCEPTIONS
            no_authority     = 1
            set_is_broken    = 2
            set_not_found    = 3
            OTHERS           = 4.

        " Parcourir le niveau 2 de la hiérachie.
        LOOP AT lt_rgsb2.
          CALL FUNCTION 'G_SET_FETCH'
            EXPORTING
              setnr            = lt_rgsb2-setnr
            TABLES
              set_lines_single = lt_rgsb3
            EXCEPTIONS
              no_authority     = 1
              set_is_broken    = 2
              set_not_found    = 3
              OTHERS           = 4.

Result :

With my development experience, one possible explanation could be, when openning tags for code block did not begin at the first char of one line (so, containing spaces/tab (in my case tab are spaces)), the engine only check the closing tag for code block, without take care of spaces/tab as the openning one. So the first corresponding closing tag (```) is good candidate.
When the root openning tag for code don't begin with tab/space, there is no issue.
END UPDATE.
Do you know why that does not work in my case ?
Thanks a lot for the support.
Best Regards,
Nicolas DUPRE

Hi @neooblaster
The newline between * **Edition Tags** :  and the fenced codeblock is required according to the original spec.
Some markdown implementations are more lax and don't require this (namely commonmark)
Note: Showdown version 2.0 which have a fully compliant commonmark "mode".

Hi @tivie,
Thank you for your reply. I did not know that was the official spec.
I always skip the newline, because my tools which renders my Markdown (PhpStorm, Markdown-PDF) add spaces between my list items.
An idea when Showdown v2.0 will be released ?

Hope I can launch an alpha until the end of the year

Ok top !
I will be present to test it with my "issue" ;)
Thank you for your support.


R2BasicWebView.Listener#resourceAtUrl should probably have a default value

Testing out the latest version at develop and noticed a small thing that was probably missed. The method resourceAtUrl at R2BasicWebView.Listener should probably have a default value null like the other new methods tagged with @InternalReadiumApi.

Good point, I fixed it in https://github.com/readium/kotlin-toolkit/pull/305


Stack trace shown if you accidentially bst COMMAND <directory>

See original issue on GitLab
In GitLab by [Gitlab user @jennis] on Jun 28, 2018, 10:00
Summary
It's not uncommon to find elements with the same name (minus the file extension) as a subdirectory within the element path, especially when we're using stack elements.
Executing a bst COMMAND on a directory will produce a stack trace.
Steps to reproduce
If you execute the bst show command on a directory you'll receive something similar to the following:
 $ pwd
/home/jamesennis/autotools

 $ ls elements/
base  base.bst  hello.bst  importme.bst

 $ bst show base
[--:--:--][][] START   Loading pipeline
[--:--:--][][] BUG     [Errno 21] Is a directory: '/home/jamesennis/autotools/elements/base'

    Traceback (most recent call last):
      File "/home/jamesennis/.local/bin/bst", line 8, in <module>
        sys.exit(cli())
      File "/home/jamesennis/.local/lib/python3.5/site-packages/click/core.py", line 722, in __call__
        return self.main(*args, **kwargs)
      File "/home/jamesennis/buildstream/buildstream/_frontend/cli.py", line 162, in override_main
        standalone_mode=standalone_mode, **extra)
      File "/home/jamesennis/.local/lib/python3.5/site-packages/click/core.py", line 697, in main
        rv = self.invoke(ctx)
      File "/home/jamesennis/.local/lib/python3.5/site-packages/click/core.py", line 1066, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/home/jamesennis/.local/lib/python3.5/site-packages/click/core.py", line 895, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/jamesennis/.local/lib/python3.5/site-packages/click/core.py", line 535, in invoke
        return callback(*args, **kwargs)
      File "/home/jamesennis/.local/lib/python3.5/site-packages/click/decorators.py", line 27, in new_func
        return f(get_current_context().obj, *args, **kwargs)
      File "/home/jamesennis/buildstream/buildstream/_frontend/cli.py", line 543, in show
        except_targets=except_)
      File "/home/jamesennis/buildstream/buildstream/_stream.py", line 114, in load_selection
        fetch_subprojects=False)
      File "/home/jamesennis/buildstream/buildstream/_stream.py", line 814, in _load
        fetch_subprojects=fetch_subprojects)
      File "/home/jamesennis/buildstream/buildstream/_pipeline.py", line 113, in load
        meta_elements = self._loader.load(rewritable, None)
      File "/home/jamesennis/buildstream/buildstream/_loader/loader.py", line 114, in load
        loader._load_file(name, rewritable, ticker)
      File "/home/jamesennis/buildstream/buildstream/_loader/loader.py", line 218, in _load_file
        node = _yaml.load(fullpath, shortname=filename, copy_tree=rewritable)
      File "/home/jamesennis/buildstream/buildstream/_yaml.py", line 182, in load
        with open(filename) as f:
    IsADirectoryError: [Errno 21] Is a directory: '/home/jamesennis/autotools/elements/base'

What is the expected correct behavior?
We should handle this exception better. Perhaps with a message along the lines of: "base is a directory, did you mean base.bst?".
This is similar to how the git command responds to typos:
 $ git feth
git: 'feth' is not a git command. See 'git --help'.

Did you mean this?
	fetch

Optional extra:

A [y/n] option, whereupon y we execute: bst show base.bst

In GitLab by [Gitlab user @jennis] on Jun 28, 2018, 10:09
changed the description

In GitLab by [Gitlab user @franred] on Jun 28, 2018, 15:27
mentioned in merge request !520

In GitLab by [Gitlab user @franred] on Jun 28, 2018, 15:47
The patch catches the IsADirectoryError exception and return a nice error message.
I didn't add an option or suggestion because the directory/folder which the command will try to load could be anything, so adding a suggestion like "$directory_name" + ".bst" it might not make sense.

In GitLab by [Gitlab user @jennis] on Jun 28, 2018, 17:33
changed the description

In GitLab by [Gitlab user @jennis] on Jun 28, 2018, 18:46
mentioned in merge request !522

In GitLab by [Gitlab user @cs-shadow] on Jun 28, 2018, 18:54
I am not able to reproduce this error. For me, click itself is able to catch it, which is what I would've expected given that we set dir_okay=False here: https://gitlab.com/BuildStream/buildstream/blob/master/buildstream/_frontend/cli.py#L491.
Here's what I get:
root[[Gitlab user @153b27714b58]](https://gitlab.com/153b27714b58):/src# bst show i-am-a-dir
Usage: bst show [OPTIONS] [ELEMENTS]...

Error: Invalid value for "elements": Path "i-am-a-dir" is a directory.

Does this only happen when the directories follow a specific naming pattern?

In GitLab by [Gitlab user @jennis] on Jun 28, 2018, 18:57
Hi [Gitlab user @cs]-shadow, I suspect that this is because you're not storing your elements in a sub-directory so have not set an element-path in the project.conf file.

In GitLab by [Gitlab user @cs-shadow] on Jun 28, 2018, 19:08
Ah! You are right [Gitlab user @jennis], that was it.
It makes sense now, we don't set exists=True so as far as click is concerned, it's a valid filename.

In GitLab by [Gitlab user @jennis] on Jun 29, 2018, 09:33
So I guess we should stick to one or the other to remain consistent.
I think that !522 outputs a more useful error message than what already exists, and it also performs a check to see if <directory-name>.bst exists in the element-path, which, in turn, prints an even more useful error message.
However, in order to remain consistent this way, I'll have to set the click argument, argument dir_okay=True, which may seem counter-intuitive to someone only reading that part of the code... What do we think?

In GitLab by [Gitlab user @jennis] on Jun 29, 2018, 09:46
mentioned in commit 48848f4e69201b78524443dc34a77cf872e0ad6c

In GitLab by [Gitlab user @tlater] on Jun 29, 2018, 13:15
[Gitlab user @jennis] I believe that we will need to remove the type entirely for consistency, and defer checking until we know where the file is.

In GitLab by [Gitlab user @tristanvb] on Jun 29, 2018, 17:37
closed via merge request !522

In GitLab by [Gitlab user @franred] on Jul 16, 2018, 08:59
mentioned in commit 463698ec3203190aeac1f41ed3885f08e95bceae


Add confirmation panel to the top of the screen when save and add another has been used

Context
Trello ticket
Changes in this PR
Adds success notification banners for ACCTs, behaviour notes, current and historic offences. These will render when the user selects 'Save and add another', remaining on the same page, so that they understand that their previous entry has been saved.
Screenshots of UI changes
Before

After

Release checklist
As part of our continuous deployment strategy we must ensure that this work is
ready to be released at any point. Before merging to main we must first
confirm:
Pre merge checklist

[ ] Are any changes required to the e2e tests?
[ ] If you've added a new route, have you added a new
auditEvent? (see server/routes/apply.ts for examples)
[ ] Are there environment variables or other infrastructure configuration which needs to be included in this release?
[ ] Are there any data migrations required. Automatic or manual?
[ ] Does this rely on changes being deployed to the CAS API?

Post merge checklist
Once we've merged it will be auto-deployed to the dev environment.
Find the build-and-deploy job in CircleCI.
Should a release fail at any step, you as the author should now lead the work to
fix it as soon as possible.

 Add confirmation panel to the top of the screen when "save and add another" has been used


Replace obo format loaders with obograph-json loaders

It looks like the obo flat file format parsers (go, so but will be more soon) are highly fragile.
These should be replaced with obo json loaders. For specs, see https://github.com/geneontology/obographs
See also https://douroucouli.wordpress.com/2016/10/04/a-developer-friendly-json-exchange-format-for-ontologies/

@cmungall I took a look thru the doc - can you point me to a downloadable or api accessible version of GO in JSON format?  Is it going to be here: https://drive.google.com/drive/folders/0B8kRPmmvPJU3blBSQXZSb0tyaDA ?

http://purl.obolibrary.org/obo/go/extensions/go-plus.json


Flyout: promote beta dashboard from it

Use a dumb URL replacement for now to point users to the new beta dashboard. This is temporal while we are on the transition. Eventually, this will be removed and the correct URL will come from the API once we are migrated.
Related

#315
https://github.com/readthedocs/readthedocs-ops/issues/1485

Next week we are deploying the app. domain. I'm marking this as blocked on that for now.

This PR is ready to be merged now that we deployed app. domain.


bip39bruteforce example addresses are recognized as invalid

I tried to use the example addresses which are listed in the source code of bip39bruteforce, but they are "invalid":
$ ./bip39bruteforce 1JAd7XCBzGudGpJQSDSfpmJhiygtLQWaGL
"1JAd7XCBzGudGpJQSDSfpmJhiygtLQWaGL" is not a valid address
$ ./bip39bruteforce 1N3uJ5AU3FTYQ1ZQgTMtYmgSvMBmQiGVBS
"1N3uJ5AU3FTYQ1ZQgTMtYmgSvMBmQiGVBS" is not a valid address

on macOS 10.13.4 compiled with Apple LLVM version 9.1.0 (clang-9<IP_ADDRESS>)

Fixed in 8434b2468cef18f582ee6470d22e16f018f1b72a
Thanks!


Attribute-based authentication at the app layer (using TCert attributes): Design only

Assigned to @adecaro, @elli-androulaki, @diegomasini

close


Update spvwallet dependency

Coverage remained the same at 26.152% when pulling dd3e34ea3f0ca476b72c1a52193512762ed4f01c on spvwallet into ece8e7e17c6cbdf044f6768e9252ec03ebda5a93 on master.


Add missing underscore to webhook_config variable

The webhook_config variable was missing an underscore in the documentation.

Thanks!


refactor(combine-api): organizing configuration for timeouts

Closes #4336

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


Don't install git submodule for execution specs dependency

Right now tox takes a very long time due to ethereum/tests submodule in the execution specs. Would be great to avoid that if possible.
py3: 290 W install_package_deps> python -I -m pip install 'black==22.3.0; implementation_name == "cpython"' 'ethereum@ git+https://github.com/ethereum/execution-specs.git' 'flake8-docstrings<2,>=1.6' 'flake8-spellcheck<0.25,>=0.24' 'flake8<4,>=3.9' 'isort<6,>=5.8' 'mypy==0.982; implementation_name == "cpython"' 'pytest-cov<3,>=2.12' 'pytest-xdist<3,>=2.3.0' 'pytest>=7.2' setuptools==58.3.0 types-setuptools==57.4.4 [tox/tox_env/api.py:421]
Collecting ethereum@ git+https://github.com/ethereum/execution-specs.git
  Cloning https://github.com/ethereum/execution-specs.git to /private/var/folders/ty/5cq1d6311cb7ggy9b6l092mc0000gp/T/pip-install-fs175whv/ethereum_5c59a4a099f64df29efcfb5502fcb23a
  Running command git clone --filter=blob:none --quiet https://github.com/ethereum/execution-specs.git /private/var/folders/ty/5cq1d6311cb7ggy9b6l092mc0000gp/T/pip-install-fs175whv/ethereum_5c59a4a099f64df29efcfb5502fcb23a
  Resolved https://github.com/ethereum/execution-specs.git to commit 95ef6bf957a4c66993168384cec395ef1a030026
  Running command git submodule update --init --recursive -q

Looks like execution-specs is only required for rlp encoding and keccak hash calculation in the compute_create_address and compute_create2_address helper functions. This can be avoided if it's ok to use the implementations from the ethereum/pyrlp and ethereum/eth-hash instead, see #24.

Hi, as I mentioned in #24, I would much prefer to rely on the execution-specs repository as much as possible.

Thanks again for the explanation. I closed #24 where I commented that it doesn't appear to be possible to stop setuptools/pip installing the ethereum/tests submodule dependency when installing execution-specs as a git dependency.

I've had a play around with this today as when running tox (during the git submodule for tests/fixtures) my laptop would either crash or I'd get an error saying I didn't have enough disk space :disappointed:
As a workaround I've forked the ethereum/execution-specs repo, and created a branch without the tests/fixtures submodule. Then pointed the install_requires in setup.cfg to that branch.
Its not the ideal solution but I can create a PR for this if its useful. I'm going to add a  .git/workflow to the forked git branch such that its kept up-to-date with upstream whilst ignoring the tests/fixtures submodules.

Post #708 the execution-specs no longer fetch the fixtures by default. Hope this solves the issue here.

Great thanks! Tox is now much much faster for me and my laptop doesn't crash now :smiley:
Closing this issue.


⚠ SceneTime has degraded performance

In 0ae83e5, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 1261 ms

Resolved: SceneTime performance has improved in ab31a8f after 22 minutes.


Improve story point handling

Closes #87 #88 #90 and of course #86
DRAFT, more on the way..

And here's the error-catching and adding more friendly help message at work:

So, does this already allow you to set a default number of story points? We're currently not using story points yet, as we're still working in ServiceNow for sprints. So I really only need to get some value in there, so that issues are correctly closed when the pull request is merged. Currently they remain open because they have no story points, cluttering my doing list.

Hi Tijl, yes, there was already an option to set story points, as well as a default value. The option for doing create is --story-points and you can set it as a default using the variable DOING_ISSUE_CREATE_STORY_POINTS.
Here's the page for doing create and for how to set defaults either on your doing config or as a global environment variable.
What Tim did in this PR is to explain how to retroactively change all your previous work items without story points in bulk, as well as provide more informative error messages when you can't close a work item because of the lack of story points.


Feature: Editable

Implements #384.
This PR implements an Editable component with stories, tests and documentation.
The component anatomy is as following:
<EditableRoot>   <EditableArea>      <EditablePreview />      <EditableInput />   </EditableArea>   <EditableEditTrigger />   <EditableSubmitTrigger />   <EditableCancelTrigger /> </EditableRoot>
I've skipped the properties related to styling like autoResize because I think that the styling is the responsibility of the user, this being a headless component library.
Any feedback is very appreciated. Thanks! 🚀

@zernonia You're right, the autoResize prop is not very achievable using CSS since it relies on a visibility: hidden on the EditablePreview component to increase the size of the wrapping EditableArea thus expanding the available area for the EditableInput.
I guess the maxWidth property is not required since you can add a class on EditableArea to implement it and I think there is an issue on the Zagjs implementation because setting maxWidth doesn't clamp the field at all.
Relevant Stackblitz: https://stackblitz.com/edit/vitejs-vite-xoxacp?file=src%2FApp.vue&terminal=dev
I am going to add the autoResize property plus variants to Chromatic and some tests today.


[tool_crash] SocketException: Send failed, OS Error: No route to host, errno = 65

Command
flutter run

Steps to Reproduce

...
...
...

Logs
SocketException: Send failed, OS Error: No route to host, errno = 65
#0      _NativeSocket.send (dart:io-patch/socket_patch.dart:1275:34)
#1      _RawDatagramSocket.send (dart:io-patch/socket_patch.dart:2590:15)
#2      MDnsClient.lookup (package:multicast_dns/multicast_dns.dart:219:22)
#3      MDnsVmServiceDiscovery._pollingVmService (package:flutter_tools/src/mdns_discovery.dart:232:66)
<asynchronous suspension>
#4      MDnsVmServiceDiscovery.firstMatchingVmService (package:flutter_tools/src/mdns_discovery.dart:188:56)
<asynchronous suspension>
#5      MDnsVmServiceDiscovery.getVMServiceUriForLaunch (package:flutter_tools/src/mdns_discovery.dart:433:50)
<asynchronous suspension>
#6      Future.any.onValue (dart:async/future.dart:628:5)
<asynchronous suspension>

[✓] Flutter (Channel stable, 3.24.3, on macOS 15.0.1 24A348 darwin-arm64, locale en-IN)
    • Flutter version 3.24.3 on channel stable at /Users/img/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 2663184aa7 (5 weeks ago), 2024-09-11 16:27:48 -0500
    • Engine revision 36335019a8
    • Dart version 3.5.3
    • DevTools version 2.37.3

[!] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/img/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/to/macos-android-setup for more details.

[✓] Xcode - develop for iOS and macOS (Xcode 16.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16A242d
    • CocoaPods version 1.14.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (not installed)
    • Android Studio not found; download from
      https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/to/macos-android-setup for detailed instructions).

[✓] VS Code (version 1.85.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.98.0

[✓] Connected device (4 available)
    • IMG’s iPhone 11 old (mobile)    • 00008030-000208463A78802E • ios            • iOS
      17.6.1 21G93
    • macOS (desktop)                 • macos                     • darwin-arm64   • macOS
      15.0.1 24A348 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad     • darwin         • macOS
      15.0.1 24A348 darwin-arm64
    • Chrome (web)                    • chrome                    • web-javascript •
      Google Chrome 129.0.6668.101
    ! Error: Browsing on the local area network for IMG’s iPhone 11 new. Ensure the device
      is unlocked and attached with a cable or associated with the same local area network
      as this Mac.
      The device must be opted into Developer Mode to connect wirelessly. (code -27)

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 2 categories.

Flutter Application Metadata
Type: app
Version: 1.0.0+1
Material: true
Android X: false
Module: false
Plugin: false
Android package: null
iOS bundle identifier: null
Creation channel: stable
Creation framework version: 41456452f29d64e8deb623a3c927524bcf9f111b
Plugins
camera-0.10.6
camera_android-0.10.9+14
camera_avfoundation-0.9.17+4
camera_web-0.3.5
cloud_firestore-4.17.5
cloud_firestore_web-3.12.5
device_info_plus-9.1.2
file_selector_linux-0.9.3
file_selector_macos-0.9.4+2
file_selector_windows-0.9.3+3
firebase_core-2.32.0
firebase_core_web-2.18.1
firebase_messaging-14.7.10
firebase_messaging_web-3.5.18
flutter_local_notifications-17.2.3
flutter_local_notifications_linux-4.0.1
flutter_plugin_android_lifecycle-2.0.23
fluttertoast-8.2.8
geocoding-3.0.0
geocoding_android-3.3.1
geocoding_ios-3.0.1
geolocator-11.1.0
geolocator_android-4.6.1
geolocator_apple-2.3.7
geolocator_web-3.0.0
geolocator_windows-0.2.3
google_maps_flutter-2.9.0
google_maps_flutter_android-2.14.10
google_maps_flutter_ios-2.13.1
google_maps_flutter_web-0.5.10
image_picker-1.1.2
image_picker_android-0.8.12+16
image_picker_for_web-3.0.5
image_picker_ios-0.8.12+1
image_picker_linux-0.2.1+1
image_picker_macos-0.2.1+1
image_picker_windows-0.2.1+1
package_info_plus-4.2.0
path_provider-2.1.4
path_provider_android-2.2.12
path_provider_foundation-2.4.0
path_provider_linux-2.2.1
path_provider_windows-2.3.0
permission_handler-11.3.1
permission_handler_android-12.0.12
permission_handler_apple-9.4.5
permission_handler_html-0.1.3+2
permission_handler_windows-0.2.1
razorpay_flutter-1.3.7
share-2.0.4
shared_preferences-2.3.2
shared_preferences_android-2.3.3
shared_preferences_foundation-2.5.3
shared_preferences_linux-2.4.1
shared_preferences_web-2.4.2
shared_preferences_windows-2.4.1
sqflite-2.4.0
sqflite_android-2.4.0
sqflite_darwin-2.4.1-1
url_launcher-6.3.1
url_launcher_android-6.3.12
url_launcher_ios-6.3.1
url_launcher_linux-3.2.0
url_launcher_macos-3.2.1
url_launcher_web-2.3.3
url_launcher_windows-3.1.2
webview_flutter-4.10.0
webview_flutter_android-4.0.0
webview_flutter_wkwebview-3.16.0

Closing this as a duplicate of https://github.com/flutter/flutter/issues/150131


Module not found: Error: Cannot resolve 'file' or 'directory'

Hi,
I wish to use the package for my project, however i am getting the below error:
Module not found: Error: Cannot resolve 'file' or 'directory' /Users/vsharma/results/html/lib/select2/js/select2.js in /Users/vsharma/results/node_modules/react-select2-wrapper/lib/components
Kindly help me in this regard.
Thanks,
Ved

There was issue with my setup itself.
The package is working fine.
Thanks!


Auxpow Security

Hello @domob1812,
I have a question regarding to the security of auxpow.
Auxpow is not part of the CPureBlockHeader, so it will not be hashed.
Is there a security mechanism, that protects it against forgery?
What I think now is: Is it possible to manipulate a block and insert different auxpow?
I mean there would be no sence to do it, but there is no hash mechanism which validates, if this auxpow was the one, that was included in this block?
So if you would modify block X with a new auxpow, it is still valid, because the blockhash will not change.
Then you have a different auxpow for block X then all other nodes, and if someone syncs from you, you distribute the "wrong" auxpow. The requirement must be, that the auxpow is valid. But its a completly different auxpow, than it was at the beginning.
I hope you can understand what I mean, it would be nice to discuss.
Thank you.

Yes, it is true that you can replace the auxpow by a different one if you like - but as you say, why would someone do that?  And more importantly, why do you think that would be a problem?

@domob1812 can you please transfer this issue to the Namecoin repo rather than your personal repo, so that we have proper transparency about threat model discussions?  (Not sure why it was reported here.)

I have a question regarding to the security of auxpow.
Auxpow is not part of the CPureBlockHeader, so it will not be hashed.
Is there a security mechanism, that protects it against forgery?
What I think now is: Is it possible to manipulate a block and insert different auxpow?
I mean there would be no sence to do it, but there is no hash mechanism which validates, if this auxpow was the one, that was included in this block?
So if you would modify block X with a new auxpow, it is still valid, because the blockhash will not change.
Then you have a different auxpow for block X then all other nodes, and if someone syncs from you, you distribute the "wrong" auxpow. The requirement must be, that the auxpow is valid. But its a completly different auxpow, than it was at the beginning.

@globaltoken While I can't think of any significant security issues with the current design as deployed, I can think of 2 interesting effects of the current design:

The AuxPoW headers provide useful information about the parent blocks, such as the timestamps.  This can be used for forensic analysis of miner behavior, e.g. analyzing reorg attacks on the sidechain.  Forging historical parent blocks with original timestamps is extremely expensive because such a parent block won't be valid anymore in the parent chain.  However, I don't see anything that prevents a miner from committing to a historical sidechain block in a current parent chain block, and in that case the miner is only throwing away the sidechain reward.  (Maybe I'm missing something that invalidates this analysis; curious what Daniel thinks.)
The AuxPoW headers' non-contribution to the sidechain block hash allows AuxPoW data to be truncated for users who already have a reason to believe that a given block has valid PoW (e.g. because the block is committed to by a checkpoint).  This produces a roughly 90% bandwidth savings in Electrum-NMC for block heights that are covered by a checkpoint.  The degree to which this actually matters is somewhat debatable, since it's not totally obvious that Electrum-NMC can't be modified to achieve sufficiently small bandwidth usage without this trick.  (Note that ElectrumX protocol version 1.4.1 added this feature, and 1.4.1 isn't yet added to Electrum-NMC master branch because I haven't yet gotten confirmation that the public servers have upgraded, so using this feature requires applying an extra PR to Electrum-NMC and selecting a known-upgraded ElectrumX server.)

In practice I tend to think that the benefit of (2) outweighs the drawback of (1), at least until a more scalable AuxPoW spec such as the one by Luke Dashjr is deployed.  (Luke's spec has much smaller AuxPoW headers and also uses a single timestamp across all chains, so it's clearly a winner in this department, but it also requires Bitcoin to hardfork, so the political implications of that make it unlikely to happen soon.  But I hope it eventually happens.)

@domob1812 As we see in the bitcoin blockchain, people are doing lot of crazy stuff.
Do you remember about the DOS-Virus header in one block?
I thought about a new NetMsgType, where we have an extra "auxpow.dat" file, that will hash all auxdata and makes a chain of it. So in this case, you know what auxpow data was first in the block, and which is manipulated.
As described, this is not a big problem, but a blockchain should be forgery safe or?

I thought about a new NetMsgType, where we have an extra "auxpow.dat" file, that will hash all auxdata and makes a chain of it. So in this case, you know what auxpow data was first in the block, and which is manipulated.

@globaltoken How would this chain be authenticated?  By a DMMS?  If so, how?  If not, what is it useful for?  (Remember that the P2P network is trivially easy to Sybil and that most nodes are not online 24/7 and that new nodes come online all the time.)

Also why exactly are we supposed to care if someone embeds a malware sample in an AuxPoW coinbase transaction...?

As an aside, it would be possible to softfork Namecoin to impose a limit on the distance between the sidechain timestamps and the parent timestamps.  This would greatly increase the cost of forging AuxPoW headers.  It's not clear to me exactly what the claimed benefit would be though, seeing as the forensic analysis use case I described wouldn't matter AFAICT.

To elaborate on my point, it's not really feasible to stop miners from forward-dating timestamps in a reorg attack, since the timestamp enforcement in Bitcoin and Namecoin only requires that the median timestamp not decrease.  If we required parent and sidechain timestamps to be near each other, then someone doing a reorg attack on the sidechain would just forward-date the sidechain blocks they're mining so that they matched the parent chain, and the attack would still work fine.  Which is exactly what they'd do anyway since it's cheaper due to not losing the parent block reward.  If someone wanted to confuse forensic analysis after the fact, they might want to backdate parent blocks in a re-org, but that's already highly expensive regardless of the existence of that softfork.

It's not about a malware in the Coinbase transaction. That was just an example.
Let's say 3 nodes manipulate one block, lets say height 100 000.
Height 100 000 has now 3 different auxpow data.
If this nodes will be online and have a listen function, they can distribute the blocks to freshly syncing nodes.
If 3 different blocks were distributed at height 100 000 a lot of users have different auxpow at block height 100 000. How can we be sure, which is the correct one? There is no consens in the blockchain, since all nodes will have then different auxpow.
This will not affect any blocks, but having for example 3000 nodes online and 1000 of them have auxpow A, 100 000 have auxpow B, and 100 000 have auxpow C.
In theory like you said, you can write some stuff into the coinbase.
I heard last year about child porns in the blockchain, even if this are just links to related sites.
Whatever you like can now be part of the blockchain, since you can edit the auxpow blocks, if you have enough proof of work. And I think the beginning of auxpow will have not a high diff like it is now.
So you can generate a fake auxpow with ease, and leave your data in the auxpow block.
My idea was, like the normal blockchain, a second sidechain database.
For example:
To add one entry to the database, we will hash the height of this block and the auxpow data of this block.
Now we add the height and the hash of auxpow into the database.
The database will follow a own chain.
Maybe we can do it like Block Checkpoints? Introduce the first auxpow block that has ever been mined, and the database will start with this data.
SHA256(height, auxpowhash, size, previous auxpow hash)
To verify the database now its easy:
Before we sync the blocks, we will sync the sidechain auxpow.dat.
With this, we have already the known and valid auxpow.
Now while syncing, in CheckBlockHeader we can add the auxpow validation, that will check, if the synchronized data of auxpow matchs the expected from auxpow.dat
So there is no chance later to fake the auxdata.

@JeremyRand I think we talk about 2 different attacks. You are talking about a security related attack, I talk about a data manipulation attack in auxpow, that has no security consequences, but it could be a problem for the blockchain if this data is found in the blockchain.
Maybe you should get me an external link about your described timestamp attack, because I can't imagine exactly how it should work.
Similar like an 51% attack, with the difference, using valid high proof of work data from the auxpow parent blocks?

Okay, so the attack here is that someone who's mining today wants to replace an AuxPoW header from the distant past which has much lower difficulty, and therefore is trivially easy to mine with modern mining equipment (to the point that the attacker doesn't mind burning some small amount of parent chain hashrate to do it)?  Okay, so I guess someone could do this.  What do they replace the AuxPoW header with?  I suppose they could embed Hidden Wiki text like someone did with Bitcoin, but what does that achieve?  Last I checked no one is being held liable for storing the Bitcoin chain despite that text being there.  In fact, I'd suggest that there's a more straightforward "white hat attack" that can be done here: just mine a bunch of AuxPoW headers with empty coinbase transactions, and specifically replace the AuxPoW headers that have massive coinbase transactions (I seem to recall Eligius is well-known for having large coinbases).  This would basically be a way to expend PoW to compress the Namecoin blockchain retroactively.
Anyway, I don't see how your proposed solution actually authenticates the AuxPoW data.  Sure, you can have a checkpoint commitment to all the AuxPoW below a certain height, but authenticating that the checkpoint is correct isn't actually feasible -- blockchain checkpoints work because you can independently verify the correctness of all the blocks they commit to, and you can independently verify that no one has presented a longer chain than the chain they commit to, so it's trivially easy for anyone who wants to audit a checkpoint to do so.  Your system doesn't have any way to audit the checkpoints because they are not authenticated by a DMMS.  Saying "use a database" is nonsensical -- a database isn't used to authenticate anything in Bitcoin, it's just a storage mechanism for fast lookups of data that's already been authenticated.  Similarly, syncing the AuxPoW from the P2P network (regardless of whether it's before you sync the headers) isn't going to help you authenticate it, because there's no DMMS and the P2P network is trivially easy to Sybil.
If we actually wanted to make the DMMS commit to the AuxPoW data (which I don't think is a bad thing, for the record), I think the "right" way to do it is probably to add an extra hash to the block header, which is committed to by the prev_hash field of the following block header.  I'm not sure what the most efficient way to encode it would be.  In any event this would be a hardfork (though presumably we could roll it into AAA if there were a consensus that it's a good idea).

In my suggested solution, there is a way to check if the checkpoint is valid. In the database, that will be created and managed by the nodes, we have the hardcoded first auxpow block. With this: We get the hash
SHA256(height, auxpowhash, size, previous auxpow hash)
Lets assue SHA256(100000, SHA256(auxpow), auxpowserializedsize, NULLHASH), lets assume the hash of this first "auxpow genesis" block is now
9D470C30FEADC659CBF63EBD2F2533EE11B4F972CEAAE3E14259FC089185315E .
Then the nodes will save in the database height 100000, and the hash 9D470C30FEADC659CBF63EBD2F2533EE11B4F972CEAAE3E14259FC089185315E
Now lets say height 100002 is auxpow again, the next entry is:
SHA256(100002, SHA256(auxpow), auxpowserializedsize, 9D470C30FEADC659CBF63EBD2F2533EE11B4F972CEAAE3E14259FC089185315E).
Now the next hash is: 7CC408FB3482A3479BB212959C3D70036E5C2CDB7F336CE7F6A9370A71AC826F
The database will save now 100002, 7CC408FB3482A3479BB212959C3D70036E5C2CDB7F336CE7F6A9370A71AC826F
and this is going on and on ...
If you start the node, it gets the current auxpow db like above through the new implemented netmsgtype. Then it starts syncing. Lets guess auxpow started at block 100,000 and now the node gets from the syncing nodes the block header.
It checks if this is a auxpow block (nVersion & 256), if so search this height in the auxpow.dat
(At this point I noticed right now, that the height is not part of the CBlock. Lets take the full blockhash instead of height like above).
So it reads the auxpow database for hash = hash of height 100,000 and it gets the auxpow expected hash: 9D470C30FEADC659CBF63EBD2F2533EE11B4F972CEAAE3E14259FC089185315E.
Now you can hash the auxpow data that we received through the network:
SHA256(SHA256(block 100000), SHA256(this->auxpow), auxpowserializedsize, (prevauxpowhash, in this case null, because this is the auxpow activation height)). Now we get while validating the block manually the same hash = 9D470C30FEADC659CBF63EBD2F2533EE11B4F972CEAAE3E14259FC089185315E.
This auxpow matchs the expected hash from the db, we will sync it, it's valid.
And while syncing you can also sync from a node, that is on another fork, and use a forked chain.
So, if we sycned the auxpow.dat from network, we could request a second netmsgtype "auxcmp", this will send our last blockhash in the db, and the last auxpow hash through the connected nodes. They will send their hashes back, and if we see that > 90% of the responded nodes has the same hash, then it should be valid.

First off, that's not how checkpoints work.    Committing to the first block doesn't give you any way to verify that later blocks are correct.
Also I've mentioned Sybil attack several times in this thread and it doesn't appear that you understand what they are or how easy they are to perform.

Well, you can define hardcoded checkpoints for the auxpow.dat as well in the chainparams.
It's not different from the block DB.
But I was thinking more to add this in GLT first, because Masternodes are more trusted then all other normal nodes. So a sybil attack at GLT is probably not the case.
I just wanted to let you know about this issue. However, if you think it's safe how it is, leave it.
It is just an discussion thread here about it.
Feel free to leave solutions instead focussing on the problems.

I just wanted to let you know about this issue.

And we thank you for that.

However, if you think it's safe how it is, leave it.

I don't recall us ever making a claim that we were certain this was the case, we were asking what attack scenario you were describing and trying to analyze the costs/benefits of the various potential fixes.  This analysis is made much harder by:

Feel free to leave solutions instead focussing on the problems.

Said every shitcoin developer ever who doesn't want to find out their solutions are broken until they're deployed on mainnet and someone decides to actually do an attack....
If you're the kind of developer who gets offended when people poke holes in proposals, you might want to re-evaluate being in the crypto space.  No one is in any way obligated to provide a different proposal just because they criticized someone else's proposal.  That's simply not how this space works.
(Also I'm not sure why you're telling me to provide a solution when you haven't commented on the one I already provided 2 posts ago.)

I think all other proposals are not possible with a softfork.
The database / checkpoint proposal is similar to the Block Checkpoint solution.
Otherwise I like your idea with hashing the auxpow hash into the Blockheader, but the auxpow is serialized after the block. So the block hash will change.
I am not sure, but I think the auxpow block must include the blockhash or block height of the block or?

Otherwise I like your idea with hashing the auxpow hash into the Blockheader, but the auxpow is serialized after the block. So the block hash will change.

  I'm suggesting that a block can commit to the previous block's AuxPoW as part of the data hashed to yield the prev_hash field.  Technically this would allow an AuxPoW to be replaced before the next block is mined, but I'm under the impression this isn't a significant threat.  Am I missing something that would prevent this from working?
It should be noted that this design would require checkpoint-using clients that don't currently process AuxPoW to download an extra 32 bytes per block (unless there's some way to compress it that I'm not seeing [1]).   I'm not yet sure how big of a problem that is.
[1] I suppose maybe the commitment to the previous block's AuxPoW could be stuffed into the transaction Merkle tree in some way, but I haven't thought about this very carefully and maybe there are other drawbacks to that approach.

As an aside, I tend to think there are other spam vectors besides this that are more important to close for Namecoin, some of which (e.g. decreasing the block weight limit) are already being worked on.  That doesn't in any way imply that there's anything wrong with discussing this vector and potential fixes, just that I'd expect this vector to get a less prompt fix.

@domob1812 can you please transfer this issue to the Namecoin repo rather than your personal repo, so that we have proper transparency about threat model discussions? (Not sure why it was reported here.)

Because there's  so much to learn about this project's other leader across the pond. The two of you have very different work, but like a Parent in Merge Mining, who is to say the chain from the project's "namecoin" repositories are the "best and official" master upstream chain. Git is a block chain. GitHub has properties like hashes and parent sometimes more than one to commits. Sometimes even find commits in a repository that is not part of it anymore if you click enough of those hashes. Poor orphans. :)


Make loaded fonts in docz-theme-default configurable

At the moment, docz-theme-default preloads a hard-coded collection of fonts:
https://github.com/pedronauck/docz/blob/a17e9142cfc995257c621fcf4a68504ad2e977c7/packages/docz-theme-default/src/index.tsx#L49-L58
Not all of them are always necessary, especially when the theme is configured to use some alternative font, e.g. like this:
  themeConfig: {
    styles: {
      body: {
        fontFamily: '"My Cool Font", sans-serif',
      },
      h1: {
        fontFamily: '"My Other Cool Font", serif',
        fontWeight: "normal",
        fontSize: 48,
      },
    },
  },

It'd be great if the argument of webfont.load() was a part of the theme config so that the developers could load alternative fonts. When all selected fonts are built-in, the argument can be set to an empty object to avoid unnecessary network requests:
  themeConfig: {
    styles: {
      body: { fontFamily: 'Helvetica, sans-serif' },
      h1: { fontFamily: 'Helvetica, sans-serif' },
      h2: { fontFamily: 'Helvetica, sans-serif' },
      code: { fontFamily: '"Courier New", sans-serif' },
      pre: { fontFamily: '"Courier New", sans-serif' },
      table: { fontFamily: '"Courier New", sans-serif' },
    },
    fontsToLoad: {}
  },

No need to fetch stuff from google → docz works offline and in internal-only networks. WDYT?

will the new version can give a solution of this issue @pedronauck

Add codemirror is same issue, I hope can load local codemirror.css file instead of download css file from codemirror.net