[HOLD for payment 2024-05-22] [$250] Categories - Unable to go to other tabs after enabling " must categorize all spend" offline

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.68-0
Reproducible in staging?: y
Reproducible in production?: y
Issue reported by: Applause - Internal Team
Action Performed:

Go to staging.new.expensify.com
Go offline.
Go to Account settings > Workspaces.
Create a new workspace.
Go to Categories.
Click Settings.
Toggle on "Members must categorize all spend".
Close the RHP.
Navigate to other tabs.

Expected Result:
User should be able to navigate to other tabs after toggling on "Members must categorize all spend" offline.
Actual Result:
User is blocked from clicking on other tabs after toggling on "Members must categorize all spend" offline.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/93399543/a2fc3ddc-4fb3-4dba-a8f8-e04ac7426e9b
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~014991e62b8f3dcfbf
Upwork Job ID:<PHONE_NUMBER>516846592
Last Price Increase: 2024-04-30
Automatic offers:

ikevin127 | Reviewer | 0
Nodebrute | Contributor | 0

Issue OwnerCurrent Issue Owner: @joekaufmanexpensify

We think that this bug might be related to #wave-collect - Release 1

@joekaufmanexpensify FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Categories - Unable to go to other tabs after enabling " must categorize all spend" offline
What is the root cause of that problem?
What changes do you think we should make in order to solve the problem?

Instead of policy.error we should check for !isEmptyObject(policy.errors)
     const hasPolicyCreationError = !!(policy?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD && !isEmptyObject(policy.errors));
What alternative solutions did you explore? (Optional)

Proposal
Please re-state the problem that we are trying to solve in this issue.
Categories - Unable to go to other tabs after enabling " must categorize all spend" offline
What is the root cause of that problem?
Policy.errors will always be true instead we should check if it's an empty object
https://github.com/Expensify/App/blob/421581d5b24770569a6e637d1df4e455af79279b/src/pages/workspace/WorkspaceInitialPage.tsx#L87
Enabling categories will make both of the above conditions true, which will result in all options being disabled.
https://github.com/Expensify/App/blob/421581d5b24770569a6e637d1df4e455af79279b/src/pages/workspace/WorkspaceInitialPage.tsx#L357
What changes do you think we should make in order to solve the problem?

Instead of policy.error we should check for !isEmptyObject(policy.errors)
     const hasPolicyCreationError = !!(policy?.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD && !isEmptyObject(policy.errors));
https://github.com/Expensify/App/blob/421581d5b24770569a6e637d1df4e455af79279b/src/pages/workspace/WorkspaceInitialPage.tsx#L87
What alternative solutions did you explore? (Optional)

♻ Reviewing proposals.

@Nodebrute's proposal looks good to me! They were first to identify the root cause and propose the isEmptyObject solution which fixes the issue accordingly.
I agree with the note that we shouldn't set errors: null because if the policy previously had errors, these will be cleared when toggling Categories > "Members must categorize all spend" or Tags > "Members must tag all spend", which would create a regression.
🎀👀🎀 C+ reviewed

@ShridharGoel Given that the first proposal identified the RCA and proposed the isEmptyObject solution first, please let me know if you think there's something I'm missing from your solution which would require the errors: null part your solution suggests.
If I'm missing anything please let me know and if the argument for your version of the solution is solid then I'll reconsider assignment.

@chiragsalian Waiting to be assigned.

Proposal LGTM, feel free to create a PR @Nodebrute.

PR on staging

@ikevin127 please handle BZ checklist so we can issue payment this week

[x]  [@ikevin127] The PR that introduced the bug has been identified. Link to the PR: https://github.com/Expensify/App/pull/12117
[x]  [@ikevin127] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment: #12117 (comment).
[x]  [@ikevin127] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

No need to start a discussion as the logic that introduced this issue was written in 2022 back when we were using React class components and plain javascript. Since then we migrated to React functional components and typescript which means that this kind of faulty logic is less likely to be written.

[x]  [@ikevin127] Determine if we should create a regression test for this bug.
[x]  [@ikevin127] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Regression Test Proposal

Go offline.
Go to Account settings > Workspaces.
Create a new workspace.
Go to Categories.
Click Settings.
Toggle on "Members must categorize all spend".
Close the RHP.
Verify that you can navigate to other tabs of the workspace settings (left sidebar).

Do we agree 👍 or 👎.

Checklist all set.

@ikevin127 $250 sent and contract ended!

Upwork job closed.

All set, thanks everyone!


Bugfix: remove spurious Exception from questaal band_structure

Presumably this was added for debugging, and accidentally included in a commit. My bad!
Error was reported by @badw
The fact that this got through testing tells us that the testing could use some work! Still I'm inclined to push this out sooner rather than later, as currently Questaal band structures are broken in the PyPI release.
@utf is it ok if I do a quick merge and release for this?

Would you like to release so you can see how it works? Or should I?

Instructions are here btw: https://github.com/SMTG-UCL/sumo/blob/master/docs/admin/version-releases.md

Sure, I'll have a go!

Great. Looks like it went smoothly!


default header is not added to .cast file if header does not exist in .scenario file

I was going to report this issue, but then I realized I installed asciinema-scenario 0.1.0 that does not contain the fix. The new release did not go to nixpkgs unstable, is there a roadmap for that?


Auto fetch proxies every 30 min from link

Add option that you can provide link and it will auto fetch proxies from it every 30 min (or make it be custom interval) and on start. So you can make gist file with proxies and update it when you get new proxies

I suppose I will not develop this feature sicne if you want stable trafic you should try stable proxy, especially for this pee2profit which residential IP is better. Actually the proxy function is used to apply the residential proxy on the IDC VPS to make you run more instance.


Update mutationobserver.json for UC 11.2

It's not possible to add new browser versions via PR. Only the latest version of this browser is tracked.

But It latest version of this browser on Android 5.1, many people still use 5.1 most often on phones from chinese like Meizu or Xiaomi


./configure fails... configure: error: ModSecurity libraries not found!

Pulling my hair out with this.
I built libmodsecurity from source, and it seems to of installed properly... Here's what I get:
$ ls -halF /usr/local/modsecurity/lib/

drwxr-xr-x    3 root     root        4.0K Jan 30 20:10 ./
drwxr-xr-x    5 root     root        4.0K Jan 30 20:10 ../
-rw-r--r--    1 root     root       83.7M Jan 30 20:09 libmodsecurity.a
-rwxr-xr-x    1 root     root        1.0K Jan 30 20:09 libmodsecurity.la*
lrwxrwxrwx    1 root     root          23 Jan 30 20:09 libmodsecurity.so -> libmodsecurity.so.3.0.3*
lrwxrwxrwx    1 root     root          23 Jan 30 20:10 libmodsecurity.so.3 -> libmodsecurity.so.3.0.3*
-rwxr-xr-x    1 root     root       45.8M Jan 30 20:09 libmodsecurity.so.3.0.3*
drwxr-xr-x    2 root     root        4.0K Jan 30 20:10 pkgconfig/

Looks like it's installed...
$ pwd

/usr/src/ModSecurity-apache

That's where https://github.com/SpiderLabs/ModSecurity-apache is cloned to...
./configure

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
configure: looking for Apache module support via DSO through APXS
configure: found APXS at /usr/local/apache2/bin/apxs
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... none
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
configure: looking for libmodsecurity
checking for msc_init in -lmodsecurity... no
configure: error: ModSecurity libraries not found!

Is what I get when trying to run the configure script.
Is there an option or something I should be passing somewhere to tell the Apache Connector where the libmodsecurity files are? If so, where is any of this documented?
I'm very new to compiling C/C++, and haven't ever really done it before, so sorry if this is really basic stuff.
This is on Alpine, running in a Docker container.
Thanks!

Hi @flatline-studios
Can you check if the approaches suggested here works for you?
https://github.com/SpiderLabs/ModSecurity-apache/issues/47

@zimmerle this patch allows --with-libmodsecurity=PATH to work, interested in a pull request?
# cat SOURCES/0001-Fix-with-libmodsecurity.patch
From 2ac060550f5183fd7168acc51dd765e97c57a2da Mon Sep 17 00:00:00 2001
From: Daniel Muey<EMAIL_ADDRESS>Date: Wed, 9 Sep 2020 10:23:58 -0500
Subject: [PATCH] Fix `--with-libmodsecurity`

---
 build/find_libmodsec.m4 | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/build/find_libmodsec.m4 b/build/find_libmodsec.m4
index 2a6c82d..bf60f8b 100644
--- a/build/find_libmodsec.m4
+++ b/build/find_libmodsec.m4
@@ -27,9 +27,19 @@ if test -z "$V3PATH"; then
       V3INCLUDE="$i/include/"
       # TODO: test if V3LIB is set
       break
-    fi
+    fi
   done
+else
+    if test -f "$V3PATH/lib/libmodsecurity.so"; then
+      V3LIB="$V3PATH/lib/"
+    fi
+    if test -f "$V3PATH/include/modsecurity/modsecurity.h"; then
+      V3INCLUDE="$V3PATH/include/"
+      # TODO: test if V3LIB is set
+      break
+    fi
 fi
+
 if test -n "$V3LIB" -a "$V3LIB" != "no" -a -x "$V3LIB" ; then
     AC_MSG_NOTICE(found libmodsecurity at $V3LIB)
 else
--
2.25.1

The below extract is taken from build/find_libmodsec.m4 as it currently stands.
Basically it says: If you specifically ask me to use a value of $V3PATH then I'll ignore $V3PATH completely and look through completely unrelated directories.
if test -z "$V3PATH"; then
for i in /usr/local/modsecurity/
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin;
do....
If I hadn't spent so much time trying to find this annoying error I would be laughing my head off.


Enhancement: Improve ecs construct

Codecov Report

Merging #65 (83a949f) into release (d01ac79) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             release      #65   +/-   ##
==========================================
  Coverage      99.06%   99.06%
- Complexity       170      172    +2
==========================================
  Files              9        9
  Lines            960      962    +2
  Branches          27       27
==========================================
+ Hits             951      953    +2
  Partials           9        9

Flag
Coverage Δ

unittests
99.06% <100.00%> (+<0.01%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...a/org/wcdevs/blog/cdk/ElasticContainerService.java
99.20% <100.00%> (+<0.01%)
:arrow_up:

Continue to review full report at Codecov.

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


feat: multiple page directories and custom route names/paths

Closes #8
First round; let me know what you think.  Need to add doc to README.
Appreciate your insight and tweaks; especially around naming things.

All set :)


