[1.15.x] Code changes for 2.6.0.CR1 including DevServicesSharedNetworkBuildItem

(cherry picked from commit f111e2741a79f9c0397c290260ed110cdf4b9e35)
Many thanks for submitting your Pull Request :heart:!
Please make sure that your PR meets the following requirements:

[x] You have read the contributors guide
[x] Your code is properly formatted according to this configuration
[x] Pull Request title is properly formatted: KOGITO-XYZ Subject
[x] Pull Request title contains the target branch if not targeting main: [0.9.x] KOGITO-XYZ Subject
[x] Pull Request contains link to the JIRA issue
[x] Pull Request contains link to any dependent or related Pull Request
[x] Pull Request contains description of the issue
[x] Pull Request does not include fixes for issues other than the main ticket

How to replicate CI configuration locally?

Build Chain tool does "simple" maven build(s), the builds are just Maven commands, but because the repositories relates and depends on each other and any change in API or class method could affect several of those repositories there is a need to use build-chain tool to handle cross repository builds and be sure that we always use latest version of the code for each repository.
build-chain tool is a build tool which can be used on command line locally or in Github Actions workflow(s), in case you need to change multiple repositories and send multiple dependent pull requests related with a change you can easily reproduce the same build by executing it on Github hosted environment or locally in your development environment. See local execution details to get more information about it.

How to retest this PR or trigger a specific build:

Run all builds
Please add comment: Jenkins retest this

Run (or rerun) specific test(s)
Please add comment: Jenkins (re)run [kogito-runtimes|optaplanner|kogito-apps|kogito-examples|optaplanner-quickstarts|optaweb-employee-rostering|optaweb-vehicle-routing] tests

Quarkus LTS checks
Please add comment: Jenkins run LTS

Run (or rerun) LTS specific test(s)
Please add comment: Jenkins (re)run [kogito-runtimes|optaplanner|kogito-apps|kogito-examples|optaplanner-quickstarts|optaweb-employee-rostering|optaweb-vehicle-routing] LTS

Native checks
Please add comment: Jenkins run native

Run (or rerun) native specific test(s)
Please add comment: Jenkins (re)run [kogito-runtimes|optaplanner|kogito-apps|kogito-examples|optaplanner-quickstarts|optaweb-employee-rostering|optaweb-vehicle-routing] native

Full Kogito testing (with cloud images and operator BDD testing)
Please add comment: Jenkins run BDD
This check should be used only if a big change is done as it takes time to run, need resources and one full BDD tests check can be done at a time ...

The (build) kogito-examples check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

The (build) optaplanner check has failed. Please check the logs.

The (build) optaweb-employee-rostering check has failed. Please check the logs.

The (build) optaplanner-quickstarts check has failed. Please check the logs.

The (build) optaweb-vehicle-routing check has failed. Please check the logs.

The (build) kogito-runtimes check has failed. Please check the logs.

Jenkins retest this

The (build) optaplanner check has failed. Please check the logs.

The (build) kogito-apps check has failed. Please check the logs.

The (build) optaweb-vehicle-routing check has failed. Please check the logs.

The (build) kogito-examples check has failed. Please check the logs.

The (build) optaweb-employee-rostering check has failed. Please check the logs.

The (build) optaplanner-quickstarts check has failed. Please check the logs.

The (build) kogito-runtimes check has failed. Please check the logs.

Closing in favor of https://github.com/kiegroup/kogito-runtimes/pull/1775 which will be backported to 1.15.x


Incompatible with Flask 3.0

Flask-OpenTracing's tracing.py imports a private variable from Flask:
from flask import _request_ctx_stack as stack

This variable was deprecated in Flask 2.4 and was removed in Flask 3.0, released at the end of September, 2023.
Please revise your code to make use of the new supported request, documented here.

I'm composing a PR to address this.


Self hosting configuration

Hi - can you provide the heroku configuration used to run the server ? Further if we wish to run this on local LAN - will there be any change required in the server js ?

Hi.
In Heroku I have config var HEROKU=true, it enabels pinging server itself (so server will not sleep if its free dyno) , but address hardcoded here https://github.com/Semro/syncwatch/blob/2aa16e42a5bbda122dbfdf1bb133da709aea442e/server.js#L53, so you might change it, or better to pull it out in environment variable as well.
To run server locally, executing command npm run start should be enough.

Hi Semro. I hope you are doing good. so, you're saying that I can self host it on a rpi ? i can provide the IP address here ?

Read through the code. Verified  the wakeserver actually works when working on heroku. I am running the server on a raspberry pi - running on IP <IP_ADDRESS> and the server runs at port 8080 . I entered http://<IP_ADDRESS>:8080, http://<IP_ADDRESS> in the extension - but always get connection errors. Any suggestions on this @Semro ?

@Semro - Yes - I am able to open the url in the browser. but the extension is not able to connect to the server. It says connection error.

Disabling and re-enabling the extension made it work. Thanks @Semro for the help here on selfhosting config.


bug: The highlighting is inconsistent between vscode and nvim

Did you check docs and existing issues?

[X] I have read all the vscode-neovim docs
[X] I have searched the existing issues of vscode-neovim
[X] I can reproduce the issue with an empty init.vim/init.lua and no other vscode extensions (when applicable)

Neovim version (nvim -v)
0.9.4
Operating system/version
window 11
Describe the bug
The highlighting is inconsistent between vscode and nvim. I have noticed this issue while using flash.nvim.
VSCode vs NeoVim

Pressing "l" jumps to position "r", while pressing "r" jumps to position "l".
Steps To Reproduce
Install flash.nvim

Open fileworld0
world1
world2
world3
world3
world4
world5
world6
world7
world8
world9
worlda

type gg0/world

Expected Behavior
Highlighting is consistent with nvim.

Debugging found that the grid_line event contained incorrect data. It seems to be a problem with nvim?

test patch
--- a/src/highlight_manager.ts
+++ b/src/highlight_manager.ts
@@ -70,6 +70,13 @@ export class HighlightManager implements Disposable {
                         }
                         const lineText = editor.document.lineAt(highlightLine).text;
                         let vimCol = col + gridOffset.character;
