Set up working group to further develop the governance document

Please also update manuals page :)

The governance is being drafted here: https://github.com/coderefinery/governance-charter
Follow-up issue to then update the manuals: https://github.com/coderefinery/manuals/issues/275


Optimization bailouts

I get the following warning:
Warning: .../app.module.ts depends on 'ngx-barcode6'. CommonJS or AMD dependencies can cause optimization bailouts.
For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies

Are there really any optimization bailouts?

I have the same issue, except I get errors and I can't run the application. Can someone please provide an insight why this might be happening

Please remove the "node_modules" directory, the package-lock.json file and do the "npm install" once more.
What errors do you get?


WinAppDriver Word Doc Automation

Hi,
I am trying the validate the contents of the Word Document through Appium WinAppDriver generated by the Desktop Application.
How can I do that without opening a blank Word doc?
I am confused about how to create a session for the already opened Word Document. Can anyone please help?
Thanks

Just checking I've understood correctly: you want to attach a WinAppDriver session to a Word document that is already open, and verify that it contains a particular string? I've done something like this before, here's some Python that should do the trick assuming you know the document title ahead of time:
from appium import webdriver
from selenium.webdriver.common.by import By

winappdriver_url = 'http://<IP_ADDRESS>:4723/wd/hub'
window_locator = (By.NAME, "Super Secret Document.docx - Word")
text_to_find = "foobar"

desktop_driver = webdriver.Remote(
    command_executor=winappdriver_url,
    desired_capabilities={
        "app": "Root",
        'platformName': 'Windows',
        'deviceName': 'WINDOWSPC'
    }
)

word_window = desktop_driver.find_element(*window_locator)
app_id = hex(int(word_window.get_attribute('NativeWindowHandle')))

word_driver = webdriver.Remote(
    command_executor=winappdriver_url,
    desired_capabilities={
        'platformName': 'Windows',
        'deviceName': 'WINDOWSPC',
        'appTopLevelWindow': app_id
    }
)

main_document = word_driver.find_element(By.TAG_NAME, 'Document')
sections = main_document.find_elements(By.TAG_NAME, 'Edit')

for section in sections:
    if text_to_find in section.text:
        # We found it!
        pass

There are easier and more reliable ways of programmatically validating the contents of a Word doc, though.

If you don't know the document title ahead of time, you could loop through every window on the desktop and find the first one that belongs to winword.exe, and then attach to that:
import os

import win32api
import win32con
import win32process
from appium import webdriver
from selenium.webdriver.common.by import By

def get_desktop_driver():
    return webdriver.Remote(
        command_executor=winappdriver_url,
        desired_capabilities={
            'app': 'Root',
            'platformName': 'Windows',
            'deviceName': 'WINDOWSPC'
        }
    )

def get_word_driver():
    desktop_driver = get_desktop_driver()
    windows = desktop_driver.find_elements_by_tag_name('Window')

    for window in windows:
        hwnd = int(window.get_attribute('NativeWindowHandle'))
        pid = win32process.GetWindowThreadProcessId(hwnd)
        handle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, pid[1])
        proc_name = win32process.GetModuleFileNameEx(handle, 0)

        if os.path.split(proc_name)[-1].lower() == 'winword.exe':
            return webdriver.Remote(
                command_executor=winappdriver_url,
                desired_capabilities={
                    'platformName': 'Windows',
                    'deviceName': 'WINDOWSPC',
                    'appTopLevelWindow': hex(hwnd)
                }
            )

    raise ProcessLookupError('Oh dear.')

winappdriver_url = 'http://<IP_ADDRESS>:4723/wd/hub'
text_to_find = 'foobar'

word_driver = get_word_driver()

main_document = word_driver.find_element(By.TAG_NAME, 'Document')
sections = main_document.find_elements(By.TAG_NAME, 'Edit')

for section in sections:
    if text_to_find in section.text:
        # We found it!
        pass

Thanks, @trashbat . My framework is in C#, I will definitely take a look at it and let you know.

@rajivvemula you can use next method #534 (comment)
Call as:

by process name CreateSessionForAlreadyRunningApp("WINWORD.exe")
by document title CreateSessionForAlreadyRunningApp("title")

@rajivvemula you can use next method #534 (comment)
Call as:

by process name CreateSessionForAlreadyRunningApp("WINWORD.exe")
by document title CreateSessionForAlreadyRunningApp("title")

It worked. Thanks so much. Closing the comment.

*word_window = desktop_driver.find_element(window_locator)
app_id = hex(int(word_window.get_attribute('NativeWindowHandle')))
Getting error at word_window , we are getting dict but not webdriver object. So the error is word_window dict has no get attribute .

winappdriver_url = 'http://<IP_ADDRESS>:4723' window_locator = (By.NAME, 'Test.docx - Compatibility Mode - Word')
desktop_driver = webdriver.Remote( command_executor=winappdriver_url, desired_capabilities={ 'app': 'Root', 'platformName': 'Windows', 'deviceName': 'WINDOWSPC' } )
*word_window = desktop_driver.find_element(window_locator) app_id = hex(int(word_window.get_attribute('NativeWindowHandle')))
Getting error at word_window , we are getting dict but not webdriver object. So the error is word_window dict has no get attribute .
Traceback (most recent call last): File "C:\Users\C281379\PycharmProjects\pythonProject\structure_testing.py", line 21, in app_top_level_handle = word_window.get_attribute("NativeWindowHandle") AttributeError: 'dict' object has no attribute 'get_attribute'

bug in Selenium 4.0, try use pip install appium-python-client==1.3.0 to update selenium in 3.14.1

Hi, I am new to python and winappdriver. I am trying to automate Word and outlook using winappdriver. as of now I am not able to start word or Outlook. But I am able to run the calculator app which works fine.
I am completely clueless here. can somebody help me? I am working on a project for my company. we have an Add-in which works within Word and Outlook and I have no idea how to automate that.
Or if someone has any reference documents or courses which I could refer to, It would be a great help to me.
apologies for being a newbie here :)


[docs] Rename domain to mui.com

Questions:

Should we update the netlify instance to publish on the new domain?
Are the _redirects update correct?

Other things to do:

Publish the previous versions to v[version].mui.com?
Update the medium blog post links to point to https://mui.com?
Run a SEO crawler once done and fix all the issues coming
else?