panic: runtime error: invalid memory address using sync.WaitGroup

We get panic when we use xray with sync.WaitGroup.  As you can see in a error below, context becomes nil and  func getTraceHeaderFromContext throws panic as there is no required value in it.
we use algnhsa server adapter and mux.router for routing (it shouldn't cause an issue, but I added it to code example below) and we pass http.Request context to GetObjectWithContext function.
It looks like we're getting into some sort of race condition as it works 50% of time and another 50% we're getting a panic.
var s3c *s3.S3

func main() {
    s3c := s3.New(session.New())
    xray.AWS(s3c.Client)

    router := mux.NewRouter()
    router.Path("/").Methods("GET").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        results := getObjects(r.Context(), []string{"1", "2", "3"})
        return
    })
    handler := xray.Handler(xray.NewFixedSegmentNamer("app"), router), err
    algnhsa.ListenAndServe(handler, nil)
}

func getOjbects(ctx context.Context, ids []string) []getResult {
    var wg sync.WaitGroup
    md := make([]getResult, len(ids))

    wg.Add(len(ids))
    for i, id := range ids {
        go func(key string, index int) {
            defer wg.Done()
            input := &s3.GetObjectInput{
                Bucket: aws.String(s.BucketName),
                Key:    aws.String(key),
            }
            result, err := s3c.GetObjectWithContext(ctx, input)
            md[index] = getResult{
                p:     result,
                err:   err,
            }
        }(id, i)
    }

    wg.Wait()
    // We're not reaching this point.
    return
}

Error:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0xac7ff6]
goroutine 129 [running]:
github.com/aws/aws-xray-sdk-go/xray.getTraceHeaderFromContext(0x0, 0x0, 0x403e28)
/go/src/github.com/aws/aws-xray-sdk-go/xray/lambda.go:36 +0x26
github.com/aws/aws-xray-sdk-go/xray.BeginSubsegment(0x0, 0x0, 0xd39c1b, 0x3, 0x0, 0x0, 0x0)
/go/src/github.com/aws/aws-xray-sdk-go/xray/segment.go:167 +0x91
github.com/aws/aws-xray-sdk-go/xray.(*HTTPSubsegments).TLSHandshakeStart(0xc0001a8880)
/go/src/github.com/aws/aws-xray-sdk-go/xray/httptrace.go:101 +0x8d
github.com/aws/aws-xray-sdk-go/xray.NewClientTrace.func6()
/go/src/github.com/aws/aws-xray-sdk-go/xray/httptrace.go:226 +0x2a
net/http.(*persistConn).addTLS.func2(0xc0001a8900, 0xc0007a5c00, 0xc0008a4f00, 0xc000779620)
/usr/local/go/src/net/http/transport.go:1169 +0xa6
created by net/http.(*persistConn).addTLS
/usr/local/go/src/net/http/transport.go:1167 +0x17e
2019/04/17 09:39:42 unexpected EOF
2019/04/17 09:39:42 unexpected EOF
END RequestId: d9f5ac74-ea74-43ab-a1e2-89cfb5d29131

I've fixed it: https://github.com/aws/aws-xray-sdk-go/pull/105

@t-yuki Thank you so much for submitting that PR. I already merged it. @Rhymond I will make sure we included the fix for next release.

Thanks both!


Fix the regex test for 0.9.x releases of InfluxDB.

The =~ does not return true/false, it returns the position of the matching string, or nil if there is no match. If you actually set your version to 0.9.x, it would use the non-zero-nine config. And if you set your version to something other that 0.9, you would get the 0.9 config. Obviously this can't be correct.
I've done a simple fix to the test, though I disbelieve strongly in this approach to Chef configuration.

I realized Ruby still treats the 0 as true. Derp. My bad!