+                        console.log(
+                            highlightLine,
+                            lineText,
+                            cells.reduce((p, n) => {
+                                return p + n[0].repeat(n[2] ?? 1);
+                            }, ""),
+                        );

                         // remove cells from statuscolumn
                         if (vimCol < 20) {

seems to be a problem with nvim?

try latest Nvim development version


Add Branding to App Generated Emails?

Hi there,
Is it possible to add branding to the emails an adopter receives when they adopt one or more drains? For example we'd like to include the logo so it better matches the Salesforce generated emails.
Thanks!

For sure, can you describe what you would like to see in them?

hi @jszwedko and welcome back from your travels!
i think @FrankieBurton was wanting to add the SFPUC/Adopt a Drain logo to the outbound emails. we are also looking at refreshing those emails, so we can hold off on this for now.

@frankieburton do you want to close this issue since you created two new issues? thanks.


Fixes #3008 - scroll thumb correctly positioned when dragging

As per title, fixing incorrect positioning of scroll thumb when dragging.

Hi! Can you please revert changes from dist/ folder files? Only src/ files can be changed

Thanks, merged, manually


Support tilde token for concatenation of string literals

My read of the RELAX NG Compact Syntax spec indicates that two string literals should be concatenated when immediately surrounding a tilde.  This is not currently supported by rnc2rng but could be useful.  As one example, Appendix B to RFC 4278 (ATOM syndication) utilizes several tildes and concatenation would be expected.  PR to include support in parser.py and add a simple test.

Coverage increased (+0.1%) to 89.815% when pulling 89290eb29bf9a3b5c6ca0fae3c72b15c24cee957 on wamuir:master into 27ec83871a945d5a9295563c28f133208a7a0ba0 on djc:master.

Coverage increased (+0.1%) to 89.815% when pulling 89290eb29bf9a3b5c6ca0fae3c72b15c24cee957 on wamuir:master into 27ec83871a945d5a9295563c28f133208a7a0ba0 on djc:master.

Coverage increased (+0.1%) to 89.815% when pulling 89290eb29bf9a3b5c6ca0fae3c72b15c24cee957 on wamuir:master into 27ec83871a945d5a9295563c28f133208a7a0ba0 on djc:master.

Great, thanks!  I made the operator change (left a comment on the first) and squashed commits.

Merged! I've also pushed a new release to PyPI, thanks.
I'd like to add you to the AUTHORS file if you don't mind passing me a real email address (or make a PR yourself).

Sure!  Address is<EMAIL_ADDRESS>

Added in d96073e.


A few questions about the project...

Good afternoon! Although I haven't used your project yet, I have a few questions to ask you. I'm Italian too like you but I will try to structure the text in English anyway. I'll start by saying that for some time now I've been looking for something that would allow me to automatically have offers sent to me regarding specific products of interest to me. I therefore came across this project of yours which seems very interesting to me, having also had the opportunity to have a field test of what it can do (thanks to your Telegram channel). However, as I said before, I have doubts about the project in general:

First of all, I'll start with a very generic question; Can you run into any problems when scraping on Amazon? Is it deemed illegal according to their ToS?

Still regarding the Amazon ban problem, I noticed in your code that you use user-agents which I think are used to "pretend" that the requests come from different devices. Would it be possible to have fake-useragents that rotate even more than the ones you wrote?

From other projects, which I cite HERE I noticed how proxies are also used, given the possibility of IP bans. In your project, do you think it would be useful to have a similar function?

Finally, where have you hosted your project to run it consistently?

I apologize for the many questions but I wanted to be sure before using it. Hoping not to cause you too much trouble, I wish you a good day!

Hello, thanks for your interest! I'll respond in points:

Honestly I do not know if scraping is against Amazon's TOS, but since you are not logging in, it should not be a problem, surely it is not illegal, also, looking at their robots.txt they are not asking to not scrape product pages.
Finally based on my experience, the bot is running on a VPS from about a year ago and it always worked.
In any case we are doing only a few number of requests: some for collecting a set of discounted products (every 2 hours) and one request for each item sent.
I think rotating user agents is meaningless: it should be fine always navigating from the same device, also that request is part of the 2 hours batch.
Also I guess that it is needed to be sure to get the correct page layout (and rotating user agent maybe could change the xpaths).
I think it could be implemented, but, as said, in our experience there have been no issues so far.
If you would like to create a PR, I'll review them in free time.
It is running in an Oracle Always Free tier VPS.

Good evening.

a prepaid card, could you tell me if it is also accepted?

Honestly I do not know. Just try or google it.

if your execution is based on Cron Job or something else

It is based on a cron job (*/20 8-23 * * * cd ~/amazon-deals-telegram-bot && ./bootstrap.sh >> log.log 2>&1) and docker, in the repo's patch file you can see what to change in order to make it work.

if your VPS has a graphical interface, and if it can be inserted

It doesn't have a GUI, but you can install a window manager & co. and use it through remote desktop


e2e: Private projects

e2e for https://github.com/taskany-inc/issues/issues/1810

Part I: Private Projects
Main:

Create Project. Create Goal.
Check it's visibility for you and Person A
Add Person A to "Access" in Settings
Check project and goals visible for you and Person A and not available for Person B

Visibility cases:

Page/direct link (Project/Goal)
Dashboard page
Goals page
Explore page (project)
Global Search (Project/Goal)
Criteria autocomplete (Goal)
Deps autocomplete (Goal)
Transfer autocomplete (Project)
Partner Project autocomplete (Project)

Criterias and dependencies

Create several extra goals in Private project
Add one of them to criteria list
Check criteria list (goal should be hidden from Person B and other item should be visible for both user)
Add another one to dependencies list
Check deps list (goal should be hidden from Person B and other item should be visible for both user)

Part II: Personal Goals
Base

Check new menu item in "Create" menu
Open modal. Check project field is not exist.
Create personal Goal.
Check new project Personal for $Username
Project should be Private (check part I)
Goal participants is not editable

Goal Transfer

Change goal owner
Goal should be moved to other private project
Previous project should be removed (check direct page)
Repeat this steps for Edit Modal and for Goal Preview field

Search visibility
personal project should be hidden from:

Explore page
Global Search
Transfer autocomplete (Project)
Parent Combobox (for Goal Create modal)


(wave) Numerical scheme/shader not efficient

Looking at the source of (the really cool exp)
http://madebyevan.com/webgl-water/
found out that the shader for the model is

this.updateShader = new GL.Shader(vertexShader, '\
    uniform sampler2D texture;\
    uniform vec2 delta;\
    varying vec2 coord;\
    void main() {\
      /* get vertex info */\
      vec4 info = texture2D(texture, coord);\
      \
      /* calculate average neighbor height */\
      vec2 dx = vec2(delta.x, 0.0);\
      vec2 dy = vec2(0.0, delta.y);\
      float average = (\
        texture2D(texture, coord - dx).r +\
        texture2D(texture, coord - dy).r +\
        texture2D(texture, coord + dx).r +\
        texture2D(texture, coord + dy).r\
      ) * 0.25;\
      \
      /* change the velocity to move toward the average */\
      info.g += (average - info.r) * 2.0;\
      \
      /* attenuate the velocity a little so waves do not last forever */\
      info.g *= 0.995;\
      \
      /* move the vertex along the velocity */\
      info.r += info.g;\
      \
      gl_FragColor = info;\
    }\
  ');

which means to store the height in the red channel, and its derivative in the green channel, resulting in the following scheme:
lapl = 4(av(h)-h)/dx2

dh/dt = v
dv/dt = lapl(h)
=> staggered FD
(h'-h)/dt = v'
(v'-v)/dt = lapl(h)
v' = v + lapl(h)*dt
h' = h + v'*dt

so two improvements can be learned from here:

render old iteration to green channel and new result to red channel
use this other scheme for simplicity (initial condition and timestep)

See this other discussion
http://stackoverflow.com/questions/18167797/three-js-retrieve-data-from-webglrendertarget-water-sim


Add orca timeout

Part of https://github.com/plotly/streambed/issues/11092

[ ] Tested on On-Prem

Looking good so far :ok_hand:

@etpinard Please review.

Nicely done :dancer: (once docker-build-and-push passes :smirk: )


Improve history

For the moment, the history feature is very basic and not very powerful, I think we can improve it by adding some features :

Keep full history even if previous is used
Add a next feature
keep trace for every url opened with all methods (in case of submit form, following links, etc...)

I'd be happy to work on this feature. It would help me to clarify a few things first.

Can you clarify what you mean by "Keep full history even if previous is used"? I understand that to mean that a chronological list or all GET responses should be stored in the Browser._history list.
I propose that the Browser._history object be modified to contain the requests.Response object instead of the URL. This could then function as a cache of the GET responses and would make the behavior of the Browser.back method behave more like a real browser.
I propose that the Browser.back method not reload the page/request. The new behavior would be to iterate backward through the Browser._history  list of GET request.Response objects and set the appropriate Browser variables to make the previous page the active page (This would not modify the history unless the active page was re-requested).
I propose that a Browser.reload or Browser.refresh method be implemented that would re-request the active page (this would append the response of the re-request to the history list).
Can you clarify what you mean by "Add a next feature"? Would this do the reverse of the Browser.back method (move forward one response in the history and make that response the active page)? I would implement this as Browser.foward.
Can you clarify what the trace should contain? I understand this to be a list or all Request.response objects for all HTTP requests (GET, POST, PUT, etc.) similar to the Browser._history list but for all HTTP request methods.

Let me know if you have any feedback and then I'll start making the changes.

Hi maowen ! Happy to see you again !
I've already make a work around for the historic, not released yet only on github, you can check it here: https://github.com/karec/oct-browser/blob/master/octbrowser/history.py
But it's only a very basic work around
I will try to answer your questions :

Actually the previous method is very basic, and if it's used you can not move forward, that's not realy usefull
It is a great idea , but I fear that for some projects, the memory usage is too high, for example in the OCT project , the goal is to open a very large amount of content. But I think we can make it simpler and more modular : if we use an object as historical , we can create an abstract class, and implement the historic class several times , for example a simple who keep a list URLs, let's says BasicHistoric, and advanced that keeps complete response from  requests, let's says CachedHistoric
Same as 2
Great idea, and very simple to implement
This is it ! Sorry for my english, not perfect yet ^^'
Same as 2

I hope that was helpful, but I think that we can make a mix of those ideas, and make the browser more extensible. I realy think we should implement the history property as a class, and let's the user create a whole new historic class if needed. Plus we can implement multiples historic in the core, we just need to define an abstract class and inherit from it. I will take a look at it and update my work for the base

Karec,
Thanks for answering my questions! I see now that you already started history.py. Sorry I didn't notice before. I still have a couple more questions. I'm new to collaboration on github. Let me know if you'd prefer I address my questions some other way (e.g. just make the changes I think are best and submit a pull request).

If we change the History class to use a deque with a maxlen this would provide the user an easy way to limit the amount of memory used by the history cache. Do you think it's best to make the default mode of the core browser history to only store the url string? Or, would this be an adequate enough solution to allow the history to always cache the request.Reponse objects? I like the idea of caching the last n request.Reponse objects in history because it would make octbrowser behave very similar to a real browser (no refresh when going forward/back in history). If you believe it is best to only store the url string in history by default that is how I'll implement it. Just let me know what you decide. Here is the change that would to allow for storing the request.Response with memory usage constraints:

from collections import deque

MAXLEN = 10 # or MAXLEN = None for unlimited deque length

class History(object):
    def __init__(self, maxlen=MAXLEN):
        self.current = 0
        self.history = deque(maxlen=maxlen)

    ...

It would help me to define the interface between the elements of History.history and the core browser.Browser. Currently, the browser expects the history items to be url strings. If we also wish to support a CachedHistory abstract class then in that case the history items would likely be request.Response objects. So my question is, would it be better to have browser.back/browser.forward handle the cases for different types of history elements or should we define required properties of a history element? I prototyped the code for the two different case below:

Implementation that handles explicitly handles each supported history item type:

    def back(self):
        """Implementation that explicitly handles each supported history item type"""
        try:
            item = self._history[-1]
            # String url history item
            if issubclass(item, str):
                resp = self.open_url(item, back=True)
                del self._history[-1]
            # requests.Response history item
            elif issubclass(item, requests.Response):
                self._url = item.url
                resp = self._parse_html(item)
                return resp
            else:
                raise Exception('Invalid history item')
            return resp
        except IndexError:
            raise Exception("No history, cannot go back")

* Implementation that requires history item to have a `item.url` attribute:

    def back(self):
        """
        Implementation that requires history item to have a url attribute

        If the history item contains the cache content as well then it won't require
        a reload of the page.
        """
        try:
            item = self._history[-1]
            try:
                url = item.url
            except AttributeError:
                raise Exception('History item must have url attribute')
            self._url = item
            try:
                resp = self._parse_html(item)
            except AttributeError:
                resp = self.open_url(item, back=True)
                resp = self._parse_html(resp)
            return resp
        except IndexError:
            raise Exception("No history, cannot go back")

Thanks for letting me contribute and being so welcoming! Also, your english is very good!
Mark

maowen,
Thanks again for your work !
I think github issue is the right tool for discussing about a feature, so we can keep a trace of all our work around in the same place, but if you want to show more complex code example, you can use gists ! (https://gist.github.com/) It's pretty simple to use and more comfortable than markdown ;)
Pull requests are great too ! But since we are in the reflection part for this feature, I think the issue is more appropriate :)
I will try to answer your questions :

I really think that the idea of a CachedHistory is a very good solution, plus, your solution for limited  the number of items in history is really good ! But I think we should also let the user decide, and even more, create his own history system ! That could be great for example if you use a library for requests that already cache the response. In that case why store again the response objects ? But I agree with you, my work around for this history isn't permissive enough for extending or create new historic and I will update it ASAP.

I think we can do even simpler ! The solution of returning a request.Response object seems perfect, event for a historic that only use url ! Let me explain it :

The octbrowser already depends on the requests library, so we can say that an implementation of the HistoryBaseClass (for example) must return a request.Response object in all case, and if it only stores the url, the historic will request that url itself and return the response.
With this logic the browser back and forward methods will be pretty simple, for example we can have this for the back method :
def back(self):
    """Basic implementation for back method of the browser
    """
    response = self._history.back()
    parsed_response = self._parse_html(response)
    self._url = parsed_response.url

So that's it, three lines, and if the historic raise an exception, the user can catch it in his own code ! And if the historic does not return a correct request.Response object, an exception will be raised
What do you think of this solution ?

Fortunately the request.Response object already has an url property

Thanks for your contribution ! I really appreciate !
Karec

Karec,
Yes! I do like the concept of requiring the history to return a request.Response object. I also think we should take it one step further and define both the inputs and outputs of the History class to be request.Reponse objects/sublcasses. For example:
    def open_url(self, url, data=None, back=False, **kwargs):
        """Open the given url"""
        if data:
            # No history is stored for POST requests
            response = self.session.post(url, data, **kwargs)
            self._url = url
        else:
            response = self.session.get(url, **kwargs)
            if not back:
                assert issubclass(response, request.Response) # Unnecessary
                self._history.append_item(response)
            self._url = response.url
        response = self._parse_html(response)
        response.connection.close()
        return response

    def back(self):
        """Basic implementation for back method of the browser"""
        response = self._history.back()
        assert issubclass(response, request.Response) # Or let the user catch any exceptions
        parsed_response = self._parse_html(response)
        self._url = parsed_response.url

Using request.Response objects for both the inputs and outputs I believe is  a very good way to architect the browser interface with the History class.
The other thing I think we should define is the default behavior of the octbrowser history. It will be great to use a HistoryBase class so users can override the default History implementation to fit there needs. I personally would like to have the default behavior be as similar to a real browser as possible.
These are the two potential solutions that I can think of that provide browser-like default behavior. The third option is simple but is not guaranteed to provide a good representation of the historic request response:

Cache the full request.Response objects in the history and return them as
appropriate when the browser.back/forward methods are called.

Cache the request.Request or request.PreparedRequest objects (these are contained inside of the request.Response). When the user calls the back/forward method, the history class resubmits the cached request.Request in a GET request and returns the resulting request.Response.

Cache the request.Response.url in the history and return the reloaded content using requests.get(url) when the history.back/forward methods are called.

The problem I see with only saving the URL in the default history is that there
will no way to correctly reproduce the GET requests from the history. This is because the GET requests include the session.headers, session.cookies, and any request specific headers (e.g. browser.open_url('http://github.com', headers={'Referer': 'http://www.google.com'})). In my opinion all of these should be cached so the history is an accurate representation of historic GET requests.
Which solution (1, 2, or 3) do you think is best for the default history behavior? I suppose the beauty of the design is it is very easy for the user to change between any of those history implementations list above or any others that they desired. Implementing the history as a HistoryBase class really is a great idea!
One last question, how do you want me to help implement these changes? I'm happy to make the changes in both browser.py and/or history.py as well as adding the appropriate tests. Just let me know where I can be helpful.
Thanks!
maowen

@maowen,
I've committed a little work around for the history, you can check the commit for all details but here is the summary :

New structure for octbrowser folder, history now has its own folder
I've created the BaseHistory class. As you suggested the BaseHistory will use requests.Reponse objects for both inputs and outputs
Also  the history property can now be set to None in the browser and I've added the associated exceptions. So if _history is set to None but a method that require it is called, then the HistoryIsNone exception will be raised. But with this, users that don't need history can just set it to None and the open_url method + the submit_form methods won't call the _history.append_item
I've removed the back parameter in the open_url method, since the history object will take care of open urls / return response objects, I think it's a nonsense to keep that parameter

I think that's it ! It would be really great if you can take care of the CachedHistory, and I agree with you : it must be the default behavior for the history :)
Also for its implementation I think your 1st proposition is the best : cache the full requests.Response objects and return them.
I think the UrlOnly historic can wait for the moment since it's not a typical browser historic but can be helpful for generating report of all pages visited for example. And with this pattern it will be pretty easy to add new History classes !
I will continue to work on the browser side / BaseHistory and try to make regular commits for it
Thank again for your contribution !
Karec

Karec,
Do you think that making the CachedHistory class the default mode for the browser is a good idea? Or, do you prefer that history 'None' is the default? If we did make CachedHistory the default mode, one approach I can think of would be to remove history=None from the required Browser initializer args. For example,
from octbrowser.history.cached import CachedHistory

class Browser(object):
    def __init__(self, session=None, base_url='', **kwargs):
        try:
            self._history = kwargs['history']
        except KeyError:
            self._history = CachedHistory()

What do you think?
maowen

@maowen
Yes I think making the CachedHistory class the default mode for the browser is the best idea :)
I think your example is good but why not making it more simple ? for example :
def __init__(self, session=None, base_url='', **kwargs):
    self._history = kwargs.get('history', CachedHistory)()

In this way we take care of initialisation of the history inside the __init__ method of the browser
What do you think of this solution ?
karec

@maowen
I think that making the CachedHistory as the default mode is the best solution for the browser !
I like your example, but instead of use a try...except block, I think we can use the .get() method on kwargs, like this :
def __init__(self, session=None, base_url='', **kwargs):
    self._history = kwargs.get('history', CachedHistory())

What do you think of this solution ?
Karec

Karec,
I like it! That's a much cleaner way of doing it.
I noticed that the documentation needs to be updated some to reflect the changes to we've made. If it's okay with you I'll work on improving the docs some this week.
maowen

@maowen,
It would be a pleasure ! But if you don't feel to write it I can do it too :)
I've already made some updates to some docstrings in the code, mostly adding parameter type.
It would be really great to update the documentation before making a new release ! But once again, I can do it too :)
I will work on updating the README and the changelog too, and maybe (or maybe for the next release) improving the form management in the browser.
But I think, and many thanks to you, than for the next release we can leave the "beta" status since we now have full tests and very good test coverage !
Thanks again for your contribution !
Karec


fix(alerts-dashboard): consider only alert triggers with anomaly setup

This was causing an issue where if anomaly was manually disabled by
setting anomaly_params to NULL, getting the time series frequency
would fail.

@Samyak2 I think let's also try to have some provision in the code for disabling/pausing the anomaly for a given KPI after running that for a few weeks without breaking/affecting things elsewhere.
Just give it a thought and let me know if we need to have changes at some other places as well.
cc: @varunp2k

@manassolanki I have looked at a uses of anomaly_params throughout the codebase, everything seems fine - the only places where we have used it are either in anomaly, alerts (only in triggers - so it's only run along with anomaly) or anomaly_data_view (which is what sets anomaly_params).
We could add an endpoint to disable anomaly by setting the anomaly_params to None. There is a run_anomaly column in the kpi table, but that isn't being used anymore. Maybe we should switch to that instead of relying on anomaly_params being None. This will be for v0.10.0, I'm merging this now.


Fix ABI serialization

Changes from eospy to eospyabi to support serialization of actions.
Bump certain python libraries

Added redrop functionality & leniency if API is 1-2 days behind.


Change deadzone to have boundary mean outside shape

Having the boundary of the DeadZoneShape mean that it is outside is in line with #395. This also means that any DeadZoneShape that has a volume of 0 will let all input values be read.

Can you add a quick set of unit tests for this please?

Ya, I add a test to make sure all (0, 0) with a 0 volume get the input


Connect bookstore app to API

In this project milestone, I connect my bookstore application to an existing API to create and remove books from a server.

I use axios as well as createAsyncThunk to make API calls.
I modify reducer logic to include HTTP requests to the Bookstore API.

The application functions just as before.

Hey @AmaduKamara Thank you so much for your time and feedback


Update Bottom Spelling Error

This is to correct an error in Conditional formatting that was preventing "Bottom" from working.

Ah, got it! Excellent catch, thanks for the PR!
https://github.com/dfinke/ImportExcel/issues/1231


Update index.md

@adamtuliper @MarkMichaelis

I just had the one comment about the periods. Otherwise, LGTM.


Promote PodShareProcessNamespace to stable

Updates website for kubernetes/kubernetes#84356 to promote PodShareProcessNamespace to GA.

do-not-merge until kubernetes/kubernetes#84356
/hold

/milestone 1.17

The k/k PR now has approval, remove holding
/hold cancel

/assign @chenopis

Just a reminder about the last Docs deadline - 22nd Nov, by which this PR needs to be merged!

@verb @zacharysarah How can we make sure we reach out to the right reviewer for the tech review?

@verb @zacharysarah How can we make sure we reach out to the right reviewer for the tech review?

@daminisatya I'm just waiting for approval. My previous comment about versioning isn't a blocker for this release.
@chenopis This PR is a simple s/beta/stable/ and should be a quick review.

@daminisatya Can @verb recommend a reviewer from the relevant SIG?
/unassign @chenopis
/assign @sftim

/lgtm
/approve


Remove deprecated parameter logic

This is tough to break up into smaller pull requests since it touches every level of stacker.
This moves everything over to variables, some notable changes:

you can no longer pass -p on the command line, this has been replaced with -var
parameters are no longer recognized within stack definitions
Support for PARAMETERS  and LOCAL_PARAMETERS has been dropped

Would it be possible to make a stable release before landing this? Otherwise I'll have to migrate a bunch of stacks from the old parameters to get other bug fixes.

@danielkza yes! thanks for reminding me, this should be going into the release-1.0 branch, not master.


chore: Add styles for selected item in TreeView

Current dependencies on/for this PR:

main

PR #2619   👈

This comment was auto-generated by Graphite.


Wtf?

[RuntimeException]
The autoloader expected class "waylaidwanderer\SteamCommunity\TradeOffers"
to be defined in file "/servers/www/dev.a-vd.pro/vendor/waylaidwanderer/p
hp-steamcommunity/TradeOffers.php". The file was found but the class was n
ot in it, the class name or namespace probably has a typo.
I use symfony 3

This is most likely an issue with your Symfony config. Try googling "The autoloader expected class to be defined in file" or "The file was found but the class was not in it, the class name or namespace probably has a typo.".
I've used this library myself in a project by installing it via Composer with no issues.

I cant find solution...
I googled this problem. It is recommended to change the examples of your project (my bad in english, sry for reopen)

What does your config.yml look like?

--
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
Put parameters here that don't need to change on each machine where the app is deployed
http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
locale: ru
framework:
secret:          "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form:            ~
csrf_protection: ~
validation:      { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale:  "%locale%"
trusted_hosts:   ~
trusted_proxies: ~
session:
handler_id:  ~
save_path:   "%kernel.root_dir%/../var/sessions/%kernel.environment%"
fragments:       ~
http_method_override: true
Doctrine Configuration
doctrine:
dbal:
driver:   pdo_mysql
host:     "%database_host%"
port:     "%database_port%"
dbname:   "%database_name%"
user:     "%database_user%"
password: "%database_password%"
charset:  UTF8
unix_socket: /var/run/mysqld/mysqld.sock
parameters.yml
parameters:
database_host: XXX
database_port: null
database_name: XXX
database_user: XXX
database_password: XXX
mailer_transport: smtp
mailer_host: XXX
mailer_user: null
mailer_password: null
secret: XXXX
routing.yml
app:
resource: "@AppBundle/Controller/"
type:     annotation
services.yml
parameters:
parameter_name: value
services:
service_name:
class: AppBundle\Directory\ClassName
arguments: ["@another_service_name", "plain_value", "%parameter_name%"]
--

Try renaming the TradeOffers.php file's class from waylaidwanderer\SteamCommunity to waylaidwanderer\SteamCommunity\TradeOffers, since that's what Symfony seems to be looking for.

Its impossible in lunix. in 'SteamCommunity'
├── TradeOffers
│   ├── Trade
│   │   ├── TradeAsset.php
│   │   └── TradeUser.php
│   ├── ......
└── TradeOffers.php
TradeOffer path and TradeOffer file (without.php) can not coexist in one path.
Or have I misunderstood your advice?

Change the namespace of the file, I mean.

No results...
I went to do a new project, with blackjack, symfony and hookers

Sorry, no clue then. Let me know if you figure out the issue and it's something I can fix on my end.

Change encode project to utf-8 please...
Problem in encoding ur utf16...

Done, thanks :)


style: use tabs in place of spaces

👨💻 Changes proposed
This change reverts the following PR:

#73

Tabs are much more fitted for indentation (opinion and open for discussion). It also allows users to customize the indentation width on GitHub which spaces can't do. The default render width of tabs on GitHub is 8 but can be changed by the user for themselves from settings > appearance > Tab size preference or temporarily by using ?ts=<size> at the end of the url.
Since, we had used tabs originally but converting them to spaces created merge conflicts in old PRs. This PR will fix that too.

@iShibi thank you for explaining that.
When you put it that way, it makes sense to use tabs.
I would like to wait for other reviewers to see what they think though.
@subhoghoshX @rohitdasu?

and @mark-omarov in case you want to give your two cents on this

Thanks. I don't think it's a big deal that worth a big discussion, both are viable choices, and with configured environment it comes down to simply choosing one over the other and sticking to it. I feel like if @iShibi has an opinion on it - I don't see any reasons not going his way, and configuring tabs as the main way of indentation for the project.

I agree with @mark-omarov  👍

I see your point. I'm not too much against it either. But prettier uses spaces by default. I don't understand why the custom option was added in the config file in the first place. I don't usually see tabs enabled in any big project. Could you suggest a few big projects where it's enabled?
Adding ?ts=<size> is tiresome. And not many people are aware of changing it in settings, and even if some do, I don't think anyone would do it, as it affects the appearance of all the repos.
The only option is to set the tab indentation size for this particular repo only in an editorconfig file which I think PR #79 already addresses.
It's waste of time to argue whether tabs or spaces are better. There have been long discussions before, some of them spanning 2-3 years, with no resolution so far :laughing:  So I'm going to just approve it. Feel free to merge it.


Typed Webhooks need to be implemented

The Moov API is impossible to use without webhooks. Many synchronous calls actually fail back to async, in which case you need a webhook.
All typed webhooks need to be implemented.
https://docs.moov.io/guides/webhooks/webhook-events/

PRs being merged into feature branch: https://github.com/moovfinancial/moov-go/tree/feat-webhooks


SkeletonIK bone snapping near full chain extension - max_iterations and min_distance seem to have no effect

Godot version
3.3.2.stable, 3.2.stable
System information
Windows 10, GLES 3
Issue description
In a simple 3 bone chain (example: top leg, bot leg, foot), moving the target slowly from full extension to contraction (and vice versa) will display clear snapping artifacts, as seen below. This happens both in editor and in a running game. It happens with magnet disabled too, but it's a bit different, I will focus on the issue when magnet is enabled as this is Godot's pole target for IK and very common to use.
The properties 'max_iterations' and 'min_distance' seem to have no effect in the solver, not just regarding the snapping, they seem to do nothing at all, at least nothing visible. I see no difference between 'max_iterations = 0' or 'max_iterations = 500', same thing with 'min_distance'.
Steps to reproduce
For this example I'm using the 3D IK Demo's model. All I've done is add a SkeletonIK node and a target node, and set the properties.
Open ik_issue.tscn, enable IK after selecting the SkeletonIK, then slowly move the target up and down, passing through the point of full extension of the chain.
Minimal reproduction project
IK snapping issue.zip
Tree:

Properties:

Demonstration of issue - notice the bones fast movement/snapping several times before smoothing out:
https://user-images.githubusercontent.com/79580741/121268502-021d2680-c8b6-11eb-9057-6d33e336ca8e.mp4

Somewhat related, because I'm unable to use max_iterations and min_distance to improve performance, I run into substantial performance issues with many ( > 60 ) SkeletonIK nodes running in a scene.
I intended to have many NPCs being active at once, in my case, 15 NPCs in an otherwise barren scene leaves me at ~85 FPS, if IK is not running the scene runs at ~350-400 FPS.
If there is a way to improve IK performance, please let me know. Hopefully it improves in the future.


Forced-subtitles not being detected (?)

Hi Don,
Hope you're well and enjoying the summer?
Quick issue has me stumped and probably user-error but I've run a test transcoding of the "The Da Vinci Code" DVD for a friend and the new ruby scripts seem to be missing the forced-subtitle sequences when .mkv/.mp4 files are produced. (Running the latest Ruby scripts with HandBrakeCLI 0.10.2)
I did two quick tests to check that the forced subtitles were burned in for the French sequence in Ch. 3:
Test 1
transcode-video --crop 74:74:0:0 --quick --chapters 3 --mp4 --force-subtitle scan 'The Da Vinci Code (2006).mkv'
Test 2
transcode-video --crop 74:74:0:0 --quick --chapters 3 --mp4 --burn-subtitle scan --force-subtitle scan 'The Da Vinci Code (2006).mkv'
HandBrakeCLI failed to detect a suitable candidate for forced-subtitles on both of the above.
[15:53:31] Subtitle track 2 (id 0x2) 'English': 71 hits (19 forced)
[15:53:31] Subtitle track 3 (id 0x3) 'English': 80 hits (0 forced)
[15:53:31] No candidate detected during subtitle scan

The following did work (explicitly telling HandBrakeCLI to scan for and burn them in):
Test 3
transcode-video --crop 74:74:0:0 --quick --chapters 3 --mp4 -H subtitle=scan -H subtitle-forced -H subtitle-burned --dry-run 'The Da Vinci Code (2006).mkv'
Test 4
Similarly, the older bash scripts worked when the following was run:
transcode-video.sh --find-forced burn --chapters 3 --fast 'The Da Vinci Code (2006).mkv'
In tests 3/4, HandBrakeCLI picked up the following and correctly burned-in the forced subtitles.
[14:36:24]  * subtitle track 1, English (track 2, id 0x2) Picture [VOBSUB] -> Render/Burn-in, Forced Only
Have I used the incorrect settings on the Ruby scripts or is there a bug lingering somewhere?
Many thanks,
Joe Hurley

Some outputs for you:
.mkv file being used
General
Unique ID :<PHONE_NUMBER>0636362737018229354878173197 (0x1EE6295FAEFD5CAEB4A286E5CF23800D)
Complete name : /Volumes/4TB Hitachi/Rips/The Da Vinci Code (2006).mkv
Format : Matroska
Format version : Version 2
File size : 5.22 GiB
Duration : 2h 22mn
Overall bit rate mode : Variable
Overall bit rate : 5 237 Kbps
Movie name : Davinci
Encoded date : UTC 2015-07-07 11:37:23
Writing application : MakeMKV v1.9.4 darwin(x86-release)
Writing library : libmakemkv v1.9.4 (1.3.0/1.4.1) darwin(x86-release)
Video
ID : 1
Format : MPEG Video
Format version : Version 2
Format profile : Main@Main
Format settings, BVOP : Yes
Format settings, Matrix : Custom
Format settings, GOP : M=3, N=12
Format settings, picture structure : Frame
Codec ID : V_MPEG2
Codec ID/Info : MPEG 1 or 2 Video
Duration : 2h 22mn
Bit rate mode : Variable
Bit rate : 4 685 Kbps
Maximum bit rate : 9 800 Kbps
Width : 720 pixels
Height : 576 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 25.000 fps
Standard : PAL
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Interlaced
Scan order : Top Field First
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.452
Time code of first frame : 00:59:58:12
Time code source : Group of pictures header
GOP, Open/Closed : Open
Stream size : 4.67 GiB (89%)
Language : English
Default : No
Forced : No
Audio
ID : 2
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Format settings, Endianness : Big
Codec ID : A_AC3
Duration : 2h 22mn
Bit rate mode : Constant
Bit rate : 448 Kbps
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Compression mode : Lossy
Stream size : 457 MiB (9%)
Title : Surround 5.1
Language : English
Default : Yes
Forced : No
Text #1
ID : 3
Format : VobSub
Codec ID : S_VOBSUB
Codec ID/Info : Picture based subtitle format used on DVDs
Language : English
Default : Yes
Forced : No
Text #2
ID : 4
Format : VobSub
Codec ID : S_VOBSUB
Codec ID/Info : Picture based subtitle format used on DVDs
Language : English
Default : No
Forced : No
Menu
00:00:00.080 : en:Chapter 01
00:06:17.680 : en:Chapter 02
00:12:24.560 : en:Chapter 03
00:16:39.920 : en:Chapter 04
00:23:41.200 : en:Chapter 05
00:27:46.760 : en:Chapter 06
00:38:16.320 : en:Chapter 07
00:39:59.960 : en:Chapter 08
00:46:24.280 : en:Chapter 09
00:53:19.040 : en:Chapter 10
00:57:16.320 : en:Chapter 11
01:02:05.360 : en:Chapter 12
01:10:06.320 : en:Chapter 13
01:16:13.480 : en:Chapter 14
01:21:05.160 : en:Chapter 15
01:25:47.120 : en:Chapter 16
01:31:05.000 : en:Chapter 17
01:37:33.680 : en:Chapter 18
01:43:35.880 : en:Chapter 19
01:47:10.320 : en:Chapter 20
01:55:10.440 : en:Chapter 21
02:00:25.360 : en:Chapter 22
02:06:04.920 : en:Chapter 23
02:11:28.280 : en:Chapter 24

Test 1
Joes-MBP:Rips joe$ transcode-video --crop 74:74:0:0 --quick --chapters 3 --mp4 --force-subtitle scan 'The Da Vinci Code (2006).mkv'
invalid framerate 25.0
[15:53:30] hb_init: starting libhb thread
HandBrake 0.10.2<PHONE_NUMBER>) - Darwin x86_64 - https://handbrake.fr
8 CPUs detected
Opening The Da Vinci Code (2006).mkv...
[15:53:30] CPU: Intel(R) Core(TM) i7-4960HQ CPU @ 2.60GHz
[15:53:30]  - Intel microarchitecture Haswell
[15:53:30]  - logical processor count: 8
[15:53:30] OpenCL device #1: Intel Iris Pro
[15:53:30]  - OpenCL version: 1.2
[15:53:30]  - driver version: 1.2(Jun 10 2015 16:35:16)
[15:53:30]  - device type:    GPU
[15:53:30]  - supported:      YES
[15:53:30] OpenCL device #2: NVIDIA GeForce GT 750M
[15:53:30]  - OpenCL version: 1.2
[15:53:30]  - driver version: 10.4.2 310.41.35f01
[15:53:30]  - device type:    GPU
[15:53:30]  - supported:      no
[15:53:30] hb_scan: path=The Da Vinci Code (2006).mkv, title_index=1
libbluray/bdnav/index_parse.c:162: indx_parse(): error opening The Da Vinci Code (2006).mkv/BDMV/index.bdmv
libbluray/bdnav/index_parse.c:162: indx_parse(): error opening The Da Vinci Code (2006).mkv/BDMV/BACKUP/index.bdmv
libbluray/bluray.c:2182: nav_get_title_list(The Da Vinci Code (2006).mkv) failed
[15:53:30] bd: not a bd - trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can't open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[15:53:30] dvd: not a dvd - trying as a stream/file instead
Input #0, matroska,webm, from 'The Da Vinci Code (2006).mkv':
  Metadata:
    title           : Davinci
  Duration: 02:22:42.52, start: 0.000000, bitrate: N/A
    Chapter #0.0: start 0.080000, end 377.680000
    Metadata:
      title           : Chapter 01
    Chapter #0.1: start 377.680000, end 744.560000
    Metadata:
      title           : Chapter 02
    Chapter #0.2: start 744.560000, end 999.920000
    Metadata:
      title           : Chapter 03
    Chapter #0.3: start 999.920000, end 1421.200000
    Metadata:
      title           : Chapter 04
    Chapter #0.4: start 1421.200000, end 1666.760000
    Metadata:
      title           : Chapter 05
    Chapter #0.5: start 1666.760000, end 2296.320000
    Metadata:
      title           : Chapter 06
    Chapter #0.6: start 2296.320000, end 2399.960000
    Metadata:
      title           : Chapter 07
    Chapter #0.7: start 2399.960000, end 2784.280000
    Metadata:
      title           : Chapter 08
    Chapter #0.8: start 2784.280000, end 3199.040000
    Metadata:
      title           : Chapter 09
    Chapter #0.9: start 3199.040000, end 3436.320000
    Metadata:
      title           : Chapter 10
    Chapter #0.10: start 3436.320000, end 3725.360000
    Metadata:
      title           : Chapter 11
    Chapter #0.11: start 3725.360000, end 4206.320000
    Metadata:
      title           : Chapter 12
    Chapter #0.12: start 4206.320000, end 4573.480000
    Metadata:
      title           : Chapter 13
    Chapter #0.13: start 4573.480000, end 4865.160000
    Metadata:
      title           : Chapter 14
    Chapter #0.14: start 4865.160000, end 5147.120000
    Metadata:
      title           : Chapter 15
    Chapter #0.15: start 5147.120000, end 5465.000000
    Metadata:
      title           : Chapter 16
    Chapter #0.16: start 5465.000000, end 5853.680000
    Metadata:
      title           : Chapter 17
    Chapter #0.17: start 5853.680000, end 6215.880000
    Metadata:
      title           : Chapter 18
    Chapter #0.18: start 6215.880000, end 6430.320000
    Metadata:
      title           : Chapter 19
    Chapter #0.19: start 6430.320000, end 6910.440000
    Metadata:
      title           : Chapter 20
    Chapter #0.20: start 6910.440000, end 7225.360000
    Metadata:
      title           : Chapter 21
    Chapter #0.21: start 7225.360000, end 7564.920000
    Metadata:
      title           : Chapter 22
    Chapter #0.22: start 7564.920000, end 7888.280000
    Metadata:
      title           : Chapter 23
    Chapter #0.23: start 7888.280000, end 8562.520000
    Metadata:
      title           : Chapter 24
    Stream #0.0(eng): Video: mpeg2video (Main), yuv420p, 720x576 [PAR 64:45 DAR 16:9], 9800 kb/s, 25 fps, 1k tbn, 50 tbc
    Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, fltp, 448 kb/s (default)
    Metadata:
      title           : Surround 5.1
    Stream #0.2(eng): Subtitle: dvdsub (default)
    Stream #0.3(eng): Subtitle: dvdsub
[15:53:30] scan: decoding previews for title 1
[15:53:30] scan: audio 0x1: ac3, rate=48000Hz, bitrate=448000 English (AC3) (5.1 ch)
[15:53:30] scan: 10 previews, 720x576, 25.000 fps, autocrop = 74/74/0/0, aspect 16:9, PAR 64:45
[15:53:30] libhb: scan thread found 1 valid title(s)
+ title 1:
  + stream: The Da Vinci Code (2006).mkv
  + duration: 02:22:42
  + size: 720x576, pixel aspect: 64/45, display aspect: 1.78, 25.000 fps
  + autocrop: 74/74/0/0
  + support opencl: yes
  + support hwd: not built-in
  + chapters:
    + 1: cells 0->0, 0 blocks, duration 00:06:18
    + 2: cells 0->0, 0 blocks, duration 00:06:07
    + 3: cells 0->0, 0 blocks, duration 00:04:15
    + 4: cells 0->0, 0 blocks, duration 00:07:01
    + 5: cells 0->0, 0 blocks, duration 00:04:06
    + 6: cells 0->0, 0 blocks, duration 00:10:30
    + 7: cells 0->0, 0 blocks, duration 00:01:44
    + 8: cells 0->0, 0 blocks, duration 00:06:24
    + 9: cells 0->0, 0 blocks, duration 00:06:55
    + 10: cells 0->0, 0 blocks, duration 00:03:57
    + 11: cells 0->0, 0 blocks, duration 00:04:49
    + 12: cells 0->0, 0 blocks, duration 00:08:01
    + 13: cells 0->0, 0 blocks, duration 00:06:07
    + 14: cells 0->0, 0 blocks, duration 00:04:52
    + 15: cells 0->0, 0 blocks, duration 00:04:42
    + 16: cells 0->0, 0 blocks, duration 00:05:18
    + 17: cells 0->0, 0 blocks, duration 00:06:29
    + 18: cells 0->0, 0 blocks, duration 00:06:02
    + 19: cells 0->0, 0 blocks, duration 00:03:34
    + 20: cells 0->0, 0 blocks, duration 00:08:00
    + 21: cells 0->0, 0 blocks, duration 00:05:15
    + 22: cells 0->0, 0 blocks, duration 00:05:40
    + 23: cells 0->0, 0 blocks, duration 00:05:23
    + 24: cells 0->0, 0 blocks, duration 00:11:14
  + audio tracks:
    + 1, English (AC3) (5.1 ch) (iso639-2: eng), 48000Hz, 448000bps
  + subtitle tracks:
    + 1, English (iso639-2: eng) (Bitmap)(VOBSUB)
    + 2, English (iso639-2: eng) (Bitmap)(VOBSUB)
Subtitle Scan Enabled - enabling subtitles if found for foreign language segments
[15:53:31] 2 job(s) to process
[15:53:31] starting job
[15:53:31] sync: expecting 6384 video frames
[15:53:31] work: only 1 chapter, disabling chapter markers
[15:53:31] job configuration:
[15:53:31]  * source
[15:53:31]    + The Da Vinci Code (2006).mkv
[15:53:31]    + title 1, chapter(s) 3 to 3
[15:53:31]    + container: matroska,webm
[15:53:31]  * destination
[15:53:31]    + The Da Vinci Code (2006).mp4
[15:53:31]    + container: MPEG-4 (libavformat)
[15:53:31]  * video track
[15:53:31]    + decoder: mpeg2video
[15:53:31]      + bitrate 9800 kbps
[15:53:31]    + filters
[15:53:31]      + Framerate Shaper (0:27000000:1080000)
[15:53:31]        + frame rate: same as source (around 25.000 fps)
[15:53:31]      + Crop and Scale (720:428:74:74:0:0)
[15:53:31]        + source: 720 * 576, crop (74/74/0/0): 720 * 428, scale: 720 * 428
[15:53:31]    + strict anamorphic
[15:53:31]      + storage dimensions: 720 * 428, mod 0
[15:53:31]      + pixel aspect ratio: 64 / 45
[15:53:31]      + display dimensions: 1024 * 428
[15:53:31]  * Foreign Audio Search: Passthrough, Default
[15:53:31]    + subtitle, English (track 2, id 0x2) Picture [VOBSUB]
[15:53:31]    + subtitle, English (track 3, id 0x3) Picture [VOBSUB]
[15:53:31] reader: end of chapter 3 (media 3) reached at media chapter 4
[15:53:31] reader: done. 1 scr changes
[15:53:31] work: average encoding speed for job is 0.000000 fps
[15:53:31] render: lost time: 0 (0 frames)
[15:53:31] render: gained time: 0 (0 frames) (0 not accounted for)
[15:53:31] mpeg2video-decoder done: 0 frames, 0 decoder errors, 0 drops
[15:53:31] Subtitle track 2 (id 0x2) 'English': 71 hits (19 forced)
[15:53:31] Subtitle track 3 (id 0x3) 'English': 80 hits (0 forced)
[15:53:31] No candidate detected during subtitle scan
[15:53:31] starting job
[15:53:31] Auto Passthru: allowed codecs are AAC, AC3, DTS, DTS-HD, MP3
[15:53:31] Auto Passthru: no valid fallback specified
[15:53:31] Auto Passthru: using AC3 Passthru for track 2
[15:53:31] work: mixdown not specified, track 1 setting mixdown Dolby Pro Logic II
[15:53:31] work: bitrate not specified, track 1 setting bitrate 160 Kbps
[15:53:31] sync: expecting 6384 video frames
[15:53:31] work: only 1 chapter, disabling chapter markers
[15:53:31] job configuration:
[15:53:31]  * source
[15:53:31]    + The Da Vinci Code (2006).mkv
[15:53:31]    + title 1, chapter(s) 3 to 3
[15:53:31]    + container: matroska,webm
[15:53:31]  * destination
[15:53:31]    + The Da Vinci Code (2006).mp4
[15:53:31]    + container: MPEG-4 (libavformat)
[15:53:31]  * video track
[15:53:31]    + decoder: mpeg2video
[15:53:31]      + bitrate 9800 kbps
[15:53:31]    + filters
[15:53:31]      + Framerate Shaper (0:27000000:1080000)
[15:53:31]        + frame rate: same as source (around 25.000 fps)
[15:53:31]      + Crop and Scale (720:428:74:74:0:0)
[15:53:31]        + source: 720 * 576, crop (74/74/0/0): 720 * 428, scale: 720 * 428
[15:53:31]    + strict anamorphic
[15:53:31]      + storage dimensions: 720 * 428, mod 0
[15:53:31]      + pixel aspect ratio: 64 / 45
[15:53:31]      + display dimensions: 1024 * 428
[15:53:31]    + encoder: H.264 (libx264)
[15:53:31]      + options: vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25:ref=1:weightp=1:subme=6:mixed-refs=0:rc-lookahead=30
[15:53:31]      + quality: 16.00 (RF)
[15:53:31]  * audio track 1
[15:53:31]    + decoder: English (AC3) (5.1 ch) (track 1, id 0x1)
[15:53:31]      + bitrate: 448 kbps, samplerate: 48000 Hz
[15:53:31]    + mixdown: Dolby Pro Logic II
[15:53:31]    + encoder: AAC (Apple AudioToolbox)
[15:53:31]      + bitrate: 160 kbps, samplerate: 48000 Hz
[15:53:31]  * audio track 2
[15:53:31]    + decoder: English (AC3) (5.1 ch) (track 1, id 0x1)
[15:53:31]      + bitrate: 448 kbps, samplerate: 48000 Hz
[15:53:31]    + AC3 Passthru
Encoding: task 2 of 2, 0.00 %[15:53:31] encx264: encoding at constant RF 16.000000
[15:53:31] encx264: unparsed options: vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25:ref=1:weightp=1:subme=6:mixed-refs=0:rc-lookahead=30
x264 [info]: using SAR=64/45
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX AVX2 FMA3 LZCNT BMI2
x264 [info]: profile High, level 3.0
[15:53:31] reader: first SCR 67010400 id 0x0 DTS 67010400
Encoding: task 2 of 2, 31.85 % (197.48 fps, avg 216.18 fps, ETA 00h00m20s)

Test 4
Joes-MBP:Rips joe$ transcode-video.sh --find-forced burn --chapters 3 --fast 'The Da Vinci Code (2006).mkv'
Transcoding: The Da Vinci Code (2006).mkv
[16:07:00] hb_init: starting libhb thread
HandBrake 0.10.2<PHONE_NUMBER>) - Darwin x86_64 - https://handbrake.fr
8 CPUs detected
Opening The Da Vinci Code (2006).mkv...
[16:07:00] CPU: Intel(R) Core(TM) i7-4960HQ CPU @ 2.60GHz
[16:07:00]  - Intel microarchitecture Haswell
[16:07:00]  - logical processor count: 8
[16:07:00] OpenCL device #1: Intel Iris Pro
[16:07:00]  - OpenCL version: 1.2
[16:07:00]  - driver version: 1.2(Jun 10 2015 16:35:16)
[16:07:00]  - device type:    GPU
[16:07:00]  - supported:      YES
[16:07:00] OpenCL device #2: NVIDIA GeForce GT 750M
[16:07:00]  - OpenCL version: 1.2
[16:07:00]  - driver version: 10.4.2 310.41.35f01
[16:07:00]  - device type:    GPU
[16:07:00]  - supported:      no
[16:07:00] hb_scan: path=The Da Vinci Code (2006).mkv, title_index=1
libbluray/bdnav/index_parse.c:162: indx_parse(): error opening The Da Vinci Code (2006).mkv/BDMV/index.bdmv
libbluray/bdnav/index_parse.c:162: indx_parse(): error opening The Da Vinci Code (2006).mkv/BDMV/BACKUP/index.bdmv
libbluray/bluray.c:2182: nav_get_title_list(The Da Vinci Code (2006).mkv) failed
[16:07:00] bd: not a bd - trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can't open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[16:07:00] dvd: not a dvd - trying as a stream/file instead
Input #0, matroska,webm, from 'The Da Vinci Code (2006).mkv':
  Metadata:
    title           : Davinci
  Duration: 02:22:42.52, start: 0.000000, bitrate: N/A
    Chapter #0.0: start 0.080000, end 377.680000
    Metadata:
      title           : Chapter 01
    Chapter #0.1: start 377.680000, end 744.560000
    Metadata:
      title           : Chapter 02
    Chapter #0.2: start 744.560000, end 999.920000
    Metadata:
      title           : Chapter 03
    Chapter #0.3: start 999.920000, end 1421.200000
    Metadata:
      title           : Chapter 04
    Chapter #0.4: start 1421.200000, end 1666.760000
    Metadata:
      title           : Chapter 05
    Chapter #0.5: start 1666.760000, end 2296.320000
    Metadata:
      title           : Chapter 06
    Chapter #0.6: start 2296.320000, end 2399.960000
    Metadata:
      title           : Chapter 07
    Chapter #0.7: start 2399.960000, end 2784.280000
    Metadata:
      title           : Chapter 08
    Chapter #0.8: start 2784.280000, end 3199.040000
    Metadata:
      title           : Chapter 09
    Chapter #0.9: start 3199.040000, end 3436.320000
    Metadata:
      title           : Chapter 10
    Chapter #0.10: start 3436.320000, end 3725.360000
    Metadata:
      title           : Chapter 11
    Chapter #0.11: start 3725.360000, end 4206.320000
    Metadata:
      title           : Chapter 12
    Chapter #0.12: start 4206.320000, end 4573.480000
    Metadata:
      title           : Chapter 13
    Chapter #0.13: start 4573.480000, end 4865.160000
    Metadata:
      title           : Chapter 14
    Chapter #0.14: start 4865.160000, end 5147.120000
    Metadata:
      title           : Chapter 15
    Chapter #0.15: start 5147.120000, end 5465.000000
    Metadata:
      title           : Chapter 16
    Chapter #0.16: start 5465.000000, end 5853.680000
    Metadata:
      title           : Chapter 17
    Chapter #0.17: start 5853.680000, end 6215.880000
    Metadata:
      title           : Chapter 18
    Chapter #0.18: start 6215.880000, end 6430.320000
    Metadata:
      title           : Chapter 19
    Chapter #0.19: start 6430.320000, end 6910.440000
    Metadata:
      title           : Chapter 20
    Chapter #0.20: start 6910.440000, end 7225.360000
    Metadata:
      title           : Chapter 21
    Chapter #0.21: start 7225.360000, end 7564.920000
    Metadata:
      title           : Chapter 22
    Chapter #0.22: start 7564.920000, end 7888.280000
    Metadata:
      title           : Chapter 23
    Chapter #0.23: start 7888.280000, end 8562.520000
    Metadata:
      title           : Chapter 24
    Stream #0.0(eng): Video: mpeg2video (Main), yuv420p, 720x576 [PAR 64:45 DAR 16:9], 9800 kb/s, 25 fps, 1k tbn, 50 tbc
    Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, fltp, 448 kb/s (default)
    Metadata:
      title           : Surround 5.1
    Stream #0.2(eng): Subtitle: dvdsub (default)
    Stream #0.3(eng): Subtitle: dvdsub
