Implement support for authentication via Auth Proxy

Auth Proxy allows to authenticate a user using an HTTP header provided
by an external authentication service. This provides a way to
authenticate users in miniflux using authentication schemes not
supported by miniflux itself (LDAP, non-Google OAuth2 providers, etc.)
and to implement SSO for multiple applications behind single
authentication service.
Auth Proxy header is checked for the '/' endpoint only, as the rest are
protected by the miniflux user/app sessions.
Closes #534

Sorry for the delay, I will try to find some time to review your PR over the weekend.

Sorry for the delay. I was on vacation with no access to the Internet.

With the actual implementation, if a non-authenticated user goes directly to a specific URL (for example /unread/entry/1234 ), it will be redirected to the login page instead of using Auth Proxy.

Where it will be authenticated using Auth Proxy. This keeps the same behaviour as with other login methods (user/pass and OAuth). If this is something you are not happy with and would rather have Auth Proxy checks on all endpoints, I'll update the PR. I just wanted to keep consistent experience between different login methods.

That seems to work fine for the web ui. What about the REST API?
The Grafana example cited in issue #534 seems to allow the Auth-Proxy for API access as well. Might be a nice to have.
I'm thinking about implementing an API tokens mechanism in the future instead of using the user password...

That seems to work fine for the web ui. What about the REST API?

I was thinking about adding support to the REST API initially. But then what's the workflow is gonna be? When accessing miniflux via Web UI, a user might be redirected by a reverse proxy to an entity that actually authenticates it and this entity might be interactive (e.g. login via OpenID provider). Not sure how this can be implemented for API access.
And the API client can't set Auth proxy header by itself, as the header must be stripped by the reverse proxy (for security reasons).
So I can't really see how the Auth proxy workflow can be supported in the API. And I'm not really sure it's actually needed. If you're planning to add tokens, then Auth proxy for UI + tokens for API will work smoothly together: a user logs in via UI (authenticated via Auth proxy) and creates a token for API access.

I think it's good enough for now. Let's merge :)


Webhook API: Make webhook subscription editable and resubscribable

Is your feature request related to a problem? Please describe.
Currently, the only way to update a webhook subscription as an Airy developer
e.g. in order to change the name or to modify the subscribed events or the subscribed URL is to
(1.) unsubscribe an existing webhook via POST /webhooks.unsubscribe, and then
(2.) create a new webhook subscription via POST /webhooks.subscribe,
eventually leading to a long polluted result list when calling POST /webhooks.list
containing a lot of old webhook subscriptions all having the state unsubscribed
Describe the solution you'd like
(1.) I would suggest to introduce a new route POST /webhooks.update
Request:
{
   "id": "SOME_ID", // required, uuid
   "name": "SOME_NAME", // optional, string
   "url": "SOME_URL" // optional, string
   "headers": {} // optional, object
   "events": [] // optional, array.
   "signature_key": "SOME_KEY" // optional, string
}

Response:
200, returning updated Webhook payload
AND (2): Resubscribe existing webhooks
Make POST /webhooks.subscribe also accepts a body with {"id": "SOME_ID"}  to resubscribe an existing webhook subscription (instead of only accepting a full webhook payload, resulting in creating an additional webhook subscription).
Response:  200, returning updated Webhook payload
Describe alternatives you've considered

(1): We could add POST /webhooks.delete with body { "id": "SOME_ID" }  in order to clean up POST /webhooks.list; or
(2): We could remove unsubscribed webhook subscriptions per default from the result of POST /webhooks.list so it doesn't contain unsubscribed webhooks anymore

Additional context

1) Should it possible to update an unsubscribed webhook through new update API?

2) While resubscribing the event should it be possible to update the event at the same call or just make it subcribed? I mean user can send additional parameter to the resubscribing api along with the id. Please confirm

3) In Subscribe Api call- What if  "id" parameter in subscribe API is Id of an unsubscribed webhook, do we need to show any error message or HttpStatus.BAD_REQUEST

hi, i mean all questions are lifecycle related with the biggest issues around this resubscribe behavior.
so it's mostly around whether POST /webhooks.list request should also include unsubscribed webhooks or if they should be simply removed and thereby retired.
so your first question would go away if we decided to remove unsubscribed webhooks from the list so you cannot resubscribe but just create new subscriptions and update existing ones but not unsubscribe and resubscribe.
would you agree and change the requirement in that regard?
we could also remove the status parameter as webhooks.list would only contain subscribed webhooks.

For reference:

Should it possible to update an unsubscribed webhook through new update API?

While resubscribing the event should it be possible to update the event at the same call or just make it subscribed? I mean user can send additional parameter to the resubscribing api along with the id. Please confirm

In Subscribe Api call- What if  "id" parameter in subscribe API is Id of an unsubscribed webhook, do we need to show any error message or HttpStatus.BAD_REQUEST


feat: add  mapping for inputs, fixes #366

Thanks for working on this @smoka7
I still experience the issue on the first prompt. After that, the problem goes away.
https://user-images.githubusercontent.com/10972027/173069108-6fda4bc4-dd46-486a-8b99-2187db19f131.mp4
Although the solution looks good by remapping <C-w> but I don't seem to understand why <C-w> doesn't behave the way it should.
Were you able to identify why <C-w> mapping was behaving unexpectedly?
Also if you look closely at the statusline (bottom right) when I press <C-w> for the first time, it looks like it's waiting for an input. Not sure if it might help.

I couldn't find the reason that why only <c-w>  doesn't work.
I don't have the first prompt issue. in input use <C-o>:Telescope keymaps to see if it's mapped in the first time

I can confirm that it works fine for me the first time as well. I also confirmed that it works with the minimal config I use for testing. The issue of it not working the first time is probably something in your personal config @yujinyuz.
I also have no idea why the native  mapping does not work.

@smoka7 @cseickel I found the issue why you weren't experiencing it with minimal config. My nvim-autopairs looked something like this
require('nvim-autopairs').setup {
  disable_filetype = { 'TelescopePrompt', 'vim', 'markdown' },
  map_c_w = true,
  check_ts = true,
}

Adding neo-tree-popup to the disable_filetype solves the "first prompt" issue


Getting "slot number mismatch" error when calling any extrinsic in rococo asset hub

Hi, I was trying to test a reserve asset transfer from rococo asset hub to a parachain, but chopsticks crashes with the following error:

I then realised that it happens when calling any extrinsic on asset hub, why might this be? I have no issues calling extrinsics on the parachain.
The command I'm using is:
xcm -r ../chopsticks-hashed/rococo.yml -p  ../chopsticks-hashed/md5.yml -p ../chopsticks-hashed/rococo-asset-hub.yml
The files I'm using are:

https://github.com/hashed-io/chopsticks-hashed/blob/master/rococo.yml
https://github.com/hashed-io/chopsticks-hashed/blob/master/md5.yml
https://github.com/hashed-io/chopsticks-hashed/blob/master/rococo-asset-hub.yml

Thanks

what version are you using? can you try latest one as https://github.com/AcalaNetwork/chopsticks/pull/677 may fix your problem

Thanks @xlc! That worked!


fix: Wrap components with/without parent should be reconsidered in Design

🐛 Bug Report
Relative button size will break if there is no IconStart/End in FluentButton.
💻 Repro or Code Sample
<FluentButton Style="width: 70%"
              Appearance="Appearance.Accent"
              Loading="@_loading"
              OnClick="@StartLoadingAsync">
    Load
</FluentButton>

@code {

    bool _loading = false;

    async Task StartLoadingAsync()
    {
        _loading = true;
        await Task.Delay(TimeSpan.FromSeconds(5));
        _loading = false;
    }
}

🤔 Expected Behavior
The size should not change.
😯 Current Behavior
The size will break, since it's wrapped by a span.
💁 Possible Solution
Check the source
@if (Loading && IconStart == null && IconEnd == null)
{
    <span class="loading-button">
        @_renderButton
        <FluentProgressRing />
    </span>
}
//The button is wrapped by another element, which will break whole things. Wrap like that should not be designed.
//It makes the lib hard to use.

Related:
//For FluentTextField.razor
<FluentInputLabel ForId="@Id" Label="@Label" AriaLabel="@AriaLabel" ChildContent="@LabelTemplate" Required="@Required" />
<fluent-text-field @ref=Element>
    @ChildContent
</fluent-text-field>

//There is no parent wrap for this. The label position is not relative to field.
//If we apply position on parent, the label position will break. It is centered as well.
<FluentStack
    Orientation="Orientation.Vertical"
    HorizontalAlignment="HorizontalAlignment.Center"
    VerticalAlignment="VerticalAlignment.Center">
        <FluentTextField Style="width: 100%" Label="Email"/>
        <FluentTextField Style="width: 100%"Label="Password"/>
    <FluentButton Type="ButtonType.Submit" Style="width: 70%" Loading="_isProcessing">Login</FluentButton>
</FluentStack>
//We have to add another wrapper on the `FluentTextField` to make it works.

🔦 Advice
As what I understand:
One razor Component should always have a root element. Style and class apply to the razor component, should always apply to the core element which is mostly a fluent UI web component. This rule is applied well for most components, but I think it should be consistent for all.
Maybe I'm wrong, but I'd like to discuss it.
🌍 Your Environment
Microsoft Edge/Win11/.NET8

The wrapping of the button is only the case when you want to have a Loading button. We'll take a look OT the examples you provided to see how we can prevent it from breaking the size but for this specific case the wrap is needed.
With regards to the TextField, the Label parameter is offered as a convenience and makes it easier to build regular left (or right) aligned forms. If you want /need more fine grained control, you can use separate FluentInputLabel components (and don't set a value for Label)

@vnbaaij I'm trying to find a solution for this particular case where no icon is used in a loading button.
It's not perfect, but it's the only solution, I think, by applying the button style to the parent span style. If this isn't sufficient, I'd suggest removing this loading feature (the progress ring) if there's no icon (start/end) in the button.
See PR: https://github.com/microsoft/fluentui-blazor/pull/1146


Feat: API Keys allow limited endpoints vs all endpoints (configurable)

By default, only allow API keys authentication to /chat/completions and /models endpoints (LLM invocation). Admin can configure the app to allow API Keys for All Endpoints (default: false) - but this has security implications that are likely unwanted in many contexts. See https://github.com/open-webui/open-webui/discussions/7018 for justification.
Also adding [ ] Code formatting step to the default GitHub PR template, based on recent experience of a new contributor (failed formatting CIs on backend and frontend) - it would be better to be informed of the formatting requirements via this checklist rather then failing CIs.
Pull Request Checklist
Note to first-time contributors: Please open a discussion post in Discussions and describe your changes before submitting a pull request.
Before submitting, make sure you've checked the following:

[X] Target branch: Please verify that the pull request targets the dev branch.
[X] Description: Provide a concise description of the changes made in this pull request.
[X] Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
[ ] Documentation: Have you updated relevant documentation Open WebUI Docs, or other documentation sources?
[X] Dependencies: Are there any new dependencies? Have you updated the dependency versions in the documentation?
[X] Testing: Have you written and run sufficient tests for validating the changes?
[X] Code review: Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
[X] Prefix: To cleary categorize this pull request, prefix the pull request title, using one of the following:

BREAKING CHANGE: Significant changes that may affect compatibility
build: Changes that affect the build system or external dependencies
ci: Changes to our continuous integration processes or workflows
chore: Refactor, cleanup, or other non-functional code changes
docs: Documentation update or addition
feat: Introduces a new feature or enhancement to the codebase
fix: Bug fix or error correction
i18n: Internationalization or localization changes
perf: Performance improvement
refactor: Code restructuring for better maintainability, readability, or scalability
style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc.)
test: Adding missing tests or correcting existing tests
WIP: Work in progress, a temporary label for incomplete or ongoing work