Fixed cursor jumping in text input [#173795059]

Before this change any update to the text input value would cause the cursor to jump to the end of the line. This was new behavior caused by the update to React and Formsy.
With this change the cursor position is remembered and then restored after the text input's controlled input value is updated in the state.

This was a test to check if the rebase in the original PR was failing.  Closing.


[Event Grid] Update package description for older package to point to the new one

Update the package description for the azure-eventgrid to point to the new Azure.Messaging.EventGrid
Use https://github.com/Azure/azure-sdk-for-java/pull/20678 as a reference where we did the same for Service Bus

cc @lmazuel


Root validators

Change Summary

rename __obj__ to root for existing root errors
add root_validator

Related issue number
fix #729
Todo

[x] check an error is raised if validators are repeated
[x] check signature is correct
[x] check that extra is included in values
[x] check root validation works with inheritance.

Checklist

[x] Unit tests for the changes exist
[ ] Tests pass on CI and coverage remains at 100%
[ ] Documentation reflects the changes where applicable
[x] changes/<pull request or issue id>-<github username>.rst file added describing change
(see changes/README.md for details)

This looks great!
Reading over the examples, the thought occurred to me that it could become much easier to address #813 and other issues related to from_orm if the from_orm method added the source object as a value accessible in values (maybe with the key __orm_source__ or similar). Then you could just transform the values however you needed to in a root_validator by making use of the __orm__ key if present.
If this could be implemented without any performance downsides, would it be interesting to you? I suppose there might be some minor breaking change involved (although I can't think of anything it would break off the top of my head since values won't currently receive fields starting with _).
I think it would be great though if we could easily support more flexible interactions with ORM objects by way of a root_validator (as long as it had zero performance cost).

I created a new issue (https://github.com/samuelcolvin/pydantic/issues/821) to discuss appropriate modifications to supercharge the root_validator + from_orm combination; it turns out it took fewer modifications than I suspected.


refactor: user model

Codecov Report

Merging #39 (91ab4fa) into master (e325938) will increase coverage by 0.41%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #39      +/-   ##
==========================================
+ Coverage   52.78%   53.18%   +0.41%
==========================================
  Files          71       69       -2
  Lines         595      598       +3
  Branches        2        3       +1
==========================================
+ Hits          314      318       +4
+ Misses        281      280       -1

Impacted Files
Coverage Δ

...re/src/main/scala/zio/notion/model/user/User.scala
100.00% <100.00%> (ø)


NameError from _unlit_non_poison

Reporting a bug
On master and release0.51 branch, this:
from numba import njit

@njit
def foo():
    x = [1, 'a']
    x.append(2j)

foo()

produces:
<snip>
No implementation of function Function(<function literal_list_banned_append at 0x7f95974c5050>) found for signature:

 >>> literal_list_banned_append(LiteralList((Literal[int](1), Literal[str](a))), complex128)

There are 2 candidate implementations:
  - Of which 1 did not match due to:
  Overload in function 'literal_list_banned_append': File: numba/cpython/listobj.py: Line 1132.
    With argument(s): '(Poison<LiteralList((Literal[int](1), Literal[str](a)))>, complex128)':
   Rejected as the implementation raised a specific error:
     NameError: name 'TypingError' is not defined
<snip>

comes from here:
https://github.com/numba/numba/blob/833c5907c77d09150bc6ae2a1c0284e3b827af02/numba/core/types/functions.py#L233
should be errors.TypingError.

Note from triage meeting, run black over this and then switch on flake8.


Deleted targets

Describe the bug
A clear and concise description of what the bug is.
Managed to delete all targets in advanced options in settings section.
I am now unable to add any and just keep getting errors about not having a target when I'm running the sim. Can't use the premade bosses either will not be recognized.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Sim Links and Screenshots
If applicable, add links to your sim settings or screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

What happens if you use the "New Target" button, do you get any errors?
As a temporary workaround you can restore to defaults which should fix it.

Solved it by going incognito and linking myself a new set.
I wasn't able to use the reset function and refreshing the page didn't work
either, but hey we got up and running again. I'm happy!
If you feel like you want to look into this then just get annoyed by the
fact that you are unable to recreate what my guilde claims he simmed and
spam the cross button in encounter to get rid of the extra bosses you added
in advanced settings just to see if multiple target changed anything, it
didn't.
Med vänlig hälsning
/Jon Enberg
On Thu, 27 Jul 2023 at 00:12, Tharre @.***> wrote:

What happens if you use the "New Target" button, do you get any errors?
As a temporary workaround you can restore to defaults which should fix it.
—
Reply to this email directly, view it on GitHub
https://github.com/wowsims/wotlk/issues/3371#issuecomment-1652577024,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALMRMPW4OHZJLLFUP6CCQQTXSGI3ZANCNFSM6AAAAAA2Y35U4Q
.
You are receiving this because you authored the thread.Message ID:
@.***>

weird. unable to recreate a similar situation that 'add new target' or restore defaults doesnt fix. can revisit if someones able to find reproduciton steps


Add RemoteData to YQL operation progress. Add cluster_name for YT YQL operations

Changelog entry
Changelog category

Not for changelog (changelog entry is not required)

Additional information
Ytsaurus issue: https://github.com/ytsaurus/ytsaurus/issues/551
Previously we added yt cluster name to yql_statistics. Now we discovered that yql_statistics is populated once at the end of an operation and this is not convenient for debugging why an operation is taking too long.
Adding the same field to yql_progress which is populated during operation execution
I deployed it to our yt cluster and I see it in yql_progress now:
"remoteData": {
    "cluster_name": "dirac"
},
"remoteId": "http-proxies.dirac.svc.cluster.local/operation-id-here",

I can confirm that it becomes available during an operation execution

@vitstn Could you please merge it?


StopPipeline does not stop partial pipelines

I raised a StopPipeline exception after a partial pipeline redirect.
But when coming back to the same auth page for a new transaction, I got an exception that continue_pipeline got two arguments for pipeline_idx.
So I added the following lines at backends/init.py at line 148
                except StopPipeline:
                    # Stop partial pipelines too
                    request = kwargs.get('request')
                    if request:
                        partial_pipeline_name = setting('SOCIAL_AUTH_PARTIAL_PIPELINE_KEY', 'partial_pipeline')
                        if partial_pipeline_name in request.session:
                            del request.session[partial_pipeline_name]
                    break

Please patch the above code, if the approach looks fine.

Just noticed that the above issue also surfaces when we redirect during a partial pipeline, but do not proceed to auth_complete view, and instead go back to auth_process view and restart the process all over again.
The following lines at views.py line 140 solved it:
partial_pipeline_name = setting('SOCIAL_AUTH_PARTIAL_PIPELINE_KEY', 'partial_pipeline')
request.session.pop(partial_pipeline_name, None)


[FEATURE] gofish darwin/arm64

Is your feature request related to a problem or a Pull Request
Please link to the issue/PR here and explain how your request is related to it.
Scope of your request
Just switched to Mac and i am a big Gofish lover (and k3d). Tried to install it but apperently there's no entry for darwin/arm64:
$ gofish install k3d
==> Installing k3d...
Error: food 'k3d' does not support the current platform (darwin/arm64)

On your Release Page you have an artifact for that architecture k3d-darwin-arm64.
Im a not sure how it exactly works with the gofish-bot, but could you somehow configure it, that it would also add the k3d artifact for the darwin/arm64 in the food definition?
Describe the solution you'd like
Being able to install k3d via gofish.
Describe alternatives you've considered
Installing it directly from Release artifact.

btw, i am also fine if the answer is install it via brew. Just wanted to bring this to your attention.

Hi @oliverbaehler , thanks for opening this issue!
I haven't heard of GoFish before and it seems like it's not really active anymore as the repositories have been archived? :thinking:
Anyway, it seems like you could add an entry in the food definition just like you mentioned: https://github.com/fishworks/fish-food/blob/main/Food/k3d.lua
The definition is not maintained from this repository (nor by some automation in this repository), so I guess you can just create a manual PR there, if that's still possible :+1:
Feel free to reopen, if you think there's anything we can do from k3d's side :)


[edn/data] Remove exclusions from edn hjson file

Removing excess exclusion tags to increase coverage.
Signed-off-by: Mark Branstad<EMAIL_ADDRESS>

this is similar to #11040


AKS Networking Tab reports incorrect load balancer SKU

Terraform Version Details

Terraform Variable File Details
terraform.txt
Steps to Reproduce
Running the terraform commands using default values in the tfvars files.
Expected Behavior
Expecting Load Balancer SKU value of the AKS Cluster's API Server to be 'Standard' in Propcase rather than Lowcase in the networking overview tab in azure.
Actual Behavior
Currently is being set as Lowcase which we think is causing the Authorized IP ranges being disabled rather than showing the IP ranges setup in the TFVars file.
Additional Context
We created an AKS cluster using Terraform, as we have done many times before.
However, this time, we've noticed that access to the API Server is limited.
We are aware that we have used a list of CIDR IP ranges, but even clients on the approved IP ranges are failing to connect with "Failed to get /version Forbidden".
We suspect this is because the Value for the load balancer SKU is now being set to 'standard' as lowercase rather than 'Standard' and somehow its not being parsed correctly. See doc attached - Error when connecting to AKS API Server.docx
We have attempted to modify the line where this is fed in to be Propcase and rerunning the terraform commands- https://github.com/sassoftware/viya4-iac-azure/blob/main/modules/azure_aks/main.tf#L41.
However, this is returning the following error and is expecting it to be lowercase. Is there a way this could be changed to default it to feeding it the propcase value?

References
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@Shaffi-Housseini, Thanks for notifying us of this discrepancy. We did notice this issue in our automation run and I have been debugging it. There is already an Internal ticket to track this issue. Unfortunately, so far in my debugging process I haven't been able to reproduce this issue.
The lowercase "standard" for Load Balancer SKU is the only acceptable value in Terraform. There has been no update on terraform provider to change that. Terraform provider azurerm makes the underlying Azure API calls and these values are then converted somehow to whatever Azure expects. All of this is outside of IAC. So, changing the value to "Standard" will throw error as expected.
One other observation during debugging was only Portal's networking tab is incorrectly showing the "Authorized IP ranges" to be disabled. The Overview tab shows the IP ranges correctly under Networking section. Also, verified it through az CLI to confirm the "Authorized IP ranges" was set correctly for the deployment.
Could you please verify that's the case on your deployments as well?
As I am unable to reproduce this issue, I will be creating a Microsoft Azure support ticket to get help, as this looks like something wrong with the API and Azure Portal. I'll update this issue later once I more information.

@riragh. Thanks for the reply. I can confirm that we are only noticing this discrepancy on the networking tab of the AKS cluster resource:

When checking the load balancer service in the 'MC_*' recourse group it is being displaced correctly:

As well as when checking the overview tab of cluster resource:

We have already raised ticket with Microsoft Azure support to highlight this issue and see whether this is a fault on their end, considering terraform only accepts 'standard' - Support Request: AKS Control Pane reports incorrect load balancer SKU and Networking tab incorect - Microsoft Azure

Fix was applied by Azure and things seem to be working as expected now.  Closing this ticket based on internal verification and user's confirmation in internal ticket.


7.31 system  - method "XSDBOOL" is unknown, PROTECTED or PRIVATE

Just imported the latest build to a 7.31 system and have this error on line 34654.

yea, should be changed to boolc

@stubbini thanks for the bug report, try again, latest version

Thanks for the quick turnaround guys. Works on a different 731 system to that tested yesterday (original sandbox is down).


[DCOS-39150][SPARK] Support unique Executor IDs in cluster managers

Reference PR#36
What changes were proposed in this pull request?
Using incremental integers as Executor IDs leads to a situation when Spark Executors launched by different Drivers have same IDs. When running on DCOS that means that Mesos Task IDs for Spark Executors can have duplicates too. This change introduces unique identifiers for both CoarseGrainedSchedulerBackend and YarnAllocator which are prepended to numeric ID thus allowing to distinguish Executors belonging to different drivers.
This PR reverts commit ebe3c7f: "initialize executorIdCounter after ApplicationMaster killed for max n…)" realted to Jira Issue SPARK-12864 because it addressed the similar but YARN-case specific issue.
Combine changes in PR#52: [DCOS-51158] Improved Task ID assignment for Executor tasks
How was this patch tested?
The change is verified by a unit test and external integration test.

This PR is just for reference, so final and effective change has been moved to #69.


For loop error - TypeError: Cannot read property 'substr' of undefined

Description: When trying to use a for loop in jsbin, I get a weird error that's got nothing to do with the code that I have inputted. Not sure if it's my end or not but I'm currently getting the error in the latest chrome version and I also don't get an output (with console.log) in the latest edge either.
The bin I'm having the error with: https://jsbin.com/henanel/edit?js,console
Chrome error message (from dev tools):
jsbin-4.1.4.min.js:27 Uncaught (in promise) TypeError: Cannot read property 'substr' of undefined
    at jsbin-4.1.4.min.js:27
    at Array.forEach (<anonymous>)
    at e (jsbin-4.1.4.min.js:27)
    at jsbin-4.1.4.min.js:28

Appending a ; to your line of code causes the issue to go away. Looks like the same sort of thing as discussed in #3272.


modify menu delete command to cancel instead of delete order

Instead of deleting orders when the menu items they contain are removed, mark them as cancelled instead


Issue 1083: fix flaky input-date-time test

To fix the d2l-input-date-time min and max value ✖ should set correct min and max on d2l-input-date (expected '2018-08-27' to equal '2018-08-26', Edge, Safari) test (the other two haven't seemed to fail lately so I'll just keep an eye on them).
I've rerun CI 3 times and so far so good.
My theory is that because this is the first test that's being flaky, the documentLocaleSettings.timezone.identifier = 'America/Toronto'; hasn't always "kicked in" yet. I tried adding an event listener for the localize event but that wasn't quite working (wasn't getting called) so I'm trying out a timeout.

I've now rerun ~5-6 times. There was one was sauce failed but it looked to be a connection failure ( Disconnectedreconnect failed before timeout of 50000ms (ping timeout)) and I didn't see evidence of a test failures in the logs.

Okay this is good to go for a re-review. Thoughts on the script for the ResizeObserver error handling and if it seems good, should it be added to the initializer?


docs: Updates docs to add mentions of beta

What type of PR is this? (check all applicable)

[ ] 🍕 Feature
[ ] 🐛 Bug Fix
[x] 📝 Documentation Update
[ ] 🎨 Style
[ ] 🧑💻 Code Refactor
[ ] 🔥 Performance Improvements
[ ] ✅ Test
[ ] 🤖 Build
[ ] 🔁 CI
[ ] 📦 Chore (Release)
[ ] ⏩ Revert

Description
This PR updates the language of the docs.
Related Tickets & Documents
Fixes #43
Mobile & Desktop Screenshots/Recordings
N/A
Added tests?

[ ] 👍 yes
[x] 🙅 no, because they aren't needed
[ ] 🙋 no, because I need help

Added to documentation?

[ ] 📜 README.md
[x] 📓 docs.opensauced.pizza
[ ] 🍕 dev.to/opensauced
[ ] 📕 storybook
[ ] 🙅 no documentation needed

[optional] Are there any post-deployment tasks we need to perform?
I noted a few more mentions of main in the docs, but wasn't sure what all needed to be changed, especially if the docs are talking about other open-sauced repos.
I've completely removed the mention of main from the "introduction to contribution" but added a note for "resolve merge conflict." If one format is preferred, happy to change!
[optional] What gif best describes this PR or how it makes you feel?

@sadiejay I forked the docs repo, but am not seeing a "beta" branch.  It seems the master one is called "main".  Do you have a  screenshot of the beta branch?

@huynhicode Hi! The beta branch is the main branch for hot/open-sauced, not all of the the open-sauced repos, as far as I understand.
I wasn't sure how to note that distinction for repos that are not hot/open-sauced. Thoughts?

@huynhicode Hi! The beta branch is the main branch for hot/open-sauced, not all of the the open-sauced repos, as far as I understand.
I wasn't sure how to note that distinction for repos that are not hot/open-sauced. Thoughts?

I think the docs should be updated to reflect the cloning from the default branch, which depending on repository will be one of 2 cases:

main branch if the repo releases straight to production
beta branch if the repo is an app using additional release channel branches
next branch if the repo as a library having pre-releases

The above depends on the open-sauced/release implementation used generally in .github/workflows/release.yml in most active open-sauced repositories! 🍕
It's a bit more wording than initially envisioned 😅

Thank you @sadiejay and @0-vortex for clarifying!
I have been looking through the documentation and would like to make some updates to address the varying avenues of contributing to Open Sauced, including what you mentioned @0-vortex.