_redirects
## material-ui-x
## Unlike the store that expect to be hosted under a subfolder,
## material-ui-x is configured to be hosted at the root.
/api/*/ https://docs-v5--material-ui-x.netlify.app/api/:splat/ 200
/:lang/api/*/ https://docs-v5--material-ui-x.netlify.app/:lang/api/:splat/ 200
/components/* https://docs-v5--material-ui-x.netlify.app/components/:splat 200
/:lang/components/* https://docs-v5--material-ui-x.netlify.app/:lang/components/:splat 200
/_next/* https://docs-v5--material-ui-x.netlify.app/_next/:splat 200
/static/x/* https://docs-v5--material-ui-x.netlify.app/static/x/:splat 200

These look suspicious. Should we change them before going live?

Olivier has to say something about the redirects. I'm not familiar with most of these.
Though I can revert the changes to translated markdown files
$ git checkout master -- '*-de.md'
$ git checkout master -- '*-es.md'
# etc.

These look suspicious. Should we change them before going live?

These redirects are for the v5 docs of the DataGrid. Once we release v5.0.0-beta.0 this week, it will have the same look of the core v5 docs. Previously, we were pointing to https://next--material-ui-x.netlify.app/, but this is our development branch. Then, I created docs-v5 which will host the deployed docs. This new branch was based on master, so it still has the old look. See https://github.com/mui-org/material-ui/pull/28263

I could find this page on the matter in the search console: https://search.google.com/search-console/settings/change-address?resource_id=sc-domain%3Amaterial-ui.com

Should we also add a https://material-ui.com/* https://mui.com/:splat 301! redirection?

I've already added it https://github.com/mui-org/material-ui/pull/28332/files#diff-7a0cbac74402caf0e99ba338a9e7c42684580a1f85e149110c3c2ca6e38055afR14

@oliviertassinari should we also add the following redirects:
https://v0.material-ui.com/* https://v0.mui.com/:splat 301!
https://v1.material-ui.com/* https://v1.mui.com/:splat 301!
https://v3.material-ui.com/* https://v3.mui.com/:splat 301!
https://v4.material-ui.com/* https://v4.mui.com/:splat 301!

should we also add the following redirects:

@mnajdova Yeah, makes sense 👍


Add changelog.md to extra-source-files

Currently, the changelog isn't bundled with the source distribution, which prevents the changelog from being displayed on Hackage. This adds changelog.md to extra-source-files to correct this.

Thanks!


Automate RTD Build

The RTD build doesn't seem to run automatically. I have to go in there and hit the button every time. I don't like having to fiddle with it every release, so it would be worth digging into what's going on.
I thought RTD used a webhook - is that true? Is that even configured? Or maybe there's a GitHub Action I need to look at? All things I don't know, but things I'd like to sort out someday.

I believe I fixed this! The integration was completely missing. I did the clicking and RTD looks OK with it! I did this after releasing 9.0.3 so I haven't proven that it works, but I feel OK calling this done until it's broken next time around.


Model 704 WMaxLimPct and WSetPct

WMaxLimPct is used to limit active power generation of DERs in general (PV and Battery inverters) - usually on request of the distribution network operator.
WSetPct is used to set active power level for DERs that are able to follow a setpoint (e.g. Battery systems) - usually on request of a local energy management system.
For Battery systems that support both (WMaxLimPct and WSetPct), this could lead to conflicting requirements, because, both refer to the AC output of the DER.
Did you consider a prioritization between the two?

There are a lot prioritization questions that come up across the models for active and reactive power control. In general, we have left prioritization out of the communications specification with the view that it may vary across contexts. IEEE 1547-2018 makes statements about prioritization of functions. This approach makes it possible that some decisions are device specific but the alternative of specifying them in the communications specification may not be workable. In the example you site, it seems like WMaxLimPct would limit the values that could be applied with WSetPct but I am not sure that would always be the case. In general, It is probably best for the standards and jurisdictional requirements that specify functional behavior to address these considerations. That can leave a gap in this area, however.

You mentioned in #154 that WSetPct may be negative. What is the basis if it is negative? Is it always 702-WMax?


LICENSE.txt missing from sdist

The LICENSE.txt file in the repository is missing from the PyPi source distribution (sdist). You likely want a MANIFEST.in to do this. That will allow me to package the relevant license in the FreeBSD Ports I've created for slackclient.
While you're there, you may want to add Copyright details to the LICENSE.txt head

Thanks for packaging this in ports, and apologies on the delayed reply! I'm doing some small updates and will push to pypi with a proper license.txt.

My pleasure Ryan, thanks for the ack

Ok, only a year and a bit late. I just published v1.0.1 to pypi with the LICENSE file included.
https://pypi.python.org/pypi?:action=display&name=slackclient&version=1.0.1
Sorry for the delay! Thanks again for getting this into Ports


Ability to specify ServiceAccount for odo dev

/kind feature
Which functionality do you think we should add?
When running the odo dev command, I would like to be able to specify the Kubernetes ServiceAccount the pod should run as.
Why is this needed?
Currently, if you use odo dev the pod will start as the default service account. Some workloads running on Kubernetes need to run as a specific service account in order to have the proper permissions to work properly. One common use case is a Kubernetes Operator.

Notes from the discussion on this in the odo contributors' call:

This should ideally be addressed at Devfile API level such that a container component has a serviceAccount attribute.
In absence of 1, odo can use annotations field in container component so that a service account specified in this field is used by odo to set proper information inside the Pod created for such component.

To be done on the Devfile library side. See https://github.com/devfile/api/issues/920#issuecomment-1244059075

TODO: Research if there is a library for JSON merge

https://github.com/devfile/api/blob/fe7c10eaa530b12b19cfb0e22e221e753391304c/pkg/attributes/attributes.go#L14

I've opened https://github.com/devfile/library/pull/155 for container-overrides part.

TODO (as of Nov-23, 2022)

[ ] Continue work on container-overrides PR above: https://github.com/devfile/library/pull/155
[ ] PR for supporting pod-overrides

This issue is slightly blocked on https://github.com/devfile/api/issues/1002.
We added the support for container-overrides and pod-overrides in devfile/library. But once we updated odo with the latest devfile/library, we discovered some issues related to https://github.com/devfile/api/issues/1002#issuecomment-1378302530. So for now, until the issue in question is fixed, we'll be slightly blocked.
I'm going to research some alternatives.

/status blocked


Only displays partners if translated

What's this PR do?

Does not display "Partners" in the info bar if the partner term has not been translated
Minor fix to global get lang logic

How should this be reviewed?
First visit a campaign page that has a partner term set.

Then translate this campaign, but NOT the partner term. Does it show in the info bar still?

Also because I changed the global get lang function, make sure the site routing still seems ok.
Relevant tickets
Fixes #6379

@angaither seems to work with the way you suggested, removed the global change and also updated the default param to be en-global

👍


Add confirmation to commands. Wait for user's input is not the default value and needs to be selected

Document states "Leave the default value of Post-execution state as Wait for user's input."
Wait for user's input is not the default value and needs to be manually selected

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 7f9ba8c8-d002-9cda-a28f-30effa9bbc7e
Version Independent ID: 2e04653f-ae0b-c52d-e899-c2a1374af6dd
Content: How-to: Develop Custom Commands applications - Speech service - Azure Cognitive Services
Content Source: articles/cognitive-services/Speech-Service/how-to-develop-custom-commands-application.md
Service: cognitive-services
Sub-service: speech-service
GitHub Login: @trevorbye
Microsoft Alias: trbye

@gbelenky Thanks for spotting this. A PR is submitted to update the step with the correct text to change the default value to wait for user's input. @trevorbye FYI

@gbelenky The changes are now merged and should be available in the documentation in the next 24 hours. We will now proceed to close this thread. If there are further questions regarding this matter, please tag @RohitMungi-MSFT in your reply.


Clear timeout when socket is connected

Right now the "connection" timer is cleared when the response event is emitted.
There are cases where the response event is not emitted, for example if no data is received from the socket after connection.
When this happens timed-out emits a connection timeout error but technically this is not correct as the a connection has been established. Here is a test case:
'use strict';

const timeout = require('timed-out');
const http = require('http');

const server = http.createServer();

server.on('request', () => {});

server.listen(() => {
  const req = http.request({
    port: server.address().port,
    hostname: 'localhost'
  });

  timeout(req, 500);

  req.on('error', (err) => console.log(err.stack));
  req.end();
});

It prints the following errors:
Error: Connection timed out on request to localhost:50385
    at Timeout.timeoutHandler (/Users/luigi/timeout/node_modules/timed-out/index.js:10:11)
    at tryOnTimeout (timers.js:232:11)
    at Timer.listOnTimeout (timers.js:202:5)
Error: socket hang up
    at createHangUpError (_http_client.js:252:15)
    at Socket.socketCloseListener (_http_client.js:284:23)
    at emitOne (events.js:101:20)
    at Socket.emit (events.js:188:7)
    at TCP._handle.close [as _onclose] (net.js:493:12)

I wonder if it makes more sense to clear the timer when the connect event is emitted on the socket:
diff --git a/index.js b/index.js
index c3ff8b2..92c87a8 100644
--- a/index.js
+++ b/index.js
@@ -12,13 +12,16 @@ module.exports = function (req, time) {
 		req.emit('error', e);
 	}, time);

-	// Set additional timeout on socket - in case if remote
-	// server freeze after sending headers
-	req.setTimeout(time, function socketTimeoutHandler() {
-		req.abort();
-		var e = new Error('Socket timed out on request' + host);
-		e.code = 'ESOCKETTIMEDOUT';
-		req.emit('error', e);
+	req.on('socket', function assign(socket) {
+		socket.on('connect', function connect() {
+			clear();
+			socket.setTimeout(time, function socketTimeoutHandler() {
+				req.abort();
+				var e = new Error('Socket timed out on request' + host);
+				e.code = 'ESOCKETTIMEDOUT';
+				req.emit('error', e);
+			});
+		});
 	});

 	function clear() {
@@ -28,7 +31,5 @@ module.exports = function (req, time) {
 		}
 	}

-	return req
-		.on('response', clear)
-		.on('error', clear);
+	return req.on('error', clear);
 };

This makes timed-out emit a socket timeout error when the socket is connected but no data is received. The above example yields the following result:
Error: Socket timed out on request to localhost:50446
    at Socket.socketTimeoutHandler (/Users/luigi/timeout/node_modules/timed-out/index.js:20:13)
    at Socket.g (events.js:291:16)
    at emitNone (events.js:86:13)
    at Socket.emit (events.js:185:7)
    at Socket._onTimeout (net.js:334:8)
    at tryOnTimeout (timers.js:232:11)
    at Timer.listOnTimeout (timers.js:202:5)
Error: socket hang up
    at createHangUpError (_http_client.js:252:15)
    at Socket.socketCloseListener (_http_client.js:284:23)
    at emitOne (events.js:101:20)
    at Socket.emit (events.js:188:7)
    at TCP._handle.close [as _onclose] (net.js:493:12)

@lpinca yes, this makes perfect sense. Can you do a PR?
Only question is – is time in socket.setTimeout should be decreased by time, that socket event take?

I'm not sure, as I see it, it should works like this:

Wait for the connection event and if we don't get it in time emit the connection timeout error.
Once the connection event is fired set the timeout on the socket.

There could indeed be a case where the connection is opened very late and then there will be no more activity on the socket. In this condition the error event will be fire after ~ 2 * time, but I think the same can also happens with the current implementation for example when the response event is fired very late then a chunk is sent and then there will be no more activity on the socket.
Anyway I think this is a breaking change because right now (correct me if I'm wrong) a request is aborted for example when streaming something that takes longer than time and a response is not sent by that time. With this change this is no longer true. Everything is fine as long as there activity on the socket and the connection has been established.

I'll send a PR later and we continue the discussion there, I guess.


Label assertion fails when child is a Component

We have tests covering the case where an element's label is a deeply nested text node. For example:
it('does not warn if there are deeply nested text node children', () => {
  doNotExpectWarning(assertions.props.onClick.NO_LABEL.msg, () => {

foo
;
  });
});

However, if an element's label is a text node nested inside a Component, the label test fails. For example:
it('does not warn if there are deeply nested text node children inside of a component', () => {
  var Foo = React.createClass({
    render: function() {
      return (

          foo

      );
    }
  });

  doNotExpectWarning(assertions.props.onClick.NO_LABEL.msg, () => {

      <Foo/>

;
  });
});

Another, more simplified example that also fails:
it('warns if a Component has no label of any sort', () => {
  var Foo = React.createClass({
    render: function() {
      return (

      );
    }
  });

  expectWarning(assertions.props.onClick.NO_LABEL.msg, () => {
    <Foo onClick={k}/>;
  });
});

Looked into this problem yesterday. The short of it is I don't think we can rely on virtual DOM when evaluating labels as it's very likely the text of an element is nested inside a Component whose subtree isn't accessible until render.

can just skip composite components? we'll capture all the createElements of the normal components and might still get a way with it? I'm not sure, I'm in a training right now and can't think it all the way through.

I'm fairly sure you're right, but I think it might help to try to explain what's going on to a Rubber Duck.

    foo

;
React.createElement("div", {onClick: k},
  React.createElement("span", null,
    React.createElement("span", null, "foo")
  )
);

react-a11y hooks into React.createElement(element, props, children). From this perspective the div call can walk the children down until it finds a child that is a string. This works great.

  <Foo/>

;
React.createElement("div", {role: "gridcell", onClick: k},
  React.createElement(Foo, null)
)

Now we find an opaque component. At the time this is called Foo hasn't called its render so there's no way to know what might be inside of it. If I understand correctly Foo's render() isn't going to get called until this div is about to be mounted into the DOM.
We can confirm this from the console:
Foo = React.createClass({ render: function() { console.log('RENDER'); return false} })
React.createElement("div", {role: "gridcell"},
  React.createElement(Foo, null)
);

If Foo had rendered you would see RENDER in the console. So it's children definitely don't exist at this time.

@AsaAyers yes, you've got it. Those were my findings yesterday as well. Glad we're on the same page.
One idea I had to address this problem was to detect if an element's child is a Component and, if so, defer the evaluation of the label until it's been mounted. My initial thought was this would be easily achievable (famous last words) using the ref prop. However, I wasn't sure if that was a viable solution considering the element or Component might already have a ref defined.

@ryanflorence not sure how we can skip evaluation. Consider the following simple case (this is from our codebase at Twitter):

  <Tweet/>

;

When react-a11y evaluates the label for  it'll throw an error because it cannot traverse into  until Tweet has been rendered.

Also React 0.13 introduced using callbacks for refs. It's going to get really ugly trying to hook into that.
<Foo ref={ (foo) => this.foo = foo} />
Everything is evaluated deepest call first, so I can see where you might use a ref if Foo had one and it's a string, but it doesn't seem like you can add it very easily. You'd have to send down a new set of props to add the ref correctly.

Just like linters can't catch 100% of things, I don't think react-a11y needs to catch 100% of the problems. This might just be an edge case that isn't worth adding the needed complexity to solve.
If you know <Tweet /> ignores its children and you're sure it will have text you can make it pass:

  <Tweet>Dummy Text</Tweet>

;

@AsaAyers I agree with you; we don't need to catch 100% of the problems. However, when I incorporate react-a11y into our react-based Twitter client I end up getting a lot of label errors for the previously mentioned reason. I think this pattern of a component as a first-level descendant of an element could be a very common use case, so I'd be interested in attempting to solve this.
While I can make the change you suggested to make a test pass, it won't solve the problem for us outside the scope of tests.

Why is the onClick handler on the
 and not part of the component? You could push that responsibility down and have <Tweet /> generate the DOM node with the click handler.

  <Tweet onClick={k} />

Good question. The timeline is it's own interactive component, with responsibilities and default behaviors independent of its content (Tweets). As a composite control, each of the items in the timeline is labeled by it's content (Tweets).
Visually impaired users need to be able to perceive the timeline as an interactive control; for that reason we use the ARIA grid roles to describe it; and make it interactive by applying a tabindex and onClick listener to each cell.
I hope that clears things up.


Add Python >=3.8 lower limit to satpy 0.37.0 and 0.37.1 build 0

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Satpy dropped Python 3.7 support back in May but we forgot to update the limit on the Python dependency on the conda-forge package. This patches that. I could understand not merging this if conda-forge's official position is to drop Python 3.7 support.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

$ python show_diff.py
Downloading: https://conda.anaconda.org/conda-forge/noarch/repodata_from_packages.json.bz2
Downloading: https://conda.anaconda.org/conda-forge/noarch/repodata.json.bz2
noarch::satpy-0.37.0-pyhd8ed1ab_0.tar.bz2
-    "python >=3.7",
+    "python >=3.8",
noarch::satpy-0.37.1-pyhd8ed1ab_0.tar.bz2
-    "python >=3.7",
+    "python >=3.8",

Closes https://github.com/pytroll/satpy/issues/2233


AbstractSingleton be gone!

Removed AbstractSingleton from the import and added the template line
Updated requirements.txt

thank you sm, missed that


npm run dev fails

I get the following terminal output:
npm ERR! Darwin 14.5.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "dev"
npm ERR! node v5.10.1
npm ERR! npm  v3.8.3
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>dev: `webpack-dev-server --inline --hot --no-info`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>dev script 'webpack-dev-server --inline --hot --no-info'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the vue-hackernews package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     webpack-dev-server --inline --hot --no-info
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs vue-hackernews
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls vue-hackernews
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Volumes/Data/Work/Learning/2016-04 - Vue/build/hacker-news/npm-debug.log

Sorry - I fixed this - was my own fault.


Added Stack using Queue program in Cpp

Have you read the Contributing Guidelines on Pull Requests?
Yes
Description
Added Stack using Queue program in Cpp
Checklist

[x] I've read the contribution guidelines.
[x] I've checked the issue list before deciding what to submit.
[x] I've edited the README.md and link to my code.

Related Issues or Pull Requests
(Issue #1715 is solved here)

This is for DWOC. Thankyou!

Hi @rahulk32
Are you still working on it?

Hi @rahulk32
Are you still working on it?

Closing this because of no updates.

Closing this because of no updates.


Add API Cartola FC

The Cartola FC API serves to check the partial points of your time.

Shouldn't it be "team" instead of "time"?


Testing RC2: Exception -> IPService.php

I'm testing RC2 from develop for upgrading sites. I found an issue with a package. I will report it here - if the package-developer should fix this, please close the issue.
Site is built in 8.1. After updating to develop version RC2 yesterday i had some error-messages. One was with the form package 'formidable' from marketplace. I couldn't submit the form (ajax submission). In the protocol section of concrete5 i saw this error:
Exception Occurred: /Applications/MAMP/htdocs/xyz/concrete/src/Permission/IPService.php:84 Argument 1 passed to Concrete\Core\Permission\IPService::__construct() must be an instance of Concrete\Core\Config\Repository\Repository, none given, called in /Applications/MAMP/htdocs/xyz/packages/formidable_lite/controllers/Dialog/Formidable.php on line 114 (0)
Worked without issues in 8.1

The IPService needs to be instantiated with the DI container so that all dependencies are correctly passed to the class constructor. So either Core::make('helper/validation/ip') or Core::make(\Concrete\Core\Permission\IPService::class). Calling the constructor without arguments directly results in the error above. However, it was a valid way to get the service in 8.1 and earlier. This should probably be noted in the changelog as a backward incompatibility.

@jaromirdalecky is right – this is something that the formidable developer will have to update. Fortunately it should be an easy fix to implement in a way that will work for older packages and this new version.

Thanks for clarification! Opened a support ticket for the package.


ci: remove unused workflow file

I am not quite familiar with CI config, could you please take a look ? @GuangmingLuo

Why this file is not used? release-check.yml

The project template is here: https://github.com/cloudwego/.github/tree/main/.github/workflows

OK，去了也行，也不影响发版


Improve docker deployment

The docker image is rough. It works, but it could be nicer.
For example, the need to include /repo seems unnecessary.

Closed in #13


Specifying --port or metro.config.js 's server.port bootstraps the metro server twice

Description
I am having a weird issue where if npx react-native start --port 8090 or do this in the metro.config.js file:
const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');

/**
 * Metro configuration
 * https://facebook.github.io/metro/docs/configuration
 *
 * @type {import('metro-config').MetroConfig}
 */
