[BUG] BMI270 Latency issue

Hi,
I have noticed there is some latency (~80 ms) on my IMU streams (with respect to the latest RGB frame time) when I use an OAK-D Wide that has a BMI270 IMU. But when I test the same code using an OAK-D IOT with a BNO086, the IMU times are properly ahead of the RGB times.
It is probably related to #684 since the latency issue is fixed (latency becomes negative) when using depthai==<IP_ADDRESS> but the issue happens when using the latest version (2.22.0)
Will it be possible to have a stable sampling frequency and low latency using the BMI270?
Thanks!
Code:
#!/usr/bin/env python3

import cv2
import depthai as dai

def timeDeltaToMilliS(delta) -> float:
    return delta.total_seconds() * 1000

# Create pipeline
pipeline = dai.Pipeline()

# Define sources and outputs
imu = pipeline.create(dai.node.IMU)
imu.enableIMUSensor(dai.IMUSensor.ACCELEROMETER_RAW, 400)
imu.enableIMUSensor(dai.IMUSensor.GYROSCOPE_RAW, 400)
imu.setBatchReportThreshold(10)
imu.setMaxBatchReports(10)

xlinkOut = pipeline.create(dai.node.XLinkOut)
xlinkOut.setStreamName("imu")
imu.out.link(xlinkOut.input)

camRgb = pipeline.create(dai.node.ColorCamera)
camRgb.setResolution(dai.ColorCameraProperties.SensorResolution.THE_1080_P)
camRgb.setInterleaved(False)
camRgb.setColorOrder(dai.ColorCameraProperties.ColorOrder.RGB)

xoutRgb = pipeline.create(dai.node.XLinkOut)
xoutRgb.setStreamName("rgb")
camRgb.isp.link(xoutRgb.input)

monoLeft = pipeline.create(dai.node.MonoCamera)
monoRight = pipeline.create(dai.node.MonoCamera)
depth = pipeline.create(dai.node.StereoDepth)
monoLeft.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P)
monoLeft.setCamera("left")
monoRight.setResolution(dai.MonoCameraProperties.SensorResolution.THE_400_P)
monoRight.setCamera("right")

depth.setDefaultProfilePreset(dai.node.StereoDepth.PresetMode.HIGH_DENSITY)
depth.initialConfig.setMedianFilter(dai.MedianFilter.KERNEL_7x7)
depth.setLeftRightCheck(True)
monoLeft.out.link(depth.left)
monoRight.out.link(depth.right)

xout = pipeline.create(dai.node.XLinkOut)
xout.setStreamName("disparity")
depth.disparity.link(xout.input)

# Pipeline is defined, now we can connect to the device
with dai.Device(pipeline, dai.UsbSpeed.SUPER_PLUS) as device:

    # Output queue for imu bulk packets
    imuQueue = device.getOutputQueue(name="imu", maxSize=50, blocking=False)
    rgbQueue = device.getOutputQueue(name="rgb", maxSize=4, blocking=False)
    dispQueue = device.getOutputQueue(name="disparity", maxSize=4, blocking=False)

    imuTs = None
    rgbTs = None
    while True:

        if imuQueue.has():
            imuData = imuQueue.get()  # blocking call, will wait until a new data has arrived
            imuPackets = imuData.packets[-1]
            imuTs = imuPackets.acceleroMeter.getTimestampDevice()

        if rgbQueue.has():
            rgbData = rgbQueue.get()  # blocking call, will wait until a new data has arrived
            rgbTs = rgbData.getTimestampDevice()

        if imuTs is None or rgbTs is None:
            continue
        latency = timeDeltaToMilliS(rgbTs - imuTs)
        tsF  = "{:.03f}"
        print(f"Latency: {tsF.format(latency)} ms")

        if cv2.waitKey(1) == ord('q'):
            break

Hi @ibaiGorordo we have found and fixed the latency issue on the BMI270 IMU on the latest develop branch.

Hi @JanLipovsek ,
I just tested it and it works. For anyone reading this in the future, with the batch threshold at 10, some of the IMU packets had still about 30 ms latency, but using imu.setBatchReportThreshold(5) improved a lot and only a few packets have positive latency but very small.
Thanks!


lerna and npm este

Extract all Este useful patterns, libs, and types into packages.

[ ] components
[ ] factories
[ ] temp
[ ] types for este
[ ] etc.

Very low priority, just an idea.

It would be cool to have proper packages for components. They could work universally across the Fela universe.

I have another idea...


feat: support logical plan for EXECUTE statement

Which issue does this PR close?
Part of #4539
Rationale for this change
In order to support EXECUTE for prepared statements, we should first support creating logical plans for EXECUTE statements.
The syntax is same to PostgreSQL.
psql=> prepare p(int) as select $1;
PREPARE
psql=> execute p(10);
 ?column?
----------
       10
(1 row)

What changes are included in this PR?
Add a new LogicalPlan
pub struct Execute {
    /// The name of the prepared statement to execute
    pub name: String,
    /// The execute parameters
    pub parameters: Vec<Expr>,
    /// Dummy schema
    pub schema: DFSchemaRef,
}

Are these changes tested?
Yes

Are there any user-facing changes?
Yes

Thanks for the review @alamb


generate vector tiles from GeoJSONs/Shape/CSV

When importing large amounts of points, some tiles can become very large.
Tippecanoe addresses this by calculating a factor for the entire zoom level that reduces the number of points equally across all tiles.
Instead of using the same factor for the entire zoom level, a dynamic factor should be used. For example, the factor could remain relatively constant within a range of 2–3 tiles (the maximum visible on a screen at once), but beyond that, it could return to 1.


can it work in macos

I compile the code in my macbook with m1 silicon successfully.But when I run the demo, it throw the error:
libc++abi.dylib: terminating with uncaught exception of type ifm3d::error_t: Lib: Image chunk not found
I want to know can it work in macos or I should do some other work to make it.

@machineboy2018 we  offically donot support macos.
but from error it seems there is mismatch between device and demo. can you please specify which demo you are trying to run and the device you are working with.

@machineboy2018 we officially don't support macOS. but from error it seems there is mismatch between device and demo. can you please specify which demo you are trying to run and the device you are working with.