[16:07:00] scan: decoding previews for title 1
[16:07:00] scan: audio 0x1: ac3, rate=48000Hz, bitrate=448000 English (AC3) (5.1 ch)
[16:07:00] scan: 10 previews, 720x576, 25.000 fps, autocrop = 74/74/0/0, aspect 16:9, PAR 64:45
[16:07:00] libhb: scan thread found 1 valid title(s)
+ title 1:
  + stream: The Da Vinci Code (2006).mkv
  + duration: 02:22:42
  + size: 720x576, pixel aspect: 64/45, display aspect: 1.78, 25.000 fps
  + autocrop: 74/74/0/0
  + support opencl: yes
  + support hwd: not built-in
  + chapters:
    + 1: cells 0->0, 0 blocks, duration 00:06:18
    + 2: cells 0->0, 0 blocks, duration 00:06:07
    + 3: cells 0->0, 0 blocks, duration 00:04:15
    + 4: cells 0->0, 0 blocks, duration 00:07:01
    + 5: cells 0->0, 0 blocks, duration 00:04:06
    + 6: cells 0->0, 0 blocks, duration 00:10:30
    + 7: cells 0->0, 0 blocks, duration 00:01:44
    + 8: cells 0->0, 0 blocks, duration 00:06:24
    + 9: cells 0->0, 0 blocks, duration 00:06:55
    + 10: cells 0->0, 0 blocks, duration 00:03:57
    + 11: cells 0->0, 0 blocks, duration 00:04:49
    + 12: cells 0->0, 0 blocks, duration 00:08:01
    + 13: cells 0->0, 0 blocks, duration 00:06:07
    + 14: cells 0->0, 0 blocks, duration 00:04:52
    + 15: cells 0->0, 0 blocks, duration 00:04:42
    + 16: cells 0->0, 0 blocks, duration 00:05:18
    + 17: cells 0->0, 0 blocks, duration 00:06:29
    + 18: cells 0->0, 0 blocks, duration 00:06:02
    + 19: cells 0->0, 0 blocks, duration 00:03:34
    + 20: cells 0->0, 0 blocks, duration 00:08:00
    + 21: cells 0->0, 0 blocks, duration 00:05:15
    + 22: cells 0->0, 0 blocks, duration 00:05:40
    + 23: cells 0->0, 0 blocks, duration 00:05:23
    + 24: cells 0->0, 0 blocks, duration 00:11:14
  + audio tracks:
    + 1, English (AC3) (5.1 ch) (iso639-2: eng), 48000Hz, 448000bps
  + subtitle tracks:
    + 1, English (iso639-2: eng) (Bitmap)(VOBSUB)
    + 2, English (iso639-2: eng) (Bitmap)(VOBSUB)