Changelog Entry
Description

Limit API Key authentication to only /api/chat/completions and /api/models endpoints by default, unless a config option was enabled to allow all endpoints to be accessed

Added

Configurable option "API Key allow access to all endpoints"

Security

Limit API Key authentication to only /api/chat/completions and /api/models endpoints by default, unless a config option was enabled to allow all endpoints to be accessed

Additional Information

https://github.com/open-webui/open-webui/discussions/7018

Note to maintainer: ideally that would have been done via the new Groups functionality as a group-level permission, but I have not had capacity to implement it this way at this time.  Implementing it as a general config was straightforward, as it basically repeated the recently merged https://github.com/open-webui/open-webui/pull/7041

The proposed default (false/disabled) technically makes it a somewhat “breaking” change if someone actually relied on API keys for triggering other endpoints; though it would be trivial for them to fix;
This default will also allow more users to have a more secure environment, so in my opinion it should default to disabled.

Note to @tjbck: ideally I strongly believe that API Key authentication must always be restricted to LLM invocation endpoints, and the configurable option is not even necessary. But my previous PR for that (a one-liner) was rejected...
If we are having it configurable, this could have been done via the new Groups functionality as a group-level permission; I have not had capacity to implement it this way at this time. Implementing it as a general config was straightforward, and it basically repeated the recently merged PR https://github.com/open-webui/open-webui/pull/7041
The proposed default (false/disabled) technically makes it a somewhat “breaking” change if someone currently relied on API keys for triggering other endpoints (not only for invoking the completion), though it would be trivial for them to re-enable current behavior by just toggling the setting. Default 'false/disabled' will get users to have a more secure environment, so in my opinion it should default to disabled (unless you agree with even harder line of always restricting endpoints)

All of our endpoints are properly scoped (user/admin), This PR won't be merged. Appreciate the effort.

@tjbck please hear me out.   Yes, all endpoints are segregated User/Admin. However:

API keys do not expire (unlike JWTs), and also do not revalidate OAuth authentication status. A user may have already left the company, but still retain his API key that would still work.

API keys are often used with 3rd party software tools (and in codebases/deployed software) and are for this reason more prone to leakage due to the usage pattern - either by the users(admins) mistake, or by malicious 3rd party tools.

There is a vast difference in risk profile (what happens on exploitation) between different API endpoints.
Please take a look at the comparison table below.

Given the API key has inherently larger risk of being exploited (see above why), the more sensitive endpoints deserve additional level of protection - like disallowing their access by the API key.

Sounds reasonable, thanks for the detailed explanation. I'll get to this PR when I have the capacity!

Thanks for the consideration!
Now that you saw the risk profile concerns, you may actually review my original suggestion,  which was that API keys should ONLY work for /chat/completion and /models, full stop - not even configurable.  Whoever needs to integrate to other endpoints, they can do /signin to get a JWT...  That would dramatically simplify the change down to a one-liner.
But I do not insist. As far as my use-case is concerned, we're OK with a configuration toggle.

Addressed in dev!


metadata always present?

@mattcieslak does this ever return false for you?
https://github.com/brainsciencecenter/flywheel-deidentification/blob/0707a21da122b39386775f97a580abd26c2bd8b2/utilities/deid_metadata_check.py#L78
It looks like every acquisition I've tested has the metadata attribute. I think it might be better to make this True only if it is not None. What do you think?

It looks like they've all got metadata. I thought maybe it was a deprecated tag only in older scans but I'm seeing it everywhere

OK cool, I changed it to return True if acq.metadata is not None

much more informative!


List-item design-system

Codecov Report
Patch and project coverage have no change.

Comparison is base (e864db9) 100.00% compared to head (8dc37db) 100.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@              Coverage Diff              @@
##           release/0.8      #519   +/-   ##
=============================================
  Coverage       100.00%   100.00%
=============================================
  Files               67        67
  Lines             1240      1240
  Branches           458       458
=============================================
  Hits              1240      1240

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


create and edit sub/superscript text in studio

As a course author, I need to be able to add subscript and superscript text in the wysiwyg editor, for math and chemistry courses.
Designs and Mockups
TBD
Acceptance Criteria:

[ ] write a proposal for how to approach this problem, in studio, in markdown and in hugo
[ ] Add subscript or superscript text
[ ] publish subscript and superscript text

Out of Scope

editing would be nice, but if its difficult we can instruct authors to delete and re-add the sub/superscript when they need to

Proposal for Approach
@pdpinch
The approach I went with as shown in this PR https://github.com/mitodl/ocw-studio/pull/1469 was to create a Markdown Syntax Plugin to translate subscripts and superscripts into Markdown and vice versa. As @ChristopherChudzicki pointed out this approach does have a short coming which is nested shortcodes. In testing out subscript in resource_link, I have discovered that no formatting works in resource_links

In testing out subscript in resource_link, I have discovered that no formatting works in resource_links
Two things I want to add:

I believe that italics and bold inside resource_links (or wrapping the entire link) do work in Hugo if put manually into the markdown, Studio just seems not to be handling it correctly.
In contrast, any formatting that is shortcode-based (which italics and bold aren't) would not work in Hugo because shortcodes inside shortcode parameters is not supported.
Superscripts/subscripts inside resource link titles may be a reasonably important use-case, e.g., links to scientific articles with chemical formulas in the article title. (A lot of the nested shortcodes we encountered in migrated data were chemical formulas or math in resource link titles.)

IMO, when it comes to math and chemical formulas, MathJax (or some other web LaTeX implementation, like KaTeX)

@ChristopherChudzicki, Sorry for not explaining it correctly but yes I was talking in terms of studio and not Hugo

After a conversation with @pdpinch today I did a brief exploration. With Hugo 0.101
resource_link.html
{{- $uuid := index .Params 0 -}}
{{- $title := index .Params 1 -}}
{{- $anchor_id := index .Params 2 | default ""}}
{{- range where $.Site.Pages "Params.uid" $uuid -}}
<a href="{{ .Permalink }}">
    {{ $title | $.Page.RenderString  }}
</a>
{{- end -}}

Markdown:
Hello

This is a {{< resource_link "1c082150-35bb-4236-af04-c67f3976fd42" "resource link with **bold** and super{{< sup \"scripts with spaces\" >}} " >}}

World

Screenshot:

Notes:

I thought this was going to work better with hugo's opening + closing shortcodes, but the superscripts were getting commented out as "raw HTML" by hugo. Possibly related: https://stackoverflow.com/questions/63198652/hugo-shortcode-ignored-saying-raw-html-omitted
Note that the superscript shortcode inside the resource link has its quotes escaped: {{< sup \"scripts with spaces\" >}} ... I was surprised that worked...but it did.

@gumaerc Does the above seem like a reasonable approach?

@ChristopherChudzicki This seems to be a fine approach. FYI, accourding to https://www.docsy.dev/docs/adding-content/shortcodes/:
"Using the bracket styled shortcode delimiter, >}}, tells Hugo that the inner content is HTML/plain text and needs no further processing. Changing the delimiter to %}} means Hugo will treat the content as Markdown. You can use both styles in your pages."
So, In your notes when you mentioned that your superscripts were getting stripped as "raw HTML," was the wrapping shortcode delimited with the angle brackets or percent signs? Either way, I put up a PR here in ol-infrastructure to upgrade the version of Hugo we use in Concourse builds. I upped the version number so once this merges we can test by upping the version number in the pipeline definition and then commit that change if everything works properly.

Status Update
We moved forward this feature by allowing a specific whitelist of HTML tags to be used in OCW markdown, currently just ["sub", "sup"].  See https://github.com/mitodl/ocw-studio/pull/1588 for more details.
After releasing to RC, we discovered the following issue:
https://user-images.githubusercontent.com/9010790/205384591-0ab103a2-0a4c-4691-96b1-c1bbde7eb649.mov
Notably:

This only happens when adding a new script AND clicking immediately after the link.
This might be a CKEditor issue... I removed all custom plugins (i.e., input is HTML output is HTML, no resource links, etc) and the error still occurs locally. This needs more investigation. There are similar issues on the CKEditor repo, and this may have been fixed in new versions of CKEditor. Here's one: https://github.com/ckeditor/ckeditor5/issues/7697
I am confused when the error manifests itself as

console.error locally
fatal crash of editor on RC

I am vacation for the next week, and will pick this up upon return.

I tested the CKEditor plugins in a bit more isolation at https://github.com/ChristopherChudzicki/ck-test.
Using CKEditor 35 seems to fix this issue:

branch ck-31 uses CKEditor v31 (same as current ocw-studio). Then (1) add a link, (2) add superscript within link, (3) click directly after link shows console errors, just like video above.
branch ck-35 uses CKEditor v35; the error seems not to occur

✅ 😌


3d Model in item is doesn't work!!

I try a Resource Pack with CIT 3d model and a lot of model is doesn't work a pack I use is Anglocraft

Provide your latest.log if you want to reopen the issue.


docs:version results in Cannot find module './sidebars.json'

🐛 Bug Report
Trying to create a new version of the docs fails with an unhandled rejection
Have you read the Contributing Guidelines on issues?
Yup
To Reproduce
If possible, use https://new.docusaurus.io to create a CodeSandbox reproducible demo of the bug.
(Write your steps here:)

Clone https://github.com/facebook/jest
Run yarn workspace jest-website docusaurus docs:version 27.0

Expected behavior

It should correctly generate a new version of the docs
Actual Behavior

It errors out
(node:95658) UnhandledPromiseRejectionWarning: Error: Cannot find module './sidebars.json'
Require stack:
-<EMAIL_ADDRESS>    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
    at Function.Module._resolveFilename (/Users/simen/repos/jest/node_modules/module-alias/index.js:49:29)
    at resolveFileName (/Users/simen/repos/jest/node_modules/import-fresh/node_modules/resolve-from/index.js:29:39)
    at resolveFrom (/Users/simen/repos/jest/node_modules/import-fresh/node_modules/resolve-from/index.js:43:9)
    at module.exports (/Users/simen/repos/jest/node_modules/import-fresh/node_modules/resolve-from/index.js:46:41)
    at Object.module.exports [as default] (/Users/simen/repos/jest/node_modules/import-fresh/index.js:14:19)
    at Object.loadSidebars (/Users/simen/repos/jest/node_modules/@docusaurus/plugin-content-docs/lib/sidebars.js:130:47)
    at Object.cliDocsVersionCommand (/Users/simen/repos/jest/node_modules/@docusaurus/plugin-content-docs/lib/cli.js:64:43)
    at Command.<anonymous> (/Users/simen/repos/jest/node_modules/@docusaurus/plugin-content-docs/lib/index.js:56:23)
    at Command.listener [as _actionHandler] (/Users/simen/repos/jest/node_modules/@docusaurus/core/node_modules/commander/index.js:413:31)
    at Command._parseCommand (/Users/simen/repos/jest/node_modules/@docusaurus/core/node_modules/commander/index.js:914:14)
    at Command._dispatchSubcommand (/Users/simen/repos/jest/node_modules/@docusaurus/core/node_modules/commander/index.js:865:18)
    at Command._parseCommand (/Users/simen/repos/jest/node_modules/@docusaurus/core/node_modules/commander/index.js:882:12)
    at Command.parse (/Users/simen/repos/jest/node_modules/@docusaurus/core/node_modules/commander/index.js:717:10)
    at run (/Users/simen/repos/jest/node_modules/@docusaurus/core/bin/docusaurus.js:319:7)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:95658) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:95658) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Also note (as the warnings indicate) that the error is unhandled, meaning the CLI exits with status 0. You are missing a catch somewhere 🙂
Your Environment

Public source code: https://github.com/facebook/jest/tree/master/website
Public site url: https://jestjs.io/
Docusaurus version used: 2.0.0-alpha.c32d8bd11, but 2.0.0-beta.0 also fails with the same error
Environment name and version (e.g. Chrome 78.0.3904.108, Node.js 10.17.0): Node 14.17.0
Operating system and version (desktop or mobile): N/A

Reproducible Demo
See reproduction steps above

@SimenB hi, sidebarPath must be absolute path (i.e. require.resolve('./sidebars.js'), not './sidebars.js').
In fact, we recently changed DX sidebar config so that it can now be empty. Therefore, after that if relative path is specified in sidebarPath (= sidebar file will be considered as non-existent), new sidebar file will be automatically created.
Probably, we need to take into account case when user does not specify absolute path to sidebar, then we should notify (via throw error) they, and not create empty sidebar. Make sense?

Aha! Yeah, a check with path.isAbsolute and throwing an explicit error would be nice 🙂

Sorta weird some have to be absolute and some are relative to cwd, though.
https://github.com/facebook/jest/blob/d5aaedee2739f1c73c667c579a8aee4fdde0f0ee/website/docusaurus.config.js#L39-L40
should docs be absolute as well?

Heh, nope! Making docs absolute fails: UnhandledPromiseRejectionWarning: Error: [docs] There is no docs to version ! (extra space at the end, fwiw)

Yeah, it's not very obvious, there's bit of inconsistency here, if docsPath can be relative, meanwhile sidebarPath can only be absolute. Although we can "internally fix" sidebar path by making it absolute. Perhaps that would be better than forcing user to specify absolute path, WDYT?

IMO either all paths should be supported as either relative or absolute (resolving relative ones relative to the config file or cwd (whatever it is you do today)) or they should all be required to be absolute. Either works for me, but inconsistency in which can be which is confusing as you say 👍
Easiest here is probably to resolve sidebarPath if it's relative like you used to, although docu v2 is a good opportunity to force all paths to be absolute (which is just path.resolve(__dirname, 'old string here'), so it's not a complicated migration for people)