My device is O3D303.this is my code:
int main(){    auto _cam = ifm3d::Camera::MakeShared("<IP_ADDRESS>", 80, "");    auto  _fg = std::make_shared<ifm3d::FrameGrabber>(_cam);    auto _im = std::make_shared<ifm3d::ImageBuffer>();      // Create pcic interface and initialize configuration     ifm3d::PCICClient::Ptr pcic = std::make_shared<ifm3d::PCICClient>(_cam);     while(1){         if (!_fg->WaitForFrame(_im.get(), 1000)){             std::cerr << "Timeout waiting for camera!" << std::endl;             return 1;         }         else{             cout << "success" << endl;         }     } }
I can ping the camera ip and can view it's data by windows 11 virtual machine.The macos forbiden user to use port 80, does this affect it's use.
It doesn't matter if it's difficult to solve it.I just think it will be cool to run in macos and can bring convenience to my work.

Port 80 is the default XML_RPC port, which could explain your bug. Try switching it to something that your are allowed to use on macos.
Supporting macos is not on top of the priority list for us right now, but we will definitely announce it when it happens.

Hey @machineboy2018

I can ping the camera ip and can view it's data by windows 11 virtual machine.The macos forbiden user to use port 80, does this affect it's use.
It doesn't matter if it's difficult to solve it.I just think it will be cool to run in macos and can bring convenience to my work.
I guess MacOS does not forbid to use a service which runs on port 80. Otherwise you would not be able to browse any http website on your MacOS device. On unix systems a regular user is typically not allowed to start a service which binds to a port below 1024, in case of ifm3d the XML-RPC service which binds to port 80 runs on the camera and your computer connects to this service as with any other http service. Related to the error message above the error is not related to the XML-RPC communication but related to the image data communication which is performed on a different port.

Can you please provide the information returned by the command line tool ifm3d dump?


Fixes and new init script

I found a few bugs when working with this new Sentinel feature.
First, $sentinel_confs expects a dictionary not an array.
Second, the permissions did now allow the cp operation to execute. root is the owner and redis cannot copy if the file does not exist.
I also modeled a new init script off of /etc/init.d/redis-server. It now has the ability to:

/etc/init.d/redis-sentinel start
/etc/init.d/redis-sentinel stop
/etc/init.d/redis-sentinel restart or force-reload
/etc/init.d/redis-sentinel status

Renamed upstart to init. I can't get the extra vagrant modules installed(hostmanager and vbguest). I'll have to try on another computer

You can set them to false in the Vagrantfile, you don't really need them for this test.

@jwbixby hi, did you fix it to include the RHEL init script ?

Hey @fsalum, Hoping to look at this again the end of this week. I haven't tested it in a while so I'm not sure if its completely finished yet. I'll ping you again on Monday.

@fsalum, just finished some testing. The systemd script I added works and puppet appropriately uses each script. The epel-release release that is installed for Redhat actually installs Redis 2.4 that doesn't have sentinel support. When I install a newer version of Redis, everything is fine.

RIP


Cursor not tracking

Edge on Windows
I resized the screen and weirdness happened.
In the screenshot below my cursor is right next to the Toolbox and you can see the block is way off to the right.
I also couldn't drop the block anywhere -

Okay, I think I have a repro for this:
2 sprites - one from Asset Editor, one from Sprite Editor Gallery
Click on JavaScript
Click on Blocks
Now click on the image block.  It get stuck to cursor.

Okay, I think I have a repro for this:
2 sprites - one from Asset Editor, one from Sprite Editor Gallery
Click on JavaScript
Click on Blocks
Now click on the image block.  It get stuck to cursor.

Probably a blockly crash related to the sprite copy

Probably a blockly crash related to the sprite copy

No longer repros, I think this was probably related to one of the field_asset bugs I fixed and not sprite copy

No longer repros, I think this was probably related to one of the field_asset bugs I fixed and not sprite copy


DRAFT feat: Jetstream support for replica of 1 Fixes #944

This allows for Jetstream event buses to have a replica set 1 instead of the minimum required 3.  Modifications taken mostly from the same change done to Argo Events.
Tested this locally by modifying the numaflow install to set the bufferConfig to have replica of 1 for each (instead of the default 3) and then set my ISBS to explicitly have a replica of 1.   Then verified I could run the example simple pipeline on the website.  Verified in the ISBS that if replicas are not set that it defaults to 3

@joelcomp1 - something is wrong with you git...

I know I was trying to fix my signoff and I made a mess :( I'm going to try to clean out my commits and try again. Sorry for the distraction


Trying to convert MP4 to HLS

Hi 👋,
So I was able to get goffmpeg to convert a .mov -> mp4. Based of the example from the readme. I did a bit of digging into old issues and current ones to try to piece together how to convert the .mp4 I got into HLS.
Here's what I got:
❯ go run src/converter/main.go
panic: Failed Finish FFMPEG ([-nostats -loglevel 0 -y -i data/test.mp4 -c:v copy -hls_list_size 10 -hls_time 10 -hls_key_info_file  data/test.m3u8]) with exit status 1 message

goroutine 1 [running]:
main.convert()
        /src/converter/main.go:32 +0x1c8
main.main()
        /src/converter/main.go:11 +0x20
exit status 2

From my go code:
package main

import (
  "github.com/xfrr/goffmpeg/transcoder"
)

var inputPath = "data/test.mp4"
var outputPath = "data/test.m3u8"

func main() {
  convert()
}

func convert() {
  trans := new(transcoder.Transcoder)

  err := trans.Initialize(inputPath, outputPath)
  if err != nil {
    panic(err)
  }

  // Copy video streams
  trans.MediaFile().SetVideoCodec("copy")
  // Set hls list size
  trans.MediaFile().SetHlsListSize(0)
  // Set HLS time
  trans.MediaFile().SetHlsSegmentDuration(10)

  done := trans.Run(false)

  if err = <-done; err != nil {
    panic(err)
  }
}

Any chance you know what I may be doing wrong here?

Sorry, stale bot, I'm still interested in knowing what I may be doing wrong here

same problem with me, I deployed my project use docker in centOs8, installed ffmpeg 4.3.2. an it throw error:
panic: Failed Finish FFMPEG...with exit status 1 message


Call to undefined method PragmaRX\Google2FA\Google2FA::getQRCodeInline()

I just installed this package on my local, using Laravel 7.28.3
followed the steps described at https://www.sitepoint.com/2fa-in-laravel-with-google-authenticator-get-secure/ and got the following error.
Error
Call to undefined method PragmaRX\Google2FA\Google2FA::getQRCodeInline()
rechecked my code with repo, code is fine.

sorry

I think you created this on the wrong repo, I think this should be at https://github.com/antonioribeiro/google2fa-laravel (but it's easy to miss this I guess)

PragmaRX\Google2FA\Google2FA::getQRCodeInline()

This is supposed to reference the Facade alias, see https://github.com/antonioribeiro/google2fa-laravel#use-the-facade
HTH

Yeah, @mfn, got it right, @Saqib-QA , just follow examples on our readme, and you should be fine.


Selenium fails to connect to Chrome and fails

Per your request @Voyz I have created a bug report with the new template.
Describe the bug
Whenever i attempt to startup iBeam, and send the auth key to IBKR it fails. I believe its failing at the the two_fa_el[0].send_keys(two_fa_code) step.
2022-01-14 21:41:38,156|E| Error encountered during authentication
Traceback (most recent call last):
  File "/srv/ibeam/src/authenticate.py", line 232, in authenticate_gateway
    two_fa_el[0].send_keys(two_fa_code)
  File "/opt/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 479, in send_keys
    'value': keys_to_typing(value)})
  File "/opt/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
    return self._parent.execute(command, params)
  File "/opt/venv/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/opt/venv/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
  (Session info: headless chrome=96.0.4664.110)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/srv/ibeam/src/authenticate.py", line 277, in authenticate_gateway
    raise RuntimeError('Error encountered during authentication') from e
RuntimeError: Error encountered during authentication
2022-01-14 21:41:38,225|I| Authentication process failed
2022-01-14 21:41:38,565|I| ############ Starting IBeam version 0.3.0 ############

To Reproduce
Steps to reproduce the behavior:

Start up docker run
Auth by passing the auth code
Fails

Expected behavior
Auth process should pass with the following message Gateway running and authenticated
Environment
IBeam version: 0.3.0
Docker image or standalone: Docker Image
Python version (standalone users only): Python 3.9.2
OS: Windows/Linux

Thanks for the detailed issue report @JohnLiz 👍 I'm not entirely sure which way to go from here, so just to see if it helps: could you try running the v0.4.0-rc5 image to see if the issue persists in 0.4.0 version?

@Voyz  I had tried 4.0 same issue. If an update to a desktop chrome be the cause of it? I had recently updated my chrome browser and suspecting its the problem. Doesn't iBeam use the user chrome to built the chromium when using something like docker build?

Sorry for a delay @JohnLiz, I was on holiday past couple of weeks.

I had tried 4.0 same issue.

Thanks, that's useful to know.

If an update to a desktop chrome be the cause of it?
Doesn't iBeam use the user chrome to built the chromium when using something like docker build?

I don't think so. Chromium is part of the IBeam image, your local version makes no difference here.
That being said, are you building an IBeam Docker image yourself?

Hey @JohnLiz I'm going to close this issue due to lack of activity. Feel free to reopen it if you'd like to continue the discussion 👍


Cosmetic changes to the operator_build role

Ensure we are able to follow the tasks related to each operator by the
name directly, and avoid a couple of identical tasks to run for each
operator.
This will ensure we:

can follow the tasks
generate proper per-operator reproducers with an easy to find name
generate proper per-operator make log with an easy to find name.
avoid duplicated tasks, meaning a slightly faster run at scale

This PR has:

[X] Appropriate testing (molecule, python unit tests)
[X] Appropriate documentation (README in the role, main README is up-to-date)

/lgtm


Please invite me to your organization

Hey @Ninja-21-dev !!
Welcome to openAOD! I have sent an invite to join our organization. We also recommend joining our Discord server : https://discord.gg/wZ83xSJSsN. If you have any questions regarding contributing or anything else feel free to write here or ping me on Discord. Cheers. Have a great day ahead of you!


ISSUES

hi, run File 'data_loader.py', line 114,appear error AttributeError: 'NoneType' object has no attribute 'eval'，please, how to solve this error ？
what does data_loader.py line 109&110 from_tf=True means ?
thanks.

from_tf is the old API which transforms the TensorFlow checkpoints into PyTorch format.


Investigate other parsers

The hand-rolled parser is fast, but it is a major pain to maintain. Any LALR parser generator can parse JSON, I just need to find one that works well.

Eh, the parser works.


7.0 Opcodes

Are they available yet? Thanks!

This was kinda rushed but it feels like it works
{
"C2S_ActionRequest": "0x0345",
"C2S_ActionRequestGroundTargeted": "0x01d5",
"Common_UseOodleTcp": true,
"PatchCode": [],
"S2C_ActionEffect01": "0x0369",
"S2C_ActionEffect08": "0x01a4",
"S2C_ActionEffect16": "0x01fd",
"S2C_ActionEffect24": "0x02f9",
"S2C_ActionEffect32": "0x0383",
"S2C_ActorCast": "0x00f1",
"S2C_ActorControl": "0x0187",
"S2C_ActorControlSelf": "0x0141",
"Server_IpRange": "<IP_ADDRESS>/0",
"Server_PortRange": "1-65535"
}

It doesn't seem to be working for me

It doesn't seem to be working for me

works for me. Don't forget that your opcode wont update properly if you try to do it while you're logged in. Simply log out of your character then log back in and it should work

This was kinda rushed but it feels like it works
{ "C2S_ActionRequest": "0x0345", "C2S_ActionRequestGroundTargeted": "0x01d5", "Common_UseOodleTcp": true, "PatchCode": [], "S2C_ActionEffect01": "0x0369", "S2C_ActionEffect08": "0x01a4", "S2C_ActionEffect16": "0x01fd", "S2C_ActionEffect24": "0x02f9", "S2C_ActionEffect32": "0x0383", "S2C_ActorCast": "0x00f1", "S2C_ActorControl": "0x0187", "S2C_ActorControlSelf": "0x0141", "Server_IpRange": "<IP_ADDRESS>/0", "Server_PortRange": "1-65535" }

Vouching for this

Just chiming in, I independantly got the exact same opcodes so seems likely these are accurate

Could anyone explain how to update the OP codes please? Whenever I try to do it, it doesn't seem to work.

This was kinda rushed but it feels like it works
{ "C2S_ActionRequest": "0x0345", "C2S_ActionRequestGroundTargeted": "0x01d5", "Common_UseOodleTcp": true, "PatchCode": [], "S2C_ActionEffect01": "0x0369", "S2C_ActionEffect08": "0x01a4", "S2C_ActionEffect16": "0x01fd", "S2C_ActionEffect24": "0x02f9", "S2C_ActionEffect32": "0x0383", "S2C_ActorCast": "0x00f1", "S2C_ActorControl": "0x0187", "S2C_ActorControlSelf": "0x0141", "Server_IpRange": "<IP_ADDRESS>/0", "Server_PortRange": "1-65535" }

Can confirm it's working for me!