Subtitle Scan Enabled - enabling subtitles if found for foreign language segments
[16:07:00] 2 job(s) to process
[16:07:00] starting job
[16:07:00] sync: expecting 6384 video frames
[16:07:00] work: only 1 chapter, disabling chapter markers
[16:07:00] job configuration:
[16:07:00]  * source
[16:07:00]    + The Da Vinci Code (2006).mkv
[16:07:00]    + title 1, chapter(s) 3 to 3
[16:07:00]    + container: matroska,webm
[16:07:00]  * destination
[16:07:00]    + The Da Vinci Code (2006).mp4
[16:07:00]    + container: MPEG-4 (libavformat)
[16:07:00]  * video track
[16:07:00]    + decoder: mpeg2video
[16:07:00]      + bitrate 9800 kbps
[16:07:00]    + filters
[16:07:00]      + Framerate Shaper (1:27000000:1080000)
[16:07:00]        + frame rate: 25.000 fps -> constant 25.000 fps
[16:07:00]      + Subtitle renderer (0:0:0:0)
[16:07:00]      + Crop and Scale (720:576:0:0:0:0)
[16:07:00]        + source: 720 * 576, crop (0/0/0/0): 720 * 576, scale: 720 * 576
[16:07:00]    + strict anamorphic
[16:07:00]      + storage dimensions: 720 * 576, mod 0
[16:07:00]      + pixel aspect ratio: 64 / 45
[16:07:00]      + display dimensions: 1024 * 576
[16:07:00]  * Foreign Audio Search: Render/Burn-in, Forced Only
[16:07:00]    + subtitle, English (track 2, id 0x2) Picture [VOBSUB]
[16:07:00]    + subtitle, English (track 3, id 0x3) Picture [VOBSUB]
[16:07:00] reader: end of chapter 3 (media 3) reached at media chapter 4
[16:07:00] reader: done. 1 scr changes
[16:07:00] work: average encoding speed for job is 0.000000 fps
[16:07:00] render: 0 frames output, 0 dropped and 0 duped for CFR/PFR
[16:07:00] render: lost time: 0 (0 frames)
[16:07:00] render: gained time: 0 (0 frames) (0 not accounted for)
[16:07:00] mpeg2video-decoder done: 0 frames, 0 decoder errors, 0 drops
Encoding: task 1 of 2, 100.00 %[16:07:00] Subtitle track 2 (id 0x2) 'English': 71 hits (19 forced)
[16:07:00] Subtitle track 3 (id 0x3) 'English': 80 hits (0 forced)
[16:07:00] Found a subtitle candidate with id 0x2 (contains forced subs)
[16:07:00] starting job
[16:07:00] Auto Passthru: allowed codecs are AAC, AC3, DTS, DTS-HD, MP3
[16:07:00] Auto Passthru: no valid fallback specified
[16:07:00] Auto Passthru: using AC3 Passthru for track 2
[16:07:00] work: mixdown not specified, track 1 setting mixdown Dolby Pro Logic II
[16:07:00] work: bitrate not specified, track 1 setting bitrate 160 Kbps
[16:07:00] sync: expecting 6384 video frames
[16:07:00] work: only 1 chapter, disabling chapter markers
[16:07:00] job configuration:
[16:07:00]  * source
[16:07:00]    + The Da Vinci Code (2006).mkv
[16:07:00]    + title 1, chapter(s) 3 to 3
[16:07:00]    + container: matroska,webm
[16:07:00]  * destination
[16:07:00]    + The Da Vinci Code (2006).mp4
[16:07:00]    + container: MPEG-4 (libavformat)
[16:07:00]  * video track
[16:07:00]    + decoder: mpeg2video
[16:07:00]      + bitrate 9800 kbps
[16:07:00]    + filters
[16:07:00]      + Framerate Shaper (1:27000000:1080000)
[16:07:00]        + frame rate: 25.000 fps -> constant 25.000 fps
[16:07:00]      + Subtitle renderer (0:0:0:0)
[16:07:00]      + Crop and Scale (720:576:0:0:0:0)
[16:07:00]        + source: 720 * 576, crop (0/0/0/0): 720 * 576, scale: 720 * 576
[16:07:00]    + strict anamorphic
[16:07:00]      + storage dimensions: 720 * 576, mod 0
[16:07:00]      + pixel aspect ratio: 64 / 45
[16:07:00]      + display dimensions: 1024 * 576
[16:07:00]    + encoder: H.264 (libx264)
[16:07:00]      + preset:  fast
[16:07:00]      + options: vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25
[16:07:00]      + quality: 16.00 (RF)
[16:07:00]  * subtitle track 1, English (track 2, id 0x2) Picture [VOBSUB] -> Render/Burn-in, Forced Only
[16:07:00]  * audio track 1
[16:07:00]    + decoder: English (AC3) (5.1 ch) (track 1, id 0x1)
[16:07:00]      + bitrate: 448 kbps, samplerate: 48000 Hz
[16:07:00]    + mixdown: Dolby Pro Logic II
[16:07:00]    + encoder: AAC (Apple AudioToolbox)
[16:07:00]      + bitrate: 160 kbps, samplerate: 48000 Hz
[16:07:00]  * audio track 2
[16:07:00]    + decoder: English (AC3) (5.1 ch) (track 1, id 0x1)
[16:07:00]      + bitrate: 448 kbps, samplerate: 48000 Hz
[16:07:00]    + AC3 Passthru
[16:07:00] encx264: encoding at constant RF 16.000000
[16:07:00] encx264: unparsed options: vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25:ref=2:weightp=1:subme=6:rc-lookahead=30
x264 [info]: using SAR=64/45
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX AVX2 FMA3 LZCNT BMI2
x264 [info]: profile High, level 3.0
[16:07:00] reader: first SCR 67010400 id 0x0 DTS 67010400
Encoding: task 2 of 2, 98.64 % (126.27 fps, avg 146.36 fps, ETA 00h00m00s)[16:07:44] reader: end of chapter 3 (media 3) reached at media chapter 4
Encoding: task 2 of 2, 99.39 % (126.27 fps, avg 146.36 fps, ETA 00h00m00s)[16:07:44] reader: done. 1 scr changes
Encoding: task 2 of 2, 100.00 % (126.27 fps, avg 146.36 fps, ETA 00h00m00s)[16:07:45] work: average encoding speed for job is 146.362488 fps
Encoding: task 2 of 2, 100.00 % (126.27 fps, avg 146.36 fps, ETA 00h00m00s)[16:07:45] sync: got 6385 frames, 6384 expected
[16:07:45] render: 6385 frames output, 0 dropped and 0 duped for CFR/PFR
[16:07:45] render: lost time: 0 (0 frames)
[16:07:45] render: gained time: 0 (0 frames) (0 not accounted for)
[16:07:45] mpeg2video-decoder done: 6385 frames, 0 decoder errors, 0 drops
x264 [info]: frame I:79    Avg QP:10.59  size: 31166
x264 [info]: frame P:3378  Avg QP:14.48  size:  8364
x264 [info]: frame B:2928  Avg QP:16.42  size:  5070
x264 [info]: consecutive B-frames: 22.2% 46.5% 10.1% 21.1%
x264 [info]: mb I  I16..4: 20.7% 73.4%  5.9%
x264 [info]: mb P  I16..4:  0.6%  3.0%  0.3%  P16..4: 37.0% 22.4%  8.9%  0.0%  0.0%    skip:27.9%
x264 [info]: mb B  I16..4:  6.2% 17.4%  0.1%  B16..8: 18.7%  6.5%  0.3%  direct:13.6%  skip:37.2%  L0:43.2% L1:42.5% BI:14.3%
x264 [info]: 8x8 transform intra:74.0% inter:74.8%
x264 [info]: coded y,uvDC,uvAC intra: 62.4% 67.5% 38.6% inter: 23.2% 29.2% 4.1%
x264 [info]: i16 v,h,dc,p: 50% 17% 22% 12%
x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 12% 39%  3%  3%  4%  2%  4%  2%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 22% 22%  5%  6%  7%  4%  5%  3%
x264 [info]: i8c dc,h,v,p: 54% 14% 26%  5%
x264 [info]: Weighted P-Frames: Y:0.9% UV:0.3%
x264 [info]: ref P L0: 65.8% 34.2%
x264 [info]: ref B L0: 71.7% 28.3%
x264 [info]: ref B L1: 95.0%  5.0%
x264 [info]: kb/s:1427.12
[16:07:45] ac3-decoder done: 0 frames, 0 decoder errors, 0 drops
[16:07:45] ac3-decoder done: 0 frames, 0 decoder errors, 0 drops
[16:07:45] mux: track 0, 6385 frames, 45557334 bytes, 1427.01 kbps, fifo 2048
[16:07:45] mux: track 1, 11971 frames, 5197573 bytes, 162.81 kbps, fifo 4096
[16:07:45] mux: track 2, 7980 frames, 14300160 bytes, 447.93 kbps, fifo 2048
[16:07:45] libhb: work result = 0

