[Progress] - Option for progress inline label centered on the whole bar

Could we have an option to always display progress inline label centered on the whole bar, and not only the completed part? Currently this causes small progress bars not to display progress label correctly. Compare ui-progress with a custom solution:

Having a separate label instead of the inline one makes the progress bar take more vertical space.

The only issue with that is that it would need to correctly invert colors as it was passed by the progress.

Agreed! But even a simple black label would be visible on all default bars (regular, error etc) if the color switching in between would happen to be too cumbersome to implement.

I've found another issue. When using small progress bars, the width does not reflect progress for low values. It looks like a space was left for the inline label. However, the inline label itself is not being displayed.

Code used:

0%

8%

56%

As a stop gap you can adjust the bars min-width to prevent issues with small percentages in small bars

the latter part of this issue is still present in all implementations.  also, progress bar overrun is inconsistent; in some presentations it caps at bar length and others it exceeds container width.
when overrun is possible (usually when progress is deeply nested in other presentation elements) it also renders progress label outside bar at low values (<10%, or whatever makes progress label width larger than available bar width).  i can use the 'min-width' fix (and presumably an 'overflow: hidden' fix) to clean these up in my implementation, however i think the original suggestion of on-bar labeling (both progress and/or label itself) is worth looking into for applications which require several bars in condensed space, especially where label/progress indicator visiblity are needed for all possible (including out of range) progress values.  consider it another 2 cents; overall semantic ui is awesome but this module could be improved.


Objective saveload fix

Objective save load works with nested SO
Tasks and Hint inventory removed as objectives contains them.

Summary by CodeRabbit

New Features

Introduced a method to reset progress in objectives.
Added serialization for objective states.
New logging capabilities for objective tasks.
Implemented a new "Blue Pillar" objective and other RGB Pillar objectives.

Enhancements

Enhanced task and hint state management.
Streamlined objective event invocation.
Updated UI elements in the SelectedObjectivesUIObjectivesUI.unity scene.

Refactor

Refactored objective management methods for improved clarity.
Adjusted objective and task properties for better serialization.

Bug Fixes

Fixed issues related to initial task activation.

Documentation

Updated metadata for various resources to reflect changes.

Chores

Updated asset import settings and GUIDs for consistency.

@coderabbitai could you make all the recommended changes and create a new pull request?


Rumeysa copied-pasted the rest from docs and edited - living in belgium

I pasted all the remaining things under the title of living in Belgium in gdocs. I also added the links from gdocs.

@marcobarilari Hello, I am still not able to add reviewers, so I am tagging you