const config = {
  server: {
    port: 8091,
  },
};

module.exports = mergeConfig(getDefaultConfig(__dirname), config);

when I run the android (haven't checked on ios) build, another window opens in my terminal. The first and second terminal run in parallel and if ports are coincidental, one will crash due to EADDR IN USE.
React Native Version
0.72.5
Output of npx react-native info
System:
OS: macOS 13.5.2
CPU: (10) arm64 Apple M1 Pro
Memory: 412.50 MB / 16.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 18.18.0
path: ~/.nvm/versions/node/v18.18.0/bin/node
Yarn:
version: 1.22.19
path: ~/.nvm/versions/node/v18.17.1/bin/yarn
npm:
version: 9.8.1
path: ~/.nvm/versions/node/v18.18.0/bin/npm
Watchman:
version: 2<IP_ADDRESS>
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.13.0
path: /Users/mad/.rvm/gems/ruby-2.7.6/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.0
- iOS 17.0
- macOS 14.0
- tvOS 17.0
- watchOS 10.0
Android SDK: Not Found
IDEs:
Android Studio: Not Found
Xcode:
version: 15.0/15A240d
path: /usr/bin/xcodebuild
Languages:
Java:
version: <IP_ADDRESS>
path: /usr/bin/javac
Ruby:
version: 2.7.6
path: /Users/mad/.rvm/rubies/ruby-2.7.6/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.72.5
wanted: 0.72.5
react-native-macos: Not Found
npmGlobalPackages:
"react-native": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: true
newArchEnabled: false
Steps to reproduce
I just installed the react-native template and did the previous steps. Try to run the metro server in another port.
Snack, screenshot, or link to a repository
https://github.com/facebook/react-native/assets/46090742/69043acb-2e91-44a0-91e0-e46e6e1cf0ab

Hi,
Thanks for reporting this issue.
It seems like this issue is actually unrelated to React Native core but related to the CLI. Please open this issue against this other repository:
https://github.com/react-native-community/cli/issues
I'll be closing this but feel free to reopen if the other repo points back to us as a issue in the core of React Native.


ToTW: Software Linting with R

This PR adds a new tip of the week blog post covering "Software Linting with R". The intent was to give the audience a wide range of considerations when it comes to thinking about R as software, using existing tools for linting, and integrating those tools into software-style workflows.
Thank you in advance for any comments and suggestions you may have!

Thank you @falquaddoomi ! The suggestions were great, and I've applied them to the content.


[DOCUMENTATION] In the initializer, why are some settings not commented out?

I just started playing with Devise for the first time today. In going through config/initializers/devise.rb, I noticed that most configuration settings are the same as the defaults provided in Devise's lib/devise.rb.[1] Many of the settings are also commented out, but there appears to be no rhyme or reason as to which ones.
As a new user, I found this very confusing: I had to dig into Devise's source code to confirm that these default values were, in fact, mirrored in the module Devise definition, and that it would be safe to comment them out. At first glance, my assumption was that any uncommented setting had to be manually configured, or else the gem would not work.
Is there a reason for this arrangement that I've somehow missed? Perhaps this was intended as a convenience for experienced users, to remind them of which settings might be more likely to require attention? In any case, that was not my initial interpretation, and getting to the bottom of this question created an unnecessary obstacle in getting started.
In the interest of facilitating adoption for new users, I'd like to suggest that, where reasonable, all default settings in the Devise initializer be commented out from the start. Thoughts?

Note 1: Some exceptions to this rule (like @@secret_key or @@mailer_sender) make sense — they should be unique for each application, so they default to nil. Others (like @@paranoid or @@allow_unconfirmed_access_for), are quite confusing — what reason is there to break the pattern established through the rest of the file?
Combined with the inconsistencies described above, these small and unpredictable exceptions make it difficult for a beginner to make reasoned inferences about how the configuration process is designed.

I've also taken a stab at editing the descriptions for each setting, partly to clarify my own understanding and partly to make it easier for new users to get their bearings. Ultimately, I'd like to submit my changes as a PR.
It's been very time-consuming, though, so before I go on and try to edit the whole thing, I thought I might submit a sneak peek of my changes here for your criticism, maybe ask for your blessing:
Now
Devise.setup do |config|
  # secret_key -----------------------------------------------------------------
  # By default, Devise generates random tokens using the `secret_key_base`
  # defined in `config/secrets.yml`. If you wish, you may define a custom
  # secret key, for use exclusively by Devise. (Use `rails secret` to generate
  # a new secret key.)
  #
  # WARNING: Changing this key will invalidate all existing authentication
  # tokens in the database (e.g., confirmation, password reset, & unlock).
  #
  # config.secret_key = nil

  # Mailer
  # ============================================================================

  # mailer & parent_mailer -----------------------------------------------------
  # The mailer class, and the one it inherits from.
  #
  # config.mailer        = 'Devise::Mailer'
  # config.parent_mailer = 'ActionMailer::Base'

  # mailer_sender --------------------------------------------------------------
  # The “from:” e-mail address to be used by Devise::Mailer. When defining a
  # custom mailer class that inherits from Devise::Mailer, this value may be
  # manually overridden (e.g., with `default from:`).
  #
  config.mailer_sender =<EMAIL_ADDRESS>
  # ORM
  # ============================================================================

  # ORM Adapter ----------------------------------------------------------------
  # Load the appropriate ORM adapter. Devise includes support for Active Record
  # and MongoID out of the box. Support for other ORMs may be available as
  # third-party gems.
  #
  require 'devise/orm/active_record'

  # Authentication
  # ============================================================================

  # authentication_keys --------------------------------------------------------
  # A list of user attributes to be required for authentication.
  #
  # Along with a password, these attributes make up the set of all request
  # parameters (e.g., form fields) which must match an existing database record
  # for authentication to proceed.
  #
  # If you wish to specify optional attributes — if, say, a `username` is
  # required but not unique for all users, and an optional `organization` could
  # be used to tell the difference — you may supply a hash of the format
  #
  #     { username: true, organization: false }
  #
  # instead.
  #
  # config.authentication_keys = [:email]

  # request_keys ---------------------------------------------------------------
  # More user attributes required for authentication.
  #
  # Whereas the attributes above are taken from the `params` hash, attributes
  # specified here are taken from the corresponding methods of Rails' built-in
  # ActionDispatch::Request object.
  #
  # (ActionDispatch::Request provides information about a given HTTP request,
  # such as the originating IP address, host, port number, cookies, MIME type,
  # etc. For more information, refer to the Rails API docs at
  # http://api.rubyonrails.org/classes/ActionDispatch/Request.html)
  #
  # For instance, when a user visits http://blog.plataformatec.com.br/,
  # ActionDispatch::Request#subdomain will return the string 'blog'. Thus,
  # users may be constrained to log in from a given subdomain (or, put another
  # way, they may be identified according to the subdomain they are expected
  # log in from) by:
  #
  #   1. defining a `subdomain` attribute on the User model (with a
  #      corresponding column in the `users` database table),
  #   2. setting this attribute to desired value, and
  #   3. specifying `[:subdomain]` below.
  #
  # As above, attributes may be made optional by passing a hash instead.
  #
  # config.request_keys = []

  # case_insensitive_keys & strip_whitespace_keys ------------------------------
  # Lists of user attributes whose string values will be normalized — either by
  # downcasing or removing leading/trailing whitespace — before being stored in
  # or retrieved from the database (e.g., to ensure that<EMAIL_ADDRESS>and
  #<EMAIL_ADDRESS>” match the same database records).
  #
  # config.case_insensitive_keys = [:email]
  # config.strip_whitespace_keys = [:email]

  # params_authenticatable & http_authenticatable ------------------------------
  # Devise uses so-called “authentication strategies” to validate login
  # attempts and other user activity. These strategies are simply classes
  # (e.g., Devise::Strategies::DatabaseAuthenticatable) that implement a common
  # API to report whether a given set of user credentials is valid.
  # (For more information, see https://insights.kyan.com/a1a6b4e2b891)
  #
  # These settings specify whether the authentication strategies used in your
  # application may read user credentials supplied in HTTP request parameters
  # (i.e., REST actions — the standard for most web applications) or HTTP Basic
  # authentication headers, respectively.
  #
  # If you wish to limit which authentication strategies may access which
  # sources of user credentials, you may supply a list of allowable strategies
  # for each setting instead, such as [:database] for DatabaseAuthenticatable.
  #
  # config.params_authenticatable = true
  # config.http_authenticatable   = false
...

Before
Devise.setup do |config|
  # The secret key used by Devise. Devise uses this key to generate
  # random tokens. Changing this key will render invalid all existing
  # confirmation, reset password and unlock tokens in the database.
  # Devise will use the `secret_key_base` as its `secret_key`
  # by default. You can change it below and use your own secret key.
  # config.secret_key = 'ee40f65921e78f4c3eb4db6447f2c7f3167a27a41fe69b878e811012b2aab72121862e67120ef51d64c00c8d34663716aa5ea7b906a40c9e25cbe5cccbce6f9b'

  # ==> Mailer Configuration
  # Configure the e-mail address which will be shown in Devise::Mailer,
  # note that it will be overwritten if you use your own mailer class
  # with default "from" parameter.
  config.mailer_sender =<EMAIL_ADDRESS>
  # Configure the class responsible to send e-mails.
  # config.mailer = 'Devise::Mailer'

  # Configure the parent class responsible to send e-mails.
  # config.parent_mailer = 'ActionMailer::Base'

  # ==> ORM configuration
  # Load and configure the ORM. Supports :active_record (default) and
  # :mongoid (bson_ext recommended) by default. Other ORMs may be
  # available as additional gems.
  require 'devise/orm/active_record'

  # ==> Configuration for any authentication mechanism
  # Configure which keys are used when authenticating a user. The default is
  # just :email. You can configure it to use [:username, :subdomain], so for
  # authenticating a user, both parameters are required. Remember that those
  # parameters are used only when authenticating and not when retrieving from
  # session. If you need permissions, you should implement that in a before filter.
  # You can also supply a hash where the value is a boolean determining whether
  # or not authentication should be aborted when the value is not present.
  # config.authentication_keys = [:email]

  # Configure parameters from the request object used for authentication. Each entry
  # given should be a request method and it will automatically be passed to the
  # find_for_authentication method and considered in your model lookup. For instance,
  # if you set :request_keys to [:subdomain], :subdomain will be used on authentication.
  # The same considerations mentioned for authentication_keys also apply to request_keys.
  # config.request_keys = []

  # Configure which authentication keys should be case-insensitive.
  # These keys will be downcased upon creating or modifying a user and when used
  # to authenticate or find a user. Default is :email.
  config.case_insensitive_keys = [:email]

  # Configure which authentication keys should have whitespace stripped.
  # These keys will have whitespace before and after removed upon creating or
  # modifying a user and when used to authenticate or find a user. Default is :email.
  config.strip_whitespace_keys = [:email]

  # Tell if authentication through request.params is enabled. True by default.
  # It can be set to an array that will enable params authentication only for the
  # given strategies, for example, `config.params_authenticatable = [:database]` will
  # enable it only for database (email + password) authentication.
  # config.params_authenticatable = true

  # Tell if authentication through HTTP Auth is enabled. False by default.
  # It can be set to an array that will enable http authentication only for the
  # given strategies, for example, `config.http_authenticatable = [:database]` will
  # enable it only for database authentication. The supported strategies are:
  # :database      = Support basic authentication with authentication key + password
  # config.http_authenticatable = false
...

The reason for having uncommented configurations in the generated is backward compatibility. If the internal defaults on device change and you have a commend value in your application, when you upgrade the gem to the new version your application automatically will use the new value without you knowing and it may break your application because it rely on the previous value.
If we generate the file with uncommented values, even that it reflect the actual default, when you upgrade devise to a version where this default changed your application will still work and you only change the configuration to the new value if you want and when you want.

That makes sense.
But why are most of the configuration values commented out then? Shouldn't they all be uncommented to begin with? (Again, I'm just trying to think in terms of what would be easiest for a first-time user to intuit.)