Create a .npz file to train the car.

I need to get a single .npz file to train just like in collecting_training_data.py by hamichiwa.
Here's the code I have used to drive my car. Please take a look,
import time
import io
import pygame
import pygame.font
import picamera
import configuration
import helpers.motor_driver as motor_driver_helper
import helpers.image as image_helper

UP = LEFT = DOWN = RIGHT = ACCELERATE = DECELERATE = False

def get_keys():
    """Returns a tuple of (UP, DOWN, LEFT, RIGHT, change, ACCELERATE,
    DECELERATE, stop) representing which keys are UP or DOWN and
    whether or not the key states changed.
    """
    change = False
    stop = False
    key_to_global_name = {
        pygame.K_LEFT: 'LEFT',
        pygame.K_RIGHT: 'RIGHT',
        pygame.K_UP: 'UP',
        pygame.K_DOWN: 'DOWN',
        pygame.K_ESCAPE: 'QUIT',
        pygame.K_q: 'QUIT',
        pygame.K_w: 'ACCELERATE',
        pygame.K_s: 'DECELERATE'
    }
    for event in pygame.event.get():
        if event.type in {pygame.K_q, pygame.K_ESCAPE}:
            stop = True
        elif event.type in {pygame.KEYDOWN, pygame.KEYUP}:
            down = (event.type == pygame.KEYDOWN)
            change = (event.key in key_to_global_name)
            if event.key in key_to_global_name:
                globals()[key_to_global_name[event.key]] = down
    return (UP, DOWN, LEFT, RIGHT, change, ACCELERATE, DECELERATE, stop)

def interactive_control():
    """Runs the interactive control"""
    setup_interactive_control()
    clock = pygame.time.Clock()
    with picamera.PiCamera() as camera:
        camera.resolution = configuration.PICAMERA_RESOLUTION
        camera.framerate = configuration.PICAMERA_FRAMERATE
        time.sleep(configuration.PICAMERA_WARM_UP_TIME)
        # GPIO.output(BACK_MOTOR_ENABLE_PIN, True)
        pwm = motor_driver_helper.get_pwm_imstance()
        motor_driver_helper.start_pwm(pwm)
        command = 'idle'
        duty_cycle = configuration.INITIAL_PWM_DUTY_CYCLE
        while True:
            up_key, down, left, right, change, accelerate, decelerate, stop = get_keys()
            if stop:
                break
            if accelerate:
                duty_cycle = duty_cycle + 3 if (duty_cycle + 3) <= 100 else duty_cycle
                motor_driver_helper.change_pwm_duty_cycle(pwm, duty_cycle)
                print("speed: " + str(duty_cycle))
            if decelerate:
                duty_cycle = duty_cycle - 3 if (duty_cycle - 3) >= 0 else duty_cycle
                motor_driver_helper.change_pwm_duty_cycle(pwm, duty_cycle)
                print("speed: " + str(duty_cycle))
            if change:
                command = 'idle'
                motor_driver_helper.set_idle_mode()
                if up_key:
                    command = 'forward'
                    print(duty_cycle)
                    motor_driver_helper.set_forward_mode()
                elif down:
                    command = 'reverse'
                    motor_driver_helper.set_reverse_mode()

                append = lambda x: command + '_' + x if command != 'idle' else x

                if left:
                    command = append('left')
                    motor_driver_helper.set_left_mode()
                elif right:
                    command = append('right')
                    motor_driver_helper.set_right_mode()
            print(command)
            stream = io.BytesIO()
            camera.capture(stream, format='jpeg', use_video_port=True)
            image_helper.save_image_with_direction(stream, command)
            stream.flush()

            clock.tick(30)
        pygame.quit()

def setup_interactive_control():
    """Setup the Pygame Interactive Control Screen"""
    pygame.init()
    display_size = (300, 400)
    screen = pygame.display.set_mode(display_size)
    background = pygame.Surface(screen.get_size())
    color_white = (255, 255, 255)
    display_font = pygame.font.Font(None, 40)
    pygame.display.set_caption('RC Car Interactive Control')
    text = display_font.render('Use arrows to move', 1, color_white)
    text_position = text.get_rect(centerx=display_size[0] / 2)
    background.blit(text, text_position)
    screen.blit(background, (0, 0))
    pygame.display.flip()

def main():
    """Main function"""
    motor_driver_helper.set_gpio_pins()
    interactive_control()

if __name__ == '__main__':
    main()

Now what this code does is that it snaps a pic every instance when the car moves or stays idle. The training data is in image form. But I need it in .npz file format. So if someone can please help me, I'd be very thankful. This is my college project and I need to submit within a month.
Please help.
Thank You

Here's my email<EMAIL_ADDRESS>just in case anyone is willing to help me further.

Thanks for sharing this with us. I unfortunately don't have my own car and don't know much about them. So have always turned to company in Calgary here to move somewhere or take advantage of a ride. I liked that this company does not charge extra for travel time, fuel or transportation if you are in the city limits. Not everyone offers this kind of service unfortunately.


Failed to autostart on Raspberry Pi 3

I installed Nodejs 9.8.0 on my raspberry Pi 3 model B before run the installation script for raspberry.
MagicMirror does not autostart until I found a fix on internet:
sudo env PATH=$PATH:/usr/local/bin pm2 startup systemd -u pi --hp /home/pi

Did you install pm2 with sudo? (where?)

@E3V3A I installed MagicMirror2 the easy way with below script on my new raspberry Pi 3.
https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh
read -p "Do you want use pm2 for auto starting of your MagicMirror (y/n)?" choice
if [[ $choice =~ ^[Yy]$ ]]; then
    sudo npm install -g pm2
    sudo su -c "env PATH=$PATH:/usr/bin pm2 startup linux -u pi --hp /home/pi"
    pm2 start ~/MagicMirror/installers/pm2_MagicMirror.json
    pm2 save
fi

Regarding run MM as root, no, I won't.
I dropped my first installation of MM and manually installed MM again and created a systemd service to auto start MM serveronly mode.
cat << EOL | sudo tee /etc/systemd/system/magicmirror.service
[Unit]
Description=Magic Mirror
After=network-online.service

[Service]
Environment=NODE_PORT=8234
Type=simple
User=$USER
WorkingDirectory=$HOME/MagicMirror/
ExecStart=/usr/bin/node serveronly/

[Install]
WantedBy=multi-user.target

EOL

sudo systemctl --system daemon-reload
sudo systemctl enable magicmirror

This issue has solved to me. So it is time to close this topic.


Set redirect_to properly

Coverage remained the same at 84.395% when pulling 9a978c6a8466e3afadebc93e011f461657397c9b on u2f-redirect_to into e20ae3644410d73e1b7b9806f3b0c2e5db1dcf02 on master.


[Forecast plugin] Make it robust to weird column names

https://stat.ethz.ch/R-manual/R-devel/library/base/html/make.names.html
(easy fix)

Closed as development is moving to https://github.com/dataiku/dss-plugin-time-series-forecast


Fix #13 - Migrate.exe runs all the migrations even if they are alread…

…y applied

Adds simple detection of permission denied DB error. Provided hook is added to MigrationSqlGenerator for simplicity instead of introducing a new seam.

@bricelam


Error when submitting transaction

