Switching branches should always Reset Local

This is partly triggered by the interesting discussion on #3668
A git checkout myotherbranch command will always make the local files / working tree match the target branch. abapGit's "Reset Local" will produce the equivalent behaviour, so I believe this should be applied after switching branches.
Current behaviour is confusing. When switching branches, abapGit provides a variety of different options, particularly when files have been added/deleted. See test repo at https://github.com/pokrakam/abapGitTestBranch
Branch different only has a difference in the report
Branch feature has a difference and an additional file
When switching from master to different it offers to pull -> not correct but OK
when switching from master to feature it offers to pull or stage and indicates the feature object as "D"/delete
when switching from feature to master it offers to pull or stage and indicates the feature object as an addition
In all scenarios performing a "Reset Local" will do exactly what git checkout branch does.
Opinions?

imho switching branches, tag, or source (URL) should not update anything in my system. it should be a separate decision to change objects because I first need to see what might change (view diffs) and then decide what changes I want applied.
i do agree that having "pull" or "stage" available only under certain conditions makes things confusing (see https://github.com/larshp/abapGit/issues/3519). I rather have the options available all the time and we could remove "reset local" and "force stage".

Agreed with removing secret functions like reset local and force stage. Maybe just have a warning message/popup when previously the situation would not be possible using pull/stage and allow to override.

Thoughts:

Imho "reset local" is strange and and would be logical to always do it but ... there is one big difference. In AG is not a mere checkout, it is checkout + build !
One of practical consequences: it will take more time to remove and re-deserialize object on quick switches. E.g. now, it is possible to "quick switch to a feature" without deleting other current object and then switch back and it takes less time. (though maybe the proper way would be to speedup deserialization ... instead of unusual commands)
BTW: pull/stage are available always via hotkeys :) a bug-like feature :) So I guess displaying both of them if changes are available should be no big change.
+1 for better messages before override

I’m looking at this from a regular git point of view, pretty much every other git client out there functions this way. All the git clients I've used (native git, Eclipse, VSCode, XCode, BBEdit, SAP WebUI) will switch my entire project environment to represent the current state of the commit that the branch is pointing to, totally transparent. Git is a snapshot-based VCS, a branch represents a point-in-time snapshot of the entire repo. Switching to a branch is like teleporting to that commit.
The default behaviour of AG is that it helpfully offers to merge parts of your current branch’s state to the branch your’e switching to. This is wrong! I ran into it again while working on my PDTS branch: Discovered an unrelated bug, created a new branch from master to fix it and checked it out in AG. The first thing AG wanted to do is add my PDTS classes into my issue branch. Had I not been paying attention, this would have mixed my new feature with bugfix code. Other git clients won’t let that happen by accident. Performing a “Reset local” deleted my PDTS branch’s objects, which is exactly what a branch switch should have done.
@mbtools - what you suggests is diff and merge, a completely different operation than switching branches. If we perform the equivalent of “Reset Local” after switching branches, the options remain the same (reset local asks for confirmation), but at least the default behaviour matches Git. The other thing that Git doesn’t allow you to do is switch branches when you have uncommitted (or at least unstashed) changes, so perhaps this check should be added to abapGit?
Pushing or pulling between or after checkouts does not make sense in git. Perhaps this is desired in order to use abapGit in a similar manner to a file-based VCS, or to use abapGit as a way to manually merge branches? IMHO both of these are ungitlike behaviours.
But it does raise the issue that the branch management & merging of abapGit is not something I’m entirely comfortable with, but that’s quite possibly just my understanding of how it’s implemented. Personally I do that outside of abapGit, mostly using the command line or Eclipse.
@sbcgua - good point about performance. Personally I don’t switch branches often in abapGit so this was never an issue. I just started playing around with AG branches for the first time (hence this issue). And I have noticed that the branch overview of abapGit is particularly intensive. I use Eclipse or the command line to do the ‘git’ stuff and mainly use abapGit to keep SAP in sync. I wonder if it’s feasible when switching branches to do a diff first and only retrieve/process the differing objects?
FWIW, on my command line a diff takes under 0.02 seconds. I can't easily see this in abapGit without switching branches:

The branch overview takes over a minute for abapGit and doesn't show the graph on my system (too big I guess). So in the current setup switching branches is the only way to see this info and I guess it must stay in some form for now,  but I think this should move to the branch overview. This also relates to #3688

the regular git clients will change the entire project environment to represent the current state, when the operation does not cause loss of changed files (or at least thats my experience)
I'm okay with changing the pull/checkout behavior in abapGit under the same assumption.

Let’s say we do the reset local, if there are no current diffs (ie uncommitted changes). If I see it right, there would be no need for popups since there are no changes to be overwritten. And due to the reset local, there would be no diffs afterwards.
The question is then how do I see the diff between branches?

Quite an interesting topic I also thought about the other day before I realised no branches are saved locally.
If AG does in future decide to do a reset local/synchronise objects on branch switch, I agree with @larshp that the switch should not cause loss of locally changed files. Also as @mbtools mentions, AG does not currently store copies of objects locally and thus a diff between branches is not possible.
This said, if this were to be implemented, then stashing of changes would also have to implemented, and a way to diff between current branch state and stashed changes. This implies that local copies would have to be created for the stashed changes. The next question would then be is, if local copies are kept for stashes, why not for branches as well?
In the end if one was to go down this route you might end up breaking the first 3 of AG's design goals.

Interesting discussion, exactly what I was hoping for :)
Rather than a wall of text, I'll add a couple of responses. This issue was intended as a discussion point, because implementing such a change does need several components, which should probably be raised as separate issues.
For starters, I also agree with @larshp and @habrahams , that was precisely my suggestion when I wrote

Git doesn’t allow you to do is switch branches when you have uncommitted (or at least unstashed) changes, so perhaps this check should be added to abapGit?

I think this is important, switching branches should always do this regardless of whether we change the behaviour. Switching forks is a similar case, I think that should do the same, even though it does diverge from Git. Maybe that part of the discussion belongs to #3688

I suggest the following 3 things, to start out:
A: having "pull" or "stage" available only under certain conditions makes things confusing. I rather have the options available all the time and we could remove "reset local" and "force stage". (copy pasta'ed from @mbtools comment above)
B: have pull do reset local if needed, ie. also delete local objects at pull
C: create new issue regarding performance of branch overview

@mbtools, I agree and understand abapGit does not store a local repo. As I see it, the SAP system is the equivalent to the working tree and GitHub etc. is the Git database. See diagram at bottom of this page, SAP+abapGit represents the working tree and the staging area, the database is on GitHub. I suppose it's technically possible to store the entire repo, which could also be done by merging some of abapGitServer's functionality into abapGit. But this is a big undertaking and I think the current model works OK for now.
To see the diff between branches, you have to go to the branch overview and merge one branch onto another, on the confirmation screen you get a side-by-side list of all changes. IMHO this could be better represented by the regular diff list we get when we open a repo and there are changes in the system. Also, the abapGit repo does not work very well on this page, better to try it with a smaller repo.

Just to make it a little more visual, here is an example from abapGitTestBranch, which I have cloned onto my local machine.
Branch feature contains a PROG zbranchtest2 that is not in master.
When I edit it and then checkout another branch that doesn't contain the file, here is how git responds:

If I then commit, and it lets me checkout master, upon which zbranchtest2 vanishes.
Doing the same in abapGit however will happily switch, leaving my change uncommitted and instead offer to add it to my newly checked out branch:

So if there is consensus to change abapGit behaviour to align closer with git, then there are a few issues that could be opened. I think it's important to warn when there are uncommitted changes before switching branches, regardless of whether we change switching behaviour.

Another point for me is that the "working directory" is shared between multiple developers which is not the case in normal git. When multiple developers develop on a branch each in the same system you currently just need to switch to the correct branch and filter the (typically very large) staging screen by transport. In this scenario you never pull anything from the remote and just push. Unless the support for this (I imagine quite common?) scenario was to be dropped, switching branches should never Reset Local in my opinion.

Isn't that an unusual / ungitlike use of branches? I would imagine multiple devs having a branch each on the same SAP system could become very difficult to manage.
The scenarios I thus far envisaged for abapGit are:

Each developer has their own SAP system, as is the case with open source on GitHub. Very gitlike.
Using Git to manage common components in a multi-system landscape. Also git-friendly and an excellent use of AG
Using Git to manage concurrent development when switching between versions, e.g. production fix while working on a new feature

In the third scenario, I would think that all developers in the same system MUST work on the same branch. But then I don't have much real world experience of this scenario with many devs.
I guess the way to keep things manageable is to have smaller repos, so that only small teams are impacted. If a production fix on the dunning report is needed then only the dunning repo needs to be branch-switched and a small team of devs can coordinate this among themselves. I'd imagine this is easier to do than hand-picking large branches with hundreds of objects.

Isn't that an unusual / ungitlike use of branches?

It's very un-git-like.

I would imagine multiple devs having a branch each on the same SAP system could become very difficult to manage.

If you have at maximum one branch per transport objects are exclusively locked in that transport and therefore in that branch (with exceptions where a transport only locks a subset of a file, for example LIMU-METH).

Each developer has their own SAP system, as is the case with open source on GitHub. Very gitlike.

This still seems impossible to me in an ERP context from multiple standpoints (infrastructure, processes like customizing synchronisation / master and application data replication, licensing, interfaces to external systems...).

I guess the way to keep things manageable is to have smaller repos, so that only small teams are impacted. If a production fix on the dunning report is needed then only the dunning repo needs to be branch-switched and a small team of devs can coordinate this among themselves. I'd imagine this is easier to do than hand-picking large branches with hundreds of objects.

I would argue the opposite. If a repo is quite large it becomes increasingly improbable that two changes affect the same objects. But I also don't understand how you can do branch switching or pulling changes at all in this case. Switching your centralized dev environment to the state of production seems like madness to me. To do the hotfix you lock every reset object in a transport that you don't actually want to import anywhere. Objects which might or are very likely to be already locked in some other transport. Also what about the state of the QAS system in between? I imagine if you use the default 3-system CTS-based customer landscape you cannot really pull anywhere at all. Which results in abapGit just being a one-way attachment to the transport system to organize development.
Disclaimer: I don't actually have experience in working with multiple developers on the same abapGit repo either and they would likely just run away after seeing me mostly looking at the loading animation. It is the same scenario though for developing multiple isolated features at the same time in different branches/transports. I just try to get the benefits of git without changing the landscape which results in this compromise.

I have worked with such setups without Git quite, using a 2- or 3-development system landscape and it can get very messy if not done right, but it can work (and Solution Manager also supports several strategies).
With only a single dev system, it does become complicated. I would envisage that this could only be done via ToCs or Transport surgery. The process is something like:

Identify objects that need to be changed
Create a repo with the affected package (master becomes your current development state).
Create a new branch fix
Import production objects.
Do fix
Merge fix branch into master.   <-- and exactly this step is where abapGit shines!

As far as CTS goes, one way would be to have a Transport per repo/package. Before switching branches one would need to delete the current TR, which would automatically result in the creation of a new one for the fix. Then once that has been transported, switch to master, thereby recreating a valid TR that should (hopefully) be equivalent to the old one.
Many ways to deal with that, and many ways to mess it up :-)