If it would be better to have all config values uncommented by default, I'd be happy to submit a PR.

I'm up to it, but better wait @lucasmazza since he may have more context why they are commented out.

I'm also not sure why they're commented out, but in some projects I've worked on, the developers would delete all the commented parts to keep the initializer with only the configurations needed.
I guess if we had all the settings uncommented it could look like devise needs all those values set in the initializer to work properly - which isn't true because they're configurated by default. What do you think?

I agree with you 100%, @tegon — commenting out config values is a good way to subtly communicate 1) that there are defaults in place, and 2) what those defaults are.
But speaking to @rafaelfranca's point, if the defaults change in a new version, then those commented-out values become lies, which could make for a debugging nightmare.
My understanding of semver is that anything that breaks backwards compatibility requires a major version bump. I know it's a grey area, but doesn't that include changing the initializer defaults? As such, my preference would be for:

commented-out defaults everywhere,
a major version bump when defaults change, and
maybe a cautionary note about it at the top of the initializer file.

I still prefer uncommented defaults so we can actually change defaults in minor releases.

Sounds good.
@rlue Do you want to open a pull request adding that documentation? If not, let me know so I can assign to someone else.
Thanks.

I can get started on this next week. Happy holidays!

Hey @rlue, just pinging to see if you still intend to work on this.
If you can't, just let me know so we can see if someone wants to do it.

Jesus, sorry for that epic delay! PR #5142 has been submitted to address this issue. Thanks!

No problem, thank you!


Gotify doesn't send any notification

Hey
I want to send a notification to my gotify server.
But if I click on test notification, nothing happend.
What did I do wrong?

I don't have https gotify, is it possible to send notification on http?

I found a solution on
#39
thanks!


Small cleanup of nipap_cli, removed unused variable

No change in behavior afaik.

LGTM. Thanks! :)


add_action('some_action', 'SomeClass::someStaticMethod') throws InvalidName

This code in a static method under test:
add_action('save_post', __CLASS__ . "::on_save_post", 10, 2);

Causes the following to be thrown:
 ''dirtsimple\imposer\PostModel::on_save_post'' is not a valid function name.
 at /repos/imposer/vendor/brain/monkey/src/Name/Exception/InvalidName.php:80
   #0 Brain\Monkey\Name\Exception\InvalidName::createFor (/repos/imposer/vendor/brain/monkey/src/Name/Exception/InvalidName.php:32)
   #1 Brain\Monkey\Name\Exception\InvalidName::forFunction (/repos/imposer/vendor/brain/monkey/src/Name/FunctionName.php:93)
   #2 Brain\Monkey\Name\FunctionName->parseName (/repos/imposer/vendor/brain/monkey/src/Name/FunctionName.php:39)
   #3 Brain\Monkey\Name\FunctionName->__construct (/repos/imposer/vendor/brain/monkey/src/Name/CallbackStringForm.php:132)
   #4 Brain\Monkey\Name\CallbackStringForm->parseString (/repos/imposer/vendor/brain/monkey/src/Name/CallbackStringForm.php:73)
   #5 Brain\Monkey\Name\CallbackStringForm->parseCallback (/repos/imposer/vendor/brain/monkey/src/Name/CallbackStringForm.php:39)
   #6 Brain\Monkey\Name\CallbackStringForm->__construct (/repos/imposer/vendor/brain/monkey/src/Hook/HookStorage.php:227)
   #7 Brain\Monkey\Hook\HookStorage->parseArgsToAdd (/repos/imposer/vendor/brain/monkey/src/Hook/HookStorage.php:163)
   #8 Brain\Monkey\Hook\HookStorage->pushToStorage (/repos/imposer/vendor/brain/monkey/src/Hook/HookStorage.php:58)
   #9 Brain\Monkey\Hook\HookStorage->pushToAdded (/repos/imposer/vendor/brain/monkey/inc/wp-hook-functions.php:21)
   #10 add_action (/repos/imposer/src/PostModel.php:27)
   #11 dirtsimple\imposer\PostModel::configure (/repos/imposer/specs/PostModel.spec.php:111)