@0-vortex  Ok so if I understand correctly, I should add a version of:

depending on repository will be one of 3 cases:
main branch if the repo releases straight to production
beta branch if the repo is an app using additional release channel branches
next branch if the repo as a library having pre-releases (upcoming)
The above depends on the open-sauced/release implementation used generally in .github/workflows/release.yml in most active open-sauced repositories! 🍕

directly to "introduction to contribution" md?
Or, is there a way to insert a variable into the docs that can then reflect the name of the default branch based on which repo was cloned?

@0-vortex Ok so if I understand correctly, I should add a version of:

depending on repository will be one of 3 cases:
main branch if the repo releases straight to production
beta branch if the repo is an app using additional release channel branches
next branch if the repo as a library having pre-releases (upcoming)
The above depends on the open-sauced/release implementation used generally in .github/workflows/release.yml in most active open-sauced repositories! 🍕

directly to "introduction to contribution" md?
Or, is there a way to insert a variable into the docs that can then reflect the name of the default branch based on which repo was cloned?

No, it should be clearly mentioned to clone from the default branch, no mention of beta or main, that is irrelevant.
As you can see, it is making things more difficult and a lot of people read the branch they should clone without reading the why, or like in this repo, try to checkout a branch that doesn’t exist 😅

I made some changes and ready for a review :)

@sadiejay after chatting with @0-vortex, we came to the conclusion a new article is needed explaining branches in the context of OpenSauced. That would remove the initial confusion of main or beta. https://github.com/open-sauced/docs.opensauced.pizza/issues/52

Currently waiting on this PR https://github.com/open-sauced/docs.opensauced.pizza/pull/51 before merging

Sorry this took so long.


Profile page redesign

Added custom styles to a user profile page with validation messages on inputs. Here is the comparison before and after:

Additionally, there was no way to see the validation error on inputs. Now if we get the validation error it will appear under the input like this:

As for the file input, to make it look nice, it needs to be a separate PR. Don't mind the email field is empty on the "after" screenshot. It's still filled into the input, it's just not shown on the screenshot.

Looks great, thanks! Looking forward to that next PR 🤩


Unstable content sharing between Helia nodes on browser

The following is an example of an automated code that serves content on a Helia node on browser(playwright chromium) and then acquires the content with a cid on another Helia node on browser:

https://gist.github.com/bellbind/23ad8d6e3a1509335253ff074fcd3cb6

When running case-b2b.mjs, it may be success, failed, or freezed at random.
In this code, before accessing contents with cid,  it calls libp2p.dialProtocol(ma, "/ipfs/bitswap/1.2.0", {runOnTransientConnection: true}).
The returned stream may be WebRTCStream or YamuxStream.
When it succeeds, it is always a WebRTCStream, and when it is a YamuxStream, it always freezes.
There are also failed cases when it is WebRTCStream.

helia-2.0.1
node-20.5.1
(M1 macOS 13.4.1)

Typically you do not want to run data-heavy protocols like bitswap over transient connections since the relay between the two connections will almost certainly be applying limits to how much data can be transferred.
See https://github.com/libp2p/js-libp2p/blob/master/doc/migrations/v0.45-v0.46.md#transient-connections

Thank you, @achingbrain .
I try libp2p: {relay: circuitRelayServer({advertise: true, reservations: {defaultDataLimit: 1n << 30n},}),} for  nodejs helia node.
(and use dial and identify instread of dialProtocol)

I change the init of helia node on nodejs as:
  const node = await createHelia({
    libp2p: {
      ...
      services: {
       ...
        relay: circuitRelayServer({
          advertise: {
            bootDelay: 1000,
          },
          reservations: {
            maxReservations: 128,
            defaultDurationLimit: 10 * 60 * 1000,
            defaultDataLimit: 1n << 30n, // 1G
          },
        }),
      },
    },
  });

(no any changes to the init of helia nodes on browser)
then every time the helia nodes on browser can exchange cid each other (also can exchange browser and other nodejs).


Support fenced code blocks in Markdown preview

Waiting for AndDown v0.2.3 to be published.

Even though AndDown v0.2.3 builds on top of HoeDown v3.0.1 which includes support for fenced code blocks, that capability is not enabled by default or exposed by AndDown. Now I'm waiting for cwac-anddown#9 to be resolved.

Switched to Bypass, which has buggy fenced code block support. Once I get my hands on the NDK, I'll try to fix it and contribute the changes back to the source repository.

I should probably just use Ghost's JS implementation for now, because they have a lot of non-standard features (arbitrary HTML and footnotes support being a few).