~Could anyone explain how to update the OP codes please? Whenever I try to do it, it doesn't seem to work. Is it just pasting this into the Game.JP file over what it is in there by default? I try that but it hasn't made a difference.~
Never mind, figured it out. Need to open Alexander, go to Configure->Edit Opcode and paste it in there and also turn off check for op update on startup. Also have to log out of your character and log back in.

 I've always thought it was a program that just ran in the background after you install it, and I don't see a program I can actually open to tweak things.


Custom audio preferences on video

First, thanks for this awesome plugin!!
Hi, is it possible to modify the volume of the audio track to apply my audio user preference? I have tried to push a new audio mixer before the video it does not seem to work. Thank you

Unfortunately, this is not possible.


chore: implement retry mechanism on self-hosted jobs

fixes the runs where the runner fail in a scheduled job
successful retry run example: https://github.com/camunda/keycloak/actions/runs/9578012325/job/26407800036?pr=131

Agree, that's the only way I found it as well that one may be able to do it.
But I don't know whether it's possible from the GitHub Actions point of view of accessing a still running jobs logs and whether that would contain the runner exit or not.
Personally, I'd say we can leave it as it for now and create a feature request with Infra since they maintain the action and we may end up putting too much time into it, not knowing whether it will work or not / side effects for other teams that one has to consider when rolling out the change.

I had a look and I guess it makes sense. Let's see what the Infra team says on the proposed change. From what I could see it's backwards compatible and would fix the issue we had with the noise / no feedback.
I'm surprised it works in practise as GitHub is quite strict on circular dependencies.


筛选出来的数据DESC排序

realm.objects(GithubStarsRealm)

//结果是按照插入的顺序，我想最后插入的数据在前边

If your question is about sorting results descending by a given attribute, then the answer is: you can achieve that with sorted("name", ascending: false). If not, it would be helpful, if you could provide a little more info about what you're trying to achieve in english.

I don't have an attribute for   sorted("name", ascending: false)  .
class student: Object{
    dynamic var name = ""
    dynamic var age = ""
}

I hope sorted by Insertion sequence .  DESC OR ASC

@dowhilenet

I hope sorted by Insertion sequence.

There is no way to retrieve insertion sequence. You can add property something like insertionSequence then manually manage insertion sequence yourself.
For example, increment insertionSequence property whenever you add object,
try! realm.write {
    ...
    student.insertionSequence += 1
    realm.add(student)
}

Then you can sort by insertionSequence,
results.sorted("insertionSequence", ascending: false)

@kishikawakatsumi
Finally, I also handled this way, very grateful.But still we want to have a more convenient way  :]

It looks like you're looking for a SQL-typical feature of auto incrementing properties. Realm doesn't support that. I'd propose as a workaround to add a createdAt property, which uses the current time as default value. It seems like that would allow what you want to achieve.

@mrackwitz 谢谢。thanks。 :+1:

You're welcome. :)


Fixed basicNextAssociation:

if the currentPage was empty it returned nil ending the search to early
there can be an empty page at the end so it is possible to reach outside the loop. In that case returning nil is obvious

@MarcusDenker This PR fixes a central piece of the iterator which I want to carefully review. On the other hand I don't understand how that could have slipped through

Same conclusion here. And I was right being cautious with removing all removed values on page load


chore(ci): Remove caching from CI

Caching of the venv is causing random failures, so I have removed caching during CI.

Codecov Report

Merging #20 (776077b) into main (4b5aed0) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 776077b differs from pull request most recent head 31c3d26. Consider uploading reports for the commit 31c3d26 to get more accurate results

@@            Coverage Diff            @@
##              main       #20   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            3         3
  Lines           92        92
=========================================
  Hits            92        92

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


Add WordPress

See https://wordpress.org/download/releases/

@captn3m0
can we get the info from here automatically?
https://github.com/WordPress/wordpress-develop/tags

Made a few changes:

Auto configuration so new patch releases get automatically updated
Changed links to the latest patch release changelog.
Changed  EOL date of 5.9 to release date of 6.0
Added latestReleaseDate
Corrected release dates, as per the tags on wordpress and changelogs.


docs(Issue179): Modify some parts of the documentation to mention the new 1.1.0-alpha

Proposed changes

Change the 1.0.0 to 1.1.0 in the first option of the dropdown. Add a new dropdown link between 1.1.0 and 0.100.2 with the content 1.0.0 that redirects to the official docs (materializecss.com). Moved from http to https for the archive doc link.
2. Remove the upgrade guide and its button in the index page docs

Screenshots (if appropriate) or codepen:
none (see the orignal issue for what parts of the docs are changed).
Types of changes

documentation only

Checklist:

[x] I have read the CONTRIBUTING document.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

closes #179

@LoganTann can you also see this option to invite the group as reviewer?

I've assigned the group for the review now.
So people, please feel free to review, approve and merge =)

@LoganTann can you also see this option to invite the group as reviewer?

Oh I never noticed it, thanks for the reply !


Feature Request: Allowing the import of already archived URLs.

Type

[ ] General question or discussion
[ ] Propose a brand new feature
[x] Request modification of existing behavior or design