What if we had two separate buttons in the branch switch dialog:

switch
switch and pull

@pokrakam I think pull is always an option now, does this fix the issue?

close?

sorry, wrong issue


Base url support

I'm scraping a site that has relative URLs, and Pydantic was reporting validation errors for HttpUrl (which I got from pydantic-string-url so it's serializable).
This fixes the problem by getting the LLM to resolve the URLs.

I think you can add this as part of the description of the field you are extracting or manually update the system prompt, I don't see a reason why this should be enforced by the library.
for example
class Place(BaseModel):
    place_url = field(description="URL to the place, if you find a relative URL make it absolute")

The question is whether instructions that are generally applicable to any scraper shouldn't go into the middleware codebase directly. I have a bunch of other stuff in my prompt, but I submitted this as a PR because I think it's something that any scraper will benefit from.
That said, I can see the argument for keeping the standard prompt lean-and-mean. I'm going to submit a PR for adding text to the system prompt using a setting.
TBH I still think it makes sense to include the base URL in the standard prompt though. I can imagine there are various scenarios where it might be useful and it's a bit of a pain to add it via a setting. What do you think?

I can see how including the base URL would give the model better context, my problem is with auto resolving of relative links, in some cases you want the opposite because there exists code that manually joins the URLs and scrapy already offers this functionality in response.urljoin(), beside I do not trust LLMs to always know which URL you are referring to since a page can have multiple URLs.

Fair enough. How about this? I added a facility to append to the default system message so it can be customized without rewriting the whole thing.

appending makes sense for sure. can you also update the README accordingly?

Not sure if I'm overcomplicating things here, but I realized that I really need support for multiple prompts depending on the response model for a given page.

Yeah you're complicating it, the docstring of a response model class will be taken as part of the schema passed to the model to generate, that does exactly what you need.

Ha! I don't really do that much Python and I forgot you can add a description directly to the class.
How about this then?

looks good, merging


Merge conda-forge/main into rapidsai/main (pt. 8)