Hey there! Thank you for this. Unfortunately I believe it will create some problems since you are trying to work on the same file on two different PRs (Here #30 and #29).
Let's finish working on #29 and then let's see if this one #30 will be a problem or not


Conformant child management

This PR allows for non-continuous depth in child management.
This is required to play swf timelime correctly. According to the flash documentation, a child could be add at any depth. The timeline use this to let space for child that are going to be added in future frame.
This PR will come with code change in swf as well, but I wait for the dependency to be merged

Flash seems to disallow it too, RangeError: Error #2006: The supplied index is out of bounds.,
although the documentation doesn't mention such limitation.
Could you provide a sample that is working in flash?

I didn't try that one in flash directly, but from the a MovieClip timeline. From the documentation, the exception is explained, But from test code, some MovieClip ends up with empty depth slot.
Maybe timelime player has specific right, I'll rework to re-add the exception.
Yet I need to add child at any depth. Does a private API fit?

If that's a special access used by the timeline, here used by the swf library, I guess a private API would be ok.
Thoughts @jgranick?

Would you mind trying getChildAt with SWF content? Internally, I assume there are distinct layers, but frame-by-frame, I would guess that getChildAt has no gaps. Thanks!

Sorry, I forgot to update. In flash, the behavior is as you describe. So there's no gap. I'm currently looking for a better solution. I'll update this PR with it asap.
Sent from my iPhone

On 24 mai 2016, at 21:29, Joshua Granick<EMAIL_ADDRESS>wrote:
Would you mind trying getChildAt with SWF content? Internally, I assume there are distinct layers, but frame-by-frame, I would guess that getChildAt has no gaps. Thanks!
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub

I think that I got another approach implemented to fix this issue in SWF MovieClips, but let me know if you have issues with the current releases :smile:


Meta tabs in editor

Authors want to have an interface for meta-information

Add meta-tab to editor in author-dashboard.
Make sure that new meta-tabs can be created (new render-logic with yaml).
Generate input forms from yaml-files with form-builder.
Validate and store meta-informations.

done. You can extend existing meta-tabs and add your own meta-tabs with YAML-definitions, a plugin and a new vue component. More details will follow in the documentation.


No graceful shutdown due to infinite connect routine

Hi there,
I just stumbled across a minor annoyance and thought I'd give it a try to see what you think about this:
As I see it, there is no clean way of shutting down a kraky task gracefully, in terms of closing the connection(s) and finishing the asyncio Task without any warnings or exceptions. Rather contrary, I just burned quite a bit of time (more than I'm happy to admit) until figuring out why my unit tests where failing on some occasions with seemingly misplaced asyncio errors regarding unreferenced tasks:
While using the library, I automatically/intuitively assumed that awaiting the disconnect coroutine will make the Task containing the connect coroutine finish (as in: the connection is closed, thus the connect coroutine returns). Only later when looking into the corresponding code sections I realised that the connect coroutine runs an infinite while loop and none of the except blocks handles the case of an intentional shutdown. Thus, the only remaining ways are hard cancellations of the Tasks and/or of the event_loop, both options are not considered 'clean', triggering warnings and/or exceptions on shutdown.
Handling that case (intentional shutdown, thus triggering the connect coroutine to return) would be rather trivial, but there may be different approaches with different implications, I'd be happy to get your opinion if and how you'd want this to be handled:

calling _dis_connect on all connections should automatically exit the connect main routine. I'd regard this as logical/intuitive, but this could be considered as breaking or at least significant behavioural change, thus unfavored. Also, it may be intentional to keep the coroutines connect loop alive even after all connections have been disconnected because the user may just do some resting and reconnect later without creating a new instance. Otherwise I'd think about something simple as changing the while True: to something like while self.connections:

Introducing an additional function like self.shutdown that triggers the connect routine to break free – simplest option may be just setting a boolean member attribute and changing  the while True: condition in the connect coroutine to while self.connections and not self.shutdown:. In this case it should be considered if the shutdown function should automatically call close on all active connections or if this should be the responsibility of the user.

@DominiqueFuchs Thanks a lot for the report.
I would say that changing from while True: to while self.connections: is the simplest.
We can see later if a bigger change is needed.
Can you make a pull request and test it ?
Thanks a lot in advance.

@DominiqueFuchs Release 2023.08.16 is now available. Thanks again for your contribution !

Cool! 🙏🏻
Thanks to you for building and maintaining this library! As its already been really useful for me as a go-to lib within some personal project I'm happy to contribute back here. I'll take a look if I can provide some test additions to the workflow. 🧪

I am glad if it's useful for you.
I've wanted to add new functions from Kraken API but lacked the time.
But since now I have Github Copilot, it's trivial to add code based on documentation so expect new releases soon !


Allow toggle line comment accurately when language only support nested block comment

VSCode Version: 1.3.1
OS Version: OS X 10.11 Beta

Steps to Reproduce:

Select a language mode which only support block comment. (eg. OCaml)
Write one line code contains a comment inline. (eg. let x = 1 (* foo *))
Toggle line comment at that line. (eg. expect (*let x = 1 (* foo *)*), but got let x = 1 foo)

If block comment can't be nested. We should not change the line let x = 1 (* foo *), because we are toggling LINE COMMENT, not block comment.

Not all languages allow for nested block comments. This is an information we don't have at this point in the comment lines command. We need to enrich the language configuration to include also a bit of information (a boolean) about nested block comments and then we can use that information to improve the behaviour.


Documentation Website

The main goal of this project is to create a better TypeDI.  Also, one that I and others can use in projects.
Without documentation, that's quite hard to do.
Therefore, this PR begins work on a documentation website.
This will most likely be hosted through GitHub Pages.
Checklist

[x] API Reference
Implementation notes: This might be a bit harder to do nicely.  The output from the TypeDoc Markdown plugin is... very ugly in Docusaurus. It might be better to build the Docusaurus website, and then tell TypeDoc to output the API reference to the build directory. It won't integrate with Docusaurus at all, but it renders a lot nicer.
[x] Getting Started
[ ] Guides on how to use various container features (eager, multiple, scopes)
[x] JSService docs
[x] Destroying containers
[x] Warnings (footguns)
[ ] StackBlitz / CodeSandbox in-browser demo (think https://docusaurus.io/docs/playground)

Known issues:

It's not currently possible to sync the light / dark mode between TypeDoc and Docusaurus.
TypeDoc is pretty hard to extend without forking the whole thing.

Currently, this is not ready to merge.
Fixes #20.
Fixes https://github.com/freshgum-bubbles/typedi/issues/7.
Fixes https://github.com/freshgum-bubbles/typedi/issues/29.

Update: Documentation coming along nicely!
Writing the documentation for resolution constraints now.
Thankfully the API surface is (relatively) simple, so there's not a lot of work to do.
To anyone reading this: Once this is published, I would really appreciate some eyes
on the documentation.  I'm not an avid docs writer, so there may be some things which
could be improved.

Update: the documentation has been revised.
Much of the work was focused on improving the homepage, which previously
hosted the built-in Docusaurus template.
Before:

After:

I think we can safely merge this now, and continue work in develop.


Fix SyntaxError on python 2.7.5

Resolves #1544
Here's the test plan I used, since we can't install 2.7.5 in CI this'll have to do:
$ docker run --rm -ti -v "$PWD:/code:ro" centos:7
...
[root@9b75ddb7a51a code]# python -m compileall src/werkzeug/routing.py
Compiling src/werkzeug/routing.py ...
SyntaxError: unqualified exec is not allowed in function '_compile_builder' it contains a nested function with free variables (routing.py, line 948)

    # outside of docker, I did `git apply patch` to get to the code you see in this PR

[root@9b75ddb7a51a code]# python -m compileall src/werkzeug/routing.py
Compiling src/werkzeug/routing.py ...
Sorry [Errno 30] Read-only file system: 'src/werkzeug/routing.pyc'

Would you retarget to 0.15.x?
Also, this seems to break the tests.
tests/test_routing.py:29: in test_basic_routing
    r.Rule("/bar/", endpoint="bar"),
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:1347: in __init__
    self.add(rulefactory)
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:1388: in add
    rule.bind(self)
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:730: in bind
    self.compile()
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:794: in compile
    self._build = self._compile_builder(False).__get__(self, None)
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:952: in _compile_builder
    return self._get_func_code(code, func_ast.name)
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:859: in _get_func_code
    return locs[name]
E   KeyError: "<builder:'/'>"

Would you retarget to 0.15.x?
Also, this seems to break the tests.
tests/test_routing.py:29: in test_basic_routing
    r.Rule("/bar/", endpoint="bar"),
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:1347: in __init__
    self.add(rulefactory)
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:1388: in add
    rule.bind(self)
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:730: in bind
    self.compile()
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:794: in compile
    self._build = self._compile_builder(False).__get__(self, None)
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:952: in _compile_builder
    return self._get_func_code(code, func_ast.name)
.tox/py/lib/python3.7/site-packages/werkzeug/routing.py:859: in _get_func_code
    return locs[name]
E   KeyError: "<builder:'/'>"

lol oops, transposed globs and locs while copying the code 🤦♂

I was trying to spot the difference :laughing:

You'll need to git rebase --onto origin/0.15.x master, changing the base here isn't enough.

fixed my rebase too -- oops, I'm sick and not thinking super straight

Thanks for the quick fix!

No problem! Ya learn some archaic fact every day I guess 😆


Fixes to #102

Fixes from review/test of merge and image conversion process with @Dbarnes1 (also assigning this PR for him to test)
@abouffard - note some of these changes may impact/break the "manage-2525d" automated .net app you did that uses this (but see #102 if you need any details on the changes/issues found)
Also addresses a few minor issues @Dbarnes1 found with image conversion readme/process

Oops, forgot I already had an open PR ( #95 ) from 10 days ago. @Dbarnes1 I'll also have you review that PR since I inadvertently included that commit.

Is there any test data with symbol ID codes for 2525C and App6 so I can test these dictionary renderers with this data?

I dug up some 2525C & App6B test data and copied to your machine, so this should be available when you are ready to test the 2525C, App6B Pro 1.1. Renderer
Finding 2525C/App6B test data with SIDCs ends up being a lot harder than you would expect because we can't use/open any of the MOLE test data (because MOLE used geodatabase extensions & you can't open this data on a machine without MOLE installed)

In testing the Pro 1.1 Renderer for 2525C symbology, all symbols rendered correctly except for some of the Tactical Points Symbols. This was due to a mismatch in the Symbol ID between the ID in pro and that in the Military Standard. See Screenshots below that note the difference in the Symbol ID

You can see that in Pro a letter is missing from the Symbol ID that appears in the Standard

For the most part, the App6 .stylx renders correctly in Pro 1.1. There are, however, a few instances where gray squares and black lines appear, which might mean that some symbols are not rendering correctly. To check this, @csmoore you'll have to show me how to read the Symbol ID codes in the App6 Standard

Review suggestions added in https://github.com/csmoore/military-features-data/commit/06bcb08034f2fdfb7c2d7d759dd69f975ea38fc3
Thanks for checking the mil2525c & app6b dictionary renderers, those ones not renderering are bad/invalid SIDCs in the sample datasets so the 1.1 stylx's look good.


Push Notifications Connector

Please use the form below, leaving the prefilled data to help us. Thank you.
Page link: Push Notifications Connector
Document link: push-notifications.md
My Issue/Suggestion
User struggle to find our Push Notifications guide for native. Please add a prominent link to https://docs.mendix.com/refguide/mobile/using-mobile-capabilities/push-notifications/

I have added a prominent link in the intro section.


No response from chat-gtp on irc

Config. json set up by steps in the README.md configuration
Started and it's connect to an IRC server and join the channel
When user type something in channel, it's shown in console of chatgpt-irc
There is no response

@rj1 Perhaps adding exact actual examples in the README for the auth_token and cookie might help.

the robot connect correctly seem to parse the lines well , but yi get alwais the same response
 chatgpt: Why the sky is blue ?
 turlupine: hold on, I'm thinking..
 turlupine: We couldn't get a response for you, please try again

please ensure you're adding the auth token, user agent, and cookie to the config.json file


Add parameter to specify how a task steps with one step should be rendered

Based on this discussion: https://www.oxygenxml.com/forum/viewtopic.php?p=68675#p68675
Suppose I have a DITA task with a steps containing only one step. Both the HTML and PDF based outputs no longer present a number before the single step. Maybe a parameter could be added to control this behavior.

Just noting that this has been the DITA-OT default since version 1.0 (the "no longer" above makes it sound like this is a change).
Over the past couple of years we have generally suggested plugins for changes like this rather than adding a lot of very specific build parameter - this one seems like that kind of change, where we do not want to add a parameter for such a specific style change. The plugin override for this is not very complex (compared to most style plugins, of course it still requires a little bit of XSLT).

Right, I also recommended the end user a CSS based customization which works at least for the HTML based outputs (and for our PDF CSS based output as well).


Used it for a while, gave some advice

Describe your suggested feature
1.I think the bookshelf and the update module can be integrated, so that I think it can be more concise and mihon interface, and when updating, it is no longer cumbersome to click on the update bar and then see the updated manga chapters.

2.A place where it feels like there could be a better experience

3.There should be more options

These are the update suggestions that I have brought after using it for a while, and I may just represent my own thoughts, and I personally feel that if they are adopted, the experience of using mihon will be better.
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated the app to version 0.16.5.
[X] I will fill out all of the requested information in this form.

something
In the second question, if only Arabic numerals of chapters are displayed, there should be no strange names.

There is another problem. I don't know whether it is the source or the problem that can be improved from the reader. That is, some comic websites load singular picture tags, for example, 13579, and when the reader reads it, it will repeatedly display two groups of pictures of 1 and then display pictures of 2, which will have a repetition. Can I choose to skip a chapter with duplicate pictures from the reader (I know that the loading tag name of the picture must be regular before it can be realized)
That should be all my feedback.

No
No
Can be considered. Make separate feature request.

Ok, but thank you for checking my opinion. I'll come back for feedback if I have any new questions in the future.


Implement data merging/deduplicating

Merging and deduplicating of data is non-trivial and has no hard truth. We need to find some heuristic we want to follow. This will be used at query time but also to consolidate data by rewriting it. So it has a significant and irreversible impact.

Initial version implemented in #83

This is done, right?

at least - the runtime part.. Not old data deduping (:


Github Action Example / CI Refactor

A while back I created an asdf plugin for semver and thought I could also contribute an example of using semver in a github action by installing with the asdf action by refactoring the .github/workflows/ci.yaml file in this repo. Rather than using docker to run bats and shellcheck, asdf can be used to install those as well. After adding bats, shellcheck and semver as "tool-versions" dependencies, display the semver version and help as a verification, lint the code with shellcheck and finally run bats tests. This action is also now configured to run on merges to master as well as commits in pull requests to master.

Take a look at the output from the stages in this action
https://github.com/fsaintjacques/semver-tool/runs/5728703526?check_suite_focus=true

@fsaintjacques is there anything I can do for this PR?

I did look at the PR and forgot to comment. Usually I frown on doing such thing because reproducing CI errors are so much simpler with docker instead of custom github action.
But in this case, it is indeed easily reproducible locally with asdf.


Auto wire dependencies via bower not working

Hi
I'm using grunt/gulp to automatically wire dependencies to libraries I installed through bower.
The bower.js file of dat-gui contains a foward slash which makes it bug.
In bower.json corrent:
"main": "/build/dat.gui.js",
to
"main": "build/dat.gui.js",

I realised you can fix this temporarly by overriding the main property in your own (project) bower.json. Example:
{   "name": "myproject",   "private": true,   "dependencies": {     "jquery": "~2.1.1",     "modernizr": "~2.8.1",     "dat-gui": "~0.5.1"   },   "overrides": {     "dat-gui": {       "main": "build/dat.gui.js"     }   } }

This bug bit me when trying to use dat-gui in meteor using https://atmospherejs.com/mquandalle/bower .

Just tried polyclick's "overrides" workaround. Does the trick, thanks.

Sorry for the issue, Bower is now deprecated, so we won't be adding support moving forward. Bug fixes related to Rollup and ES6 modules are probably more relevant now.


Explore Integration of SXSSFWorkbook for Improved Export Performance

It would be greate to investigate potential implementation of the SXSSFWorkbook Workbook from Apache POI to enhance the performance of data export.

I investigated this issue. It might be possible, but the problem is that one of the key features is the possibility of defining the styles of the cells of the rows in the template. With SXSSFWorkbook the template will only be usefull for the cells before the headers and rows, and the output will not be styled. One idea would be to generate an alternate stream factory that would ignore styling and would be suitable for big datasets.


fix to 1024 texture files not working with drag-and-drop

Reason for PR

Volu now uses 1024x1024 textures with a new filename, but drag-and-drop functionality on Windows was hard-coded to look for the old 2048x2048 filename.
This caused those conversions to fail to export a texture file. https://github.com/Volograms/vol_cl_tools/issues/20

Changes in PR

For cases where a vologram contained multiple videos, the tool still tries to find the 2048 video first, but failing that, it falls back to look for the 1024 video texture.

Testing Done

Tested this with drag-and-drop of both 1024 and 2048 video texture vologram folders, as well as one with both resolutions, on Windows (drag and drop only works on windows).
I also ran the equivalent on the command-line: ./vol2obj.exe MYFOLDERHERE to confirm this worked from the command-line (this will work on all systems) without errors.

Risk of Merging PR

We don't have any CI/CD or coverage tests set up for this tool but it's on the TODO list.
This tools is not, to my knowledge, integrated in any pipeline yet so very minimal risk of breaking changes.

Notes

I found a weird bug in Windows 3D Viewer when testing this (see the linked issue ticket).

I'll do a new Windows release when this is approved.

Thanks @albemala


Navigation: Dropdown Styling

Grid view and list view styling support

color
text
arrangement
LTR/RTL

Here is an example of the book grid view being styles with separate colors by the sub group.
https://drive.google.com/file/d/1aCLJNFHj9oWWIk9vV6QWKXObfblRwOvG/view?usp=share_link
On the Colors page, there is a tab for "Book Colors" and the "Color Name" is the name of the Sub Group of the book.
Colors page:

Book Sub Group:

In the config.js, there is a "type" = "books"
        {
          "type": "books",
          "colors": {
            "Pentateuch": "#99D8BF",
            "Historical": "#C5E8DA",
            "PoetryWisdom": "#A6DDC7",
            "MajorProphet": "#8CD3B7",
            "MinorProphet": "#B3E2CF",
            "Gospel": "#C9EADD",
            "Acts": "#A8DEC8",
            "PaulineEpistle": "#BCE5D4",
            "GeneralEpistle": "#9EDAC2",
            "Revelation": "#B3E2CF"
          }
        }


Utility Trace Tool: Add error reporting

Related to issue: #4485

Description:

Recoverable errors will be show in a dialog and unrecoverable errors will be show at the top of the trace tool

Pre-merge Checklist

a vTest Job for this PR has been run

[ ] link:

Unit and/or integration tests have been added to exercise this PR's logic, and the tests are passing:

[ ] Yes
[ ] No

@eri9000 can you please the vTest for this PR


Using Tinder Plugin to generate POJO Classes

We are using Tinder Plugin to generate POJO Classes.  Can we have deserialized response in JSON from generated POJO Classes with HAPI primitives classes using MappingJackson2HttpMessageConverter.

We want to map JSO response from spring Rest template however shows error as  "Could not extract response: no suitable HttpMessageConverter found for response type "

Hi Sri,
I guess there are two parts to this. First, I would really recommend that you just not use Spring REST in this case, but rather use HAPI FHIR's built in REST framework, as they are fairly overlapping in terms of what they try to solve but HAPI is quite customized for FHIR's usage patterns.
If there are specific parts of Spring REST (which is a wonderful framework I'll agree) that you need, maybe we could look at adding equivalent functionality to HAPI FHIR's RestfulServer, or finding some way to make the two play better together?
If you are really set on using HAPI's model objects with Spring REST it should be possible, but not using Jackson (or for that matter, JAXB, JSONP, or any of the other object binding libraries). You would need to implement your own AbstractHttpMessageConverter implementation that uses HAPI's parser to do the conversion. This wouldn't actually be too hard to do, but no such implementation exists yet..


Move Go SDK to use wit-bindgen 0.8

Resolves #1627 This is a not quite working move of the internals of the Go SDK to use wit-bindgen 0.8
Overall the move greatly simplifies things as we can stop using the C generator and move to direct tinygo support.
@Mossaka Here are a few bugs and usability issues I've found:

It seems the code generator does not follow use imports all the way through. When generating code for SDK I get some type errors because some definitions are not created: undefined: FermyonSpinHttpTypesTuple2StringStringT I have to add type aliases for these for them to work.
Surprisingly I'm also getting errors in the generated C code. It seems like some error types are getting mixed up

sdk/go/generated/reactor.c:1404:22: error: assigning to 'fermyon_spin_redis_error_t' (aka 'unsigned char') from incompatible type 'fermyon_spin_key_value_error_t'
      result.val.err = variant;
                     ^ ~~~~~~~

The Result and Option types are not the most helpful. Our SDK usually has return types of value, error and having to translate the Result and Option types to the (arguably more idiomatic) version is tedious. What speaks against the generated code following the value, error pattern more closely?
Error types can't easily be turned into strings. Would it be possible to have some behavior like the Rust code generator which generates Display impls for error types?

I don't have time today to investigate the errors today, but I'll try to do so tomorrow. Let me know if you'd like to take a look together!

Thank you @rylev for using the the go-bindgen in Spin's Go SDK! These findings are great and insightful. It seems to me that the first two points are bugs, and the last two points are feature requests. I will raise each of them as an issue on the wit-bindgen repo and start working on fixing the bugs and improving the Result and Option type and the Error to String experience.

Thanks for getting this work going.  I too have found the Result and Option difficult to work with.

@Mossaka FYI: the other bug I'm seeing has been reproduced and logged as an issue here: https://github.com/bytecodealliance/wit-bindgen/issues/607

Thank you, @rylev !!

This is blocked on one final issue: https://github.com/bytecodealliance/wit-bindgen/issues/617.

Hey @rylev, could you please elaborate more about how this particular issue is blocking this PR?

Concretely, https://github.com/bytecodealliance/wit-bindgen/issues/617 is about adding wit information including the metadata (e.g., the module "producer") to the component model so that tooling knows what the wit would the component targets. In spin-componentize (which is used to turn the plain core WebAssembly module the user builds into a WebAssembly component), we use the information encoded in this custom section to determine how to process the module.
If the module is produced with newer tooling, we know that we can just use the normal wit-component::ComponentEncoder to turn the module into a component. However, if older tooling was used we have to perform a bit of surgery to get the module into the right shape.
One thing I want to try now is to see can we just try to use the wit-component::ComponentEncoder to encode all modules and if it fails fallback to the hacks? I'm unsure if this will work, but it might?

Going to close this for now. We still want to resolve https://github.com/fermyon/spin/issues/1627, but things have evolved sufficiently from the wit-bindgen 0.9 days that this PR is not going to get merged without starting over.


Fix cert and key generation for HTTPS

MD5 is not accepted anymore by even intermediate OpenSSL versions. SHA256 is a current standard for a longer while. Similarly DSA not seen as insecure nowadays and we didn't use it, hence remove it from the library.
Python 3 does not support self-expanding tuples as function arguments anymore. Also those are unnecessary here. Furthermore cert and key writes need to be done explicitly in bytes type, to match the output buffers given by pyOpenSSL functions.

Due to missing CA and SAN, modern clients won't accept this self-signed certificate, while in browsers you can ignore the error. But every request leads to a longer error message in HTPC Manager:
Jul 13 17:29:55 DietPi HTPC Manager[4675]: 2021-07-13 17:29:55 :: cherrypy.error :: ERROR :: [13/Jul/2021:17:29:55] ENGINE Error in HTTPServer.tick
Jul 13 17:29:55 DietPi HTPC Manager[4675]: Traceback (most recent call last):
Jul 13 17:29:55 DietPi HTPC Manager[4675]:   File "/usr/local/lib/python3.9/dist-packages/cherrypy/wsgiserver/__init__.py", line 2021, in start
Jul 13 17:29:55 DietPi HTPC Manager[4675]:     self.tick()
Jul 13 17:29:55 DietPi HTPC Manager[4675]:   File "/usr/local/lib/python3.9/dist-packages/cherrypy/wsgiserver/__init__.py", line 2090, in tick
Jul 13 17:29:55 DietPi HTPC Manager[4675]:     s, ssl_env = self.ssl_adapter.wrap(s)
Jul 13 17:29:55 DietPi HTPC Manager[4675]:   File "/usr/local/lib/python3.9/dist-packages/cherrypy/wsgiserver/ssl_builtin.py", line 66, in wrap
Jul 13 17:29:55 DietPi HTPC Manager[4675]:     s = self.context.wrap_socket(sock,do_handshake_on_connect=True,
Jul 13 17:29:55 DietPi HTPC Manager[4675]:   File "/usr/lib/python3.9/ssl.py", line 500, in wrap_socket
Jul 13 17:29:55 DietPi HTPC Manager[4675]:     return self.sslsocket_class._create(
Jul 13 17:29:55 DietPi HTPC Manager[4675]:   File "/usr/lib/python3.9/ssl.py", line 1040, in _create
Jul 13 17:29:55 DietPi HTPC Manager[4675]:     self.do_handshake()
Jul 13 17:29:55 DietPi HTPC Manager[4675]:   File "/usr/lib/python3.9/ssl.py", line 1309, in do_handshake
Jul 13 17:29:55 DietPi HTPC Manager[4675]:     self._sslobj.do_handshake()
Jul 13 17:29:55 DietPi HTPC Manager[4675]: ssl.SSLError: [SSL: SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl.c:1123)

We'd need to have a look into pyOpenSSL or better cryptography about how to create one that can be imported on modern browsers. But it's difficult, as also the hostname is required SAN. Here is an example about how we managed it with OpenSSL console command: https://github.com/MichaIng/DietPi/blob/2a11e18/dietpi/dietpi-software#L12177-L12180
I think we cannot do it very well in an automated way and finally it is probably best to not try but simply require users to create/issue and apply their own certificate. Thank's to Let's Encrypt and Certbot or acme.sh this is quite easy nowadays. Both ACME clients can spin up their standalone port 80 webserver for regular renewal, so while port 80 need to be forwarded/open, no actual webserver need to listen on it, so that it has no security impact even when the HTPC Manager system shall be accessible from LAN only. And, in that scenario HTTPS probably rarely required anyway 😉. Ah, and otherwise, a reverse proxy is pretty common as well.


⚠ Turnos 24x7 has degraded performance

In 0f4dbcb, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 996 ms

Resolved: Turnos 24x7 performance has improved in e79c92f.


test(e2e): add more cases of multi-signature service

What type of PR is this?
test
What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

@KaoImin  why change defaul 1337 p2p port to 13390?

/lgtm


fix: close flat mapper iterator after usage

Purpose of the PR

close #2280

Main Changes

Verifying these changes

[x] Trivial rework / code cleanup without any test coverage. (No Need)
[ ] Already covered by existing tests, such as (please modify tests here).
[ ] Need tests and can be verified as follows:

xxx

Does this PR potentially affect the following parts?

[x]  Nope
[ ]  Dependencies (add/update license info)
[ ]  Modify configurations
[ ]  The public API
[ ]  Other affects (typed here)

Documentation Status

[ ]  Doc - TODO
[ ]  Doc - Done
[x]  Doc - No Need

Force-push note: clean the unused imports


Paramaetrize sleep time

Not an issue but more of a suggestion. The code here set 60 seconds as the wait time before sending another request. This might be too expensive/too slow/too long, etc depending on the user. I suggest you add the option to set it in an argument.
Something like
python bot.py --wait-time 216000 or even better python bot.py --wait-time 1 hour
Cheers!

Hey, thanks for taking the time to post this! I've just made some changes, putting the polling time as another constant the user can change.
I'll implement the command-line arguments as suggested and some logging features when I get home. Thanks again for your feedback!

#4baabb1c94bd29b688abbe3d633021ccc9023bb5


Hide Github's Footer

Github's footer should be hidden. This updates the style to ensure that
it is.
Fixes #753

This leaves no padding at the bottom of the page, it might need more work now

@bfred-it @CrowderSoup Can we reconsider this? As you have 3 useful link at the bottom that I use from time to time.
One is the "Status" and one is "API" and one is "Contact Github". I don't really see how this get in the way its not like it add's space to the page.

I thought about that, it depends on how much you actually use it. Status has little use because if you see the link… GitHub works! So you just Google it.
Same goes for contact and API, I contact them once a year and the API can be found via Google as well. If you use it more often than that it’s probably gonna be in your browser history.  I use it daily 😄 because I use the api for many things.

The browser address bar is much quicker for these as @bfred-it mentioned.
You could just type github status in Chrome omnibox and it would suggest you the right page if you've visited it before.

@hkdobrev I have to disagree on browser search always being faster. Also, browser search doesn't work for GHE

What GHE-specific links do you have on GHE? It feels like none of that applies to GHE at all.

@bfred-it mainly the GitHub API link, as we are not always on the latest and greatest version and that's a quick and easy way to find out what version we're on.

@bfred-it I'm interested to see how the footer looks on GHE. Could you please post a screenshot? Thank you!

Everything links to Github proper, (API and Help link to the specific version of the api/site -
https://developer.github.com/enterprise/2.11/ for example).
Support is an email link to the admin of the hosted instance.

What do you guys thinking about reducing the footer to just this:

On GitHub.com - a simple line saying © GitHub, Inc. with Refined GitHub extension version ...
On GHE - a simple line saying GitHub enterprise version ... and Refined GitHub extension version ...

@hkdobrev I think we should also not remove Terms and Privacy links. 🤷♀

Honestly at this point I’d leave it. I don’t see many reasons to remove it, especially if we end up leaving some links and discussing which links to leave to whom.

I don't mind it much, having some footer on some pages is useful. If we can make it more minimal, though, that would be great.
@sindresorhus I think you were the one who removed the footer initially. What do you think about that?

I'm neutral. I've never used the footer even once, but it doesn't bother me either.


Can't find variable PushNotification

Hello,
I wanted to use this plugin with my phonegap application, it wasn't working, so I decided to build the exact same example provided in the examples/www but it's also not working, (I tested using the Phonegap developer app for ios https://itunes.apple.com/de/app/phonegap-developer/id843536693?mt=8)
I debug it by showing the JS errors in an alert using this:
window.onerror = function(msg, url, linenumber) {             alert('Error message: '+msg+'\nURL: '+url+'\nLine Number: '+linenumber);             return true;         }
I get the following error:
ReferenceError: Can't find variable: PushNotification in index.js Line Number:40
Here are the steps I folllowed:

create a new cordova project ´phonegap create test´
phonegap platform add ios
phonegap plugin add phonegap-plugin-push
I copy the files inside examples/www to the project's www.
added the debugging code to the index.js
phonegap build
phonegap serve
tested it on my phonegap developper app.

am I doing it wrong?

@BishoyA Yes, the PhoneGap Developer App currently does not support the PushNotification plugin. That is, the native code required for the push plugin is not compiled into that app. It is on my to do list to add it to the dev app so that people can test easier.

Okay, yes thanks for your answer! I was able to test it on a mac using cordova run ios using the ios-sim.

Okay, as an update, this one also failed, I had to do a live device test anyway..

Correct push notifications don't work on the ios-sim.

Same issue try to build on https://build.phonegap.com with below code
<engine name="cordova" version=">=6.4.0"/>
<engine name="ios" version="~4.3.0"/>

<plugin name="phonegap-plugin-push">
   <param name="SENDER_ID" value="ID" />
</plugin>


Post about AR::Dirty 5.2 changes

This PR adds a post about the upcoming changes in Rails 5.2 regarding the ActiveRecord::Dirty module.
Please check it out, thanks!

@cleicar @etagwerker thanks for the comments! Just addressed them and updated the PR.


ISPN-15288 LPUSH creates with wrong order

fixes https://issues.redhat.com/browse/ISPN-15288

Integrated into main, thanks @rigazilla !


Olhaholiak/categories renaming

To implement a new migration the database needs to be deleted first.

Migration was changed not to drop tables, so we don't need to delete the database.


MachineHealthCheck support

this issue is to track support for MachineHealthChecks in cluster-api-provider-k3s.
from the cluster-api docs:

Before deploying a MachineHealthCheck, please familiarise yourself with the following limitations and caveats:

Only Machines owned by a MachineSet or a KubeadmControlPlane can be remediated by a MachineHealthCheck (since a MachineDeployment uses a MachineSet, then this includes Machines that are part of a MachineDeployment)
Machines managed by a KubeadmControlPlane are remediated according to the delete-and-recreate guidelines described in the KubeadmControlPlane proposal

The following rules should be satisfied in order to start remediation of a control plane machine:

One of the following apply:

The cluster MUST not be initialized yet (the failure happens before KCP reaches the initialized state)
The cluster MUST have at least two control plane machines, because this is the smallest cluster size that can be remediated.

Previous remediation (delete and re-create) MUST have been completed. This rule prevents KCP from remediating more machines while the replacement for the previous machine is not yet created.
The cluster MUST have no machines with a deletion timestamp. This rule prevents KCP taking actions while the cluster is in a transitional state.
Remediation MUST preserve etcd quorum. This rule ensures that we will not remove a member that would result in etcd losing a majority of members and thus become unable to field new requests (note: this rule applies only to CP already initialized and with managed etcd)

If the Node for a Machine is removed from the cluster, a MachineHealthCheck will consider this Machine unhealthy and remediate it immediately
If no Node joins the cluster for a Machine after the NodeStartupTimeout, the Machine will be remediated
If a Machine fails for any reason (if the FailureReason is set), the Machine will be remediated immediately

it is my understanding that we basically need to do what kubeadm does in order to support it, as per guidelines above.

We need this feature.
I'm quite new for open-source, please let me know how can i contribute on this feature.

We need this feature. I'm quite new for open-source, please let me know how can i contribute on this feature.

i'm just getting started on taking a shot at it would appreciate your eyes on it when i have something!

fixed in #77 (it's WIP but still counts as a close i think)


[5.2.33] increment() on a relationship generates invalid SQL for Postgres

After upgrading from 5.2.31 to 5.2.33 noticed that increment() method called on a  relationship i.e.
$exchange->tags()->increment('ref_count');

generates an invalid SQL (at least) for Postgres and breaks the app with an error:
Illuminate\Database\QueryException: SQLSTATE[42703]: Undefined column: 7 ERROR:  column "tags" of relation "tags" does not exist
LINE 1: update "tags" set "ref_count" = "ref_count" + 1, "tags"."upd...

5.2.31 produces the following SQL
update "tags" set "ref_count" = "ref_count" + 1, "updated_at" = ?
  from "exchange_tag"
 where "exchange_tag"."exchange_id" = ?
   and "tags"."id" = "exchange_tag"."tag_id"

whereas 5.2.33
update "tags" set "ref_count" = "ref_count" + 1, "tags"."updated_at" = ?
  from "exchange_tag"
 where "exchange_tag"."exchange_id" = ?
   and "tags"."id" = "exchange_tag"."tag_id"

See how table name "tags" crawled in for updated_at?

What about in 5.2.32 please?

5.2.32 is OK. The whole test suite is green. So it looks like this bug was introduced in 5.2.33.

Ping @taylorotwell.

Can you try on latest tag: 5.2.34?

Seems to be working fine in 5.2.34. The test suite is green. Thanks.

Great. ;)


Manipulating deposit contract to gain an early majority

This issue describes a feasible way to gain a dishonest majority in the first two epochs.
Assumptions

The shuffling of the first two epochs is determined only by the number of active validators (v).
v can only vary by at most n, where n = eth1_gas_limit / gas_for_deposit (I think this is ~100).

Gaining an early dishonest majority
If an attacker can control their index in the deposit tree (this seems feasible), then it would take n * (SLOTS_PER_EPOCH / 2) validators to ensure they control 50% of the validators in either the first or second epochs.
Implications
Influencing future shuffling
An attacker with a block-producer majority gains the standard 1-bit of control by submitting/withholding a block.
Additionally, an attacker can also choose thier randao reveal (to some degree) by choosing their private key. Note that the attacker has a long time (now until genesis) to compute these private keys.
Some rough calculations show that gaining full control of future shufflings is infeasible, but some degree of control is possible.
Breaking eth1 linking
If used with above attack (influencing future shuffling), it may be feasible for the attacker to produce a majority of the blocks the ETH1_VOTING_PERIOD and break the eth1-linking.
We have not looked into the feasibility of this attack.
Additional Comments
Setting v seems to be an instance of "eth1 transaction ordering attack" on smart contracts. Here are some ways to set v:

Be an eth1 miner and supress transactions.
Use known gas-war techniques to manipulate the ordering of deposits.

1 ether deposits can be used to cheapen this attack.

closed via #1447


Fix closure syntax errors.

Latest nighties changed closure syntax, so here's a patch!
NOTE: It just covers gfx_macros and should pass build and test.

@toqueteos thank you! Could you also have a look at gfx_gl, which needs to be fixed first?

@kvark Just did https://github.com/bjz/gl-rs/issues/302! There's some weird stuff going on I don't know how to fix :disappointed:

Sadly, This PR is blocked by #539 and needs Travis to catch up with Rust nightlies...

Silly travis

Someone needs to fix gfx_gl...

@kvark I'm on it!


remove outdated version in comment/code

Nothing important, only code clean up. v4 is a little outdated.

Looks good to me 👍

Thank you @Rotzbua.


Features/vmodl to yaml

Made it possible to load vmodl.db as both marshal or yaml format
By having the vmidl in yams it will be possible to review commit changes and prevent issues like #90

Thanks for the PR! Let me think through and test some scenarios with this. I like the idea, but want to give it some thought.


Validation errors during mipmapping layout setup

Hi.
I have been learning from your texturemipmapgen.cpp example how to generate mipmaps.
I did my first attempt on this one from https://vulkan-tutorial.com.
Then decided to check this sample which looks more compact.With  validation layers on,when
vks::tools::setImageLayout(
				blitCmd,
				texture.image,
				VK_IMAGE_LAYOUT_UNDEFINED,
				VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
				mipSubRange,
				VK_PIPELINE_STAGE_TRANSFER_BIT,
				VK_PIPELINE_STAGE_HOST_BIT);

Is set inside mipmap gen loop before the call to vkCmdBlitImage the validation output spits the following error:
Severity: Error,Type:Validation,12:04:12 ERROR  ..\vulkaninfrastructure.cpp Function:debugCallback Line:90 Message:Message:vkCmdPipelineBarrier()

: pImageMemBarriers[0].dstAccessMask (0x1000) is not supported by dstStageMask (0x4000).

The Vulkan spec states: Each element of pMemoryBarriers, pBufferMemoryBarriers and pImageMemoryBarriers must not have any access flag included in its dstAccessMask member if that bit is not supported by any of the pipeline stages in dstStageMask, as specified in the table of supported access types. (https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185)
Where dstAccessMask =VK_ACCESS_TRANSFER_WRITE_BIT,dstStageMask=VK_PIPELINE_STAGE_HOST_BIT.
The  demo still ends up running with mipmapped image ok. But it would be nice to get pointed out to the reason why this setup causes Vulkan to complain. Mostly for the learning purposed.
Thanks.

I added this :
       if (dstStageMask== VK_PIPELINE_STAGE_HOST_BIT)
	{
		imageMemoryBarrier.dstAccessMask = 0;
	}

	if (srcStageMask == VK_PIPELINE_STAGE_HOST_BIT)
	{
		imageMemoryBarrier.srcAccessMask = 0;
	}

Now the validation errors are gone. Could you explain to a noob like me why srcAccessMask and dstAccessMask in this case must be not set?

I haven't had time to update that sample yet to get validation clean.
As the validation message tells you: The access masks I've been using are simply not compatible with the selected pipeline stage. That's something that the validation layers did not check when I wrote that sample.
You can find a table on what access flag is supported for what pipeline stage at https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAccessFlagBits.html
I'm a bit short on time as of currently, but I'll try to fix this as soon as possible.

I have pushed an update that fixes the validation messages. This change uses a more explicit function for specifying barriers, so in addition to fixing the barriers this also selects proper stages (instead of VK_PIPELINE_STAGE_ALL_COMMANDS_BIT as setImageLayout) did.


Function is not supported (esprima)

Using esprima and node v14, I get an error running an example in the README ('[1, 2, 3].map(n => n * x);'):
> TypeError: Functions are not supported
 ❯ ExpressionSync.visit node_modules/eval-estree-expression/lib/ExpressionSync.js:40:13
 ❯ ExpressionSync.evaluate node_modules/eval-estree-expression/lib/ExpressionSync.js:62:17
 ❯ Function.evaluate node_modules/eval-estree-expression/lib/ExpressionSync.js:15:46
 ❯ Function.Expression.evaluate.sync node_modules/eval-estree-expression/lib/Expression.js:192:56

const { parse } = require('esprima');
const { evaluate } = require('eval-estree-expression');
const ast = parse('[1, 2, 3].map(n => n * x);').body[0].expression;

// evaluate synchronously
console.log(evaluate.sync(ast));

Async has the same error.  Also, x would be undefined if it ran, I just changed to 2.

In the readme example, an options object is also passed to the function to enable function evaluation:
const escodegen = require('escodegen');
const { parse } = require('esprima');
const { evaluate } = require('eval-estree-expression');

const options = {
  functions: true,
  generate: escodegen.generate
};

console.log(await evaluate(parse('[1, 2, 3].map(n => n * x);'), { x: 2 }, options))); // =>, [2, 4, 6]

closing since I think this has been resolved, but feel free to reopen if I missed something or this is still an issue.


[WIP] Add a bailador health-report page

See #219.
use Bailador;
require Bailador::Feature::Status;

baile;

$ curl http://<IP_ADDRESS>:3000/bailador
{
  "running": "ok",
  "mode": "production",
  "requests": 3
}%

There are a number of conflicts here, including some name changes. Can you please update from upstream and submit again?


creating a conditional authentication dependency

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the FastAPI documentation, with the integrated search.
[X] I already searched in Google "How to X in FastAPI" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to FastAPI but to Pydantic.
[X] I already checked if it is not related to FastAPI but to Swagger UI.
[X] I already checked if it is not related to FastAPI but to ReDoc.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
from fastapi import FastAPI, Depends, Request
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="login")

async def release(release: str = 'A') -> str:
    """ Dependency to specify a release query parameter """
    return release

async def check_auth(request: Request, release = Depends(release)):
    release = release or 'A'
    if release != 'A':
        return None
    return await oauth2_scheme(request)

async def set_auth(token: str = Depends(check_auth), release = Depends(release)):
    return {"token": token, 'release': release}

app = FastAPI(title='API', description='The API', dependencies=[Depends(set_auth)])

@app.get("/", summary='Hello World route')
def hello(release = Depends(release)):
    return {"Hello": "Hello World", 'release': release}

@app.post("/login")
async def login(form_data: OAuth2PasswordRequestForm = Depends()):
    # standard normal login stuff
    # ...
    return {"access_token": 'blah', "token_type": "bearer"}

Description
I'm trying to create an API with a conditional authentication system.  This API will serve data bundled into releases, e.g. A, B, C.   Releases B, C are public and A is proprietary.  All the API routes should work for all the data, but data from release A needs to be behind authentication.  Routes should work without an auth prompt for all releases not from A.  I've created a standard OAuth2PasswordBearer system and wrapped it inside a check_auth dependency.  The example code provided works.  I can do
requests.get('http://localhost:8000/?release=B').json()
{"Hello": "Hello World", 'release': 'B'}

requests.get('http://localhost:8000/?release=A').json()
{'detail': 'Not authenticated'}

but the use of await oauth2_scheme(request) doesn't feel very FastAPI-ish to me.  My question is does this solution make sense, or is there a better way, more in-align with best practices for FastAPI?  Also, it looks like the Authorize option in my rendered documentation (localhost:8000/docs) is gone.  Is there a way to get that to appear with this implementation?
Operating System
macOS
Operating System Details
No response
FastAPI Version
0.74.1
Python Version
3.8
Additional Context
No response

I've simplified the code a bit by subclassing OAuth2PasswordBearer directly.  This solves the issue with the Authorize option not appearing in the docs, while still giving me the conditional auth on release parameter.
class MyAuthPasswordBearer(OAuth2PasswordBearer):

    async def __call__(self, request: Request, release: str = Depends(release)):
        self.release = release or "A"
        if self.release != 'A':
            return None
        await super().__call__(request)

oauth2_scheme = MyAuthPasswordBearer(tokenUrl="login")

async def set_auth(token: str = Depends(oauth2_scheme), release = Depends(release)):
    return {"token": token, 'release': release}

app = FastAPI(title='API', description='The API', dependencies=[Depends(set_auth)])

@app.get("/", summary='Hello World route')
def hello(release = Depends(release)):
    return {"Hello": "Hello World", 'release': release}

Could you make this two different endpoints instead of using a query parameter flag?


feature(core): Setting custom logs folder with environment variable

Signed-off-by: Nikolay Vlasov<EMAIL_ADDRESS>Issue #183
Introduced a new environment variable called CONCERTO_LOG_FOLDER_PATH to set a custom log path for concerto.
Changes

Added a new environment variables and the way the logs directory path is set in concerto-core/lib/logger.js

Updated the readme with a note on how to set the variable.

Flags

This modification is needed to make concerto compatible with Amazon Lambda function on AWS cloud.

Related Issues

Issue #183

Thank you for your PR 🌟
You will be able to experiment with your changes in the unstable release in a few minutes with @accordproject/concerto-core@unstable. We'll cut a proper release later this week

Thanks a lot!

With apologies: I think this fell through the cracks. This fix is being released in version 0.82.8. https://github.com/accordproject/concerto/releases/tag/v0.82.8


Support of golangci-lint

It would be awesome to add support for golangci-lint

I think this should be done on golangci-lint side, not here? https://golangci-lint.run/contributing/new-linters/


Remove placeholder_playerdata

Not needed since v1.10 (R2Northstar/NorthstarLauncher@841881af9ea6ec73b1d505d5a8f7c1f766273724).

@GeckoEidechse

Requesting Review from @BobTheBob9 cause he wrote https://github.com/R2Northstar/NorthstarLauncher/pull/171

I've already talked to @BobTheBob9 about this while we were discussing Atlas default pdata updates and the big refactor.

> Shouldn't break anything he said in vc
> breaks docker image in two separate ways :,)

Well, the idea was that the docker update for the NS version would include the required changes. Unfortunately, unlike v1.13.0, I wasn't available at the time of release...


Tharper/1.4 backport unreachable disabled

still missing changes?

@jdef Nope - should all be here

Needed an extra mock for the migration suite test to pass

retest this please

retest this please

retest this please

I'm really confused why ForwardToLeaderIntegrationTest is failing; it passes locally, and, I can't imagine what in this patch would've broken it, except perhaps a validation error (which would most definitely fail locally).

retest this please

oh geez this is so flaky

landing because the failures appear unrelated.


remove replace directive

remove replace directive

But also not sure if this is all we need
Will fix https://github.com/sigstore/cosign/issues/1555 when we release
TODO as follow up

add tests for 1.23 k8s

Should we cut a 1.6.1 after this?

why not 1.7.0? @dlorenc

why not 1.7.0? @dlorenc

works for me!


Packages reported as prebuilts in .NET source-build

The following packages are being reported as prebuilts in source-build and will need to be addressed.
    <Usage Id="Microsoft.CodeCoverage.IO" Version="17.7.1-beta.23213.1" File="src/artifacts/obj/Microsoft.TestPlatform.CLI/project.assets.json" IsDirectDependency="true" />
    <Usage Id="Microsoft.Internal.TestPlatform.Remote" Version="17.5.33617.425" File="src/artifacts/obj/Microsoft.TestPlatform.CLI/project.assets.json" IsDirectDependency="true" />
    <Usage Id="System.Private.Uri" Version="4.3.2" File="src/artifacts/obj/Microsoft.TestPlatform.CLI/project.assets.json" />
    <Usage Id="System.Private.Uri" Version="4.3.2" File="src/artifacts/obj/testhost.arm64/project.assets.json" IsDirectDependency="true" />

None of these packages (any version) are included in source-build today.  Please refer to the source-build new dependency documentation for guidance on how to handle new dependencies from a source-build perspective.

@nohwnd - is this something you can help with?  These are impacting the preview 4 release for source-build.

Prior to the Arcade refactoring, it looks like Microsoft.CodeCoverage.IO and Microsoft.Internal.TestPlatform.Remote were part of external.csproj and were excluded from source build.  How are these components used are they required from sourcebuild?  If not, then they should be moved to this section.

@MichaelSimons @Evangelink Microsoft.CodeCoverage.IO is not needed for source build. It is dynamically loaded in merging of code coverage attachments scenario. I've created this PR to exclude it from source build: https://github.com/microsoft/vstest/pull/4426
Please check it as I am not source build expert.

Gentle ping on the last remaining prebuilt - Microsoft.Internal.TestPlatform.Remote.  I am willing to help out if someone can confirm that this can be conditionally excluded for source-build.

@MichaelSimons I have been reviewing the code and it seems that outside of the insertion in VS we are only using Microsoft.Internal.TestPlatform.Remote to include System.ComponentModel.Composition dll into Microsoft.TestPlatform.nupkg and Microsoft.TestPlatform.CLI.nupkg.
I am not sure what's the best course of action here, exclude for source-build or move to using a dependency to System.ComponentModel.Composition nuget package.
Any suggestion?

@Evangelink, is the Microsoft.Internal.TestPlatform.Remote change something you can make soon?  This needs to be addressed in for source-build to be prebuilt clean.  TIA

Sorry for the delay, I will handle it early next week.


Paddle error is not returned in the exception message

Describe the bug
I created a customer with an address in Spain and did not specify the region in the address.
Then I sent a request:
operation = CreateTransaction(
    customer_id=customer.id,
    address_id=address.id,
    business_id=business.id,
    collection_mode=CollectionMode.Manual,
    items=items,
    billing_details= BillingDetails(
        enable_checkout=False,
        purchase_order_number='',
        additional_information='',
        payment_terms=TimePeriod(interval=Interval.Day, frequency=30)))
paddle.transactions.create(operation)

It fails with an extremely uninformative error 400 Client Error: Bad Request for url: https://sandbox-api.paddle.com/transactions
If I send a request directly:
payload = FiltersUndefined.filter_undefined_values(operation.get_parameters())
url = paddle.transactions.client.options.environment.base_url + "/transactions"
res = paddle.transactions.client.client.request('POST', url, json=payload)

I get a response
{"error":
{"type":"request_error",
"code":"transaction_address_not_suitable_for_collection_mode",
"detail":"Address entity must be suitable for the transactions current collection mode",
"documentation_url":"https://developer.paddle'.com/v1/errors/transactions/transaction_address_not_suitable_for_collection_mode"},
"meta":{"request_id":"d50354fb-62a2-4314-8021-ea23ae83ac01"}}

Needless to say that I just wasted several days trying to figure out what was wrong before I tried to send a request directly to paddle. Extremely disappointed :(
Steps to reproduce
see above
Expected behavior
I would like to see what actually went wrong in the exception message
Code snippets
No response
Python version
3.11
SDK version
1.0.1
API version
1
Additional context
No response

Hi @lmscloud-io,
Thank you for reporting this issue.
I am sorry that are facing this problem. We will look into this issue and get back to you with an update.
Thank you.

Here is even an easier way to reproduce it

Create a customer
Create an address for this customer

operation = CreateAddress(country_code='US', postal_code='1')
paddle.addresses.create(customer_id, operation)

error message:
Request failed: 400 Client Error: Bad Request for url: https://sandbox-api.paddle.com/customers/ctm_01hzmk2j4rkdfea9qs28w4d10q/addresses

Do the same directly with Paddle API:

payload = FiltersUndefined.filter_undefined_values(operation.get_parameters())
url = paddle.transactions.client.options.environment.base_url + f"/customers/{customer_id}/addresses"
res = paddle.transactions.client.client.request("POST", url, json=payload)

you get a MEANINGFUL response:
{"error":{"type":"request_error","code":"bad_request","detail":"Invalid requ
est","documentation_url":"https://developer.paddle.com/v1/errors/shared/bad_
request","errors":[{"field":"postal_code","message":"US postal_code must be
5 digits only"}]},"meta":{"request_id":"7117f662-7acb-44d1-8e5a-922e86f33723
"}}

Hi @lmscloud-io
We have released a fix in 0.1.3 https://github.com/PaddleHQ/paddle-python-sdk/pull/11 to raise an ApiError that provides more details with the following properties:

error_type
error_code
detail
docs_url
field_errors (list)

field
error

Please note that the string representation of this error will be the detail string, e.g. Invalid request. To get a full representation of the error, you can use repr(e).

Thank you very much, it works well. Feel free to close the issue as resolved!


fix: tools-2887 remove generated config fields with null or undefined values

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 79.02%. Comparing base (018eb7b) to head (f872a9f).

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #39   +/-   ##
=======================================
  Coverage   79.02%   79.02%
=======================================
  Files          14       14
  Lines        1006     1006
=======================================
  Hits          795      795
  Misses        143      143
  Partials       68       68

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Are particular files outside index.less required for syntax package

When I created a blank package I get two files, syntax-variables.less and editor-styles.less do I need these files specifically or can I merge everything into one file.
Perhaps the question would be better framed as, what are the minimum required specific variables or files in a syntax package for it to be valid.

There are certain style sheets that are meant to be included in Syntax and UI theme packages so that package authors can include them to allow UI provided by their packages to blend in with those themes. I know that the ui-variables.less style sheet is one of those for UI theme packages, I would assume that syntax-variables.less is also for Syntax themes. I don't know about editor-styles.less.
/cc @simurai

Well, the really minimum requirements to make a syntax theme work is a single index.css file. So you don't even need to use Less.
That said, it's highly recommended to also include the styles/syntax-variables.less since it gets used by other packages. If the styles/syntax-variables.less can't be found in a theme, Atom just falls back and uses the variables found in https://github.com/atom/atom/blob/master/static/variables/syntax-variables.less. And then other packages won't match the theme and things probably look odd or are even unusable.
So, yeah.. styles/syntax-variables.less is kinda required, but the rest can be organized however you like.

Awesome! Thanks for the details info, both of ye :+1:


Clicking outside of the etterna window causes files or packs to open

when im in game, i'll click out of the window and it will open a pack or start a song. this happens in fullscreen as well. https://youtu.be/5BlX4edcvSc

We (mina, xwidghet, and myself) cannot replicate this issue.  More detail about your exact setup is required to determine why an issue is occurring.  Please include as much information as you can think of, as in general more information is more useful.
Also as an aside when posting an issue it is good practice to always include all relevant information. If we cannot replicate your bug we can't fix it.

the only other relevant information that i can give is im using the 0,55 pre release of etterna https://drive.google.com/file/d/0B4kA0cSC7Jo1R1hpelU3S1lUR00/view (from this dl link), and im using 64 bit version of windows 10. sorry if this information would have been more useful in my original post. if theres anything more specific that you need, i can elaborate.

What resolution and aspect ratio is your Etterna using? What's your desktop resolution?

using 1920x1080 resolution and 16:9 ratio, as well that is my desktop resolution.

I finally managed to replicate this. The problem started happening when i resized my window.
This seems to fix the issue, at least in windows: https://github.com/Nickito12/etterna/tree/mousepos (Specifically https://github.com/Nickito12/etterna/commit/518880e52484ed47dcda113220336f4f823b4cd3)

Ok I think this can be closed (https://github.com/etternagame/etterna/pull/19)

Fix by #19.


Conflict of dependancies in the ros node

Hi
thanks for sharing your code,
I think you referenced methods that doesn't exist in the "https://github.com/HJReachability/ilqgames/tree/v0.0.2"
in receding_horizon_planner.cpp for example,
this type
const ConcatenatedDynamicalSystem& dynamics,
doesn't have this method SubsystemXDim(ii),
hence the ros package cannot be built, also when somebody tries to build the external package it clones v.0.0.1 instead of v.0.0.2 and the methods won't match for compilation. It would be great if you tell us which version matches with this rosnode
in the script, line 216, the Splice method need time argument as well for v.0.0.2
    ros_time=ros::Time::now().toSec();
    solution_splicer_->Splice(*log, ros_time)

such case is also for the two other scripts,
in three_player_vicon_demo.cpp line 114 uses an overload of ConcatenatedDynamicalSystem that doesnt exist in the class definition.
it would be great if you could address these

I am not sure why you are using v0.0.2 when the external build automatically grabs master, which has all of these methods. Try the normal ROS build process, i.e.:
> catkin_make_isolated
> catkin_make

where you execute the first command from within external/ and the second from within ros/.
https://github.com/HJReachability/ilqgames_ros/blob/3d80a17db884ab0bec3f0ef3c9c1696745174e67/external/src/ilqgames/CMakeLists.txt#L10
https://github.com/HJReachability/ilqgames/blob/8908a96444c0b82938f0f581965bf65d03d70274/include/ilqgames/dynamics/concatenated_dynamical_system.h#L92

Oops. No idea at what point these diverged... but it appears to be a minor issue. If you inspect the header for the TopDownRenderableProblem class, it appears that it directly has the Dynamics() method so you can just splice out the ->Solver() call. Apologies for the confusion.

Definitely stay on master though because I'm sure there were some important changes that happened after v0.0.2

As you can see from the inheritance diagram (https://hjreachability.github.io/ilqgames/documentation/html/classilqgames_1_1_concatenated_dynamical_system.html), the ConcatenatedDynamicalSystem class is derived from the MultiPlayerIntegrableSystem class, and hence should be up-castable. The error is most likely because you are either casting a shared_ptr to a raw pointer. You need to use shared_ptr<>.get() to access the raw pointer. Likewise, you can access the number of players also from the dynamics class directly. Again, apologies for the confusion and if you open a PR to fix these issues I will be much obliged.shared_ptr<>.get() to access the raw pointer.

As you can see from the inheritance diagram (https://hjreachability.github.io/ilqgames/documentation/html/classilqgames_1_1_concatenated_dynamical_system.html), the ConcatenatedDynamicalSystem class is derived from the MultiPlayerIntegrableSystem class, and hence should be up-castable. The error is most likely because you are either casting a shared_ptr to a raw pointer. You need to use shared_ptr<>.get() to access the raw pointer. Likewise, you can access the number of players also from the dynamics class directly. Again, apologies for the confusion and if you open a PR to fix these issues I will be much obliged.shared_ptr<>.get() to access the raw pointer. Likewise, you can access the number of players also from the dynamics class directly. Again, apologies for the confusion and if you open a PR to fix these issues I will be much obliged.

Lol once your PR lands ;)


note: optimistic parsing in ASN1

Just so you know, I used an optimistic approach to the ASN1 parsing, which is why that library is only 5kb instead of 100kb.
In short this means that it is very rare (but known to be possible) for certificate PEMs to throw false negative errors.
I think it's impossible to happen for a keypair PEM - because it won't have arbitrary nested data, user-selected data, or unknown optional metadata fields.
So I'd love to know about it and get a copy of the keypair if you ever get an error when parsing an OS keypair, but simply deleting it and grabbing a new one is the workaround.
More here: https://github.com/therootcompany/asn1.js/issues/4

thanks for the info, could end up being really useful in future debugging! :)

closing for now, but we may need to revisit. good to have this info here for posterity.


fix: The library doesn't keep the user logged in overnight

Description
Every morning I need to log back into the app. I'm using offline refresh tokens that have an expiry of 200 days.
Steps To Reproduce
Leave the app in the background overnight. When I open it in the morning the user has logged out.
Expected Behavior
Since the refresh token is set for 200 days they should remain logged in.
Additional Context
This is my setup:
init(String deviceId) async {
    _manager = OidcUserManager.lazy(
      discoveryDocumentUri: OidcUtils.getOpenIdConfigWellKnownUri(
        Uri.parse(ApiConstants.keycloakURL),
      ),
      clientCredentials: OidcClientAuthentication.none(clientId: ApiConstants.keycloakClient),
      store: OidcDefaultStore(),
      settings: OidcUserManagerSettings(
        extraAuthenticationParameters: {},
        // DO NOT CHANGE THE ORDER deviceId RELIES UPON THE DEVICE BEING LAST
        scope: ['openid', 'profile', 'email', 'offline_access', 'urn:matrix:org.matrix.msc2967.client:device:${deviceId}'
        ],
        redirectUri: Uri.parse('${ApiConstants.appId}:/oauth2redirect'),
        postLogoutRedirectUri: Uri.parse('${ApiConstants.appId}:/endsessionredirect'),
      ),
    );

    _manager.userChanges().listen((user) async {
      print('currentUser changed to: ${user}');
      notifyListeners();
    });

    await _manager.init();
  }

when calling init the package tries to exchange a token using the stored refresh token, if it fails it logs out silently.
so next time try opening the network tab in your browser (f12 in Google chrome) to monitor outgoing requests and see what the problem is.

Hi, my Keycloak server doesn't receive any requests trying to authenticate. It only receives requests asking for it's openid-conf and certs.

I see, I will have to check to see why

I don't know if this helps but I have noticed that the library sometimes updates the user as null before getting the token on start up. So the first event can be null before getting an actual user. So in my routing i've had to do:
  if(user == null) {
    navigateToLogin();
  } else {
    if(userIsOnLogin() {
      navigateToMain();
    }
    return null;
  }

Rather than the simpler:
  if(user == null) {
    navigateToLogin();
  }
  return null;

It would be handy if it did have creds installed it would try them before sending the null user event on init.

I have managed to hack this to work with the following code:
   _manager.userChanges().listen((user) async {

      if (user != null) {
        final dir = await getApplicationSupportDirectory();
        var box = await Hive.openBox('tokenBox', path: dir.path);
        box.put('token', user.token.refreshToken);
      } else {
        print("Using hive token");
        final dir = await getApplicationSupportDirectory();
        var box = await Hive.openBox('tokenBok', path: dir.path);
        String? token = box.get('token');
        if(token != null && _manager.didInit) {
          print("Refreshing token");
          _manager.refreshToken(overrideRefreshToken: token);
        }
      }

      print('currentUser changed to: ${user}');
      notifyListeners();
    });

/// Refreshes the token manually.
  ///
  /// If token can't be refreshed `null` will be returned.
  ///
  /// Token can be refreshed in the following cases:
  /// 1. grant_types_supported MUST include refresh_token
  /// 2. the [currentUser] MUST NOT be null
  /// 3. the `currentUser.token` MUST include refreshToken
  ///
  /// If any of these conditions are not met, null is returned.
  ///
  /// An [OidcException] will be thrown if the server returns an error.
  Future<OidcUser?> refreshToken({String? overrideRefreshToken}) async {
    if (!discoveryDocument.grantTypesSupportedOrDefault
        .contains(OidcConstants_GrantType.refreshToken)) {
      //Server doesn't support refresh_token grant.
      return null;
    }
    //final user = currentUser;
    //if (user == null) {
    //  return null;
    //}
    final refreshToken = overrideRefreshToken ?? currentUser?.token.refreshToken;
    if (refreshToken == null) {
      // Can't refresh the access token anyway.
      return null;
    }

    final tokenResponse = await OidcEndpoints.token(
      tokenEndpoint: discoveryDocument.tokenEndpoint!,
      credentials: clientCredentials,
      client: httpClient,
      headers: settings.extraTokenHeaders,
      request: OidcTokenRequest.refreshToken(
        refreshToken: refreshToken,
        clientId: clientCredentials.clientId,
        clientSecret: clientCredentials.clientSecret,
        extra: settings.extraTokenParameters,
        scope: settings.scope,
      ),
    );
    return _createUserFromToken(
      token: OidcToken.fromResponse(
        tokenResponse,
        overrideExpiresIn: settings.getExpiresIn?.call(tokenResponse),
        sessionState: currentUser?.token.sessionState,
      ),
      nonce: null,
      attributes: null,
    );
  }

I don't know if this helps but I have noticed that the library sometimes updates the user as null before getting the token on start up. So the first event can be null before getting an actual user.

This is just a side effect of listening to the stream before calling init, this is why you should call init in your main or at least use a pattern similar to this:
https://github.com/Bdaya-Dev/oidc/blob/4e9fbaca58a0c86abcb592c77d06b38706b178b5/packages/oidc/example/lib/main.dart#L71-L90
this way you don't have to do weird magic in your routing

I'm seeing this issue as well. I am initing like you have in the examples, but it doesn't appear to attempt to do a refresh of the token, it just checks the expiration and fails.

I've been tracing through the code and it appears that when this library loads things from cache and it encounters an expired token, it just throws it away rather than attempting a refresh of the token if one is available.

I have also investigated this, the particular area that fails is this:
https://github.com/Bdaya-Dev/oidc/blob/9649ee0b856906cce2afd691d641191075090a43/packages/oidc/lib/src/managers/user_manager.dart#L796-L822
when an id_token is found to have expired (by checking the exp field), it's registered as an error, thus leading to the tokens being removed.
The solution here is to check for token expiration right after loading it here:
https://github.com/Bdaya-Dev/oidc/blob/9649ee0b856906cce2afd691d641191075090a43/packages/oidc/lib/src/managers/user_manager.dart#L939
will create a PR for it soon.

Can confirm having the same issue

Version 0.5.2 has been released to address this issue.
Waiting for your feedback!


Updated script for Python 3 compatibility

Done by BaronSmoki and posted at Discord https://discordapp.com/channels/165183350913499136/326048443040530432/625439237067505699

I've made a few minor tweaks to allow Python 2 to run this code. After some light tests it appears to work identical in both Python 2 and Python 3, but there might be some gotchas I've missed

I pulled the recent master and it seems to work unchanged for me with python3, so if it works with python2 as well I guess it's all fine :). Thanks!


lint docker files

GitHub suggested some linting in the Docker files, this PR does that.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 62.39%. Comparing base (45cb08c) to head (901bba2).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #943      +/-   ##
==========================================
- Coverage   64.25%   62.39%   -1.87%
==========================================
  Files          48       45       -3
  Lines        5951     5419     -532
  Branches      144        0     -144
==========================================
- Hits         3824     3381     -443
+ Misses       2127     2038      -89

Components
Coverage Δ

apel_plugin
∅ <ø> (∅)

auditor
68.73% <ø> (ø)

auditor_client
94.37% <ø> (ø)

slurm_collector
68.75% <ø> (ø)

slurm_epilog_collector
0.00% <ø> (ø)

htcondor_collector
∅ <ø> (∅)

priority_plugin
37.50% <ø> (ø)