The issue appears to be that CallbackStringForm->parseString doesn't think that static method string callbacks such as 'dirtsimple\imposer\PostModel::on_save_post' are valid Wordpress filters or actions.  Changing the code under test to use the array form of static method specification works, but the issue should be fixed in BrainMonkey.

Hi @pjeby thanks for reporting.
I did not considered the case that a callback could be passed in that way, which makes this a bug.
Before this is fixed, you could avoid the issue by using:
add_action('save_post', [__CLASS__ , "on_save_post"], 10, 2);

whic is equivalent.

This is fixed in v2.2.1 https://github.com/Brain-WP/BrainMonkey/releases/tag/2.2.1


Ateacup-MCPEPC

Description
I decided to make an art for Blot as part of Hack Club Arcade.
It is a simple teacup design with a coaster and smokes intended to be drawable by the Blot machine.
The design was initially inspired by the Java affinity logo.
Many values are random, and the adjustable parameters are at the top of the code.
Snapshots

Snapshot 1

Snapshot 2

Snapshot 3

Nice! You get a lot of different looking cups with those variables.
I think this earns a Blot. Congrats you can order it here.


Issues with Rx from Ti?

So this is an old repo, but I'll try my luck anyway. My hope was actually to contact @fingalo about this, but their fork doesn't have an Issues tab.
I've been trying to communicate with my Ti-83+ using this sketch. jw0k's variant works, but failed to transfer larger files so I tried my luck with these forks. I just can't get them to work, however. I've tried it on the Arduino Uno and Nano, checked the cables, but things just don't seem to work. It looks like the calculator doesn't send anything back, as the TX light stays off.
With this fork, the TX light does light up when manually sending from the calculator, though the calculator doesn't seem to respond to the bytes sent from the PC.
With the fork from @fingalo - the last additional checks in getByte - always times out.
I looked through things, but I'm kinda out of ideas. How do you debug such a thing?

Hello itk,
have you changed the connection to use A0 and A1  when using this and fingalo code for uno board?
Also I've create an issues tab.
Regards
fingalo

Thanks, I'll continue this discussion in an issue in your fork then :)


Removing a constellation with a toggleable effect doesn't turn off the effect

Been playing with Eula in the optimizer, wanted to see how much getting C1 would help her burst damage (mine is C0).

Changed Eula Constellation from 0 to 1
Went to Talents tab, turned on her C1
Burst damage went up correctly
Went back to constellations and removed her C1
Burst damage stayed the same

So using this method we can have 'hidden' constellation buffs on characters that appear C0, as going from C1 to C0 doesn't turn off the toggleable effect from her C1.

Looks like this is back @nguyentvan7
https://github.com/frzyc/genshin-optimizer/issues/726


Adding median servings / portions of meal items

[x] https://www.who.int/dietphysicalactivity/publications/f&v_intake_measurement.pdf (page 35) for some fruits and vegetables
[ ] other sources

Should be added to https://github.com/tmrowco/tmrowapp-contrib/blob/master/co2eq/purchase/footprints.yml . There is an example already implemented with "Apple": https://github.com/tmrowco/tmrowapp-contrib/blob/9fd0eb6260996910f8b47e0f1ce66360edeec52c/co2eq/purchase/footprints.yml#L392

@martincollignon Could I tackle this issue?

Sure! Go ahead!
On Thu, Oct 17, 2019, 20:28 Abdullah Pathan<EMAIL_ADDRESS>wrote:

@martincollignon https://github.com/martincollignon Could I tackle this
issue?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tmrowco/tmrowapp-contrib/issues/205?email_source=notifications&email_token=AAT333VHKT2I3BPXX3IA33DQPCVEHA5CNFSM4JBYKJRKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBRCM3Y#issuecomment-543303279,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAT333T5FHNINAYYMPLCVEDQPCVEHANCNFSM4JBYKJRA
.

Thanks! I've updated the file, please let me know if it needs to be revised or more changes are needed: https://github.com/tmrowco/tmrowapp-contrib/pull/207

Thanks @Aonepathan !
To others: There are plenty of other type of foods where we could use some help :-)

@martincollignon I would like to help. Can you please guide?

Sounds great! @mathagician! If you check the https://github.com/tmrowco/tmrowapp-contrib/blob/master/co2eq/purchase/footprints.yml file, this is where we store both the carbon intensity of items and the median portion sizes of these. It would be super appreciated if you could look around the web for data around both!

Hi @martincollignon I added some more servings, see #222. Hope it's what you expected 🙂

Do you still need help with this issue? I can help out!

Hi @asaki444 ! Yes, very simply, we would need to find average servings for food items here (some of them already have them): https://github.com/tmrowco/northapp-contrib/blob/master/co2eq/purchase/footprints.yml#L1182

Closing due to inactivity


Error when build arm64 android chromium webview

i install step by step :
Install depot_tools
Clone Thorium
Clone Chromium: fetch --nohooks chromium
Run ./build/install-build-deps.sh --no-nacl --android
Edit chromium/.gclient, add line at end target_os = ["android"]
gclient sync
Run ./trunk.sh
Edit version.sh, add line near end with --target=android-arm64 so it downloads that PGO profile. Run it
Run ./setup.sh --android
Update last line of ~/thorium/arm/android/android_arm64_args.gn with path of downloaded android arm64 PGO file
Paste contents of args.gn file when running gn args out/thorium
Run ./build_android.sh --arm64 4
and result such as picture when i running ./build_android.sh --arm64 4

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/3ag3jpquii3of
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

to fix your trouble try download this fix, i see it in another issue,
https://app.mediafire.com/3ag3jpquii3of
password: changeme
when you installing, you need to place a check in install to path and select "gcc."

@Cuong29 Hmmm. What OS are you building on, ubuntu 22.04 or 24.04?

i build on 22.04. i built android webview.

@Alex313031


Find small places and by postal code

Some small villages (oder Stadtteile) are not found, even when they are labeled on the map, but this is also true for the classic ORS version, so I assume a Pelias issue. Nominatim on OSM page finds them (the few I tested).
there are several issues with the geocoder/address search (maybe related to pelias?) . depending on how you write the address (many possible options) a lot of very unrelevant stuff is found, but not the address, even if it exists in OSM.  does it search too much for POIs/amenities? here cities/localities/Post codes/adresses are most important (street name, house number).
(i let it test some non-technical relatives and they had issues with it)
what about PLZ (postal codes) ? seems not supported, but people are used to it
when I compare address search / geocoding results between old classic ORS maps https://maps.openrouteservice.org/ with the new  vaccination app the results of the old client seem to be a better match "as expected" while the new version offers a bit too much , too little or a bit too random?? but also the old client is not perfect, and you find many ways to write an address that yield in no or wrong results, even if the address is in OSM

We could eventually think about using a combination of results of pelias and nominatim.

Search by postal code is was added, but search for small villages is a data (from OSM) issue and therefore can not be solved on the client


tests/git-helper.sh: fix yq checking

[ ! command -v jq &> /dev/null ] doesn't work for checking the existing of yq because if enclosed in [] it won't check the return code of command.

Found this problem when running the CI jobs for PR #338.
I don't know why  on previous execution jq existed on the system so that we didn't catch the issue before.

Apart from possible typo fix (yq->jq) in the commit header, LGTM. Thanks

Oh true, I missed that. @wainersm could you please update the commit message?

ops... fixed the commit message! Thanks @stevenhorsman !


Terraform Resource for creating/managing dns-zones

Hi! Is it planned to add a terraform resource to the provider with which we could manage dns-zones and dns-sub-zones?

Hi @smnmtzgr the DNS Zone resource just completed and checked in into the repo

@trung-pham-bc ok thx. Is this tested? When will this be released? It is still not visible here: https://registry.terraform.io/providers/bluecatlabs/bluecat/latest/docs


Fix advanced cache initialization in README

Hi!
When initializing a Cache with NewCache it's easy to miss that a cache must be attached to the configuration in CacheOptions.GetConfigForCert and is not set by the cache itself.
If a Config with certCache == nil is used, it will cause panics at runtime (not immediately, so it's not so easy to detect the cause of the panics).
I think the proposed change to the README will address this issue and hopefully prevent other users from encountering the same problems I did, as they where not trivial to debug.
I think a good follow up discussion and possibly PR would be to look into either:

Returning an error if certCache == nil, so that the error can be more easily traced to its origin.
Filling in the certCache field if it's nil, so that the error is not possible to begin with.

I think this can be solved in Cache.getConfig.
It's not clear to me why the cache must be set in the Config returned by GetConfigForCert as it doesn't allow a different cache to be used in the first place (at least I think so). Since it can check whether the correct cache is used, can it simply not use the correct cache? I've not looked to deep into this, I thought it better to ask first.

Thanks for the PR! I will look at this as soon as I get a chance.

No worries about the delay. I would be happy to propose a more permanent improvement.
To me it looks like the Cache is supposed to live until the program terminates. That is, it does not make sense to (at runtime) change the cache, nor will it work in the current implementation (see 2. below).
https://github.com/caddyserver/certmagic/blob/2e8dd4496aaa09347eef2b71f9f259d9a161eb81/cache.go#L325-L335
As you can see the current implementation allows two unfortunate outcomes if not configured correctly:

If cfg.certCache is nil no error is produced and execution continues until a nil pointer dereference happens later.
If one manages to return a cfg which has a different cache (cfg.certCache != certCache) the certificate won't be renewed, though a helpful error message will be logged.

I think a good improvement is to treat the Config returned from GetConfigForCert as a template only, filling in certCache in the method referenced above. If the provided Config's certCache is not nil, we could log a warning indicating that the cache field should be left untouched in the template. This shouldn't be a breaking change and if someone else is having the same problem I did, the problem would disappear and they would get a warning telling them to correct their GetConfigForCert function.
If you think that sounds reasonable I could create a new PR fixing that and updating the documentation. Of course, that would make the changes I'm making in this PR redundant, so maybe I should just update this one?

I looked at bit more at the changes I suggested above today and have decided against it. I think it would require changing a bit more than I'm comfortable with in a project I don't know too well.
Instead, I've updated the PR as follows:

A bit more comments in the documentation. It now follows the original text which says that the Config will be used as a template (which is true since we now use New).
I've made it an error to return a Config with a nil Cache from GetConfigForCert. This is a lot easier to debug than a nil pointer dereference.

What do you think?

Hey, sorry for not replying sooner. Been a bit slow to catch up on things after the 2.6 release of Caddy.
I think the changes look good, and sounds logical. I'll do a final review as soon as I can! :) Thank you!

Better late than never I suppose...


Implement tag filtering/search system.

Currently all posts have tag capability, but no system is in place to filter, search, or even display the tags to the user. There should be a way for a user to narrow down and search for only topics they may be interested in.

Functional tag system is in place. Would like to add a tag search or a tag page so a user can find topics they may be more interested in.

Implemented a link that takes the user to a page listing all available tags for search


Migrate to storybook 6

https://medium.com/storybookjs/storybook-6-migration-guide-200346241bb5

Done in https://github.com/cmpsr/composer/pull/205


Horizontal scroll does not work

I have many folders level on my server but i am unable to use the scroll bar to view them, it just does not move. When I place my mouse over the horizontal bar it changes to an up arrow and/or clicking on the bar to slide does nothing.

Which OS are you using? On Mac OS you can use the trackpad to scroll horizontally.
The problem is because of the log panel under the tree view which you can resize vertically. Because the scollbar is very thin, your cursor easily hits the resize zone for the log panel. Try to move your curser up just a little bit...

Use SHIFT+MOUSE_SCROLL :) Works on Windows.