What is the problem that your feature request solves
Hi, thanks a lot for ArchiveBox! In the documentation, it's stated that "[..] ArchiveBox will never re-download sites that have already succeeded previously."
But what if I wanted to periodically export a website whose content's change are interesting, for example the frontpage of a newspaper website?
Having a way to export the same website several times could provide several snapshots over months or years that could be very interesting.
Describe the ideal specific solution you'd want, and whether it fits into any broader scope of changes
I think an optional argument to the archivebox add command would fit ideally. It could be named --force-add or --add-if-present or any similar name (I'm bad at naming things). A general configuration settings could also be considered, but I think the optional argument is more fitting.
I don't know the underlying changes required specially to the database models, so I can't really estimate the difficulty of my request.
Thanks in advance!
How badly do you want this new feature?

[ ] It's an urgent deal-breaker, I can't live without it
[x] It's important to add it in the near-mid term future
[ ] It would be nice to have eventually

[x] I'm willing to contribute dev time / money to fix this issue
[x] I like ArchiveBox so far / would recommend it to a friend
[ ] I've had a lot of difficulty getting ArchiveBox set up

Duplicate: https://github.com/pirate/ArchiveBox/issues/179


parse XSLT::Stylesheet using the libxslt-preferred options

The content in CDATA isn't affected by disable-output-escaping
Two files shared below don't produce the same output with xsltproc and nokogiri.
FILES
test.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes" />
    <xsl:template match="/">
        <xsl:text disable-output-escaping="yes"><![CDATA[<>]]>
</xsl:text>
    </xsl:template>
</xsl:stylesheet>

test.xml
<t></t>

test.rb
#!/usr/bin/env ruby

require 'nokogiri'

xslt  = Nokogiri::XSLT(File.read(ARGV[0]))
xml = Nokogiri::XML(File.read(ARGV[1]))

puts xslt.transform(xml)

OUTPUTS
xsltproc test.xsl test.xml
<>

./test.rb test.xsl test.xml
<?xml version="1.0"?>
<>

@menafkasap Thanks for reporting this issue, and apologies for my slow reply.
I've tracked this down to the parse options used for the XSL file. xsltproc uses the C constant XSLT_PARSE_OPTIONS (which is NOENT | DTDLOAD | DTDATTR | NOCDATA), while Nokogiri uses XML::ParseOptions::DEFAULT_XML (which is RECOVER | NONET). Specifically, the behavioral difference you're spotting is due to the presence/absence of NOCDATA.
I think what we should be doing here is using these same options for the XSL files within Nokogiri (e.g., in the XSLT.parse method).

PR submitted at #2221. Will land in v1.12.x.


Fixed broken links

Links to EiffelActivity*Event.md were all broken in pipeline-monitoring.md, as stated in issue #163. They have been corrected in this commit.

+1


GEP-31: In-Place Node Updates of Shoot Clusters

Co-authored-by: Ashish Ranjan Yadav<EMAIL_ADDRESS>Co-authored-by: Shafeeque E S<EMAIL_ADDRESS>How to categorize this PR?

/area documentation
/kind enhancement
What this PR does / why we need it:
This PR proposes GEP-31 for in-place node updates, allowing seamless updates to Kubernetes and OS versions without node replacement.
Which issue(s) this PR fixes:
Part of https://github.com/gardener/gardener/issues/10219
Special notes for your reviewer:
Release note:

NONE

I would rather concentrate on the in-place kubernetes minor version update capability alone instead of combining these two features into one GEP where the in-place update of the OS is the far more complex and dangerous one.

From Gardener's POV, supporting in-place updates for only the Kubernetes minor version and supporting in-place updates for both the Kubernetes minor and OS versions are almost the same, so I don't see a reason why they should be worked on separately.
Any OS that wants to support in-place updates can provide a way to do this.
For example, Gardenlinux will support in-place updates of the OS in the future ref.

I still cannot see the benefits of all this implementation effort if the node must be drained anyways and rebooted after the OS update.
This will take the same amount of time as the rolling update, if not more because the in-place OS update is much more error prone and might fail.

Rolling update is done for cases where you have the luxury to get rid of the existing node and replace it with a new node. This is not the case for CCloud where the only option is in-place update as they have locally attached storages which cannot be reattached to another node. Secondly rolling updates also have other side effects which potentially causes massive delays:

Availability of sufficient quota for instance type that is under rolling update.
Different providers have different instance launch times and this can take upto several mins (e.g. recently there was a case where openstack took 10mins just to launch a VM, Azure generally takes around 8-10 mins and Aws and GCP takes around 2-3 mins - of course these are rough numbers and are indicative at best) as well. This is not counting the amount of time it takes to drain the node which is the same whether you do in-place + drain or rolling update + drain.

@vlerenc had proposed also considering an in-place update without the drain and there were no takers for that option. So while this is not an option today (in this version of GEP) but if there are takers tomorrow then that can also be looked at.

in-place OS update is much more error prone and might fail.

Well, this feature is going to be provided by the Garden Linux team and we will have to make our experience with it. But if you already have some experience doing in-place OS updates and would like to make concrete points on why it is error prone then this can already be considered as a valid input for the GEP and to the Garden linux team as well.

I still cannot see the benefits of all this implementation effort if the node must be drained anyways and rebooted after the OS update.
This will take the same amount of time as the rolling update, if not more because the in-place OS update is much more error prone and might fail.

Rolling update is done for cases where you have the luxury to get rid of the existing node and replace it with a new node. This is not the case for certain consumers (bare metal) where the only option is in-place update as they have locally attached storages which cannot be reattached to another node. Secondly rolling updates also have other side effects which potentially causes massive delays:

If you have stateful workloads which are running on local storage but you have no spare machines of this machine type, what is the actual use case ? I mean if the hardware breaks for whatever reason, you have nothing left. I hardly can imagine a production workload with such a risky setup.

Availability of sufficient quota for instance type that is under rolling update.

granted

Different providers have different instance launch times and this can take upto several mins (e.g. recently there was a case where openstack took 10mins just to launch a VM, Azure generally takes around 8-10 mins and Aws and GCP takes around 2-3 mins - of course these are rough numbers and are indicative at best) as well. This is not counting the amount of time it takes to drain the node which is the same whether you do in-place + drain or rolling update + drain.

We at metal-stack.io create a new node in about the same time as AWS/GCP (2-3 mins to NodeReady) on bare metal. I thought doing in-place for VMs is not in scope.

So the overall time it takes to roll all nodes can be much more as compared to in-place. However w.r.t downtime for the workloads that are deployed on the nodes, the time would be the same considering there is drain in both the cases.
@vlerenc had proposed also considering an in-place update without the drain and there were no takers for that option. So while this is not an option today (in this version of GEP) but if there are takers tomorrow then that can also be looked at.

in-place OS update is much more error prone and might fail.

Well, this feature is going to be provided by the Garden Linux team and we will have to make our experience with it. But if you already have some experience doing in-place OS updates and would like to make concrete points on why it is error prone then this can already be considered as a valid input for the GEP and to the Garden linux team as well.

This was done already in the past by the folks from CoreOS later FlatCar by doing a A/B Update, not sure if they where able to deal with local storage at all, this was hard work they did and is not easy to implement to a new OS like GardenLinux.
I am not a member of the gardener team and you make the decision, i just want to give my $0.02 based on my experience with bare metal provisioning and OS maintainership.

@majst01 I am not yet done with my review, but since you asked:

If you have stateful workloads which are running on local storage but you have no spare machines of this machine type, what is the actual use case ? I mean if the hardware breaks for whatever reason, you have nothing left. I hardly can imagine a production workload with such a risky setup.

It is not really a risky setup. It is what it is in the physical world - unless you have fully automated control over it like with MetalStack or IronCore or OpenStack Ironic. The workload itself is replicated and can survive, to a user-defined degree, "breaking hardware". RAID, PDBs, etc. work with that assumption. It's not that the first machine that goes under means the end of the world/workload for you.
And in fact, the first main use case for this is indeed operating a hardware cluster of bare metal nodes providing Ceph to end users on top. That brought us into this topic and then more such scenarios entered the picture.

We at metal-stack.io create a new node in about the same time as AWS/GCP (2-3 mins to NodeReady) on bare metal. I thought doing in-place for VMs is not in scope.

@majst01 With certain parameters (maxSurge and maxUnavailable) that's 2-3 minutes per machine extra, e.g. with maxSurge=1 and maxUnavailable=0 (our default for rolling updates today), a machine gets created, pods get drained, machine gets terminated and then the flow repeats, always adding 2-3 minutes. Only by increasing maxSurge you can speed things up, but then the process may still hang because of individual pods and their PDBs.
In comparison, if you can run with maxSurge=0 and maxUnavailable=1 you never need to wait these 2-3 minutes and if you can only run with maxSurge=1 and maxUnavailable=0 (our default for rolling updates today), you get away often waiting only once 2-3 minutes, because once the additional machine is available, it can take on the evicted pods (rather their replacements) and when you drain the next VM, the other one is updated in-place and ready again (in-place update is much faster than deprovisioning  and provisioning again).
But the main reason is not that. I am still doing my review, but one of the suggested changes is to add the following sentence, which addresses why also VMs benefit from in-place updates:

In addition, [in-place updates have also advantages for VMs], e.g. if the VM type is scarce (in general or because of an ongoing capacity crunch) or if certain scarce resources are connected/attached, e.g. GPUs that may not be available for additional or even replaced machines once released (as other customers are waiting for them).

We at metal-stack.io create a new node in about the same time as AWS/GCP (2-3 mins to NodeReady) on bare metal. I thought doing in-place for VMs is not in scope.

@majst01 With certain parameters (maxSurge and maxUnavailable) that's 2-3 minutes per machine extra, e.g. with maxSurge=1 and maxUnavailable=0 (our default for rolling updates today), a machine gets created, pods get drained, machine gets terminated and then the flow repeats, always adding 2-3 minutes. Only by increasing maxSurge you can speed things up, but then the process may still hang because of individual pods and their PDBs.
In comparison, if you can run with maxSurge=0 and maxUnavailable=1 you never need to wait these 2-3 minutes and if you can only run with maxSurge=1 and maxUnavailable=0 (our default for rolling updates today), you get away often waiting only once 2-3 minutes, because once the additional machine is available, it can take on the evicted pods (rather their replacements) and when you drain the next VM, the other one is updated in-place and ready again (in-place update is much faster than deprovisioning and provisioning again).

How do you want to skip deprovisioning ? Doing a hard reset, risking damaged filesystems is not what you want in the given scenario with local storage.
On the other hand, rebooting a node with lots of pods and mounts will take some time, with big filesystems even longer because the OS must flush all filesystem caches before rebooting.
I am keen to see the real benefit of this approach !

But the main reason is not that. I am still doing my review, but one of the suggested changes is to add the following sentence, which addresses why also VMs benefit from in-place updates:

In addition, [in-place updates have also advantages for VMs], e.g. if the VM type is scarce (in general or because of an ongoing capacity crunch) or if certain scarce resources are connected/attached, e.g. GPUs that may not be available for additional or even replaced machines once released (as other customers are waiting for them).

This was done already in the past by the folks from CoreOS later FlatCar by doing a A/B Update, not sure if they where able to deal with local storage at all, this was hard work they did and is not easy to implement to a new OS like GardenLinux.

That was the first thing the Garden Linux team did and we saw it working some months back. Garden Linux can directly boot into a new UKI, so it's actually working and impressingly fast, too. The new image is downloaded while everything is still up and running. Then the pods get drained/evicted and then the reboot happens. If it succeeds, the node is ready pretty fast. If not, it may retry a configurable number of times after which it will give up and reboot the LKG which is still sitting on the disk (as a file (UKI) - like all versions are). It will be configurable whether to purge the file system or not. And yes, we know that CoreOS used to do that, because we used to deploy CoreOS before CoreOS was swallowed by Red Hat which was swallowed by IBM. When Red Hat bought them and the license changed/they wanted to get rid of their competition, we did Garden Linux and can now leverage the deep innovation advantages we have by controlling the OS nearly completely.

I am not a member of the gardener team and you make the decision, i just want to give my $0.02 based on my experience with bare metal provisioning and OS maintainership.

Please don't get me wrong either and thank you for your feedback @majst01. It's not that we "want" to build "in-place updates" (OK, yes we do, but that was not the trigger), but that we are confronted with cases where terminating and recreating machines isn't an option or brings too many disadvantages (scarce resources) that block the classical rolling updates again and again. So, we actually "want" to solve real world issues, not fictive theoretical issues.

How do you want to skip deprovisioning? Doing a hard reset, risking damaged filesystems is not what you want in the given scenario with local storage.

Hard reset? You mean via the cloud provider API? No, Garden Linux / the kernel reboots itself.

On the other hand, rebooting a node with lots of pods and mounts will take some time, with big filesystems even longer because the OS must flush all filesystem caches before rebooting.

But there are no pods anymore with the drain option. And should we implement the non-drain option, we would still SIGTERM/SIGKILL the containers first (without draining them). SIGKILL may create problems when the container restarts later, but that's a.) unlikely and b.) at least the OS itself is cleanly rebooting.
In the end, that (SIGKILL-like effects) or worse (e.g. kernel panic, power outage) can happen for whatever reason also today and then the "regular means apply". When the machine comes back and the pods/containers run again, all is good. If not, depending on pod/container or node issues, pods will be evicted or the node will go away as a whole (bare metal machines without programmable API will never go away and will require human interaction, but that's nothing we can solve or aim to solve - that's a side effect of manual bare metal machines).

I am keen to see the real benefit of this approach !

Sure, we will/should do a community demo to show/discuss that openly. You are right.
cc @gehoern

Yes a reboot will take tens of minutes if not more in the given scenario with hundreds of TB locally in use. Doing a hard reset will risk loosing data in the worst case.

Maybe it's obvious to you, but can you please explain what you mean here @majst01? What TBs do you have in mind and why tens of minutes? I am completely lost what you believe will happen or what I do not understand will happen (and why local data will prolong the reboot).

Yes a reboot will take tens of minutes if not more in the given scenario with hundreds of TB locally in use. Doing a hard reset will risk loosing data in the worst case.

Maybe it's obvious to you, but can you please explain what you mean here @majst01? What TBs do you have in mind and why tens of minutes? I am completely lost what you believe will happen or what I do not understand will happen (and why local data will prolong the reboot).

You mentioned Ceph as one of the use cases. Ceph node typically have hundreds of TB disks locally paired with several hundreds of GB if not several TB of RAM, that's the whole point. The VFS layer in the linux kernel caches writes in order to speed up writes and reads. These caches must be flushed before power-off. This might take tens of minutes, depending on the speed of your drives. Maybe if you go for a NVMe only solution, this might not be that much.

/retest

One thing to consider/that would still need to be addressed is how to handle updates to config files modified by the node agent.
Let's say a config file like /etc/containerd/config.toml gets modified by the node agent. Now if a new GardenLinux version ships an updated version of the default config, this part of the update would be shadowed by the modified version.
So even after the update you would keep the modified version of the old default config, not the similar modifications applied to the new default.
Therefore no updates to config files are possible once the node agent has modified them.
You might be able to do things like 3-way merge, but those are not guaranteed to always apply without manual intervention on merge conflicts, which would obviously not be feasible.
With the current design / implementation of in-place updates on the GL side this shadowing of updated files would be unnoticed.
At the moment all modifications to /etc are done via an overlay backed by /var/etc.overlay. The way overlayfs works, once a file gets modified all of its contents get copied to the upperdir (/var/etc.overlay in this case). If after modification the same file is changed in the lowerdir this has zero noticeable effect.
The first step would probably be to make such shadowing detectable in the first place, by e.g. also providing access to the lowerdir at some special mount point + on first boot when the overlay gets initialised store a hash of all original files.
Then after system update we could check if there are any files in the overlay where the stored hash does not match the current value in the lowerdir, this means it was updated both by an in-place update and the node agent => shadowing of the OS update occured. (Ideally this would just be done by the ovelayfs directly, but modifying the kernel just for this seems overkill).
Now how on such a detection the error could be resolved remains an open question and can only really be addressed by gardener / gardener-node-agent as understanding of which modifications are required requires knowledge not available to the OS.

Couldn't we create our own containerd config file at some other place and start containerd with this instead of the default config provided via the OS?

Couldn't we create our own containerd config file at some other place and start containerd with this instead of the default config provided via the OS?

If you just create your own containerd config all is fine, even when overwriting the OS provided one. That fully works with GL in-place updates. The problem only arrises when you modify the existing config and depend on some OS provided defaults as those wouldn't be updated once the config has been modified.


 They need to revert this asap.
https://media.discordapp.net/attachments/669004416220921861/1247991860354613340/image.png?ex=6662b33e&is=666161be&hm=081736922cd8b9fa4d64d7cadc8e973d36c647b340faa8bb1ed06e8ff52f1f8f&=&format=webp&quality=lossless&width=1378&height=295

but why are you creating an issue for this on the amethyst github?


[BUG/ENHANCEMENT] WIN Clipboard History not working

Currently it is not possible to use clipboard history ( [WIN] + [V] ) to paste to the editor or anywhere else; merely the current top-level entry and last copied items may be pasted.

Today I learned that exists. I left Windows too many years ago. Let me see what can I do. Thanks for reporting it.

I'm reading the documentation and selection any element from that clipboard it does not generate a paste event, but generates a clipboard update (because it updates the current clipboard selection). I tried to detect the clipboard updates but it generates many problems because a clipboard update does not need to correspond to a subsequent paste operation. I won't insist much with this because I can't find any reliable information on how it works on other applications. Maybe if you find an open source editor where this works I can take a look. I'll consider this ticket as an enhancement because it's not a defined behaviour of the operating system, what a wanted integration with an OS application.

KDE Kate does it definitely but I tried to look into their repo before and it is quite "entangled" and hard to find sht in my personal opinion. You may take a peek if you wish, maybe you find it in time.

Fixed in the latest SDL2 release. ecode will ship with this SDL2 version.


NumericUpDown SelectAllOnFocus doesn't work

What steps will reproduce this issue?
Setting the SelectAllOnFocus="True" property on a NumericUpDown control has no efect, on other and using the Controls:TextBoxHelper.SelectAllOnFocus="True" work as expected, selecting all text.
Expected outcome
Setting the SelectAllOnFocus="True" on a NumericUpDown control should have the same behavior like the Controls:TextBoxHelper.SelectAllOnFocus="True"

Environment

MahApps.Metro v1.2.4
Windows 10
Visual Studio 2013
.NET Framework 4.5

@punker76 I saw that you introduced the SelectAllOnFocus property in NumericUpDown. Wouldn't it be better to remove it, because no other control (also .NET internal controls) has such a property and completely rely on TextBoxHelper.SelectAllOnFocus

@xxMUROxx I'll look on this

Hi,
I cannot enable the "select all on focus" for NumericUpDown control, it won't work neither with latest release 1.3 nor 1.4.0-ALPHA026�
<NumericUpDown metro:TextBoxHelper.SelectAllOnFocus="True" SelectAllOnFocus="True"�/>
Do you have any ideas?
Thanks,
collegedude

@collegedude You need only metro:TextBoxHelper.SelectAllOnFocus="True" the other one is obsolete. It works at the main demo.
<Controls:NumericUpDown Controls:TextBoxHelper.SelectAllOnFocus="True"
                        ButtonsAlignment="Left"
                        HasDecimals="{Binding ElementName=HasDecimalsCheckBox, Path=IsChecked, Mode=TwoWay}"
                        Interval="5"
                        IsReadOnly="{Binding ElementName=ReadOnlyCheck, Path=IsChecked, Mode=TwoWay}"
                        Value="500" />

Hi again,
Thank you! The demo application is in fact working, but not my own application (also with MetroWindow). I will try to reproduce the problem with the demo application...
I have added both, the obsolete property and the TextBoxHelper, just to show that they are both not working.

Hello everyone,
i want to say thanks for your effort for this amazing work.
Like @collegedude say, the attached property Controls:TextBoxHelper.SelectAllOnFocus is working fine on the application demo, but i cannot use it in my own applications.
Also, the control won't take focus even if i simply click on it, but just when you click the contained value.

Hello @Cicciomnz,
In my case it works if I add the following line in every UserControl that makes use of the TextBoxHelper:
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
�

It works! Thanks a lot @collegedude

@Cicciomnz @collegedude It should also work if this resource is added in App.xaml

@Cicciomnz @collegedude
MahAppsAndIconPacks.zip

@Cicciomnz

Also, the control won't take focus even if i simply click on it, but just when you click the contained value.

That's the behavior of all TextBoxHelper stuff like clear button or search button on TextBoxes.


Remove therubyracer in favor of system JS runtimes

Basically the reason was well explained in this blog post.
Some more details:

For OS X, there's no need to install anything as Apple JavaScriptCore is included with OS X.
For Travis CI or other CI env, nodejs binaries are installed by default
For Heroku or other PaaS, installing therubyracer was also strongly discouraged.

:+1: this PR looks great! Appreciate the contribution. Any chance you could rebase and repoint this PR to the dev branch?

@lord Sure no problem! Closed in favour of #318 .


Spelling

This PR corrects misspellings identified by the check-spelling action
The misspellings have been reported at https://github.com/jsoref/docs.rs/actions/runs/12547208784#summary-34984279433
The action reports that the changes in this PR would make it happy: https://github.com/jsoref/docs.rs/actions/runs/12547209701#summary-34984281028

I'm happy to drop anything... If there are specific upstreams for things, I can try to send them PRs as well...

hi, thanks for the fixes! I'm on sick leave right now, so can't go through it in detail yet,
first thing: assets/syntaxes/ is copied from an external source, so please leave it unchanged. I need to look up where it came from, I think it is documented somewhere

It looks like assets/syntaxes/Packages ~ https://github.com/sublimehq/Packages, so I'll start there ...

Looks all good to me, please squash your commits and then I merge.

Any preference on commit message?

"Fix typos/spellings"?

@GuillaumeGomez done

Looks good to me, thanks! Just gonna wait for @syphar to confirm all changes are ok before merging.


Remove an unnecessary reject when canceling by user

Related to #1385
I should have worked together in my previous PR, but it's missing.
Unlike iOS, Android does not throw warning errors, but It'd be better to be excluded for the same reason.
I don't think it's necessary to release a new version right now. It's enough to be included in the next version.

@ifsnow The CI build fails at the lint check for formatting. To fix please run ./gradlew goJF in the android folder 🙏

@andresesfm Thanks for your feedback!
I used google-java-format instead of ./gradlew goJF as a jvm version issue.

@ifsnow Thank you for formating your PR. I have a question for you: Since we are not rejecting the Promise anymore, would it make sense to resolve it with a value?
@hyochan you are more familiar with the code base but I think this would leave the promise hanging in memory, don't you think?

@andresesfm In my opinion, it could be logic to maintain backwards compatibility. If we only use purchaseErrorListener for error handling, we probably don't need the promise logics.
The opinion of @hyochan who knows the history well seems to be important.

If there is no further progress, I'll consider merging it soon!


Access to full AST for the immediate declaration

At least in the definition phase we should consider exposing a Code object (or similar) for the immediately annotated declaration. For a class this could include all the members of the class.
cc @davidmorgan can you expand a bit on the use cases for this?

It's possible that the needs for AST mostly don't apply with macros.
The first use case is validating integration points.
e.g. if for class Foo we generate implementation _$Foo, then the constructor of Foo needs to be a factory constructor that delegates to _$Foo.
Typically in these cases we can already generate the exact string we want to appear in the code at that point, and just do a string compare, issuing an error "please change to ...string..." if it doesn't match.
The second use case is for figuring out how to refer to types in a way that works in context (for generated part files)--i.e. we need the name with the import prefix. I think I read that macros will handle references to types specially anyway to support this?
Thanks.

e.g. if for class Foo we generate implementation _$Foo, then the constructor of Foo needs to be a factory constructor that delegates to _$Foo.

There would be essentially no integration points here, you could generate this delegating constructor :).