Another alternative is to use Ghost's post preview feature (added in Ghost v0.6.3) directly, inside a WebView. Maybe a preference to switch between Bypass and Ghost's preview feature? (although using Ghost's JS implementation is also a good compromise)

I ultimately decided to use Ghost's Showdown fork to ensure complete compatibility with the Ghost editor. Will have to keep it up to date as new versions are deployed on Ghost.


Can't verify Lobste.rs nor Twitter (Aug 2023)

Twitter has various reports, Lobsters (Lobste.rs) also hasn't worked in a while and doesn't work today.

I just got an email today that my lobste.rs proof failed and can't seem to recreate it...


Feature request: EstimateFee

Would be useful if Core's EstimateFee API call would be forwarded to QBitNinja.

The indexer right now has no RPC configuration to Core.
If it ever does, I think I should also use that for broadcasting, so better error are returned to users.


Title: Split Codecov into Two Components: Codecov-Core and Codecov-Lib

Background
In order to better evaluate our code coverage and reflect the test quality, we propose splitting codecov into two separate components, codecov-core and codecov-lib. The rationale behind this is that there is a significant difference between the core and library parts of the code, and combining them into one single metric may not provide a comprehensive assessment of our code's test quality.
@Renzhihan  , Please let us know your thoughts on this proposal and whether you think it would benefit the project. 😊

https://github.com/pikasTech/PikaPython/commit/9141a97c1dadde237e8fb45c562d3f26db428d54


APT source whitelist request for ppa:smspillaz/cmake-2.8.12

ppa:smspillaz/cmake-2.8.12
Provides cmake 2.8.12

:+1:

I also need this one...

:+1: We need this too: we have switched to container-based but we now need a newer CMake version (min 2.8.12).

The same maintainer has also built https://launchpad.net/~smspillaz/+archive/ubuntu/cmake-3.0.2 which might also be worth considering.

Just FYI, CMake  2.8.12 is also in ppa:kubuntu-ppa/backports, which is whitelisted.

Or better yet, george-edison55-precise-backports which holds 3.2.3.

yup, you're right, thanks :)

nice. Thanks!

I need cmake > 3.2 so that'd be nice yes
(considering the cert issue with cmake.org)

Seems that ppa:kubuntu-ppa/backports dropped the cmake package. I'd like to upgrade to trusty but unfortunately the travis version ships not with the original cmake 2.8.12 but with 3.x from george-edison55-precise-backports.
But the goal of our c-ares CI plan is to test with the minimal supported version of CMake which is 2.8.12.
Could you please whitelist ppa:smspillaz/cmake-2.8.12?

If there is a problem with the ppa:smspillaz/cmake-2.8.12 (some sort of security concern etc), what needs to change so that this can be brought in?
cmake 2.8.12 is a very common "minimum" version needed, having a ppa whitelisted with it makes it more convenient for developers who need to install it as well as reduces the load on travis (people don't need to compile it from source anymore).  cmake doesn't take very long to compile, but I think enabling this ppa (or letting us know what needs to change to either fix / create a different ppa) would be well received :blush:

let's make it 3.8.2 2.8 was cool in 2015 but things have progressed since :-)

@ldemailly we aren't asking for 2.8.12 to be the default, just an officially supported way to acquire it :wink: .  In my personal projects I use minimum of 3.0.0 but there are a large number of projects that need older version.  It's generally for larger projects, OpenCV for example uses 2.8.8 still.  It's just for compatibility at this point (I think).


Airline / Powerline support?

First: wow. What a cool idea! Love the light / dark variation, beautiful touch. Thank you for sharing this.
Have you thought about adding support for airline? The colorful status line is a bit startling.

First: wow. What a cool idea! Love the light / dark variation, beautiful touch. Thank you for sharing this.

Thanks very much, I'm glad you enjoy it.

Have you thought about adding support for airline? The colorful status line is a bit startling.

I can imagine so. Unfortunately, I don't use any of the status line plugins, so I wouldn't add this support myself. But assuming it's just a few more highlight rules, I'd be happy to merge a PR adding whatever's needed.

Makes sense. Thank you. I actually just tried to turn it off and I'm not 100% sure I miss it yet ;P

Closing as stale. Feel free to open that PR though!


add download stats back in, fixes 188

We removed func/data download metrics in the migration to jobrunner; this restores them by adding them to the jobrunner. Jobrunner now just writes a simple text file that we can read in. It's a text file so that we can write it line-by-line and hopefully still have some stats even if the job dies.
Fixes #188

Good catch on the flush!
Comparison is tricky -- I don't know if anyone ever actually looked at the
old stats; right now I'm adding them back in because I want to build a
complete timeline of jobs for group meeting.
On Mon, Sep 11, 2017 at 8:53 AM, Shivaram Venkataraman <
<EMAIL_ADDRESS>wrote:

@shivaram approved this pull request.
Mostly LGTM - One minor comment
Also, is there any test or way in which we can verify we are getting
similar-ish stats to before ?
In pywren/jobrunner.py
https://github.com/pywren/pywren/pull/192#discussion_r138112628:

@@ -41,9 +43,21 @@ def b64str_to_bytes(str_data):
output_bucket = jobrunner_config['output_bucket']
output_key = jobrunner_config['output_key']

+## Jobrunner stats are fieldname float
+jobrunner_stats_filename = jobrunner_config['stats_filename']
+# open the stats filename
+stats_fid = open(jobrunner_stats_filename, 'w')
+
+def write_stat(stat, val):

stats_fid.write("{} {:f}\n".format(stat, val))

can we also flush the file handle here ? it'll make sure full lines are
written to the file system asap
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/pywren/pywren/pull/192#pullrequestreview-61866381,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AACPEuvhJld0r2VtvfTdqaKHKgN2wq0yks5shVdhgaJpZM4PTGFd
.


Changes citation to new KDD paper

Changes the bibtex and citation to use the new KDD 2019 paper.

imosCI, test this please.

Jenkins CI test (for commit def3baf111e7e8aa645121ac8f589500082673f3, target branch master) succeeded!

@toslunar I think it's fine to keep both. Though presumably you would want to keep share the bibtex of the paper that you would prefer to cite, right? I think keeping both references is fine but maybe the bibtex should only be for the latest paper?

@prabhatnagarajan Keeping both ok?

Yeah, I'll make the changes.

imosCI, test this please.

Jenkins CI test (for commit edea0761197dea110425aaee33bddcf80fdcf641, target branch master) succeeded!

imosCI, test this please.

Jenkins CI test (for commit 1fec9c49431dbe486a621050458c6f18e3d0a110, target branch master) failed with status FAILURE.

Testing errors look unrelated. Merging.

@Crissman This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@Crissman This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@Crissman This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?


Windowed / borderless fullscreen mode

Feature request that came in from today's play test. At present we only support regular windowed mode and regular fullscreen. Plenty of games have a nice hybrid where you can run a borderless windowed mode you can still move the mouse out of. Similar to maximizing the windowed game but that leaves in place the menu bar + task bar.
Probably this just involves switching the fullscreen checkbox under graphic options to a drop-down with three options:

Normal window (default)
Borderless maximized
Fullscreen

Or something like that (maybe check the naming other games use)
Then affect some toggle in LWJGL/OpenGL to set the correct mode as you confirm the setting. I don't know where it is but am hoping looking at the existing fullscreen code would make this easy enough to be bite-sized.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/38224148-windowed-borderless-fullscreen-mode?utm_campaign=plugin&utm_content=tracker%2F5279&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F5279&utm_medium=issues&utm_source=github).

I can try this. In involves adding an additional dropdown for borderless fullscreen and implementing the same in LWJGL/OpenGL. Right?

Already took care of it.


How to enable/get the EXPORT button from the version 0.3.2?

How to enable/get the EXPORT button from the version 0.3.2? This is not visible in the 1.0 version!

The export button is gone in qgrid 1.0 and it's no longer possible to export a fully functional version of qgrid to static html, because in the new version of qgrid the sorting/filtering logic is done on the server (so I'd have to reproduce that logic in javascript). Also, there is an issue in nbconvert which prevents exporting widgets from working with ipywidgets 7 (which qgrid 1.0 depends on), so exporting a partially functional version is not currently possible either.
Exporting a partially functional version of qgrid where sorting/filtering is broken (and only 200 rows are included) WILL be possible once https://github.com/jupyter/nbconvert/issues/636 is fixed. When that issue is fixed, that would be done with the following steps:

I realize a partially functional version of the grid with only 200 rows is probably not all that useful to people so another alternative that might be a better option is to use the new "binder" service for rendering live notebooks. I'm using it to host the demo notebook for qgrid and it's been great so far: https://beta.mybinder.org/v2/gh/quantopian/qgrid-notebooks/master?filepath=index.ipynb
If lots of people complain about the needing a fully functional static html export of the qgrid, I'll look into doing that once the nbconvert bug is fixed that's blocking exporting from working with ipywidgets 7.

@TimShawver Thank you for the information, I will keep up on track when the fix is deployed.
Cheers!

@TimShawver looks like the nbconvert fix have been deployed but I still can't see qgrids in HTML export after following the steps you mentioned.


Refactor classifyEdge and depthFirstTraversal

The DSL
Problem 1 simple methods for depthFirstTraversal
Some depth first traversal methods are called outside of the depthFirstTraversal closure. These methods are classifyEdges and reversePostorder. They are really easy to use but they do not provide the ability to specify the root or colors of the traversal.
There should also be simple single methods for all depthFirstTraversal algorithms so they are easier for the user to call.
Code like this
depthFirstTraversal {
    preorder {...}
}

could simply look like this
preorder{...}

And if the user needs to specify a root it could be passed to the method.
preorder(A) {...}

Colors could be passed in as well.
preorder(A, colors) {...}

This should be possible for each algorithm: preorder, postorder, classifyEdges, reversePostorder. Having them outside of the closure makes the code easier to write and possibly easier to understand.
The current depthFirstTraversal methods should be removed.
Problem 2
reversePostorder should be available in an undirected graph. This should be ok since the algorithm is valid for that type of graph, just less useful.
Problem 3: separate specification from results of traversal
Traversal results should not be stored in the specification. Each TraversalSpec is supposed to determine how the traversal is run. It contains the colors and closures to call on certain events in the traversal algorithm. Right now the colors are changed in the TraversalSpec. Since EdgeClassification is also considered a result it would also go into TraversalSpec but it would be better to separate the results from the specification.
TraversalResult and DepthFirstTraversalResult
TraversalResult encapsulates the results of a traversal. The idea is to make TraversalSpec the specification for how the algorithm runs and Traversal result is the output of the algorithm. For example, colors for each vertex can be setup in the TraversalSpec. Once the algorithm runs the resulting colors should be in TraversalResult.
DepthFirstTraversalResult should encapsulate EdgeClassification
EdgeClassification should be a member of DepthFirstTraversalResult. This is because DepthFirstTraversalResult should contain all the results of the traversal and EdgeClassification is a result of the traversal.

The simple methods (preorder, postorder) are basically just like eachPreOrder and eachPostOrder.

All of these methods except edgeType should be package private. Developers should use the each and find type of methods.

Consider renaming methods. depthFirstPreorder, depthFirstPostorder, breadthFirst.
depthFirstPreorder('A') { println it.name }
breadthFirst { println it.name }


Grub always asking for password before YKFDE

Whenever I start my computer, Grub prompts me for the LUKS decryption password (and drops me to a rescue shell if I don't comply) before I even have the chance to use YKFDE. After supplying my decryption password to Grub (I have two passwords enrolled, one "simple" password and one 2FA YubiKey password) the boot continues and goes into the YKFDE prompt where I put in my challenge, touch my YubiKey and am then told that the crypt device is already decrypted and mounted.
My boot partition is not encrypted, my /etc/mkinitcpio.conf hooks are HOOKS="base udev autodetect keyboard keymap modconf block ykfde filesystems fsck", my /etc/defaults/grub default command line is GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=/dev/nvme0n1p2:luks-manjaro:allow-discards root=/dev/mapper/luks-manjaro resume=/dev/mapper/luks-manjaro".
I'm assuming my Grub is somehow misconfigured, but I coulnd't find any resources on how to do so correctly.

That looks to me like GRUB is configured to decrypt your rootfs. Can you post your /etc/default/grub in its entirety?

Please excuse the delay, but I wasn't able to access my computer over the weekend. The contents of my /etc/default/grub are
GRUB_DEFAULT=saved
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu
GRUB_DISTRIBUTOR='Manjaro'
GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=/dev/nvme0n1p2:luks-manjaro:allow-discards root=/dev/mapper/luks-manjaro resume=/dev/mapper/luks-manjaro"
GRUB_CMDLINE_LINUX=""

# If you want to enable the save default function, uncomment the following
# line, and set GRUB_DEFAULT to saved.
GRUB_SAVEDEFAULT=true

# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"

# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y

# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console

# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command 'videoinfo'
GRUB_GFXMODE=auto

# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true

# Uncomment and set to the desired menu colors.  Used by normal and wallpaper
# modes only.  Entries specified as foreground/background.
GRUB_COLOR_NORMAL="light-gray/black"
GRUB_COLOR_HIGHLIGHT="green/black"

# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/usr/share/grub/background.png"
GRUB_THEME="/usr/share/grub/themes/manjaro/theme.txt"

# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"

I did try booting with GRUB_ENABLE_CRYPTODISK=y commented in and out, with no apparent difference.

I uncommented the line and changed the y to n and then regenerated the config with sudo grub-mkconfig -o /boot/grub/grub.cfg. Nothing changed though, I was still prompted for decryption by grub. Is it possible that there are settings anywhere else, that overwrite my changes to /etc/default/grub? If it helps, my generated grub.cfg is as follows:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

set menu_color_normal=light-gray/black
set menu_color_highlight=green/black

if loadfont unicode ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/01_menu_auto_hide ###
if [ "${boot_success}" = "1" -o "${boot_indeterminate}" = "1" ]; then
  set last_boot_ok=1
else
  set last_boot_ok=0
fi

# Reset boot_indeterminate after a successful boot
if [ "${boot_success}" = "1" ] ; then
  set boot_indeterminate=0
# Avoid boot_indeterminate causing the menu to be hidden more then once
elif [ "${boot_indeterminate}" = "1" ]; then
  set boot_indeterminate=2
fi
set boot_success=0
save_env boot_success boot_indeterminate

if [ x$feature_timeout_style = xy ] ; then
  if [ "${menu_show_once}" ]; then
    unset menu_show_once
    save_env menu_show_once
    set timeout_style=menu
    set timeout=60
  elif [ "${menu_auto_hide}" -a "${last_boot_ok}" = "1" ]; then
    set orig_timeout_style=${timeout_style}
    set orig_timeout=${timeout}
    if [ "${fastboot}" = "1" ]; then
      # timeout_style=menu + timeout=0 avoids the countdown code keypress check
      set timeout_style=menu
      set timeout=0
    else
      set timeout_style=hidden
      set timeout=1
    fi
  fi
fi
### END /etc/grub.d/01_menu_auto_hide ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Manjaro Linux' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-8d9242ed-3d51-4a27-945b-2e19c773cc2f' {
	savedefault
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_gpt
	insmod cryptodisk
	insmod luks
	insmod gcry_rijndael
	insmod gcry_rijndael
	insmod gcry_sha256
	insmod ext2
	set root='cryptouuid/0678001e36914ad3a652c603e473897d'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint='cryptouuid/0678001e36914ad3a652c603e473897d'  8d9242ed-3d51-4a27-945b-2e19c773cc2f
	else
	  search --no-floppy --fs-uuid --set=root 8d9242ed-3d51-4a27-945b-2e19c773cc2f
	fi
	linux	/boot/vmlinuz-4.19-x86_64 root=UUID=8d9242ed-3d51-4a27-945b-2e19c773cc2f rw  quiet cryptdevice=/dev/nvme0n1p2:luks-manjaro:allow-discards root=/dev/mapper/luks-manjaro resume=/dev/mapper/luks-manjaro
	initrd	/boot/intel-ucode.img /boot/initramfs-4.19-x86_64.img
}
submenu 'Advanced options for Manjaro Linux' $menuentry_id_option 'gnulinux-advanced-8d9242ed-3d51-4a27-945b-2e19c773cc2f' {
	menuentry 'Manjaro Linux (Kernel: 4.19.66-1-MANJARO x64)' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.66-1-MANJARO x64-advanced-8d9242ed-3d51-4a27-945b-2e19c773cc2f' {
	savedefault
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod cryptodisk
		insmod luks
		insmod gcry_rijndael
		insmod gcry_rijndael
		insmod gcry_sha256
		insmod ext2
		set root='cryptouuid/0678001e36914ad3a652c603e473897d'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint='cryptouuid/0678001e36914ad3a652c603e473897d'  8d9242ed-3d51-4a27-945b-2e19c773cc2f
		else
		  search --no-floppy --fs-uuid --set=root 8d9242ed-3d51-4a27-945b-2e19c773cc2f
		fi
		linux	/boot/vmlinuz-4.19-x86_64 root=UUID=8d9242ed-3d51-4a27-945b-2e19c773cc2f rw  quiet cryptdevice=/dev/nvme0n1p2:luks-manjaro:allow-discards root=/dev/mapper/luks-manjaro resume=/dev/mapper/luks-manjaro
		initrd	/boot/intel-ucode.img /boot/initramfs-4.19-x86_64.img
	}
	menuentry 'Manjaro Linux (Kernel: 4.19.66-1-MANJARO x64 - fallback initramfs)' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.66-1-MANJARO x64-fallback-8d9242ed-3d51-4a27-945b-2e19c773cc2f' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_gpt
		insmod cryptodisk
		insmod luks
		insmod gcry_rijndael
		insmod gcry_rijndael
		insmod gcry_sha256
		insmod ext2
		set root='cryptouuid/0678001e36914ad3a652c603e473897d'
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint='cryptouuid/0678001e36914ad3a652c603e473897d'  8d9242ed-3d51-4a27-945b-2e19c773cc2f
		else
		  search --no-floppy --fs-uuid --set=root 8d9242ed-3d51-4a27-945b-2e19c773cc2f
		fi
		linux	/boot/vmlinuz-4.19-x86_64 root=UUID=8d9242ed-3d51-4a27-945b-2e19c773cc2f rw  quiet cryptdevice=/dev/nvme0n1p2:luks-manjaro:allow-discards root=/dev/mapper/luks-manjaro resume=/dev/mapper/luks-manjaro
		initrd	/boot/initramfs-4.19-x86_64-fallback.img
	}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/60_memtest86+ ###