Encode done!
HandBrake has exited.

@rhapsodians I hope you're having a great summer, too, Joe. And thanks for the detailed bug report!
I think the problem you're having is the subtlety of burning and forcing subtitles being two different things. My understanding is that you want to burn any forced subtitle from your source into your output video. However, your sample command lines are definitely not doing that. Those commands are trying to trying to extract the subtitle. This is because you're using --force-subtitle scan instead of --burn-subtitle scan.
Try this instead:
transcode-video --crop 74:74:0:0 --quick --chapters 3 --mp4 --burn-subtitle scan 'The Da Vinci Code (2006).mkv'

Notice that it does not contain --force-subtitle scan anywhere.

Hi Don, so far so good summer-wise (and we're actually getting an OK summer in the London area compared to back home in Ireland!)
Thanks for the explanation above too - I do understand the difference between burning and forcing subtitles but perhaps I may have to delve into the Ruby to see what you (and HBCLI) actually mean to do (further education for me to get the semantics right).
You're also correct in my objective:   I want to find/burn any forced subtitle into the output video track.
I've run your suggested command above and it doesn't burn-in the forced subtitles. HBCLI appears not to find a suitable subtitle candidate in the scan even though the previous line shows 19 forced flags are in subtitle track 2 (id 0x2).
The output shows:
Encoding: task 1 of 2, 100.00 %[17:15:24] mpeg2video-decoder done: 0 frames, 0 decoder errors, 0 drops
[17:15:24] Subtitle track 2 (id 0x2) 'English': 71 hits (19 forced)
[17:15:24] Subtitle track 3 (id 0x3) 'English': 80 hits (0 forced)
[17:15:24] No candidate detected during subtitle scan
[17:15:24] starting job
[17:15:24] rendersub: no subtitle marked for burn

There are definitely English (forced) subtitles in Ch. 3 which are correctly detected/burned-in when you tell HBCLI to include them (test 3 above) or using the old scripts (test 4).
I'm curious to figure out the correct command to run and why the old bash --find-forced burn seems to work ...

@rhapsodians Hmmmm, sounds like a bug then. Sorry about that
What does your command line look like if you add --dry-run? That should show you what the Ruby-based tools are telling HandBrakeCLI to do.

Don't worry ... I like finding stuff like this as I can learn a lot from it too :-)
Your command output is below followed by the explicit HandbrakeCLI input I used ... the only difference is the inclusion of --subtitle-forced in the latter (which works)
Joes-MBP:Rips joe$ transcode-video --crop 74:74:0:0 --quick --chapters 3 --mp4 --burn-subtitle scan --dry-run 'The Da Vinci Code (2006).mkv'
HandBrakeCLI --input=The\ Da\ Vinci\ Code\ \(2006\).mkv --output=The\ Da\ Vinci\ Code\ \(2006\).mp4 --markers --encoder=x264 --quality=16 --crop=74:74:0:0 --strict-anamorphic --rate=25.0 --audio=1,1 --aencoder=ca_aac,copy --subtitle=scan --subtitle-burned --encopts=vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25:ref=1:weightp=1:subme=6:mixed-refs=0:rc-lookahead=30 --chapters=3
Joes-MBP:Rips joe$
Joes-MBP:Rips joe$
Joes-MBP:Rips joe$
Joes-MBP:Rips joe$
Joes-MBP:Rips joe$ transcode-video --crop 74:74:0:0 --quick --chapters 3 --mp4 -H subtitle=scan -H subtitle-forced -H subtitle-burned --dry-run 'The Da Vinci Code (2006).mkv'
HandBrakeCLI --input=The\ Da\ Vinci\ Code\ \(2006\).mkv --output=The\ Da\ Vinci\ Code\ \(2006\).mp4 --markers --encoder=x264 --quality=16 --crop=74:74:0:0 --strict-anamorphic --rate=25.0 --audio=1,1 --aencoder=ca_aac,copy --encopts=vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25:ref=1:weightp=1:subme=6:mixed-refs=0:rc-lookahead=30 --chapters=3 --subtitle=scan --subtitle-forced --subtitle-burned

@rhapsodians Thanks. I only care about the first case where it's not working.
And, oddly enough, that should be the correct command line.
Now, what does the output HandBrakeCLI command line look like if you add --debug to the input command line using the old transcode-video.sh script?

Also, just ran your command with the extra -H subtitle-forced option and that works (as it generated the same HBCLI command as the explicit one I came up with.
The big difference is in the output:
Encoding: task 1 of 2, 100.00 %[18:01:40] mpeg2video-decoder done: 0 frames, 0 decoder errors, 0 drops
[18:01:40] Subtitle track 2 (id 0x2) 'English': 71 hits (19 forced)
[18:01:40] Subtitle track 3 (id 0x3) 'English': 80 hits (0 forced)
[18:01:40] Found a subtitle candidate with id 0x2 (contains forced subs)
[18:01:40] starting job

So perhaps this is where the problem lies?

@rhapsodians The --subtitle-forced option shouldn't be necessary unless the HandBrake team changed something in version 0.10.2. In fact, adding the  --subtitle-forced option should not burn in the subtitle. It should try to add the subtitle as a separate track. Which is not what you want. And that looks exactly like what's happening based on your output.

Hi Don,
This is the output from the old scripts ...
title_options             =
section_options           = --chapters 3
markers_options           = --markers
chapter_names_file        =
preset_options            = --encoder-preset fast
tune_options              =
encopts_options           = vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25
level_options             =
rate_factor               = 16
frame_rate_options        = --rate 25
audio_options             = --audio 1,1 --aencoder ca_aac,copy
audio_track_name_list     =
crop_options              = --crop 0:0:0:0
size_options              = --strict-anamorphic
filter_options            =
subtitle_options          = --subtitle scan --subtitle-forced --subtitle-burned
srt_options               =
passthru_options          =
input                     = The Da Vinci Code (2006).mkv
output                    = The Da Vinci Code (2006).mp4

HandBrakeCLI --chapters 3 --markers --encoder x264 --encoder-preset fast --encopts vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25 --quality 16 --rate 25 --audio 1,1 --aencoder ca_aac,copy --crop 0:0:0:0 --strict-anamorphic --subtitle scan --subtitle-forced --subtitle-burned --input 'The Da Vinci Code (2006).mkv' --output 'The Da Vinci Code (2006).mp4' 2>&1 | tee -a 'The Da Vinci Code (2006).mp4.log'

... which also works as expected (English forced subtitles burned-in when they speak French for a few sentences)

@rhapsodians I need your input command line for that transcode-video.sh output, please. Otherwise it's not useful to me. Thanks.

Sorry - I should have included this above ...
Here you are ...
transcode-video.sh --find-forced burn --chapters 3 --fast --debug 'The Da Vinci Code (2006).mkv'
[18:32:29] hb_init: starting libhb thread
HandBrake 0.10.2<PHONE_NUMBER>) - Darwin x86_64 - https://handbrake.fr
8 CPUs detected
Opening The Da Vinci Code (2006).mkv...
[18:32:29] CPU: Intel(R) Core(TM) i7-4960HQ CPU @ 2.60GHz
[18:32:29]  - Intel microarchitecture Haswell
[18:32:29]  - logical processor count: 8
[18:32:29] OpenCL device #1: Intel Iris Pro
[18:32:29]  - OpenCL version: 1.2
[18:32:29]  - driver version: 1.2(Jun 10 2015 16:35:16)
[18:32:29]  - device type:    GPU
[18:32:29]  - supported:      YES
[18:32:29] OpenCL device #2: NVIDIA GeForce GT 750M
[18:32:29]  - OpenCL version: 1.2
[18:32:29]  - driver version: 10.4.2 310.41.35f01
[18:32:29]  - device type:    GPU
[18:32:29]  - supported:      no
[18:32:29] hb_scan: path=The Da Vinci Code (2006).mkv, title_index=1
libbluray/bdnav/index_parse.c:162: indx_parse(): error opening The Da Vinci Code (2006).mkv/BDMV/index.bdmv
libbluray/bdnav/index_parse.c:162: indx_parse(): error opening The Da Vinci Code (2006).mkv/BDMV/BACKUP/index.bdmv
libbluray/bluray.c:2182: nav_get_title_list(The Da Vinci Code (2006).mkv) failed
[18:32:29] bd: not a bd - trying as a stream/file instead
libdvdnav: Using dvdnav version 5.0.1
libdvdread:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.IFO failed
libdvdread:DVDOpenFileUDF:UDFFindFile /VIDEO_TS/VIDEO_TS.BUP failed
libdvdread: Can't open file VIDEO_TS.IFO.
libdvdnav: vm: failed to read VIDEO_TS.IFO
[18:32:29] dvd: not a dvd - trying as a stream/file instead
Input #0, matroska,webm, from 'The Da Vinci Code (2006).mkv':
  Metadata:
    title           : Davinci
  Duration: 02:22:42.52, start: 0.000000, bitrate: N/A
    Chapter #0.0: start 0.080000, end 377.680000
    Metadata:
      title           : Chapter 01
    Chapter #0.1: start 377.680000, end 744.560000
    Metadata:
      title           : Chapter 02
    Chapter #0.2: start 744.560000, end 999.920000
    Metadata:
      title           : Chapter 03
    Chapter #0.3: start 999.920000, end 1421.200000
    Metadata:
      title           : Chapter 04
    Chapter #0.4: start 1421.200000, end 1666.760000
    Metadata:
      title           : Chapter 05
    Chapter #0.5: start 1666.760000, end 2296.320000
    Metadata:
      title           : Chapter 06
    Chapter #0.6: start 2296.320000, end 2399.960000
    Metadata:
      title           : Chapter 07
    Chapter #0.7: start 2399.960000, end 2784.280000
    Metadata:
      title           : Chapter 08
    Chapter #0.8: start 2784.280000, end 3199.040000
    Metadata:
      title           : Chapter 09
    Chapter #0.9: start 3199.040000, end 3436.320000
    Metadata:
      title           : Chapter 10
    Chapter #0.10: start 3436.320000, end 3725.360000
    Metadata:
      title           : Chapter 11
    Chapter #0.11: start 3725.360000, end 4206.320000
    Metadata:
      title           : Chapter 12
    Chapter #0.12: start 4206.320000, end 4573.480000
    Metadata:
      title           : Chapter 13
    Chapter #0.13: start 4573.480000, end 4865.160000
    Metadata:
      title           : Chapter 14
    Chapter #0.14: start 4865.160000, end 5147.120000
    Metadata:
      title           : Chapter 15
    Chapter #0.15: start 5147.120000, end 5465.000000
    Metadata:
      title           : Chapter 16
    Chapter #0.16: start 5465.000000, end 5853.680000
    Metadata:
      title           : Chapter 17
    Chapter #0.17: start 5853.680000, end 6215.880000
    Metadata:
      title           : Chapter 18
    Chapter #0.18: start 6215.880000, end 6430.320000
    Metadata:
      title           : Chapter 19
    Chapter #0.19: start 6430.320000, end 6910.440000
    Metadata:
      title           : Chapter 20
    Chapter #0.20: start 6910.440000, end 7225.360000
    Metadata:
      title           : Chapter 21
    Chapter #0.21: start 7225.360000, end 7564.920000
    Metadata:
      title           : Chapter 22
    Chapter #0.22: start 7564.920000, end 7888.280000
    Metadata:
      title           : Chapter 23
    Chapter #0.23: start 7888.280000, end 8562.520000
    Metadata:
      title           : Chapter 24
    Stream #0.0(eng): Video: mpeg2video (Main), yuv420p, 720x576 [PAR 64:45 DAR 16:9], 9800 kb/s, 25 fps, 1k tbn, 50 tbc
    Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, fltp, 448 kb/s (default)
    Metadata:
      title           : Surround 5.1
    Stream #0.2(eng): Subtitle: dvdsub (default)
    Stream #0.3(eng): Subtitle: dvdsub
[18:32:29] scan: decoding previews for title 1
[18:32:29] scan: audio 0x1: ac3, rate=48000Hz, bitrate=448000 English (AC3) (5.1 ch)
[18:32:29] scan: 2 previews, 720x576, 25.000 fps, autocrop = 0/0/0/0, aspect 16:9, PAR 64:45
[18:32:29] libhb: scan thread found 1 valid title(s)
+ title 1:
  + stream: The Da Vinci Code (2006).mkv
  + duration: 02:22:42
  + size: 720x576, pixel aspect: 64/45, display aspect: 1.78, 25.000 fps
  + autocrop: 0/0/0/0
  + support opencl: yes
  + support hwd: not built-in
  + chapters:
    + 1: cells 0->0, 0 blocks, duration 00:06:18
    + 2: cells 0->0, 0 blocks, duration 00:06:07
    + 3: cells 0->0, 0 blocks, duration 00:04:15
    + 4: cells 0->0, 0 blocks, duration 00:07:01
    + 5: cells 0->0, 0 blocks, duration 00:04:06
    + 6: cells 0->0, 0 blocks, duration 00:10:30
    + 7: cells 0->0, 0 blocks, duration 00:01:44
    + 8: cells 0->0, 0 blocks, duration 00:06:24
    + 9: cells 0->0, 0 blocks, duration 00:06:55
    + 10: cells 0->0, 0 blocks, duration 00:03:57
    + 11: cells 0->0, 0 blocks, duration 00:04:49
    + 12: cells 0->0, 0 blocks, duration 00:08:01
    + 13: cells 0->0, 0 blocks, duration 00:06:07
    + 14: cells 0->0, 0 blocks, duration 00:04:52
    + 15: cells 0->0, 0 blocks, duration 00:04:42
    + 16: cells 0->0, 0 blocks, duration 00:05:18
    + 17: cells 0->0, 0 blocks, duration 00:06:29
    + 18: cells 0->0, 0 blocks, duration 00:06:02
    + 19: cells 0->0, 0 blocks, duration 00:03:34
    + 20: cells 0->0, 0 blocks, duration 00:08:00
    + 21: cells 0->0, 0 blocks, duration 00:05:15
    + 22: cells 0->0, 0 blocks, duration 00:05:40
    + 23: cells 0->0, 0 blocks, duration 00:05:23
    + 24: cells 0->0, 0 blocks, duration 00:11:14
  + audio tracks:
    + 1, English (AC3) (5.1 ch) (iso639-2: eng), 48000Hz, 448000bps
  + subtitle tracks:
    + 1, English (iso639-2: eng) (Bitmap)(VOBSUB)
    + 2, English (iso639-2: eng) (Bitmap)(VOBSUB)
HandBrake has exited.

title_options             =
section_options           = --chapters 3
markers_options           = --markers
chapter_names_file        =
preset_options            = --encoder-preset fast
tune_options              =
encopts_options           = vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25
level_options             =
rate_factor               = 16
frame_rate_options        = --rate 25
audio_options             = --audio 1,1 --aencoder ca_aac,copy
audio_track_name_list     =
crop_options              = --crop 0:0:0:0
size_options              = --strict-anamorphic
filter_options            =
subtitle_options          = --subtitle scan --subtitle-forced --subtitle-burned
srt_options               =
passthru_options          =
input                     = The Da Vinci Code (2006).mkv
output                    = The Da Vinci Code (2006).mp4

HandBrakeCLI --chapters 3 --markers --encoder x264 --encoder-preset fast --encopts vbv-maxrate=2000:vbv-bufsize=1000:crf-max=25 --quality 16 --rate 25 --audio 1,1 --aencoder ca_aac,copy --crop 0:0:0:0 --strict-anamorphic --subtitle scan --subtitle-forced --subtitle-burned --input 'The Da Vinci Code (2006).mkv' --output 'The Da Vinci Code (2006).mp4' 2>&1 | tee -a 'The Da Vinci Code (2006).mp4.log'

@rhapsodians OK, I was wrong. It seems the --subtitle-forced is required. Which makes no sense. Because I tested this several times myself for the initial release.
No matter what, I'll fix it. But it will have to wait until later today. Sorry about that.
Thanks again for all the diagnostics!

Don't worry Don as all of us out here have a huge debt of gratitude to pay to you for giving us these scripts in the first place! I can't help myself with the diagnostics (just interesting for me) and I learned how to do it at the great Fruit Company many, many years ago ... hence my twitter/gmail username derivation (from a special project back in the day!)
Thanks again.
Kind regards,
Joe

@rhapsodians I didn't realize you worked at Apple, although your name now seems more familiar. :)
I lied about waiting until later today. The fix is trivial. I'm testing it now.

@rhapsodians OK, the fix seems to work. Once I make sure it doesn't break anything, I'll check it in and re-release the Gem. Probably sometime after lunch (Pacific Time).

(Sorry, had to step away ... I'm on cooking duty this evening!)
 :-)
Yes, an early-days Apple guy. Spent 3 years in Cork before I accepted a can't-refuse offer to move to London. I would have much preferred Cupertino! ;-) I worked on System 7.x through to 9 and the best fun was when we accepted a palette load of PCs where I got to build out our NextStep network integrated with Macs and AIX in prep for Rhapsody ... I think they were bought before the nice Mr. Dell made some nasty comments about Apple and giving money back to the shareholders!

@rhapsodians OK, the fix is in! Just do a gem update and all should work now. Otherwise, let me know here.
Thanks again!

Hi Don,
Thanks for the prompt update ... the original command you suggested now works perfectly :-)
Thanks again!
Best wishes,
Joe


