Group sequential messages from same sender into single group, reduce CSS padding, and don't repeat sender name and timestamp

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Feature

What is the current behavior? (You can also link to an open issue here)
Resolves #86
Name and timestamp are printed for each message
Large amounts of space are used for each message

What is the new behavior (if this is a feature change)?
Name and timestamp are only printed for first message from sender until someone else sends a message
Padding and margin around text eliminated to maximize screen real estate usage

Please rebase :)

Please rebase onto main :)

Sure sorry, just kept going off the branch I had going earlier. Can certainly improve the UI / CSS more but for now it's certainly more compact.

@D4nte should be good now.

@D4nte hmm actually the commits seem to have gotten mixed up, sorry I will sort it out.

@D4nte OK should be good now, take a look when you have a chance. Speak tomorrow probably at this point.

Seems to be failing on MacOS with a timeout:
1 failing

Waku Relay
Interop: Nim
Nim connects to js
"before each" hook for "nim subscribes to js":
Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/runner/work/js-waku/js-waku/src/lib/waku_relay/index.spec.ts)

I adjusted the padding settings a bit more. It can easily be tweaked for whatever we want at the end, a matter of taste obviously.

Seems to be failing inconsistently with a timeout:
1 failing
1. Waku Relay
   Interop: Nim
   Nim connects to js
   "before each" hook for "nim subscribes to js":
   Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/Users/runner/work/js-waku/js-waku/src/lib/waku_relay/index.spec.ts)

Yes, unfortunately the CI is not as stable as I wished. I want to move forward with feature shipping before reviewing the CI.

Yes, unfortunately the CI is not as stable as I'd like to see it. I want to move forward with feature shipping before reviewing the CI.

Sure not critical at this point, it's failing during the initialization I think may just be a matter of not having a long enough timeout or may be a race condition.

Looks good, well done.
When trying it out with several participants I find the nick very small, are you able to make it bigger?

Thanks! Most credit is due to the creators of the React theme but I had fun refactoring it in (sorting the messages was a bit of fun too).
It should just be a manner of tweaking the CSS to use a bigger font but I think the Name and the Timestamp are the same text and font. I will take a look. I was using it on my phone and computer and talking to friends, it works great except that if you switch away it seems to lose the connection (WebSocket?) and you have to reload; my friend was asking if we could put it in his Web site, I told him since it's Open Source should not be a problem but we probably want to setup our own server node or we'll be sharing chatter with the demo instance, is that about correct?

@D4nte this is a real CI failure, we changed the variable name but not the reference in the code; I will fix one sec

@D4nte I increased the font-size, maybe it's a little too much but it's easily tweaked again. I think that's probably good for the PR; let's make sure it passes the CI check again though

I squashed it into a single commit

it works great except that if you switch away it seems to lose the connection (WebSocket?) and you have to reload;

What do you mean switch away ? Yes it's websockets. Do you mean if the app is set to the background?

my friend was asking if we could put it in his Web site, I told him since it's Open Source should not be a problem but we probably want to setup our own server node or we'll be sharing chatter with the demo instance, is that about correct?

Best to wait for #68 before integrating it in someone's website.

it works great except that if you switch away it seems to lose the connection (WebSocket?) and you have to reload;

What do you mean switch away ? Yes it's websockets. Do you mean if the app is set to the background?
I wonder if I fix it with #113

Sorry, yes, the app is set to the background; more specifically, on my Android phone I was running the browser and it worked fine until I switched to another app and came back, when it was always dead and I had to reload and then got the connection again. On my ChromeBook I was running it in Chrome at the base OS level and in Opera running inside a LXC container inside a VM, I was able to switch back and forth and send message and both stayed alive but if I put both in the background and did something else even briefly they both died fairly quickly. Not exactly a scientific study I performed but certainly something we could simulate in an interesting automated test for CI at some point.
I think #113 would probably fix it at least I would get the messages back when reloading; we may need to force a reload, not sure let's see.

my friend was asking if we could put it in his Web site, I told him since it's Open Source should not be a problem but we probably want to setup our own server node or we'll be sharing chatter with the demo instance, is that about correct?

Best to wait for #68 before integrating it in someone's website.

Ok, fair enough, I just thought if it was code freely available on GitHub there'd be no harm in him using it. I guess we could probably just use a different topic even on the same server... No rush anyways.

OK I figured out how to tweak the font separately; at 100% it looks relatively close to my Discord client, without the Avatar of course, the user can zoom in and out with the web client to enlarge the fonts.
We can add Avatars if we want, they are part of the UI Toolkit.

Ok, fair enough, I just thought if it was code freely available on GitHub there'd be no harm in him using it.

I am stopping anyone, it's under a very permissive license. I just wanted to mention that the API is not the best right now.

Actually, I just understood why I felt it was less readable.
The text indent is gone. See the current version of https://status-im.github.io/js-waku/

There is margin left of the message, but not left of the author.
I may be pedantic here, maybe best if we can just merge the grouping of messages of same author without the font changes. I can then do the font changes myself to a result I want.

Ok, fair enough, I just thought if it was code freely available on GitHub there'd be no harm in him using it.

I am stopping anyone, it's under a very permissive license. I just wanted to mention that the API is not the best right now.

Ah well he just wants to drop the component into his site, he's not a programmer

Actually, I just understood why I felt it was less readable.
The text indent is gone. See the current version of https://status-im.github.io/js-waku/

There is margin left of the message, but not left of the author.
I may be pedantic here, maybe best if we can just merge the grouping of messages of same author without the font changes. I can then do the font changes myself to a result I want.

What is gone is the HTML padding around the messages; other than that it's all highly subjective as to what is "readable", I was merely trying to model it after Discord and Slack at your suggestion, I don't know exactly what you have in mind; I only changed font sizes, not fonts (in the React components that I used).
I now added left padding so they will be "indented", you can tweak that as well.
The CSS code is here, all it does is change padding and font sizes, you can obviously tweak it yourself:
const themes = {
AuthorName: {
css: {
fontSize: '1.2em',
},
},
Message: {
css: {
margin: '0em',
padding: '0em',
fontSize: '0.83em',
},
},
MessageText: {
css: {
margin: '0em',
padding: '0.1em',
paddingLeft: '1em',
fontSize: '1em',
},
},
MessageGroup: {
css: {
margin: '0em',
padding: '0.2em',
},
},
};

Actually, I just understood why I felt it was less readable.
The text indent is gone. See the current version of https://status-im.github.io/js-waku/

There is margin left of the message, but not left of the author.
I may be pedantic here, maybe best if we can just merge the grouping of messages of same author without the font changes. I can then do the font changes myself to a result I want.

BTW my Discord client also had them without the left margin as I put in the screenshot, so I thought that's what you wanted :)
We can add the Avatars as well if you like. What is a "good look and feel" is a very personal thing though obviously :)

I think the avatar is pushing a bit.
As mentioned I can see I am being pedantic on the look-and-feel. Can we just have the message grouping in this PR and merge it. I'll play around with the fonts separately. Thank you for the hard work as I now know how to change the fonts.

I think the avatar is pushing a bit.
As mentioned I can see I am being pedantic on the look-and-feel. Can we just have the message grouping in this PR and merge it. I'll play around with the fonts separately. Thank you for the hard work as I now know how to change the fonts.

No worries :)
The part I was better at was figuring out what the CSS to tweak was; when it comes to being a designer I'm not exactly in my core competencies.
I refactored those two functions, let me know if there's anything else you want or you can of course do it yourself I won't be offended

bors merge


Fix permissions

So it's seems that this docker doesn't set any permissions for pleroma user and because of that when you use dashboard, it's broken and screams with errors. The PR fixes this.

It's weird, there's a USER pleroma line above, so every instruction in between should be run as the pleroma user 🤔

I dunno man, only after running the command I wrote in Dockerfile it's acutally was running and was able to set up everything.

@AndreVuillemot In case you still care: https://github.com/angristan/docker-pleroma/pull/49 maybe this will fix any issues for you.

@peterrus Ha-ha, glad this stuff is being slowly fixed. I am currently cooked my own Dockerfile with stuff I need.
https://github.com/silkkycloud/docker-pleroma


Add GitHub Actions for CI

Add CI on push to main and whenever a pull_request is opened, reopened or synchronized
Jobs:

Run npm test
Lint with prettier to enforce code formatting

Resolved in #34


Clarify secret providers and configuration options of the Docker images

When running the Docker images, it is currently not completely clear what should be configured and how. For example, are file based secret providers required for just running the services? If a secret provider is required for running the services and not only for storing secrets for repositories to be analyzed, why is this required instead of only using environment variables?
I recently made some changes to the Docker Compose file, where I use the secret provider, but if the same could be done with pure environment variables, that would probably be better and more flexible for different deployment options.

Related to #316.

To add to the confusion, there are also two secrets providers: One to provide secrets for the configuration, and one to provide secrets associated to organizations, products, and repositories. This lead to #582 which was fixed by #703.


Revise logic, outputs, and survey for questions we've already implemented

logic for Zoning questions

In the tool, the table below the map will only show details about all project lots. The tool will not calculate conclusions about the project.
For a lot we effectively say: "This lot is in a [R1-R4 OR R5-R10] residential zoning district and [IS or IS NOT] in a C or M district."
For the project, we need to instruct applicants on how to use the results for all of their lots.

"Any lots with R1-R4? If so, select R1-R4 for your project.

If not, are all lots R5-R10? If so, select R5-R10. If not, select C or M"

"Any lots with C or M? If so, your project requires a regulatory agreement with a government agency."

@jackrosacker I made this issue to cover changes we wanna make to the categories of questions we've already implemented, especially the Zoning logic

Thoughts on zoning. Mulling two options. The first is the most similar to what you have above.
Option 1:

Q#
Question
Logic
Answer Type
Answers

1
Is any part of your project within an R1-R4 zoning district?
Always visible
Radio
Yes, No

2
Is every lot within your project entirely within an R5-R10 zoning district?
Visible if Q1 == "No"
Radio
Yes, No

3
Is any part of your project within a C or M district? (including mixed use districts)
Always visible
Radio
Yes, No

Which allows for a few paths:

the R1-R4 path
the R1-R4 with a little C or M path
the fully R5-R10 path
the R5-R10 with a little C or M path (which isn't a valid selection, but is possible to select both in the question layout in my table, and would take the user down the C or M path)
the C or M path

Option 2:

Q#
Question
Logic
Answer Type
Answers

1
Which zoning districts define your project area?
Always visible
Radio
At least partially within R1-R4,  Entirely within R5-R10,  Entirely within C or M

3
Is any part of your project within a C or M district? (including mixed use districts)
Visible if Q1 IN ("...R1-R4", "...R5-R10")
Radio
Yes, No

What do you think @damonmcc?


Added my Info.

I created a fork and a local repository. Then I made changes to the app.js file before pushing my changes to a remote repo. Now I am creating a pull request!

Hi @ch3926,
Could you please ensure that you've forked the latest version of the repository? We've made some updates where the card details have been relocated from the app.js file to the carddetails.json file to optimize our code. Instead of adding your card details directly to the app.js file, kindly add them to the carddetails.json file.
Thank you! 😊


Fixed the usage of the shortestPath function for multiple edge types

The commit 3b660af55ee8f6fa34336a47fde71c9e93504175 suggests a solution to a problem where the shortestPath function can take an array of labels that the function should only traverse. In version 3.X the fix is not present.

Codecov Report

Merging #9337 into develop will decrease coverage by 0.02%.
The diff coverage is 11.11%.

@@              Coverage Diff              @@
##             develop    #9337      +/-   ##
=============================================
- Coverage      54.18%   54.15%   -0.03%
+ Complexity     35534    35514      -20
=============================================
  Files           2423     2423
  Lines         192002   192010       +8
  Branches       35026    35028       +2
=============================================
- Hits          104035   103985      -50
- Misses         73029    73079      +50
- Partials       14938    14946       +8

Impacted Files
Coverage Δ
Complexity Δ

.../sql/functions/graph/OSQLFunctionShortestPath.java
48.71% <11.11%> (-3.50%)
36.00 <0.00> (-1.00)

.../collection/closabledictionary/OClosableEntry.java
64.40% <0.00%> (-11.87%)
19.00% <0.00%> (-3.00%)

...tomicoperations/operationsfreezer/WaitingList.java
77.41% <0.00%> (-6.46%)
7.00% <0.00%> (-1.00%)

...t/graph/stresstest/OGraphShortestPathWorkload.java
72.15% <0.00%> (-5.07%)
11.00% <0.00%> (ø%)

...gies/orient/server/hazelcast/OHazelcastPlugin.java
51.36% <0.00%> (-2.18%)
109.00% <0.00%> (-4.00%)

...re/storage/cache/chm/readbuffer/StripedBuffer.java
48.91% <0.00%> (-2.18%)
17.00% <0.00%> (-1.00%)

...ies/orient/core/storage/cache/OCacheEntryImpl.java
64.35% <0.00%> (-1.99%)
39.00% <0.00%> (-1.00%)

...ntechnologies/orient/server/OClientConnection.java
72.39% <0.00%> (-1.85%)
50.00% <0.00%> (-2.00%)

...rk/protocol/http/ONetworkProtocolHttpAbstract.java
51.63% <0.00%> (-1.54%)
42.00% <0.00%> (-2.00%)

... and 19 more

Continue to review full report at Codecov.

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

Hi, any idea when this PR will be merged?

Hello,
I don’t know. This is my first PR in this project and I don’t know how I can speed this up. Is there something I have to do?
From: sanjevraj<EMAIL_ADDRESS>Sent: Thursday, 27 August 2020 00:42
To: orientechnologies/orientdb<EMAIL_ADDRESS>Cc: Kai Baumann<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [orientechnologies/orientdb] Fixed the usage of the shortestPath function for multiple edge types (#9337)
Hi, any idea when this PR will be merged?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/orientechnologies/orientdb/pull/9337#issuecomment-681160459, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOWUJY7QQRTZEV74XV37W6TSCWFS3ANCNFSM4OZJDORQ.

Hi @kai-baumann
Thank you very much and sorry for the late reply.
The PR is good, but I see it also contains some commits that are out of scope. Any chance to have a new PR only with the single significant commit? I'll merge it right away
Thanks
Luigi

Hello @luigidellaquila
I will create a new PR with the single significant commit.
Kind regards
Kai


[Bug] Subscription result handling can miss result

Describe the bug
Subscribe with streaming rpc client can miss subscription result stucking the subscription state in WaitingResult
To Reproduce
There is no perfect scenario given this a race condition, but if I've the feeling that if you subscribe twice on the same account, given the second subscription is faster then, the race condition happens more often.
When I see
        private async Task<SubscriptionState> Subscribe(SubscriptionState sub, JsonRpcRequest msg)
        {
....
                await ClientSocket.SendAsync(mem, WebSocketMessageType.Text, true, CancellationToken.None).ConfigureAwait(false);
                AddSubscription(sub, msg.Id);
....
        }

I suspect, as there is concurrency between send and receive, it is possible that we receive the subscription result before adding the subscription in unconfirmedRequests
I would suggest to change the order of this two lines (or add a lock) and also, to add logs in ConfirmSubscription if we receive a confirmation that we don't know. What do you think ?
Expected behavior
Never loose a subscription result.

My suspicion was not good, here the proofs of the bug and that the ws client received the result (subscriptionId filled)
Logs
[Sending]{"method":"accountSubscribe","params":["83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri",{"encoding":"base64","commitment":"confirmed"}],"jsonrpc":"2.0","id":0}
[Received]{"jsonrpc":"2.0","result":528003,"id":0}
[Sending]{"method":"slotSubscribe","jsonrpc":"2.0","id":1}
[Received]{"jsonrpc":"2.0","result":486504,"id":1}
[Received]{"jsonrpc":"2.0","method":"slotNotification","params":{"result":{"slot":154294774,"parent":154294773,"root":154294742},"subscription":486504}}
[Received]{"jsonrpc":"2.0","method":"slotNotification","params":{"result":{"slot":154294775,"parent":154294774,"root":154294743},"subscription":486504}}
[Sending]{"method":"accountSubscribe","params":["83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri",{"encoding":"base64","commitment":"confirmed"}],"jsonrpc":"2.0","id":2}
[Received]{"jsonrpc":"2.0","method":"slotNotification","params":{"result":{"slot":154294776,"parent":154294775,"root":154294744},"subscription":486504}}
[Received]{"jsonrpc":"2.0","result":528003,"id":2}

After analysis, given that the client doesn't manage correctly if the subscriptionId already known.
I suspect that  confirmedSubscriptions.Add(resultId, sub); is crashing and prevent             sub?.ChangeState(SubscriptionStatus.Subscribed);

The problem here is that the library wasn't made with multiple subscriptions of the same object in mind.
Ideally, you want to create an abstraction layer that manages account subscriptions and that only calls the underlying StreamingRpcClient.SubscribeAccountInfo once per address, store the resulting subscription object and a list of handlers to be notified on your app.

@tiago18c It's what we did. Do I have to understand that you won't fix that?
It can be disturbing to have a SubscriptionState which is stucked.


Document using Tekton Pipelines as prow jobs

I understand from kubernetes/test-infra#11888 that prow is able to run tekton pipelines as prow jobs.
However, it does not look like it's documented in docs.prow.k8s.io ("Tekton" search does not return any results)
From the PR conversation, it looks like a follow-up PR was planned, but never materialized (I guess that's the habitual fate of planned documentation :smile: ).
It looks like tekton has some docs on that ( https://github.com/tektoncd/plumbing/blob/main/docs/prow.md#tekton-pipelines-with-prow ). But as far as I understand, it applies to their prow instance, not in general.
kubernetes/test-infra#13874 seems also relevant, in particular the third comment, but I'm not sure how much has changed since that ?
@Gregory-Pereira you might be interested.

The only major breaking change I see is the deprecation of PipelineResources which was used for the clonerefs through PROW_IMPLICIT_GIT_REF

You mean in regard to https://github.com/kubernetes/test-infra/issues/13874#issuecomment-521237150 ?

Yeah, I'm not sure how PROW_IMPLICIT_GIT_REF works and it is definitely better than having the git-clone tekton task as part of the pipeline.
I believe @cjwagner proposed it long time ago

I was able to get the tekton PipelineRun working on my setup only because PipelineResource is deprecated in v0.36.0. It is removed in the next versions on Tekton so it'll probably stop working!

presubmit.yaml
presubmits:
  {REPO_OWNER}/{REPO}:
  - name: tekton-test
    agent: tekton-pipeline # Use the Prow Tekton controller!
    clone_uri: "git@github.com:{REPO_OWNER}/{REPO}.git"
    always_run: true
    skip_report: false
    rerun_command: /test tekton-test
    trigger: "(?m)^/test (all|tekton-test),?(\\s+|$)"
    pipeline_run_spec:
      serviceAccountName: prow-pipeline
      pipelineRef:
        name: hello-goodbye
      resources:
      - name: clone
        resourceRef:
          name: PROW_IMPLICIT_GIT_REF

pipeline.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
  name: hello-goodbye
spec:
  tasks:
    - name: hello
      taskRef:
        name: hello
      resources:
        inputs:
          - name: clone
            resource: clone
    - name: goodbye
      runAfter:
        - hello
      taskRef:
        name: goodbye
      resources:
        inputs:
          - name: clone
            resource: clone
  resources:
    - name: clone
      type: git

task.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: hello
spec:
  resources:
    inputs:
      - name: clone
        type: git
  steps:
    - name: echo
      image: alpine
      script: |
        #!/bin/sh
        echo "Hello World"
---
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: goodbye
spec:
  resources:
    inputs:
      - name: clone
        type: git
  steps:
    - name: goodbye
      image: ubuntu
      script: |
        #!/bin/bash
        echo "Goodbye World!"

Also found this which makes a lot of sense!


Variants that automatically switch between latte and the dark variants

The CSS could use media queries to determine if it should apply the light or the dark colours. I achieved it once with another theme, but I was just copy pasting from another site.
I'd very much prefer such a variant, because now I'm manually switching all the time between latte and mocha, and Spotify is basically a web app, so it can have such a theme.

This bandaid for your shell config helps. I don't want it to automatically run when macOS changes colors because it would stop music currently playing (as spotify reboots). There is definitely a way to live-update themes without restarting (https://github.com/FlafyDev/spotify-css-editor) but no extension currently exists (that I could find).
light="catppuccin-latte"
dark="catppuccin-mocha"

alias spotl="spicetify config current_theme ${light} && spicetify config extensions ${dark}.js- && spicetify config extensions ${light}.js &&spicetify apply enable-devtools"
alias spotd="spicetify config current_theme ${dark} && spicetify config extensions ${light}.js- && spicetify config extensions ${dark}.js &&spicetify apply enable-devtools"

spot(){
    current_theme=$(spicetify config current_theme)
    if [[ "$current_theme" == "$dark" ]]; then
        spotl
    else
        spotd
    fi
}

I'll look into implementing this soon now that we have a settings menu, would be pretty simple!

There is some unfortunate news, Spotify passes in a force-dark-mode flag during its chromium compilation stage.
This means there is no way for us to know what the current system theme is with js OR css.
The only current solution is manually patching the executable by hand, im not sure where to go from here... Maybe a button in the topbar to swap between the two? it wouldnt be automatic but it would be something, what do you think?

It feels starting to get overengineered with the buttons and all that (at least for a first/most basic version of this). I'm not sure about if the forced dark mode is Windows specific, but on macOS I could manage to use the OS settings with media queries, using the method suggested here.
Here's my example version for the green colour scheme alternating between latte and mocha:
Put this to the end of the `user.css` of a Catppuccin theme
:root {
    --spice-shadow: #e6e9ef;
    --spice-button-active: #7c7f93;
    --spice-notification-error: #d20f39;
    --spice-highlight-elevated: #2a2a2a;
    --spice-highlight: #1a1a1a;
    --spice-button-disabled: #9ca0b0;
    --spice-tab-active: #ddc0da;
    --spice-main-elevated: #242424;
    --spice-accent: #fae3b0;
    --spice-misc: #acb0be;
    --spice-button: #8c8fa1;
    --spice-subtext: #4c4f69;
    --spice-main: #eff1f5;
    --spice-sidebar: #e6e9ef;
    --spice-selected-row: #acb0be;
    --spice-text: #40a02b;
    --spice-card: #ccd0da;
    --spice-player: #dce0e8;
    --spice-equalizer: #40a02b;
    --spice-notification: #ddc0da;
    --spice-rgb-shadow: 230,233,239;
    --spice-rgb-button-active: 124,127,147;
    --spice-rgb-notification-error: 210,15,57;
    --spice-rgb-highlight-elevated: 42,42,42;
    --spice-rgb-highlight: 26,26,26;
    --spice-rgb-button-disabled: 156,160,176;
    --spice-rgb-tab-active: 221,192,218;
    --spice-rgb-main-elevated: 36,36,36;
    --spice-rgb-accent: 250,227,176;
    --spice-rgb-misc: 172,176,190;
    --spice-rgb-button: 140,143,161;
    --spice-rgb-subtext: 76,79,105;
    --spice-rgb-main: 239,241,245;
    --spice-rgb-sidebar: 230,233,239;
    --spice-rgb-selected-row: 172,176,190;
    --spice-rgb-text: 64,160,43;
    --spice-rgb-card: 204,208,218;
    --spice-rgb-player: 220,224,232;
    --spice-rgb-equalizer: 64,160,43;
    --spice-rgb-notification: 221,192,218;
}

@media (prefers-color-scheme: dark) {
    :root {
        --spice-selected-row: #585b70;
        --spice-notification-error: #f28fad;
        --spice-main: #1e1e2e;
        --spice-button-disabled: #6e6c7e;
        --spice-button: #7f849c;
        --spice-text: #a6e3a1;
        --spice-button-active: #9399b2;
        --spice-highlight: #1a1a1a;
        --spice-player: #11111b;
        --spice-misc: #585b70;
        --spice-shadow: #181825;
        --spice-tab-active: #313244;
        --spice-highlight-elevated: #2a2a2a;
        --spice-notification: #313244;
        --spice-card: #313244;
        --spice-subtext: #cdd6f4;
        --spice-sidebar: #181825;
        --spice-equalizer: #a6e3a1;
        --spice-main-elevated: #242424;
        --spice-rgb-selected-row: 88,91,112;
        --spice-rgb-notification-error: 242,143,173;
        --spice-rgb-main: 30,30,46;
        --spice-rgb-button-disabled: 110,108,126;
        --spice-rgb-button: 127,132,156;
        --spice-rgb-text: 166,227,161;
        --spice-rgb-button-active: 147,153,178;
        --spice-rgb-highlight: 26,26,26;
        --spice-rgb-player: 17,17,27;
        --spice-rgb-misc: 88,91,112;
        --spice-rgb-shadow: 24,24,37;
        --spice-rgb-tab-active: 49,50,68;
        --spice-rgb-highlight-elevated: 42,42,42;
        --spice-rgb-notification: 49,50,68;
        --spice-rgb-card: 49,50,68;
        --spice-rgb-subtext: 205,214,244;
        --spice-rgb-sidebar: 24,24,37;
        --spice-rgb-equalizer: 166,227,161;
        --spice-rgb-main-elevated: 36,36,36;
    }
}

Of course this may not be completely sufficient, as the colour schemes differ by darkness level. Rather I wanted to demonstrate that probably media queries will do the trick. If not, I'd suggest coming up with something on the Spicetify side, since the ini with the variable names may limit this functionality for theme authors, and in that case, I would endorse patching it on every theme's side. The issue I linked was closed, but we may ask for reopening it.

as i said prefer color scheme does not work because --force-dark-mode is passed in as a flag

I might have been too vague expressing what I did, but I tried the above CSS, and it works today with latest Spotify on macOS. I'm not aware of further modifications of my Spotify installation other than what Spicetify does.
The button fallback could be nice, and some users may even prefer having the ability to manually toggle, but I believe for the majority of users the automatic changing without any intervention is more optimal. So I'm not against having the button, it may even be necessary for Windows users, or to support colour schemes properly, but I'd prefer a no intervention/no restart solution, and I could hack it together on my machine for the one specific setup I want, it's just not future-proof, updating the themes will brake it.
Here's a video about that:
https://github.com/catppuccin/spicetify/assets/1753591/55694b98-330f-4209-b795-a0850abc950f

@ohitstom, do you think there's an Electron or something else version difference between the Windows and macOS version of Spotify? Also, the command line arguments on your screenshot are confusing for me, because it also starts with --force-dark-mode=false. Is it just you, trying to disable it?

@ohitstom, do you think there's an Electron or something else version difference between the Windows and macOS version of Spotify? Also, the command line arguments on your screenshot are confusing for me, because it also starts with --force-dark-mode=false. Is it just you, trying to disable it?

Yeah thats just me trying to disable it, all versions of spotify are just CEF its possible that flag just doesnt exist on macOS!
Could you send the code you used in a zip or something for the video you sent so i can mess around with it some?
And yeah im 100% sure that force-dark-mode is breaking the javascript functions for checking the system theme window.matchMedia('(prefers-color-scheme: light') is never correct for me but ive not tried a pure css solution (not that they should differ since matchmedia just queries the css directly)

Could you run Spicetify enable-devtools and send a screenshot of your launch flags like so?
You could also try running the matchmedia to see if its correct on your end please :)

Ah, I see. Thanks for clarifying it.
My hack is just the latte variant with the user.css appended with the CSS I have above behind the expandable "Put this to the end of the user.css of a Catppuccin theme" section. I zipped the theme folder for your convenience though, if you prefer that.
catppuccin-auto-mocha.zip

Chrome tools gives me these:
Text from Chrome Tools
List of Chrome URLs
chrome://accessibility/
chrome://blob-internals/
chrome://chrome-urls/
chrome://credits/
chrome://extensions-support/
chrome://gpu/
chrome://histograms/
chrome://indexeddb-internals/
chrome://license/
chrome://media-internals/
chrome://net-export/
chrome://net-internals/
chrome://network-errors/
chrome://print/
chrome://process-internals/
chrome://serviceworker-internals/
chrome://system/
chrome://tracing/
chrome://version/
chrome://webrtc-internals/
chrome://webui-hosts/
For Debug
The following pages are for debugging purposes only. Because they crash or hang the renderer, they're not linked directly; you can type them into the address bar if you need them.

chrome://badcastcrash/
chrome://crash/
chrome://crashdump/
chrome://gpuclean/
chrome://gpucrash/
chrome://gpuhang/
chrome://hang/
chrome://inducebrowsercrashforrealz/
chrome://inducebrowsercrashforrealz/
chrome://inducebrowserdcheckforrealz/
chrome://kill/
chrome://memory-exhaust/
chrome://memory-pressure-critical/
chrome://memory-pressure-moderate/
chrome://quit/
chrome://restart/
chrome://shorthang/

Same but as a screenshot

Running matchMedia first with dark mode, and then light mode:

I see. I wasn't expecting JavaScript preferred to CSS, but now I get it why. By the way, here's my chrome://version (sorry I misunderstood your first screenshot request):

I see. I wasn't expecting JavaScript preferred to CSS, but now I get it why. By the way, here's my chrome://version (sorry I misunderstood your first screenshot request):

JavaScript is definitely how I intend to implement this feature, I'll see if I can find another Windows user on spicetify to test if it works for them and it's an issue with my system, I'll let you know tomorrow

unfortunately since this isn't going to work automatically on any platform but macos there's no point implementing it in such a way, I'm happy to create a button in the topbar to swap between the two easier or you're welcome to keep using your custom setup?

I see, how unfortunate. I think, I don't have further input then. If fully automatic is not possible, and you're not interested in (or if it is not feasible or possible) developing a fallback for systems like mine, then I also believe the button thing is for the best. Thanks for hearing me out.

I see, how unfortunate. I think, I don't have further input then. If fully automatic is not possible, and you're not interested in (or if it is not feasible or possible) developing a fallback for systems like mine, then I also believe the button thing is for the best. Thanks for hearing me out.

if I had a Mac I'd be happy to do a fallback system but since I don't I can't trust without being able to test myself that the code is reliable enough, I'd be happy to implement a button for now 👍

https://github.com/JulienMaille/spicetify-dynamic-theme#follow-system-darklight-theme-powershell found this

https://github.com/JulienMaille/spicetify-dynamic-theme#follow-system-darklight-theme-powershell found this

I'll look into it soon

https://github.com/JulienMaille/spicetify-dynamic-theme#follow-system-darklight-theme-powershell found this

I'll look into it soon

That powershell still works fine on Windows. I was looking at linux's binary to see if the same trick could work but can't find the string "force-dark-mode" there

https://github.com/JulienMaille/spicetify-dynamic-theme#follow-system-darklight-theme-powershell found this

I'll look into it soon

That powershell still works fine on Windows. I was looking at linux's binary to see if the same trick could work but can't find the string "force-dark-mode" there

any movement on this? I don't see any worth in implementing an automatic system if it's not consistent across all platforms

Nope, I thought you were working on this :)


[doc] fix markdown lint md013 check

What's changed?

Checklist

[ ]  I have read the Contributing Guide
[ ]  I have written the necessary doc or comment.
[ ]  I have added the necessary unit tests and all cases have passed.

Add or update API

[ ] I have added the necessary e2e tests and all cases have passed.

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

Project coverage is 29.05%. Comparing base (7facbe8) to head (2372c89).

Additional details and impacted files
@@            Coverage Diff            @@
##             master    #2599   +/-   ##
=========================================
  Coverage     29.05%   29.05%
  Complexity     1627     1627
=========================================
  Files           431      431
  Lines         17680    17680
  Branches       2312     2312
=========================================
  Hits           5137     5137
  Misses        11957    11957
  Partials        586      586

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


Disable internal mkldnn_sgemm calls

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Debian GNU/Linux 10
TensorFlow installed from (source or binary): Source
TensorFlow version:latest
Python version:3.7.3
Installed using virtualenv? pip? conda?: virtualenv
Bazel version (if compiling from source):3.3.0
GCC/Compiler version (if compiling from source): gcc 8.3
I did NOT use the --config=mkl flag while building
The image is a call graph of 1024X1024 Matmul done 100 times, if you look carefully mkldnn_sgemm is called internally by Eigen, this is what I want to disable.

After some amount of reading I found out that MKL/mkl_dnn can be called internally by Eigen and after reading the Bazel documentation and seeing how TensorFlow is strucured.I want to disable mkl/mkl_dnn completely if eigen is to be used.
The Eigen build files loads the ifmkl symbol from the mkl directory.
My next step was to look at the if_mkl function inside the build_defs.bzl
I changed the includes attribute in the cclibrary rule in the BUILD file of eigen to ["//conditions:default"]
which game me an error saying ModuleNotFoundError: No module named 'portpicker'
So pip installed portpicker pip install portpicker
And the build completed sucessfully, but the profile literally shows no difference mkldnn_sgemm is still bieng called the same number of time by eigen internally
NOTE: The Ultimate aim is to disable mkldnn which is bieng called from inside eigen

Hi @electricSamarth,
This mkldnn_sgemm call in vanilla TensorFlow (non-MKL) build through Eigen is intentional and not a bug. To disable it, you can just add --define tensorflow_mkldnn_contraction_kernel=0 to your build command. No code modifications necessary.
https://github.com/tensorflow/tensorflow/blob/20ca86ca6622ba66b6c970b221729ff9b6f931c6/tensorflow/core/kernels/BUILD#L122-L132
May I ask why you would like to disable mkldnn_sgemm? Based on our experiments, it performs at least as well as Eigen contractions for AVX and AVX2, and is better than Eigen for AVX-512. It also has dynamic dispatch, which means it can utilize up to AVX-512 instructions even when TensorFlow is compiled with older flags (e.g., AVX) -- Eigen can only use the vector instructions TensorFlow is compiled with.
cc: @TensorFlow-MKL @ezhulenev

Thanks a lot @penpornk
I am a 3rd year undergraduate student working on a research project at CCBD under Dr. Reetinder Sidhu and we are trying to accelerate TF as a framework on FPGAs. I needed to conduct some benchmarks and wanted to compare the difference b/w performance of MKL and the vanilla install and got a little confused with all the mkl-dnn calls.
Furthermore, I have a few queries and I would be very very grateful if you can answer:

These MKL-DNN calls are not calling sgemm from MKL, the closed source library as I did not specify the --config=mkl flag, right?

What would be the best way to find out how much percentage of resources are being spent on doing sgemm (resources could be IR reads as in case of profilers like Callgrind or simply time as in case of the Tensor-board profiler that comes with TF)

I have in fact tried both the methods but the problem with callgrind is cycles which makes inclusive costs senseless and in the case of Tensor-board profiler, I am getting confused as to which metric I should be looking at? The Cumulative total-self time on Host (%) OR Total self-time on Host (%)

@electricSamarth Thank you for the explanation!

Both vanilla TF and TF-MKL (--config=mkl) only depend on the open-source oneDNN library (formerly-known as MKL-DNN) and not the closed-source MKL. Here is the source of dnnl_sgemm (new name of mkldnn_sgemm).

I'd recommend Google Perf Tools + pprof. It can generate a call graph annotated with running time (like this) and highlight the critical path. Or perf tool. If you're fine with op-level profiling (as opposed to c++ function call-level), TensorBoard/TensorFlow profiler is great too.

in the case of Tensor-board profiler, I am getting confused as to which metric I should be looking at? The Cumulative total-self time on Host (%) OR Total self-time on Host (%)

I assume you're on the TensorFlow Stats page. According to qiuminxu@, Cumulative total-self time on Host (%) is just the sum of Total self-time on Host (%) from the rank 1 op (in row 1 of the table) to the op you're looking at. So the numbers in that column are monotonically increasing. I think you'd be more interested in Total self-time on Host (%).

@penpornk Thanks for all the information, this is by far the most informative interaction I've had on GitHub.
But I tried installing TF with --config=mkl and the build failed, to resolve this I installed mkl from Intel's official website and it built successfully. What could be the reason for this and this happened on not one but two machines

My own machine: DELL G7-7588 running Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
Server at the Lab I work at running Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz

Also the following returns true if MKL(the closed source library is installed & TF is built with --config=mkl flag) and returns false in 'Vanilla' Install we have been talking about
import tensorflow
print("Is MKL enabled?{}".format(tensorflow.pywrap_tensorflow.IsMklEnabled()))

@agramesh1 ^this^

@claynerobison Hi!
I am a little confused :)
I was about to close this as no response, but I shall keep it open for further discussion from you and @agramesh1

Hi @electricSamarth,

But I tried installing TF with --config=mkl and the build failed, to resolve this I installed mkl from Intel's official website and it built successfully. What could be the reason for this and this happened on not one but two machines

What was the error message? We'll need more information. Could you please start a new Build/Installation issue and fill all necessary details? Here a quick link to the form. Please state in the topic that this is TF-MKL build and tag me and the @TensorFlow-MKL team.

Also the following returns true if MKL(the closed source library is installed & TF is built with --config=mkl flag) and returns false in 'Vanilla' Install we have been talking about
import tensorflow
print("Is MKL enabled?{}".format(tensorflow.pywrap_tensorflow.IsMklEnabled()))

IsMKLEnabled checks whether the build is TF-MKL build or not (returns true if the build is TF-MKL, and returns false with vanilla TF). The function name is a bit misleading now that both builds use oneDNN (a.k.a. MKL-DNN). I'll discuss with the @TensorFlow-MKL team on whether we should rename it.
The main difference between vanilla TF and TF-MKL is:

Vanilla TF only uses mkldnn_sgemm routine as a basic building block (through Eigen) for all matmul/convolution ops in TF.
TF-MKL replaces many TF ops with its custom ops that call DNN primitives from the oneDNN library. (See op list here.)

Thanks @penpornk, we will look into it.
@electricSamarth if you are using the latest master or 2.4 branch, the build no longer uses the binary MKL. We made changes over the last 1 or 2 months to replace cblas sgemms with oneDNN sgemms. (oneDNN is newer name for MKL DNN). Please try one of these branches.

Thanks a ton! @penpornk & @agramesh1
And yes, I shall open a new issue with the install/build template. I will also take a look/try the new branches.


course label loads with other components

Overview
List the GitHub issues containing the issues relevant to this pull request.
Resolves 171 by loading in the course label with other components.
Describe your changes here at a high level, describing how this PR fits into the
rest of the project.
Creates Visual consistency for the user.
What Changed
removed line 245 from courseOverview.tsx

hey @justjaiom this is almost done, there's just no skeleton component to represent the course label/prof name. i'll leave a couple comments on the code about those
you'll also want to run npm run format to format your code so that it passes the "Lint and Formatting Check"


Preventing IndexOutOfBoundsException in LazyListUpdateProcessor's maybeShiftLoadedWindow method

This is meant to address issue #2140

[x] CHANGELOG.md's "Unreleased" section has been updated, if applicable.

Closing in favor of #2142


404 on Fonts

Hello,
I added in your project via bower
bower install materialize
however, I am getting issues with gulp when trying to serve the files. It is unable to find the Woff files for the fonts:
home:1 GET http://localhost:3000/font/material-design-icons/Material-Design-Icons.woff2 404 (Not Found)
home:1 GET http://localhost:3000/font/material-design-icons/Material-Design-Icons.woff 404 (Not Found)
home:1 GET http://localhost:3000/font/material-design-icons/Material-Design-Icons.ttf 404 (Not Found)

I have also installed Material Design Icons via Bower, but that did not resolve the issue. Any idea why the files are not being served?

I'm getting a similar error, but it's the Roboto font files that are 404ing for me. I believe the cause of this is that the css is looking for the font files in yourproject/dist/fonts, but the fonts are actually located in yourproject/bower_components/materialize/dist/fonts.
As a temporary fix, I've copied across the missing font files into myproject/dist/fonts, but this does seem like an issue the developers need to fix.

That seems like a good work around, I will give it a try. However, I hate modifying my build for a third party component that isn't playing nice.

@bryantp What version are you using? We no longer include material icons directly.


Sidecar exposes all ports as TCP, but some are expected to be UDP

Analogous to #577, when injecting agent containers, the container ports of injected sidecar containers are exposed as TCP, but three out of four should be UDP.
This is from an agent pod from a daemon set (which is correct according to #577):
  jaeger-agent-daemonset:
    Image:         jaegertracing/jaeger-agent:1.15.0
    Ports:         5775/UDP, 5778/TCP, 6831/UDP, 6832/UDP, 14271/TCP
    Host Ports:    5775/UDP, 5778/TCP, 6831/UDP, 6832/UDP, 14271/TCP
    Args:
      --reporter.grpc.host-port=dns:///izjaeger-collector-headless.default:14250
      --reporter.type=grpc

While this is from an injected agent container in some of my pods:
  jaeger-agent:
    Image:         jaegertracing/jaeger-agent:1.15.0
    Ports:         5775/TCP, 5778/TCP, 6831/TCP, 6832/TCP
    Host Ports:    0/TCP, 0/TCP, 0/TCP, 0/TCP
    Args:
      --reporter.grpc.host-port=dns:///izjaeger-collector-headless.default:14250
      --reporter.type=grpc

I'd suggest adding the missing protocol specifications to https://github.com/jaegertracing/jaeger-operator/blob/058f4fa3f99df8dad922c27c286c1eac3799da2f/pkg/inject/sidecar.go#L158-L175

Closing since MR #773 is now merged.


Class for risky-asset consumers

The only model with a risky asset to store savings currently in HARK is ConsPortfolioModel. However, there are various additional models of this type that are works in progress:

My own two-asset model here.
A portfolio model that takes housing into account. @alanlujan91, @llorracc and I are working on it.

It would be useful to have a class representing agents with risky assets, from which ConsPortfolio and these two works-in-progress could inherit. This PR implements such class by taking the general methods from ConsPortfolio, and makes ConsPortfolio inherit from it.

[x] Tests for new functionality/models or Tests to reproduce the bug-fix in code.
[x] Updated documentation of features that add new functionality.
[ ] Update CHANGELOG.md with major/minor changes.

Codecov Report

Merging #1012 (13cd47d) into master (6d157ea) will decrease coverage by 0.00%.
The diff coverage is 75.90%.

@@            Coverage Diff             @@
##           master    #1012      +/-   ##
==========================================
- Coverage   71.67%   71.66%   -0.01%
==========================================
  Files          63       64       +1
  Lines        9197     9234      +37
==========================================
+ Hits         6592     6618      +26
- Misses       2605     2616      +11

Impacted Files
Coverage Δ

HARK/ConsumptionSaving/ConsRiskyAssetModel.py
74.02% <74.02%> (ø)

HARK/ConsumptionSaving/ConsPortfolioModel.py
66.08% <100.00%> (-1.20%)
:arrow_down:

HARK/ConsumptionSaving/ConsIndShockModelFast.py
51.05% <0.00%> (ø)

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 6d157ea...13cd47d. Read the comment docs.


Handle CSS files

Some NPM packages specify CSS files in them, e.g.: https://github.com/Leaflet/Leaflet/blob/master/package.json#L23 and https://github.com/twbs/bootstrap/blob/master/package.json#L20
It would be desirable that rollup-plugin-npm would load these files by means of rollup-plugin-postcss.

I'm not sure I understand how this would work? If you did...
import 'leaflet';

...then Rollup wouldn't be able to know that you wanted to import leaflet/dist/leaflet.css – it would assume you wanted the JavaScript. Whereas if it was a CSS import...
@import 'leaflet';

...then surely it's the responsibility of a PostCSS plugin to locate the file and include it, rather than rollup-plugin-npm?
Off the top of my head, this should work, if rollup-plugin-postcss is present:
import 'leaflet/dist/leaflet.css';

Or have I misunderstood?

Or have I misunderstood?

No, no. You have a good point and I didn't explain myself very well.
The use case here is bundling libraries. e.g. I want to bundle up leaflet, bootstrap, jquery and turfjs - and I don't want to care about the name of the entry point for the javascript (main or jsnext:main or whatever), and I don't want to care about the entry point for the CSS, or for whatever else is needed to make the code work in a single bundle.
So right now, when one writes in javascript
import 'leaflet'

...then it is my understanding that rollup-plugin-npm reads the package.json file and somehow translates that into...
import 'node_modules/leaflet/dist/leaflet.js'

...and what I would like instead is detect rollup-plugin-postcss (or make an option to enable it) so it would do this instead:
import 'node_modules/leaflet/dist/leaflet.js'
import 'node_modules/leaflet/dist/leaflet.css'

And then, with some postcss-js magic, bundle the CSS inside the JS.

I can currently achieve this via a crazy set of gobblejs transforms, but it feels way too clunky. Somehow I think that rollup-plugin-npm is the right place to bundle up the JS and CSS of a node module, and not handle the CSS files of node modules in a separate stage.

Ah, interesting. Here's a sketch for an approach that seems like it could work:

Plugins like rollup-plugin-postcss include a meta property, like meta: { css: true }
rollup-plugin-npm includes an option hook that scans each item in options.plugins to see if any has a meta.css property
If there is such a plugin, rollup-plugin-npm looks for a pkg.style at the same time as it's looking for main or jsnext:main. If it finds one, instead of resolving to the main file, it resolves to a virtual module ID
rollup-plugin-npm adds a load hook that, given a virtual module ID like __npm:leaflet returns a module importing both leaflet/dist/leaflet-src.js and leaflet/dist/leaflet.css
From there, whatever CSS-aware plugin exists (doesn't have to be PostCSS, as long as it exposes meta.css) takes over

That seems doable. It should probably be hidden behind an option though.
The tricky part is what to do about relative paths, such as images – does PostCSS have some magic for ensuring these are correct? Or maybe inlining as data URIs?

Sounds sane and doable. Me like!

The tricky part is what to do about relative paths, such as images – does PostCSS have some magic for ensuring these are correct? Or maybe inlining as data URIs?

Apparently there is https://github.com/assetsjs/postcss-assets for just that.
Given the amount of hacks for images and CSS paths (see this if you dare), I'd expect developers to be able to pop the images in the correct directories. IMHO, some use cases call for lazy loading of images whose URLs are defined in the CSS, other use cases call for preloading everything.
Maybe there could be more properties in a package.json file pointing to image and/or font files, and copy them around, but that's gobblejs territory, not rollup territory.


Revert #1790 reset feature and provide default alarm settings.

#1790 brought a very serious BUG to javaagent, I have to do the revert. This is a warning to all of us, must accept codes after test reports and cases provided.
FYI @peng-yongsheng @hanahmily @ascrutae @liuhaoyang

Provide default alarm settings
Make includeNames active in alarm

Coverage increased (+0.1%) to 12.306% when pulling 51c3df551135fefea65729d25098ce0a0c769338 on fix-agent into 4598f454764ae1b8f7635e36f7ac6abe13c14a03 on master.


truffle contracts broken in create-react-app builds

create-react-app uses terser.js default settings when building assist.
The default settings uglifies Class names, causing https://github.com/blocknative/assist/blob/458417ffdb9824d792eab5b609955fb67ab10fe7/src/js/index.js#L271 to always evaluate to false.
I see two options on how we could proceed here:

add documentation mentioning if you use terser.js or uglify.js to set keep_fnames to true (see https://github.com/terser-js/terser#minify-options)
find a different way of differentiating truffle contracts and web3.js contracts that doesn't rely on contructor.name.

@aaronbarnardsound @cmeisl what are your thoughts?

Implementing option 1 for now.

Closed by afbf565dda006158f6f1397d8ea645fa6d307eff


add "quoted my note" to notifications

what happens
I am not notified if someone quote re-posts one of my notes in the notifications tab.
I am notified in case of replies, likes, zaps, and re-posts
suggestion
Add notification if someone quotes my post

@hzrd149 is this a bug caused by other apps?


Nothing loads

When I start it up in regular, or as admin, it only ever loads the background. I used to use this a lot, but now I can't, is it a problem with Windows 10? I had a computer running Windows 8 using it fine, then when I got my new gaming computer that came with Windows 10 installed, I can no longer use it. If there's anything on my end you need to help me, please let me know! I love this program!

https://github.com/dustinblackman/Championify/blob/master/FAQ.md#the-app-opens-with-a-white-box-infinite-loops-i-just-see-the-background-or-nothing-happens

I did so twice now, and it crashes my computer now. Don't know if you know the reason, whether something in the code, but most likely because im on Windows 10 as on my old laptop I did imports just fine with no problems. You've done a great service for this program, but it looks like I won't be able to use it for awhile now. Keep doing what you're doing mate :)

Crashes your computer? o.O

It gets to around 8 to 40% randomly in between the last five tries, and I guess the closest thing is almost a blue screen. My computer crashes and starts gathering data then resets itself

I got same issue and I tried to reinstall network card driver but it still cause blue screen that netio stopped working.


[WIP] Threaded composer v2

Continuation of #3813, moved to a separate branch since this one is being based over https://github.com/bluesky-social/social-app/commit/8a12b606ee09b5e74fad243400f6279bbe99b99d
Actual composer-related changes starting from 36ec7fe3a739b8efb96da3fcd6373967ad24949a, with the newer changes starting bb355d0ce7697acca580df613ea591902b0b7113
UI looks more or less the same as before though
Checklist

[x] The actual threading UI
[x] Decent-ish keyboard navigation (I think we can do better, perhaps by making use of Ctrl/Meta-Up/Down to control focus?)
[x] External embeds
[x] Tenor GIFs (and alt text)
[x] Quote embeds
[x] Image embeds
[ ] Post language

Including the automatic language detection

[x] Gated reply interactions
[x] Self-labeling
[x] Send the post (demo)
[ ] Address the TODOs left in comments

Notable changes

Embeds are represented very differently now, with only a singular embed field

Cons:

The reducer code I've written to update the embeds might be rather fragile, though the dispatcher actions wouldn't have looked much different I think.

Pros:

Easy conversion to actual lexicons, since it's pretty much based around that
It's more clear what type of embeds can or can't be added or mixed given the current state
It should be easier to add new embed types, like videos or custom GIFs, possibly with a different set of constraints on what can be mixed alongside them
More control over styling, particularly around recordWithMedia
Easy memoization, embeds don't change often, applying it to the top-level component is enough
Tenor GIF embeds are easier to deal with now that they're no longer conflated with external embeds (while still being sent as one)

record and external embeds are now handled by React Query, post submission no longer needs to be disabled as we try to retrieve details for the embed, since we can also retrieve them as part of the post submission process itself.
record embed can now be added after adding external embed, previously this wasn't possible because record embeds had to go through the same process as external embeds, and doing so would just override the external embed before it settles as a record embed
record embeds now show a proper preview for lists and feeds in particular.
Labels are stored within image and external embeds, I think right now this makes a lot more sense since the only globals labels that exists are for media embeds only. This also means that labels are no longer persisted when embeds are being swapped for another, which might better match user expectations.
Thread gating records are now created in the same operation

Additional questions

Should the language and labeling options be moved to the same place as reply gate currently is?
How should post languages work across multiple posts? At least from the few I've asked, they want the ability to set different languages per-post, and I honestly agree with that

There's still some work to be done here, but I think the additional work scope required (like how post languages should work) means that I should now pass this off to y'all. cc @pfrazee @haileyok
Happy to have worked on this :v:

Sick! Look forward to giving it all a look.

Between the many Indonesian users moving in, there are a decent amount of fanfic authors looking for threaded composer and drafts.
I think it might be worth making this happen soon, let me know if there's anything else I can help with on getting this pushed forwards.

Nope! We will wrap this fairly soonOn Jun 8, 2024, at 6:07 AM, Mary @.***> wrote:
Between the many Indonesian users moving in, there are a decent amount of fanfic authors looking for threaded composer and drafts.
I think it might be worth making this happen soon, let me know if there's anything else I can help with on getting this pushed forwards.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

It's been three months and now the Brazilians are flooding the platform. Guess it's time to finally review and hopefully merge. Please.

There's been a lot of changes to the composer itself since this PR was made, and I need to find the time to work on rebasing the changes.

Good news is that I should have some time to spare on rebasing this PR, problem is, we'd still need to get #3925 merged first (I'll need to rebase this as well, but if that's blocked, this one's blocked)

Ayy, we're finally getting to parity (aside from UI) in https://github.com/bluesky-social/social-app/pull/5962. Huge thanks for getting this started — no way I'd be able to figure out how to do it without your work here.


Gallery App has Buttons

[x] Drop down
[x] Flat
[x] Raised
[ ] Toggle
[x] Floating Action Button

Drop down exists, in its own section. Probably want to put that in a Buttons section with the rest of the buttons.

All but toggle buttons were added in https://github.com/flutter/flutter/pull/1703

By "Toggle" buttons, are you referring to switches, buttons that can toggle their raised state, or grouped toggle buttons? I'm looking for examples of the latter and coming up short. Angular and polymer don't have a dedicated widget for them, and I can't find an app that uses them.

The mobile version of Google docs uses toggle button groups when the keyboard is up.

Also, toggle buttons are spec'ed here: https://www.google.com/design/spec/components/buttons.html#buttons-toggle-buttons

Added the Floating Action Button transitions (from https://www.google.com/design/spec/components/buttons-floating-action-button.html#buttons-floating-action-button-transitions)

Buttons are in! (modulo toggle buttons: https://github.com/flutter/flutter/issues/3959)
See https://github.com/flutter/flutter/issues/3960 for fancy FAB transitions.


Use fallback nameserver for rdns

(Incidental change: turn debug logging on during smoke tests.)

This is meant to fix #346.


WIP Speed comparison experiment

@Shillaker Obviously I'll remove everything in here that is in docs, I'm just using this as a way for you and Peter to be able to see this interesting result.
What about the experiment code, do you want it? if so where do I put it (I put it in demo to not be linked to OpenMP etc. but not sure it belongs there)


feat(elements|ino-currency-input): add component

Closes #476
This PR contains:

a new component ino-currency-input which invents a composition concept (with UserInputInterceptor) to reduces duplication in "special" input elements.
refactors to the ino-input to be grouped by properties, events, methods, lifecyles, ...
refactors the ino-input to use a <label> instead of <div> wrt. to the documentation of mdc.

Proposed Changes

...

Things to check

[ ] Does the change need to be documented?
[ ] Does any existing example code needs to be updated?
[ ] Is the change properly tested?
[ ] Is it helpful to provide another example to demonstrate the new feature?
[ ] Are there other code lines that need to be modified?

Could you resolve the conflicts and update the yarn.lock as @BenPag pointed out @pfecht? Everything else seems fine


Create extension skeleton

Adds popup and options page

We should definitely consider writing tests, and now might be a good time to start...


iPhone Controller Support?

Would it be possible to give this Controller Support with things like the Logitech Powershell from the iPhone 5 and SE Size Series? https://www.amazon.com/Logitech-PowerShell-Controller-Battery-Generation/dp/B00FHREO8K

Possibly PS4 and Xbox controllers would also be great now they can connect to iPhones?

This is something I would very much appreciate. I have carpal tunnel and holding the phone to play hurts my fingers after a short while.

Duplicate of #57.


GetAllowableChildren() needs more granular control over what is and isn't allowed

Description:

The ParentChild initialization array creates parent/child structures based purely on type. That allows for creating things that don't actually work. For example, all forms are marked as supporting a menubar, statusbar, and toolbar -- but the code for this only works with a wxFrame. ToolBars allow all possible widgets to be added. Technically that's true though adding things like a static line, wxCalendarCtrl, wxTreeCtrl, wxGrid, etc. don't really make any sense.
One possible option would be to expand the NodeCreator::GetAllowableChildren() with some structures or other code that can check for specific children. For example, we could limit the children for forms to type_menu, and in NodeCreator::GetAllowableChildren() we would special-case a wxFrame and allow the 3 bar types as children. For toolbars, we could maintain a list of controls that really don't make any sense.
Related to issue #209

I've already added some code that deals with this, but the issue is going to come up again when I add gen_folder (#823) and optionally allow children for custom controls (#830). As such, adding this to the 1.1 milestone for consideration.

Bumping out to 1.1.x milestone -- there isn't time to work on this further until after the 1.1 release.

So far, I've been dealing with this by simply adding more types which had enabled several new parent/child relationships. It's been quite a while since this was causing problems, so I'm going to close this.


.NET on Linux uses CommonApplicationData for /usr/share and LocalApplicationData for $HOME/.local/share, so use them instead of hardcoding stuff.

This is important because the XDG spec says some .desktop files go under $HOME/.local/share, and says to search there first. There's one more directory I think, but I need to look at the spec again because I forgot. Maybe I can check the list when adding a file to it to see if it's already accounted for, and not add a duplicate. Checking to see if something should be shown would help to optimize it, as would "OnlyShowIn" and "NoShowIn".

More details here: https://developers.redhat.com/blog/2018/11/07/dotnet-special-folder-api-linux#conclusion

Actually, I don't really need this anymore since I'm using Python now.


Data validations with formula to another sheet won't get returned

Describe the bug
if data validation is a formula to another sheet, then it won't get returned.
Screenshots

(Image taken from NPOI issue #498.)
To Reproduce
Using a minimal XLSX file external_data_validation_sample.xlsx (again, taken from NPOI issue #498) and the following F# code in dotnet fsi:
#r "nuget: DocumentFormat.OpenXml, 3.0.0";;

open DocumentFormat.OpenXml
open DocumentFormat.OpenXml.Packaging
open DocumentFormat.OpenXml.Spreadsheet

let GetDataValidationsByIndex (filePath: string) (sheetIndex: int) =
    use spreadsheet = SpreadsheetDocument.Open(filePath, false)
    let workbookPart = spreadsheet.WorkbookPart
    let sheets = workbookPart.Workbook.Descendants<Sheet>() |> Seq.toArray

    if sheetIndex >= 0 && sheetIndex < sheets.Length then
        let sheet = sheets.[sheetIndex]
        let worksheetPart = workbookPart.GetPartById(sheet.Id) :?> WorksheetPart
        let dataValidations = worksheetPart.Worksheet.Descendants<DataValidations>()

        let validations =
            dataValidations
            |> Seq.collect (fun dv ->
                dv.Descendants<DataValidation>()
                |> Seq.map (fun validation ->
                    // Extract data validation details as needed
                    validation
                ))
            |> Seq.toList

        Some validations
    else
        printfn "Sheet index '%d' out of range" sheetIndex
        None
;;

GetDataValidationsByIndex "external_data_validation_sample.xlsx" 0 |> Option.get |> List.map (fun v -> v.PromptTitle);;
GetDataValidationsByIndex "external_data_validation_sample.xlsx" 1 |> Option.get |> List.map (fun v -> v.PromptTitle);;

Observed behavior
Both queries above will return empty lists.
Expected behavior
Expected to return data validations with formulas to other sheets (e.g., =Sheet2!$B$2:$B$5). (Tested the above function on an internal XLSX file as well, and all validations get returned, except the ones that refer to sheets in their formulas.)
Desktop (please complete the following information):

OS: Windows, Mac
.NET Target: .NET Core 8.0
DocumentFormat.OpenXml Version: 3.0.0

@toraritte Sorry this is coming so late. I took a look at the code and recreated this in C#, finding that the formula based dataValidation elements are x14 (Office2010) extensions and therefore considered different types from the original Office2007 x:dataValidation. You need to scope them differently when using the framework. Here is an example of using the new dataValidation elements in C#:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

var spd = SpreadsheetDocument.Open(args[0], false);
var wb = spd.WorkbookPart;

if (wb is null)
{
    Console.WriteLine("No workbook part!");
    throw new ArgumentException();
}

var sheets = wb.Workbook.Sheets;

if ((sheets is null) || (sheets.Descendants<Sheet>().Count<Sheet>() == 0))
{
    Console.WriteLine("No sheets collection in workbook!");
    throw new ArgumentException();
}

foreach (var sheet in sheets.Descendants<Sheet>())
{
    var worksheetpart = wb.GetPartById(sheet.Id);
    if ((worksheetpart is null) || (worksheetpart.RootElement is null))
    {
        Console.WriteLine("corrupt worksheet part!");
        throw new ArgumentException();
    }

    var dvs = worksheetpart.RootElement.Descendants<DocumentFormat.OpenXml.Office2010.Excel.DataValidation>();
    foreach (DocumentFormat.OpenXml.Office2010.Excel.DataValidation dv in dvs)
    {
        Console.WriteLine("Type of validation: {0}", dv.Type);
        if ((dv.DataValidationForumla1 is not null) && (dv.DataValidationForumla1.Formula is not null))
        {
            Console.WriteLine("Formula: {0}", dv.DataValidationForumla1.Formula.Text);
        }
        if ((dv.DataValidationForumla2 is not null) && (dv.DataValidationForumla2.Formula is not null))
        {
            Console.WriteLine("Formula: {0}", dv.DataValidationForumla2.Formula.Text);
        }
    }
}

Hopefully, I've understood the nature of your problem and this will help. Otherwise, please clarify what you need.


How do I make stages easily?

Describe your problem here.
Basically i'm tryna make a stage so i assembled everything first in adobe animate in 1280x720 res but when i put the same coordinates in the game they are the same, is there like a setting i need to put on animate to convert to a different coordinate thing or what
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
I put in a modpack and that's where I'm working on the stage

What you could do is instead of making everything a small image, and then lining it up manually, just make every piece the same resolution, and have the parts already aligned to where they need to be so that you can just throw everything on the same x and y in the code

I did that

Looks like this LMFAO

export a png of the entire stage and put it in the center, then move the assets in game till they are right

Nevermind, figured out I was using the raw assets from adobe animate and putting those coordinates in when i was supposed to use the png stuff I exported


Can't deserialize json because of delimiter

How to disable delimiter?
I'm getting json deserialize exception because there is delimiter character at the end of string.

just remove it and use DataRecieved instead
server.DataReceived += (sender, msg) =>                 {                     RecieveMessages.recvMessage(msg.MessageString);                 };

I just made a function that removes the last character of any string.

just remove it and use DataRecieved instead
server.DataReceived += (sender, msg) => { RecieveMessages.recvMessage(msg.MessageString); };

I really believe this to be a quickfix, not a solution.

this worked


add new TopicInterface

Add new TopicInterface to handle dynamic Topics with own TopicManager.

Hi @eiche ,
We have removed the TopicManager in https://github.com/voryx/Thruway/commit/127f7ad04584d21a5f50fe77909874a0ba217e70.
I am interested to know the use case for this and would be willing to help figure out how to make your use case fit the way we have restructured the broker.
I am closing this PR, but please let me know if you have any questions.
Thanks.


First commit!

Description
[Describe what this change achieves]
Issues Resolved
[List any issues this PR will resolve]
Check List

[ x ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the BSD-3-Clause License.

@joshuarrrr Done!


Reflection gives unexpectedly different results for single and multicase discriminated unions

Calling .GetType().Name on an instance of a multicase discriminated union reports reports the case name, while calling it on an instance of a single case union reports the union name. This is confusing at best.
Repro steps

Create two union types, one with a single case and one with several

type SimpleUnion =
  | Number of int
  | Text of string

type SimpleSingleUnion =
  | SingleCase of string

Get the type name of an instance of each:

> (Number 10).GetType().Name;;
val it : string = "Number"
> (SingleCase "bob").GetType().Name;;
val it : string = "SimpleSingleUnion"

Expected behavior
That both would report either the case name or the union name.
Actual behavior
Single case unions report the union name, while multicase unions report the case name.
Known workarounds
Further nasty reflection on the instance
Related information
Provide any related information

Mac OSX
mono 4.6.2
Indications of severity: minor

Unfortunately while this feels like a bug, fixing it probably causes backwards compatibility issues :(

Needs to go to Visualfsharp repo.
On 8 Dec 2016 4:38 pm, "Michael Newton"<EMAIL_ADDRESS>wrote:

Unfortunately while this feels like a bug, fixing it probably causes
backwards compatibility issues :(
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/fsharp/fsharp/issues/650#issuecomment-265787351, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAj7ymIn79dv96Q3-j88oXbYXRcSxlJTks5rGDKTgaJpZM4LIBih
.

We'd treat this as by-design in any case.  Use FSharp.Reflection.FSharpType.* to get consistent refelection for union types


taketwo

5 Year Anniversary pub date

when is this branch going to master?
Too many options confuse a beginner like me.

Lol . Sorry I was so busy .. check your mail and reply back please


KeyError for chat language

Normally the bot takes language from a user sending the message to it.
However if the bot is added to any chat it still processes the messages, but the message taken doesn't have details about the language and granny throws a KeyError mistake.
In any case it shouldn't reply to every message in chat. It should be either inliner or just a block on chat messages.

Currently the bot ignores chat messages if they're not images and sets 'ru' as default if no other language passed.


Update command for setting APP_URL on Heroku

web-url in the heroku apps:info output is now web_url
Command was returning an empty string and setting that as the value of APP_URL

Thanks!


PHP 7.2 issues

Hello,
I was trying to run the parser on PHP 7.2 with the following:
$result = new WhichBrowser\Parser($_SERVER['HTTP_USER_AGENT']);
$result->toArray();

and received an error:

Best,
Linas

I can replicate the error. Will investigate.

Problem found. The function count() was changed in PHP 7.2 in a way that is not backwards compatible.

Version 2.0.28 has been released with PHP 7.2 compatibility.


Feature Request: Witness Votes

Witness votes/unvotes should be able to be broadcast from the keychain.

You can cast and remove witness votes from the extension now.


Charm only grants flight when out of Beacon range

(pressed enter by accident a few keystrokes too early, whoops)


Possible timezone conversion issue

I have notice the the time of the schedules seems to be miss aligned. I'm current in the UK so my timezone is current BST (UTC +0100).
Below is just an example but I have seen this across the board but if look at the resulting guide 'guides/en/sky.com.xml' and I take an entry on the BBCOneEngland.uk channel which in this files is stored as starting at 2023-07-06 22:40:00 +0000 (year, month, day, hour, min, sec, utc offset). Title being Newscast.

If I find the original data from https://epgservices.sky.com/5.2.2/api/2.0/channel/json/2076/1688684053/86400/4 I can see that the time of Newcast is<PHONE_NUMBER> unix time. Using a converter this converts to 2023-07-06 23:20:00 +0000

Sky.com is not the only site which appears to have this problem.
I am running the scripts on a windows server 2022 environment where the clock is set to BST.

I have not been able to find any discrepancy in the times given in the source and in the final guide.
https://epgservices.sky.com/5.2.2/api/2.0/channel/json/2076/1689033600/86400/4
...
{
	"s":<PHONE_NUMBER>,
	"t": "Wimbledon",
	"audioDescription": false,
	"m": [
		10370,
		15300,
		3,
		1,
		"--"
	],
	"rr": "S",
	"subtitleHearing": true,
	"sid": 2343,
	"d": "Live coverage of day nine from the All England Club as the quarter-finals continue at this famous Grand Slam. [S] [HD]",
	"img": "lisa/5.2.2/linear/channel/0f5b2e6c-cc1f-3904-9bbb-05b607a55169/2076"
},
...

guide.xml
<programme start="20230711124500 +0000" stop="20230711170000 +0000" channel="BBCOneEngland.uk"><title lang="en">Wimbledon</title><desc lang="en">Live coverage of day nine from the All England Club as the quarter-finals continue at this famous Grand Slam. [S] [HD]</desc><icon src="http://epgstatic.sky.com/epgdata/1.0/paimage/46/1/lisa/5.2.2/linear/channel/0f5b2e6c-cc1f-3904-9bbb-05b607a55169/2076"/></programme>


Add command line arg to training script to continue training on versioned model

Add a command line argument, e.g., --continue path/to/versioned/model/v1, that continues training on the loaded model. A new versioned model should be published, but its training history should be preserved.

Added in #15


MCPE 1.0.4 has changed the add-on format

MCPE 1.0.4 brings the following changes:

A new add-on format, see the vanilla template at https://minecraft.net/en-us/addons/ to see the changes
The models for the Shulker and Ender Dragon can now be edited using Add-Ons

Thx. I implemented the new format. Models do not matter because MCPC does not support custom mobs models. I will release the new version soon.

The addon data is updated again, would you change it to the 1.2 addons?

Note that they no longer refer to MCPE as it is and is now considered the canonical minecraft.

aka Bedrock codebase aka united aka buggy-and-crappy aka money mine aka minecraftpe.xxx as in the android source and MCPE in the network layer.


Can't build for Android

Hi!
I try to use this player for android application and I have faced with problems.
Problem 1:
Is it correct path ../node_modules/@remobile/react-native-video/android/RCTVideo ?
I have failed to build project using this path. When I removed /RTCVideo then this step passed.
I don't have the RTCVideo folder. May be is it typo?
Problem 2:
/node_modules/@remobile/react-native-video/android/src/main/java/com/remobile/video/RCTVideoPackage.java:19: error: method does not override or implement a method from a supertype
    @Override
    ^

My react-native version is 0.50.4
Problem 3:
There are problems with PropTypes in<EMAIL_ADDRESS>I think it because of PropTypes were moved to separate package prop-types

Same here.


Property manager types right to left

Godot version:
Master commit 68676c774d4f3b7bfad8866a08546acf5a594cdf
OS/device including version:
Windows
Issue description:
Typing in the name of a checkbox in the property inspector, I'm trying right to left:

(seems to be the same with other controls to)
Steps to reproduce:
Add a node to a scene, start typing in the text property or name property

Duplicate of #21061.


Make BaseTransaction public

This allows using it outside of BaseMetastoreTables.

@electrum, can you give more context on where you need to use this? This is probably for create and replace operations in catalogs that aren't defined in Iceberg?
I'd prefer to move the static methods that are made public here to a Transactions class instead of making BaseTransaction public. I don't think there's a need to expose that class, just the factory methods.

I’m using this to create a Transaction instance directly, without using BaseMetastoreTables (as we have an alternate implementation).
Do you want a new Transactions class, or should they be static methods on the Transaction interface? The latter seems to be the favored way for Java 8 (it’s why they added static methods for interfaces).

@electrum, we use the plural convention in most places to keep the interfaces cleaner, so I'd say use Transactions.

@rdblue updated

Merged. Thanks @electrum!


1326: decimal grades on the learner record

Pre-Flight checklist

[x] Screenshots and design review for any changes that affect layout or styling

[x] Desktop screenshots
[x] Mobile width screenshots

[x] Testing

[x] Code is tested
[x] Changes have been manually tested

What are the relevant tickets?
https://github.com/mitodl/mitxonline/issues/1326
What's this PR do?
Sets the grade returned from the LearnerRecordSerializer to have only 2 decimal places.  That serializer is used on the program records page (http://mitxonline.odl.local:8013/records/1/)
How should this be manually tested?

Have mitxonline up and running locally.
Set ENABLE_LEARNER_RECORDS=True in the .env file.
Have a user enrolled into a course run for a course that is a requirement of a program.  Create a course run grade for the course run, and set the grade value as a repeating decimal.
Create a partner school record through Django Admin.
Navigate to the mitxonline Dashboard (http://mitxonline.odl.local:8013/dashboard/?enable_programs&enable_lr).
Go to the programs tab and open the program drawer by clicking on the program card.
Click "view program record" from the drawer.
Ensure that the grade shown for the course is only showing 2 decimal places and not the repeating decimal.

Screenshots (if appropriate)

Codecov Report

Merging #1331 (03a13b5) into main (4a4a2dd) will increase coverage by 0.10%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1331      +/-   ##
==========================================
+ Coverage   83.19%   83.29%   +0.10%
==========================================
  Files         307      307
  Lines       12792    12793       +1
  Branches      918      918
==========================================
+ Hits        10642    10656      +14
+ Misses       1894     1871      -23
- Partials      256      266      +10

Impacted Files
Coverage Δ

courses/serializers.py
86.20% <100.00%> (+3.81%)
:arrow_up:

ecommerce/views/v0/__init__.py
89.58% <0.00%> (-0.42%)
:arrow_down:

ecommerce/models.py
85.83% <0.00%> (ø)

courses/models.py
85.59% <0.00%> (+0.41%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


generate adel with cadl

Be able to generate adel, and see if the generated sdk matches up with the cadl. Eventually we'll also want to add tests too once we are able to test service behavior.
This is the link to the pr https://github.com/Azure/azure-rest-api-specs-pr/pull/7109/files#diff-46619c0c99b94f5c6c7a724483d428c3a2ff24fcd7179a7f1bfe4b2d003e44cfR1

can generate. Since we're going with qna as our example, going to close this issue


WIP: Offline Shader Compilation

Disclaimer: PoC does not yet work.
Description
Please include a summary of the change, new sample or fixed issue. Please also include relevant motivation and context.
Please read the contribution guidelines
Fixes #
General Checklist:
Please ensure the following points are checked:

[ ] My code follows the coding style
[ ] I have reviewed file licenses
[ ] I have commented any added functions (in line with Doxygen)
[ ] I have commented any code that could be hard to understand
[ ] My changes do not add any new compiler warnings
[ ] My changes do not add any new validation layer errors or warnings
[ ] I have used existing framework/helper functions where possible
[ ] My changes do not add any regressions
[ ] I have tested every sample to ensure everything runs correctly
[ ] This PR describes the scope and expected impact of the changes I am making

Note: The Samples CI runs a number of checks including:

[ ] I have updated the header Copyright to reflect the current year (CI build will fail if Copyright is out of date)
[ ] My changes build on Windows, Linux, macOS and Android. Otherwise I have documented any exceptions

Sample Checklist
If your PR contains a new or modified sample, these further checks must be carried out in addition to the General Checklist:

[ ] I have tested the sample on at least one compliant Vulkan implementation
[ ] If the sample is vendor-specific, I have tagged it appropriately
[ ] I have stated on what implementation the sample has been tested so that others can test on different implementations and platforms
[ ] Any dependent assets have been merged and published in downstream modules
[ ] For new samples, I have added a paragraph with a summary to the appropriate chapter in the samples readme
[ ] For new samples, I have added a tutorial README.md file to guide users through what they need to know to implement code using this feature. For example, see conditional_rendering
[ ] For new samples, I have added a link to the Antora navigation so that the sample will be listed at the Vulkan documentation site

I'm curious why you took the path of switching all the existing GLSL headers to have the extension glsl.  You could either assume that everything not ending in hlsl was instead GLSL, or you could inspect the file contents for a version directive. That would remove from the changed files most of the files that are just being renamed and have their copyright touched.
Also, you might want to consider abseil as a replacement for separate hash/string manipulation/logging libraries.  You could also use it to replace fmt as well, but I personally like fmt more.

Thanks @jherico for taking a look.
In terms of hashing and abseil. I would prefer to keep the single header approach for now. No need to import an entirely new library for the sake of a sha256 algorithm.
My goal with this hash approach was to identify binary equivalent files to reduce the amount of compiled shaders that would need to be shipped to a device or stored in headers. The json indexes help to keep track of this in a more human readable way - end of the day we are trying to show people what is happening under the hood
In terms of glsl. I added the type of the shader in the file path as in the future we are wanting to create hlsl alternatives to your glsl shaders. Having the type would allow us to store hlsl/glsl in the same folder with less confusion
I am open to improvements here though. Maybe my renaming was preemptive and that specific change could come in a later PR if needed

CI errors are due to some files having been renamed but not all files referring to them have been updated yet. But it's a draft anyway.

Sorry, I should habe been more specific.  I saw an error where the compiler.complained about RAND_MAX cast to float losing precision.

Playing around with locally building this and diving into the shader preprocessing a bit more this morning.  One thing I'm noticing is the heavy use of add_custom_target.  Anything made by add_custom_target is considered always out of date.
I previously had a similar solution in my project where every single shader was a dependency of a single massive shaders target, but that had the annoying by-product of causing a rebuild of every single shader if I wanted to tweak one and re-run a given sample.
Instead I would recommend replacing the add_custom_target items with add_custom_command where you're able to specify the both the inputs and the outputs of the command, so the output are only regenerated if they're actually out of date compared to the inputs.  This means you don't have a top-level target for each shader file, so what you end up doing is when you get to a target that actually requires a shader (like the say the add_sample lists the required shaders) you

Add the shader source to the specific target
Also add the generated files to the target, which forces them to be built if they're out of date, when you build the project.

You might still need a separate step to build something like an atlas of all the shaders, but it would make it much more convenient for someone working on a given sample to edit the shader used for that sample without triggering the burden of rebuilding every single shader.
If you're interested I can create a branch off of your code and tweak it to do this.  This wouldn't prevent the framework or components from declaring shader dependencies, and specific shaders could still easily be referenced by more than one target in the project.

This PR is no longer needed. The complexity of this PR is to support our implementation of variants. The working group has opted to reduce our variant usage allowing this PR to be closed


TERMCOLOR_HPP_  define twice?

Why do you need to define TERMCOLOR_HPP_ twice in the header file in single_include, they are located on line 15 and line 667, which puzzles me

We don't. This is caused by the amalgamate script that generates the single include version of indicators. It shows that <termcolor.hpp> is redundantly included in a few places in the code. Will fix shortly.


Improved handling of nested packed messages

Signed-off-by: lovesh harchandani<EMAIL_ADDRESS>

I'm hesitant to the ideas being proposed here. I understand the concern of multi-wrapping and the inefficiency of it, and agree we will need a solution to scale this. However, with that said I want to hold off on this until we've gotten others to accept the current "profile" of the JWE.
Based on rough numbers here, we can support a system of about 3-5 wraps without encountering large issues in a browser in terms of DOM load time.Additionally, onion wrapping is not the only practical way to keep the size down. We also discussed an idea of JIT encrypting.
With regards to the actual API additions, I would rather include this into the pack_message/unpack_message API rather than create additional APIs. The primary reason for this is to reduce the complexity for a developer who is programming an agent that is receiving a message. Right now unpack handles the complexity of this, which removed the poor developer experience that Anoncrypt and Authcrypt brought.
Given these two concerns, I would like to hold off until we can find broader alignment on wire level messages. My expectation is that come the end of April (IIW) we can have a better understanding if we should standardize on this approach within Indy. With that said, we should still look at what it would take to add the support into the pack and unpack message rather than adding additional APIs.

We also discussed an idea of JIT encrypting.

Does it mean Just-in-time? Can you point to a link describing this or describe here a bit about this?

I would rather include this into the pack_message/unpack_message API

The objective was to not change pack_message/unpack_message API as they need to be JWE compliant. But i agree that if pack/unpack had this, it would be a better developer experience.

With that said, we should still look at what it would take to add the support into the pack and unpack message rather than adding additional APIs.

It does not take much coding work to move this functionality to pack/unpack but it might take a lot of convincing to have an exception/addition in the JWE spec

Does it mean Just-in-time? Can you point to a link describing this or describe here a bit about this?

Yes, it's Just in time. An example of how this might work would be (using the numbers from the diagram in this HIPE)
ENC1(plain, 1, 4) -> DEC2(ENC1, 1, 2) -> DEC2(ENC2, 2, 1) -> ENC2A(ENC1, 2, 8)
-> DEC2A(ENC2A, 8, 2) -> ENC2B(ENC1, 8, 9) -> DEC2B(ENC2B, 9, 8) -> ENC2C(ENC1, 9, 4) -> DEC2C(ENC2C, 4, 9) -> DECplain(ENC1, 4, 1) -> plaintext
Essentially what is happening is that the encrypted plaintext gets reencrypted multiple times. This still protects the sender's anonymity preventing intermediaries from knowing who's talking, while at the same time allowing the intermediaries to know who to send the message to next. Additionally, because the edge agent can sign messages with the receiving mediator's endpoint, signifying that when ever this key is seen it should be forwarded to the receiving mediator's endpoint, the sending intermediary won't know who is communicating.

The objective was to not change pack_message/unpack_message API as they need to be JWE compliant. But i agree that if pack/unpack had this, it would be a better developer experience.
It does not take much coding work to move this functionality to pack/unpack but it might take a lot of convincing to have an exception/addition in the JWE spec

I'll address these two comments together. By changing the format of the wire level message format (adding the ciphertext section), we essentially are changing pack and unpack format. I say this because if we believe that wire message format is the "base" protocol that everyone operates from, then we need broad support. We can't have some people doing efficient wrapping, and others supporting inefficient wrapping and not create a complexity issue for ourselves, so I think if we decide this is the route to go, then we should seek the path of having an exception/addition/spec written that is broadly accepted by the broader community.

+1 for Kyle's feedback. Especially I don't like the idea to have a lot new API calls. I've requested changes on implementation PR https://github.com/hyperledger/indy-sdk/pull/1574 to avoid merging PoC implementation before finish initial discussion here

FWIW, I like Lovesh's approach, and I believe merging it quickly is better than merging it later, because it avoids us having to support two implementations.

@dhh1128 and I got a chance to discuss this further. We believe first and foremost we should discuss this on an agent call (preferably before IIW) in hopes of having our community come to a conclusion. If we decide we (the indy community) find it more useful to bring this in than we can move forward, otherwise we'll wait and discuss this with the broader SSI community.
From an implementation standpoint, we both thought that it would be better for pack to handle this with an additional API parameter and then on the unpack side, we would have the unpack message parse and handle both formats. This would allow us the broadest support (Single JWEs only, Multi wrapped JWEs, and single JWE with efficient multiwrapping) while also taking into consideration the developer perspectives in our opinions.
What's your thoughts on this approach @lovesh @jovfer
Also, @TelegramSam could we get some time to discuss this on the agent call before IIW?

I'm just adding my comment to second what @kdenhartog said. I think the same functionality but bundled into existing APIs is a net improvement. And Kyle helped me see why it would make sense to socialize a little more before merging--not so much because the ideas aren't what we want, as because we need to get buy-in and that must be managed delicately.

Alright we can add a collapse parameter to pack that would do the job of applying collapse_ciphertext on the result of pack and unpack will use expand_ciphertext if it finds the ciphertexts array.
But any opposition to keeping add_cts_to_msg and remove_cts_from_msg since they allow stripping the ciphertexts array and putting it back on. We need them when creating messages like Forward otherwise any subsequent packs have to inspect the message content?

@lovesh I'm not sure why we need these extra methods. Couldn't pack() create ~ciphertexts (if a new boolean param called repack is false) or add to existing ~ciphertexts (if repack is true)? And couldn't unpack keep pulling items out of ~ciphertexts (if the value of ciphertext is "$0")?

@dhh1128 The collapse argument does what you are suggesting with repack. The 2 methods i am proposing to keep are used when the result of pack is used in another message like a Forward. Eg. Alice packs message m with collapse as True as
{
    "protected": "<receiver info>",
    "iv": "$0",
    "tag": "$0",
    "ciphertext": "$0",
    "~cyphertexts": [
        {
            "iv": "<some IV>",
            "tag": "<some tag>",
            "ciphertext": ENC( m ),
        }
    ]
}

Now this message needs to be put in a Forward. The resulting Forward is this
{
    "@type" : "....forward",
    "to"   : "did:sov:1234abcd#4",
    "msg": {
        "protected": "<recipient info>",
        "iv": "$0",
        "tag": "$0",
        "ciphertext": "$0",
        "~cyphertexts": [
           {
             "iv": "<some IV>",
             "tag": "<some tag>",
             "ciphertext": ENC( m ),
           }
        ]
    },
}

When this Forward is passed to pack, pack has to look inside msg element of Forward (hence it has to know the semantics of Forward) and ignore ~cyphertexts, perform the encryption and then populate ~cyphertexts depending on whether collapse was true or not.
What this HIPE proposes is to keep ~cyphertexts as a meta element and not process it during any other operation than collapsing the ciphertext. Hence the Forward is created from the packed message after stripping ~cyphertexts using remove_cts_from_msg as
{
    "@type" : "....forward",
    "to"   : "did:sov:1234abcd#4",
    "msg": {
        "protected": "<recipient info>",
        "iv": "$0",
        "tag": "$0",
        "ciphertext": "$0"
    }
}

The ciphertext is added back with add_cts_to_msg resulting in
{
    "@type" : "....forward",
    "to"   : "did:sov:1234abcd#4",
    "msg": {
        "protected": "<recipient info>",
        "iv": "$0",
        "tag": "$0",
        "ciphertext": "$0"
    },
    "~cyphertexts": [
        {
            "iv": "<some IV>",
            "tag": "<some tag>",
            "ciphertext": ENC( m ),
        }
    ]
}

Now when this is passed to pack, it knows that the outermost ~cyphertexts is not to be encrypted. pack would follow this rule for all messages

I'm in favor of finding a way to optimize the pack method now, given that Hubs are looking to use a multi wrapping scheme. However, I haven't had time to discuss this idea further yet. I'd be in favor of closing this PR (since it makes sense as an Aries-RFC now) and opening an issue over there to discuss this further. I think there's good thinking here that will require some level of tweaking, but once we find a solution I'll PR it onto Aries RFC #0019

lots of discussion about this work since it was originally proposed. I suggest that this PR be closed and the discussion is moved to Aries-rfc repo where most of the discussion has been occurring.