The second use case is for figuring out how to refer to types in a way that works in context (for generated part files)--i.e. we need the name with the import prefix. I think I read that macros will handle references to types specially anyway to support this?

Yes this isn't fully fleshed out yet, but its a well known issue and we have some general idea of what we want to do. I can't replicate it in this prototype though as it will involve some special magic in the compilers.

SG, thanks :)

I tried replicating part of the freezed code generator using the macro system, but got stuck here. Freezed uses a user defined factory constructor to generate a data class / union class by the name of the redirected constructor. Problem is that the constructor macro does not have access to the redirected name, even though it is in the AST.

I tried replicating part of the freezed code generator using the macro system, but got stuck here. Freezed uses a user defined factory constructor to generate a data class / union class by the name of the redirected constructor. Problem is that the constructor macro does not have access to the redirected name, even though it is in the AST.

Can you replicate the same behavior in another way? If you can give a more concrete example I might be able to provide some suggestions.
Note that we don't yet allow reading of metadata on members, but plan to.

The use case is enumerated data classes
@freezed
class EnumClass {
  factory EnumClass.data(String data) = EnumData;
  factory EnumClass.loading(int seconds) = EnumLoading;
  factory EnumClass.error(String err, StackTrace st) = EnumError;
}

=> generates three data classes (with copyWith, constructors, fields, ==, hashCode etc)...
/// Full dataclass (full implementation omitted for brevity)
@sealed
class EnumData extends EnumClass {
  EnumData(this.data);
  String data;
}
@sealed
class EnumLoading extends EnumClass {
  EnumData(this.seconds);
  int seconds;
}
@sealed
class EnumError extends EnumClass {
  EnumData(this.err, this.st);
  String err;
  StackTrace st;
}