Change licence to CC-BY

It should be CC-BY not CC-BY-SA (this was an error)

Will probably need to consult DSL for licence changes, though.

Do this at the same time as #96 perhaps.


Use "-match 14" also for C.I. OpenAD test

testreport is currently used with option "-match 14" only for Fwd tests.
With this update it will be used also for OpenAD tests.
What changes does this PR introduce?
Only minor update to OpenAD C.I. test
What is the current behaviour?
Use criteria of 14 (-match 14) only for Fwd tests (as set in tools/ci/runtr,sh) but default testreport of 10
for OpenAD tests.
What is the new behaviour
use testreport option "-match 14" for all C.I. tests
Does this PR introduce a breaking change?
no
Other information:
Suggested addition to tag-index
to be filled later if needed.

I expect this PR to fail the C.I. test for OpenAD test "OpenAD.ggl90", since this set-up uses pkg/ggl90 and currently only have 10 matching digits for Ad-Grad after PR #714 got merged in.
If it's the case I will update output_oadm.ggl90.text in verification/OpenAD/results

@jahn  thanks wfor the review. Will merge this little PR later today.


Sublime syntax highlighter

It's really crappy and needs more love, but sufficient for my basic needs :) Any help improving it would be great! Example:

Thanks for a quick look! I addressed the concerns now, hopefully ;)