#121 enables transaction-submission capabilities to QueryM. Valid transactions with inputs from wallet addresses now work, but an exception is generated somewhere in QueryM. It appears that the WS interface attempts to parse a message but fails after the transaction is submitted. The errors
Uncaught TypeError: Cannot read properties of undefined (reading 'then')
    at eval (Promise.js?d439:22)
    at eval (Effect.js?a817:12)
    at eval (Effect.js?a817:12)
    at runAsync (Aff.js?357f:98)
    at run (Aff.js?357f:333)
    at eval (Aff.js?357f:348)
    at drain (Aff.js?357f:120)
    at Object.enqueue (Aff.js?357f:141)
    at eval (Aff.js?357f:339)
    at eval (Promise.purs?4dfa:28)

At first I thought this was a bug with Nami, but it appears to in fact be generated in the QueryM FFI module, specifically in
// _onWsMessage :: WebSocket -> (String -> Effect Unit) -> Effect Unit
exports._onWsMessage = ws => fn => () => {
  ws.addEventListener('message', function func(event) {
    const str = event.data;
    console.log("message: ", str);
    fn(str)(); // here
  });
};

To reproduce: run the Pkh2Pkh example module

That was probably introduced in #80.
What is the output of console.log call above?

I'm not experiencing the issue with the HEAD at ee9e89bcce5f42fd7c141a1c25bcb06555cdf33a

I just checked ee9e89b and the example works fully. The bug was introduced in 6a495ce

Just to double-check, I created a new branch from master and checked out Types.Value at ee9e89b (i.e. before the recent changes). The example still works

@vvtran In that screenshot, did you close the signing prompt without signing it? That is the type of error you'd get

I just pulled latest master so 79a3cf2fff70a2ce1acc77b8526d6bda01a55b0b and my first attempt produced the same error message (from the first screenshot), I tried a few more times (refreshing each time) and I've been able to produce the tx hash each time

I'm fairly sure I didn't close it to reproduce the bug initially.

Going back to ee9e89b specifically, I have the same error that was flagged up by this issue

It seems like everytime I change branches,  go back into nix develop, my initial run produces the couldn't extract JS error or string error, then it turns into the bug of this issue (e.g. from ee9e89b) or in the latest master, is fixed and produces tx hash.

It seems like everytime I change branches,  go back into nix develop, my initial run produces the couldn't extract JS error or string error, then it turns into the bug of this issue (e.g. from ee9e89b) or in the latest master, is fixed and produces tx hash.

Checked out to ee9e89bcce5f42fd7c141a1c25bcb06555cdf33a and that worked first go, I wonder if that PR fixed the issue for some of us (intentionally or not).
@ngua is it possible to have a browser dependency issue?

Well, this is really bizarre. Just checked out master again and it seems to be working. Guess we can close this


Can create illegal file end with '.'

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.56.2
OS Version: Window 10 20H2 (19042)

Steps to Reproduce:

Create a folder named with 'cpp.' using file manager of vscode.
Vscode will create it and can read files inside but powershell and file manager of windows cannot open the folder.

Dup of https://github.com/microsoft/vscode/issues/117426
Fixed in latest insiders, soon in stable, thus closing


Errant require_once in PubSub/Channel.php

On line 4 of Rediska/PubSub/Channel.php there is a require_once that is trying to include Rediska.php.
This seems redundant with auto loading - and the path is wrong regardless.

I am closing this, I just looked at the file and it seems to be fine. The require_once may be redundant, but regardless, the path is correct.


Exception handling for unexpected quit of .NET Client

Hi!
Thank you very much for the contribution you provided so far!
Sorry for delaying this, I have been focusing on different projects lately, but I would love to get back working on this.
In order to do this, I would love to enable you people to contribute directly to the projects. Please let me know if you want to be granted write access to branches of this repo.
Thanks,
Radu M

Pushed an important bugfix for this where "OnDisconnected" would never be called for these clients.


.cs file highlight notwork after a multiline Tuple

Reported before on https://github.com/microsoft/vscode/issues/111484

Environment data
dotnet --info output:
.NET SDK (reflecting any global.json):
 Version:   5.0.100
 Commit:    5044b93829

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.19042
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\5.0.100\

Host (useful for support):
  Version: 5.0.0
  Commit:  cf258a14b7

.NET SDKs installed:
  5.0.100 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.All 2.1.23 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.23 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.23 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.1.9 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 5.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET runtimes or SDKs:
  https://aka.ms/dotnet-download

VS Code version: 1.51.1
C# Extension version: ms-dotnettools.csharp v1.23.6
OmniSharp log
Steps to reproduce
The image shows how a multi line tuple broke the highlight

The image shows if turn this multi line into one line then 2nd Tuple hightlight wrong

Expected  behavior
They are fine colored on Visual Studio 2019.
Actual behavior

This should work with semantic highlighting.
To enable set:
csharp.semanticHighlighting.enabled and editor.semanticHighlighting.enabled to true.

closing as this is supported in semantic highlighting


How can I calculate center of offset?

Hi,
I want to roll to exact center when animation ends, but I don't know who to do that with offset. How can I do it ? My arrow looks weird. I attach screenshot (I am using example)

Thank you so much.

The example is using a Random as offset generator to simulate real world case.
If you want to stop at exact center of a sector, set the offset here from _random.nextDouble() to 0.5 is enough.


removed sections dropdown, added text boxes for inputs to be used by …

removed sections dropdown, added text boxes for inputs to be used by backend.
I have also moved the old dashboard files to a folder located in the \views folder to a folder called \oldDashboard. I figured it didn't hurt to hold onto these files and if we want them deleted that's as simple as two clicks. I'm going to start on the styling for the second half of this sprint. The current dashboard files are based on the prototypes I made weeks ago.

Added the requested stylings to text, textboxes, and the background. The image used for the background is a royalty-free image I found on shutterstock looking up "free dolphin outline enclosed in circle png".


winsafe::MSG doesn't match layout of windows.h MSG on 32-bit

The lpPrivate field at the end here:
https://github.com/rodrigocfd/winsafe/blob/6540aea9f58a058f5817743a420c68ab181b1925/src/user/structs.rs#L433-L443
Is only defined by windows.h if _MAC (macos / OS X) is defined:
typedef struct tagMSG {
    HWND        hwnd;
    UINT        message;
    WPARAM      wParam;
    LPARAM      lParam;
    DWORD       time;
    POINT       pt;
#ifdef _MAC
    DWORD       lPrivate;
#endif
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;

On 64-bit, there's some implicit padding there anyways.  That's a bit sketchy if MSG were ever to be combined with MaybeUninit, as lPrivate could end up being left uninitialized.
On 32-bit, this actually changes the struct size (winsafe::MSG is 32 bytes, windows.h MSG is 28 bytes.)
Perhaps use #[cfg(target_os = "macos")] ?

This is actually a leftover from the early days of this library, when I was still experimenting. It should have been removed.
Thank you.


Env vars assigned through putenv aren't accessible through env.process

If in my broadcast.php file I do the following:
if (getenv('PUSHER_URL')) {
    $url = parse_url(getenv('PUSHER_URL'));
    putenv('MIX_PUSHER_KEY='.$url['user']);
    putenv('PUSHER_SECRET='.$url['pass']);
    putenv('PUSHER_APP_ID='.explode('/', $url['path'])[2]);
}

Then MIX_PUSHER_KEY isn't accessible from env.process. I realize this is likely due to the fact that these vars are only available for the current request, so I'm sort of at a loss here. :shrug:
Is there any way around this?

afaik env variables in mix are only read at build time
you might want to look at how laravel passes the xsrf token to axios via meta tag in the base template


Disable unnecessary Bevy features

TL;DR disables default features and enables bevy_render.
Since this crate relies purely on the bevy_render crate, we can disable Bevy's default features and enable it manually instead. This prevents us from compiling an extra 60 crates and a few minutes (at least on my system!) when building for headless.

Thanks a lot for the contribution, I hadn't even considered that!


License?

Before I can use this wonderful work you've done I need you to add a LICENSE.
Do you have plans to add one?

Oops.  My apologies; I'm usually pretty careful about that.  I'll add an
MIT license when I'm next near a computer.
On Sep 3, 2015 18:16, "Freyert"<EMAIL_ADDRESS>wrote:

Before I can use this wonderful work you've done I need you to add a
LICENSE http://choosealicense.com/.
—
Reply to this email directly or view it on GitHub
https://github.com/benbria/node-bunyan-lumberjack/issues/2.

Enjoy!

@jwalton you're an officer and a gentleman.


Support environment variables in config

It would be handy when support variables were supported in the config. Example:
[rsspls]
output = "$HOME/Downloads"

When this example is currently ran, in the current folder a sub-folder $HOME will be created (and within that folder the sub-folder Downloads will be created).
Also, tilde-expansion would be hando to have:
[rsspls]
output = "~/Downloads"

Now the folder ~ will be created in the current folder.
Also (the 3rd request within this issue), it would be nice if, when the output folder is created, an info-level message was being logged. It doesn't happen very often, and when it happens you might want to know (especially when you made a typo, or used a feature –like say environment variables–  which isn't supported 🙈).
The creation of the folder happens here, but at the moment I don't have the opportunity to learn Rust...

It would be handy when support variables were supported in the config. Example:

I'm hesitant to add features only because they're handy, each new feature adds to the complexity of the product and has a maintenance cost, even if only a small one.
Do you have concrete examples of where using environment variables would solve a problem? The $HOME example is one such case but I think that would be better solved using tilde expansion as you mention. An implementation supporting environment variables would necessarily need to:

Parse paths, detecting references to one or more env vars anywhere in the string.
Interpolate them to produce the final string.
Determine which config parameters support env vars (all or only specific ones?).

An alternative would be to generate the configuration with another tool. I described one such example of that in https://github.com/wezm/rsspls/issues/33#issuecomment-1951839129.
With all that in mind the tilde expansion feels like the better feature since it:

Make configs portable to different users
Is clear which config parameters it applied to (only paths)

I do have one concern/open question though: will it work/make sense on all supported platforms, including Windows? At the moment the tool can treat paths as mostly opaque, only calling join to create new paths. Probably needs some research into how other tools handle this.

When I said "handy", I might have better said that it was unexpected it wasn't supported: when I tried it (both ~ and $) I was surprised the folder I was expecting was not created. That's also why I suggested to log to the user when a folder is created.
However, I can't think of a reason I would need any other variable than $HOME, so with tilde (~) implemented my use cases are covered.
The thing that is described in #33 sounds like you could better do with Ansible (it supports Ninja-templated configuration).
With Python, I would have used os.path.expanduser and os.path.expandvars. After reading the documentation, I realized it is doing more than I thought. It also expands ~user to the home folder of the specific user (on MacOS it would expand to /Users/user if the user exists).
Looking at the bash documenation of tilde expansion it seems the shell is even providing more functionality. So only replacing ~ with the current users home would probably a good idea.
I guess Windows could also be supported, by learning from the documentation of Python's expanduser:

On Windows, USERPROFILE will be used if set, otherwise a combination of HOMEPATH and HOMEDRIVE will be used. An initial ~user is handled by checking that the last directory component of the current user’s home directory matches USERNAME, and replacing it if so.


Remix not working