Release 2.0.3 ( https://github.com/conda-forge/xgboost-feedstock/pull/132 )
Use noarch: python for Python packages ( https://github.com/conda-forge/xgboost-feedstock/pull/144 )

Thanks Philip! 🙏
Is there something we need to pass to XGBoost to ensure cudart is statically linked?
Asking as the CI log shows:
2024-01-19T10:07:58.9852945Z WARNING (libxgboost,bin/xgboost): $RPATH/libcudart.so.12 not found in packages, sysroot(s) nor the missing_dso_whitelist.

Just a note on the missing DSO warning above, have converted all DSO warnings to errors with PR ( https://github.com/conda-forge/xgboost-feedstock/pull/154 ), which was merged in here with PR ( https://github.com/rapidsai/xgboost-feedstock/pull/47 )
As a result the same missing DSO warning we saw above, will now raise an error on CI
Tested this by opening a PR with the removed conda-forge patch ( https://github.com/rapidsai/xgboost-feedstock/pull/48 ). As expected this raises an error on CI:
    ['  ERROR (libxgboost,bin/xgboost): $RPATH/libcudart.so.12 not found in packages, sysroot(s) nor the missing_dso_whitelist.\n.. is this binary repackaging?', '  ERROR (libxgboost,lib/libxgboost.so): $RPATH/libcudart.so.12 not found in packages, sysroot(s) nor the missing_dso_whitelist.\n.. is this binary repackaging?']

So in the future we will be able to catch this kind of issue on CI


[Bug] Hovrly doesn't show up in menu bar

Using Mac OS Ventura 13.2.1 (22D68)
I don't know what else to say except that it simply doesn't show up i nthe menu bar. Doesn't seem to have any options page either so I am not sure where to go from here.

@ThinkSalat Hi! #24


feature request: nj.argmax and similar function

Numpy has np.argmax, np.argmin, so as a alternative we need those functions

There is an example for contributor or maintainer
>>> a = np.arange(6).reshape(2,3) + 10
>>> a
array([[10, 11, 12],
       [13, 14, 15]])
>>> np.argmax(a)
5
>>> np.argmax(a, axis=0) # at y axis 13>10 and 14>11 and 15>12
array([1, 1, 1])
>>> np.argmax(a, axis=1) # x axis
array([2, 2])


verifier: expose Interface and hide implementation details

The code currently wrongly uses implementation types rather than interfaces, this code fixes that by exposing an interface and ensuring all the types implement it properly.
/assign @wking @jottofar

/retest

/retest
/lgtm

/cherry-pick release-4.6

/retest

/lgtm


create accurate timer for metric flush

clamp timestamp to a precise interval #459

Thank you for this patch. However there is still no explanation of why this is useful and why it can't be implemented in backends if they need it. And the issue you are referencing is closed. I'm happy to discuss this further on issue #459 if there is a need I'm overlooking here.

You are using setInterval() to flush the metrics periodically. But the problem with JavaScript timers is that they’re not very accurate. Thus you have a minimal delay which is escalating with every flush. When the delay overstep a whole second then no data will be available for the affected second which leads to undesired gaps in the graph.
I observed that behaviour on my application every 10 minutes. I am wondering why nobody else is struggling. Maybe the delay is increasing further by the flushed data size or by a poor server.
This patch fixes the appearance of that undesired gaps by using an accurate JavaScript timer and by clamping timestamp to a precise interval which leads to nice and continuous graphs.
(reference: http://www.sitepoint.com/creating-accurate-timers-in-javascript/)

+1 for @thomasmuehlschlegel reason.  we have the same issue.  #513

Merged via command line


UserDoesNotHaveAccessToRepo when trying to create a ticket and assigning it

Gitea version (or commit ref): 1.8.3
Git version: ?
Operating system: Ubuntu
Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[ ] No
[x ] Not relevant

Log gist:

Description
This repo belongs to an organization where some members only have the right to read and write to issues.
When, as a repo admin, want to create a ticket assigned to a member of the organization that is limited to tickets read/write, Gitea fails with just a blank page saying "UserDoesNotHaveAccessToRepo".
If I create the ticket without any assignee, it works, and then I can assign the same person to the ticket without any issue.

@bohwaz could you reproduce that on https://try.gitea.io I think it may has been fixed.

Closing as fixed, please reopen if it is not

Can confirm it's fixed, thanks!


Authentication works in development, but not in release.

When i run the app in Emulator(debug / release mode), firebase_auth with google sign-in app works as intended and the user will be registered in firebase authentication.
However, after the release of app to playstore,  & running of app in actual android device, user registration (firebase_auth) do not works, (of course, google sign-in window pop-ups and after selecting the user account, pop-up closes & the app simply keeps on loading) and the app was stalled.
firebase_auth & google plug-ins are up-to date,
no warning / errors found during run in debug /release mode in emulator,
Find flutter run --verbose.txt
Find flutter doctor -v.txt

Did you register the SHA certificate fingerprints hashes in the firebase console for your release keys?
https://console.firebase.google.com
project settings > general > android app > SHA certificate fingerprints
This list should contain at least 2 hashes one for the debug keys and one for the release keys.

Hi, @Isakdl,
Thanks for the suggestion, it really helped.


"Failed to resolve markdownlint-micromark" when using markdownlint in a browser build

Description
I import markdownlint in a browser build using parcel (the point is to provide markdown linting to some codemirror editor). Something like:
import markdownlint from "markdownlint"

async function m(view) {
    return await markdownlint.promises.markdownlint({
        strings: {
            current: view.state.doc.sliceString(0),
        },
        config: {
            MD013: { // line length
                code_block_line_length: 92,
                code_blocks: true,
                heading_line_length: 92,
                headings: true,
                line_length: 92,
                stern: false,
                strict: false,
                tables: false,
            },
            MD041: false, // first line heading
            MD047: false, // single trailing newline
        },
    })
}

No problem using v0.27. But from v0.28.1 i get at build time:
@parcel/core: Failed to resolve 'markdownlint-micromark' from './.yarn/cache/markdownlint-npm-0.28.1-7ecbfb2613-d606e3f069.zip/node_modules/markdownlint/helpers/micromark.cjs'

  .../.yarn/cache/markdownlint-npm-0.28.1-7ecbfb2613-d606e3f069.zip/node_modules/markdownlint/helpers/micromark.cjs:9:13
     8 |   // @ts-ignore
  >  9 | } = require("markdownlint-micromark");
  >    |             ^^^^^^^^^^^^^^^^^^^^^^^^
    10 |
    11 | /**

I guess it has something to do with CommonJS vs ES6 packaging, but I couldn't find a workaround.
Environment
parcel 2.8.3 to build a browser app (not node.js)
MDL Version
0.28.1
Expected Behavior
build successful
Actual Behavior
build fails: parcel unable to resolve markdownlint-micromark lib/

You should be able to load it with a script tag like the demo does:
https://github.com/DavidAnson/markdownlint/blob/fcb8190781c80b292ac44f6df984326e0e6c69cd/demo/default.htm#L37
https://dlaa.me/markdownlint/

Or maybe you are not using the browser build? In which case, I'm not sure why your scenario is different than standard Node dependency resolution?
For example: https://github.com/DavidAnson/markdownlint-cli2/commit/065430996160a0dbaa957884cba5cac9b2ffb910


fix release notes navigation wrong link

fix navigation wrong link

Thanks!

Thanks!

When will this fix for the broken link be deployed? According to the README, deployment is automatic on merging with master. When looking at GitHub actions, I can see it did deploy for staging but not yet for production.

Both sites are deployed with the fix


Allow floats to be deserialized from ints in tagged unions

This code is hit when deserializing internally tagged unions. Only some type conversions to f32 and f64 were allowed previously, but if you aren't in a tagged union, any number type can be converted to f32 or f64 (see from_primitive.rs).
There is a test in #1748 that now works, and I have also tested that this works in my real app.
Fixes #1748

Any chance someone could review this?

We stumbled on this today :bomb:

We've just hit a different version of this today. Seems like when using untagged serde will the impls from ContentRefDeserializer (not ContentDeserializer).
So in addition to the commit in this PR we need https://github.com/serde-rs/serde/commit/d962cd66389771ef788e726a4b72b227e3fe372f


TrackNtrace in develop branch: Package in sitting is not changed to delayed state even if the package is idle for 10 seconds

Current behavior (how does the issue manifest):
Trackntrace example in develop branch:
When a package is in sitting state for 10 seconds it should automatically be changed to delayed state. The state of the package is not changing.
Minimal steps to reproduce the problem (not required if feature enhancement):
Run the example in the readme .
Run the below command :
curl http://localhost:7777/moveevent?packageid=PACKAGE1&targetstate=sitting
The package stays in sitting state even after 10 seconds.

fix is merged into develop by PR #92


Cut over to micromamba

Bullets have been failing because micromamba environment solve is broken.
This:

upgrades reusable actions to 0.7.0 for micromamba
drops mimiconda for micromamba
bumps python to 3.10

bullets workflow run from this PR: https://github.com/ASFHyP3/bullets/actions/runs/3988923754/jobs/6840715020


github ssh testing

Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

git ssh testing

Not appropriate for main branch.


Replace shield icons for Mexican federal highways

This PR replaces the shield icons for federal highways of Mexico. Since this shield is portrait-oriented and may contain up to 7 characters, I took the same approach from #675 and made the 2-digit variant 16 pixels wide, with the 3- and 4-digit variants stretched to 22 and 28 pixels, respectively.

Screen shot before and after:


fix(tests): fix tests on newer nodes by upgrading vows

This seems to fix tests in node v10 and later.
Every other of our dependencies uses the ^ semver selector, so let's
use that here too.

Mhm, can't merge this. This unfortunately needs a bit of more effort. vows was intended to be fixed to this version, since there is a major bug in vows that has never been fixed. I do not recall exactly the problem, but here is the commit where I downgraded it again: https://github.com/db-migrate/node-db-migrate/commit/871abc4e7d76a39d0ab01cb6b1416267858ba5fc
So the effort needed here is to replace vows with lab, just lke the other tests that have been migrated already. If you want to give that a shoot, that would be awesome of course :)

Oh, no worries, did not realize this.
Hm, I actually do have some spare time and interest in migrating things away from vows in general. I'll try to get the migration done this week.


feat: translate module

Closes #21
Description:

Since telegram doesn't provide a  to save the state of a user and since the project doesn't use any database, a workaround is to show the destination language, and then providing a URL to Google Translate with pre-filled and translated data.

https://github.com/the-vision/jarvis-core/issues/25 needs to be resolved first.

@swapagarwal @tanisha03 @TeAmP0is0N Is text tripping of intents is possible, as in this PR? I have stripped the text to extract the inputs for the intent. Stripping message.text works on my development, but is this implementable in the production bot?

@swapagarwal @tanisha03 @TeAmP0is0N I have made the necessary changes. Please review.


Make it usable with parcel nightlies

Hi,
Could you please change the engines requirements in package.json so that this plugin is usable with parcel nightlies?
Here's what happens now:

🚨 Build failed.

@parcel/core: The plugin "parcel-resolver-ignore" is not compatible with the current version of Parcel. Requires ">=2.0.0" but the current version is "2.0.0-nightly.1163+55140b640".

  /.../node_modules/.pnpm/parcel-resolver-ignore@2.1.3_parcel@2.0.0-nightly.1163/node_modules/parcel-resolver-ignore/package.json:7:5
    6 |   "engines": {
  > 7 |     "parcel": ">=2.0.0"
  >   |     ^^^^^^^^^^^^^^^^^^^
    8 |   },
    9 |   "keywords": [

 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.

This is of course due to the semver nonsense. There are several tickets in the parcel repo related to their nightlies breaking because they didn't have versions that could be properly compared using semver. This was fixed by their build script manually adjusting all their package.jsons when releasing.
I'm sure you can find a version compare string that works. I'm just too tired now to think.
Thank you!

Hi @folknor. Thanks for reaching out.
Could you please describe what usecase this would serve?
What makes you use/rely on nightly versions of Parcel?

I no longer have a usecase for using nightlies. For years they were working on 2.0 without releasing, and during that time I was using them.
In any case even when I manually changed the engines field in your package.json it didn't stop the default resolver trying to pull in 'Buffer'
Installing buffer...

@parcel/resolver-default: Auto installing polyfill for Node builtin module "buffer"...

  /.../node_modules/.pnpm/fabric@5.2.4/node_modules/fabric/dist/fabric.js:51:30
    50 |  */
  > 51 | fabric.isLikelyNode = typeof Buffer !== 'undefined' &&
🚨 Build failed.

@parcel/core: Failed to resolve 'buffer' from<EMAIL_ADDRESS>
  /.../node_modules/.pnpm/fabric@5.2.4/node_modules/fabric/dist/fabric.js:51:30
    50 |  */
  > 51 | fabric.isLikelyNode = typeof Buffer !== 'undefined' &&
  >    |                              ^^^^^^
    52 |                       typeof window === 'undefined';
    53 |

@parcel/resolver-default: Failed to install buffer: pnpm failed to install modules

  Error: Failed to install buffer: pnpm failed to install modules
      at $32ea97b83cf5d752$var$install (/.../node_modules/.pnpm/@parcel+package-manager@2.0.0-nightly.1171_mahhrzjiewej44m3u7ph6mg4jy/node_modules/@parcel/package-manager/lib/index.js:3690:15)
      at async $b0fd219fea43bcac$export$2e2bcd8739ae039._runFn (/.../node_modules/.pnpm/@parcel+utils@2.0.0-nightly.1171/node_modules/@parcel/utils/lib/index.js:33572:13)
      at async $b0fd219fea43bcac$export$2e2bcd8739ae039._next (/.../node_modules/.pnpm/@parcel+utils@2.0.0-nightly.1171/node_modules/@parcel/utils/lib/index.js:33565:9)

 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.

Even with ```
"resolvers": [
"parcel-resolver-ignore",
"..."
],

And
```	"parcelIgnore": [
		"fabric.js"
	],
-- OR
	"parcelIgnore": [
		"buffer"
	],
-- OR
	"parcelIgnore": [
		"Buffer"
	],

So I found another solution,
	"alias": {
		"Buffer": false,
		"buffer": false
	},

Thanks for the update and sharing your workaround.
Closing this since it's internal bug.


Examples Needed

Can you put up an example working with React-hook-form and its Controller?

It's simple:

Create a component and pass a name to it as props
Use 2 hooks like this:

const formContext = useFormContext();
  const { field } = useController({
    ...formContext,
    name,
  });

Important CodeField props:

<CodeField
    value={field.value}
    onChangeText={handleChange}
    cellCount={cellCount}
/>

handleChange function:

  const handleChange = text => {
      field.onChange(text);
  };

This are the basics. For custom separators you will need to create some logic to add it white text changes.

how do you handle the custom onChangeText in this example?
onChangeText={e => {
onChange(e);
console.log("🚀 ~  autoComplete:", e);
}}
Every text change  e is the value of text input. How can we add the (maskedText, unmaskedText, obfuscatedText) onChangeText handler in this case?

Hi @TuvalZit18 you can use it like below:
<Controller           control={control}           name="workPhone"           render={({ field: { onChange, onBlur, value, ref }, fieldState }) => (             <TextField               ref={ref}               containerStyle={$textField}               autoComplete="tel"               keyboardType="phone-pad"               placeholderTx="profile.workPhone"               returnKeyType="next"               status={fieldState.error?.message ? "error" : undefined}               helper={fieldState.error?.message}               onSubmitEditing={() => setFocus("practiceAreas")}               onBlur={onBlur}               {...useMaskedInputProps({                 value,                 onChangeText: (masked, unmasked, obfuscated) => {                   onChange(unmasked)                 },                 mask: Masks.USA_PHONE,                 placeholderFillCharacter: "*",               })}             />           )}         />
more information here: https://react-hook-form.com/docs/usecontroller/controller


Translation domain in base.html.twig

Hi and thanks for the great work, the Bundle looks very promising!
Today I encountered a problem with it: whenever trying to display a data table, I ran into the following error, even with the simplest setup: EmptyNode cannot have children
After some investigating, it looks like the problem stems from the base.html.twig template, where, on line 218, the trans transformer has no parameter:
{% block pagination_per_page_message 'Items per page'|trans %}

I did not really have much time to look into it, so my temporary solution has been to just remove |trans from this line.
I'm just signalling it here so that you're also aware of it, and if I don't have the time to look into it and open a PR soon, maybe someone else can? Or maybe I did something wrong in the setup on my end?

Hey @Narthall, thanks for the report. Never seen that before, but I'll try to reproduce it.

After some investigating, it looks like the problem stems from the base.html.twig template, where, on line 218, the trans transformer has no parameter:

The trans does not require additional parameters - in this case we are just piping the Items per page string as the first argument. Translation parameters and domain are optional (although domain is set by trans_default_domain on top of the template).
The error stack trace indicated that this line was causing the issue?

I've tried multiple cases and couldn't reproduce it. Disabling the translator works fine as well.
I noticed similar error somewhat related with the Symfony TwigBridge: https://github.com/twigphp/Twig/issues/4480
I'm working on Symfony 6.4 LTS, and looking at the issue above, this error was present in 7.2 (I think?). Please try updating if you're using it.
Thanks!

Hey, many thanks for your answer. It seems that indeed, going from Symfony 7.1 to 7.2.1 fixed my problem.
Have a great day!


Rework Junctions to be more node like in their event handling

The first iteration of Junctions were drawn as a single blob. The mouse interactions with that blob had to handle both moving and wiring. That led to it behaving node-like in some cases (click-drag to move) and port-like in others (ctrl-click to start wiring). But it also meant there was a bunch of half-duplicated code to reproduce those behaviours as needed.
Based on feedback on 3.0.0-beta.1, this PR changes Junctions to be more consistent in their UX. An added benefit is a lot of junction-specific logic could be removed and the existing node/port event handles reused (with a couple minor special cases for Junctions).
With this PR:

the appearance of a junction changes when you hover over it to reveal a more familiar node+port arrangement (albeit still at a smaller scale)
The ports can then be interacted with in exactly the same way as node ports. All of the established mouse actions (such as ctrl-click to quick add, shift-click to detach) just work.
The junction can be moved by dragging the main body
Shift-click to the LH edge selects upstream nodes, RH edge selects downstream nodes, center selects whole flow
It also addresses some inconsistencies in behaviour when inside a group - including #3583

Coverage increased (+0.03%) to 68.456% when pulling a22f569ca0b9ecbbdb53599bcd1129226daa3cca on junction-rework into 8043f5d8653d905d97563d03c5398b05fbcdf8d2 on master.


AppVeyor: use stock node and "ci-scripts"

use stock node to build (not deprecated custom Mapbox version of node)
use appveyor.yml and build script downloaded on the fly from https://github.com/mapbox/ci-scripts/tree/master/node
uses build matrix x86/x64:

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>node@8

Coverage remained the same at 86.312% when pulling e9383b2643b7a1e3c07bc2e32ca1f3377ce8e59a on stock-node into f1456b1cc96e89b82ac37b1896f23ef14aff80b6 on master.

Coverage remained the same at 86.312% when pulling 903a671b46303f44ee6d6a582360c986e90eca6b on stock-node into f1456b1cc96e89b82ac37b1896f23ef14aff80b6 on master.

Coverage remained the same at 86.312% when pulling d26562f2b4047ef0f9247c9f0fd50fb20b4cbad6 on stock-node into f1456b1cc96e89b82ac37b1896f23ef14aff80b6 on master.

Coverage remained the same at 86.312% when pulling 8d2d973270b3cfb2d194494adab49c5a634dbd71 on stock-node into f1456b1cc96e89b82ac37b1896f23ef14aff80b6 on master.

Coverage remained the same at 86.312% when pulling d5a6dfcd969ca456b8c55988b84989e8052e6646 on stock-node into f1456b1cc96e89b82ac37b1896f23ef14aff80b6 on master.

We're switching away from Appveyor so I'm closing this 🙂


Fix version URLs for custom installs

Fixes #2162, while maintaining compatibility with production RTD.
A new setting IS_CUSTOM_INSTALL is provided as a global switch for any functionality specific to custom installs, so that production deployment of RTD is unaffected.

I'm generally -1 on adding a new setting. We should make the get_absolute_url work properly on production RTD, and it isn't necessary.

Yeah I'm also not in favor of adding new configuration unless absolutely necessary, but I did not gather from the big ticket that the intention was to make get_absolute_url work everywhere.
Sounds good though!
Op 1 aug. 2017 om 23:58 heeft Eric Holscher <notifications<EMAIL_ADDRESS>het volgende geschreven:
I'm generally -1 on adding a new setting. We should make the get_absolute_url work properly on production RTD, and it isn't necessary.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/rtfd/readthedocs.org/pull/3023#issuecomment-319509196, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ADIcj0CeC1faPTDnZzxUjSJB0TmxkvtXks5sT597gaJpZM4Ops5e.

👍  to fixing absolute url. Seems like this can be closed and superseded by work there. Closing this for now, but feel free to reopen.

@agjohnson is there a ticket which tracks that work?


justfile

Another item that I do not know if you will like or not: adding a justfile.
I always liked the idea of npm-scripts, but the actual behavior is quirky. Granted: there are not (yet) any npm-scripts inside package.json that contain any characters or behaviors that will trigger weird behaviors & artifacts, but it's a thing. So I moved from old-school Makefile (no fun) to justfile (very intuitive & powerful). I've also used pyinvoke, Taskfile, Magefile, and others that I'm forgetting; but I have personal preference for justfile -- it's just sooooo clean & easy. 😄
Thoughts...?

Made a justfile. Assuming the just program is installed, then typing just at prompt gives list of scripts. And just SCRIPT executes it. Pic shows just test-js tier_0, which expands to:
WASM_BINDGEN_TEST_TIMEOUT=60 wasm-pack test --node -- --test tier_0
Pic has arrows to commands I entered into terminal.

Thoughts...?

Adjusted recipe test-js to use param name TEST instead of TESTS and have default value of ALL instead of an empty string -- more clear.

Looks way nicer than make files. As long as it's not the only alternative I'm all for it 👍

Awesome! I'll put in a PR so others can use my justfile, too.
PR #24 closes this issue.


Navigator com.google.accompanist.navigation.animation.AnimatedComposeNavigator@1b25ab is replacing an already attached com.google.accompanist.navigation.animation.AnimatedComposeNavigator@9c08e21

Describe the bug
When using the new Navigation-Animation component, I come across the following crash:
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: xxxxx.androidApp, PID: 22863
    java.lang.IllegalStateException: Navigator com.google.accompanist.navigation.animation.AnimatedComposeNavigator@1b25ab is replacing an already attached com.google.accompanist.navigation.animation.AnimatedComposeNavigator@9c08e21
        at androidx.navigation.NavigatorProvider.addNavigator(NavigatorProvider.kt:109)
        at androidx.navigation.NavigatorProvider.addNavigator(NavigatorProvider.kt:87)
        at com.google.accompanist.navigation.animation.NavHostControllerKt.rememberAnimatedNavController(NavHostController.kt:40)
        at xxxxx.androidApp.MainActivity$onCreate$1.invoke(MainActivity.kt:68)
        at xxxxx.androidApp.MainActivity$onCreate$1.invoke(MainActivity.kt:49)

To Reproduce
The sample here works fine, so I tried to find the reason for the crash. I found that passing my viewmodel inside a composable is the reason. I have multiple viewmodels for my screens, but I also have one viewmodel which sets up Broadcast receivers for my activity that need to be accessed across multiple screen for the whole runtime of the app. So for example when I do this, it crashes:
@OptIn(ExperimentalAnimationApi::class)
@Composable
fun MainLayout() {
    val appViewModel: AppViewModel = viewModel()
    val navController = rememberAnimatedNavController()

    AppTheme {
        Surface {
            AnimatedNavHost(navController, startDestination = "start") {
                composable("start") {
                    StartScreen(appViewModel = appViewModel) {
                        when (it) {
                            StartScreen.SignIn -> navController.navigate("SignIn")
                            StartScreen.SignUp -> navController.navigate("SignUp")
                        }
                    }
                }
            }
        }
    }
}

But when I remove the appViewModel as argument, it works fine (except that I don't got a reference to it in my StartScreen composable). When using the normal NavHost, it also works without any issue. What am I missing?
Expected behavior
No crash.
Environment:

Android OS version: Android 11 (Pixel Experience)
Device: Xiaomi Mi Mix 2S
Accompanist version: 0.16.0

@jbw0033 I think we should memoize the AnimatedComposeNavigator instance for this, currently, we create a new one on every composition.
@ln-12 In the meantime you can use this to obtain a NavController with an AnimatedComposeNavigator:
@ExperimentalAnimationApi
@Composable
public fun rememberAnimatedNavController(): NavHostController {
    val navController = rememberNavController()
    val animatedNavigator = remember(navController) { AnimatedComposeNavigator() }
    return navController.apply {
        navigatorProvider += animatedNavigator
    }
}

@jossiwolf Thanks for your super fast reply, that's awesome! With your code, it works fine now, thank you :)


Fix reinvite when using authorizationUser

Currently hold/unhold are not working when using a SIP backend that requires an authorizationUser in the UA configuration. When the reinvite gets sent, it does not have the authorization header set, so the 401 auth flow never happens.
This fix adds the authenticationGuard to the re-invite-user-agent-client receiveMessage method (like the regular invite). Which appears to fix the hold issue.
However, after adding this, unhold failed to work because the cseq was not incrementing correctly. It appeared this was due to the "options.cseq" being passed in to dialog.ts createOutgoingRequestMessage() which did not set the internal localSequenceNumber state, resulting in the same cseq being used for successive messages.
This fix also adds logic to set the localSequenceNumber to the passed in options.cseq which appears to increment it properly.
NOTE: For some reason this second change is causing several unit tests to fail with:
Error: Jasmine Clock was unable to install over custom global timer functions. Is the clock already installed?

for reasons that are not very clear to me.
Any thoughts on whether this is the appropriate fix for reinvite when using an authorizationUser are welcome, but so far, these couple of changes are working in our setup.
Final note: We are currently using 0.14.6 (waiting for API to stabilize in 0.16), so if this fix gets merged, we'd want to backport it to that version if possible.
Thanks in advance for your feedback.

The PR looks good except for the failing tests. I think that the first failure is a "true" failure. So accept after a reliable progress is not working properly anymore. I think that fixing that will fix the timer failing to install.

Took some time to dig into the failing tests. It appeared my initial change of synchronizing the local sequence number in createOutgoingRequestMessage() was a bit too heavy handed, and the cseq was being incorrectly set when a BYE was called after a PRACK (during the tests' afterEach()).
I've removed that change, and added a function that updates the local sequence number on a dialog, and I call that in the re-invite receiveResponse when it's handling a 200, and that appears to be working
(and should have much less functional impact).
I've tested hold/unhold against backends with and without authorization and both appear to be working as far as I can tell.
Let me know if there's anything else you'd have me change.

Has anyone had a chance to look at this further?

Hey,
Sorry about the delay. I've pulled this into a branch of mine, modified it a bit, and added a test.
While your implementation works, I wanted to cover the general case of any in dialog requests being authenticated, not just re-INVITE. I also wanted to update the local sequence number based on what the dialog knows it to currently be instead of depending on the response message which seems a bit fragile (it assumes the CSeq is the response is the most current which may not be true and it also assumes the remote peer is behaving correctly).
I should have a pull request up tomorrow which includes all that and I believe that will get onto master and thus into the next 0.15.x release which I understand is coming soonish.

Hi @jahndis,
Can you test or take a look at #787 and let us know if it satisfies what you are looking for? If it does, we'll close this PR.

@james-criscuolo I pulled the relevant changes into the 0.14.6 branch we are using, and it all appears to work fine. Feel free to close this PR.
Is there a possibility of getting the changes you made backported to the 0.14 release branch?
Thanks for taking a closer look!

Thanks for testing, I'll close this PR. In terms of backporting, 0.15.x is a drop replacement for 0.14.x, so you should have no issues updating, and I believe the only changes to the old API are non-breaking bug fixes, so you are likely better off updating anyway.


feat: show next steps for draft reports

Details
Added support for showing the next steps of a draft report on the header of a money request report. It only contains support for showing the next step message (no actions or buttons).
Fixed Issues
$ https://github.com/Expensify/App/issues/28767
Tests
To test this currently, it requires some setup. Check the dropdown below. Use Staging server.

Required setup

Open or create a money request report connected to a workspace and take note of its ID, which is present in the URL
Go to MoneyReportHeader.js and copy paste the code below inside the useEffect with empty dependency array. Use the report ID of the previous post. This will make the report have the status of open/draft.
Open the money request report from the workspace report
Set the app to offline (so that the report info is not updated)
Refresh the page when inside the money request report page

Onyx.merge('report_<REPORT_ID>', {
    statusNum: 0,
    stateNum: 0,
});

Open a money request report that is currently in draft state
Check that the header contains a next steps section. The next steps message might not match the draft state since this state is forced.

[x] Verify that no errors appear in the JS console

Offline tests
Similar to the one above
QA Steps

Open a money request report that is currently in draft state
Check that the header contains a next steps section.

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

With bigger text:

Android: mWeb Chrome

With bigger text:

iOS: Native

With bigger text:

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

Oops, conflicts 🏃♀

Reviewer Checklist

[X] I have verified the author checklist is complete (all boxes are checked off).
[X] I verified the correct issue is linked in the ### Fixed Issues section above
[X] I verified testing steps are clear and they cover the changes made in this PR

[X] I verified the steps for local testing are in the Tests section
[X] I verified the steps for Staging and/or Production testing are in the QA steps section
[X] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[X] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[X] I checked that screenshots or videos are included for tests on all platforms
[X] I included screenshots or videos for tests on all platforms
[X] I verified tests pass on all platforms & I tested again on:

[X] Android: Native
[X] Android: mWeb Chrome
[X] iOS: Native
[X] iOS: mWeb Safari
[X] MacOS: Chrome / Safari
[X] MacOS: Desktop

[X] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[X] I verified proper code patterns were followed (see Reviewing the code)

[X] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[X] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[X] I verified that comments were added to code that is not self explanatory
[X] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[X] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[X] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[X] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[X] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[X] I verified the JSDocs style guidelines (in STYLE.md) were followed

[X] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[X] I verified that this PR follows the guidelines as stated in the Review Guidelines
[X] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[X] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[X] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[X] If a new component is created I verified that:

[X] A similar component doesn't exist in the codebase
[X] All props are defined accurately and each prop has a /** comment above it */
[X] The file is named correctly
[X] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[X] The only data being stored in the state is data necessary for rendering and nothing else
[X] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[X] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[X] All JSX used for rendering exists in the render method
[X] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[X] If any new file was added I verified that:

[X] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[X] If a new CSS style is added I verified that:

[X] A similar style doesn't already exist
[X] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[X] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[X] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[X] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[X] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[X] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[X] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[X] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

@mountiny I'll take over this issue from Ana

@mountiny done 🙂

I think the double border is still there in wide view

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/mountiny in version: 1.3.88-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/chiragsalian in version: 1.3.88-11 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


SetExclusiveACL

Whats the difference between SetExclusiveACL(new Int32[] { 1 }) and  SetExclusiveACL(new Int32[] { 0 }) ?

Using 0 tells EasyHook to use GetCurrentThreadId, 1 would match a thread with an ID of 1


Data usage policy

Related to #2
As the annotations were done, and will be done by volunteers, the data should be open to the public. Formally, we should provide some sort of guideline or license for our data to ensure that will be used and distributed in a good manner.

I'll do research on this and come up with some options.

Generally this policy should be applicable for the whole codeforthailand org.

Thanks a lot!

So I checked with Wikipedia, World Bank, Data.gov, Data.gov.uk, Data.go.th, and OpenStreetMap.
I would say Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA) would be best for these reasons?

People are generally familiar with Creative Commons licenses already
Has ShareAlike restrictions, which does not restrict commercial use, but forces any improvements to be shared alike.

Also, this license would apply to data only. Code should be licensed separately.
My findings below...

Note that these are the default licenses for each site with an "unless stated otherwise" clause.
Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA) (license)

You are free to: Share, Adapt
As long as you: Attribute, ShareAlike
Used by: Wikipedia

Creative Commons Attribution 4.0 International (CC-BY 4.0) (license)

You are free to: Share, Adapt
As long as you: Attribute
Used by World Bank Data Catalog and World Bank Open Data

Open Government Licence v3.0 (license)

You are free to: Share, Create, Adapt
As long as you: Attribute
Used by data.gov.uk

DGA Open Government License (license)

You are free to: Share, Create, Adapt
As long as you: Attribute
Used by: Data.go.th

Open Database License (ODbL) version 1.0 (license)

You are free to: Share, Create, Adapt
As long as you: Attribute, Share-Alike, Keep open
Used by: OpenStreetMap

Remark: Data.gov doesn't really have a proper license but it says it's offered free and without restriction.

Hi,
Thanks a lot. I think we can go with CC-BY-SA. How should we announce this?
What do you think if we add CC-BY-SA's icon in README.md?

Yeah readme should be good. Since there should be separate licenses between data and code, but we have them in the same repo. How about also these?

Put CC-BY-SA icon in README like you mentioned, but also mention it is for data.
Mention code is licensed under MIT in README too
Put license notice in the working spreadsheet
Put CC-BY-SA text in a LICENSE file in /static/data

I can do all those 4. Just need a second opinion before doing so.

sounds good to me!


(Needs Discussion!) Remove useBrush hook? We could instead add brushMode and brushColor props

Currently, users can use useBrush hook to set brush mode or set brush color.
Why don't we just simply create brushMode and brushColor props in DottingProps?
This will allow users not have to use useBrush hook if they simply want to just change brush color or brush mode.

Closing this issue since it was applied to ver1.1.1


feat: add Kraken exchange adaptor

Description
This change adds an exchange adapter for Kraken to pull the USDC/USD rate.
Other changes

Renamed devReportConfig.txt to devPriceSourcesConfig.txt

Tested

Added unit tests to verify logic works as expected
Ran oracle locally to verify price retrieved from Kraken was correct

Related issues

Fixes Issue 106

Backwards compatibility
N/A

LGTM 🚀


Ability to create dashboards

When there are too many SQL reports to be tracked the explorer becomes un-manageable.
Having an ability to create beautiful dashboard would be great by combining charts from different queries would be wonderful.
Something like dashboards in blazer

A simpler, but still useful, would be allow reports to be part of a group/sub-group hierarchy; and also allow them to be tagged.  That would make filtering fairly quick.

Some organization (though definitely not dashboards) is sorta-kinda already possible through a not-very-well documented feature: You can name queries like this:
topic - title
and the explorer list view will build pseudo-folders. Here's a screenshot -- you can see that the "Marketing" heading has 9 queries and is collapsed. You can collapse/uncollapse topics by clicking the header.

Dashboards are probably not in the cards for a long time to come, but I would love to make large numbers of queries more manageable.


Update MD file on new branch 2017-19-29_07-11-23

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestRef.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


swift-build-sdk-interfaces: fix deprecated AbsolutePath.init

As AbsolutePath.init(_:) is deprecated, we should use throwing AbsolutePath.init(validating:) instead to fix the warnings.

@swift-ci test


Auth::user() seems to be not working in v17 (AfterAuthenticateJob)?

Hello. @hamzasgd1
You can try this
public function __construct($shopDomain)
{
    $this->shopDomain = $shopDomain['name'];
}

public function handle()
{
$shop = User::where('name', $this->shopDomain)->firstOrFail();
}

It won't be available due to the request, if you're running it inline. Use shopdomain.

<?php namespace DummyNamespace;

use stdClass;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Osiset\ShopifyApp\Objects\Values\ShopDomain;
use Osiset\ShopifyApp\Storage\Queries\Shop as ShopQuery;

class DummyJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Shop's myshopify domain
     *
     * @var ShopDomain|string
     */
    public $shopDomain;

    /**
     * The webhook data
     *
     * @var object
     */
    public $data;

    /**
     * Create a new job instance.
     *
     * @param string   $shopDomain The shop's myshopify domain.
     * @param stdClass $data       The webhook data (JSON decoded).
     *
     * @return void
     */
    public function __construct($shopDomain, $data)
    {
        $this->shopDomain = $shopDomain;
        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(ShopQuery $shopQuery)
    {
        // Convert domain
        $this->shopDomain = ShopDomain::fromNative($this->shopDomain);

        // Get the shop
        $shop = $shopQuery->getByDomain($this->shopDomain);

       // Your code
    }
}

Something like this should work fine. I'll close for now if no other issues :)

@osiset @arpit-golakiya Thanks

<?php namespace DummyNamespace;

use stdClass;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Osiset\ShopifyApp\Objects\Values\ShopDomain;
use Osiset\ShopifyApp\Storage\Queries\Shop as ShopQuery;

class DummyJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Shop's myshopify domain
     *
     * @var ShopDomain|string
     */
    public $shopDomain;

    /**
     * The webhook data
     *
     * @var object
     */
    public $data;

    /**
     * Create a new job instance.
     *
     * @param string   $shopDomain The shop's myshopify domain.
     * @param stdClass $data       The webhook data (JSON decoded).
     *
     * @return void
     */
    public function __construct($shopDomain, $data)
    {
        $this->shopDomain = $shopDomain;
        $this->data = $data;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(ShopQuery $shopQuery)
    {
        // Convert domain
        $this->shopDomain = ShopDomain::fromNative($this->shopDomain);

        // Get the shop
        $shop = $shopQuery->getByDomain($this->shopDomain);

       // Your code
    }
}

Something like this should work fine. I'll close for now if no other issues :)

I will do this same in my controller but it give error as shown in below
"Unresolvable dependency resolving [Parameter #0 [  $shopDomain ]] in class App\Http\Controllers\SetupController"

kindly help me how can I use auth()->user() in my controller


Social Media Metrics Tracking

Opening this to request collaborative troublemaking in the social media metrics/dashboard space. Notes I can share (and others can modify/correct):

Work/progress has been tracked in this /content ticket since Aug 2017 for leveraging Twitter data piping into devrel-stats.elastic.co
Current request is to capture Twitter engagement data (e.g., retweets, likes, all tweets from @elastic) which does come [with some challenges] (https://github.com/elastic/content/issues/1877#issuecomment-373553813) for visualization and analysis
Note that the Logstash Twitter input does have its issues as well, but there is a fix requested
Beyond that, Facebook and LinkedIn ingestion was requested, but seem to be lower priority compared to the bullet above
An Elastic{ON} presentation from Renu and Katrina is available here
The main need is to get some dedicated engineering/dev muscle behind this -- should be a reasonable amount of effort

@beernlinux I'm happy to talk through internal resourcing and possible contract resourcing here depending on how we want to collaborate here.
My impression is that the impact for completion here is high for a moderate level of effort.


Remove function initial draft

Initial push for Remove( DataSource, Record1 [, Record2, ... ] [, All ] ) implementation.

Still working on a better way to find matching records.
Working on adding extra test cases for SDK, compiler and interpreter.
RemoveAsync returns a Boolean. Maybe there is a better way.
Good approach to get a range of elements from array.
Any other improvements.

:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Connectors.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Core.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Interpreter.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.LanguageServerProtocol.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Transport.Attributes.dll

            Message = $"It is not possible to call {methodName} method from TableValue directly.",

nit:
better error message,
"{methodName} is not supported on this table instance."

Refers to: src/libraries/Microsoft.PowerFx.Core/Public/Values/TableValue.cs:91 in 53bdf07. [](commit_id = 53bdf07658e027e3cdd82311cf170251cf3c3f4a, deletion_comment = False)

:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Connectors.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Core.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Interpreter.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.LanguageServerProtocol.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Transport.Attributes.dll

:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Connectors.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Core.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Interpreter.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.LanguageServerProtocol.dll
:heavy_check_mark: No Binary Compatibility issues for Microsoft.PowerFx.Transport.Attributes.dll


Add continuous integration (CircleCI)

Changes
This pull contains the following cool changes.

[x] Configure CircleCI; dashboard viewable at https://circleci.com/gh/JDTeamAcetabulum/qna

Everyone should get access to the settings automatically as a part of the JDTeamAcetabulum organization
I would recommend "watching" this project

[x] Generate a test coverage report with Coveralls viewable at https://coveralls.io/github/JDTeamAcetabulum/qna/
[x] Automated deployment to heroku when master is merged (I haven't tested this)
[x] Slick README badges

Since CircleCI integrates with the Github status API, you should start seeing it info from it on commits and pull requests.
I was meaning to set up automatic docs generation, but rdoc has been doing weird stuff and I think this is enough for one pull.
Context
Closes #66.
Testing
Take a look at the interfaces for CircleCI and Coveralls and see that all the data is there and looks right.
Pre-merge checklist

[x] Build succeeds locally and in CI
[x] Proper documentation
[x] Tests (N/A)
[x] Git history clean

Changes Unknown when pulling<PHONE_NUMBER>5a1176de9791c26bede0edf413e26b on strburst-circleci-config into ** on master**.

Changes Unknown when pulling 3ab8c42bda57e3a5768406aacdbbf80514385014 on strburst-circleci-config into ** on master**.


Allowed memory size Fatal error

memory_limit = 128m

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 123731968 bytes) in Unknown on line 0.

pumped to 500mb

PHP Fatal error:  Allowed memory size of 524288000 bytes exhausted (tried to allocate 517996544 bytes) in Unknown on line 0

to reproduce, just add {{ var_dump(url()) }}  to a view or add var_dump(url()); to routes.php and browser will crash.

You cannot call the url function from within that file.

i understand that and even though it makes no sense to use it, however i just made a ticket as this error been popping up quite some time now and i thought it was related only to the multi file upload but apparently its connected to other things aswell.


Feat: Add a version check on apps

Add a new configuration parameter of nodeVersion on the apps. If the user is running a different version of the node, we should display a warning message.  We should also allow node ranges similar to semantic versioning.

Can i take this ?

hi im interested in this one

sure @TedZy829, assigned to you!


Force showing animation even if data are the same

Hi,
In my application the user has the ability to select a value from a drop-down, after that an api call is triggered and the result is shown into the pie table.
If the result has no value i set the pie to a default value: data: [0] label: ['no results']
The problem is that if an user has first selected an item with no results and then select another item from the drop-down and it has no result the animation is not being rexecuted.
Is there anyway to force the Pie chart to rerender the animation even though the data are not being changed?

@DrRek can you please provide a link to a sandbox with a basic working version of the use-case you are describing?


LS diagnostic not sent for standalone Java file

Let's make sure issue is not already fixed in snapshots first.

[x] I verified I can reproduce this issue against latest snapshots build

Steps to reproduce
From a fresh installation and clean workspace:

File > Open File > browse to a basic functioning Java file
Verify hover, completion... to verify LS is functioning

I tried

insert a random wrong character at some point

I expected: an error report about the syntax error
But got: nothing
Here is some relevant log output form (<workspace>/.metadata/.log)
The language server logs show that JDT-LS does not send any diagnostics for that case.
Tested under this environment:

OS & version: Fedora Latest
Eclipse IDE/Platform version: Latest I-Build
...

Community

[x] I understand reporting an issue to this OSS project does not mandate anyone to fix it. Other contributors may consider the issue, or not, at their own convenience. The most efficient way to get it fixed is that I fix it myself and contribute it back as a good quality patch to the project.

Progress note: a patch in JDT-LS can help, but I'm not sure it's the best fix yet.
In BaseDocumentLifecycleHandler, replace
		List<ICompilationUnit> validateCopy =
			preferenceManager.getPreferences().isValidateAllOpenBuffersOnChanges()
				? Arrays.asList(JavaCore.getWorkingCopies(null)) : new ArrayList<>(toValidate);

with
		LinkedHashSet<ICompilationUnit> validateCopy = new LinkedHashSet<>(toValidate);
		if (preferenceManager.getPreferences().isValidateAllOpenBuffersOnChanges()) {
			toValidate.addAll(Arrays.asList(JavaCore.getWorkingCopies(null)));
		}

to force dirty documents to be validated in any case.

I think the fix for #104 does cover this problem. But still I submitted https://github.com/eclipse-jdtls/eclipse.jdt.ls/pull/2886 to just let diagnostics flow on open (instead of having to go through an edit)

This seems fixed with recent changes in JDT-LS.


Where is dwGlowObjectManager?

Where is dwGlowObjectManager offset? Is it called differently?
As well as m_iGlowIndex.
Edit: since I am dealing with glow, can anybody tell me how to get the glow struct offsets

Added in 96a378be0b59b4bd54ab4ac034548d1aaa01f2fb


Upgrading deps, upgrading deprecated usages

Codecov Report

Merging #562 into master will increase coverage by 0.01%.
The diff coverage is 85%.

@@             Coverage Diff              @@
##             master     #562      +/-   ##
============================================
+ Coverage     73.63%   73.65%   +0.01%
  Complexity      898      898
============================================
  Files           175      175
  Lines          4021     4031      +10
  Branches        314      314
============================================
+ Hits           2961     2969       +8
- Misses          912      914       +2
  Partials        148      148

Impacted Files
Coverage Δ
Complexity Δ

...e/api/gax/rpc/RetryingServerStreamingCallable.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...le/api/gax/grpc/GrpcOperationSnapshotCallable.java
100% <100%> (ø)
2 <0> (ø)
:arrow_down:

.../com/google/api/gax/batching/ThresholdBatcher.java
100% <100%> (ø)
17 <0> (ø)
:arrow_down:

...m/google/api/gax/rpc/TranslatingUnaryCallable.java
100% <100%> (ø)
3 <0> (ø)
:arrow_down:

...n/java/com/google/api/gax/paging/AbstractPage.java
85.1% <100%> (+0.32%)
16 <0> (ø)
:arrow_down:

...com/google/api/gax/grpc/GrpcExceptionCallable.java
95.45% <100%> (ø)
2 <0> (ø)
:arrow_down:

...le/api/gax/httpjson/HttpJsonExceptionCallable.java
81.57% <100%> (ø)
2 <0> (ø)
:arrow_down:

.../java/com/google/api/gax/grpc/CallOptionsUtil.java
95.45% <100%> (+0.21%)
6 <0> (ø)
:arrow_down:

.../java/com/google/longrunning/OperationsClient.java
73.33% <100%> (+0.45%)
16 <0> (ø)
:arrow_down:

...ain/java/com/google/api/gax/rpc/BatchExecutor.java
100% <100%> (ø)
4 <0> (ø)
:arrow_down:

... and 1 more

Continue to review full report at Codecov.

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


[WIP] GitHub Actions build action added

Signed-off-by: Ihor Dvoretskyi<EMAIL_ADDRESS>This config converts .travis.yml to GitHub Actions, as discussed with @edsiper some time ago.
Still in progress, I'd like to hear the project maintainer's feedback on the current file version and we'll iterate later.

@ashie addressed!

@ashie addressed!

I'm testing it at https://github.com/ashie/fluentd/pull/2
4 tests are always failed:
2021-01-28T01:56:43.0089941Z Error: test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[with passphrase](ServerPluginHelperTest::#server_create_tls with various certificate options::using configurations to specify cert options): OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
2021-01-28T01:56:43.0093116Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `connect'
2021-01-28T01:56:43.0094653Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `open_tls_session'
2021-01-28T01:56:43.0096386Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:1229:in `block (3 levels) in <class:ServerPluginHelperTest>'
2021-01-28T01:56:43.0097579Z ===============================================================================
2021-01-28T01:56:43.1098847Z : (0.604714)
2021-01-28T01:56:43.6151054Z       test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[without passphrase]:	E
2021-01-28T01:56:43.6153657Z ===============================================================================
2021-01-28T01:56:43.6155749Z Error: test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[without passphrase](ServerPluginHelperTest::#server_create_tls with various certificate options::using configurations to specify cert options): OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
2021-01-28T01:56:43.6165722Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `connect'
2021-01-28T01:56:43.6166976Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `open_tls_session'
2021-01-28T01:56:43.6168471Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:1229:in `block (3 levels) in <class:ServerPluginHelperTest>'
2021-01-28T01:56:43.6170840Z ===============================================================================
2021-01-28T01:56:44.1187490Z : (1.008151)
2021-01-28T01:56:44.8281915Z       test: load self-signed cert/key pair (files), verified from clients using cert files[with passphrase]:	.: (0.709595)
2021-01-28T01:56:45.4350356Z       test: load self-signed cert/key pair (files), verified from clients using cert files[without passphrase]:	.: (0.606680)
2021-01-28T01:56:46.5408273Z       test: load static server cert by private CA cert file, verified from clients using CA cert file[with passphrase]:	.: (1.105151)
2021-01-28T01:56:47.2464268Z       test: load static server cert by private CA cert file, verified from clients using CA cert file[without passphrase]:	.: (0.705584)
2021-01-28T01:56:47.2876252Z       test: set ciphers:				.: (0.041212)
2021-01-28T01:56:47.2877715Z     using tls_options arguments to specify cert options:
2021-01-28T01:56:47.9961659Z       test: create dynamic self-signed cert/key pair (without any verification from clients):	.: (0.707405)
2021-01-28T01:56:48.7020202Z       test: create dynamic server cert by private CA cert file, verified from clients using CA cert file[with passphrase]:	.: (0.706744)
2021-01-28T01:56:49.4069676Z       test: create dynamic server cert by private CA cert file, verified from clients using CA cert file[without passphrase]:	.: (0.704890)
2021-01-28T01:56:49.9109317Z       test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[with passphrase]:E
2021-01-28T01:56:49.9110254Z ===============================================================================
2021-01-28T01:56:49.9112545Z Error: test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[with passphrase](ServerPluginHelperTest::#server_create_tls with various certificate options::using tls_options arguments to specify cert options): OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
2021-01-28T01:56:49.9119397Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `connect'
2021-01-28T01:56:49.9120647Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `open_tls_session'
2021-01-28T01:56:49.9122109Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:1071:in `block (3 levels) in <class:ServerPluginHelperTest>'
2021-01-28T01:56:49.9123037Z ===============================================================================
2021-01-28T01:56:50.0124709Z : (0.605194)
2021-01-28T01:56:50.5175707Z       test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[without passphrase]:	E
2021-01-28T01:56:50.5179224Z ===============================================================================
2021-01-28T01:56:50.5183226Z Error: test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[without passphrase](ServerPluginHelperTest::#server_create_tls with various certificate options::using tls_options arguments to specify cert options): OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
2021-01-28T01:56:50.5196859Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `connect'
2021-01-28T01:56:50.5198064Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `open_tls_session'
2021-01-28T01:56:50.5199544Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:1071:in `block (3 levels) in <class:ServerPluginHelperTest>'
2021-01-28T01:56:50.5200491Z ===============================================================================
2021-01-28T01:56:51.0208762Z : (1.008462)
2021-01-28T01:56:52.0295231Z       test: load self-signed cert/key pair (files), verified from clients using cert files[with passphrase]:	.: (1.008606)
2021-01-28T01:56:52.7370992Z       test: load self-signed cert/key pair (files), verified from clients using cert files[without passphrase]:	.: (0.707312)
2021-01-28T01:56:53.4418658Z       test: load static server cert by private CA cert file, verified from clients using CA cert file[with passphrase]:	.: (0.705000)
2021-01-28T01:56:54.5484151Z       test: load static server cert by private CA cert file, verified from clients using CA cert file[without passphrase]:	.: (1.106389)

I'm testing it at https://github.com/ashie/fluentd/pull/2
4 tests are always failed:
2021-01-28T01:56:43.0089941Z Error: test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[with passphrase](ServerPluginHelperTest::#server_create_tls with various certificate options::using configurations to specify cert options): OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
2021-01-28T01:56:43.0093116Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `connect'
2021-01-28T01:56:43.0094653Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `open_tls_session'
2021-01-28T01:56:43.0096386Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:1229:in `block (3 levels) in <class:ServerPluginHelperTest>'
2021-01-28T01:56:43.0097579Z ===============================================================================
2021-01-28T01:56:43.1098847Z : (0.604714)
2021-01-28T01:56:43.6151054Z       test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[without passphrase]:	E
2021-01-28T01:56:43.6153657Z ===============================================================================
2021-01-28T01:56:43.6155749Z Error: test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[without passphrase](ServerPluginHelperTest::#server_create_tls with various certificate options::using configurations to specify cert options): OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
2021-01-28T01:56:43.6165722Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `connect'
2021-01-28T01:56:43.6166976Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `open_tls_session'
2021-01-28T01:56:43.6168471Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:1229:in `block (3 levels) in <class:ServerPluginHelperTest>'
2021-01-28T01:56:43.6170840Z ===============================================================================
2021-01-28T01:56:44.1187490Z : (1.008151)
2021-01-28T01:56:44.8281915Z       test: load self-signed cert/key pair (files), verified from clients using cert files[with passphrase]:	.: (0.709595)
2021-01-28T01:56:45.4350356Z       test: load self-signed cert/key pair (files), verified from clients using cert files[without passphrase]:	.: (0.606680)
2021-01-28T01:56:46.5408273Z       test: load static server cert by private CA cert file, verified from clients using CA cert file[with passphrase]:	.: (1.105151)
2021-01-28T01:56:47.2464268Z       test: load static server cert by private CA cert file, verified from clients using CA cert file[without passphrase]:	.: (0.705584)
2021-01-28T01:56:47.2876252Z       test: set ciphers:				.: (0.041212)
2021-01-28T01:56:47.2877715Z     using tls_options arguments to specify cert options:
2021-01-28T01:56:47.9961659Z       test: create dynamic self-signed cert/key pair (without any verification from clients):	.: (0.707405)
2021-01-28T01:56:48.7020202Z       test: create dynamic server cert by private CA cert file, verified from clients using CA cert file[with passphrase]:	.: (0.706744)
2021-01-28T01:56:49.4069676Z       test: create dynamic server cert by private CA cert file, verified from clients using CA cert file[without passphrase]:	.: (0.704890)
2021-01-28T01:56:49.9109317Z       test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[with passphrase]:E
2021-01-28T01:56:49.9110254Z ===============================================================================
2021-01-28T01:56:49.9112545Z Error: test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[with passphrase](ServerPluginHelperTest::#server_create_tls with various certificate options::using tls_options arguments to specify cert options): OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
2021-01-28T01:56:49.9119397Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `connect'
2021-01-28T01:56:49.9120647Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `open_tls_session'
2021-01-28T01:56:49.9122109Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:1071:in `block (3 levels) in <class:ServerPluginHelperTest>'
2021-01-28T01:56:49.9123037Z ===============================================================================
2021-01-28T01:56:50.0124709Z : (0.605194)
2021-01-28T01:56:50.5175707Z       test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[without passphrase]:	E
2021-01-28T01:56:50.5179224Z ===============================================================================
2021-01-28T01:56:50.5183226Z Error: test: load chained server cert by private CA cert file, verified from clients using CA cert file as root[without passphrase](ServerPluginHelperTest::#server_create_tls with various certificate options::using tls_options arguments to specify cert options): OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate)
2021-01-28T01:56:50.5196859Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `connect'
2021-01-28T01:56:50.5198064Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:873:in `open_tls_session'
2021-01-28T01:56:50.5199544Z /home/runner/work/fluentd/fluentd/test/plugin_helper/test_server.rb:1071:in `block (3 levels) in <class:ServerPluginHelperTest>'
2021-01-28T01:56:50.5200491Z ===============================================================================
2021-01-28T01:56:51.0208762Z : (1.008462)
2021-01-28T01:56:52.0295231Z       test: load self-signed cert/key pair (files), verified from clients using cert files[with passphrase]:	.: (1.008606)
2021-01-28T01:56:52.7370992Z       test: load self-signed cert/key pair (files), verified from clients using cert files[without passphrase]:	.: (0.707312)
2021-01-28T01:56:53.4418658Z       test: load static server cert by private CA cert file, verified from clients using CA cert file[with passphrase]:	.: (0.705000)
2021-01-28T01:56:54.5484151Z       test: load static server cert by private CA cert file, verified from clients using CA cert file[without passphrase]:	.: (1.106389)

I'm testing it at

4 tests are always failed:

It's reproduced on my local environment.
It's not this PR's problem, I'll investigate it.

I'm testing it at

4 tests are always failed:

It's reproduced on my local environment.
It's not this PR's problem, I'll investigate it.

I found tests are succeeded with ruby 2.6.3 but tests are failed with ruby 2.7.2.

@ashie @repeatedly weird, what could be a reason?

I'm now investigating it ...

Tests are now failed on ruby 2.7.1 with latest openssl 1.1.1i.
I think recent openssl changes certification verify mechanizm or something.

Test failed since openssl 1.1.1.f.

@repeatedly am I right that this is a build environment issue?

Test failed since openssl 1.1.1.f.

Hmm, rejected by this code:
https://github.com/openssl/openssl/blob/36eadf1f84daa965041cce410b4ff32cbda4ef08/crypto/x509v3/v3_purp.c#L485

The tests passed when I remove this line:
https://github.com/fluent/fluentd/blob/ba0fa1a540637d5c09edfd2a9c8b9d621b51130e/test/plugin_helper/test_server.rb#L836

I searched nsCertType and this parameter is for Netscape browser.
So we can remove this parameter from fluentd code and tests.

I can't judge remove nsCertType extension from fluentd code is safe or not.
So removing it from test codes are good for this case.
@ashie BTW, can we merge this patch?

@ashie @repeatedly anything else? Let's merge?

Sorry for the delay. Just merged!