along with extension methods for switch case on an EnumClass and handle each of the variants....
I guess you could annotate each factory with a String
class EnumClass {
  @enumclass('EnumData')
  factory EnumClass.data(String data) {}
  @enumclass('EnumLoading')
  factory EnumClass.loading(int seconds) {}
  @enumclass('EnumError')
  factory EnumClass.error(String err, StackTrace st) {}
}

But this is more verbose, requires an empty body for the factory which would have to be changed or implemented via the macro causing more confusion on what is going on, and also uses Strings which are not ideal.
It would be ideal to be able to access the unresolved AST for the constructors from a ClassDeclarationMacro. This way even though the class redirections are not valid to begin with, the class constructors they tear off can be generated during the Declaration phase using the unresolved identifiers in the redirecting factories.

I do generally agree this would be another nice use case for allowing some inspection of the AST. Some other comments below.

I guess you could annotate each factory with a String

Right, so for this example I would suggest inferring the name based on the name of the factory and the base class, and then allowing you to override it with an annotation similar to what you showed.

requires an empty body for the factory which would have to be changed or implemented via the macro causing more confusion on what is going on

You can mark the factory as external external factory EnumClass.data(String data);. That is probably what I would suggest in this case, as it is more clear that this is a generated thing.

Sometimes the user would like to have the name be different from the factory, something shorter usually, or occasionally without the name of the base class. Obviously this could be done via options in the annotation parameters, but looks less 'darty' and more magic and String based (which just reminds me of C macros).
So I guess it is just another use case for the AST inspection to require fewer annotations (1 per base class rather 1 per factory), but doesn't make it impossible to implement the enumerated classes in the current macro system.
The advantage of AST inspection means that you can have fewer magic strings and utilize more of what the programmer has already written to ensure valid programs with raw unresolved identifiers. Could solve the issues with raw identifiers instead of strings in https://github.com/jakemac53/macro_prototype/issues/23#issuecomment-883548413 as well if you could inspect the AST of the macro arguments as well. The nim programming language has a concept of untyped versus typed versus static arguments for their macros. https://nim-lang.org/docs/tut3.html. TLDR; untyped arguments just have to be parseable and are not semantically checked or resolved or expanded, and are passed to the macro as a syntax tree. Typed are similar but are resolved. Static are passed as their value.
In Dart that might look like:
/// The interface for [DeclarationMacro]s that can be applied to classes.
class MyUntypedMacro implements ClassDeclarationMacro {
  MyUntypedMacro(UntypedExpression ast, TypedExpression typedAst, int value);
  void visitClassDeclaration(
      ClassDeclaration declaration, ClassDeclarationBuilder builder);
}

which could enable:

class EnumClass {
  @enumclass(EnumData)
  external factory EnumClass.data(String data);
  @enumclass(EnumLoading)
  external factory EnumClass.loading(int seconds);
  @enumclass(EnumError)
  external factory EnumClass.error(String err, StackTrace st);
}
// or potentially
class EnumClass {
  @enumclass((String data) => EnumData)
  @enumclass((int seconds) => EnumLoading)
  @enumclass((String err, StackTrace st) => EnumError)
}

Where the macro system encounters an UntypedExpression or TypedExpression in the macro constructor it would hand the unresolved or resolved ast when actually constructing the macro instance, whereas the exact value 10 gets passed into the constructor since it is neither an Untyped or Typed expression. This would obviously be limited to Expressions.

I disagree with the proposals of using an annotation for the naming and using external factory.
These are syntax downgrades, and a significant breaking change to existing Freezed users.

@rrousselGit
I agree that I would rather have the current syntax of Freezed, instead of this external factory. Added a paragraph at the end, suggesting the same. Just arguing that the more access we have the the AST the more powerful we can make the macros.
For example with being able to pass an expression AST directly into the macro we could enable functionalWidgets like this:
@functionalWidget(MyClassName, (BuildContext context, String param){
   return Text(param);
});

This solves the problem of having a private named function declaration that turns into a public class.
@functionalWidget
_functionalWidget(BuildContext context, String param) {

}

@TimWhiting No worries. I was actually responding to @jakemac53. It's my bad that my message wasn't clear.
Your idea is quite an interesting. I like it.
Although your functional widget proposal has some extra issues: functions within annotations are not allowed.

@rrousselGit
You missed the part where the macro constructor has the second argument typed as a TypedExpression ast rather than a Function. The macro never sees the function, just the AST representation of the function according to my proposal. Of course this isn't possible right now, because none of my proposal is possible right now, it requires good integration with the compiler / analyzer / frontend.

You missed the part where the macro constructor has the second argument typed as a TypedExpression ast rather than a Function. The macro never sees the function, just the AST representation of the function according to my proposal

I am aware of this, but it still is problematic: breakpoints won't work.
Users would naturally place their breakpoints in the annotation. But the generated code would never execute the function in the annotation and instead would use clone of the function.
Without something like #13, this could be confusing.

If you used the original AST in the output (by wrapping the function in a build method that passes in the parameters to the original function) maybe an automatic sourcemap could be produced, but #13 would make it more flexible. Agreed that breakpoints would be placed by users in the annotation AST, which would need to be linked to where the generated code uses that statement / line.

Having the AST for the immediate declaration (unresolved / partially resolved / fully resolved depending on the phase of the macro execution) would also solve #7 and #21.

FWIW, in the experiment in the analyzer I give macros a complete AST node, e.g. FieldDeclaration that has its parent set, and so it is possible to access the enclosing class or mixin, or even look at sibling top-level declaration in the same unit (but not the library - no access using AST, but theoretically could be done), etc. For declaration phase macros type hierarchies are already built, and all explicit type annotations for source declarations (and previously generated by other declaration macros) are resolved.


Memcached appliance

A memcached appliance should be available.

This would be nice. :)

Flynn is unmaintained and our infrastructure will shut down on June 1, 2021. See the README for details.


Struggling to get data into the cluster

Hi there,
I am really struggling to get data into the ES cluster from filebeats.
Here are the services in the namespace I have deployed them.
elasticsearch             ClusterIP   <IP_ADDRESS>           9200/TCP
elasticsearch-data        ClusterIP   None                     9300/TCP                                                                           elasticsearch-discovery   ClusterIP   <IP_ADDRESS>           9300/TCP
Here is the file beats .yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-config
  namespace: vanti
  labels:
    k8s-app: filebeat
    kubernetes.io/cluster-service: "true"