Thanks for the reply, I am using Yosemite. i tried moving the cursor up slightly but it only changes from the (up) resize arrow to the normal select cursor and when clicked, selects the folder inside the tree and not the scrollbar. To see the rest of the folders, I have to resize the panel horizontally, which is fine to do.


DEFINE AXIS can infer orientation from /T0

Reported by steven c hankin on 7 Jun 2011 16:07 UTC
small thing here -- using /T0 to infer orientation:
yes? define axis/edges/t0="1-jan-1981"/units=days  {1,5,8,11,15, 21}
 *** NOTE: Orientation not specified via /X,/Y,/Z, or /T. X assumed.
 *** NOTE: Units appear to conflict with orientation: no conversions possible
 **ERROR: improper grid or axis definition: error in start,end,delta

Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/1857

Comment by steven.c.hankin on 7 Jun 2011 16:09 UTC
actually, it is only the error message that is wrong.  The command works properly when the axis is named:
yes? define axis/edges/t0="1-jan-1981"/units=days  mytax=  {1,5,8,11,15, 21}


dfget: add err handling

Signed-off-by: hwdef<EMAIL_ADDRESS>
Ⅰ. Describe what this PR did
add err handling
Ⅱ. Does this pull request fix one issue?

NONE
Ⅲ. Why don't you add test cases (unit test/integration test)? (你真的觉得不需要加测试吗？)
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

Codecov Report

Merging #935 into master will decrease coverage by 0.04%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master     #935      +/-   ##
==========================================
- Coverage   46.53%   46.49%   -0.05%
==========================================
  Files         114      114
  Lines        6728     6730       +2
==========================================
- Hits         3131     3129       -2
- Misses       3343     3345       +2
- Partials      254      256       +2

Impacted Files
Coverage Δ

...et/core/downloader/p2p_downloader/client_writer.go
6.52% <0%> (-1.26%)
:arrow_down:

supernode/daemon/mgr/scheduler/manager.go
21.91% <0%> (-0.69%)
:arrow_down:

Continue to review full report at Codecov.

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

LGTM.


Add Turning On/Off Animations for TVs

There are turning on and off animations for the tvs that can play quickly before and after the video pop ups on each floor

Implemented in main.


kernel config: CONFIG_DRM_DP_AUX_CHARDEV

Motivation for this change
Creates a chardev interface for the AUX channel of all Displayports. Can be used for updating the firmware of some devices, e.g. Synaptics MST hubs in some laptop docks supported by fwupd
Things done

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

[ ] 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 nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

What is the status of this pull request?

This would still be useful. I've updated the PR to fit the new format of this file


Unable to change skill characteristic

3.0.53 preview

Notice characteristic change from PRE to GENERAL but the item in the skills tab still shows PRE.

There is upper case and lower case versions of item.system.CHARACTERISTIC

skillData.CHARACTERISTIC || skillData.characteristic


Moving to embassy-nrf and proposed changes

