Unpin omniauth dependencies

By unpinning omniauth dependencies, it is possible to upgrade to more recent versions of omniauth and omniauth-oauth2 gems in projects that are depending on this strategy.
Granted, the compatibility with newer versions might not be guaranteed, but at least it will not limit downstream projects to outdated gems, with potential unfixed security issues.
Thanks for considering!

Thanks @dvuckovic , thank you for your PR. I will merge it as soon as possible. I sincerely apologize for missing your message.


clear help msg for ignore_eos to avoid misunderstanding

What does this PR do?

Fixes # (issue)
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?

@regisss please help review

@sywangyi  can you fix the review comments?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


unsuported array::website_purchase_roas

ex-facebook-ads
https://keboola.slack.com/archives/C09U3R1J4/p1508307305000205

fixed in https://github.com/keboola/ex-facebook-graph-api/commit/5999838f79c3af2bf736fafd1d0b885229b0462b


[FEAT] Add floor division

Close #2418

assigning @colin-ho for review

Thanks @colin-ho for your reviews. Let me address your comments later.

Thanks @colin-ho


Request - "Test Now"

⚠ Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find similar feature request

🏷 Feature Request Type
Other
🔖 Feature description
Please could we get a "Test Now" or "Check Now" feature for monitors.
When a monitor reports a failure, one fixes the root-cause of the issue. It can then take some time for the monitor to re-run and detect that the problem has been resolved.
It would be great to have a way to check straight away that the problem has been resolved.
✔ Solution
We could have a "Test" button, maybe next to the Pause button, to kick the monitor check into life straight away, rather than waiting for the next run, which could be some minutes away.
❓ Alternatives
No response
📝 Additional Context
No response

Pause and restart has the same effect…?
So when you restart a monitor it will be automatically checked. No “check now” button required.

Duplicate of #2725. And some discussions also here: #2834


Save edit form as draft using localStorage

Fixed #4168

@sneridagh Take a look at the UX, let me know how it feels to you.
How to test:

edit a content item
make some changes
click the X cancel toolbar button
edit again
you'll see a "Autosave found, load it?" confirm dialog. If yes, it loads the saved value, otherwise the form is left intact

Some things to discuss:

do we want this for the Add item screen? It may be useful in have some cases, but I have concerns about dates saved in the form and disregarded by the editors
do we want to configure the autosave interval (at 300ms right now)
do we want to make it disable-able for some scenarios? Content types, user roles, etc

you'll see a "Autosave found, load it?" confirm dialog. If yes, it loads the saved value, otherwise the form is left intact

It would be nice to see a Cypress test with a video, else a video capture of your own screen. That would help me comment on the above item.

do we want this for the Add item screen? It may be useful in have some cases, but I have concerns about dates saved in the form and disregarded by the editors

I would weigh this against the current situation, where not having autosave would be much worse. Closing a browser window by accident happens all too often. In the scenario you describe, the worst thing that would happen is that dates do not get updated, but they could still be corrected by editors.

do we want to configure the autosave interval (at 300ms right now)

I would want to make it configurable with a sensible default value. I don't have an opinion of "sensible" now, so use your best judgment.
Also there are two parameters to consider: absolute interval (every N ms) and idle interval (duration of no keyboard or mouse activity in the active window). The latter might be too tricky to achieve, but it would reduce bandwidth (assuming autosave sends an HTTP request) and writes to persistent storage.

do we want to make it disable-able for some scenarios? Content types, user roles, etc

I cannot think of any scenario where it would be useful to disable autosave. Can you think of a common use case?

@stevepiercy Thanks for the input! Sorry for not including any other visual clues, I didn't want to spend too much effort if the approach is not correct.

Also there are two parameters to consider: absolute interval (every N ms) and idle interval (duration of no keyboard or mouse activity in the active window). The latter might be too tricky to achieve, but it would reduce bandwidth (assuming autosave sends an HTTP request) and writes to persistent storage.

I used a debounce technique to handle this case. Whenever the user changes the form state, we schedule a future "commit" (while canceling any active scheduling). If there's no keyboard input, there's no state change. We don't use an interval-based save.

@stevepiercy Ok, so about the add screen. Do we want the saved values to be restricted to the location, or can we say "I wanted to add a Document at location /x, but I gave up, moved to location /y, I want the previous values entered to be restored".

I think I need a little more background before I can comment on the "restore autosaved item" feature.
Let's say a content type gets autosaved. Would it show up in that location's folder, such as this screenshot?

In that screenshot, I created a News content type at / with the title of "Test Title". Would an autosaved item appear here, and if so, what would it look like?
Sorry for coming late to the party, if you have already discussed this piece.
If I understand what you are proposing, I prefer to avoid unexpected dialogs in the UI. For example, if I navigate to a location, then click Add, I want to add something and not be asked if I want to recover something else. If I want to resume work on something, I would navigate to the directory listing. There I can manage it as usual.
I can see where it would be helpful for an editor to be prompted to recover what was autosaved, but it would also annoy the heck out of people who just want to add a new item.

@stevepiercy no no, this feature doesn't interact with the server, it only saves entered fields in the browser of  the editor.
https://user-images.githubusercontent.com/141568/212013483-4e644e07-03b4-441b-85de-9f2b2df103a9.mp4

Ah, OK, I see now. I would love to see autosave implemented server-side in another PR.
For this PR, is the alert a React component with potential UI options (two buttons, not just one), and not a JavaScript alert with limited UI options? The source code changes appear to be the former.
Assuming that is the case, then here is what I would suggest.
For autosaved content, save one maximum of each content type per location. Assume the following:

/a has 1 News and 1 Page
/b has 1 Event

The editor navigates to /a and clicks Add > News, they would see the alert, "You have a previously autosaved News item. [Edit] [Delete]" (two buttons).
If instead they click Add > Event, it would not display an alert and go straight into editing mode.
The editor navigates to /b, and clicks Add > Event, they would see, "You have a previously autosaved Event item. [Edit] [Delete]".

I think more than one content type per location would be unmanageable and impractical. I hope I understand what the intent is now. Please let me know.

@tiberiuichim w00t! Awesome that you started to work on this!
Am I assuming correctly that we autosave a version even when the user clicks on the "X" button just for the purpose of showing that it works in a PoC? I wouldn't expect the system to save a version that I explicitly discarded as a user.

@tisto Something like that. I've actually tested with the "discard my saved form when I click cancel", it's this commented line: https://github.com/plone/volto/blob/4fd716a7071be65e839333dc89e91534afae5e12/src/components/manage/Form/Form.jsx#L439
The problem is that the Users don't have a way of going back to the View page of an item, except either by the Cancel or by Save buttons.  So it's up to us to decide how we want this whole thing to work, what its meaning should be in the overall workflow.
As a side discussion, I have another idea for UX, for the Confirm() dialog that restores the saved state. Rather then letting the user decide what to do about the saved state, what if we just load that state and show a Toast message saying something like "Found a previous unsaved version, it is now loaded. You can undo and load the saved version".

you'll see a "Autosave found, load it?"

This needs a check if the page has been edited since, doesn't it?

@ksuess Indeed, it would be a good idea to check last modification times, in case another user edited a document.

@tiberiuichim Thanks for starting work on this!

As a side discussion, I have another idea for UX, for the Confirm() dialog that restores the saved state. Rather then letting the user decide what to do about the saved state, what if we just load that state and show a Toast message saying something like "Found a previous unsaved version, it is now loaded. You can undo and load the saved version".

I like this idea.
Do we need any special considerations for how it interacts with edit locking?

@davisagli no, it all happens client side based on saved data in the localstorage.
The current internal behavior is like this:

user opens edit form
on any change, we schedule a debounced localStorage.save()
when there's no activity from the user, the current form content is comitted to localstorage
if the user clicks Save, the localstorage is removed. If they click Cancel, it is not removed (to be decided on this behavior).
if the user reopens the Edit page, the localstorage is compared with the current formData. If they're different, the user is prompted what to do: either load or dump the previous saved version.

As the key for the localstorage, we use this algorithm:
const getFormId = (props) => {
  const { type, pathname, isEditForm } = props;

  const id = isEditForm
    ? ['form', type, pathname].join('-')
    : type
    ? ['form', 'add', type].join('-')
    : ['form', pathname].join('-');

  return id;
};

if the user clicks Save, the localstorage is removed. If they click Cancel, it is not removed (to be decided on this behavior).

Third option: the user quits the browser, closes the tab, or otherwise navigates away (clicks a browser bookmark). What happens?  would be super helpful to prevent accidents. Let's call it "diaper mode".

@stevepiercy the "form unload handler", plone classic has it. We can model behavior based on that one, though this implementation is kind of a substitution for that one. Maybe we can combine them.

@tiberiuichim I think what I meant about locking was the same point Katja raised about making sure the saved draft can't overwrite a more recent change. Sounds like you have a plan for that.
@stevepiercy It seems to me that if this autosave exists, then it's not necessary to show a "Are you sure you want to destroy your work?" message, because your work is not going to be destroyed even if you leave the page. I guess we could show that message, but it might be annoying when you're actually leaving the page intentionally.

Hello, I took over the feature from @tiberiuichim.
Current version has:

Show a toast to tell user that a local version was found (OK will apply, Cancel will delete, Close will do nothing)
Saving the form will delete the specific local data form
Cancel will not delete (we need a decision about if it should)
Add new content is also autosaved specific for each item and content type
If local data is less recent than the server version, the toast will show a different message suggesting it, the user can choose the local or keep the server version - they can also undo and redo
It will also autosave comments