### END /etc/grub.d/60_memtest86+ ###

linux	/boot/vmlinuz-4.19-x86_64 root=UUID=8d9242ed-3d51-4a27-945b-2e19c773cc2f rw  quiet cryptdevice=/dev/nvme0n1p2:luks-manjaro:allow-discards root=/dev/mapper/luks-manjaro resume=/dev/mapper/luks-manjaro

It's weird that you have root= specified twice, maybe try removing root=/dev/mapper/luks-manjaro from GRUB_CMDLINE_LINUX_DEFAULT (you do edit it at runtime first to be safe)

This file I have not changed myself, it was generated during my Manjaro installation (LUKS, unencrypted boot partition, no LVM). Its contents are:
#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB.  If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
quiet_boot="1"

. "$pkgdatadir/grub-mkconfig_lib"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

CLASS="--class gnu-linux --class gnu --class os"

if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
  OS=Linux
else
  OS="${GRUB_DISTRIBUTOR} Linux"
  CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
fi

# loop-AES arranges things so that /dev/loop/X can be our root device, but
# the initrds that Linux uses don't like that.
case ${GRUB_DEVICE} in
  /dev/loop/*|/dev/loop[0-9])
    GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
  ;;
esac

# Default to disabling partition uuid support to maintian compatibility with
# older kernels.
GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}

# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
# and mounting btrfs requires user space scanning, so force UUID in this case.
if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \
    || ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
	&& [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
    || ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
	&& ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
    || ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
  LINUX_ROOT_DEVICE=${GRUB_DEVICE}
elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
    || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
  LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
else
  LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi

case x"$GRUB_FS" in
    xbtrfs)
	rootsubvol="`make_system_path_relative_to_its_root /`"
	rootsubvol="${rootsubvol#/}"
	if [ "x${rootsubvol}" != x ]; then
	    GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
	fi;;
    xzfs)
	rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
	bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
	LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}"
	;;
esac

title_correction_code=

linux_entry ()
{
  os="$1"
  version="$2"
  type="$3"
  args="$4"

  if [ -z "$boot_device_id" ]; then
      boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
  fi
  if [ x$type != xsimple ] ; then
      case $type in
	  recovery)
	      title="$(gettext_printf "%s (Kernel: %s - recovery mode)" "${os}" "${version}")" ;;
	  fallback)
	      title="$(gettext_printf "%s (Kernel: %s - fallback initramfs)" "${os}" "${version}")" ;;
	  *)
	      title="$(gettext_printf "%s (Kernel: %s)" "${os}" "${version}")" ;;
      esac
      if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
	  replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
	  quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
	  title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
	  grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
      fi
      echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
  else
      echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
  fi
  if [ x$type != xrecovery ] && [ x$type != xfallback ] ; then
      save_default_entry | grub_add_tab
  fi

  # Use ELILO's generic "efifb" when it's known to be available.
  # FIXME: We need an interface to select vesafb in case efifb can't be used.
  if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
      echo "	load_video" | sed "s/^/$submenu_indentation/"
      if grep -qx "CONFIG_FB_EFI=y" "${config}" 2> /dev/null \
	  && grep -qx "CONFIG_VT_HW_CONSOLE_BINDING=y" "${config}" 2> /dev/null; then
	  echo "	set gfxpayload=keep" | sed "s/^/$submenu_indentation/"
      fi
  else
      if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
	  echo "	load_video" | sed "s/^/$submenu_indentation/"
      fi
      echo "	set gfxpayload=$GRUB_GFXPAYLOAD_LINUX" | sed "s/^/$submenu_indentation/"
  fi

  echo "	insmod gzio" | sed "s/^/$submenu_indentation/"

  if [ x$dirname = x/ ]; then
    if [ -z "${prepare_root_cache}" ]; then
      prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
    fi
    printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/"
  else
    if [ -z "${prepare_boot_cache}" ]; then
      prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
    fi
    printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
  fi

  if [ x"$quiet_boot" = x0 ]; then
    message="$(gettext_printf "Loading Linux %s ..." "${version}")"
    sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
EOF
  fi
    sed "s/^/$submenu_indentation/" << EOF
	linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} rw ${args}
EOF
  if test -n "${initrd}" ; then
    # TRANSLATORS: ramdisk isn't identifier. Should be translated.
    message="$(gettext_printf "Loading initial ramdisk ...")"
    initrd_path=
    for i in ${initrd}; do
      initrd_path="${initrd_path} ${rel_dirname}/${i}"
    done
    if [ x"$quiet_boot" = x0 ]; then
      sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
EOF
  fi
    sed "s/^/$submenu_indentation/" << EOF
	initrd	$(echo $initrd_path)
EOF
  fi
  sed "s/^/$submenu_indentation/" << EOF
}
EOF
}

machine=`uname -m`
case "x$machine" in
    xi?86 | xx86_64)
	list=
	for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
	    if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
	done ;;
    *)
	list=
	for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
                  if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
	done ;;
esac

case "$machine" in
    i?86) GENKERNEL_ARCH="x86" ;;
    mips|mips64) GENKERNEL_ARCH="mips" ;;
    mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
    arm*) GENKERNEL_ARCH="arm" ;;
    *) GENKERNEL_ARCH="$machine" ;;
esac

prepare_boot_cache=
prepare_root_cache=
boot_device_id=
title_correction_code=

# Extra indentation to add to menu entries in a submenu. We're not in a submenu
# yet, so it's empty. In a submenu it will be equal to '\t' (one tab).
submenu_indentation=""

is_top_level=true
while [ "x$list" != "x" ] ; do
  linux=`version_find_latest $list`
  gettext_printf "Found linux image: %s\n" "$linux" >&2
  basename=`basename $linux`
  dirname=`dirname $linux`
  rel_dirname=`make_system_path_relative_to_its_root $dirname`
  version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
  alt_version=`echo $version | sed -e "s,\.old$,,g"`
  linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"

  if test -e "/etc/manjaro-release" ; then
    kbasename="`echo "${basename}" | sed -e 's,vmlinuz-,linux,g'`"
    if test -e "${dirname}/${kbasename}.kver" ; then
 	version="$(cat ${dirname}/${kbasename}.kver)"
    fi
    kbasename2="`echo "${basename}" | sed -e 's,vmlinuz-,linux-,g'`"
    if test -e "${dirname}/${kbasename2}.kver" ; then
 	version="$(cat ${dirname}/${kbasename2}.kver)"
    fi
    kbasename3="`echo "${basename}" | sed -e 's,vmlinuz-,linux,g' | sed -e 's,\.,,g'`"
    if test -e "${dirname}/${kbasename3}.kver" ; then
 	version="$(cat ${dirname}/${kbasename3}.kver)"
    fi
    kbasename4="`echo "${basename}" | sed -e 's,vmlinuz-,linux-,g' | sed -e 's,\.,,g'`"
    if test -e "${dirname}/${kbasename4}.kver" ; then
 	version="$(cat ${dirname}/${kbasename4}.kver)"
    fi
  fi

  initrd_early=
  for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
	   ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
    if test -e "${dirname}/${i}" ; then
      initrd_early="${initrd_early} ${i}"
    fi
  done

  initrd_real=
  initramfs_manjaro="`echo "${basename}" | sed -e 's,vmlinuz,initramfs,g'`"
  for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
	   "initrd-${version}" "initramfs-${version}.img" \
	   "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
	   "initrd-${alt_version}" "initramfs-${alt_version}.img" \
	   "initramfs-genkernel-${version}" \
	   "initramfs-genkernel-${alt_version}" \
	   "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
	   "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" \
	   "${initramfs_manjaro}.img" ; do
    if test -e "${dirname}/${i}" ; then
      initrd_real="${i}"
      break
    fi
  done

  initrd=
  if test -n "${initrd_early}" || test -n "${initrd_real}"; then
    initrd="${initrd_early} ${initrd_real}"

    initrd_display=
    for i in ${initrd}; do
      initrd_display="${initrd_display} ${dirname}/${i}"
    done
    gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
  fi

  config=
  for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
    if test -e "${i}" ; then
      config="${i}"
      break
    fi
  done

  initramfs=
  if test -n "${config}" ; then
      initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
  fi

  if test -z "${initramfs}" && test -z "${initrd_real}" ; then
    # "UUID=" and "ZFS=" magic is parsed by initrd or initramfs.  Since there's
    # no initrd or builtin initramfs, it can't work here.
    if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
	|| [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then

	linux_root_device_thisversion=${GRUB_DEVICE}
    else
	linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
    fi
  fi

  if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
    linux_entry "${OS}" "${version}" simple \
    "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"

    submenu_indentation="$grub_tab"

    if [ -z "$boot_device_id" ]; then
	boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
    fi
    # TRANSLATORS: %s is replaced with an OS name
    echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
    is_top_level=false
  fi

  linux_entry "${OS}" "${version}" advanced \
              "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"

  for i in "${initramfs_manjaro}-fallback.img" "initramfs-${version}-fallback.img" ; do
    if test -e "${dirname}/${i}" ; then
      initrd="${i}"
      gettext_printf "Found initrd fallback image: %s\n" "${dirname}/${initrd}" >&2
      linux_entry "${OS}" "${version}" fallback \
                  "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
      break
    fi
  done

  if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
    linux_entry "${OS}" "${version}" recovery \
                "single ${GRUB_CMDLINE_LINUX}"
  fi

  list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
done

# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
if [ x"$is_top_level" != xtrue ]; then
  echo '}'
fi

echo "$title_correction_code"

@RikuXan did you tried removing second root= as suggested in https://github.com/agherzan/yubikey-full-disk-encryption/issues/53#issuecomment-525040867 ?

I just tried removing the second root option and regenerating my grub config, but it's still asking me for a password. One thing I noticed, though I am not sure since when this has changed, is that the YKFDE decrpytion doesn't say that the device is already decrypted anymore. So it seems that grub is actually asking for the password and then not even using it.

I wonder if you have second grub which is booted instead. Is this UEFI system?
Could you show efibootmgr -v and cat /proc/cmdline output?
You may also try re-installing grub: https://wiki.archlinux.org/index.php/GRUB#Installation_2

Yes, my system is UEFI-based.
efibootmgr -v:
BootCurrent: 0006
Timeout: 2 seconds
BootOrder: 0006,0001
Boot0000* Windows Boot Manager	HD(2,GPT,a019935e-e5ad-4897-9134-58f33b38ffbb,0x96800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.<IP_ADDRESS>.}...a................
Boot0001* rEFInd Boot Manager	HD(1,GPT,c544de09-e30c-4130-8b9f-f398c7971710,0x800,0x96000)/File(\EFI\refind\refind_x64.efi)
Boot0006* Manjaro	HD(1,GPT,c544de09-e30c-4130-8b9f-f398c7971710,0x1000,0x96000)/File(\EFI\Manjaro\grubx64.efi)

cat /proc/cmdline:
BOOT_IMAGE=/boot/vmlinuz-4.19-x86_64 root=UUID=8d9242ed-3d51-4a27-945b-2e19c773cc2f rw quiet cryptdevice=/dev/nvme0n1p2:luks-manjaro:allow-discards resume=/dev/mapper/luks-manjaro

The other UEFI boot loaders were from previous OSes, I thought Manjaro would have overwritten them when I installed it as the sole OS on the computer, but it seems not.
I am somewhat scared to completely reinstall Grub. Is there anything that might go wrong in trying this?

What does your ykfde.conf look? You need to uncomment one of the options at the top and remember to include it in the initramfs. I was also facing this problem and those were my problem.

Can you be more specific and provide an example? What is meant by "include it in the initramfs", if e.g. the YKFDE_DISK_UUID is uncommented? Appreciate:-)

I'm seeing it now. GRUB is detecting your root as encrypted, as demonstrated by it searching for cryptoroot/<blah>. I don't think this is a YKFDE issue.

@RikuXan You can take a look at my guide, maybe it helps to find your issue.

I'm sorry for not answering your questions when you were trying to help me, but I kind of lost track of my question and had accepted having to enter a passphrase and challenge when booting.
@XVicarious I have added ykfde to my initramfs config an rebuilt it using mkinitpcio -p linux. My ykfde.conf looks like this:
### Configuration for 'yubikey-full-disk-encryption'.
### Remove hash (#) symbol and set non-empty ("") value for chosen options to
### enable them.

### *REQUIRED* ###

# Set to non-empty value to use 'Automatic mode with stored challenge (1FA)'.
YKFDE_CHALLENGE="<my-challenge>"

# Use 'Manual mode with secret challenge (2FA)'.
YKFDE_CHALLENGE_PASSWORD_NEEDED="1"

# YubiKey slot configured for 'HMAC-SHA1 Challenge-Response' mode.
# Possible values are "1" or "2". Defaults to "2".
#YKFDE_CHALLENGE_SLOT="2"

### OPTIONAL ###

# Enable communication with YubiKey via NFC (Experimental).
#YKFDE_NFC="1"

# UUID of device to unlock with 'cryptsetup'.
# Leave empty to use 'cryptdevice' boot parameter.
YKFDE_DISK_UUID="0678001e-3691-4ad3-a652-c603e473897d"

# LUKS encrypted volume name after unlocking.
# Leave empty to use 'cryptdevice' boot parameter.
YKFDE_LUKS_NAME="luks-manjaro"

# Device to unlock with 'cryptsetup'. If left empty and 'YKFDE_DISK_UUID'
# is enabled this will be set as "/dev/disk/by-uuid/$YKFDE_DISK_UUID".
# Leave empty to use 'cryptdevice' boot parameter.
#YKFDE_LUKS_DEV="/dev/nvme0n1p2"

# Optional flags passed to 'cryptsetup'. Example: "--allow-discards" for TRIM
# support. Leave empty to use 'cryptdevice' boot parameter.
YKFDE_LUKS_OPTIONS="--allow-discards"

# Number of times to try assemble 'ykfde passphrase' and run 'cryptsetup'.
# Defaults to "5".
#YKFDE_CRYPTSETUP_TRIALS="5"

# Number of seconds to wait for inserting YubiKey, "-1" means 'unlimited'.
# Defaults to "30".
#YKFDE_CHALLENGE_YUBIKEY_INSERT_TIMEOUT="30"

# Number of seconds to wait after successful decryption.
# Defaults to empty, meaning NO wait.
#YKFDE_SLEEP_AFTER_SUCCESSFUL_CRYPTSETUP=""

# Verbose output. It will print all secrets to terminal.
# Use only for debugging.
#DBG="1"

@sandrokeil Thank you very much for the guide, it looks great. Unfortunately there is a key difference to my setup: my boot partition is not actually encrypted. I tried adjusting my configuration files according to you guide, but no dice, GRUB still asks me for my primary (non-ykfde) LUKS key in the beginning of my boot and only after that the ykfde initram module starts up and decrypts my LUKS partition via challenge response.

This perhaps won't solve your problem but you shouldn't enable both YKFDE_CHALLENGE and YKFDE_CHALLENGE_PASSWORD_NEEDED. The latter will always take precedence but your challenge won't be secret.

@Vincent43 Thanks for the pointer, I removed the challenge from the config file.

I actually found the issue and the banality of it kinda embarrasses me, but maybe it helps anyone. I actually had no separate boot partition, rather it was embedded into my root partition. The only separate, unencrypted partition was my EFI partition (mounted under /boot/efi) which only contained EFI bootloaders, but no linux kernel, no initramfs and no GRUB config. So obviously the GRUB EFI binary has no configuration file and can only see an encrypted partition so therefore must ask for a decryption password, no matter what I configure in my at this point inaccessible GRUB configuration file.
My solution was to copy everything from my /boot directory (save for the efi folder) into the /boot/efi/ directory so that kernel, initramfs and config files are accessible there and reconfigured my fstab to mount the EFI partition on /boot in order to still have future kernel updates applied correctly.
A big thanks to everyone who tried to help me.

I actually found the issue and the banality of it kinda embarrasses me, but maybe it helps anyone. I actually had no separate boot partition, rather it was embedded into my root partition. The only separate, unencrypted partition was my EFI partition (mounted under /boot/efi) which only contained EFI bootloaders, but no linux kernel, no initramfs and no GRUB config. So obviously the GRUB EFI binary has no configuration file and can only see an encrypted partition so therefore must ask for a decryption password, no matter what I configure in my at this point inaccessible GRUB configuration file.
My solution was to copy everything from my /boot directory (save for the efi folder) into the /boot/efi/ directory so that kernel, initramfs and config files are accessible there and reconfigured my fstab to mount the EFI partition on /boot in order to still have future kernel updates applied correctly.
A big thanks to everyone who tried to help me.

I'm experiencing the same probelm! Thank you very much - you helped me a lot.
Could you explain me how did you get the grubx64.efi to load the kernel, etc. which is copied to the same directory.

My GRUB configuration was actually already configured to load the kernel from /boot from the OS install, so I didn't have to configure anything else to make it work.
If that is not the case for you, the grubx64.efi should also search for its configuration under /boot/grub/grub.cfg I suppose, at least I wouldn't know where else it would look for it.

Hey folks, I'm also coming across this on a fresh Manjaro install; trying to get my head around it at the moment. I moved the files across and changed fstab appropriately, but GRUB couldn't find normal.mod until I copied all the files back over to the original partition - which restored the laptop to working order, but still keeps this issue in play. @mschabhuettl, did you manage to fix the problem you had, which I think was along these lines?

Got it to work!
For the sake of anyone else coming across this, what worked for me was moving /boot onto the EFI partition (by copying the files in /boot into /boot/efi), changing fstab so that the EFI partition mounts at /boot, and editing /etc/default/grub to disable the GRUB_ENABLE_CRYPTODISK setting. Then, I ran sudo update-grub and sudo grub-install /dev/mydevice --efi-directory /boot - the EFI directory had to be specifically stated to grub-install, otherwise it just failed saying it couldn't work out where to put everything.
As I'm using plymouth, I also got rid entirely of plymouth-encrypt from the HOOKS line, as I only have the YubiKey drive to unlock.


Block "admin_logo" to change logo

Create block to customize logo image of dashboard, in projects Wagtail.

Reopening this, as the subject of re-branding the Wagtail admin has come up from a different angle in #934, and we might as well tackle it all in one go...
Unless I'm missing something, @tomdyson's solution on http://stackoverflow.com/questions/24536034/how-to-change-django-wagtails-admin-logo does not negate the purpose of this PR. They're both describing the same mechanism, except that this PR adds a dedicated {% block %} for it, meaning that the user doesn't have to copy the entire base.html into their app and make their site brittle to changes if we ever modify Wagtail's own base.html.

@gilsondev The code example given in your documentation doesn't work for me... the {% extends "wagtailadmin/base.html" %} line means that the template tries to import itself and gets stuck in an infinite recursive loop.
From a quick bit of research, it seems that the django-overextends library is designed to solve this problem, so I can update the example to refer to that. However, I was wondering if you'd found an alternative method that didn't require an external library...?

it great's, thank you.


Instagram Share button

Hi! I was wondering if there was social share button for instagram as it is one of the most used social media platforms and now also available as a website - instagram.com

@pratt33k how would you able to add instagram button?

@pratt33k how would you able to add instagram button?

@waleedarshad Unsure about that but should be similar to how the share to Facebook / whatsapp button was added. Either a person could share to his instagram story or share by messaging an individual / group perhaps

Any update on instagram share button?

+1


Recursive vs. One-shot Parser to fix #3

implements a fix for #3

new switch parse_defs on struct Parser that is read in Parser.read_one and disables parsing new syntax definitions if false
made Parser public so that it can be used directly without relying on fn parse
made field Parser.reader public so that it can be used as it was being used for reporting location of failure in fn parse
new Parser constructors Parser::recursive and Parser::one_shot to construct Parsers that do and do not have the ability to parse new syntax definitions, respectively
made fn Parser.read_all public so that it can be used directly without relying on fn parse

sorry for the force-push (synced with new changes in main by mistake)


Unexpected server response (0) while retrieving pdf

We are specifically getting this error when using Amazon ec2 instance. Configuration on aws instance is Tomcat 7, Ubuntu 16.04 and memory is 8gb. It occurs when the user tries to view pdf file. In our application, we are having one functionality where the user can only view PDF file onto browser, but won't be able to download it. PDF file is on the same server. We are using cors minimal configuration. We have tried it locally with Ubuntu and it is working fine.
Code snippet:
var fileSplitContent = fileName.split(".");
if ($('#viewImageOnlyForm')[0] != undefined && $('#viewPdfOnlyForm')[0] != undefined) {
if (fileSplitContent[fileSplitContent.length - 1].toLowerCase() != "pdf") {
$('#imageSource').val(requestURL + $.param(inputData));
$('#viewImageOnlyForm').submit();
} else {
var requestURL = "rest/file/getCapitalRaiseFile?";
$('#pdFSource').val(requestURL + $.param(inputData));
$('#viewPdfOnlyForm').submit();
}
} else {
// pop up download attachment dialog box
downloadIFrame.attr("src", requestURL + $.param(inputData));
}
}
Errors on catalina.out:
Jan 04, 2017 5:07:31 AM org.glassfish.jersey.server.ServerRuntime$Responder writeResponse SEVERE: An I/O error has occurred while writing a response message entity to the container output stream. org.glassfish.jersey.server.internal.process.MappableException: org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Connection reset
Caused by: org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Broken pipe (Write failed)
This is issue is not occurring on Firefox Mozilla and some times working in chrome too. We have used PDFJS.version = '1.1.469' , and PDFJS.build = 'f06aa6a'. Is there any specif version of pdf.jd for chrome or else any changes we need to do in our pdf.js.
Everything is working fine on older versions of Mozilla Firefox when we use amazons own Linux on their instance. But nothing is working when we use ubuntu on amazon instance.
Images related to issue
1)Error on chrome browser:
https://cloud.githubusercontent.com/assets/25339020/22279768/b7467592-e2f2-11e6-87c0-aa7c9ca0ca0b.png)

Error shown on chrome console:       https://cloud.githubusercontent.com/assets/25339020/22279796/e8f91932-e2f2-11e6-808f-488061d8ec17.png

@gjuggler

@dravix :Hi...is it also related to rendering with chrome browser.....specifically for the pdf.js mozilla native.

This looks like a problem with your server (500 Internal Server error).
We need more information to debug this. Can you follow the following steps:

Visit chrome://net-internals
Do your thing to get the error
Click on "Save to file" at the tab from step 1.
Attach the file here, or mail it to me (see my profile for my e-mail address).

Hi Rob,
Thanks for replying. I am sending you the file you requested. If you need
anything else, let me know.
Thanks & Regards,
Jaydip Kulkarni.
[image: Inline image 1] https://grex.in/   [image: Inline image 3]
https://www.youtube.com/channel/UCNEpuU2OBdcwsu6SWtD7v8A/feed  [image:
Inline image 2] https://twitter.com/grexdotin  [image: Inline image 4]
https://www.linkedin.com/groups/Say-Hello-GREX-6588671?trk=groups_about-h-dsc&goback=.anb_6588671_*2_*1_*1_*1_*1_*1
GREX https://grex.in/ | YouTube
https://www.youtube.com/channel/UCNEpuU2OBdcwsu6SWtD7v8A/feed | Twitter
https://twitter.com/grexdotin | LinkedIn
https://www.linkedin.com/groups/Say-Hello-GREX-6588671?trk=groups_about-h-dsc&goback=.anb_6588671_*2_*1_*1_*1_*1_*1
| Blog http://blog.grex.in/
*Disclaimer: *All available content and information in this email and at
GREX is legally privileged and restricted for any kind of
distribution. Securities of unlisted organizations have limited liquidity
and involves high risk and hence Members and Participants of the Platform
are requested to exercise necessary caution and do their own independent
diligence. Information contained herein does not construe any offer,
assistance, invitation or solicitation to buy/sell securities directly or
indirectly, by GREX. Detailed Disclaimer is available at
https://grex.in/disclaimer.html

You cannot add attachments here using e-mail. You either have to upload them here directly using the GitHub website or just e-mail them directly to @Rob--W.

@jcool141 In the log file you sent me, I see that the connection is immediately reset when PDF.js attempts to load the PDF file, before any response is received (not even response headers).
In your initial report, you are mentioning a "500 internal server error" response (in the screenshot), which does however not appear in the log.
Can you send me the log that includes this 500 internal server error?
If that does not work, create a packet capture (e.g. with Wireshark) and send me the pcap file for further analysis.

Closing for now. This does not appear to be a PDF.js problem, but rather a server configuration issue. If after debugging it turns out that there is something we can do in PDF.js, please open a new issue with as much details as possible. Thanks.

I had a similar problem. The problem is solved when I disable the "Xtreme Download Manager" application extension I have installed on Chorome.

I had a similar problem. The problem is solved when I disable the "Xtreme Download Manager" application extension I have installed on Chorome.


Fix UIManager setFrame forView warnings

RCTUIManager's setFrame forView is deprecated, thus there are deprecation warnings in XCode.
Internally setFrameForView is just calling setSizeForView, so we can modify the following files to call setSizeForView directly.
reference: setFrameForView calling setSizeForView: (https://github.com/facebook/react-native/blob/master/React/Modules/RCTUIManager.m#L1658)
This fixes another warning for: https://github.com/facebook/react-native/issues/11736

Hmm, the CircleCI Android tests failed?

Thanks for your PR! The same fix already landed to master yesterday: https://github.com/facebook/react-native/commit/233015c93ee6f986cf1267f143fdfadbf9c6831d so I'll close this one.

No problem. Thanks :).


[Candidate 2v2 Oil Carnage ZH v1] Big rocks obscure view on flags of Oil Derricks

Observed behavior
Big rocks obscure view on flags of Oil Derricks (3).
Expected behavior
Rocks do not obscure view on Oil Derricks in default camera rotation.
Screenshots

28.06.2024
Is not fixed.


Router component catches and shows (to users/clients) errors in production

The error print out appears to ship with the production build of react-static.

Also as react-static is catching the errors they are not getting to the top of our app where caught errors in production are sent to Sentry (https://sentry.io/welcome/)
We have fixed this by catching errors before they bubble to the react-static <Router/> component, but would prefer to change the behaviour of react-static.
Version: v5.6.7
https://github.com/nozzle/react-static/blob/v5.6.7/src/client/components/Router.js
Suggested solution
ErrorCatch component that in development wraps the <ResolvedRouter /> with a component that has componentDidCatch and prints out the UI. And in production it just returns this.props.children, so it doesn't have component with a componentDidCatch method and the error can bubble to the <App />/top level component.
If people want to maintain the existing behaviour, errors shown in production, maybe a prop on the <ResolvedRouter /> component  like showErrorsInProduction={true} could be an option.

Sounds good to me. If you want to PR a fix that keeps them on in
development, but turns them off in production (with that prop to force them
on), then I’ll merge it :)
On Wed, Apr 11, 2018 at 9:01 AM Jason Lafferty<EMAIL_ADDRESS>wrote:

The error print out appears to ship with the production build of
react-static.
[image: screen shot 2018-04-10 at 14 57 02]
https://user-images.githubusercontent.com/10165683/38624494-18707756-3da0-11e8-967c-878253d18c7b.png
Also as react-static is catching the errors they are not getting to the
top of our app where caught errors in production are sent to Sentry (
https://sentry.io/welcome/)
We have fixed this by catching errors before they bubble to the
react-static  component, but would prefer to change the
behaviour of react-static.
Version: v5.6.7
https://github.com/nozzle/react-static/blob/v5.6.7/src/client/components/Router.js
Suggested solution
ErrorCatch component that in development wraps the
with a component that has componentDidCatch and prints out the UI. And in
production it just returns this.props.children, so it doesn't have
component with a componentDidCatch method and the error can bubble to the /top level component.
If people want to maintain the existing behaviour, errors shown in
production, maybe a prop on the  component like
showErrorsInProduction={true} could be an option.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/nozzle/react-static/issues/553, or mute the thread
https://github.com/notifications/unsubscribe-auth/AFUmCfS305io7gOUT2WCXM4_eq2SPmDRks5tnhqugaJpZM4TQM8K
.

👍 sounds good will do