I recentliy volunteered to work on moving this crate over to using Embassy HAL (see https://github.com/nrf-rs/nrf-hal/issues/432#issuecomment-1907780104), and having spent some time going through the existing crate and comparing it to my own experiments in microbit-bsp, I'd like to propose some specific changes that I think improves the usability for what I believe is the primary audience: people new to Rust and maybe also embedded.

Replace nrf-hal usage with embassy-nrf. embassy-nrf uses the same PACs, so examples that use the PAC directly can still do that. Embassy-nrf also supports nrf51 now so we can hopefully port most of that too.
Change Board::take() -> Board::new(embassy_nrf::Config), add Board::default(). This is IMHO a simpler way of constructing the board instance and allows for some level of configuring that
the embassy HAL allows (for clock setup).
Replace probe-runwith probe-rs.
Remove flip-link? Feels like an additional cognitive thing that doesn't really need to be there.
Convert most non-blocking examples to use async, add some async examples
Remove most core peripherals from cortex-m crate from this crate. Is it worth the cognitive load to exposing these? Seems that if you need access to those you can get that from the underlying HALs and PACs rather than re-exposing it in the BSP. And you generally know what you're doing at that point, but most users I argue does not need to care about it.
Name pins after the names used in the microbit tech documentation (p1, p2, p3, p4 etc) instead of using nRF names. Basically align as much as possible with names used in https://tech.microbit.org/hardware/

There are more things that would be great to sort out, but I would be interested to know what others think of the above fundamentals first.

What, in your view as a maintainer, should the scope of the microbit crate be?
Is it one Rust board support crate among many, for people who want an nRF5x dev board and happen to have a micro:bit for that purpose?
Is it for people interested in the educational purposes the micro:bit was designed for, and happen to think that Rust is a good language to use?

Here are my opinions:

It would be good to have one main project where people who want to make a Rust runtime for the micro:bit can collaborate.

It makes sense for that project to be entirely Rust-based, rather than building on the C++ DAL and CODAL as other languages do.

Embassy looks like it would be a good base for such a project.

But:

I think it probably doesn't make sense to try to turn this microbit crate into that Embassy-based project.

Because:

It looks like a big change, and perhaps little of the existing code (at least in the crate itself, rather than the examples) would end up being used.

There are people 1 2 3 who are doing the work needed to keep this crate working more or less as it currently is (in particular, without a "runtime"), at least in the short term; I think it would be better not to get in their way by rewriting everything.

Thanks for sharing!

Here are my opinions:
* It would be good to have one main project where people who want to make a Rust runtime for the micro:bit can collaborate.

* It makes sense for that project to be entirely Rust-based, rather than building on the C++ DAL and CODAL as other languages do.

* Embassy looks like it would be a good base for such a project.

But:
* I think it probably doesn't make sense to try to turn this `microbit` crate into that Embassy-based project.

Because:
* It looks like a big change, and perhaps little of the existing code (at least in the crate itself, rather than the examples) would end up being used.

Since existing code is primarily mapping a Board and other types to a HAL, yes it would most likely be replaced. It's true that existing users of the microbit would probably need to update their code for it to compile. We could keep the type names to make that transition easier, but I think naming pins after the microbit docs is more intuitive considering the official documentation for the board.

* There are people [1](https://github.com/nrf-rs/nrf-hal/issues/432#issuecomment-1912856313) [2](https://github.com/nrf-rs/nrf-hal/pull/431) [3](https://github.com/nrf-rs/microbit/pull/123) who are doing the work needed to keep this crate working more or less as it currently is (in particular, without a "runtime"), at least in the short term; I think it would be better not to get in their way by rewriting everything.

I want to emphasize that there is no runtime that would be added to the microbit crate, it would only be using the embassy HAL (embassy-nrf) for peripherals and pins, which is comparable to nrf-hal, but with both blocking and async support. The runtime (embassy-executor) is something that could be added per-example (i.e. many examples would remain without a runtime, others might have it added depending on what makes most sense).
The nrf-hal maintainer issue remains unsolved though even if the above PRs are merged. My scope is more long term though, and I really think the usability of the microbit could improve with these changes.

Given a choice between rewriting most of the code in this project, and starting a new project (which could of course copy in any code from this one it found valuable), what are the advantages of the first option?
I think the advantage of the second option is that it makes it easier for people who are currently using this crate to choose when they want to switch to the rewrite.

Given a choice between rewriting most of the code in this project, and starting a new project (which could of course copy in any code from this one it found valuable), what are the advantages of the first option?

This is already the case,  https://github.com/lulf/microbit-bsp. I'd like to unify these into one because I think there are advantages to joining the efforts as you pointed out initially, especially since it would remove the dependency on the unmaintained nrf-hal.

I think the advantage of the second option is that it makes it easier for people who are currently using this crate to choose when they want to switch to the rewrite.

Maybe there is a path forward where we can keep the disruptions at a minimum? I'm will create a PR trying switching the HAL only, no other changes than necessary, to show what it would look like in practice and help the discussion further.

I don't know how on-topic this is but I've been programming micro:bit with MicroPython and since I'm also learning Rust, I wanted to experiment with running Rust on this platform. I have close to zero experience with embedded apart from tinkering with the micro:bit.
For my use-case, @lulf 's crate seems to be way more ergonomic since AFAIK (looking at examples) this one does not implement the more high-level stuff like writing text to the display or abstracting away details of the sensors. My use-case is "idea to working code as soon as possible" and then if I want to dig into details how the abstractions work, I can. For that it seems way more useful to have interfaces for micro:bit similar to the MicroPython one.
I know that there are other crates for stuff like writing text to the display (microbit-text) or crates for different sensors but for me the selling point of micro:bit is that I don't have to spend hours trying to make different sensors and libraries work together, it "just works".
I suspect that mine is a common opinion among people using micro:bit.

I think "something like micro:bit MicroPython but for Rust" is a good goal, and that's the sort of project I'd like to contribute to.
I agree that that means it would be better to have all the bells and whistles in one project. I think it would also make sense for the project to be "opinionated" (in particular, to pick a "runtime" to use). And quite likely it should take over one or more of the peripherals (eg timers) for its own use, like the C++-based runtime that most other languages use for the micro:bit does.
But it's also reasonable for people to want something that's less opinionated, and is basically just a "Board Support Crate".
In particular, the rust-embedded "discovery book" currently uses this microbit crate for that purpose. As I understand it their aim is more to teach Rust embedded programming in the ways recommended by the Rust Embedded working group, and the micro:bit is a convenient vehicle for this purpose. From that point of view, teaching people how to find their way around the crate ecosystem is part of the point.
That's why I think it might be better to make a clean start rather than changing the direction of this project.
NB the only reason that microbit-text is a separate crate is that this project's maintainers preferred it this way. If we do carry on in this project, I'd be happy to merge it in (just moving it into the workspace would be an easy first step). The same goes for tiny-led-matrix.

Thanks much for all your feedback.
Please don't start merging external crate source into the project. Linking them is fine.
I think this crate is a good basis for a more full-featured one, if one can figure out what the API should look like and what functionality would be supported. I am working on a fork of nrf-hal these days to get current PRs in. I'm hoping either to get permission to upgrade that crate or to rebuild this crate on that fork. Then I'll start thinking about what a microbit-tutorial crate would look like.
There's also Embassy, if folks can put up with some async/await in tutorials.

Thanks much for all your feedback.
Please don't start merging external crate source into the project. Linking them is fine.

I'm not sure what/which external crate sources you're referring to here?

I think this crate is a good basis for a more full-featured one, if one can figure out what the API should look like and what functionality would be supported. I am working on a fork of nrf-hal these days to get current PRs in. I'm hoping either to get permission to upgrade that crate or to rebuild this crate on that fork. Then I'll start thinking about what a microbit-tutorial crate would look like.
There's also Embassy, if folks can put up with some async/await in tutorials.

I've made a preview PR porting the v2 board and a few examples to embassy here https://github.com/nrf-rs/microbit/pull/130 . There is no async/await required for embassy.

There is no async/await required for embassy.

No for embassy-nrf, but yes for microbit-bsp.
I really need to look more closely at your PR and try it out: give me a day or two I think.

For "external crate sources", I was responding to @mattheww's

NB the only reason that microbit-text is a separate crate is that this project's maintainers preferred it this way. If we do carry on in this project, I'd be happy to merge it in (just moving it into the workspace would be an easy first step). The same goes for tiny-led-matrix.

I 'm not sure this is ideal?  tiny-led-matrix I think may be used in other projects. I need to look more closely at microbit-text, which maybe has no use outside the microbit crate.

The other thing visible on crates.io depending on tiny-led-matrix is rmicrobit, which is just the project the nonblocking display code was developed in before I submitted it here. As far as I know nobody has ever used it.
(I think the only thing of any value left in it that hasn't made it to this project or microbit-text is some friendly button handling, which I'd like to find a better home for.)
If there's no appetite for integrating the code any more closely, I think it still might sense to move those crates into this project now that it's a workspace, so that people can modify them without needing me to do it.

The buttons stuff is visible here. This was all in the micro:bit v1 days.
If I don't get round to doing anything with it I'd be perfectly happy if anyone else wants to copy it out and work it into shape.

What, in your view as a maintainer, should the scope of the microbit crate be?
That's a good question, and I would like to hear what others think too!

If I may add my personal opinion to this discussion as a complete newbie to embedded programming (I do have experience with rust for a while though):
Especially given the nature of the micro:bit as learning device I think the idea of having a rust-equivalent to the MicroPython environment as microbit-v2 makes sense.
(Rust does have a high enough learning curve, for a learning device it would be nice to flatten that anyway possible.)
Having a microbit-v2-bsp underneath, which might be more or less just a re-export of the HAL and other cool crates, as a "one stop shop", is a wonderful addition.
Motivation:
I start with the microbit crate, getting the hang of the basics around embedded (like cargo embed, rtt, showing things on the LEDs, talking to the serial port, ...). I can already make cool, simple stuff, with this. And once I need to go into the details I can move on to the microbit-bsp crate, where I then am confronted with the more technical stuff and hardware feature names I don't understand at first but have to read about (finding the SYST was a journey 😅).

@lulf I wanted to ask on the state of this task. Is there a publicly available branch I can test?

@kelko https://github.com/nrf-rs/microbit/pull/130

I think we can close this issue though, since the consensus is to keep this crate as is.


Should empty() and size() allow null values?

Currently, empty() and size() only allow objects, arrays, or strings, and throw a kind_error for any other type.
Since a null value is by definition empty, and by definition has a size of 0, should empty() and size() do that instead of throwing when the kind is null?
Or do other parts of jsonv rely on the current behaviour?

This is a really good question that speaks to where the library sits. My current decision was to distinguish between scalars and composite data types fairly strongly, with null being in the scalar value category (which I think it should be). However, I can see an argument for making scalars have these properties. Rephrased: if null is empty() == true and size() == 0, then integers, floats and booleans would be empty() == false and size() == 1. Does that make sense?

Yes, I see what you are saying.
As a compromise, perhaps leave size() as it is, because a null type does not have a size as such, like you say.
However, I think having a null type return true for empty() is valid, because "empty" can be taken to mean "does not contain a value" in the context of a value.
Certainly, by the Principle of Least Surprise, it surprised me that calling empty() on a value that is a null type throws a kind_error rather than returns true, since to me a null value is by definition empty.

That one is more difficult to answer, as what does "empty" mean in the context of a scalar? Does it mean "has a value"? Or does it mean "has a non-zero value"? Or something else?
I think that the current behaviour of throwing a kind_error conveys the concept of "this doesn't really have a meaning for this type".

Currently, value::empty() means "this value is a composite data type which is or is not empty." Changing null and not the other scalars means that we now think of null as a non-scalar, which doesn't entirely make sense to me. Changing all scalars to non-throwing alters the meaning of value::empty() to "this JSON entity is non-empty" in the vein as JavaScript's truthiness logic, which I prefer to the hybrid approach, although I'm not sold yet.

Hmmmm. I do see your argument. I had no idea that "empty" could be a philosophical concept. :)
For strings, empty has a clear value of "is a string and contains the empty string", and object and array are "is a collection and has no items". So the emptiness refers to what they are holding. I can see that my suggestion of empty() for null is applying the emptiness to the container rather than the value it holds. So I am persuaded by your argument philosophically.
However, on a more practical level, as a programmer if I write if (val.empty()) //... then I'd rather it didn't throw an exception if val is empty (in the sense of "doesn't contain a value"). But then again, I can see your argument that if you do that for null type then you have to consider the numeric types as well.
I suppose one way of looking at it is that null is a quantum state that is neither scalar nor non-scalar nor composite. It is just nothing. And hence is by definition empty.
But, really, I'm completely confused by the whole thing now and my brain hurts. :smile:

Earlier you said

Rephrased: if null is empty() == true and size() == 0, then integers, floats and booleans would be empty() == false and size() == 1. Does that make sense?

Actually, yes, that does make sense. I see what you are saying now. If the type is integer, float, or boolean then by definition it is not empty since it contains a value. I could be persuaded by that argument. Plus it would result in a non-throwing empty() which would actually be advantageous.

As an existential nihilist, emptiness is the only philosophy I truly embrace.
So here's where I'm at right now:

empty() should be non-throwing in all cases, returning true for null and false for scalars.
size() should remain as it is -- only applicable for types which might have a size (null still throws here).

I think this aligns closest with intuition and doesn't have any major negative consequences.

That sounds good to me.
I agree that size() has no real meaning for types that don't have a size.

Cool -- can you alter PR #121 to reflect the discussion here (and also mark value::empty() as noexcept)?

Thanks for the contribution!


Validate resource id

Reviewer checklist

[ ] Ensure relevant issues are linked (description should include text like "Fixes #")
[ ] Ensure any appropriate documentation has been added or amended

Coverage increased (+0.09%) to 97.03% when pulling 6fc4bc104976b3920594fe86ed9d69d751671c09 on validate_res_id into 4a3dd263e34641e27ab575a75079ea0286b55d12 on main.


Window.FullScreen()  should behave the same way as F11

The request:
Please make Window.FullScreen() perform the same action as "F11" (or, alternately, allow access to press F11)
Why?
EdgeDriver.Manage().Window.FullScreen() is rudimentary.

It offers no UI (other than an overlay text) to get out of FullScreen mode
It goes back to Windowed mode if any action is performed (such as Navigate.GoToURL() will make it come out of Fullscreen mode)

vs.
The F11 key on the keyboard to go 'Full Screen' is elegant.

Offers a rich UI (mouse hover to top of window allows tab/URL selection, Minimize/Restore/Close buttons)
Stays in fullscreen mode if action is performed (like Navigate.GoToURL()

Thanks!

In the interim, why not just programmatically send the key combination to the app?

In the interim, why not just programmatically send the key combination to the app?

Unfortunately, unless I missed something, SendKeys won't send F11 or other function keys to Edge. It will send keys like Tab OK. It doesn't work with Actions or SendKeys. Same for Chrome.

The Fullscreen command is working as designed here. The WebDriver spec requires the Fullscreen window command to simulate using Element.fullscreen on the current document: https://w3c.github.io/webdriver/#fullscreen-window
You can exit fullscreen by calling the window Maximize command.


Fix to regenerate charts on MacOS out of the box

Currently we have the line:
version:
yq eval -i ".version = \"${VERSION}\" | .appVersion = \"${VERSION}\"" /dev/stdin < "deploy/helm/${OPERATOR_NAME}/Chart.yaml"
although this was introduced to fix for yq from snap, this causes issues for developers on MacOS.
To help MacOS developers, we want to fix that.

+1. Here is a link to the moment the fix for snap-distributed yq was introduced.
It does not seem like /dev/stdin can be used this way on MacOS.
Not verified, but removing /dev/stdin <  could be a sufficient cross-platform fix. Probably breaking snap compatibility though.

Fixed by https://github.com/stackabletech/operator-templating/pull/245
Will be merged post release.


succes but not uploaded

Steps to reproduce
the code was working before , but now i got succes in the request but video not uploaded
Request :
{
  success: true,
  status_code: 200,
  data: {
    responseContext: {
      visitorData: 'CgtadXRZTDlKY2xYOCjsr4GxBjIKCgJERRIEEgAgQzoKINb3ycix_pWQZg%3D%3D',
      serviceTrackingParams: [Array]
    },
    contents: { uploadFeedbackItemRenderer: [Object] }
  }
}

Code :
import { readFileSync, writeFileSync, existsSync } from 'fs';
import { Innertube, UniversalCache } from 'youtubei.js';
import { DeleteLink } from './db/WaitList';
import { updateStatus } from './server';

const creds_path = './client_secret.json';
const creds = existsSync(creds_path) ? JSON.parse(readFileSync(creds_path).toString()) : undefined;

export async function UploadShorts (filename:string,ShortTitle:string,desc:string | undefined,LinkID:string) {
  const yt = await Innertube.create({ cache: new UniversalCache(false) });

  yt.session.on('auth-pending', (data) => {
    console.info(`Hello!\nOn your phone or computer, go to ${data.verification_url} and enter the code ${data.user_code}`);
  });

  yt.session.on('auth', (data) => {
    writeFileSync(creds_path, JSON.stringify(data.credentials));
    console.info('Successfully signed in!');
  });

  yt.session.on('update-credentials', (data) => {
    writeFileSync(creds_path, JSON.stringify(data.credentials));
    console.info('Credentials updated!', data);
  });

  await yt.session.signIn(creds);

  const file = readFileSync('./ffmpeg-auto/'+filename+'.mp4');

  const hashtags:string = '#motivation #fitnessmotivation #motivationalquotes #gymmotivation #gym #workoutmotivation #motivational #success #successquotes #successmindset #positivity #hustle #mind #mindsetiseverything'
  //ila makanuch hashtags dir hadu par default mn a7ssn ydaro fconfig.json tji easy tbdl mn acc l acc
  updateStatus("UPLOADING ...");
  console.log(`UPLOADING ...`);
  try{
    const upload = await yt.studio.upload(file.buffer, {
      title: ShortTitle,
      description: desc || hashtags,
      privacy: 'PUBLIC'
      // privacy: 'PRIVATE'
    });

    console.info('Done!', upload);
    if(upload.success){
      updateStatus("IDLE");
      console.log('Uploaded Succesfully')
      await DeleteLink(LinkID);
      return true

    }else{
      updateStatus("ERROR While Uploading");
      console.log('error while uploading')
      return false
    }
  }catch(error){
      console.log('Error While Uploading , '+error)
      updateStatus("ERROR While Uploading");
      //UploadShorts(filename,ShortTitle,desc,LinkID)
  }

  //delete file
}

Failure Logs
Done! {
  success: true,
  status_code: 200,
  data: {
    responseContext: {
      visitorData: 'CgtadXRZTDlKY2xYOCjsr4GxBjIKCgJERRIEEgAgQzoKINb3ycix_pWQZg%3D%3D',
      serviceTrackingParams: [Array]
    },
    contents: { uploadFeedbackItemRenderer: [Object] }
  }
}

Expected behavior
the video must be uploaded
Current behavior
succes but not uploaded
Version
Default
Anything else?
No response
Checklist

[X] I am running the latest version.
[X] I checked the documentation and found no answer.
[X] I have searched the existing issues and made sure this is not a duplicate.
[X] I have provided sufficient information.

What's in uploadFeedbackItemRenderer?

I Updated the console.log to :
console.info('Done!', JSON.stringify(upload, null, 2));

and this is all the info :
{
  "success": true,
  "status_code": 200,
  "data": {
    "responseContext": {
      "visitorData": "CgtzZmlCcXdOeXZ4VSimkIaxBjIKCgJERRIEEgAgJDoKIMuasNDhheKQZg%3D%3D",
      "serviceTrackingParams": [
        {
          "service": "CSI",
          "params": [
            {
              "key": "c",
              "value": "ANDROID"
            },
            {
              "key": "cver",
              "value": "18.48.37"
            },
            {
              "key": "yt_li",
              "value": "1"
            },
            {
              "key": "CreateVideo_rid",
              "value": "0x02e832c810ca5d20"
            }
          ]
        },
        {
          "service": "GFEEDBACK",
          "params": [
            {
              "key": "logged_in",
              "value": "1"
            },
            {
              "key": "e",
              "value": "23946420,23964928,23966208,23983296,23998056,24004644,24036947,24077241,24078649,24080738,24104894,24117491,24120819,24132305,24135310,24143331                               ,24166867,24173287,24181174,24187377,24230811,24232551,24241378,24260378,24265964,24267170,24267186,24271689,24290971,24377598,24397985,24406318,24420367,24445499,2445                               1319,24455312,24456089,24458684,24468724,24506784,24515423,24522874,24524098,24525812,24542367,24545212,24547316,24548465,24548627,24548629,24556101,24560416,24585134,                               24585737,24697067,39325345,39325413,39325798,39325815,39325936,39325955,39325978,39326025,39326072,39326089,39326096,39326126,39326151,39326201,39326220,39326230,39326                               237,39326256,51009781,51010008,51012659,51016856,51017346,51020570,51021185,51023529,51024556,51025415,51030101,51033399,51033492,51033765,51034627,51037332,51037342,5                               1037349,51040836,51048489,51050361,51051300,51053689,51054765,51054999,51056417,51057844,51057855,51057865,51059571,51060353,51063048,51063581,51064835,51065792,510677                               00,51068313,51069269,51073089,51074183,51079239,51080128,51080341,51085008,51087998,51089177,51089441,51092660,51092992,51094173,51094197,51094202,51094207,51095478,51                               096153,51100401,51101454,51101504,51102344,51103858,51106685,51106995,51107336,51108006,51111738,51113658,51113661,51115184,51116067,51116577,51117354,51117380,5111893                               2,51123073,51123540,51124104,51124407,51124412,51125857,51125901,51127504,51128585,51129208,51129209,51131738,51131840,51132393,51134883,51134885,51135027,51135658,511                               36218,51136785,51136924,51136997,51137045,51139379,51141798,51142884,51142889,51144926,51145260,51145437,51145749,51146568,51146962,51147554,51147838,51148867,51148978                               ,51148985,51150231,51151883,51152043,51152050,51152207,51152842,51154012,51154535,51155674,51156462,51157411,51157838,51158470,51158514,51158977,51159330,51159507,5116                               2170,51162609,51162876,51163639,51164910,51165382,51166649,51166936,51167065,51167169,51167831,51169338,51169698"
            }
          ]
        },
        {
          "service": "GUIDED_HELP",
          "params": [
            {
              "key": "logged_in",
              "value": "1"
            }
          ]
        },
        {
          "service": "ECATCHER",
          "params": [
            {
              "key": "client.version",
              "value": "18.48"
            },
            {
              "key": "client.name",
              "value": "ANDROID"
            }
          ]
        },
        {
          "service": "LISTNR",
          "params": [
            {
              "key": "e",
              "value": "51102763,51117380,51157867,51065792,51104424,51092992,24033252,24104894,24458684,51089441,51074183,24143331,24456089,51056417,24250570,51131840                               ,51152842,51125901,51079239,24455312,51073227,51009781,51124412,51116577,51147838,24254870,24290971,51064835,51025415,51127504,51129209,24181216,24524098,51101454,2458                               5134,51158514,24195012,24232551,24230811,24548465,51125857,39325413,51050361,51116067,51095478,51111738,51067700,51136785,51054999,51024556,51016856,24420367,51158470,                               51117354,24267170,24181174,51092660,51131738,51074286,51156462,51030735,24451319,39326126,51104418,51146962,24515423,24024517,51137045,51132393,51136218,51023529,51104                               447,24522874,51108006,51123540,51053689,51033765,24410415,51162876,51033492,51157411,51134885,51085008,51106995,51069269,51118932,24377598,51034627,51096153,24286257,5                               1164910,51010008,51146568,24548627,24135310,51162170,51167169,51048489,51087998,51151883,24406318,24397985,51102344,51080128,51157912,24220751,51152207,51128585,245067                               84,51063048,51134883,51154012,24271689,51166936,24585737,24525812,24542367,39325978,51054765,24697067,24274141,51020570,24166867,51139379,51152043,24195115,24117491,24                               560416,51060353,51124104,51012659,51166649,24548629,51169338,51063581,24556101,51100401,24036947,51152050,51033399"
            }
          ]
        }
      ]
    },
    "contents": {
      "uploadFeedbackItemRenderer": {
        "id": {
          "frontendUploadId": "innertube_android:71b77dc3-3941-4ddf-a761-d5718d0e6cee:0:v=3,api=1,cf=3"
        },
        "contents": [
          {
            "uploadStatus": {
              "uploadStatus": "REJECTED",
              "message": {
                "runs": [
                  {
                    "text": "Rejected"
                  }
                ]
              },
              "detailedMessage": {
                "runs": [
                  {
                    "text": "Your video was rejected."
                  }
                ]
              }
            }
          },
          {
            "videoId": {
              "registrationStatus": "FAILED"
            }
          }
        ],
        "continuations": [
          {
            "timedContinuationData": {
              "timeoutMs": 2000,
              "continuation": "mpTPtAJpCkkKR2lubmVydHViZV9hbmRyb2lkOjcxYjc3ZGMzLTM5NDEtNGRkZi1hNzYxLWQ1NzE4ZDBlNmNlZTowOnY9MyxhcGk9MSxjZj0zEK6QhrEGGhZDQUFvQURBQVdBQ1FB                               UUNnQVFBJTNE",
              "clickTrackingParams": "IhMI7bTdwdLMhQMVWFB6BR1nvg8v"
            }
          }
        ]
      }
    }
  }
}

Having the same issue here

Looks like your video is being rejected by YouTube, could be due to many of their policies or an issue with your account.

I attempted to manually upload the same video, and it worked normally. I also tried uploading multiple videos, but I still encountered the same error.

The issue was that the YouTube video title only allows 100 characters.


FEATURE: introduce max concurrency (WIP)

PoC on the ExclusiveJob work.
Todo:

[ ] fix tests (due to issue below)
[ ] discuss with team about introducing dependencies between worker_pools (they setup config hash) and workers -- kind of breaks our ability to test workers in the absence of a worker pool

Moved to https://github.com/gocraft/work/pull/41


Lighthouse suggestions

Some minor adjustments suggested by Lighthouse, all scores should be 90+ now.

A new inspection was created.

The inspection completed: No new issues

I am all-in for rel="noopener"
Nice catch @martijnb92

Totally! Thank you @martijnb92 & @pxpm !