Describe the bug
Works great with react-router-dom, but not with @remix-run/react. Maybe I'm misunderstanding the scope of this addon, but based on the title it seems that it should support both react-router and remix. I get that they are both made by the same team, but does this not also support Remix?
To Reproduce
import type { Meta, StoryObj } from '@storybook/react';
import { NavLink } from '@remix-run/react';
// import { NavLink } from 'react-router-dom';
import { withRouter } from 'storybook-addon-remix-react-router';

const meta: Meta<typeof NavLink> = {
  component: NavLink,
  decorators: [withRouter],
};
export default meta;

type Story = StoryObj<typeof NavLink>;

export const Main: Story = {
  args: {
    to: '/home',
    children: 'Home',
  },
};

Expected: Renders components using Remix Link, NavLink, useNavigate.
Actual: Errors out with,
Unexpected Application Error!
useHref() may be used only in the context of a <Router> component.
Error: useHref() may be used only in the context of a <Router> component.
    at invariant (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/@remix-run_react.js?v=53159940:358:11)
    at useHref (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/@remix-run_react.js?v=53159940:874:34)
    at http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/@remix-run_react.js?v=53159940:8332:14
    at renderWithHooks (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/chunk-AGFONM4W.js?v=53159940:12151:26)
    at updateForwardRef (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/chunk-AGFONM4W.js?v=53159940:14307:28)
    at beginWork (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/chunk-AGFONM4W.js?v=53159940:15914:22)
    at beginWork$1 (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/chunk-AGFONM4W.js?v=53159940:19721:22)
    at performUnitOfWork (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/chunk-AGFONM4W.js?v=53159940:19166:20)
    at workLoopSync (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/chunk-AGFONM4W.js?v=53159940:19105:13)
    at renderRootSync (http://localhost:6006/node_modules/.cache/storybook/bd45b70ddf2f9c95d1ea5d1e495c39b571d64dc099b1becb6c02aa1a45de3ae3/sb-vite/deps/chunk-AGFONM4W.js?v=53159940:19084:15)

To help us resolve your issue more quickly, please fork the [https://stackblitz.com/edit/storybook-addon-remix-react-router](stackblitz project) to reproduce your issue.
Added remix.stories.tsx, and used components from @remix-run/react
https://stackblitz.com/edit/storybook-addon-remix-react-router-qtd9rs?file=src%2Fstories%2Fremix.stories.tsx
Additional context
Add any other context about the problem here.
Environment
Share the output of the following command :
npx sb info

Storybook Environment Info:
System:
OS: macOS 15.0.1
CPU: (10) arm64 Apple M1 Max
Shell: 5.9 - /bin/zsh
Binaries:
Node: 20.16.0 - ~/.nvm/versions/node/v20.16.0/bin/node
npm: 10.8.1 - ~/.nvm/versions/node/v20.16.0/bin/npm <----- active
pnpm: 9.11.0 - ~/.nvm/versions/node/v20.16.0/bin/pnpm
Browsers:
Chrome: 129.0.6668.101
Safari: 18.0.1

I can't reproduce the issue.
I've slightly modified your repository to have both stories files side by side, and they work just fine.
Note that I have also removed the lock file to have the latest version of each packages.
Stackblitz repro


Replace Db Drop impl which shuts down purge task, with explicit shutdown signal

Resolves #76

Makes sense, I removed the OK(()) from this method. Also added a struct which wraps the Db. This way the shutdown is more nicely encapsulated in the db module. I'm not completely happy with the name DbHolder though.


Why not working on Moto X? My mobile GPU are adreno 330,test viewers_dicom2D it's crash,why? please help me!

Hi sorry for the delay I was offline -
Which version of the Moto X do you own (year)? Does any other demo work by any chance?
I had a 2014 Moto X that was not properly working either and it had to do with the custom shaders that were passing an array of textures as a parameter of a function. It didn't like it somehow (https://github.com/FNNDSC/ami/blob/master/src/shaders/shaders.data.frag#L36-L43)
Please give a try to the volume rendering that uses a slightly different shader and we can investigate deeper.
https://fnndsc.github.io/ami/#vr_singlepass_raycasting
Does vanilla THREEJS demo work?(http://threejs.org/examples/#webgl_geometry_colors_lookuptable)
Thanks

Hi thank you for your reply .
My mobile not Moto X 2014,but it has the same GPU(Qualcomm adreno 330) with Moto X 2014.
The following picture is my test result

If you extend the 1st WebGL error:
"Shader error 0 .. validate status false ... three.min.js:714"
Does it tell you which is the problematic line?

Closing for now - waiting for answer.
Will re-open if needed.


The font 'Dialog.plain' contains a bad /BBox

Hello,
When I write the chart to pdf using the following:
VectorGraphicsEncoder.saveVectorGraphic(chart, "./Sample_Chart", VectorGraphicsFormat.PDF);
and open the .pdf file using the Acrobat Reader the warning pops up.
Any idea how to fix or not to show that warning?

Sorry, I never ran into that issue. Can you try the latest XChart snapshot jar? I updated the vectorgraphics2d dependency. Maybe it contains a fix for it!?!
https://oss.sonatype.org/content/repositories/snapshots/org/knowm/xchart/xchart/3.5.2-SNAPSHOT/

I tried with the latest jar but it gives the following error:
`
Exception in thread "main" java.lang.NoSuchMethodError: de.erichseifert.vectorgraphics2d.VectorGraphics2D.getCommands()Lde/erichseifert/vectorgraphics2d/intermediate/CommandSequence;
at org.knowm.xchart.VectorGraphicsEncoder.saveVectorGraphic(VectorGraphicsEncoder.java:48)
at Stacked.main(Stacked.java:27)
`
BTW I am using the example code called "Save Chart as Bitmap".
Thank you

You also have to update the vectorgraphics2d dependency to 0.13 i believe

I have the very same problem.
Moreover, using java, I embedded the XChartPanel created from the chart into a JTabbedPane. When I save an image all goes fine. But whenever I choose pdf it creates an empty pdf, and only when I close my JPanel that contains the JTabbelPane the file will actually be written.
However when I open it Acrobat says me that "The font 'Dialog.plain' contains a bad /BBox".
I'm using the latest version, 3.5.2, of XChart.

Adobe Reader software version 11.0.00, open pdf file error, online said to upgrade, this I did not try;
But try other ways, open with other software or browser, it is normal.
So this is not an XChart problem.

In the next release (coming soon) we're using a different PDF renderer so hopefully this issue will just disappear.


Fix UI bugs

For regular user, UI makes the following requests that need to be removed since they are not accessible for regular users:

For regular user, after login, by default, the 1st environment container metric must be shown in Monitor section. This functionality seems to be broken:

Fixed


mediaelch: 2.8.2 -> 2.8.4

Motivation for this change
https://github.com/Komet/MediaElch/releases/tag/v2.8.4
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

This is a semi-automatic executed nixpkgs-review which does not build all packages (e.g. lumo, tensorflow or pytorch)
If you find some bugs or got suggestions for further things to search or run please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 108974 run on x86_64-linux 1

1 package built:

mediaelch

This is a semi-automatic executed nixpkgs-review which does not build all packages (e.g. lumo, tensorflow or pytorch)
If you find some bugs or got suggestions for further things to search or run please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 108974 run on x86_64-linux 1

1 package built:

mediaelch


JSON editor help button obscured by line highlight

Open Create modal
Switch mode
place cursor in first or second row of editor
help icon is obscured

Fixed by https://github.com/mesosphere/marathon-ui/pull/732


postMessage stat data to flamegraph webview only when it's initialized.

This will hopefully fix #15.

:raised_hands: awesome, thanks for the contribution, @stphnlyd !


Adding function that allows fabric to work under Visual Studio

Under Visual Studio (not the Visual Studio Code) sys.stdin.read() doesn't work so well.  I am proposing adding a function called "get_input" that selects the input method based on the platform it is running on.  This allowed me to test under VS.
At the head of fabric
from utils import Standalone, Update, Setup
import argparse
import sys
import os
import platform

script_directory = os.path.dirname(os.path.realpath(__file__))

# aided by ChatGPT; a function for Python
# incorporating platform.system
# that accepts either piped input or console input
# from either Windows or Linux
def get_input():
    system = platform.system()
    if system == 'Windows':
        if not sys.stdin.isatty():  # Check if input is being piped
            return sys.stdin.readline().strip()  # Read piped input
        else:
            return input("Enter Question: ")  # Prompt user for input from console
    else:
        sys.stdin.read()

```.
.
,

At the bottom of fabric

else:
    text = get_input()
if args.stream:
    standalone.streamMessage(text)
else:
    standalone.sendMessage(text)

Can you submit as a PR?


Upgrade to Node.js 16

When running my workflow that is based on  scacap/action-surefire-report@v1 I get the following warning from GitHub:
Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/.
Please update the action to use Node.js 16

Hello @tommens, this was already taken care of in https://github.com/ScaCap/action-surefire-report/issues/85 & https://github.com/ScaCap/action-surefire-report/pull/101, v1 is already using Node 16. Do you have a recent example where this warning appears?

the problem seems to be solved by upgrading some of my other used actions to a more recent version as well. i guess the warning i received was due to an incompatibility between different actions using different versions of node.js. Thanks for your reactivity you can close this issue.


Error Train using Resnet50

Traceback (most recent call last):
File "train.py", line 505, in
train()
File "train.py", line 213, in train
yolact_net.init_weights(backbone_path=args.save_folder + cfg.backbone.path)
File "C:\Users\ALANA\Documents\Belajar\yolact\yolact.py", line 495, in init_weights
self.backbone.init_backbone(backbone_path)
File "C:\Users\ALANA\Documents\Belajar\yolact\backbone.py", line 143, in init_backbone
state_dict = torch.load(path)
File "D:\anaconda3\envs\yolact\lib\site-packages\torch\serialization.py", line 713, in load
return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
File "D:\anaconda3\envs\yolact\lib\site-packages\torch\serialization.py", line 905, in _legacy_load
return legacy_load(f)
File "D:\anaconda3\envs\yolact\lib\site-packages\torch\serialization.py", line 842, in legacy_load
storage._storage, storage_offset, numel, stride)
RuntimeError: Attempted to set the storage of a tensor on device "cuda:0" to a storage on different device "cpu".  This is no longer allowed; the devices must match.
can someone help me about this, i cant train using resnet50

Hey, hope you are doing good.
I faced the same issue.
Try this,
Go to backbone.py
and change the code from :
state_dict = torch.load(path)
to
state_dict = torch.load(path,map_location='cuda:0').
This should essentially solve the issue.

Hey, hope you are doing good. I faced the same issue. Try this, Go to backbone.py and change the code from : state_dict = torch.load(path)
to state_dict = torch.load(path,map_location='cuda:0').
This should essentially solve the issue.

Heyy, thanks for the help
If i can ask something again, do you know how to show the IoU?

Hey, hope you are doing good. I faced the same issue. Try this, Go to backbone.py and change the code from : state_dict = torch.load(path)
to state_dict = torch.load(path,map_location='cuda:0').
This should essentially solve the issue.

Heyy @rajuptvs , thanks for the help
If i can ask something again, do you know how to show the IoU?


[WIP] Read csv can cheaply infere divisions

If an index column that is guaranteed to be sorted is provided to dd.read_csv, it should be possible to read in the divisions cheaply by sampling one data row at the beginning of each byte block. To make this possible, I extended my previous pull request (https://github.com/dask/dask/pull/1852) with the following (very experimental) changes:

read_block in bytes/utils.py now has the keyword number_of_delimiters, which specifies the number of lines that should be sampled. This allows to read in e.g. the head and the first data row.
read_bytes in bytes/core.py now provides the keyword samples_per_block. If it is set to True, a sample of the header + first data row of every block is returned in a list. If it is set to False (default), everything is as it was before.
read_pandas in dask/dataframe/io/csv.py provides the keywords sorted_index_col and divisions. It tries to calculate the divisions, if a sorted index column but no divisions are provided. To do this, it calls read_bytes with samples_per_block = True.

Might this be a good idea? Are there heavy pitfalls I am not aware of? I am new to github, so please feel free to correct me where ever you want.

I did some benchmarks using my day to day data (2000 x 13MB csv files):
#Read in without index and divisions (usual way)
%timeit -o dd.read_csv('[path]/dask_to_csv.*.csv')
> 1 loop, best of 3: 2.68 s per loop

#Read in with sorted_index_col = 'my_index'. Divisions will be calculated.
%timeit -o dd.read_csv('[path]/dask_to_csv.*.csv', sorted_index_col = 'my_index')
> 1 loop, best of 3: 8.41 s per loop

#Read in with sorted_index_col = 'my_index', blocksize = None and divisions = 'my_known_divisions'
%timeit -o dd.read_csv('[path]/dask_to_csv.*.csv', sorted_index_col = 'sim_trail_index', blocksize = None, divisions = divisions)
> 1 loop, best of 3: 2.66 s per loop

This is rapidly fast compared to the currently recommendet approach to use ddf.set_index(),  which I tried on a computesever with 40 cores:
#Read in without index and divisions and call set_index:
with dask.set_options(get = dask.multiprocessing.get):
    %time dd.read_csv('[path]/dask_to_csv.*.csv').set_index('my_index')

> CPU times: user 18.2 s, sys: 4.9 s, total: 23.1 s
> Wall time: 43 s

Closing this as stale.  Please feel free to speak up if anyone would like to take this on again.


Pagination doesn't refresh when needed

Pagination added on listview with page size x.  Hide unused paging = yes. When there are up to exactly x items, pagination is not shown. Ok. Now add an item with refresh in client, so total sum of items is x+1 and a second page is needed. Pagination doesn't show up. Refresh page in browser and pagination is shown with one item on second page. So it does hide unused paging, but it doesn't show immediately when paging becomes needed. Also it doesn't hide when you remove items until the total sum reaches x, but that's less of an issue.

Hi @lrporder,
Thanks for providing this useful feedback. The issue has been resolved and will be included in the coming release of this widget. In the meantime here is a usable beta-version with the fix.

Fix confirmed. Thanks!

This issue is resolved in the app store release V1.1.2
https://appstore.home.mendix.com/link/app/105694/


Correct way to update Drush when using drupal-vm Docker image

Issue Type
Support Request
Your Environment
Docker container using geerlingguy/drupal-vm

Your OS

macOS 10.13.3 (17D47)

Summary
As part of my update process to Drupal Core 8.4.4 and Lightning 2.2.7, I ran into a nasty issue where I could no longer export config from my site using either drush cex or drush csex.  The error that I was getting was Error: Undefined class constant 'DUMP_EXCEPTION_ON_INVALID_TYPE', which I was finally able to track back to some version conflicts with the version of Symfony/Yaml that was being used by Drush 8.1.14, which was the globally installed version in my Docker container.  If I ran cex from my project directory (bin/drush cex), I was able to export config with no problems.
My specific question is, in the context of a Docker project what is the prescribed way to update drush in the Docker container?  I went down the path of updating my Dockerfile to replace the drush binary at /usr/local/bin as described here, but I'm not thrilled with this solution, as I now have to make sure to maintain my Drush versions in both my Dockerfile and separately in my composer.json file, since I am explicitely requiring drush via composer as well.  In the vagrant version of drupal-vm I see that via various config.yml settings it's possible to specify a drush version, but is there an equivalent when working with the Docker image of drupal-vm?

@gabe-connolly - The latest versions of Drupal VM's docker image now use the Drush Launcher globally, instead of having Drush installed as a global tool.
This means that inside the container, Drush Launcher will automatically use whatever Drush version you have installed as a dependency of your Drupal project(s).
As of about 3 weeks ago, Drush is no longer installed globally inside the Docker container version of Drupal VM, and that should hopefully help (a) push people more towards having Drush as a project dependency (this is the recommended and now only supported way of using Drush as of 9.x), and (b) not have to worry about the global drush install in Dockerized scenarios anymore.

Awesome, thanks @geerlingguy !


Verify that webdir is valid

We depend on an environent variable, but if it's not set, it should default to the current working directory - although we might want to add a simple check at the very beginning (possibly some type of hook in the root command?)
We can set a PersistentPreRun hook on the root command that will verify that webdir is happy (we can do a quick check to ensure that whatever webdir is set to that it has a test file that we know we always have; possibly the themes/devopsdays-theme/theme.toml or something)

I confirmed that if the environment variable is not set, it defaults to the current working directory. But we should still validate that it's a good directory.


Set a hook to do a proper node shutdown in case of a panic

The recommended approach is described in the Rust documentation: https://doc.rust-lang.org/beta/std/panic/fn.set_hook.html

fixed with #7369


[Improvement] [GameTest] Teleport function for Entity

A teleport function on the Entity class
It would mean people don't have to write a helper to do it as a command
Additional requirement sent by someone:

Optional dimension parameter for this function (omit and it implicitly knows the same dimension)

We now have teleport methods on Entity.


forest bug? binding.tex

There seems to be a bug here causing some overalp.
\begin{forest}
sm edges without translation
[S
  [\ibox{1} NP$_i$ [John\\John\\he]]
  [VP
    [V \sliste{ \ibox{1} NP$_i$, \ibox{2} CP } [thinks\\thinks\\thinks]]
    [\ibox{2} CP
      [C [that\\that\\that]]
      [S
        [\ibox{3} NP$_j$ [Paul\\Paul\\Mary]]
        [VP
         [V \sliste{ \ibox{3} NP$_j$, \ibox{4} NP$_k$ } [likes\\likes\\likes]]
         [\ibox{4} NP$_k$ [him\\himself\\Peter]]]]]]]
\end{forest}

I have to add horizontal space:
\begin{forest}
sm edges without translation
[S
  [\ibox{1} NP$_i$ [John\\John\\he]]
  [VP
    [V \sliste{ \ibox{1} NP$_i$, \ibox{2} CP } [thinks\\thinks\\thinks]]
    [\ibox{2} CP
      [C [that\\that\\that]]
      [S, s sep+=1ex
        [\ibox{3} NP$_j$ [Paul\\Paul\\Mary]]
        [VP
         [V \sliste{ \ibox{3} NP$_j$, \ibox{4} NP$_k$ } [likes\\likes\\likes]]
         [\ibox{4} NP$_k$ [him\\himself\\Peter]]]]]]]
\end{forest}

Hi @sasozivanovic,
Any opinions on this one? I am working through the remaining issues now. Maybe I can close this one and you are tracking this bug, if it i one elsewhere.
Thanks for forest in the first place! =:-)
Stefan

I can't reproduce this one. Maybe some old (buggy) output was externalized?

Thanks!


Wrap data with dask

This is a pretty major refactor of how the llc data is read. We now construct a fancy dask graph to load the data in face / level chunks.

Current coverage is 88.00% (diff: 72.63%)

Merging #25 into master will decrease coverage by 3.44%

@@             master        #25   diff @@
==========================================
  Files             4          5     +1
  Lines           538        600    +62
  Methods           0          0
  Messages          0          0
  Branches        120        130    +10
==========================================
+ Hits            492        528    +36
- Misses           31         55    +24
- Partials         15         17     +2

Powered by Codecov. Last update a5ee7df...0b9475c

@rabernat  I missed this.  Does it effectively close https://github.com/xgcm/xgcm/issues/40 ?

Does it effectively close xgcm/xgcm#40 ?

No, that issue was resolved years ago, with a major internal refactor of xmitgcm. Why don't you try it out and see if it's any better with your use case.


Snapshot Tagging Consistency

Windows scripts tag a snapshot created from the command line as "automatic" but the linux version tags them as "manual".  Ideally they would have consistent behavior.

Windows lags Linux: need a mechanism for determining invocation-method for Windows.

Ok, looks like if ($MyInvocation.scriptname) is going to be the closest equivalent to the Linux if [[ $(tty -s)$? -eq 0 ]]. I'll have to give that a shot the next time I have access/time to update/test the Windows scripts.

Not high priority, just noting it while thinking about it.
On Friday, September 11, 2015, Thomas H Jones II<EMAIL_ADDRESS>wrote:

Windows lags Linux: need a mechanism for determining invocation-method for
Windows.
—
Reply to this email directly or view it on GitHub
https://github.com/ferricoxide/WinEBSbackups/issues/7#issuecomment-139670035
.


[POC 430] change scheduler PVC binder code to support multiple RPs

What would you like to be added:
in current POC code, checkBindings() has following code piece
	for _, nodeInformer := range b.nodeInformers {
		node, err = nodeInformer.Lister().Get(pod.Spec.NodeName)
		if err != nil { // TODO - check error type, continue to search next RP if not found
			klog.Errorf("Error getting node from current node informer. error [%v]. TODO - check error type, continue to search next RP if not found", err)
			return false, fmt.Errorf("failed to get node %q: %v", pod.Spec.NodeName, err)
		}

Its TODO comments explicitly is self-explanatory
Why is this needed:
for pods having PV/PVC, the check will likely fail, which leads to pod cannot be scheduled.

code merged


Update license

@swapagarwal @TeAmP0is0N The license is currently showing year 2018. As a GSSOC participant I would like to update it to 2020.

Thanks for your review but it's not required right now.


Bot refuses to initialize inside of docker container.

For some odd reason the bot throws this error when attempting to start:

A previous version of the bot made use of GatewayIntentBits which seems to no longer exist (?) TypeScript server was being stupid, so instead I used an ApplicationFlagsBitField instance but the error persisted.

Error still exists when running inside the docker container but is able to run locally and on a screen in the server. Another problem is that apparently the bot is no longer able to see message content or access any of the benefits of privileged intents. Further investigation is required.


feat: test(edited)

Lint PR title preview (current branch, validateSingleCommit enabled) failed as intended.
https://github.com/kenji-miyake/action-semantic-pull-request/runs/5067353090?check_suite_focus=true


Request: Make /notify available consumable as a JSON object

Hi there!
Recently installed this package for Homebridge and I've been impressed with how easy it is to get control of Sonos thanks to your hard work.
One thing that I especially like is the CLI. I had experimented with node-sonos before, but to have a cLI that runs alongside Homebridge is really great.
The thing that would make it better, in my opinion, is an ability to discover devices. Right now, I'm looking at the http://192.168.X.X:40973/notify to see updates. But if that URL could be made available as a JSON object, say, that would be pretty powerful too.
Not sure what others are doing to get the current IP of a ZonePlayer for automation. Perhaps there's another answer I'm overlooking.

Try upnp -z to see the UPnP announcements.  upnp is included in homebridge-lib, which is included in homebridge-zp.  I used to create a symlink for it, just as for zp, but npm doesn’t like that anymore.  You should be able to start it using npx.


features/donations-notification

Hi,
This sample repo is meant to remain agnostic.
Octavian's work on donation was meant for the Hack to The Future 2020 Hackathon ;)


Dropdown renders open on page load in IE 11

Running bootstrap 4.6 did fix the issue with having multiple columns but I have been able to figure out a solution for the dropdown rendering open on page load in IE 11.

I need snippet.
Here is my sample. Dropdown renders cloded...
https://dashboardcode.github.io/BsMultiSelect/snippetColumns.html

Thank you, for your response. It appears to happen when I have the following line in my JS:
$("#tagSelect").bsMultiSelect("UpdateData");

Here is the snippet: https://dashboardcode.github.io/BsMultiSelect/snippetJsSimpleUpdateData.html . There is UpdateData on startup and I do not observe the "open dropdown" on IE11 . Could you adjust it to your scenario?

@TdZink solved in ver 1.1.1 (for bioth BS4 and BS5 target bundles, actualy Bootstrap 5 by itself doesn't support IE11).
reason was that setup of placeholder throws input event on IE11.


Relaxed validation around stream attachments, allowing a filename to …

…be specified
fixes #212

Thank you for the PR. Published as 0.20.0.

Was this reverted? I am not seeing the update in the latest master.


Make the size parameter optional, as advertised.

See: https://github.com/algoo/preview-generator/pull/100/files#r303397097

Did you finish work on this ? (it' s "WIP").

Look like you asked at the same time I removed it, IIRC it's OK.


[added] Support

This is a rough implementation that can be cleaned up further, but I wanted to request for comments on the approach first before cleaning the implementation.
It adds patterns to nextState/match (State) in order to find the parent's matched pattern before appending to it. It can instead traverse parent routes and prepend the paths until it finds the first route that contains /. That adds more logic to Redirect but I'm happy to do that as well.
Resolves #1905

@mjackson , I've updated the PR. I can squash the commits later if needed.
I also thought that the getRoutePattern logic can probably live in PatternUtils but I left it in Redirect.js for now. Let me know what you think.

Thanks for the PR, @chrisirhc! Would you mind rebasing on current master? The tests should pass now.

@mjackson Rebased!

awesome! thanks @chrisirhc

No problem, thank you!


ssd sc use general name

How to categorize this issue?

/area TODO
/kind enhancement
/priority normal
What would you like to be added:
make StorageClass gp2 and gce-sc-fast …… use same name
Why is this needed:
Our team uses clusters of cloud vendors such as gcp aws. But when we want to use ssd, we need to use the special sc name. For end users, the name of the type is not the most important, but their speed

This would introduce cross-provider extension coordination which is against the goals of our extensibility concepts.
Generally, I would recommend to let the users create the storage classes they need to run their workload themselves (this way they can also optimize the configurations to suit better to their use case).

/close


widgets: Improve Poll style.

Regarding discussion on CZO here about polishing existing features.
Testing plan:
Dev environment, Ubuntu; tested CSS changes in Firefox and Chromium.
GIFs or screenshots:

@zulipbot add "area:widgets"

@zulipbot add "area: widgets"

Looks better. Can you do similar changes in night mode (mainly focus color changes)? You need to modify night_mode.css.

@amanagr Commit for Night Mode added.


[BUG] No response to ScanNetworks command

Reproduction steps

Set up PASE connection over BLE with a noncommissioned Nordic example app.
Send ScanNetworks command to Nordic.

Bug prevalence
Heard about the problem just once
GitHub hash of the SDK that was being used
2e2ae99dc270017dae758b3555a91f079b4b074d
Platform
nrf
Platform Version(s)
No response
Anything else?
From the nrf log attached below, ScanNetworks command was received at the following:
I: 74533 [EM]>>> [E:33912r M:138196100] (S) Msg RX from 0:FFFFFFFB00000000 [0000] --- Type 0001:08 (IM:InvokeCommandRequest)
D: 74544 [EM]Handling via exchange: 33912r, Delegate: 0x2000f53c
D: 74550 [DMG]Received command for Endpoint=0 Cluster=0x0000_0031 Command=0x0000_0000

and then connection was terminated and no response was sent back:
I: 75717 [DL]BLE GAP connection terminated (reason 0x08)

2022-12-15 at 02:57:01 PM.txt

@Damian-Nordic @kkasperczyk-no

@kpark-apple could you describe how to reproduce the problem? Did you use chiptool? If yes, what commands did you invoke?

Ok, I was able to test it with chiptool interactive mode and it worked for me. Here are the steps I made:

./chiptool interactive start
./chiptool pairing code-paseonly 1<PHONE_NUMBER>2
./chiptool networkcommissioning scan-networks 1 0

CHIPTool log:
networkcommissioning scan-networks 1 0
[1671520873.534616][48617:48619] CHIP:TOO: Sending command to node 0x1
[1671520873.534815][48617:48619] CHIP:TOO: Sending cluster (0x00000031) command (0x00000000) on endpoint 0
[1671520873.534864][48617:48619] CHIP:DMG: ICR moving to [AddingComm]
[1671520873.534950][48617:48619] CHIP:DMG: ICR moving to [AddedComma]
[1671520873.535064][48617:48619] CHIP:EM: <<< [E:22954i M:143909953] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:08 (IM:InvokeCommandRequest)
[1671520873.535103][48617:48619] CHIP:IN: (S) Sending msg 143909953 on secure session with LSID: 46109
[1671520873.535175][48617:48619] CHIP:DMG: ICR moving to [CommandSen]
[1671520873.724184][48617:48619] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
[1671520874.670022][48617:48618] CHIP:DL: Indication received, conn = 0x7f1b00071230
[1671520874.670171][48617:48619] CHIP:DL: HandlePlatformSpecificBLEEvent 16389
[1671520875.266624][48617:48619] CHIP:DL: Re-trying resolve
[1671520875.268966][48617:48619] CHIP:DL: Re-trying resolve
[1671520877.549673][48617:48619] CHIP:DL: HandlePlatformSpecificBLEEvent 16387
[1671520878.901746][48617:48618] CHIP:DL: Indication received, conn = 0x7f1b00071230
[1671520878.901894][48617:48619] CHIP:DL: HandlePlatformSpecificBLEEvent 16389
[1671520878.902053][48617:48619] CHIP:EM: >>> [E:22954i M:140549461] (S) Msg RX from 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
[1671520878.902086][48617:48619] CHIP:EM: Found matching exchange: 22954i, Delegate: 0x7f1af8042008
[1671520878.902109][48617:48619] CHIP:DMG: ICR moving to [ResponseRe]
[1671520878.902166][48617:48619] CHIP:DMG: InvokeResponseMessage =
[1671520878.902180][48617:48619] CHIP:DMG: {
[1671520878.902192][48617:48619] CHIP:DMG: 	suppressResponse = false,
[1671520878.902205][48617:48619] CHIP:DMG: 	InvokeResponseIBs =
[1671520878.902248][48617:48619] CHIP:DMG: 	[
[1671520878.902267][48617:48619] CHIP:DMG: 		InvokeResponseIB =
[1671520878.902295][48617:48619] CHIP:DMG: 		{
[1671520878.902305][48617:48619] CHIP:DMG: 			CommandDataIB =
[1671520878.902317][48617:48619] CHIP:DMG: 			{
[1671520878.902327][48617:48619] CHIP:DMG: 				CommandPathIB =
[1671520878.902347][48617:48619] CHIP:DMG: 				{
[1671520878.902370][48617:48619] CHIP:DMG: 					EndpointId = 0x0,
[1671520878.902393][48617:48619] CHIP:DMG: 					ClusterId = 0x31,
[1671520878.902414][48617:48619] CHIP:DMG: 					CommandId = 0x1,
[1671520878.902435][48617:48619] CHIP:DMG: 				},
[1671520878.902460][48617:48619] CHIP:DMG:
[1671520878.902492][48617:48619] CHIP:DMG: 				CommandFields =
[1671520878.902515][48617:48619] CHIP:DMG: 				{
[1671520878.902532][48617:48619] CHIP:DMG: 					0x0 = 0,
[1671520878.902546][48617:48619] CHIP:DMG: 					0x3 = [
[1671520878.902580][48617:48619] CHIP:DMG:
[1671520878.902597][48617:48619] CHIP:DMG: 						{
[1671520878.902614][48617:48619] CHIP:DMG: 							0x0 = 4660,
[1671520878.902633][48617:48619] CHIP:DMG: 							0x1 =<PHONE_NUMBER>533634594,
[1671520878.902655][48617:48619] CHIP:DMG: 							0x2 = "OpenThreadDemo" (14 chars),
[1671520878.902673][48617:48619] CHIP:DMG: 							0x3 = 15,
[1671520878.902691][48617:48619] CHIP:DMG: 							0x4 = 4,
[1671520878.902716][48617:48619] CHIP:DMG: 							0x5 = [
[1671520878.902747][48617:48619] CHIP:DMG: 									0x5a, 0x01, 0x97, 0xdd, 0xb8, 0xf8, 0x5d, 0xd6,
[1671520878.902776][48617:48619] CHIP:DMG: 							] (8 bytes)
[1671520878.902808][48617:48619] CHIP:DMG: 							0x6 = -44,
[1671520878.902827][48617:48619] CHIP:DMG: 							0x7 = 200,
[1671520878.902845][48617:48619] CHIP:DMG: 						},
[1671520878.902860][48617:48619] CHIP:DMG: 					],
[1671520878.902875][48617:48619] CHIP:DMG: 				},
[1671520878.902888][48617:48619] CHIP:DMG: 			},
[1671520878.902925][48617:48619] CHIP:DMG:
[1671520878.902938][48617:48619] CHIP:DMG: 		},
[1671520878.902967][48617:48619] CHIP:DMG:
[1671520878.902978][48617:48619] CHIP:DMG: 	],
[1671520878.903016][48617:48619] CHIP:DMG:
[1671520878.903030][48617:48619] CHIP:DMG: 	InteractionModelRevision = 1
[1671520878.903045][48617:48619] CHIP:DMG: },
[1671520878.903142][48617:48619] CHIP:DMG: Received Command Response Data, Endpoint=0 Cluster=0x0000_0031 Command=0x0000_0001
[1671520878.903183][48617:48619] CHIP:TOO: Endpoint: 0 Cluster: 0x0000_0031 Command 0x0000_0001
[1671520878.903244][48617:48619] CHIP:TOO:   ScanNetworksResponse: {
[1671520878.903269][48617:48619] CHIP:TOO:     networkingStatus: 0
[1671520878.903305][48617:48619] CHIP:TOO:     threadScanResults: 1 entries
[1671520878.903364][48617:48619] CHIP:TOO:       [1]: {
[1671520878.903381][48617:48619] CHIP:TOO:         PanId: 4660
[1671520878.903399][48617:48619] CHIP:TOO:         ExtendedPanId:<PHONE_NUMBER>533634594
[1671520878.903418][48617:48619] CHIP:TOO:         NetworkName: OpenThreadDemo
[1671520878.903437][48617:48619] CHIP:TOO:         Channel: 15
[1671520878.903454][48617:48619] CHIP:TOO:         Version: 4
[1671520878.903479][48617:48619] CHIP:TOO:         ExtendedAddress: 5A0197DDB8F85DD6
[1671520878.903501][48617:48619] CHIP:TOO:         Rssi: -44
[1671520878.903521][48617:48619] CHIP:TOO:         Lqi: 200
[1671520878.903537][48617:48619] CHIP:TOO:        }
[1671520878.903557][48617:48619] CHIP:TOO:    }

nRF device log:
D: 56497 [DMG]Received command for Endpoint=0 Cluster=0x0000_0031 Command=0x0000_0000
D: 56508 [DMG]Decreasing reference count for CommandHandler, remaining 1
D: 56516 [DL]OpenThread State Changed (Flags: 0x01009009)
D: 56521 [DL]   Network Name: OpenThread
D: 56524 [DL]   PAN Id: 0x0783
D: 56527 [DL]   Extended PAN Id: 0xDEAD00BEEF00CAFE
D: 56532 [DL]   Channel: 11
D: 56534 [DL]   Mesh Prefix: fdde:ad00:beef::/64
D: 56539 [DL]   Thread Unicast Addresses:
D: 56542 [DL]        fe80::d02e:59ee:58c:6708/64 valid preferred
D: 57539 [DL]Sending indication for CHIPoBLE TX characteristic (ConnId 00, len 3)
D: 57596 [DL]Indication for CHIPoBLE TX characteristic done (ConnId 0x00, result 0x00)
I: 57949 [DL]Thread Network: OpenThreadDemo Panid 0x1234 Channel 15 RSSI -44 LQI 200 Version 4                                           D: 60251 [DL]Write request received for CHIPoBLE RX characteristic (ConnId 0x00)
D: 61387 [DMG]Command handler moving to [ Preparing]
D: 61392 [DMG]Command handler moving to [AddingComm]
D: 61396 [DMG]Command handler moving to [AddedComma]
D: 61401 [DMG]Decreasing reference count for CommandHandler, remaining 0
I: 61408 [EM]<<< [E:22954r M:140549461] (S) Msg TX to 0:FFFFFFFB00000000 [0000] --- Type 0001:09 (IM:InvokeCommandResponse)
I: 61419 [IN](S) Sending msg 140549461 on secure session with LSID: 37056

@kkasperczyk-no Note that we exercised this path many times and this issue was reported only once. I was hoping that the error reason code would provide an immediate hint.


Documentation on delta for GoldSrc demo

Great work on this.
I am trying to write my own demo writer but now I am working through delta. I hope you won't mind writing documentation on it since apparently you are the best at writing docs for GoldSrc demo as of now.
Regardless, I am still plowing through it by reading your delta decoding snippet along with this and this.

Sorry for the delayed reply! Thanks for the kind words. ❤ I'm really glad you've found the documentation helpful.
Unfortunately I have to admit that the fundamentals behind delta compression or even the bit packing/unpacking underlying it are still pretty opaque to me. I adapted hlviewer's implementation, mostly just to get something working with fp-ts ADTs. I think that project is much more readable as a reference for the decoding side:

https://github.com/skyrim/hlviewer.js/blob/master/src/Replay/readDelta.ts
https://github.com/cgdangelo/talent/blob/main/libraries/parser-goldsrc/src/delta.ts

I'll take a stab at generalizing what I do know (or what I think I know, at least 😄), but I've only had to decode them relying on the hlviewer implementation. Encoding from within a client or just trying to write the structures to file might be a little more nuanced.

Delta compression in GoldSrc

Delta compression roughly encompasses:

Serialization / compression strategy for representing a bunch of key-value pairs as a series of bits.
Communication protocol between client and server.
Extensible system for defining custom data structures? Mods and stuff.

Delta encoding

A delta encoder is a data structure with a name, list of fields, and optional transformations (or possible side effects) to be performed while encoding.

Individual delta encoders look like they're defined in <mod>/delta.lst, along with their fields.
Not 100% sure on what the header implies:
// none == no conditional encode routine
// gamedll routine_name : before transmitting data, invoke the named function from the game .dll to reset fields as needed
// clientdll routine_name : same as above, except the routine is called via the client.dll

My guess is that a client would need these to know how to encode the deltas.

Each field has:

Name: human-friendly identifier.
Data type flags (DT_*): describes the type of the value.
Bitsize: total number of bits needed for field value?
Default value maybe? Not sure on the last value.

Delta decoding

Delta decoding is performed by clients to read the structured delta data from a server.
Deltas are decoded in response to specific SVC_* messages from server.

Client/server communication
Big guesses to follow here...
1. Server loads delta encoders from <mod>/delta.lst.

Presumably the server has to read this file to know how to encode.

2. Client connects to server.

Client joins a server.

3. Server sends SVC_DELTADESCRIPTION messages.

This provides a definition of all the necessary delta structures to clients.
Shortly after connect, clients get a SVC_DELTADESCRIPTION message for each of the <mod>/delta.lst deltas.
Clients parse the message: https://github.com/cgdangelo/talent/blob/main/libraries/parser-goldsrc/docs/demo-structure.md#svc_deltadescription-14.

The message contains a delta name, and each field's metadata represented as a list of individual delta_description_t deltas.

Client stores the delta description so it can perform a lookup by delta name later when other SVC_* messages are received and will decode them according to the metadata in the description.

4. Server sends SVC_* messages containing specific deltas.

Some SVC_* messages can contain 1 or more delta structures.
Client reads these as they come in and updates its local game state.
AlliedModders wiki has some extra context about when events are sent: https://wiki.alliedmods.net/Half-Life_1_Engine_Messages.

Message
When

SVC_CLIENTDATA
Every frame. Has client data, weapon data from the previous frame.
Message structure: SVC_CLIENTDATA.

SVC_EVENT
When some specific game events happen; can be queued / dropped.
Message structure: SVC_EVENT.

SVC_EVENT_RELIABLE
When some specific game events happen, but can't be queued / dropped.
Message structure: SVC_EVENT_RELIABLE.

SVC_SPAWNBASELINE
When entity spawns for the first time?
Message structure: SVC_SPAWNBASELINE.

SVC_PACKETENTITIES
Initial entity state?
Message structure: SVC_PACKETENTITIES.

SVC_DELTAPACKETENTITIES
Every frame? Same as SVC_PACKETENTITIES but this compares to a previous frame somehow.
Message structure: SVC_DELTAPACKETENTITIES.

"Reliable" terminology harkens back to Quake netcode stuff I believe: https://fabiensanglard.net/quakeSource/quakeSourceNetWork.php.
Compression algorithm
Bitpacking
There is bitwise magic afoot here, so I've never had a great understanding about this.
hlviewer is an excellent reference: https://github.com/skyrim/hlviewer.js/blob/master/src/BitReader.ts#L10-L48.
Roughly I believe it works like:

You have x amount of bits in a byte.
Using some mask value you can read n number of those bits to read a value.
You have x - n bits left in the byte to store more data.

If a message is finished writing, usually it will fill up to the next byte boundary.
Reading a delta

https://github.com/skyrim/hlviewer.js/blob/master/src/Replay/readDelta.ts#L5-L88

Hey, thanks for the detailed reply. Since then I have found some (enough) details to understand the delta. Good enough to implement my own, and also a delta writer.
https://github.com/khanghugo/demosuperimpose-goldsrc/blob/master/src/netmsg_doer/utils.rs


Custom matchers

Related to #5
Allow for user-defined matching of mocked arguments throw user-defined comparisons

Might make sense to allow matchers for single arguments as well as for entire argument lists


youtube-dl updates files with --no-overwrites and --xattrs being set

Checklist

[x] I've verified that I'm running youtube-dl version 2019.09.01
[x] I've checked that all provided URLs are alive and playable in a browser
[x] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar bug reports including closed ones
[x] I've read bugs section in FAQ

Verbose log
➔ grep -- -- ~/.config/youtube-dl/config
--xattrs
--xattr-set-filesize
➔ youtube-dl https://www.youtube.com/playlist?list=PLRg6cN0RqKNomUbKTHw1ITXLT7pPQ9GX7 --no-overwrites
[youtube:playlist] PLRg6cN0RqKNomUbKTHw1ITXLT7pPQ9GX7: Downloading webpage
[download] Downloading playlist: The Zen of Reffing Roller Derby
[youtube:playlist] playlist The Zen of Reffing Roller Derby: Downloading 35 videos
[download] Downloading video 1 of 35
[youtube] 241NQYHZSsc: Downloading webpage
[youtube] 241NQYHZSsc: Downloading video info webpage
[youtube] 241NQYHZSsc: Downloading MPD manifest
[download] The Zen of Reffing Roller Derby - Lesson #1 - Duties, skills, and ethics-241NQYHZSsc.webm has already been downloaded and merged
[metadata] Writing metadata to file's xattrs
[download] Downloading video 2 of 35
[youtube] 8Lcl4pL-mJ4: Downloading webpage
[youtube] 8Lcl4pL-mJ4: Downloading video info webpage
[youtube] 8Lcl4pL-mJ4: Downloading MPD manifest
[download] The Zen of Reffing Roller Derby - Lesson #2 - Whistles-8Lcl4pL-mJ4.webm has already been downloaded and merged
[metadata] Writing metadata to file's xattrs
[download] Downloading video 3 of 35

Description
Having  --no-overwrites present I expect no existing file being updated. However, seems --xattrs makes it still update file. This is unexpected feature.
I'm resuming broken playlist download, at item 19, yet it still updates the preceding files as seen from the log above.

try using --no-overwrites --no-post-overwrites


Laravel 10.25.1 Shift

This pull request includes updates for the recent minor version release of Laravel as well as updates to your package dependencies. Feel free to commit any additional changes to the shift-ci-v10.25.1 branch.
Before merging, you need to:

Checkout the shift-ci-v10.25.1 branch
Review all pull request comments for additional changes
Run composer update
Thoroughly test your application (no tests?, no CI?)

:x: Shift was unable to run composer update. Please be sure to run composer update before merging to ensure your dependency changes are fully compatible and reflected in your composer.lock file.