Demo for how autosave removes storage on Save form or Cancel load saved data:
https://user-images.githubusercontent.com/7466122/247877147-d83070e9-4c47-4d1a-85f5-908d8839684d.mov

Demo for how autosave manages stale data (content gets edited more recently than the local saved data):
https://user-images.githubusercontent.com/7466122/247877882-5fc3efb3-cf3e-4abc-a649-0c78a8a89d16.mov

Demo for how autosave adds new content type:
https://user-images.githubusercontent.com/7466122/247878398-7eb4e22b-f748-4fa4-8254-451e69949738.mov

Demo for how autosave handles accidental refresh in edit and add modes:
https://user-images.githubusercontent.com/7466122/247879058-1c7d1954-111e-468f-b456-198e3bfdd9b0.mov

Demo for comments autosave:
https://user-images.githubusercontent.com/7466122/249213695-16ac7fa1-b3a2-44f2-929e-69e382b8c08f.mov

@rexalex thank you for picking up this PR.
This PR will need docs to describe what this new killer feature is and does.
Videos are good, but they need to be shown in a narrow portal of no more than 743 pixels and embedded into docs per https://6.docs.plone.org/contributing/documentation/myst-reference.html#video.
I am not certain where docs should go for this feature. It might be a new page. I think a new page would be good because it would boost SEO for the autosave feature of Volto, a truly "killer feature" amongst CMSs. I also think this feature is primarily for the user who edits content, not so much the developer. I think it belongs in the User Manual. What do y'all think?

Also add an entry to docs/source/user-manual/index.md for autosave.

@rexalex please resolve merge conflicts with master branch.

@rexalex please resolve merge conflicts with master branch.

@stevepiercy done

@tiberiuichim @sneridagh @davisagli @ksuess  this is ready for review.

@rexalex @tiberiuichim some minor text tweaks and let's merge it!

@rexalex @tiberiuichim it looks like the autosave tests need to be updated to reflect the changes in the messages, too.