@torkleyy ok, third time is the charm ;)

bors r+


 size attribute as a prop

I am using the dateformat as YYYY-mm-dd. But the input field size is bit long. It would be nice if I have the an feature to send input size to send as a prop.

Happy to accept a PR on this

Hi, I'm still happy to accept a PR but closing due to inactivity.


Can this work as a frontend plugin in browser?

if cant, what should I do to make it can?

Do you mean using the library in a browser?
https://codepen.io/dineug/pen/jOyoJYR


Improve 'reactivate' time of window on macOS

macOS handles applications differently from Windows/Linux in that when you close a window, the app continues to run in the background. When the application is in this backgrounded state, the user is supposed to be able to 'reactivate' the application window by clicking the application icon.
This currently works in the electron app; however, the time for the window to reappear is almost equal to the time it takes the app to startup, making the feature pretty much useless. We need to refactor the reactivate code to improve performance. This could be accomplished by not showing the splash screen on reactivate, and not destructing the electron BrowserWindow when the window is closed.

this is not applicable to latest implementation


NINF changed to -np.inf

In Numpy NINF is chaned to -np.inf

Hey, it seems like Quantopian is no longer maintained so I decided to bundle empyrical with one of my libraries to keep it working. See more here: https://github.com/santoshlite/EigenLedger/discussions/128