data:
  filebeat.yml: |-
    filebeat.config:
      prospectors:
        # Mounted `filebeat-prospectors` configmap:
        path: ${path.config}/prospectors.d/*.yml
        # Reload prospectors configs as they change:
        reload.enabled: true
      modules:
        path: ${path.config}/modules.d/*.yml
        # Reload module configs as they change:
        reload.enabled: true

    processors:
      - add_cloud_metadata:

    cloud.id: ${ELASTIC_CLOUD_ID}
    cloud.auth: ${ELASTIC_CLOUD_AUTH}

    output.elasticsearch:
      hosts: elasticsearch.vanti:9200
      username: ${ELASTICSEARCH_USERNAME}
      password: ${ELASTICSEARCH_PASSWORD}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: filebeat-prospectors
  namespace: vanti
  labels:
    k8s-app: filebeat
    kubernetes.io/cluster-service: "true"
    k8s-app: filebeat
    kubernetes.io/cluster-service: "true"
data:
  kubernetes.yml: |-
    - type: docker
      containers.ids:
      - "*"
      processors:
        - add_kubernetes_metadata:
            in_cluster: true
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: filebeat
  namespace: vanti
  labels:
    k8s-app: filebeat
    kubernetes.io/cluster-service: "true"
spec:
  template:
    metadata:
      labels:
        k8s-app: filebeat
        kubernetes.io/cluster-service: "true"
    spec:
      serviceAccountName: filebeat
      terminationGracePeriodSeconds: 30
      containers:
      - name: filebeat
        image: docker.elastic.co/beats/filebeat:6.1.2
        args: [
          "-c", "/etc/filebeat.yml",
          "-e",
        ]
        env:
        - name: ELASTICSEARCH_HOST
          value: elasticsearch
        - name: ELASTICSEARCH_PORT
          value: "9200"
        - name: ELASTICSEARCH_USERNAME
          value: "9200"
        - name: ELASTICSEARCH_USERNAME
          value: elastic
        - name: ELASTICSEARCH_PASSWORD
          value: changeme
        - name: ELASTIC_CLOUD_ID
          value:
        - name: ELASTIC_CLOUD_AUTH
          value:
        securityContext:
          runAsUser: 0
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 100Mi
        volumeMounts:
        - name: config
          mountPath: /etc/filebeat.yml
          readOnly: true
          subPath: filebeat.yml
        - name: prospectors
          mountPath: /usr/share/filebeat/prospectors.d
          readOnly: true
        - name: data
          mountPath: /usr/share/filebeat/data
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      volumes:
      - name: config
        configMap:
          defaultMode: 0600
          name: filebeat-config
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers
      - name: prospectors
        configMap:
          defaultMode: 0600
        configMap:
          defaultMode: 0600
          name: filebeat-prospectors
      - name: data
        emptyDir: {}
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: filebeat
subjects:
- kind: ServiceAccount
  name: filebeat
  namespace: vanti
roleRef:
  kind: ClusterRole
  name: filebeat
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: filebeat
  labels:
    k8s-app: filebeat
rules:
- apiGroups: [""] # "" indicates the core API group
  resources:
  - namespaces
  - pods
  verbs:
  - get
  - watch
  - list
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: filebeat
  namespace: vanti
  labels:
  namespace: vanti
  labels:
    k8s-app: filebeat
---```

Nothing is showing any errors in the logs whatsoever.
However when I connect to the console of one of the containers in the namespace and run `curl -XGET 'elasticsearch.vanti:9200/_cat/indices?v&pretty'`
I can see no indecies being created not does kibana.

We managed to sort this issue out. It appeared it was SElinux and Docker not logging to the correct place.


Loop in serenityjs 3.0

@jan-molak
Hi Jan- Below is the snippet of Loop I am using currently as per serenityjs 2.0 version. For the latest serenityjs 3.0 how to do i convert the below. Please suggest
await actorCalled('tester').attemptsTo(
    Loop.over(elementLocators).to(
    Wait.upTo(ReusableMethods.durationInSecs())
        .until(Loop.item<ElementFinder>(), isPresent()),
    Scroll.to(Loop.item<ElementFinder>()),
    Ensure.that(Value.of(Loop.item<ElementFinder>()), equals(actualValue))
));

Hi @harivsudhan! Sure, what's elementLocators in your code sample, please?

PageElements extends List, which means you can use PageElements.forEach.
So you'd have:
const percentageFields = () =>
  PageElements.located(By.css('input[inputmode = "text"]'))
    .describedAs('Percentage Fields')

await actorCalled('tester').attemptsTo(
    percentageFields().forEach(({ item, actor }) =>
        actor.attemptsTo(
            Wait.upTo(ReusableMethods.durationInSecs())
                .until(item, isPresent()),
            Scroll.to(item),
            Ensure.that(Value.of(item), equals(actualValue))
        )
    )
));

Also, note that in Serenity/JS 3 you can configure the default interaction timeout, so you might be able to remove .upTo(ReusableMethods.durationInSecs()) and simplify the code further.
Let me know if this helps?


project 8051

Using master, running gradle test results in Could not resolve project :8051

Did that error appear immediately when you ran the command, or deep into the tests?

I think it was pretty early on.  I basically ending up copy the x86 build.gradle to 8051 and cleaned up strings to get around it

Good catch with the apply plugin: 'java'.  We recently changed a lot about how these project build.gradle files look, and it looks like this project slipped through the cracks.  I also noticed that this project's script, Update8051.java, doesn't get included in Eclipse as source.  It's probably related.

@mumbel, I made a change that might fix this.  Would you mind trying it out? I can't reproduce your exact issue.

Np, i will report back if broken


Stop sending ConnectionInfoReq

As per ensime/ensime-server#1553 the plugin should stop sending this request for server v2 as ConnectionInfo is the first message asynchronously received after connecting to the server.
This will need some refactor to split the requests for V1 and V2, similar to the refactor to the response handlers done in #301

Change on the server was merged https://github.com/ensime/ensime-server/pull/1868


Transfer repository to the reviewdog repository

I think it might be a good idea to transfer the action to the reviewdog organization. In this way, the whole team can help to maintain it. @prologic Let me know what you think so we can organize the transfer.

Sounds good to me. Just say the word and I'll hit the button.

Amazing! :rocket: I will open a issue on the reviewdog repo to give you transfer rights. In the meantime maybe you can merge #6 and create a v1 release.

The issue can be followed on https://github.com/reviewdog/reviewdog/issues/836.

MAybe it is better to do the v1 release under the organization. I just saw the badges also need updating when it is transfered.

I created a pull request to fix the badges #8. The only thing left to do is for @haya14busa or any of the other admins to accept the GitHub marketplace terms and release the action under v1.0.

I couldn't find any GitHub marketplace terms link, do we need to accept the term in every repo?
Anyway, I changed prologic's role to admin of this repo, so can you try releasing v1 and let me know if you couldn't release it to the marketplace.

@haya14busa I noticed that as well when I transferred the https://github.com/reviewdog/action-black Github Action. I am unsure what went wrong when I transferred the action-flake8. Maybe because it was a fork.


Pantheon updates 2021-09-22

Motivation for this change
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

pantheon.sideload
https://github.com/elementary/sideload/releases/tag/6.0.2
https://github.com/elementary/sideload/compare/6.0.1...6.0.2

Fix blurry app icon in multitasking view
Updated translations

pantheon.elementary-greeter
https://github.com/elementary/greeter/releases/tag/6.0.1
https://github.com/elementary/greeter/compare/6.0.0...6.0.1

Improvements:

Hide clock during initial setup
Use selected accent color for logged in checkmark

Minor updates:

Updated translations

pantheon.elementary-calendar
https://github.com/elementary/calendar/releases/tag/6.0.2
https://github.com/elementary/calendar/compare/6.0.1...6.0.2

Fixes:

Fix notification icons in the notification indicator
Fix an issue where event timezones were overwritten
Ensure Calendar is launched when notifications are clicked

Minor Updates:

Updated translations

pantheon.switchboard-plug-keyboard
https://github.com/elementary/switchboard-plug-keyboard/releases/tag/2.5.1
https://github.com/elementary/switchboard-plug-keyboard/compare/2.5.0...2.5.1

Minor updates:

Ensure IBus automatically starts on login when needed
Updated translations

pantheon.switchboard-plug-mouse-touchpad
https://github.com/elementary/switchboard-plug-mouse-touchpad/releases/tag/6.1.0
https://github.com/elementary/switchboard-plug-mouse-touchpad/compare/6.0.0...6.1.0

New features:

New toggle for “Double-tap and move to drag”

Minor updates:

Updated translations

https://github.com/elementary/switchboard-plug-keyboard/commit/c9dc4a83ee52c67e090969a96e0cb6ed322a3a9f#diff-42c5c427cac19224e91a4407f2cc48c60941a3d15f7a4e019a4e97cdd4b51ad4R376
Probably needs a fix path here.

Result of nixpkgs-review pr 139057 at 6632becb run on aarch64-linux 1

9 packages built successfully:

pantheon.elementary-calendar
pantheon.elementary-greeter
pantheon.sideload
pantheon.switchboard-plug-keyboard
pantheon.switchboard-plug-mouse-touchpad
pantheon.switchboard-with-plugs
pantheon.wingpanel-applications-menu
pantheon.wingpanel-indicator-datetime
pantheon.wingpanel-with-indicators


Add performance regression test to pull request CI suite

Summary:
We've had a couple of merged PRs that caused performance regressions that were caught by daily CI tests, but it'd be nice to run a quick performance regression smoke test on every PR push. This should be fairly easy using the compare-git-hashes.sh (or something like it) script from https://github.com/stan-dev/performance-tests-cmdstan.
Current Version:
v2.17.0

We have performance test for PRs now. Closing.


[New Feature] Command Bar in Docs

Current Behavior
Layer5 has a number of products. Each product has many resources. Each project site has a site search for that specific project. Visitors cannot search across all products at the same time. time.
Desired Behavior
In MeshMap, there needs to be a command palette to search through all the possible available resources and MeshMap, that can be designs, filters and applications, that also can be components on the MeshMap from any number of registered components, that could be components from Visualizer.
Priority: start with Designer, move to Visualizer.
Implementation

Research the following two open source libraries:

https://github.com/timc1/kbar (https://kbar.vercel.app)
https://github.com/pacocoursey/cmdk (https://cmdk.paco.me/)

Support the following resources in Designer:
(Resource type: what to display in the search preview)

Meshery Catalog Design filenames: display owner and last modified date
Meshery Catalog WASM Filter names: display owner and last modified date
Meshery Integrations Models Names: display first portion of description
Meshery Integrations Model Component Names: display first portion of description
Meshery Integrations Model Policy Names: display first portion of description

Acceptance Criteria

Light and dark modes are supported.
On press of hotkey CMD+K (mac), CTL+K (win / lnx), the command bar is surfaced and displayed to the user.

Reference Implementations

Spotlight search on Mac (CMD+spacebar)
Google Drive's desktop app (OPTION+ALT+G)
Search bar on Linux (alt+spacebar)
ClickUp command bar (CMD+K)
GitHub Command Palette (CMD+K)

Contributor Guide

🎨 Wireframes and designs for Layer5 site in Figma (open invite)

@leecalcote may I work on this?

@leecalcote I had a couple of questions:

Should the Command Bar be implemented only for MeshMap in Docs or for all?
In the Implementation section of the issue it mentions, what the search preview should display for ex., Catalog Design filenames should display the owner and last modified date, I'm afraid the docs don't have this info it's likely inside MeshMap, could you specify the requirement for the preview in docs?
I'll share the design first and then proceed with the implementation, but should I use the docs.layer5.io page in Figma to create a draft for this?

Hi @SAHU-01, I'll have to apologize. I’m scratching my head at how we arrived at this issue being posted under the documentation site’s repo. I suppose that at the time given that this is the 11th issue created on the repo (a very early issue) that we were looking for a convenient way to allow site visitors to search across documentation, but when copy/pasting from a similarly written issue as a feature for :meshmap:, that we (I) didn’t rewrite the issue appropriately.
In that time, we’ve been successful with implementing the search field that you find in the upper right hand corner of the documentation site. This feature is an outstanding request for MeshMap, however, it’s not on our immediate roadmap. So, we should probably close this issue.
If you are interested to getting involved with MeshMap, though, we do frequently invite individuals who have proven themselves to be consistent and net positive contributors to join a core team of maintainers working on special projects like Cloud and MeshMap. I'll contact you in the community Slack regarding opportunities to do so.


Change attributes serializers

Why:
This change will remove the alias processed_body => body in the posts
serializer in order to avoid confusion in the future.
I'm also removing the email from the user serializer, it's not
necessary.
This change addresses the need by:

Updating serializers.

:+1:


Use junction=circular

Similar to junction=roundabout there is a tag called junction=circular. It is not very commonly used, but from time to time. I think for us the right way to handle this would be to set it as roundabout, as the only difference is the right of way.
Overpass Query.
GH Maps Example
Google Maps Route
OSM Wiki
Since they are slightly different from roundabouts, some people might be mislead by the roundabout instruction?
WDYT?

Tags under 1K are not worth the effort IMO: https://taginfo.openstreetmap.org/search?q=junction%3Dcircular
Why are they no roundabouts?

Why are they no roundabouts?

Because of a different right of way. For roundabouts the cars inside the roundabout have the right of way, whereas the cars outside of the roundabout have to yield. There are some examples where this is not true.

Tags under 1K are not worth the effort IMO

Yes maybe, especially since most of them seem to be turning areas :). On the other hand, for us internally it would be easy to match all tags with either junction=roundabout or junction=circular to roundabouts.

On the other hand, for us internally it would be easy to match all tags with either junction=roundabout or junction=circular to roundabouts.

If that's possible, then any such enhancement would improve routing responses and user experience.

Based on the suggestions made here I've submitted a work-in-progress PR as basis for further discussions. The details are in the PR description.
Would love to hear your feedback!

Fixed via #1185


Is there any way to close an opened modal (height: 100%)?

It would be great if I could close the modal by clicking on some close button in the corner, for example :)

@aleksavucenovic Thanks for this issue.
So...For now, there's no way to close in full screen (apart from choosing the country, of course). But I will thinks about this..
🚀 AstrOOnauta 🚀


Error: EACCES: permission denied, scandir      '/Users/mikechambers/Library/Saved Application      State/com.bitrock.appinstaller.savedState'     Code: EACCES

Build/Submit details page URL
N/A
Summary
I upgraded to Expo 45 and now when I go to use eas build -p ios --auto-submit and the CLI throws this error:
Error: EACCES: permission denied, scandir
'/Users/mikechambers/Library/Saved Application
State/com.bitrock.appinstaller.savedState'
Code: EACCES
Managed or bare?
Managed
Environment
expo-env-info 1.0.5 environment info:
System:
OS: macOS 11.6.4
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 16.17.0 - /usr/local/bin/node
npm: 8.19.2 - /usr/local/bin/npm
SDKs:
iOS SDK:
Platforms: DriverKit 21.0.1, iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0
IDEs:
Android Studio: 2021.2 AI-212.5712.43.2112.8815526
Xcode: 13.1/13A1030d - /usr/bin/xcodebuild
npmPackages:
@expo/metro-config: ^0.1.84 => 0.1.84
babel-preset-expo: 8.3.0 => 9.0.2
expo: ^45.0.0 => 45.0.8
react: 17.0.2 => 17.0.2
react-dom: 17.0.2 => 17.0.2
react-native: 0.68.2 => 0.68.2
react-native-web: 0.17.7 => 0.17.7
react-navigation: 4.4.4 => 4.4.4
npmGlobalPackages:
eas-cli: 2.1.0
expo-cli: 6.0.5
Expo Workflow: managed
Expected package<EMAIL_ADDRESS>Found invalid:
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>(for more info, run: npm why @expo/config-plugins)
Expected package<EMAIL_ADDRESS>Found invalid:
<EMAIL_ADDRESS>(for more info, run: npm why @expo/prebuild-config)
Error output
Error: EACCES: permission denied, scandir
'/Users/mikechambers/Library/Saved Application
State/com.bitrock.appinstaller.savedState'
Code: EACCES
Reproducible demo or steps to reproduce from a blank project
Upgrade to Expo 45, reinstall node modules, run eas build -p ios --auto-submit.

After downloading the zip from github and installing node modules and expo-cli and eas-cli I was still getting this error.
Solution: Create a fresh expo project and then copy my folder inside of the new app. Now I am not having this issue. Thanks again!

Move the project directory: If none of the above solutions work, you can try moving your project directory to a different location that does not have permission issues. For example, you can move your project to a directory within your home directory.

Move the project directory: If none of the above solutions work, you can try moving your project directory to a different location that does not have permission issues. For example, you can move your project to a directory within your home directory.

i've done this and it work for me

Move the project directory: If none of the above solutions work, you can try moving your project directory to a different location that does not have permission issues. For example, you can move your project to a directory within your home directory.

i've done this and it work for me

Move the project directory: If none of the above solutions work, you can try moving your project directory to a different location that does not have permission issues. For example, you can move your project to a directory within your home directory.

Just "git init" in your expo project folder. This fixed the issue for me. Hope you found this helpful 👯


Add English Editorial for LOJ 1268 - Unlucky Strings

Resolves #120

A very well articulated piece. Kudos, you did a great job!

A very well articulated piece. Kudos, you did a great job!


Opening #general causes weechat to freeze for 30-45 seconds

If I quit weechat and open it back up, the #general channel will freeze the weechat process for about half a minute. After that, everything is fine. Leaving #general via /close and rejoining will cause the same freeze up. The slack-debug channel does not show any clear problems
DEBUG: connected to <omitted>.slack.com
DEBUG: Function not implemented: hello
{u'type': u'hello', 'myserver': '<omitted>.slack.com'}
DEBUG: Sent {"type": "ping", "id": 1}...
DEBUG: REPLY {'type': 'ping', 'id': 1}
DEBUG: Unexpected error: <class 'socket.error'>
Sent: {'type': 'ping', 'id': 2}
DEBUG: Unexpected error: <class 'socket.error'>
Sent: {'type': 'ping', 'id': 3}
DEBUG: connected to <omitted>.slack.com
DEBUG: Function not implemented: hello
{u'type': u'hello', 'myserver': '<omitted>.slack.com'}
DEBUG: Sent {"type": "ping", "id": 1}...
DEBUG: REPLY {'type': 'ping', 'id': 1}
DEBUG: Sent {"type": "ping", "id": 2}...
DEBUG: REPLY {'type': 'ping', 'id': 2}
DEBUG: Sent {"type": "ping", "id": 3}...

Looks to be an issue with processing joins/leaves. In #general, with a big company, this is a huge amount of processing.
        # send these messages elsewhere
        known_subtypes = ['channel_join', 'channel_leave', 'channel_topic']
        if "subtype" in message_json and message_json["subtype"] in known_subtypes:
            proc[message_json["subtype"]](message_json)

removing the proc[...] line makes the client start up immediately. Something seems to halt the client when pushing to the proc array.

I had the same problem, except the process would freeze and use 100% CPU until I killed it (I waited 10 minutes). I'm in a channel with 4000 active users though…

@o2dazone, that isn't actually pushing to an array, it looks up the subtype in the proc map and calls the function it points to.
If it takes a very long time, I suspect we're doing lookups in an array instead of a set/dictionary, leading to O(n^2) runtimes.

@Jayphen, we've included a bunch of performance speedups now. Can you see if git head works better for you?

Problem still persists after doing a pull today.

I'm also still having this issue, using Weechat 1.3.


Once branch was protected "Lock" icon will never be removed

Gogs version (or commit ref): <IP_ADDRESS>2
Git version: 2.16.1
Operating system: Windows
Database:

[ ] PostgreSQL
[x] MySQL
[ ] MSSQL
[ ] SQLite

Can you reproduce the bug at https://try.gogs.io:

[x] Yes (provide example URL)
[ ] No
[ ] Not relevant

Once a branch is protected by "Settings/Branches/Protect this branch" and later option is disabled again, the "Lock" icon within the branch overview list will never be removed again:

Thx. That was really fast 👍

This is claimed to be fixed by merging #5054, please help test on develop branch.


🐛 [BUG] Internal Server Error ("manifest unknown")

Description
Hello
Error install
Internal Server Error ("manifest unknown")

Merci
Reproduction steps
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

Addon Logs
`Can't install ghcr.io/alexbelgium/portainer-amd64:2.19.1: 500 Server Error for http+docker://localhost/v1.42/images/create?tag=2.19.1&fromImage=ghcr.io%2Falexbelgium%2Fportainer-amd64&platform=linux%2Famd64: Internal Server Error ("manifest unknown")`

Architecture
amd64
OS
Virtual Machine

Same for Proxmox haos VM

Same error on a Generic x86-64 Home Assistant Operating System (on a NUC)
I got the error on updating these add ons:

Joplin 2.13.1
Nextcloud 27.1.1

The 2.19.1 image does not exist, that is what is causing this error.  Could be something failed in the build pipeline and the image didn't make it but the metadata was updated.  Thinks there is an update but no image with that tag exists.

All daily build failed I’ll solve that today

Seems like there is an issue with codenotary that makes a timeout on all build. Alas it seems external to my repo

Hello
Resolved by me

Yes, all builds are up now ! I’ll close this unless someone has again a specific issue. Thanks all