@sneridagh I get an error when trying to build this branch locally (backend):
An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/buildout.py", line 2252, in main
    getattr(buildout, command)(args)
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/buildout.py", line 856, in install
    installed_files = self[part]._call(recipe.install)
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/buildout.py", line 1652, in _call
    return f()
  File "/Users/timo/workspace/dotfiles/.buildout/eggs/zc.recipe.testrunner-3.0-py3.8.egg/zc/recipe/testrunner/__init__.py", line 46, in install
    eggs, ws = self.egg.working_set(('zope.testrunner', ))
  File "/Users/timo/workspace/dotfiles/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8-macosx-13.3-arm64.egg/zc/recipe/egg/egg.py", line 78, in working_set
    ws = self._working_set(
  File "/Users/timo/workspace/dotfiles/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8-macosx-13.3-arm64.egg/zc/recipe/egg/egg.py", line 161, in _working_set
    ws = zc.buildout.easy_install.install(
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/easy_install.py", line 971, in install
    return installer.install(specs, working_set)
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/easy_install.py", line 717, in install
    req = self._constrain(current_requirement)
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/easy_install.py", line 664, in _constrain
    requirement = _constrained_requirement(constraint,
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/easy_install.py", line 1641, in _constrained_requirement
    if version not in requirement:
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3201, in __contains__
    return self.specifier.contains(item, prereleases=True)
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/specifiers.py", line 902, in contains
    item = Version(item)
  File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/version.py", line 197, in __init__
    raise InvalidVersion(f"Invalid version: '{version}'")
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: '5.3.1 # without this volto is not building locally'
make: *** [.installed.cfg] Error 1
make: *** Deleting file `.installed.cfg'

I guess this is not related to this PR at all...

I almost never use the local build anymore… I always spin a container for
the backend. I think Alok found this the other day in a PR, could be that
it didn’t get merged yet. It was about a dep (again) in buildout.
On Sat, 16 Sep 2023 at 09:56, Timo Stollenwerk @.***>
wrote:

@sneridagh https://github.com/sneridagh I get an error when trying to
build this branch locally (backend):
An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/buildout.py", line 2252, in main
getattr(buildout, command)(args)
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/buildout.py", line 856, in install
installed_files = self[part]._call(recipe.install)
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/buildout.py", line 1652, in _call
return f()
File "/Users/timo/workspace/dotfiles/.buildout/eggs/zc.recipe.testrunner-3.0-py3.8.egg/zc/recipe/testrunner/init.py", line 46, in install
eggs, ws = self.egg.working_set(('zope.testrunner', ))
File "/Users/timo/workspace/dotfiles/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8-macosx-13.3-arm64.egg/zc/recipe/egg/egg.py", line 78, in working_set
ws = self._working_set(
File "/Users/timo/workspace/dotfiles/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8-macosx-13.3-arm64.egg/zc/recipe/egg/egg.py", line 161, in _working_set
ws = zc.buildout.easy_install.install(
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/easy_install.py", line 971, in install
return installer.install(specs, working_set)
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/easy_install.py", line 717, in install
req = self._constrain(current_requirement)
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/easy_install.py", line 664, in _constrain
requirement = _constrained_requirement(constraint,
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/zc/buildout/easy_install.py", line 1641, in _constrained_requirement
if version not in requirement:
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/pkg_resources/init.py", line 3201, in contains
return self.specifier.contains(item, prereleases=True)
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/specifiers.py", line 902, in contains
item = Version(item)
File "/Users/timo/workspace/plone/volto/api/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/version.py", line 197, in init
raise InvalidVersion(f"Invalid version: '{version}'")
pkg_resources.extern.packaging.version.InvalidVersion: Invalid version: '5.3.1 # without this volto is not building locally'
make: *** [.installed.cfg] Error 1
make: *** Deleting file `.installed.cfg'
I guess this is not related to this PR at all...
—
Reply to this email directly, view it on GitHub
https://github.com/plone/volto/pull/4252#issuecomment-1722169318, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AADW4D367JK5UPXVE6URW73X2VLT3ANCNFSM6AAAAAATYIBNDE
.
You are receiving this because you were mentioned.Message ID:
@.***>

@sneridagh ok, I gave this a shot locally. When I click on the "yes" icon in the modal nothing happens and I see an error trace in the JS console:

Some other observations:

as @tiberiuichim suggested, we might want to not show the autosave modal when the user intention was to drop the content and click on the "x" cancel option
the modal shows up very briefly, I'd say this is important enough to stay
as a user I am clueless what my latest changes were, when I have no way of seeing the differences, it might be very tough decision, especially if I am not sure if the system would replace my current version with the restored version. the question that arises is: do I have to save afterwards or do I make a final decision here
the go/cancel icons are too far from each other and the "x" right to those buttons is confusing, we show two different "x" icons to the user, this needs an UI overhaul

I'd also improve the modal text explaining what happened and what the options are, maybe we need to be more explicit here and we shouldn't use the Volto save/cancel buttons at all

@sneridagh ok, I gave this a shot locally. When I click on the "yes" icon in the modal nothing happens and I see an error trace in the JS console:

Some other observations:

as @tiberiuichim suggested, we might want to not show the autosave modal when the user intention was to drop the content and click on the "x" cancel option

You are proposing to do not autosave when the user intention was "cancel", thus discard all the changes made until that moment, right? I'm +1 to change the flow in this way.

the modal shows up very briefly, I'd say this is important enough to stay

I agree, it should be permanent, I'd say, until the user makes up his mind.

as a user I am clueless what my latest changes were, when I have no way of seeing the differences, it might be very tough decision, especially if I am not sure if the system would replace my current version with the restored version. the question that arises is: do I have to save afterwards or do I make a final decision here

As one of the videos shows, the user can undo-redo the changes to see them. The decision is not final, and you can always not save, load again the server version. And if for some reason someones changes its mind after save, then you can revert the change in the history view.

the go/cancel icons are too far from each other and the "x" right to those buttons is confusing, we show two different "x" icons to the user, this needs an UI overhaul

I agree, any proposal?

* I'd also improve the modal text explaining what happened and what the options are, maybe we need to be more explicit here and we shouldn't use the Volto save/cancel buttons at all

Any suggestion? Steve already reviewed that and it seemed to him enough explicit. At the end the options are not that complicated, apply the saved changes or not. Saying I don't think is right or correct is not enough.

@rexalex could you please take care of the things mentioned above, and the error @tisto found? It seems an easy one, a rendering of a non allowed element  inside a <p>.

One thing that I would like to discuss is the wording. When I hear "autosave" I think about the autosave functionality in Google Docs, which is not what we implemented here. What about calling this "content recovery"? Any other ideas? @rexalex @stevepiercy @tiberiuichim @sneridagh @davisagli @ksuess

Recovery is not the right term because the content was never lost. The autosaved content is a version of stored content.

@tisto @stevepiercy How about "local autosave" to clarify it's not being persisted in server?

I don't see a problem with plain old "autosave". Most end users won't know the difference of where content is autosaved. If you qualify it with "local" or "remote", that could increase confusion.

@stevepiercy say you are working on something in an application (like LibreOffice) and your OS crashes. The application will ask you next time you open it if you want to "recover the document", see LibreOffice:

I never saw a modal asking if I wanted to access my "autosaved document". I am not a native speaker. Our use case and what it solves is similar to the document recovery (the browser crashes or is closed, we ask the user if she wants it back).

@stevepiercy I think @tisto has a point. When I hear "autosave", I assume that means that I never have to click a save button because it always happens automatically. That's not what this feature is.

@davisagli I thought this feature always autosaves content locally after the user stops interacting with the content after a defined duration, right?
I think the question is what do you call the process of loading that autosaved content? Did the user close the browser window or navigate away from the page without saving the content first? Did the app or browser crash? Was the user's intent deliberate, accidental, or completely outside their control?
"Recover" is appropriate in the LIbreOffice context. It attempts to recover lost data from a fatal disaster outside the user's intent. Recovery does not happen if the user deliberately closes the file.
Perhaps the term "restore" would be a more appropriate verb than "load" and "recover"? Google Drive uses "restore" not "recover" in its version history feature. Its autosave feature is similar to my understanding of this feature in Volto. For example, in a Google Doc, if I type something and immediately close the document before it saves to the remote drive, then the changes are not autosaved. If the changes get autosaved, either because there was sufficient time or I have Edit Offline turned on, then I can restore an autosaved version, albeit only the last autosaved version.
From the Merriam-Webster site:
https://www.merriam-webster.com/dictionary/restore

https://www.merriam-webster.com/dictionary/recover

@tisto @stevepiercy I'd like to move forward on this one, and release it right away. Right now it's blocking 17, and we are approaching the PC quickly.
Could we get to an agreement? Tomorrow we have the Volto Team Meeting.
Thanks!

@sneridagh I'm awaiting a response from @davisagli or @tisto to my most recent comment. I might be wrong about what this feature actually does.

Volto Team Meeting (2023-09-26) decisions:

We settled in "Restore" as the term to use in all literals (as opposite of "autosave").
We had the feeling that it needs more polishment, especially in the UX interactions, so we will not rush and wait for the next alpha phase and slate it for 18.
If it seems sensible, add a diff view feature in case of conflict with the current "saved in server" version, if any (at the moment of the meeting we didn't know if that could even happen at some point).
Try to determine if it would be also an option as a complement to this feature to introduce a "form unload" protection mechanism.
It seems sensible to put this feature under a feature flag

As a side discussion, I have another idea for UX, for the Confirm() dialog that restores the saved state. Rather then letting the user decide what to do about the saved state, what if we just load that state and show a Toast message saying something like "Found a previous unsaved version, it is now loaded. You can undo and load the saved version".

I think @tiberiuichim idea got lost somehow.
This feature should not be a recovery from saved version choice like libreoffice (I hate this UI). You are giving the user a choice while giving them no information on how to make the choice.
Instead this should be considered the "resume unsaved" feature and it could work like this:

if you edit then close the browser and then later reedit

you get a toast to say "you are editing unsaved content x days old. click cancel to revert to the saved version"

if you edit and close the browser and someone else tried to edit

they can't. it's locked

if you edit and close the browser and someone overrides the lock and edits and then you go back in and edit

you get a toast to say you lost your changes. bad luck. later this can be improved with an option to save as a working copy maybe.

if you edit and then cancel

I suspect the best thing to do is just abandon the local changes. The user is explicitly cancelling.  Instead click off the page could put up a toast that their changes were saved in their browser and they will learn.  but I'm 50/50 on this. a back button + cancel button is maybe the best option.

All of this means we can avoid having diffs of the local version until later and the changes to this PR to include it earlier are very minimal both technically and to the current user flows @davisagli @tisto @sneridagh ?
But later it would be nice to move the history view into editmode and then you can diff your unsaved changes against the saved version or any other. No special diff mode is needed.
or... if there is a back button then you don't need to move history view into edit mode. The user clicks back, goes to history, views the history (which includes unsaved changes at the top), goes back to edit and they are working where they left off.
Later an indicator can be added to show you have unsaved changes on both the toolbar and the contents view. But that's not needed now.

I replaced "load" with "restore" and added "autosave" to Vale to silence errors.

I fixed a couple of i18n issues, but I have no idea of how to fix the remaining few. https://github.com/plone/volto/actions/runs/6322673648/job/17168722091?pr=4252
Is that a release manager task?

rexalex, ALEXANDRU MEDESAN your emails are not known to GitHub and thus it is impossible to know if you have signed the Plone Contributor Agreement, which is required to merge this pull request.
Learn about the Plone Contributor Agreement: https://plone.org/foundation/contributors-agreement How to add more emails to your GitHub account: https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account


Just remove the ^E character

Current coverage is 96.70% (diff: 100%)

Merging #8 into master will not change coverage

@@             master         #8   diff @@
==========================================
  Files            19         19
  Lines           485        485
  Methods          77         77
  Messages          0          0
  Branches         71         71
==========================================
  Hits            469        469
  Misses           16         16
  Partials          0          0

Powered by Codecov. Last update ba81904...f095339


CVE Rescoring for nginx-ingress-controller-seed & ingress-default-backend

How to categorize this PR?

/area security
/kind enhancement
What this PR does / why we need it:
Add CVE re-scoring configuration to  nginx-ingress-controller-seed & ingress-default-backend
Special notes for your reviewer:
Similar to https://github.com/gardener/gardener/pull/7289
Release note:

NONE

/retest

/lgtm

/override pull-gardener-e2e-kind

/override pull-gardener-e2e-kind


[DOC] Architecture Diagram

What's the document you plan to update? Why? Please describe
Create an architecture diagram showing all Longhorn components their interactions and the separate data- and control-planes.
Additional context
As an example, a similar diagram for OpenStack:

Some thoughts. We can have macroscopic and microscopic architecture diagrams.

Macroscopic architecture diagram: This type of diagram provides a high-level overview of the system. It typically includes components such as pods, ports, labels, and the overall connectivity between them. This diagram is useful for understanding the structure and topology of the system.

Microscopic architecture diagram: This diagram focuses on a more detailed level, highlighting the interactions between individual components within the system. It could show how specific parts communicate, data flow, and dependencies.

Can the macroscopic diagram be what we use in the speaking sessions?

Can the macroscopic diagram be what we use in the speaking sessions?

Yes! Looks good. And we can circle replicas and engine to form an instance-manager pod.
I'm thinking we can add some information such as Longhorn's labels and ports in the macroscopic diagram as well.


osx library not found, but installed

ld: library not found for -lvlc
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Can someone using the library on OS X help with this issue?

I had similar error so something like this should work:

Make sure MacOSX.sdk exists by using following command
ls SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

If its there then cool go for next command
export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

If its not there then you'll need to install xcode-command-line-tools
I hope this helps

Closing this issue. Let's discuss all macOS installation issues in https://github.com/adrg/libvlc-go/issues/13.


regexp: add ErrLarge error

The fix for #55949  introduced various regexp size limits in the regexp parser.
To avoid adding new API, the fix returns ErrInternalError on regexps that are too large.
For Go 1.20 we want to give this error a proper value with a good message.
I propose to add a new ErrorCode:
ErrLarge          ErrorCode = "expression too large"

See also #51684 which added a similar error after a similar security fix.

This proposal has been added to the active column of the proposals project
and will now be reviewed at the weekly proposal review meetings.
— rsc for the proposal review group

Based on the discussion above, this proposal seems like a likely accept.
— rsc for the proposal review group

No change in consensus, so accepted. 🎉
This issue now tracks the work of implementing the proposal.
— rsc for the proposal review group

I noticed this is still open while looking for something unrelated on https://goissues.org/regexp. Is there something else to do here?

There is nothing else to do.  Thanks for pointing that out.

Indeed—this was both implemented (CL 444817) and covered in release notes (https://go.dev/doc/go1.20#regexp). Placing this issue in the corresponding milestone retroactively so it'll be easier to determine when this change happened if looking at this in the future.


NullReferenceException after click a Random Page

Hello,
I have load the project and added it by your example on youtube...
All work fine, but when i click on a navigation item, i'm get a NullReferenceException. And i don't know where it comes from..
The error occurred:
Type:       NullReferenceException
Message:    Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Data:       0 entries
Stack trace:

Thats the last entries..
02.11.15 10:56:39.219	jny12l5zq1ufvbp1crzaaarl	Frame.set_Template: old value - null, new value - ASP.NestedFrameControl
02.11.15 10:56:39.255	jny12l5zq1ufvbp1crzaaarl	<-  WebWindow.CreateControls
02.11.15 10:56:39.388	jny12l5zq1ufvbp1crzaaarl	--------------------------------------------------------------------------------
02.11.15 10:56:39.389	jny12l5zq1ufvbp1crzaaarl	Execute action
02.11.15 10:56:39.389	jny12l5zq1ufvbp1crzaaarl		Type: DevExpress.ExpressApp.Actions.SingleChoiceAction
02.11.15 10:56:39.391	jny12l5zq1ufvbp1crzaaarl		ID: ShowNavigationItem
02.11.15 10:56:39.392	jny12l5zq1ufvbp1crzaaarl		Category: ViewsNavigation
02.11.15 10:56:39.392	jny12l5zq1ufvbp1crzaaarl		Controller.Name: DevExpress.ExpressApp.SystemModule.ShowNavigationItemController
02.11.15 10:56:39.393	jny12l5zq1ufvbp1crzaaarl		Context.Name: Startseite
02.11.15 10:56:39.394	jny12l5zq1ufvbp1crzaaarl		Context.IsRoot: True
02.11.15 10:56:39.395	jny12l5zq1ufvbp1crzaaarl		Context.SelectedObjects.Count: 0
02.11.15 10:56:39.396	jny12l5zq1ufvbp1crzaaarl		Context.CurrentObject:
02.11.15 10:56:39.396	jny12l5zq1ufvbp1crzaaarl		SelectedItem: Anhaltende Datenelement Prüfung
02.11.15 10:56:39.398	jny12l5zq1ufvbp1crzaaarl	Creating the 'AuditDataItemPersistent_ListView' list view
02.11.15 10:56:39.400	jny12l5zq1ufvbp1crzaaarl	The 'AuditDataItemPersistent_ListView' list view is created
02.11.15 10:56:40.012	jny12l5zq1ufvbp1crzaaarl	Action 'ShowNavigationItem' done
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl	CallbackManager_CallbackCompleted:
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl		callbackManager: DevExpress.ExpressApp.Web.Templates.XafCallbackManager
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl		isLocked: False
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl	-> RaisePagePreRender
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl	<- RaisePagePreRender
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl	startUpScripts were registered
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl	clientScripts were registered
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl	clientIncludeScripts were registered
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl	clientScriptResources were registered
02.11.15 10:56:40.019	jny12l5zq1ufvbp1crzaaarl	CallbackManager_CallbackCompleted is completed
Did you have any idea?

Hi,
It's hard to say what really happens. Can you attach sample app that demonstrates problem?

Sorry i can't,... i try it with some demo applications, but there it isn't.. And i don't like to publish my project here. Is it possible to get a teamviewer session or something else?

You can create new project and implement sample business object, that demonstrates problem. We must reproduce error to fix it.
Error appears when you click on any navigation item or just specific?

The problem is away when i change the defaultnavitem.
There was a dashboard with 2 listviews and 1 scheduler. when i close the dashboard the error comes.. now i have delete the dashboard and don't get the error any more..
so i think the problem is the dashboard with scheduler... a dashboard just with listviews don't produce the fail...
i will try a little bit and come back...

Thank you for your researches, i'm sure it will be helpful to locate a bug

When i use any Page with the sheduler, the error come when i leave the specified Page. Do you have any Solution Idea?

Try to disable XafBootstrap.Web.CustomDashboardViewRootController


How to specify Jenkins job to be triggered by ADO Service Hook?

This is a useful article, but I don't understand how to specify the specific Jenkins job that is to be triggered by the service hook?
Also, how does it work with branches; for a 'Code Pushed' ADO event, does the service hook communicate to Jenkins which branch the Push was to?  How might Jenkins use that information to run a test on that specific branch?

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

ID: 8199ccc1-0335-ca66-a7b7-fc3bb403255d
Version Independent ID: 0f46e3f0-1e5e-4cbd-5854-557da117daa9
Content: Create a service hook with Jenkins - Azure DevOps
Content Source: docs/service-hooks/services/jenkins.md
Service: azure-devops
Sub-service: azure-devops-service-hooks
GitHub Login: @aaronhallberg
Microsoft Alias: aaronha

@DavidA2014 -- David, thank you for your questions.  Please consider these resources:

Azure DevOps Services
Azure DevOps on Stack Overflow

@aaronhallberg -- Aaron, please look into this issue.


symbolic links for resources used in sh_binary rule not working for windows remote execution.

Even after bypassing #673, symbolic links are not properly getting propagated to the remote execution executors for windows:
Action failed: toolchains//:test_re (test)
Remote command returned non-zero exit code 1
stdout:

C:\worker\work\4\1\exec>setlocal EnableDelayedExpansion

C:\worker\work\4\1\exec>set __RESOURCES_ROOT=.\resources

C:\worker\work\4\1\exec>set __SRC=C:\worker\work\4\1\exec\buck-out\v2\gen\prelude\749e8add6e5f1364\python_bootstrap\tools\__win_python_wrapper__\win_python_wrapper.bat

C:\worker\work\4\1\exec>for %a in ("C:\worker\work\4\1\exec\buck-out\v2\gen\prelude\749e8add6e5f1364\python_bootstrap\tools\__win_python_wrapper__\win_python_wrapper.bat") do set "__SCRIPT_DIR=%~dpa"

C:\worker\work\4\1\exec>set "__SCRIPT_DIR=C:\worker\work\4\1\exec\buck-out\v2\gen\prelude\749e8add6e5f1364\python_bootstrap\tools\__win_python_wrapper__\"

C:\worker\work\4\1\exec>set BUCK_SH_BINARY_VERSION_UNSTABLE=2

C:\worker\work\4\1\exec>set BUCK_PROJECT_ROOT=C:\worker\work\4\1\exec\buck-out\v2\gen\prelude\749e8add6e5f1364\python_bootstrap\tools\__win_python_wrapper__\\.\resources

C:\worker\work\4\1\exec>set BUCK_DEFAULT_RUNTIME_RESOURCES=C:\worker\work\4\1\exec\buck-out\v2\gen\prelude\749e8add6e5f1364\python_bootstrap\tools\__win_python_wrapper__\\.\resources

C:\worker\work\4\1\exec>C:\worker\work\4\1\exec\buck-out\v2\gen\prelude\749e8add6e5f1364\python_bootstrap\tools\__win_python_wrapper__\\.\resources\win_python_wrapper.bat buck-out\v2\gen\prelude\749e8add6e5f1364\cxx\tools\__dep_file_processor__\__dep_file_processor__ buck-out\v2\gen-anon\toolchains\749e8add6e5f1364443bc5d1e95a38d6\__rbox-python__\out\rbox-python\python.exe buck-out\v2\gen\prelude\749e8add6e5f1364\cxx\tools\__dep_file_processor__\dep_file_processor.py
stderr:
**The system cannot find the path specified.**

Changing:
https://github.com/facebook/buck2/blob/2214ec241cefe357faf499e30b26629ce6728c8c/prelude/sh_binary.bzl#L38
to use copied_dirs bypasses the problem.
Happy to provide a fix for this, as well as #673

@valadez-abel do you have a self-contained repro for this issue? I'm asking because internally at Meta we're using these rules with RE quite successfully, and so I'd like to understand what the difference is

I don't currently have a self contained repro for this. I can try to create one using zig, as I'm hitting this as soon as the prelude / shell scripts to run the python kicks in, so any cpp file should do the trick. Give me a few days, though I highly suspect that there's a combination in play due to how Engflow's RE is setup vs how Meta's is setup.


Is it possible to query a pushpin instance to see if a given ID is still connected?

I see in the docs you mention connection checking with IDs like m2zhttp_45517:pushpin-m2-7999_1_0. Is it possible to query to see if a connection id returned in the Connection-Id header in a websocker-over-http call is still connected?

Yes it should work. In the case of WebSocket connections, the IDs exposed by the stats socket are the same as the Connection-Id header.

Considering this answered. Can always re-open if otherwise.


Add Do method in Client

Do(* http.Requestt) (http.Response, error)
Sticking to http contract would help us to use this library in existing codebase, also using the *http.Response wouldn't hide information the default functionality.

This is fixed in #10 . Thanks to @sohamkamani


no work

UnregisteredEnv: No registered env with id: Myturtlebot-v0

Now it should work, I changed the default environment 'env_id' (see utils.py) to Pendulum-v1


specifying target repo name. use the original one by default

Resolve #6

Duplicated and closed by #9.


Should this library use zerocopy rather than declarative parsing.

@george-hopkins @kevinbader @ProfFan
I hope it's okay, that I tagged you here, but you're the only people I know, that use the library. I've been working on a Wi-Fi stack for the ESP32 written in Rust, based on the research conducted by the esp32-open-mac project and I noticed, that the declarative approach can generate a lot more code, which in some situations may be unnecessary and in general generates quite a lot of overhead. After taking a look at smoltcp's parsing code, I began thinking about using zerocopy imperative reading and writing. It would help me greatly to hear your opinion on this. I'll create a branch, where I experimentally implement zerocopy for some frame types.
Some elements, like the RSNE could benefit greatly from this, since the code gen for it is currently a mess.

I think smoltcp styled zero copy reading/writing is a better approach at least in embedded programs. If done nicely the API can actually be easy to use as well. The current API requires a copy in pwrite/pread every time...

That was my thought process too, and I think, that we can model certain frames (e.g. Authentication) a lot better this way.

I found out another benefit of the smoltcp approach: the xxxRepr structs are const-friendly because they don't take any buffers, which probably allows more compiler optimization.


unable to run trivy operator: starting controllers manager: failed to wait for cronjob caches to sync: timed out waiting for cache to be synced

I m deploying the latest trivy operator in my k8s cluster for security scanning but the operator pod keep restarting with the following error
{"level":"error","ts":1718101676.3287468,"msg":"Reconciler error","controller":"replicaset","controllerGroup":"apps","controllerKind":"ReplicaSet","replicaSet":{"name":"sgunturin-rwc-hop-17583-d000442b-2-6dc5dccb4b","namespace":"shared-endpoints"},"namespace":"shared-endpoints","name":"sgunturin-rwc-hop-17583-d000442b-2-6dc5dccb4b","reconcileID":"82822267-edee-4dea-8993-b4d16cb5f500","error":"getting service account by name: shared-endpoints/default: client rate limiter Wait returned an error: context canceled","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.12.3/pkg/internal/controller/controller.go:273\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.12.3/pkg/internal/controller/controller.go:234"} {"level":"error","ts":1718101676.3292227,"msg":"Reconciler error","controller":"replicaset","controllerGroup":"apps","controllerKind":"ReplicaSet","replicaSet":{"name":"demo-iso2-rwc-develop-70928db8-706-f894b84c8","namespace":"shared-endpoints"},"namespace":"shared-endpoints","name":"demo-iso2-rwc-develop-70928db8-706-f894b84c8","reconcileID":"5d663c1e-acd4-4d2c-bb80-299e877c45d6","error":"getting service account by name: shared-endpoints/default: client rate limiter Wait returned an error: context canceled","stacktrace":"sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.12.3/pkg/internal/controller/controller.go:273\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2\n\t/home/runner/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.12.3/pkg/internal/controller/controller.go:234"} {"level":"info","ts":1718101676.332867,"msg":"All workers finished","controller":"replicaset","controllerGroup":"apps","controllerKind":"ReplicaSet"} {"level":"info","ts":1718101676.3328931,"msg":"Stopping and waiting for caches"} {"level":"info","ts":1718101676.333098,"msg":"Stopping and waiting for webhooks"} {"level":"info","ts":1718101676.3331146,"msg":"Wait completed, proceeding to shutdown the manager"} unable to run trivy operator: starting controllers manager: failed to wait for cronjob caches to sync: timed out waiting for cache to be synced
current status
kubectl get all -n trivy-operator
NAME                                  READY   STATUS             RESTARTS       AGE
pod/trivy-operator-6d47b8b456-9zqcb   0/1     CrashLoopBackOff   10 (64s ago)   49m
NAME                     TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/trivy-operator   ClusterIP   None                 80/TCP    49m
NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/trivy-operator   0/1     1            0           49m
NAME                                        DESIRED   CURRENT   READY   AGE
replicaset.apps/trivy-operator-6d47b8b456   1         1         0       49m
Also for some reasons i dont see vulnerabilityreports no matter what changes i do following the previous issues.
kubectl get vulnerabilityreports --all-namespaces -o wide
No resources found
Kindly help

How do you deploy the operator and what Kubernetes versions are you using?
Also, getting service account by name in the log above indicates to me that something is not right with your RBAC.

Im deploying using helm chart and argocd and using the latest version
version: 0.23.3
appVersion: 0.21.3
what do you mean by this? "Also, getting service account by name in the log above indicates to me that something is not right with your RBAC."
Please tell me how do I fix it

I think that something is blocking your deployment with respect to your RBAC settings. If you deploy with helm, how does your values.yaml look like? And what Kubernetes cluster are you using? For me, Helm deployment just works fine, btw, without any special settings in addition.


Default folder should be where livebook is saved

Environment

Elixir & Erlang/OTP versions (elixir --version): 1.13.1
Livebook version (use git rev-parse HEAD if running with mix): 0.4.1

Current behavior
I create a new book, I save a .livemd file which is in a diferent folder where livebook server  was executed.
And when in Runtime settings I try to choose Mix standalone folder, it shows me the folder where livebook was executed on.
Expected behavior
I it makes more sense to show the same folder where the file is saved, as it is probably more likely the mix.exs will be there or higher up in a folder.

I can see it going both ways, as sometimes the user may explicitly start Livebook in the folder of their app. So we are keeping it as is for now, thanks.

I can see it going both ways, as sometimes the user may explicitly start Livebook in the folder of their app. So we are keeping it as is for now, thanks.

Yes, but  keep in mind that you can only run one Livebook, at least go through the hassle of setting up PORT and KEY_BASE.
I am talking out of my experience of running one Livebook for multiple projects. Not running one Livebook per project.
I don't know if there is an easier way to do this. Please let me know if there is.

Currently we use the same root directory for all file navigations and I think keeping this consistent makes sense.
For multiple projects you can just run Livebook in the folder containing all projects, so to start Mix runtime you just pick the project and that's it.

Seems to work by just changing the LIVEBOOK_PORT
No need to define  LIVEBOOK_SECRET_KEY_BASE
I think the README need to be updated.

LIVEBOOK_PORT - sets the port Livebook runs on. If you want multiple instances to run on the same domain but different ports, you also need to set LIVEBOOK_SECRET_KEY_BASE. Defaults to 8080.

Note the "If you want multiple instances to run on the same domain but different ports" part. Basically if you start on one port, then on another, and then refresh the first one, you will get an authentication screen. So you need to set the same secret key base for both (or alternatively use --no-token, to disable auth altogether).


[20023] Bump version to v2.10.3

This PR should be rebased once the below PR is merged:

#633

That would fix the CI issue.

@richiprosima please test this


look into alternative database options

having an actual db (not just a file we read / write into) would be most beneficial I think for this.

Rusqlite which extends SQLite is used as a local database to store this information and implemented with latest PR.


Update README URLs based on HTTP redirects

Created with https://github.com/dkhamsing/frankenstein
Corrected URLs

Was
Now

http://www.dollarswift.org
https://www.dollarswift.org/

https://framerjs.com/
https://framer.com/

https://swiftlang.ng.bluemix.net/#/repl
https://swiftlang.ng.bluemix.net/verify

          1 Error

:no_entry_sign:
Found 2 link issues

          1 Warning

:warning:
Too many changes (when adding, please keep it to one project per Pull Request)

Link issues by awesome_bot

Line
Status
Link

1041
301
https://moltin.com/ios-ecommerce-sdk/ redirects tohttps://www.moltin.com/ios-ecommerce-sdk/

2434
404
https://itunes.apple.com/us/book/swift-programming-language/id881256329?mt=11

  Generated by :no_entry_sign: danger


OCPBUGS-42868: Add CABundle and ProxyURL fields to access image registries

As stated in https://github.com/openshift/enhancements/blob/master/enhancements/oc/cli-manager.md#design-details;
Allow specifying certificates and CAs for image registries
Allow specifying of proxy configuration for image registries

In order to serve a better user experience, it is better to support ca bundles and proxy urls. This PR adds this.

/cherry-pick release-4.17


abstract class

andrew made changes on architecture need to be reviewed today

First code restructure pull request accepted.
Another round of code changes to be done.


[tiles] add units for tiles

get units from data fetch for the tiles

also MetricTon --> t

Very useful change!

The per-capita charts still show %?

If there are short-form overrides to apply, based on the unit DCID, like MetricTonCO2e -> MTCO2e, rather than the SV... should we have some way to do it?

yep - we do some unit rewrites in the frontend, though it's split for place explorer (internationalized) and the rest of the site...

The per-capita charts still show %?

The per capita charts had their units set when building the page config .. do we want to change that?

The per-capita charts still show %?

The per capita charts had their units set when building the page config .. do we want to change that?

I see. We can fix as a follow on.


Fix i386 release link for 7.8.4.

The i386 link for 7.8.4 in the current README.md points to 7.10.1 64bit.

Thanks!


ccleaner avast domains

I found that ccleaner after launch connecting to these domains. One of them is already blocked.
I found thread forum about ipm-provider.ff.avast.com here https://malwaretips.com/threads/µblock-origin-blocks-https-ipm-provider-ff-avast-com.101594/
Here is a full list of them
ip-info.ff.avast.com
ipm-provider.ff.avast.com
ipmcdn.avast.com
ncc.avast.com
shepherd.ff.avast.com

Already blocked:
analytics.ff.avast.com
@StevenBlack  please consider add them to your list. Before PR I want discous this in this issue ticket.

Block 'em all, I say.  No love for Avast here.  Will you PR this Tomasz @FadeMind?

@StevenBlack PR awaits 😉


Update index.html.twig

Change is needed for correct assignment of label to form by ID https://www.w3schools.com/tags/att_label_for.asp

1. Why is this change necessary?
Change is needed for correct assignment of label to form by ID https://www.w3schools.com/tags/att_label_for.asp
2. What does this change do, exactly?
Change the for attribute name to have correct HTML syntax for better JS usage etc.
3. Describe each step to reproduce the issue or behaviour.
Assigned JS that plays the label to be animated breaks here.
4. Please link to the relevant issues (if any).
5. Checklist

[x] I have squashed any insignificant commits
[x] I have read the contribution requirements and fulfil them.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-11756
Please use this issue to track the state of your pull request.

Hey @Isengo1989, thanks for your contribution 💙


GCP pub/sub subscription stops working after error

Expected Behavior
GCP pub/sub subscription should be resilient to temporary service / network issues.
Actual Behavior
When the Subscription::Receive method returns an error, the subscription is not reconnected automatically and only starts working again after the dapr process is restarted; see https://github.com/dapr/components-contrib/blob/master/pubsub/gcp/pubsub/pubsub.go#L238
An example error can be:
Subscription closed with error:
rpc error: code = Unknown
desc = closing transport due to:
connection error:
desc = "error reading from server: EOF",
received prior goaway:
code: NO_ERROR,
debug data: server_shutting_down"
Steps to Reproduce the Problem
(1) Start dapr sidecar and application and subscribe to GCP pub/sub
(2) After some amount of time, when the subscription is closed due to an error, new messages will not be received any more
(3) Restart dapr to continue receiving messages
NOTE: since errors that have caused the subscription to close are not currently logged, there is no way to know when the issue has occurred; I was only able to get to the error above after adding the following code just before return err in the handleSubscriptionMessages method.
if err != nil {
	g.logger.Warnf("Subscription closed with error: %s", err)
}

I imagine that a reconnect loop could be implemented in the handleSubscriptionMessages method to fix this issue and make the dapr GCP pub/sub component more resilient, similar to the dapr Azure service bus component here: https://github.com/dapr/components-contrib/blob/master/pubsub/azure/servicebus/servicebus.go#L342
Release Note

RELEASE NOTE:

Thanks for reporting this. Would you be interested in submitting a PR to fix this?

@yaron2 I would be happy to submit a PR for this.
Also, it appears that this is an issue with the GO GCP pub/sub library which has been reported here https://github.com/googleapis/google-cloud-go/issues/4257 and fixed in version 1.12.2.
In that case, I wonder if it would be enough to just upgrade to v 1.12.2 of the GCP pub/sub library? Or do you think it would still be useful to implement a reconnect loop in the dapr GCP pub/sub component as well (in addition to upgrading the GCP pub/sub library)?
I will be testing the fix at work over the next few days and will report here by the end of this week.

Perhaps upgrading the SDK version is enough. It would be great if you can report back and open a PR for this when possible.

@yaron2 testing over the past few days is looking good - it appears that upgrading the GCP pub/sub library to version 1.12.2 solves the problem. I plan to submit a PR for this next week.
I did test a reconnect loop as well, and after the library upgrade it didn't get triggered for server_shutting_down errors (because they are now handled internally by the pub/sub subscription), but there are still use cases where a reconnect loop might be useful (and the Azure Service Bus component already has one), so I might create a PR for that as well.

@yaron2 testing over the past few days is looking good - it appears that upgrading the GCP pub/sub library to version 1.12.2 solves the problem. I plan to submit a PR for this next week. I did test a reconnect loop as well, and after the library upgrade it didn't get triggered for server_shutting_down errors (because they are now handled internally by the pub/sub subscription), but there are still use cases where a reconnect loop might be useful (and the Azure Service Bus component already has one), so I might create a PR for that as well.

Sounds good, please submit the PR when ready.

@yaron2  please have a look at the PR for upgrading the GCP pub/sub library here https://github.com/dapr/components-contrib/pull/1285.
I will be submitting a separate PR for a reconnect loop + some error logging.


DateTime.now.toUtc seems inconsistent and possibly broken.

Dart 2.1.0 windows x64

I am building a flutter application that uses the current time in conjuncture with a timestamp from an external API.  The idea is that the API gives me a past timestamp and then I want to be able to find the duration between the two.  In the past, (a few months ago; prior to the dart 2 release) I could use DateTime.now().toUtc() and this would give me a current timestamp in UTC time.  Right now, it seems that this same call gives me the current local time with a UTC format.   I.E: 2018-12-23 06:02:15.000Z vs 2018-12-23 06:02:15.000
I am able to achieve what I want using DateTime.now().subtract(DateTime.now().timeZoneOffset) but this is fairly verbose and it seems pretty round-about/contradictory compared to other language implementations.  Java's Instant class gives you the time in UTC by default as does Python's datetime.utcnow function.
Is this an intended feature or is this some kind of bug that was introduced during the dart 2 release?

I can't repro - is this with the Dart VM? What does DateTime.now().timeZoneName return for you?


make subjects db environment-specific

Signed-off-by: Dominik Jall<EMAIL_ADDRESS>

FYI: @domdom82 @jeremiaswerner

looks good. background - we have different authdbs in blue per environment. now described as "auth_db" (following guideline where _ notation is env specific and . notation is global). To make this look the same in open we have added this PR.


Upgrade to router 0.0.16

Then we can start using trailing commas in the macro invocation :)

Closed by #29.


[DML] Upgrade DirectMLX to the latest version

Upgrade DirectMLX to enable more features such as set roundingType or outputSizes for pool2d. Link to https://github.com/microsoft/DirectML/issues/205.


fix(es/parser): handle rescanning for LShift when parsing type args

Description:
The related issue is a product to the fact that the lexer sees a << token in fun<<T>... and therefore parses the type args as an arrow function.
This PR adds the handling of the "split" of << when beginning to parse type args.
I am open for suggestions, I still find this a bit odd (in parse_ts_type_args()):
if is!(p, "<<") {
    p.input.cut_lshift();
} else {
    expect!(p, '<');
}

Related issue (if exists):

Closes #8581

Can you add some test cases for https://github.com/swc-project/swc/issues/8209 and https://github.com/swc-project/swc/issues/7187?

Sure, I added the test cases in the ecma_parser and swc packages, not sure if it was necessary to have in both though but i felt like it would be a good idea since the expected output is different.


[build] prefer picking up sqlite3 from Darwin SDK for llbuild

When building llbuild on Darwin platforms, ensure that we prefer the SQLite from the SDK
instead of picking one found elsewhere (e.g. in /usr/include )
Addresses rdar://problem/57300418

The test to prove that we don't have regression is at https://github.com/apple/swift-llbuild/pull/607

This change needs also a change on llbuild side
https://github.com/apple/swift-llbuild/pull/608

@swift-ci please smoke-test

@swift-ci please smoke test

Probably should squash these before merging, but LGTM


grouping multiple asciicasts

Hello,
It would be nice to have the ability to group own recordings on asciinema.org, sort of like a playlist. It makes related recordings more manageable for the owner and users can jump between relevant recordings more easily.
Thanks!

I never thought of that but this sounds like a really neat thing to have on asciinema.org. Thanks for the idea.


Smaller Issues

The call to action on the speakers page isn't aligned to picture, and text
Tim needs a one liner
Proactive needs a tag line
Website needs META information
Conference and Hackathon text needs to be left aligned to fit in with the rest of the site
Discount code on ti.to needs to be styled
Footer tag isn't the same as main site tag

Can we split these into different issues?

Should only take 1 commit to fix all

Remaining Items:
Tim needs a one liner
Proactive needs a tag line
Website needs META information
Discount code on ti.to needs to be styled

Proactive TAG LINE has been added

All changes and made, and deployed


All .pyd files are listed in Intellisense view for venvs

Virtual environments list each .pyd file in the Scripts folder as a package in IntelliSense.
I suspect this is technically correct, but we should try and avoid it if possible.

This also occurs for Anaconda, which makes it somewhat more important to fix.

This is because the orig-prefix based paths for a venv are set by site.main(), and so we don't mark them as stdlib.


chore: fix dependabot alerts

What type of PR is this?

Which issue does this PR fix:
What does this PR do / Why do we need it:
If an issue # is not available please add repro steps and logs showing the issue:
Testing done on this change:

Automation added to e2e:

Will this break upgrades or downgrades?
Does this PR introduce any user-facing change?:

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

It looks like the ci failures are caused by a bug in gorilla/mux v1.8.1: https://github.com/gorilla/mux/issues/739


feat: optimized accessibility icons

@karsa-mistmere @ericfennis is a change like we see in the thumb of the hand icon acceptable?

@jguddas No, now it creates a blurry line. See 100% view.

No, now it creates a blurry line. See 100% view.

@ericfennis which icon is a problem?

@jguddas Why did you close this one? 🤔

Gotta have to split it up and make it one PR per icon.


Allowing node_modules

The blanket ban on any path containing node_modules is problematic; see finder.js. Specifying whether files/paths should be ignored should be left to the .remarkignore file.
For instance, suppose I wanted to ignore only the top-level node_modules directory. My .remarkignore file (just as with a .gitignore file) would be
/node_modules/

If I wanted to ignore all paths containing node_modules, I could do
node_modules/
**/node_modules

But this is not how the unified-engine currently works. Instead, it just assumes that any path which has node_modules is off limits. This is problematic for project structures like
bin/
lib/node_modules/
lib/node_modules/**/node_modules/
node_modules/
test

where the top-level node_modules directory is reserved for external libraries and lib node modules directories are used for local modules. These local node modules are not in any sense "external" and will, for most cases, be considered part of the core library; e.g., tested and used like any other internal file.
Hence, I would suggest removing the blanket ban on node_modules and leave it to the user to specify if, and how, node_modules should be ignored.

If you believe node_modules is the primary path to ignore and want to alleviate a user from having to always specify that any node_modules path be ignored, then this could be a default. However, that default should be superseded by any user defined configuration.

Previously, it was the case that node_modules was a normal ignore pattern. I changed that in https://github.com/wooorm/unified-engine/commit/74eb209c1e4f8328cf98769cca709c60517caa2c.
I did that because the engine allows negation patterns to include previously ignored patterns. This can significantly decrease performance because if negations are used, all ignored paths must also be searched as nested files can be first ignored and later allowed by other patterns.
For example, the following ignore file:
!**/*.foo

Would otherwise result, on big node_modules directories, very poor performance. Note: This poor performance can also be found in JSCS and ESLint. I’m very happy that remark doesn’t have that problem.
In essence: I’d rather have great performance over allowing some node_modules to be searched. Sure, it’s a valid use case, but it’s not used very widely, right? On the other hand, if performance can be kept okay, I’m all for allowing this.

@wooorm If node_modules cannot be searched, we basically cannot use remark, as we use local node_modules extensively. That this may not be a common pattern has less to do with its legitimacy and more to do with many developers' failure to understand the require algorithm and how to leverage it within applications.
I can understand performance concerns and your wanting to prevent users from doing the "wrong" thing, but, at the least, would be good to have the ability to 'opt-in'.

@kgryte Yeah I agree about your use case, and I’d love to make it do-able but I’m as of yet unsure how to.
I did add a note about negation patterns though: ff1ab4d, so may that’s enough?

@wooorm could possibly use an example and maybe one highlighting this particular use case. Namely, if you ignore node_modules/ and then use negation, you force unified to search node_modules for anything matching the negated pattern. For large node_modules dependency trees, this results is significant performance degradation.
Granted, this approach is buyer-beware and people will do ill-advised things and one response might be to say RTFM, but, then again, as a user, if you find yourself trying to use negation patterns, you may want to stop and consider the complexity implications regardless.

Awesome! Thanks!

You’ll still have to deal with the perf though, I believe :/

@wooorm I typically don't use negated patterns, but I do provide a list of files I wanted, e.g., linted, For example,
$ remark ./lib/node_modules/foo.md ./lib/node_modules/bar.md --use remark-lint

My understanding is that these will not, by default, be filtered against, correct?

Unfortunately not, as node_modules are initially hidden, passing files in triggers a failure.
So you’ll still need an ignore file with a negated pattern.
P.S. ESLint does the same:
🚀  foo master: touch .index.js
🚀  foo master [?]: eslint .index.js

~/foo/.index.js
  0:0  warning  File ignored by default.  Use a negated ignore pattern (like "--ignore-pattern '!<relative/path/to/filename>'") to override

✖ 1 problem (0 errors, 1 warning)

Then the notion of "passing them in as 'globs'" is a bit confusing. And I would expect that, if I give exact filepaths, those should not be ignored.

Could you expand on notion of "passing them in as 'globs'" is a bit confusing? I’m not quite getting it.
I quite like this behaviour. It’s most often the desired behaviour. And if it’s not, you can get around it. Preventing ignored files from being processed is also useful and prevents detrimental cases.

@wooorm Revisiting this issue. Yes, I can see a possible use case for ignoring provided files; although, I am not sure this should be the responsibility of remark. If I am given a list of Markdown files to lint by some upstream utility and only want some of those files to be lint, I could filter them myself before passing them to remark.
Currently, with how ignore works with remark, if I explicitly generate a list of files to lint, for example, I have to try and configure remark to not override my file list and to not ignore files based on some internal rules. This is a frustrating experience. Even if I use negated patterns, remark still ignores my explicitly provided list.
Thus to circle back to "passing them in as 'globs'", I am referring to the fact that globs and exact file paths seem to be treated differently. The case being that I have exact file paths (some of which include node_modules in the path), and, even if I include !node_modules or some other variant in the remarkignore file, these files are being ignored. The only way to get around this is by modifying L193 in ignore.js to
return isHidden(basename);

With regard to "most often the desired behavior", I am not sure about this. Particularly in shell pipelines, a more common use case is where 1) a list of files is generated (e.g., using find) and 2) this list is piped to a downstream utility which then operates on those files (e.g., grep).
By supporting globbing, remark interjects itself into mandating particular ways of compiling file lists on which to operate. Particularly for my use cases, I am extensively compiling various lists of files (e.g., Markdown files), on which I want to independently operate (e.g., linting). However, because of how ignore works, I am not able to use remark.
What is desired is that, if I give an exact file list, remark has the option of acting in such a way as considering that list as authoritative, and thus not requiring any filtering.

Sorry, I didn’t have time to review this at the time, and of course forgot about it... 😒
Thanks for revisiting; I’m not entirely sure anymore how this works internally, and why it works this way.
I have plans for changing the workings of unified-engine a bit, and I hope that I can familiarise myself again with the code by doing that, and form an opinion on your problem!

Cool. In the meantime, I will just use a modified (read: hacked) version of remark (and unified-engine) which will allow us to lint our Markdown files.

Update: using "patched" versions of unified-engine --> unified-args --> remark-cli is not particularly viable, as remark-cli is part of a monorepo. Because npm does not allow installing from Git subdirectories (see npm/npm#2974), no elegant solution exists to install a version of remark-cli, which uses patched dependencies.

@wooorm Another update. I am not able to lint Markdown files in the .github directory, even when using negated patterns. Once again, I am passing remark-lint a set of exact filenames I want to lint. unified-engine correctly recognizes the negated pattern (e.g., !.github), but minimatch does not return true. I tried several different pattern variants, but none allowed me to lint issue and pull request templates in the .github directory.
This is another case where overriding a user-supplied file list by filtering using some internally defined criteria causes undesired behavior. Namely, preventing the user from processing an explicitly defined list of files.

 Sorry.
I’ve started work on rewriting the engine. I’ve just completed replacing the finder to work as expected.
What remains is:
a) the ignorer, which should work per-file instead of based on the CWD, and should return whether file paths are explicitly ignored (through ignore files) or implicitly (.hidden and node_modules/hidden);
b) presets should work based on functions instead of file-paths. This is something off-topic but I’d like to release it together so the rest of the ecosystem can update too.
Sorry it’s taking a while. I’m moving, starting start-ups, and it’s a rather big project to deal with.
Thanks for waiting! 🍻

I’ve rewritten the find and ignore mechanism: https://github.com/wooorm/unified-engine/tree/new-find-and-ignore. Could you try the branch and see if it works, as expected, for you?
I haven’t updated the docs yet, but it should be more straightforward now.

Will try and do so tomorrow.

Perfect, thanks! 👍

Ping :)

@kgryte Ping!

@wooorm Used the branch. Was able to get the same results as my patched (hacked) version. Hence, my current assessment is that the find and ignore mechanism works in accordance with my expectations.


add ability to return an object with lazy variations of the desired functions / props

Hey!
I thought this module could be even more useful if we had the ability to return an object with the lazy versions of the props one needs. Useful when using ES6 with the destructuring assignment and still get the lazy versions of the needed props.
// extract lazy variations of the props you need
var members = lazyReq('lodash')('isNumber', 'isString')

// useful when using destructuring assignment in ES6
let { isNumber, isString } = lazyReq('lodash')('isNumber', 'isString')

The only minor caveat is that for property members a function stub that returns the value will be returned. I think most people using this feature will probably want to extract a function anyway.
This could be mitigated to some extent using an object to specify the Type of the property to extract instead of just passing arguments:
let { isNumber, isString } = lazyReq('foo')({
  function: "baz",
  property: "bar",
  ...
})

I also noticed there could be other lazy loading strategies. I simply went with the simplest one I could imagine, but certainly a more sophisticated algorithm could be imagine.
Let me know if there is anything weird with the PR or whether you want to add more tests.

:+1: Cool idea :)

It was a nice thing to improve this with defineProperty now it's magical.

Thanks! :)


Fixed breadcrumbs.  Updated tests.

Added breadcrumbs to search page (which didn't have them before.)
Fixed breadcrumbs on service pages where they (a) didn't link back to search, or (b) include the 'cloud technology and support' page.
Removed current page title as last breadcrumb I found them.  It's not how gov.uk (random example page) do it, so I figured we don't want to do it either.

Also rewrote the tests using lxml (recommended by @allait).
>> Story on Pivotal

Screenshots
Before: Search Results

After: Search Results

Before: Service Page

After: Service Page

Before: Page Title in Breadcrumbs

After: Page Title removed from Breadcrumbs

Ready to merge whenever.  Ralph has seen it.

I left a couple of comments about the tests, bit otherwise looks good :+1:


Predator-Prey Flock Environment

Hi, I am the maintainer/creator of Esquilax a JAX large scale sim and RL environment library.
As a first use case of the library I've been working on a predator-prey training environment:

Two sets of agents aim to pursue/evade each other
It's intended for larger scale use cases (i.e. 100s of agents)
Each agent has a simple view model of the surrounding environment, allowing for observations space to independent of the number of agents
All implemented in native JAX

Would this be something you'd be interested in porting into Jumanji? I'd be happy to work on implementation. The version on the linked repo is an initial prototype, with lots of scope to add different setups (e.g. communication between predators, multiple competing agent types).

Hi @zombie-einstein
Thanks for opening the issue, I remember chatting to you about this env on reddit :wave:
Personally I think it would be a nice addition, although this is supposed to be an industry focused benchmark suite, so I'll wait for @clement-bonnet to give his opinion.
If you are happy to implement this I'm happy to review it, but I can't devote too much other time to this

Hi @zombie-einstein sorry for leaving this hanging for a while if you are still interested in adding this to jumanji we'd be happy to accept the addition :pray:

No worries @sash-a , great I'll look to make a start on this!

Closing this issue. Will open  a PR with implementation.

Hi @sash-a just wanted to check what the best tactic was to get this reviewed. I've got  the core functionality on a branch of my fork here, but it's still missing docs, some more in-depth tests, etc.
I was trying to avoid opening too large a PR, so what was best to do?

Open a PR for the added functionality and then additional PRs to finalise?
Use the Fork as a staging area and review PRs into the Fork main, before merging the whole fork?
Just finish up the whole thing in one big PR?

Good question, so we usually use option 3 and just review the whole PR at once. Option two sounds best but honestly I'm quite used to option 3, so just go ahead and create a big PR for the whole thing, it ends up taking a while and getting lots of comments but I think it's relatively well tried and tested

Re-opening until this env is merged :smile:

Thanks, yeah makes sense.


[Documentation]: To check if a CNF uses Kubernetes alpha APIs test case description does not define when the tescase pass

Describe the bug
From the test case descriptions it is not clear when To check if a CNF uses Kubernetes alpha APIs test is OK? If the CNF uses alpha API-s or when it does not?
Expected behavior
Clarify the test case description.

Current documentation makes this clear.


RFC: simple_system macro

Summary
Provide a macro to simplify the creation of unit structure systems. i.e.
simple_system! {
    pub Test(arg: Read<'s, i32>, arg2: Write<'s, u32>) {
        *arg2 = 5;
        println!("{}", *arg);
    }
}

Motivation
System creation is one of the first things a new specs user has to interact with in order to do anything, meaning creating these in a low verbosity and straightforward manner should be a high priority goal.
Guide-level explanation
We need to create a new system for specs to use.  Systems are structures with some execution instructions and metadata attached to them.  Many systems don't need to store any data inside their own structure though, so for these we've provided a macro to simplify the declaration called simple_system!.  This macro makes declaring the system very similar to declaring a function.  First we enter the macro body:
simple_system! {

}

Then inside here we need first, the visibility of the system, i.e. "pub" or "pub(crate)".  Or if you just want it private, you can omit this.  Then after that we'll need the name of the system.  Rust structure names are usually written in PascalCase i.e. MyCoolSystem.  So thus far we should have something like
simple_system! {
    pub MyCoolSystem
}

After the name we'll take the resource parameters the system needs, surrounded by parentheses.  This is where systems start to differ from a typical Rust function, the dispatcher needs to know what mutability you're expecting for your parameters.  You specify this with Read and Write for resources.  You'd use ReadStorage and WriteStorage for component storages.
simple_system! {
    pub MyCoolSystem(
        resource: Read<'s, MyResource>,
        writable_resource: Write<'s, MyWritableResource>,
        components: ReadStorage<'s, MyComponent>,
        writable_components: WriteStorage<'s, MyWritableComponent>,
    )
}

But wait!  What's 's?  That's the system lifetime.  Most of the time you won't need this in your system body, but if you need to describe the lifetime of your resources it's exposed there.
Finally, let's add the system body.  It's created by adding { and } after the parameter declaration i.e.
simple_system! {
    pub MyCoolSystem(
        resource: Read<'s, MyResource>,
        writable_resource: Write<'s, MyWritableResource>,
        components: ReadStorage<'s, MyComponent>,
        writable_components: WriteStorage<'s, MyWritableComponent>,
    ) {
        println!("I just read this resource: {}!", *resource);
    }
}

(Assuming MyResource has a Display implementation.)
Once you've added the system to a dispatcher with .with(MyCoolSystem) whatever you write inside this body will be executed every time you call dispatch() on the dispatcher.
Reference-level explanation
This proposal would add the following macro to shred.
#[macro_export]
macro_rules! simple_system {
    ($viz:vis $name:ident($($arg:ident: $type:ty),*)$body:block) => {
        $viz struct $name;

        impl<'s> $crate::System<'s> for $name {
            type SystemData = ($($type),*);

            #[allow(unused_mut)]
            fn run(&mut self, ($(mut $arg),*): Self::SystemData) $body
        }
    }
}

This macro utilizes existing traits and capabilities of the library, it just changes the way System structures might be declared.  They can still be declared the original way, making this completely backwards compatible.
Drawbacks
The macro somewhat obscures what's going on behind the scenes in an effort to make specs more approachable from a front-end perspective.  This can be resolved with good macro documentation, but it might make the fact that a trait is being implemented not quite as apparent.
Rationale and alternatives
The primary rationale is to reduce boilerplate in system declarations.  We make a lot of systems so having a dedicated syntax and macro would be a boon.
Here's a comparison of this macro syntax and the current system syntax:
struct MyFirstSystem;

impl<'a> System<'a> for MyFirstSystem {
    type SystemData = ();

    fn run(&mut self, data: Self::SystemData) {
        println!("Hello!");
    }
}

vs
simple_system! {
    pub SimpleSystem() {
        println!("Hello World!");
    }
}

Alternatives:

Use a procedural macro instead.  It could result in a nicer syntax for the macro but we don't have a Proof of Concept yet.
Do nothing.  Leave system declaration in a mandatory verbose state.

POC'ed the first alternative in #499:
#[specs_system(SysA)]
fn sys_a(mut pos: WriteStorage<Pos>, vel: ReadStorage<Vel>) {
    for (pos, vel) in (&mut pos, &vel).join() {
        pos.0 += vel.0;
    }
}

if it doesn't make it into specs, I might push it into its own crate since it'll probably be handy for debugging

cc @torkleyy

I'm still in favour of putting it into its own crate as I said earlier.

Additional drawback: different syntax for system with field and "simple system".

Personally I think @azriel91's alternative is the way forward. Free-standing functions without needing to declare lifetimes makes systems way more user-friendly, especially to devs who are new to Rust. When I showed Amethyst to a friend of mine who's familiar with Rust but hasn't used it much, he immediately got put off by how complex the definition for a System is. The simple_system! macro as proposed improves the situation, but having bare fns as systems is drastically simpler for new users in my opinion.
A note on implementation: Conceptually, simple_macro! and #[specs_system] do the same thing: They allow you to write a bare fn and use code generation to automate away the boilerplate. But while the proc macro attribute is more complex to implement and maintain, it is also easier for users to use, it can produce better error messages, and is more familiar to users coming from languages with attributes/directives (which will be important as Unity's ECS becomes more widely used, since it heavily uses C# attributes). Overall I think it makes sense for us to start investing heavily in proc macros now that they're going to be stable in 1.30.

Yeah, I wrote on Discord what compromise I'm fine with:

#[shred(gen = "FnSystem")] in shred-derive
call the standalone function from the generated System implementation

I'd like to remind that lifetime elision rules changes in 2018 edition.

Ok, I'm content with the proc-macro approach.  Do we have any implementation PRs yet?  If not I'll make one when I get back from my vacation.

Not yet, but as you probably know I try to maintain compatibility with older Rust versions, so given that 1.30 just released, I'd like to wait before merging.


readme.txt has incorrect numbered list

OrientDB Version, operating system, or hardware.

v2.2.12

Operating System

MacOSX

Under "Quick Start" it counts 1) 2) 2) 3). Should be 1) 2) 3) 4).

@dalaidunc Would you like to send a Pull Request for that against the develop branch?


Ensure suggestions is an array and close autocomplete on search

Ensure suggestions is an array and close autocomplete on search
When a search yields no suggestions the backend will produce a malformed response in the form {"": []} (given that the structure should be [{...result...}, ...]), which causes the front-end to choke. This cleans that up to ensure we always put an array into the redux store. Ideally this would be fixed on the back-end but ensuring an array on the front-end could also be a worth-while addition.
Also closes the autocomplete when a search is initiated as a small quality-of-life improvement to the search experience.
Checklist

[ ] Unit tests written
[x] Manually tested
[x] Prettier & ESLint were run
[ ] New dependencies are included in package-lock.json

rebuild

rebuild

Deployed to: http://staging.quran.com:32776


shell: Add macros for creating conditional commands

Added macros for creating commands which depends on compile time flags. Macros can limit number of #ifdefs in the code.
Instead of using:
#ifdef CONFIG_FLAG
static int cmd(const struct shell *shell, size_t argc, char **argv)
{
}
#endif

#ifdef CONFIG_FLAG
SHELL_CMD_REGISTER(foo, NULL, "help", NULL);
#endif

One may use:
static int cmd(const struct shell *shell, size_t argc, char **argv)
{
}

SHELL_COND_CMD_REGISTER(CONFIG_FLAG, foo, NULL, "help", NULL);

Update shell_cmds.c where different approach was taken: Command was returning error if not supported. Now, with new macros commands are removed from the system.
Note that subcommands create an array so it's not possible (at least i couldn't find a way) to not create element and yet somehow indicated to the compiler to not generate warning on not used function. I'm creating empty command ("" syntax and all NULL pointers) in that case. Shell is updated to ommit such commands. It means that disabled subcommand will take 20 bytes of flash.
Note that only only root for disabled tree needs to indicate conditional presence. If that is disabled then subcommands in that tree will also be removed from the binary.
@Vudentz i've seen that bluetooth commands (subsys/bluetooth/shell/bt.c), because of many feature flags, looks quite messy  because of multiple ifdefs. Applying this would clean it.

@jarz-nordic  @Vudentz PR brought back to life. Rebased. Can you review?

@jarz-nordic  I've added new macros to documentation, Creating commands section.

@carlescufi can you merge it?


Update extension license

I believe this means we have to change the package.json to point to an MIT license too. Otherwise the extension will still ship with the marketplace license? Maybe you still want that.

It should be ok if we still have the license file. I'd ask CELA. Otherwise, somehow mention both MIT and 'look at license.txt' on the package.json

Codecov Report

Merging #5777 (5e73905) into main (03597f5) will increase coverage by 6%.
The diff coverage is n/a.

@@           Coverage Diff           @@
##            main   #5777     +/-   ##
=======================================
+ Coverage     65%     72%     +6%
=======================================
  Files        352     403     +51
  Lines      24148   26916   +2768
  Branches    3637    3926    +289
=======================================
+ Hits       15818   19468   +3650
+ Misses      6939    5811   -1128
- Partials    1391    1637    +246

Impacted Files
Coverage Δ

src/client/datascience/kernel-launcher/types.ts
48% <0%> (-8%)
:arrow_down:

src/client/common/errors/index.ts
69% <0%> (-4%)
:arrow_down:

src/client/extension.ts
57% <0%> (ø)

...lient/datascience/devTools/jupyterOutputChannel.ts
15% <0%> (ø)

...tascience/interactive-ipynb/trustCommandHandler.ts
78% <0%> (ø)

src/client/terminals/serviceRegistry.ts
100% <0%> (ø)

...science/interactive-common/notebookUsageTracker.ts
71% <0%> (ø)

src/client/extensionActivation.ts
97% <0%> (ø)

src/client/interpreter/display/visibilityFilter.ts
84% <0%> (ø)

...ascience/notebook/notebookEditorProviderWrapper.ts
63% <0%> (ø)

... and 168 more


Show an alert if not file changes when Discard All Changes

Description

Related Issues

#1641

Checklist

[ ] I read and understood the contributing guide as well as the code of conduct
[x] The issues this PR addresses are related to each other
[x] My changes generate no new warnings
[x] My code builds and runs on my machine
[x] My changes are all related to the related issue above
[x] I documented my code

Screenshots
https://github.com/CodeEditApp/CodeEdit/assets/103433299/eb1d652a-8802-4b01-bac3-bbe5ecdcc0db

Instead of creating a new Alert, we should simply disable the Discard Changes menu item.

I take that back, this is what Xcode does

Instead of creating a new Alert, we should simply disable the Discard Changes menu item.

Yes, this is my first thought. But after comparing with Xcode and try the Stash Changes in our app, I think this behavior is more consistent with them.