bump(deps-dev): bump eslint and its plugins

closes: #2662

It is a super strange issue... For some reason node_modules in these packages dont get stryker packages installed - but it seems to be lerna/typescript problem not eslint... So i have no clue why is it happening

Might be that we were just in the process of updating the mutation-testing-elements dependencies and that repo famously doesn't follow semver 😲
I'll have a look. 👀

Might be that we were just in the process of updating the mutation-testing-elements dependencies and that repo famously doesn't follow semver 😲
I'll have a look. 👀


Missing files

Hey,
Thanks for your awesome repo.
I installed it by using CocoaPods, I added this line to my Podfile: pod 'CRRefresh'
However, there are many missing files as you can see in the attached image. what is the problem?
I need to use FastAnimator but I can't because all its files didn't install.

You must update your cocoapods local library
pod update

Great! problem solved. Thanks.


Enzyme + Jest + Shallow - rendering too deep

Describe the bug
When rendering Child Components with Enzyme (using Jest) we're triggering prop-type warnings of those child components.
column.spec.jsx
import { shallow } from 'enzyme';
import Column from '../column';
import ComponentPicker from '../../picker';

describe.only('<Column />', () => {
  const props = { components: [] };
  beforeEach(() => {
    props.components = [{ type: 'table', source: {} }];
  });

  test('renders component <Picker /> for each component object"', () => {
    const wrapper = shallow(<Column {...props} />);
    expect(wrapper.find(ComponentPicker)).toHaveLength(props.components.length);
  });

  //...other tests
});

column.jsx
import React from 'react';
import PropTypes from 'prop-types';
import Picker from '../picker';

const Column = ({ components }) => (

    {components.map((c, index) => {
      return <Picker component={c} key={c.type} />;
    })}

);

Column.propTypes = {
  components: PropTypes.arrayOf(
    PropTypes.shape({
      type: PropTypes.string.isRequired,
      component: PropTypes.object.isRequired
    })
  ).isRequired
};

export default Column;

inside picker.jsx
const ComponentPicker = ({ component: { type, source } }) => {
  // some logic
  switch(type) {
    case 'table':
      return
;
  }
});

in table.jsx
import React from 'react';
import PropTypes from 'prop-types';

//Component Code

Table.propTypes = {
  source: PropTypes.shape({
    columns: PropTypes.arrayOf(PropTypes.object).isRequired,
    showHeader: PropTypes.bool,
    showBody: PropTypes.bool,
    showFooter: PropTypes.bool
  }).isRequired
};

And when Jest hits this unit test  (column.spec.jsx) I'm getting the below error
      Warning: Failed prop type: The prop `source.columns` is marked as required in `Table`, but its value is `undefined`.
          in Table (at picker.jsx:14)
          in ComponentPicker (at column.jsx:8)
          in div (at column.jsx:6)
          in Column (at column.spec.jsx:22)

--
Other useful information
dev dependencies in package.json
{
  "babel-core": "^7.0.0-bridge.0",
  "babel-jest": "^23.6.0",
  "enzyme": "^3.7.0",
  "enzyme-adapter-react-16": "^1.6.0",
  "jest": "^23.6.0",
  "prop-types": "^15.6.2",
}

Of course I could make the warning go away by passing in a full JSON object to the parent component but that's unnecessary and doesn't get to the root of the problem. I've also tried rendering a stringified version of my child component
wrapper.find('ComponentPicker');

and while it still finds the component the prop-type errors are still occurring.
Any ideas why I'd be getting prop-types warnings on child components of a shallow rendered parent component?

Turns out my issue wasn't Enzyme (who would've guessed?)
It's that on another line I was using react-test-renderer to create a snapshot (in a non-shallow way).
Solved by changing
import renderer from 'react-test-renderer';
describe('...', () => {
  test('matches snapshot', () => {
    const button = renderer.create(<Button {...props} />).toJSON();
    expect(button).toMatchSnapshot();
  });
});

to
import ShallowRenderer from 'react-test-renderer/shallow';
describe('...', () => {
  const renderer = new ShallowRenderer();

  test('matches snapshot', () => {
    const button = renderer.render(<Component {...props} />);
    expect(button).toMatchSnapshot();
  });
});

I'd suggest using enzyme's .debug() method to generate snapshots rather than ever using react-test-renderer. Glad you figure it out!


Missing types for passport-google-openidconnect

Missing types for this library

Types are typically provided by external parties, such as DefinatelyTyped.  It's not a current priority of this project to maintain typings for a language the project isn't written in.


Hi, I got wrong when I run spectroscope

Hello,I appreciate spectroscope very much, so i try to run it. I have installed matlab and perl. when i  run
spectroscope.pl --output_dir /home/User/output/ --snapshot0 /home/User/test.dot --snapshot1 /home/user/test1.dot
i got error message:
`Illegal division by zero at
../lib/ParseClusteringResults/ParseClusteringResults.pm line 740 (#1)
(F) You tried to divide a number by 0.  Either something was wrong in
your logic, or you need to put a conditional in to guard against
meaningless input.
Uncaught exception from user code:
Illegal division by zero at ../lib/ParseClusteringResults/ParseClusteringResults.pm line 740.
ParseClusteringResults::ANON('ParseClusteringResults=HASH(0x9241a8)') called at ../lib/ParseClusteringResults/ParseClusteringResults.pm line 901
ParseClusteringResults::print_ranked_clusters('ParseClusteringResults=HASH(0x9241a8)') called at ./spectroscope.pl line 203
`
content of test.dot is:
# 1 R: 4.381460 usecs RT: 0.000000 usecs
Digraph G {
2586230574719640.2586230574720450 [label="e10__t3__NFS3_NULL_CALL_TYPE\nDEFAULT"]
2586230574719640.2586230574733590 [label="e10__t3__NFS3_NULL_REPLY_TYPE\nDEFAULT"]
2586230574719640.2586230574720450 -><PHONE_NUMBER>719640.2586230574733590 [label="R: 4.381460 us"]
}
content of test1.dot is:
# 1 R: 4.381460 usecs RT: 0.000000 usecs
Digraph G {
2586230574719640.2586230574720450 [label="e10__t3__NFS3_NULL_CALL_TYPE\nDEFAULT"]
2586230574719640.2586230574733590 [label="e10__t3__NFS3_NULL_REPLY_TYPE\nDEFAULT"]
2586230574719640.2586230574720450 -><PHONE_NUMBER>719640.2586230574733590 [label="R: 10.381460 us"]
}
difference between test.dot and test1.dot is  that the latency in test1.dot is longer
I do not know why it occurs error.could you help me?

I have solved it. the reason is the  regular expression in code can not match the the first line in dot file.I have changed the first line in dot file,just like "# 1 R: 4.381460".


Grey screen

hi,
Love the addon.
I have difficulties when I add the addon with project generator, and import the ofxOpenVR.props file,
the app does work in Debug but it doesn't in Release. In Release it gives me a strange gray screen.
It this a known problem ?
Thanks,
Keez
windows 10, mvs 15

Ok. This is just linkers and settings I guess. Shouldn't have asked :)


The total number of maneuvers from the fighting style "Superior Technique" and the Battle Master subclass don't stack anymore

I updated the game earlier today to the latest update and went from I believe 4 maneuver dies to 1. The new changes seem to overwrite the number of dies, but the fighting style single die is set after the subclass. The character is a Barbarian / Fighter with Superior Technique fighting style and the Battle Master subclass.

Need to update to latest and respec to get battle master pool fixed.