mousetweaks: init at 3.32.0

Motivation for this change
We should have more accessibility programs.
Runs fine but I haven't tested with Gnome so I don't know if it does the
right thing. So I guess it's WIP.
I'd be glad if somebody tried it on Gnome :)
Solves #39509
Things done

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

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

[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Assured whether relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

This will not work on GNOME under Wayland. I heard something about it being rewritten as a part of Mutter (GNOME’s WM) but cannot find the reference now.

Hmmmm, I'll look into it.
Also I created the directory pkgs/applications/accessibility I think we should move some tools there to have them sorted better. (e.g. orca is in pkgs/misc)

Maybe I should move this under the gnome3 attribute if it only works on Gnome.

I tested mousetweaks --dwell in elementary and it still works so top-level attribute is fine. I am actually trying to get rid of gnome3 attribute set.

:smirk: https://gitlab.gnome.org/GNOME/gnome-build-meta/merge_requests/269

Yeah, https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/474 is the MR I had in mind.
I can confirm this works in GNOME Shell running on Xorg (In Control Center under Universal Access enable Typing Assist).
We may want to patch https://gitlab.gnome.org/GNOME/gnome-settings-daemon/blob/725d1e53fd656e1039c8da02ba0dbfd3db93b3c1/plugins/mouse/gsd-mouse-manager.c#L119, as without mousekeys being on PATH, the typing access just immediately switches itself off with the only error being logged in journal.
Given that this is useful for other Xorg based desktops (even though it might need to be controlled through CLI arguments), I would still like to merge this.

I tested mousetweaks --dwell in elementary and it still works so top-level attribute is fine.

I can confirm this works in GNOME Shell running on Xorg

Hmm does jtojnar switch between these effortlessly :grin:

We may want to patch https://gitlab.gnome.org/GNOME/gnome-settings-daemon/blob/725d1e53fd656e1039c8da02ba0dbfd3db93b3c1/plugins/mouse/gsd-mouse-manager.c#L119, as without mousekeys being on PATH, the typing access just immediately switches itself off with the only error being logged in journal.

Sure, we can eat the runtime dep.

Given that this is useful for other Xorg based desktops (even though it might need to be controlled through CLI arguments), I would still like to merge this. It is not like we are removing Xorg anytime soon, and those relying on accessibility features still depend on it anyway.

Right, surprised it wasn't packaged already anyway.

Hmm does jtojnar switch between these effortlessly :grin:

I have elementary and some other VM definitions on hand, so I just run
nixos-rebuild build-vm -I nixpkgs=$HOME/Projects/nixpkgs -I nixos-config=../nix-playground/elementary.nix
env QEMU_NET_OPTS="hostfwd=tcp::2222-:22" ./result/bin/run-*-vm

and roll :walking_man:

Right, surprised it wasn't packaged already anyway.

Yeah, I was lazy and it was not very high in my queue since I was not sure what it actually does.

I have elementary and some other VM definitions on hand, so I just run
nixos-rebuild build-vm -I nixpkgs=$HOME/Projects/nixpkgs -I nixos-config=../nix-playground/elementary.nix
env QEMU_NET_OPTS="hostfwd=tcp::2222-:22" ./result/bin/run-*-vm

huh, I tend to keep a repo of configurations and just use an alias to build them when it's in the working directory.
Also looks like they even ship this tool
https://github.com/elementary/metapackages/blob/f27df798111e207f056a7a3d63eaf495aa0d34a7/desktop-recommends-amd64#L133

Yeah, I was lazy and it was not very high in my queue since I was not sure what it actually does.

Same there, they shipped it so I almost packaged it. But didn't know what it was for.

Thanks for the feedback!
It doesn't look unmaintained, it's been getting a few commits until 4 weeks ago.
Seems that MR is the only one that mentions it's deprecated - but the replacement hasn't been merged yet.

We may want to patch gitlab.gnome.org/GNOME/gnome-settings-daemon/blob/725d1e53fd656e1039c8da02ba0dbfd3db93b3c1/plugins/mouse/gsd-mouse-manager.c#L119, as without mousekeys being on PATH, the typing access just immediately switches itself off with the only error being logged in journal.
But isn't mousekeys on the PATH? Or how did you install it for use with GNOME?

Looked into if onboard should depend on mousetweaks. First I was confused that it depends on the old settings schemas org.gnome.Mousetweaks but apparently, it is only used for determining whether mousekeys are installed:
https://bazaar.launchpad.net/~onboard/onboard/trunk/view/head:/Onboard/ClickSimulator.py?start_revid=2295#L443
I suggest adding it to buildInputs of onboard.
And we might want to patch https://bazaar.launchpad.net/~onboard/onboard/trunk/view/head:/Onboard/ClickSimulator.py?start_revid=2295#L482

Cannot find any code path where orca depends on mousetweaks.

I patched both locations.
But I'm not happy with the sed solution. It just silently fails when the code changes - or might even screw with new code.
Is there a way to write a patch file that I can interpolate a nix-store path into? I remember seeing something with @@var@@.

You can use patch with substituteAll:
https://github.com/NixOS/nixpkgs/blob/12b82b1a06f106740da0fa0d290b817b494a1fd2/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix#L39-L47

Thanks! Now it's using that.

Things done in the force push

Dropped repositories.git in mousetweaks. (https://github.com/NixOS/nixpkgs/pull/60176#discussion_r279205350)
Squashed commits, commit msg cleanup
Added hardcode patch for pantheon's gnome-settings-daemon

Thank you @JohnAZoidberg for your contribution and being so quick to respond to changes :sparkles:

Thanks for your thorough review!


temperature_offset does not appear to be working as documented

In low power mode, the reported temperature was about 2 degrees too low.
I tried setting temperature_offset to 2, but it was still too low by ~.5 degrees, so I set it to 2.5. As a consequence, the reading was a full degree too high.
For testing purposes I set the offset to -1 , after which I read temperatures about 60 degrees too low.
The docs state:

Specifies the offset to be added to the reported measurements to account for a bias in the measured signal. Value is in degrees Celsius with a resolution of 0.01 degrees and a maximum value of 374 C

Something seems very broken here.
For context, this is how I call things:
i2c = busio.I2C(board.SCL, board.SDA)
co2_sensor = SCD4X(i2c)
co2_sensor.temperature_offset = LOW_POWER_TEMP_OFFSET
co2_sensor.start_low_periodic_measurement()

My sensor board is labeled SCD40

From the datasheet it seems like you have to send the offset command when the measurement is stopped. Have you tried that?


Diffing magic not working, Perform Updates reloads everything

@rnystrom
Not sure what I'm doing wrong but I'm not seeing much diffing magic yet😓

I have an immutable data model
var peopleSection = PeopleSection()
...
class PeopleSection {

    let people: [Person]

    init(_ people: [Person]) {
        self.people = people
    }
}

My datamodel conforms to IGListDiffable protocol
extension PeopleSection: IGListDiffable {

    func diffIdentifier() -> NSObjectProtocol {
        return DiffingIdentifier.people //people is an NSString
    }

    func isEqual(toDiffableObject object: IGListDiffable?) -> Bool {
        guard let object = object as? PeopleSection else { return false }
        if self === object { return true }
        return self.people == object.people
    }
}

So do the "Persons" in my "people" array
extension Person: IGListDiffable {

   func diffIdentifier() -> NSObjectProtocol {
        return self.objectId as NSObjectProtocol
    }

   func isEqual(toDiffableObject object: IGListDiffable?) -> Bool {
        guard let object = object as? Person else { return false }
        return self.objectId == object.objectId
    }
}

extension Person: Equatable {

    public static func ==(lhs: Person, rhs: Person) -> Bool {
        return lhs.objectId == rhs.objectId
    }
}

I query for "New People" from the database and return a new instance of my dataModel
extension PeopleSection {
    func add(_ newPeople: [Person]) -> PeopleSection {
        return PeopleSection(self.people + newPeople)
       //Returns a new instance of my PeopleSection with new "Persons" appended to "People Array"
    }
}

I proceed to handle business in my IGListAdapterDataSource
extension PeopleViewController: IGListAdapterDataSource {

    func objects(for listAdapter: IGListAdapter) -> [IGListDiffable] {

        var objects = [self.peopleSection] as [IGListDiffable]

        if self.activity == .start {
            objects.append(self.loading as IGListDiffable)
        }
        return objects
    }

    func listAdapter(_ listAdapter: IGListAdapter, sectionControllerFor object: Any) -> IGListSectionController {
        if object is PeopleSection {
            return PeopleSectionController()
        }
    }

As well as in my SectionController
class PeopleSectionController: IGListSectionController, IGListSectionType {

    var peopleSection: PeopleSection?
    ...
    func numberOfItems() -> Int {
        return peopleSection?.people.count ?? 0
    }
    ...
    func cellForItem(at index: Int) -> UICollectionViewCell {}
    ...
    func didUpdate(to object: Any) {
        self.peopleSection = object as? PeopleSection
    }
}

EXPECTED MAGIC
NOTE: My cells have a background user Photo + Name Label on them.

As user scrolls down, I retrieve more "3 Persons" from my database and return a new instance of my datamodel.
When I call performUpdates, I expect it to just append the new "Persons" below the existing Persons.

WHAT HAPPENS INSTEAD
Note - In the example GIF above, Im loading 3 people each time user pulls to refresh

Notice that each solid color represents a "Persons" photo (Which I've hid). When performUpdates, they all reload(The color change represents a reloaded cell).
All the cells rearrange in random order
Sometimes, the cells that already exist wont reload, except they rearrange lose their "UILabel" but keep thier "Photo background/color" ~ wierd.

Help😓
Update: Thinking out loud -- Could it have to do with me returning peopleSection.people.count in numberOfItems which sees every updated new instance of my dataArray as different causing the whole thing to reload?? Just thinking out loud...😓

IGListKit version: 2.1.0
iOS version(s): 10
CocoaPods/Carthage version:
Xcode version: 8
Reproducible in the demo project? (Yes/No):

If you could provide an example project it might be easier to diagnose the issue.
From my understanding though, each cell is represented by a Person. On pull to refresh you're adding three more Person to the single PersonSection that you have. By virtue of doing that it's now deemed a different object by isEqual(toDiffableObject) and therefore refreshes the entire view.
Your layout choice here means you want to have cells next to each other so having a section per item (which is recommended) is not going to work unless you have a custom layout.

@Sherlouk I had a hunch that may be the issue. totally makes sense.
@zhubofei I previously tried to use your IGListGridCollectionViewLayout but could never get a perfect grid out of it. Any developments since?

@otymartin In the past I've used this library: https://github.com/rhodgkins/RDHCollectionViewGridLayout. Not been updated in a while but may be worth having a look!

@Sherlouk
I finally managed to achieve the behaviour I wanted thanks to your analysis.

My dataModel is no longer immutable

var peopleSection = People()
...
class People {

    var people: [Person]
    weak var delegate: PeopleViewController?

    init(_ people: [Person]) {
        self.people = people
    }

    convenience init() {
        self.init([Person]())
    }

}

I now append new results to my exists "People" array
private func add(_ people: [Person]) {
        self.people.append(contentsOf: self.sorted(people))
        self.delegate?.peopleActivity(.stop)
    }

In my list adapter
 func objects(for listAdapter: IGListAdapter) -> [IGListDiffable] {

        var objects = self.peopleSection.people as [IGListDiffable].
...

For my collectionViewLayout I use IGListCollectionViewLayout
I think IGListGridFlowLayout was deprecated in exchange for this.
In my sectionController I do all this...
NOTE: My collectionView leading and trailing margins are offset by 4 points which I did in the storyboard using autolayout. I found it a tough balancing act to get the grid to form by setting the left and right insets using UIEdgeInsets.
class PeopleSectionController: IGListSectionController, IGListSectionType {

    var person: Person?

    override init() {
        super.init()
        self.minimumInteritemSpacing = 4
        self.inset = UIEdgeInsets(top: 0, left: 0, bottom: 4, right: 0)
    }

    func numberOfItems() -> Int {
        return 1
    }

    func sizeForItem(at index: Int) -> CGSize {
        return self.itemSize
    }
...
   fileprivate var itemSize: CGSize {
        let collectionViewWidth = collectionContext?.containerSize.width ?? 0
        let itemWidth = ((collectionViewWidth - 8) / 3)
        let heightRatio: CGFloat = 1.5
        return CGSize(width: itemWidth, height: itemWidth * heightRatio)
    }

Would it be possible to upload an example project to GitHub and I'll have a more detailed look. With the code posted I can't see how you're doing the pull-to-refresh behaviour!

@Sherlouk
Hey, my problem is fixed now. unfortunately I can't upload an example project but for the pull-to-refresh behaviour I followed the "Load More" example.
Its literally the same code except, I return a random number of activity cells  based on how many "Person" cells there are on the last row. I then interpolate the activity cell's contentView background color randomColor to anotherRandom Color.
extension PeopleViewController: UIScrollViewDelegate {

    func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

        if scrollView.panGestureRecognizer.translation(in: scrollView).y > 0 {
            return
        }

        let distance = scrollView.contentSize.height - (targetContentOffset.pointee.y + scrollView.bounds.height)
        if self.activity == .stop && distance < 200 {
            guard let currentUser = self.currentUser  else { return }
            self.peopleSection.getPeople(near: currentUser)
        }
    }
}
....
class ActivitySectionController: IGListSectionController, IGListSectionType {

    override init() {
        super.init()
        self.minimumLineSpacing = 4
        self.minimumInteritemSpacing = 4
    }

    func numberOfItems() -> Int {
        return self.activityIndicators
    }

    func cellForItem(at index: Int) -> UICollectionViewCell {

        let cell = self.collectionContext?.dequeueReusableCellFromStoryboard(withIdentifier: Cell.activityCell, for: self, at: index) as! ActivityCell
        if let delegate = self.viewController as? PeopleViewController {
            cell.configure(delegate)
        }
        cell.start() //START INTERPOLATING BACKGROUND COLORS

        return cell
    }

    func sizeForItem(at index: Int) -> CGSize {
        let width = collectionContext?.containerSize.width ?? 0
        let itemSize = floor((width - 8) / 3)
        return CGSize(width: itemSize, height: itemSize * 1.5)
    }

    func didSelectItem(at index: Int) {}

    func didUpdate(to object: Any) {}

}

extension ActivitySectionController {

    fileprivate var activityIndicators: Int {

        var peopleCount: Double?

        guard let peopleViewController = self.viewController as? PeopleViewController  else { return 0 }

        peopleCount = peopleViewController.peopleSection.people.count.toDouble

        if peopleViewController.activity == .stop {
            return 0
        }

        guard let count = peopleCount else { return 3 }

        let numberOfRows = ceil(count / 3)
        let emptyCellsInRow = (numberOfRows * 3) - count

        if emptyCellsInRow == 1 {
            return 4
        } else if emptyCellsInRow == 2 {
            return 2
        }
        return 3
    }
}

@otymartin Closing the issue since it's fixed, if you have any more questions then feel free to reopen or submit a new issue!


[Bug] MS Doc Syntax Admonitions seems to be broken (LP & Reading)

Hi there 😊 !
So, last night Obsidian was updated from v 0.13.31 to v 0.13.32 and since then, MS Doc Syntax Admonitions (> ) seem to be really buggy 😔 ...
I've created 2 customs admonitions for my daily notes which I used for a while now without troubles...
I use both of them as MS Doc Syntax Admonitions with no title and no type...
E.g.: my "nav" admonition

The "nav" admonition has these settings

Which was looking like this (I had to use a code block admonition to be able to take the screenshot below)

Using this markdown
> [!nav:  ]
> :fas_home:  [[Periodic Notes#Periodic Notes|Periodic Notes]] ≻ [[2022#2022|2022]] ≻ [[2022-Q1#2022-Q1|Q1]] ≻ [[2022-03#2022-03|3 ･ Mar]] ≻ [[2022-W10#2022-W10|W 10]]
>
> :fas_map_signs:  ⪻ [[2022-03-09#2022-03-09|2022-03-09]] ･✵･ [[2022-03-11#2022-03-11|2022-03-11]] ⪼
>
> |||||||
> |:-:|:--|--:|:--|--:|:--|
> | :fas_calendar: | [[2022#2022\|2022]] | :ril_hashtag: :fas_calendar_day: | [[2022-03-10#2022-03-10\|069]] ⦗/ 365 ⦘ | :ril_percent: :fas_calendar: | <progress value="0.189" max="1"></progress> 18.9% |
> | :fas_calendar_alt: | [[2022-Q1#2022-Q1\|Q1]] | :ril_hashtag: :fas_calendar_day: | [[2022-03-10#2022-03-10\|69]] ⦗/ 90 ⦘ | :ril_percent: :fas_calendar_alt: | <progress value="0.7667" max="1"></progress> 76.67% |
> | :fas_calendar_alt: | [[2022-03#2022-03\|3 ･ Mar]] | :ril_hashtag: :fas_calendar_day: | [[2022-03-10#2022-03-10\|10]] ⦗/ 31 ⦘ | :ril_percent: :fas_calendar_alt: | <progress value="0.3226" max="1"></progress> 32.26% |
> | :fas_calendar_week: | [[2022-W10#2022-W10\|W 10]] | :ril_hashtag: :fas_calendar_day: | [[2022-03-10#2022-03-10\|4 ･ Thursday]] | :ril_percent: :fas_calendar_week: | <progress value="0.5714" max="1"></progress> 57.14% |

I first thought it was because of the 2 spaces I used after the colon to be able to not display the icon + type but when I try with only one space after the colon, my admonition appears twice in LP 🤔 (with the wrong color and icon)

With only one space after the colon, the ghost admonition disappears but it's still not rendered as it should in LP & Reading mode...

And if I add a title, the admonition still doesn't work (it still displays the type, the colon and the title (which get transformed to a full lower case title) with the wrong color)

I thought that maybe it was because it's a custom admonition but I get similar results with a classical Quote one 😔 ...

It's like when trying to either add a title or not displaying one (i.e.: using a colon with the admonition's type) the plugin doesn't seem to recognise the admonition and displays a "default" one (apparently the notes admonition) 😔.
And I insist (😇): everything was working perfectly yesterday morning, before the last update of Obsidian  🤔 ...
I'm on Mac + Obsidian 0.13.32 + Admonition 7.0.4 (Default Obsidian Dark Theme & just 1 CSS Snippet for the progress bar)

Seems to be back to normal after Obsidian was updated from v0.13.32 to v0.13.33 🎉 😁 !


Implicit syntax

This 真香s #32 because we can actually modify terms during tycking.
Basically inserting metas at proper places (https://github.com/owo-lang/voile-rs/commit/84b499d2ca9ed0c9616c3bc488336f2bf9dea1f1), reference: https://github.com/AndrasKovacs/elaboration-zoo/tree/master/04_Implicits

I hope we can name ParamKind as Licit

Or Plicit

Checkout https://github.com/owo-lang/voile-rs/compare/0.1.3...implicit

Checkout 0.1.3...be6668625b669b8cb6fe566b64702a5bc3141fd8


Extracting a texture before dispose

I have a use case where I want to render to a texture for later use, but I don't need the fbo object to stick around. Since dispose also wipes the texture, I've been doing this:
var texture = fbo.color[0];
fbo.color = [];
fbo.dispose();

This allows me to keep the texture object and still call dispose on the fbo, but is a little hacky. Is there a better pattern for this? If not, what would an acceptable API for this behavior be? Something like the following?
var texture = fbo.color[0];
fbo.dispose({preserveColor: true});

I'm happy to make a PR if we can find consensus.

Another way to do it would be to inject the texture via an argument, though it might take a bit more work to set up and then you have to track the texture as a dependency.  The advantage there though is that it is closer to how WebGL actually works and it would let you reuse the same texture across multiple FBOs.
That said, I think the dispose() modification seems reasonable.  If you want to write a PR, go for it and I'll merge it in.  It is probably less work up front and doesn't really break anything existing.

Those are great points. I'm wondering now if a better approach might be to make a new fbo module that expects a texture, and then convert this module into a wrapper around it that still matches this module's behavior. Seems like it might make the internal logic easier, and still leaves users with an easy-to-comprehend module here.


Update minio and mc to latest release

What this PR does / why we need it: Update minio and mc Docker images to latest release
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Special notes for your reviewer:

/ok-to-test


How does a static HTML file use vue-router?

What problem does this feature solve?
I'm using Vue to develop a PC APP, and try to open a static HTML instead of server-link-access, but the router does not work. How should I solve it?

Hi, thanks for your interest but Github issues are for bug reports and feature requests only. You can ask questions on the forum, gitter or StackOverflow.

Using hash mode should work


Maven multi module project support

I have a air desktop project managed by maven(via flexmojos-maven-plugin). The top level project has no source code, it’s just a parent pom project. The modules of it are applicarion or library projects. Now my questions are:

How to configure the project? The wiki provides sample asconfig.json for different kinds of project. But I still don’t know how to configure my project’s top level asconfig.json file, since it neither a application nor a library project. Due to that the as3mxml language server seems not working.

The as3mxml extension does not support maven. It can not resolve dependencies from pom.xml. That means I have to create a lib folder and copy all swc files into it. It’s meaningless for me because it’s maven’s job.

Will, do u have any plan about adding maven support for flex?

But I still don’t know how to configure my project’s top level asconfig.json file, since it neither a application nor a library project.

The root folder of your workspace must be an application or library project. Applications/libraries cannot be in subfolders or code intelligence will not be enabled for them.
VSCode supports something called multi-root workspaces. If you want all of your applications/libraries in the same workspace, then you need to add each individual module that represents an application or library as a root. Then, you can create a separate asconfig.json file inside each root to configure it.

Will, do u have any plan about adding maven support for flex?

I do not. I suspect that it would be a huge undertaking with little benefit.
I might consider Maven support for Apache Royale in the future (unlikely, but possible). However, Maven usage with Flex was never common even when Flex was at its highest level of popularity. These days, I'd probably be supporting you and no one else.

That means I have to create a lib folder and copy all swc files into it. It’s meaningless for me because it’s maven’s job.

You could probably use the paths to the SWC files in your Maven repository instead of copying them into your project folder.


Fix rare fixed-rates calculation problem when missing cb fields

The true branch of this if-else is very rare.
The problem was that we did not set metric_value in the true branch. That means we keep metric_value from the previous loop or nil. The nil value could crash the cb calculations as we would attempt to 0 + nil a few lines later.
Introduced in f3506b7ce9713a90ed1061b5ad8cb57d6cd402ed.
/cc @lpichler
@miq-bot add_label chargeback, bug
@miq-bot assign @gtanzillo

the logic is pretty clear --> merging
euwe? do we need an euwe BZ for this one?

Cannot really tell if this should go to the euwe.
Do we have any formal guidance how we decide?

@isimluk Only PRs with the blocker flag and the euwe/yes label will be back ported to euwe before the release. PRs with just the euwe/yes flag only will be back ported after the release and will be picked up in the first errata.
Given that this one is not a blocker, it should still be labeled euwe/yes if you think it's likely to be hit by other users.

Thanks!
@miq-bot add_label euwe/yes

@isimluk is there a BZ for this?

No there is no bz. And I don't know what is the reproducer.

I prefer this to be backported in bulk, see #13419.

Backported to Euwe via https://github.com/ManageIQ/manageiq/pull/13419


Collect metrics for the ic-canister-derived canisters

Closing in favor https://github.com/infinity-swap/ic-helpers/pull/58


chore(master): release 0.27.0

:robot: I have created a release beep boop
0.27.0 (2024-06-11)
Features

add redeem shortcut to sidebar (999399f)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/ethersphere/bee-dashboard/releases/tag/v0.27.0 :sunflower:


ns-train won't halt the execution after finished training

Describe the bug
Maybe I am missing something, but when I run ns-train, the execution of it won't halt unless I press ctrl+C to exit the process in the terminal. This behavior is undesired since I would like to do an end-to-end implementation with less supervision.
I encounter this "bug" when I run ns-train splatfacto --load-config config.yml.
The only parameters I changed are in the viewer, and are these ones:
make-share-url true
websocket-port 7007
quit-train-after-completion true
Even thought the quit train after completion is true, still the process won't halt. I think that the problem is the make share url set to true, but how can I solve this?

Hi @MatteoFusconi, thanks for filing this issue! This was indeed a share URL bug, I just made a PR to fix it.
If you want a short-term fix you can install viser from source once that's merged, otherwise we'll get this into the next release.


MINOR: Update the list of collaborators based on the number of commit…

as title.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

I’ll hold off on merging until we reach a consensus.


[BUG] Control plane deployment fails: polling after CreateOrUpdate: context deadline exceeded

Describe the bug
New deployment of control plane fails with an error: polling after CreateOrUpdate: context deadline
Full message:
{"@level":"error","@message":"Error: creating/updating Extension (Subscription: \"<redacted>\"\nResource Group Name: \"<redacted>\"\nVirtual Machine Name: \"LAB-SECE-DEP05_labsecedep05deploy00\"\nExtension Name: \"configure_deployer\"): polling after CreateOrUpdate: context deadline exceeded","@module":"terraform.ui","@timestamp":"2024-07-31T07:10:21.327808Z","diagnostic":{"severity":"error","summary":"creating/updating Extension (Subscription: \"<redacted>\"\nResource Group Name: \"<redacted>\"\nVirtual Machine Name: \"LAB-SECE-DEP05_labsecedep05deploy00\"\nExtension Name: \"configure_deployer\"): polling after CreateOrUpdate: context deadline exceeded","detail":"","address":"module.sap_deployer.azurerm_virtual_machine_extension.configure[0]","range":{"filename":"../../terraform-units/modules/sap_deployer/vm-deployer.tf","start":{"line":218,"column":58,"byte":14456},"end":{"line":218,"column":59,"byte":14457}},"snippet":{"context":"resource \"azurerm_virtual_machine_extension\" \"configure\"","code":"resource \"azurerm_virtual_machine_extension\" \"configure\" {","start_line":218,"highlight_start_offset":57,"highlight_end_offset":58,"values":[]}},"type":"diagnostic"}

The error above happens somewhere in the middle of the deployment but process continues and in the end fails with:
{"@level":"error","@message":"Error: A resource with the ID \"/subscriptions/<redacted>/resourceGroups/<redacted>/providers/Microsoft.Compute/virtualMachines/LAB-SECE-DEP05_labsecedep05deploy00/extensions/configure_deployer\" already exists - to be managed via Terraform this resource needs to be imported into the State. Please see the resource documentation for \"azurerm_virtual_machine_extension\" for more information.","@module":"terraform.ui","@timestamp":"2024-07-31T07:41:11.348134Z",

Setup of the local machine:
SLES ver. 15SP3
az cli:
az --version
azure-cli                         2.38.2 *
core                              2.38.2 *
telemetry                          1.0.6 *
Dependencies:
msal                            1.18.0b1
azure-mgmt-resource             21.1.0b1

terraform:
azureadm@localhost:~> terraform -v
Terraform v1.9.3
on linux_amd64

SDAF version: master branch
To reproduce
Steps to reproduce the behavior:

general preparation according to official guide
executed:

${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh --deployer_parameter_file "${deployer_parameter_file}" --library_parameter_file "${library_parameter_file}" --subscription "${ARM_SUBSCRIPTION_ID}" --spn_id "${ARM_CLIENT_ID}" --spn_secret "${ARM_CLIENT_SECRET}" --tenant_id "${ARM_TENANT_ID}"  --auto-approve

See error

I just realized that after failure, if I open VM overview from azure WEB ui, it says: 'Virtual machine agent status not ready'

Hi @lpalovsky , can you try rebooting the machine? And then also rerun the Control Plane Deployment pipeline?

Hi @lpalovsky , can you try rebooting the machine? And then also rerun the Control Plane Deployment pipeline?

Hello @devanshjainms. Thanks for the reply.
I tried to dereploy everything from scratch afgain today, but this time I used SDAF release v<IP_ADDRESS>. (We agreed with @hdamecharla to use this as stable baseline. )
I experienced the same situation with deployment running for about an hour and then failing with same error as above and seeing the yellow banner in WebUI.
After VM restart the banner disappeared but deployment script fails with the same error:
{"@level":"error","@message":"Error: updating Linux Virtual Machine (Subscription: \"<REDACTED>\"\nResource Group Name: \"<REDACTED>\"\nVirtual Machine Name: \"LAB-SECE-DEP05_labsecedep05deploy00\"): polling after Update: context deadline exceeded"

Thanks a lot for your help.
Lumir

Hello, just an update with an observation I made:
At the beginning of the deployment the VM is fine, but after Library is deployed, waagent service goes into 'dead' state. It is possible to start it normally, but process seems to be still hanging.
● waagent.service - Azure Linux Agent
     Loaded: loaded (/usr/lib/systemd/system/waagent.service; enabled; vendor preset: disabled)
     Active: inactive (dead) since Thu 2024-08-08 08:01:19 UTC; 35min ago
  Condition: start condition failed at Thu 2024-08-08 08:01:19 UTC; 35min ago
   Main PID: 2837 (code=exited, status=0/SUCCESS)

Aug 08 07:56:37 labsecedep05deploy00 sudo[4229]: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 08 07:58:00 labsecedep05deploy00 sudo[4368]:     root : PWD=/var/lib/waagent/custom-script/download/0 ; USER=root ; COMMAND=…b-release
Aug 08 07:58:00 labsecedep05deploy00 sudo[4368]: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 08 07:58:27 labsecedep05deploy00 sudo[4936]:     root : PWD=/var/lib/waagent/custom-script/download/0 ; USER=root ; COMMAND=…ive patch
Aug 08 07:58:27 labsecedep05deploy00 sudo[4936]: pam_unix(sudo:session): session opened for user root by (uid=0)
Aug 08 08:01:19 labsecedep05deploy00 systemd[1]: Stopping Azure Linux Agent...
Aug 08 08:01:19 labsecedep05deploy00 python3[2837]: 2024-08-08T08:01:19.795971Z INFO Daemon Daemon Agent WALinuxAgent-<IP_ADDRESS> fo…<IP_ADDRESS>
Aug 08 08:01:19 labsecedep05deploy00 systemd[1]: waagent.service: Succeeded.
Aug 08 08:01:19 labsecedep05deploy00 systemd[1]: Stopped Azure Linux Agent.
Aug 08 08:01:19 labsecedep05deploy00 systemd[1]: Condition check resulted in Azure Linux Agent being skipped.
Hint: Some lines were ellipsized, use -l to show in full.

As @KimForss pointed out on today call, it might be an infra glitch, so I will try to deploy in different region. Will come back with an update.
Looks like I should be able to finish the deployer VM configuration using the configure_deployer.sh script.

Hello. I am closing the issue since I don't experience it anymore.
I deployed already at least 2 environments without problems.
Might have been a temporary infra issue or something.

Thanks for the update. @lpalovsky


Allow settings --service-node-port-range option using a config variable

Introduce SERVICE_NODE_PORT_RANGE variable which gets passed to kube-apiserver as a --service-node-port-range argument.

fixes #11945

I'm surprised anyone really cares about setting this - is there a use case for it?  It's not an unreasonable PR, just seems not very useful

LGTM

Yes it's a use case for us. I'm setting up a cluster using ubuntu VMs, and I want to expose a service at port 80. And since I can't use type: LoadBalancer since it's not supported out of the box, I have to do type: NodePort and set nodePort to 80.

I figured that would be what you were up to.  Note that this is an exposure
that is very hard to debug.
If you set the node port range down to 80, that means ANY service might get
randomly allocated port 80.  It also means that any Pod that asks for a
HostPort migh conflict with NodePorts and we don't really have a good way
to detect report that.
You might be happier with
https://github.com/GoogleCloudPlatform/kubernetes/tree/master/contrib/for-demos/proxy-to-service
On Wed, Jul 29, 2015 at 1:26 AM, Arsen Mamikonyan<EMAIL_ADDRESS>wrote:

Yes it's a use case for us. I'm setting up a cluster using ubuntu VMs, and
I want to expose a service at port 80. And since I can't use type:
LoadBalancer since it's not supported out of the box, I have to do type:
NodePort and set nodePort to 80.
—
Reply to this email directly or view it on GitHub
https://github.com/GoogleCloudPlatform/kubernetes/pull/11946#issuecomment-125879027
.

Needs rebase

rebased

Does this not work with the vagrant provider?

This is specific to the ubuntu provider.


Change workbench port

What type of issue is this?
Question
What SharePoint development model, framework, SDK or API is this about?
💥 SharePoint Framework
Target SharePoint environment
SharePoint Online
What browser(s) / client(s) have you tested

[ ] 💥 Internet Explorer
[X] 💥 Microsoft Edge
[ ] 💥 Google Chrome
[ ] 💥 FireFox
[ ] 💥 Safari
[ ] mobile (iOS/iPadOS)
[ ] mobile (Android)
[ ] not applicable
[ ] other (enter in the "Additional environment details" area below)

Additional environment details

browser version: 112.0.1722.58
SPFx version: 1.17.1
Node.js version: v16.19.0

Issue description
I try to change the workbench port to be able to debug multiple solutions at the same time. Ich changed the port in the serve.json to 4322 and the console outputs  "Server started https://localhost:4322".
But the workbench still tries to reach the default 4321 port "Error GET https://localhost:4321/temp/manifests.js"
I also tried older solutions from the web like configuring in the serve.json "api": { "port": 4322, "entryPath": "[...]" }
When I do a gulp clean and afterwards a gulp serve I can see in the temp folder that manifest.js still has a lot of 4321 port in it. What else do I have to change so the correct new port is used?

Anyone able to help here? Or is this a bug as the project is using the wrong port also the config has a different setup?

MS will need to confirm, but I suspect the hosted workbench is hard-wired to port: 4321 as part of the workbench system page.  You can try setting up a regular SharePoint page, where you can use the query string to change the port for the manifest file. e.g., ?debug=true&noredir=true&debugManifestsFile=https://localhost:4322/temp/manifests.js
I haven't tried this, but it's a simple change.  While that may solve your specific question, the larger issue might be trying to debug multiple solutions at the same time. I am not confident that you can put multiple solutions on the same page that are being served through multiple ports. Good luck!


[wagtail] Fix 2.12 link

There are no release notes for 2.12.7 on https://docs.wagtail.org/en/stable/releases/, it seems a tag has been set (https://github.com/wagtail/wagtail/releases/tag/v2.12.7) but the version not published (https://pypi.org/project/wagtail/#history).
Auto-update will prevent us to fix the latest version, but at least we can fix the link.

Expected diff:
diff --git i/releases/wagtail.json w/releases/wagtail.json
index 0b8876a..4b9ab06 100644
--- i/releases/wagtail.json
+++ w/releases/wagtail.json
@@ -1,4 +1,24 @@
 {
+  "0.1": "2014-02-07",
+  "0.2": "2014-03-11",
+  "0.3": "2014-05-28",
+  "0.3.1": "2014-06-03",
+  "0.4": "2014-07-10",
+  "0.4.1": "2014-07-14",
+  "0.5": "2014-08-01",
+  "0.6": "2014-09-11",
+  "0.7": "2014-10-09",
+  "0.8": "2014-11-05",
+  "0.8.1": "2014-11-05",
+  "0.8.10": "2015-09-16",
+  "0.8.2": "2014-11-18",
+  "0.8.3": "2014-11-18",
+  "0.8.4": "2014-12-04",
+  "0.8.5": "2015-02-17",
+  "0.8.6": "2015-03-10",
+  "0.8.7": "2015-04-29",
+  "0.8.8": "2015-06-18",
+  "0.8.9": "2015-09-16",
   "1.0": "2015-07-16",
   "1.1": "2015-09-15",
   "1.10": "2017-05-03",
@@ -9,12 +29,12 @@
   "1.12.1": "2017-08-30",
   "1.12.2": "2017-09-18",
   "1.12.3": "2017-11-17",
-  "1.12.4": "2018-07-04",
+  "1.12.4": "2018-07-05",
   "1.12.5": "2018-08-13",
   "1.12.6": "2018-08-13",
   "1.13": "2017-10-16",
   "1.13.1": "2017-11-17",
-  "1.13.2": "2018-07-04",
+  "1.13.2": "2018-07-05",
   "1.13.3": "2018-08-13",
   "1.13.4": "2018-08-13",
   "1.2": "2015-11-12",
@@ -41,19 +61,19 @@
   "1.8.2": "2017-04-21",
   "1.9": "2017-02-16",
   "1.9.1": "2017-04-21",
-  "2.0": "2018-02-27",
+  "2.0": "2018-02-28",
   "2.0.1": "2018-04-04",
   "2.0.2": "2018-08-13",
   "2.1": "2018-05-22",
-  "2.1.1": "2018-07-04",
+  "2.1.1": "2018-07-05",
   "2.1.2": "2018-08-06",
   "2.1.3": "2018-08-13",
   "2.10": "2020-08-11",
   "2.10.1": "2020-08-26",
   "2.10.2": "2020-09-25",
-  "2.11": "2020-11-02",
+  "2.11": "2020-11-03",
   "2.11.1": "2020-11-06",
-  "2.11.2": "2020-12-04",
+  "2.11.2": "2020-11-17",
   "2.11.3": "2020-12-10",
   "2.11.4": "2021-02-16",
   "2.11.5": "2021-02-18",
@@ -68,7 +88,6 @@
   "2.12.4": "2021-04-19",
   "2.12.5": "2021-06-17",
   "2.12.6": "2021-07-13",
-  "2.12.7": "2021-07-13",
   "2.13": "2021-05-12",
   "2.13.1": "2021-06-01",
   "2.13.2": "2021-06-17",
@@ -146,5 +165,6 @@
   "5.1": "2023-08-01",
   "5.1.1": "2023-08-14",
   "5.1.2": "2023-09-25",
-  "5.1.3": "2023-10-19"
+  "5.1.3": "2023-10-19",
+  "5.2": "2023-11-01"
 }
\ No newline at end of file


Segfaults when inspecting subclass of abstract struct

Hi,
the following (reduced) example segfaults with Invalid memory access.
It works

w/o properties in FooEntry
if a second subclass is defined (here BarEntry) but falsey returns [] for flat_map
see more # works comments below

Reproduction
abstract struct Entry
end

struct FooEntry < Entry
  getter uid : String

  def initialize(@uid)
  end
end

# Does not segfault if defined but returns [] for flat_map??
# struct BarEntry < Entry
# end

class Foo
  getter entries

  def initialize(entry)
    # @entries = Array(FooEntry).new # works!
    @entries = Array(Entry).new
    @entries << entry
  end
end

entry = FooEntry.new("1")
foo = Foo.new entry

p foo # => works
p foo.entries # => works
p [foo].map(&.entries) # => works
[foo].flat_map(&.entries) # => works

p [foo].flat_map(&.entries) # => segfaults or [] if BarEntry defined

Error
#<Foo:0x8acf00 @entries=[FooEntry(@uid="1")]>
[FooEntry(@uid="1")]
[[FooEntry(@uid="1")]]
Invalid memory access (signal 11) at address 0x14
[4514693] *CallStack::print_backtrace:Int32 +117
[4491928] __crystal_sigfault_handler +56
[4837348] sigfault_handler +40
[140189682944144] ???
[4500502] *Pointer(UInt8) +6
[4545718] *String#unsafe_byte_at<Int32>:UInt8 +22
[4618905] *Char::Reader#byte_at<Int32>:UInt32 +9
[4615040] *Char::Reader#decode_current_char:Char +48
[4614990] *Char::Reader#initialize<String, Int32>:Char +30
[4619159] *Char::Reader#initialize<String>:Char +39
[4619035] *Char::Reader::new<String>:Char::Reader +123
[4550771] *String#inspect<String::Builder>:String::Builder +99
[4550650] *String +74
[4550536] *String#pretty_print<PrettyPrint>:(Int32 | Nil) +24
[4693648] *FooEntry#pretty_print<PrettyPrint>:Nil +944
[4705079] *PrettyPrint#list<String, Array(Entry+), String>:Nil +599
[4696991] *Array(Entry+) +223
[4705621] *PrettyPrint::format<Array(Entry+), IO::FileDescriptor, Int32, String, Int32>:IO::FileDescriptor +117
[4705491] *PrettyPrint::format<Array(Entry+), IO::FileDescriptor, Int32>:IO::FileDescriptor +67
[4492464] *p<Array(Entry+)>:Array(Entry+) +32
[4448031] ???
[4491657] main +41
[140189672741701] __libc_start_main +245
[4445017] ???
[0] ???

Crystal versions

0.21.1 - Crystal 0.21.1 [3c6c75e] (2017-03-06) LLVM 3.5.0
master - Crystal ci [3c71228] (2017-04-20) LLVM 3.8.0

What am I doing wrong? :cry:
Kind regards,
Peter
Edit: More details for Crystal versions

it works if you replace struct by class.
(I can explain why a bit later if you want)

@bew Thanks, but I use struct for a reason and changing to class is not an option :disappointed:

Is this issue somewhat related to #2885? :neckbeard:

Using git bisect start 0.20.5 0.20.4 I was able to find the first "bad" commit 19fd176.
After this commit the script in the description starts to segfault.
Are there any Crystal wizards :unicorn: around? I am still lost here :neckbeard:

@bew I have revert my statement above.
Using abstract class instead of abstract struct is totally an option, now :astonished: :grin:
In my case, it is now somehow faster and consumes less memory (and just works) :+1:
Thanks for looking into this!
@asterite Did you see my comment about this "bad" commit above?

@asterite :+1: Thank you for fixing this issue! :green_heart:


Updated user guide 'mine-to-pool' to use a CPU miner compatiable with CN7

Changed sections specific to the deprecated xmr-stak-cpu miner to be for XMRig miner. Also added section advising against mining on laptops and unprofitable hardware & minor troubleshooting advise.

I'm not sure about this.
Latest version of xmr-stak is compatible with CryptoNight Variant 1. Why do we need to fully change this guide to another miner?
I do agree the guide needs a refresh, at least to reflect the new settings and the automatic config which is now in place with xmr-stak, but i don't see a real need to move it to xmrig.
I suggest you add all this as a whole new guide, and we try to update the xmr-stak-cpu to latest xmr-stak in the next few month.
What do you think about it @Ehhoe @mattcode55 @MaxXor @erciccione @SamsungGalaxyPlayer ?


lock.py: json-query was matching any; make it match all

Signed-off-by: Dan Mick<EMAIL_ADDRESS>

Refer to this link for build results (access rights to CI server needed):
http://jenkins.ceph.com//job/teuthology-pull-requests/1509/
Tests passed for this pull request.


Support line merging

If you draw two lines (or duplicate a line and flip it), you may wanna merge them so as to support adding a fill.
One workflow we could use:

select two linear elements → contextMenu → merge lines
it would choose one terminal point (based on proximity) from each line and merge those

Note that we can't combine sharp and round corners in a single line.

Yeah, we'd have to pick the sharpness of one of the lines.


File not Found Error

Hi,
It seems the file path is not correct. Running below code in Watson Studio notebook, gives me error
'HTTPError: HTTP Error 404: Not Found'
accidents = pixiedust.sampleData("https://data.sfgov.org/api/views/vv57-2fgy/rows.csv?accessType=DOWNLOAD")
Kindly share the correct file path.

It looks like the City of SF may have deleted the Traffic Accidents data set. We are looking at an alternative....

yeah, looks like they took that data set down, or at least moved it / renamed it. I'm looking to see if I can find it again or if another site has a back up. this is frustrating

Assuming I'm looking at the right data set, it looks like the folks at dataSF have an update on this: https://data.sfgov.org/Public-Safety/-Change-Notice-Police-Department-Incidents/tmnf-yvry

[Change Notice 03/13/2018]: By the end of this month, this dataset will become historical and a new one will be created starting with incident data in 2018. This one will remain here, but no longer be updated. The new one will have data coming from a new system, will not have a 2 week lag, and have updated districts among other quality improvements. We will attach a guide here with more detailed change updates as soon as we have them.

That one is police reports. The original was traffic accidents.
On Wed, Mar 28, 2018 at 8:10 PM, Steve Martinelli<EMAIL_ADDRESS>wrote:

Assuming I'm looking at the right data set, it looks like the folks at
dataSF have an update on this: https://data.sfgov.org/Public-
Safety/-Change-Notice-Police-Department-Incidents/tmnf-yvry
[Change Notice 03/13/2018]: By the end of this month, this dataset will
become historical and a new one will be created starting with incident data
in 2018. This one will remain here, but no longer be updated. The new one
will have data coming from a new system, will not have a 2 week lag, and
have updated districts among other quality improvements. We will attach a
guide here with more detailed change updates as soon as we have them.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/IBM/pixiedust-traffic-analysis/issues/39#issuecomment-377097664,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AN-P_Ob9_XnfxnmjPN3kfhn64zQcNnLsks5tjEKpgaJpZM4S-eV5
.

@scottdangelo crud, you are right. I emailed the folks at DataSF, I'll post an update here when I hear from them.

@RoshniBRose  We're going to replace the existing "SF Traffic" dataset with the following "SF Police Incident" data set:
https://data.sfgov.org/api/views/956q-2t7k/rows.csv?accessType=DOWNLOAD
I'll be changing the documentation and probably creating a new repository for this. Details to follow, but you can play with that dataset immediately since the columns are the same.

Ok thanks. Let me try

@RoshniBRose Please take note that we've updated the notebook using the new dataset, including new documentation to match it. Thanks for filing the original issue.


Treat a timed out active ack as failed activation in invokerhealth protocol

The Loadbalancer has a buffer of, if the last activations of an invoker has been successful.
This PR treats an activation as unsuccessful, if the active ack times out.
This will take the invoker unhealthy, if it does not respond with active acks anymore.
PG4#714 is running

@rabbah I do believe though that this should result in a 429 or rather: This is a better indicator than the arbitrary system limit we set today, isn't it?

Pathologically can you end up where all invokers appear unhealthy (which result in 500 level errors instead of system overload)?

The pings should carry a count indicating forward progress. I think treating timed out active acks as a sign of an unhealthy invoker like this done here is problematic - I'll explain why when I get a chance.

PG3#1116 is 🔵


Notifications with fireDate after next day do not trigger

When using addNotificationRequest, if the fireDate is not within the current day, the notification never triggers.
const [reminderTime, setReminderTime] = useState<Date>(new Date())

const request: NotificationRequest = {
  id: "id",
  title: "Friendly reminder:",
  body: "body",
  fireDate: reminderTime,
  repeats: true,
}
Notifications.scheduleNativeNotification(request)

const scheduleNativeNotification = async (
  request: NotificationRequest,
): Promise<void> => {
  const pushNotificationPermissions = await PushNotificationIOS.requestPermissions()
  if (pushNotificationPermissions.authorizationStatus === 2) {
    PushNotificationIOS.addNotificationRequest(request)
  }
}

@johnschoeman

Any ideas on this? Additionally, if the fireDate is for the same day, the notification triggers once but does not repeat even if repeats is set to true.

same issue :/

try using PushNotificationIOS.scheduleLocalNotification until its resolved

I wrote my own native module to get around this @solo29. You can find it here: https://github.com/johnschoeman/building-habits-rn/tree/master/src/notifications.

I wrote my own native module to get around this @solo29. You can find it here: https://github.com/johnschoeman/building-habits-rn/tree/master/src/notifications.

facing a similar issue where the notification is only triggered when addNotificationRequest is called without fireDate field in it.
any Date mentioned the notification is not triggered.

So I have just encountered this same issue. The other issue is that the notification never repeats on susbsequent days either.
I am pretty sure I have found the cause. In RCTConvert+Notification.m there is logic that transforms the JSON config into Objective-C types.
https://github.com/react-native-push-notification-ios/push-notification-ios/blob/9fa4ff7763c099ce04bd76f3cd2d7fdbd5e8ea13/ios/RCTConvert%2BNotification.m#L120-L125
To create the trigger for the notification it uses UNCalendarNotificationTrigger class. If you read the documentation for this it's clear that the conversion used won't work. It sets the notification to run on a specific year + month + day + hour + minute + second. As such it will never run again. To make this run daily, the year, month, and day values need to be removed from the calendar definition. This is simmilar to cron logic in a way, except with this class you need to ommit a metric to make it a wild card. For instance if you wanted a notification to be sent at 8:30am on the 2nd of each month you would specify day = 2, hour = 8, minute = 30, and second = 0, but not the month or year.
I'm going to have a go at fixing this.

any update？


Allow [replace] overrides to track versions of a replacement

This issue title is subideal, so I'll give an example.
Crate foo is 1.0.0. They don't really want to add a 5k loc build script to support people using a specific 15 year old version of solaris. Acme corp use this version of solaris and would really like to use crate foo. They would like to create a fork of foo and use it in their projects, and they'll handle tracking foo upstream and bumping acmefoo. The replacement line might look something like "foo" = { track = "acmefoo" } - any version of foo in the dependency tree will be swapped out for acmefoo.
Ecosystem divergence is prevented by making sure the upstream crate is always the source of truth of version numbers

if foo doesn't have a version X, there is no way for the acmefoo crate to be used via replace - version numbers are taken from crates.io for foo
as soon as a foo version X is released, acmefoo must also release X or risk build failures when cargo attempts to get acmefoo version X

Unresolved question: what happens if acmefoo ends up with a bug in their crate? How do they release a fix? Maybe this should remain an unresolved question to try and encourage these tracked replacements to be very thin.
This is not the same as https://github.com/rust-lang/cargo/issues/2649

cc @wycats, an interesting use case that doesn't quite match what [replace] does today.
@aidanhs how come though [replace] couldn't be used perhaps pointing to a git repo with tags for all the versions of the replaced crate that have been published? Is it just too onerous to update that version in Cargo.toml when you want to update?

It's both onerous and prone to human error - someone adds another crate depending on a different version of foo? Hope you remembered to add a replace line! cargo update? Better check the Cargo.lock to update all the replace lines! When you're used to Cargo magically getting things right, this isn't a great experience. Note that maintaining a tracked crate like acmefoo is also a lot of work, but the effort isn't duplicated across all consuming crates.
Just to add a concrete example of where this would be useful, see https://github.com/sfackler/rust-openssl/issues/434. Not wanting to be on the hook for rushing out openssl releases is perfectly reasonable, but I'm willing to tolerate being a bit behind in my own projects. In general there are plenty of cases where an idea doesn't align with the intentions of the upstream crate but it's easy to maintain a fork.
Thinking about the unresolved question (bugfixes to tracked crates), I wonder if we could abuse prerelease notation - a track line would make Cargo look for the most recent prerelease for individual versions. E.g. say the dep tree has foo = "1.2.3" somewhere, if foo was made to 'track' acmefoo then Cargo would find all acmefoo prerelease versions, i.e. 1.2.3-*, order them according to semver and lock to the most recent one. This conceptually makes some sense - one can never be certain that you've achieved the desired feature parity, so it doesn't really make sense to have a release.

I have some thoughts on improvements to make that more useful which I'll think about, but it can't help if you don't have the library built (so you want to build it from scratch within a build script, like libz and libssh2, or distribute the openssl .a files).

Right yes the purpose is to override with precompiled artifacts, not part of the normal build  process (hence the .cargo/config location)

I believe this has been "effectively added" in the sense that we've since added [patch] and are unlikely to change [replace], so closing.


Generate release note

This PR is to generate a release note.
It reads a template, append change logs and create a *.md file in the folder of $WORK_DIR.
Try it out by:
./tools/generate_change_logs.sh <WORK_DIR>

@houshengbo rm -rf .git will remove all the git information and git log will report error. I do need to keep .git folder and remove it just before packaging.

Cool, I see the point of moving the command "rm -rf .git".


Add TimetableItemDetailScreenTest for displaying more button

Issue

close #539

Overview (Required)

add test for displaying more button when the description is lengthy
udpate FakeSession, make it longer down the description

Thank you for your pull request. Could you please resolve the conflict with the main branch?

@takahirom
Thanks for your confirming!
I've just corrected it, and  kindly ask for your confirmation🙏

@takahirom
I've just corrected pointed items, I kindly ask for your confirmation🙏


"failed to send" & "No sockets available" exceptions with transfer-encoding:chunked using 20200918 Requests

This does seem to be a distinct issue. The typical simpletest URLs all have a content-length header, but with a URL using {'transfer-encoding': 'chunked'} header in the legacy API, Requests will get Failed to send {num} bytes (sent 0) every other time (alternating), and on the 21st loop will get No sockets available thereafter.
CONFIG_LWIP_MAX_SOCKETS=10 in https://github.com/adafruit/nina-fw/blob/master/sdkconfig), and sockets become available again with esp.reset(), so those clues point to the socket not getting closed.
The odd loops work fine and return quickly. The even loops seem to use the full timeout before returning with the Failed to send... exception. I haven't found why the code does this alternating pattern, seems to indicate something not being (de)init, and may just be the socket not getting closed on alternate iterations because {mystery} reasons.
Tested on:
Adafruit Feather M4 Express with samd51j19
CircuitPython 5.3.1 on 2020-07-13 and 6.0.0-alpha.3 on 2020-08-28
CircuitPython Library Bundle 6.x-mpy-20200918 and https://github.com/adafruit/Adafruit_CircuitPython_Requests/pull/33
Test code snippet:
loop = 1
while True:
    print("Fetching text...")  # from %s" % CHUNKED_URL)
    try:
        print(loop, end=" ")
        response = requests.get(CHUNKED_URL, timeout=5)
        # print(response.content)
        print(response.status_code, end=" ")
        print(response.reason, end=" ")
        print(response.headers)

        print(response.text)
        response.close()
    except (AttributeError) as e:
        print("AttributeError:", e)
    except (RuntimeError) as e:
        print("RuntimeError:", e)
        if "No sockets available" in repr(e):
            continue
            # esp.reset()
            # esp.connect_AP(secrets["ssid"], secrets["password"])
    time.sleep(1)
    print()
    loop += 1

Also, if response.text is not accessed, the second loop will result in:
Fetching text...
2 Traceback (most recent call last):
  File "code.py", line 108, in <module>
  File "code.py", line 98, in <module>
  File "/lib/adafruit_requests.py", line 605, in get
  File "/lib/adafruit_requests.py", line 475, in request
  File "/lib/adafruit_requests.py", line 252, in close
TypeError: unsupported types for __gt__: 'NoneType', 'int'

Seems _remaining doesn't get set after its initialization to None in that execution path.

@anecdata could you post the full example minus your wifi credentials? I'm not sure what your chunked url example is.

I had to make my own since it's hard to find one with a search engine. This one will return chunked to HTTP/1.1 request:
https://anecdata.dev/ada/chunked/

Adafruit PyPortal with samd51j20
6.0.0-beta.0 on 2020-09-21
adafruit-circuitpython-bundle-6.x-mpy-20200925  # latest released Requests
There's another chunked behavior that I didn't see until running for a longer time:
Traceback (most recent call last):
  File "code.py", line 60, in <module>
  File "adafruit_requests.py", line 632, in get
  File "adafruit_requests.py", line 532, in request
  File "adafruit_requests.py", line 257, in close
ValueError: invalid syntax for integer with base 16

It does this even with code that resets the ESP32 and re-connects to the AP prior to every request. After some iterations, invalid syntax for integer with base 16 occurs, then occurs on every request thereafter. It may be correlated to happening after a RuntimeError: Timed out waiting for SPI char occurs, but due to the reset and re-connect, it seems to be a Requests state that affects chunk_header.
Full code:
import board
import busio
from digitalio import DigitalInOut
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
from adafruit_esp32spi import adafruit_esp32spi
import adafruit_requests as requests
import time
import os
import sys

from secrets import secrets

def connect():
    print(time.monotonic(), "Connecting to AP...", end=" ")
    while not esp.is_connected:
        try:
            esp.connect_AP(secrets["ssid"], secrets["password"])
        except RuntimeError as e:
            print("could not connect to AP, retrying: ", e)
            continue
    print("Connected")  #  to", str(esp.ssid, "utf-8"), "\tRSSI:", esp.rssi)

esp32_cs = DigitalInOut(board.ESP_CS)
esp32_ready = DigitalInOut(board.ESP_BUSY)
esp32_reset = DigitalInOut(board.ESP_RESET)

spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)

# print test environment
print(os.uname().machine)
print(os.uname().version)
for _ in os.listdir():
    if "-bundle-" in _:
        print(_)

# legacy api
requests.set_socket(socket, esp)

# or choose your own chunked adventure...
CHUNKED_URL = "https://anecdata.dev/ada/chunked/"

loop = 1
while True:
    print(loop)
    print(time.monotonic(), "Fetching text...")
    try:
        # reset the ESP32
        esp.reset()
        time.sleep(1)

        # re-connect to AP
        connect()
        time.sleep(1)

        # even iterations will get:
        # RuntimeError: Failed to send 3 bytes (sent 0)
        # odd iterations will work, until TypeError
        response = requests.get(CHUNKED_URL, timeout=10)
        # print(response.content)
        print(time.monotonic(), response.status_code, response.reason)
        print(time.monotonic(), response.headers)

        # if response.text is not read, error occurs:
        # TypeError: unsupported types for __gt__: 'NoneType', 'int'
        _ = response.text
        # response.close()
    except (RuntimeError, AttributeError, ValueError) as e:
        sys.print_exception(e)
    time.sleep(15)
    loop += 1

@anecdata can you modify requests to print out the string it's trying to parse? That may give us a clue.

bytearray(b'')
I think it may be the RuntimeError: Timed out waiting for SPI char that kicks off this behavior... can't close the _last_response since it wasn't successful? Not clear how it then sticks in this mode.

@anecdata sounds like it's just not handling the socket being closed when trying to close it. :-)

Adafruit PyPortal with samd51j20
6.0.0-rc.0 on 2020-10-16
adafruit-circuitpython-bundle-6.x-mpy-20201029, but with newer ESP32SPI 3.5.2 and newer Requests 1.7.3

Not sure if this is expected or not, but still seeing RuntimeError: Failed to send 3 bytes (sent 0) on alternating request iterations with {'transfer-encoding': 'chunked'} header.
However, all request iterations do return immediately rather than after the timeout expires.

the initial bug is fixed, can you try the latest version we have released?

Still seeing RuntimeError: Failed to send 3 bytes (sent 0) on alternating request iterations with {'transfer-encoding': 'chunked'} header:
'''
Adafruit PyPortal with samd51j20
6.0.0-rc.0 on 2020-10-16
adafruit-circuitpython-bundle-6.x-mpy-20201030 (includes ESP32SPI 3.5.2)
Requests 1.7.4 instead of Requests 1.7.3 from the bundle)
'''

Seeing same as @anecdata using code from the Matrix Scroller, https://learn.adafruit.com/matrix-portal-new-guide-scroller/code-the-matrix-portal
URL it's trying to obtain: https://learn.adafruit.com/api/guides/new.json?count=5
obtaining time from adafruit.io server...
Getting time for timezone America/New_York
Socket missing recv_into. Using more memory to be compatible
New Hour, fetching new data...
Retrieving data...Traceback (most recent call last):
  File "code.py", line 99, in <module>
  File "/lib/adafruit_matrixportal/network.py", line 393, in fetch
  File "adafruit_requests.py", line 636, in get
  File "adafruit_requests.py", line 540, in request
  File "adafruit_requests.py", line 537, in request
  File "adafruit_requests.py", line 458, in _send_request
  File "adafruit_requests.py", line 449, in _send
  File "adafruit_esp32spi/adafruit_esp32spi_socket.py", line 82, in send
  File "adafruit_esp32spi/adafruit_esp32spi.py", line 710, in socket_write
RuntimeError: Failed to send 3 bytes (sent 0)

Thanks for testing. Yeah, there were multiple problems and we're still fixing. I'm working on the above mentioned issue next, which is what #41 is about.

I don't get any errors with @brentru's URL, but then I'm not doing any JSON processing. Maybe the difference yields a clue.
My current full test code (modified simpletest.py):
# adafruit_requests usage with an esp32spi_socket
import sys
import gc
import board
import busio
from digitalio import DigitalInOut
import time
import adafruit_esp32spi.adafruit_esp32spi_socket as socket
from adafruit_esp32spi import adafruit_esp32spi
import adafruit_requests as requests

def connect():
    print("Connecting to AP...", end=" ")
    while not esp.is_connected:
        try:
            esp.connect_AP(secrets["ssid"], secrets["password"])
        except RuntimeError as e:
            print("could not connect to AP, retrying: ", e)
            continue
    print(str(esp.ssid, "utf-8"), esp.rssi)

# Add a secrets.py to your filesystem that has a dictionary called secrets with "ssid" and
# "password" keys with your WiFi credentials. DO NOT share that file or commit it into Git or other
# source control.
# pylint: disable=no-name-in-module,wrong-import-order
try:
    from secrets import secrets
except ImportError:
    print("WiFi secrets are kept in secrets.py, please add them there!")
    raise

# If you are using a board with pre-defined ESP32 Pins:
esp32_cs = DigitalInOut(board.ESP_CS)
esp32_ready = DigitalInOut(board.ESP_BUSY)
esp32_reset = DigitalInOut(board.ESP_RESET)

# If you have an externally connected ESP32:
# esp32_cs = DigitalInOut(board.D9)
# esp32_ready = DigitalInOut(board.D10)
# esp32_reset = DigitalInOut(board.D5)

spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset)

connect()

# Initialize a requests object with a socket and esp32spi interface
# socket.set_interface(esp)
# requests.set_socket(socket)
#
# Requests (legacy API)
requests.set_socket(socket, esp)

# Choose your own chunked adventure...
CHUNKED_URL = "https://anecdata.dev/ada/chunked/"
# CHUNKED_URL = "https://learn.adafruit.com/api/guides/new.json?count=5"

loop = 1
while True:
    print(loop, "Fetching text...")
    try:
        response = requests.get(CHUNKED_URL, timeout=15)
        print(response.status_code, end=" ")
        print(response.reason, end=" ")
        print(response.headers)
        print(response.text)
        response.close()
    except (RuntimeError) as e:
        # RuntimeError: Failed to send 3 bytes (sent 0)
        sys.print_exception(e)
        try:
            response.close()
        except (ValueError, NameError, AttributeError) as e:
            sys.print_exception(e)
            print("Reset ESP...", esp.reset())
            connect()

    time.sleep(1)
    print()
    loop += 1

@anecdata Can you print out the headers of the request that succeeds? I suspect it includes a "Connection: close" header.

{'Transfer-Encoding': 'chunked', 'Date': 'Fri, 30 Oct 2020 18:41:36 GMT', 'Server': 'Apache', 'Connection': 'Upgrade', 'Vary': 'Accept-Encoding,User-Agent', 'Upgrade': 'h2', 'Content-Type': 'text/html; charset=UTF-8'}

Terminating chunk should be zero-length? There are no headers indicating trailers.

@anecdata Ya, that looks correct to me. You do want it drained so it isn't read with the next request.

I'm seeing well-behaved chunked response handling using:
Adafruit PyPortal with samd51j20
6.0.0-rc.1 on 2020-11-03
adafruit-circuitpython-bundle-6.x-mpy-20201107 (with ESP32SPI 3.5.3 + Requests 1.7.5)

Will continue to test, probably close soon.

Well-behaved chunked response handling on rc.2 with 20201111 libraries. Closing.


Scene/GameObject destruction and Scene Children properties are confusing

I recently had to create a BaseScene, thereby on scene shutdown, it did certain cleanup acts on my custom gameobjects. This was required because the lifecycle of both a scene and a gameobject are not clear, and the scene.children property is not intuitive.
For simplicity sake, let's say I have a custom gameobject (in Typescript) like so :
class MyGameObject extends Phaser.GameObjects.GameObject
{
    mySubscriptions : any[];
}

Whereby mySubscriptions is an array of active listening subscriptions. For example an internal message bus (Which is my actual use case), or in general just things you wish to destroy when the gameobject is destroyed.
The first issue is that...
GameObject's destroy method only gets called if it renders
That is, if I did the following :
class MyGameObject extends  Phaser.GameObjects.GameObject
{
    mySubscriptions : any[];

    destroy(fromScene? : boolean) : void {
        //do something here
        super.destroy(fromScene);
    }
}

The Destroy method will never be called. I'll talk about more why this is later, but it is actually very confusing and IMO, not all that clear.
I will also note that the event for destroy also never gets raised. So this also does not work :
class MyGameObject extends Phaser.GameObjects.GameObject
{
    mySubscriptions : any[];

    constructor() {
        this.on('destroy', () => {
            //Never gets called
        });
     }
}

I tried to find a way around this by instead listening for the destroy method *in the scene and then doing something there. To my surprise, in my scene, children was always empty. For example :
class MyScene extends Phaser.Scene {
  create() {
    this.events.once(Phaser.Scenes.Events.SHUTDOWN, () => {
      this.children //<- ALWAYS EMPTY
    })
  }
}

I came to find that this.children are always empty by the time the scene shuts down. The reason is that before the shutdown event is called, all "children" are wiped out. Which is incredibly frustrating.
So I found a way around this by hooking into the update of the scene and keeping a clone of the children before the shutdown was called. However, to my surprise scene.children didn't have the full list. When I checked the code as to why...
https://github.com/photonstorm/phaser/blob/59fbcc5ca3f45388b833b07f94aefbc25cd1e24e/src/gameobjects/GameObjectFactory.js#L131-L146
When you call AddExisting on a Scene to add a GameObject. If the item does not render it does not get added as a "child". Additionally, if it has a "preUpdate" method, it gets added to a different list. If it does neither of these things, the scene doesn't hold onto the reference at all.
Confusingly, this method accepts a GameObjects.Group of all things which does not render and does not update, so... It accepts it to do nothing with it. Although I understand that accepting it atleast opens up more generic code to accept a gameobject or a group.
This displaylist is essentially what scene.children exposes, the updatelist is not exposed anywhere by default from the scene.
Additionally, Phaser.Scene is not an exported type in the typescript definitions, so this is impossible to patch/extend (Although I could be wrong there.).
In the end, I had to have a solution such as :
export class BaseScene extends Phaser.Scene {
  fullChildren: any[] = [];

  addCustomGameObject(gameObject : Phaser.GameObjects.GameObject) {
    this.fullChildren.push(gameObject);
    this.add.existing(gameObject);
  }
}

Here's what I think needs to happen :

The rationale behind gameobjects not being added to the displayList if they don't render is that it's faster for game loops/cleanup. However these are two different things. I think it makes sense when the project eventually makes it's way to typescript that a gameobject should extend an IDestroyable interface that exposes a destroy method. If an IDestroyable gameobject is added to a scene, it is added to a seperate list to be called when the scene itself is destroyed.

Irrespective of which lists are used for what, a complete list of all gameobjects added to the scene should be kept and made available during all lifecycle events of a scene, including the destroy event of a scene. This allows any custom code to be run across all gameobjects on a scene at any point.

The types of Scene (And frankly a million other types) should be exportable and able to be overridden so the "add" method is easily able to be extended (And then call the super add), to handle additional things such as this.

Game objects on the scene display list or update list are destroyed automatically when the scene is stopped. Any other game objects are not. This is on purpose.
I think the usual way to do what you want is
class MyGameObject extends Phaser.GameObjects.GameObject {
  constructor() {
    // …
    this.scene.events.once("shutdown", () => {
      this.destroy();
    });
  }
}

Alternatives are:

Add the game object to a group
If the game object has a preUpdate() method, add it directly to the update list

The lists are available at this.sys.displayList and this.sys.updateList. I agree that this.children is an ambiguous name but the docs do describe it correctly.
Groups are on the update list because they have a preUpdate() method, which they use to update children when runChildUpdate is on.


An incorrect theme resources applied in case of theme switching

An incorrect theme resources applied in case of theme switching
An application has some dependency properties of the SolidColorBrush type. On each property change, we reload all brushes to the cache. But some properties have old value after setting.
Steps to reproduce the bug

Run the sample ThemeBug.zip.
Click the "Change Theme" button - all colors are loaded correctly.
Click the "Change Theme" button again - only third color is loaded correctly, other three have the previous value.

Expected behavior
All properties must have the correct value.
Screenshots
Correct values after first theme switching:

Incorrect values after second theme switching:

Version Info
NuGet package version:  [Microsoft.WinUI 3.0.0-preview4.210210.4]
Windows app type:

UWP
Win32

Yes

Windows 10 version
Saw the problem?

Insider Build (xxxxx)

October 2020 Update (19042)

May 2020 Update (19041)

November 2019 Update (18363)
Yes

May 2019 Update (18362)
Yes

October 2018 Update (17763)

April 2018 Update (17134)

Fall Creators Update (16299)

Creators Update (15063)

Device form factor
Saw the problem?

Desktop
Yes

Xbox

Surface Hub

IoT

After migrating the project on the Project Reunion pre-0.5 sdk, the bug is still reproducible.


Removed bonddoc module.

Why the diddoc is removed? what does it affect if that whole module is removed?


Is it possible to use this plugin together with eCurring?

Question, a customer now uses this plugin with mollie and it works fine.
They want to use eCurring instead for recurring payments.
Is it possible to use this plugin together with eCurring?

eCurring is an entirely different product and API, so there's not likely to be any collisions between Cashier and your Ecurring integration. For administration it may make sense to create a separate Mollie profile within the account.

Thank you for the reply.
I see mollie also offers recurring payments now. Can Cashier be used to for this?


Minor changes to ZEP0000 and add a new page for ZIC

Hi all. This PR contains the following:

Consolidate the discussion avenues for ZEPs in ZEP0000

Previously, there were several avenues to discuss ZEPs like Gitter and GitHub discussions and issues which might confuse the author and the community. This may also lead to fragmented discussions, while the idea of ZEP is to have all of the discussions in a single place. After this PR, all of the discussions related to current ZEPs will take place via creating issues in zeps repo or zarr-specs repo.

Add a page for ZIC (can be viewed at https://zarr.dev/zeps/zic/ after merging this PR)

Borrowed from: https://github.com/zarr-developers/governance/blob/main/GOVERNANCE.md#zarr-implementation-council-zic

and minor formatting changes in ZEP0000

CC: @zarr-developers/steering-council @zarr-developers/implementation-council

Please let me know if there are any objections to this. You can vote with 👍🏻 and 👎🏻.
CC: @joshmoore @rabernat @jbms @jstriebel @WardF (from today's ZEP meeting)

Thanks, @joshmoore and everyone for 👍🏻 and review. I've made the final changes and I think we're ready to merge this.
Let me know what you think.

Alright, going ahead with this now.
We can revert if there are any major concerns. Thanks!


Edit breadcrumb of child event frame attributes is broken

Specifically for the event frame hierarchy.

Also an issue with add.


Fixed link 'How To Contribute'

The link to the Confluence page was broken.

Merged. Thanks @binarycoded! If you'd like me to assign the JIRA I created for this to you and add you as a contributor there, just let me know what your Apache JIRA account is.


[TEST] Test with spinning disk

This is duplicated of https://github.com/longhorn/longhorn/issues/4182. Let's track there instead.


Block definition json

small fix for giving blockDefinition objects real/usable JSON definitions attached to them

This change is

One minor fix, then LGTM

Review status: 0 of 3 files reviewed at latest revision, 1 unresolved discussion.

src/model/block_definition.js, line 50 at r1 (raw file):

     * @type {!Object}
     */
    this.json = opt_json || Object.create(null);

This should have at least the type and message0 attributes defined. message0 can be an empty string.

Comments from Reviewable

Review status: 0 of 3 files reviewed at latest revision, 1 unresolved discussion.

src/model/block_definition.js, line 50 at r1 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
This should have at least the type and message0 attributes defined. message0 can be an empty string.

Docs: https://developers.google.com/blockly/guides/create-custom-blocks/define-blocks

Comments from Reviewable

Review status: 0 of 3 files reviewed at latest revision, 1 unresolved discussion.

src/model/block_definition.js, line 50 at r1 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
Docs: https://developers.google.com/blockly/guides/create-custom-blocks/define-blocks

Done.

Comments from Reviewable

Review status: 0 of 3 files reviewed at latest revision, 2 unresolved discussions.

Comments from Reviewable

Review status: 0 of 3 files reviewed at latest revision, 2 unresolved discussions.

src/model/block_definition.js, line 104 at r2 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
Probably want to name this getBlockDefinitionJson()

Done.

Comments from Reviewable


Search bar Added

#189   Problem Solved
Hello Project Admin @khushi-joshi-05 as I raised issued that there is no any Search Bar in the entire website I have added the Search Bar just after order button  and also adjust the styling of Order Button
Screenshot

Please kindly review it and merge my PR as it was my first ever contribution in Open source community

@pankajgawade can u shift it towards top-right side.


Serialize improvements

serializing enums, including workaround for https://github.com/PyO3/pyo3/issues/2905
no fallback warning if the input is None
no format if the input is None

Codecov Report

Merging #370 (3eec24d) into main (3844ea9) will increase coverage by 0.25%.
The diff coverage is 94.82%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #370      +/-   ##
==========================================
+ Coverage   95.07%   95.33%   +0.25%
==========================================
  Files          90       90
  Lines       10036    10074      +38
  Branches        4        4
==========================================
+ Hits         9542     9604      +62
+ Misses        494      469      -25
- Partials        0        1       +1

Impacted Files
Coverage Δ

src/serializers/ob_type.rs
86.95% <90.90%> (+0.28%)
:arrow_up:

src/serializers/type_serializers/simple.rs
96.15% <92.85%> (+4.84%)
:arrow_up:

src/serializers/type_serializers/format.rs
97.01% <93.33%> (-1.35%)
:arrow_down:

src/serializers/extra.rs
95.00% <100.00%> (+0.19%)
:arrow_up:

src/serializers/infer.rs
95.76% <100.00%> (+0.91%)
:arrow_up:

pydantic_core/core_schema.py
99.62% <0.00%> (-0.38%)
:arrow_down:

src/serializers/type_serializers/set_frozenset.rs
93.93% <0.00%> (+1.51%)
:arrow_up:

src/serializers/type_serializers/datetime_etc.rs
98.38% <0.00%> (+3.22%)
:arrow_up:

src/serializers/type_serializers/string.rs
97.95% <0.00%> (+4.08%)
:arrow_up:

src/serializers/type_serializers/timedelta.rs
97.87% <0.00%> (+4.25%)
:arrow_up:

... and 4 more

Continue to review full report at Codecov.

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


Add summary of errors to compiler output

Hello! I'm a big fan of TypeScript and I found an issue, #14211, that I thought I could help out with. Other compilers I've worked with, in Swift/ObjC and Scala, usually output a compilation summary to go along with the errors; this PR adds that summary to the TypeScript compiler output:

I looked into adding duration of the compiler run to the output, as suggested in the issue, but it doesn't look like the duration is collected without diagnostics enabled.
Some concerns were brought up in that issue around changing the compiler output, but it was confirmed that popular tools that read the logs do so using Regex, so adding something like this shouldn't break anything. I should note that this will print the summaries whether or not in pretty mode, which I think is pretty standard among compilers. Happy to discuss, though.
Beyond the baseline snapshots, I looked for unit tests specific to the code I changed but couldn't find any. Let me know if I missed something.
Very open to feedback – thanks again for all your hard work on TypeScript!
Fixes #14211.

I'm hoping this PR doesn't get stalled, and so I don't mean to be annoying but I'm curious what it would take to get this approved? I know this feature might seem controversial at first glance, but it would make a big difference for day-to-day developer experiences and as discussed in #14211, it's an additive change that shouldn't impact other existing projects.

Ping @DanielRosenwasser to suggest expected behavior (do we report summary like watch) only in pretty mode or irrespectively?

I like the idea of providing this in --pretty mode (which is now the default anyway). I think @Tyriar could probably weigh in on whether this could cause any problems with problem matching.

@dbaeumer @alexr00 for the question in https://github.com/Microsoft/TypeScript/pull/28196#issuecomment-434524429 about impact on problem matchers/tasks.

Closing it in favor of #28300

@sheetalkamat Okay, thanks for continuing this! I'm excited that this is getting added to TypeScript, and I learned a lot going through the code review process. Thank you (and others) for the feedback 🙇


Catalog as CLI tool/Node module

What about turning Catalog into a CLI tool and/or Node module.
That would have several benefits:

Potential integration of a development server with hot module replacement
No need for index.html
Routes and navigation menu could be auto-generated through directory tree
Wrapping Markdown files into React components could be done by simply concatenating, solving the problem we'd have with #21.
Build to static site = better performance
Catalog on the server = potential integration of an editor

I like all the benefits this idea will provide a lot, under one condition: Catalog core needs to stay an independent stand-alone JS app that is only concerned with loading Markdown files. This design goal has proven very, very useful again and again, because it allowed us to use different backends (no backend whatsoever, Rails, Middleman, Node, …). In my view, not being tied to a specific backend technology is Catalog's greatest strenght, because it allows its use in all kinds of projects, from very small hand-coded index.html projects to huge projects with partials in the backend.
Regarding #21: if we can only get this to work through such a build step, I'd rather not have it, because some syntax will only work with this tool but not Catalog core.
But yes, having better tooling would be much appreciated (as long as it's optional (had to say that again :) ))

In progress at #50

The node module part is done. I'll keep the issue open for the CLI but it's not that much of a priority and not that straightforward depending on the documented project's setup.

Closing as there is no immediate need. For the case where we integrate Catalog into a React app, whatever build process is in place there should handle this.


FE-452: fix query UI height when enterprise expiry message is visible

Scope & Purpose

[x] :hankey: Bugfix

Checklist

[x] Tests

[x] Manually tested

[x] :book: CHANGELOG entry made

Related Information

[ ] GitHub issue / Jira ticket: https://arangodb.atlassian.net/browse/FE-452

Still doesn't work for me with this change:
oops.webm

Still doesn't work for me with this change: oops.webm

You are right, I made a mistake in which line the change was required on. Fixed here: 490cc63 (#21038)
Uploading Screen Recording 2024-06-12 at 1.30.46 PM.mov…

Works fine for me now.


[Feature]: Template and Entity card support for icon tap action

Is your feature request related to a problem?
No
Describe the solution you'd like
In 2022.11 Home assistant introduces tile card, it would be very nice to have same functionality of icon tap action.
Describe alternatives you've considered
Use tile card instead
Additional context
No response

+1

+1. I really liked this idea from the new tile card, but didn't like that it is much less configurable than the entity and template cards from this project. I would love to be able to have the option to tap a template card's icon to toggle the entity, and tap the rest of the card to bring up More Info.

Great idea !
Also atwork backgorund for media card and perfect :DDD

It would be a great addition!
I like the cards to be displayed horizontally and from time to time I accidentally turn on lights, scenes or scripts. (I don't like to double tap the card to toggle it)

I very much agree. Tap_icon_action should be anabled for all cards with icons.
The new tile cards cannot show secondary template info, so not a real alternative.

Please consider adding tap_icon_action. This would provide a much better interface for mushroom based room cards than the current hold action.

@piitaya What are your thoughts on this? For me it would be a big deal and I'm sure that many Mushroom users would use it, since it is much simpler than "hold" or "double press". I find the hold action is a bit hit and miss and double press adds a small but noticeable delay.

Yes great idea ! tile card from HA provide this function but no template possible

I have still not found a good alternative to this. @piitaya, is it being considered?
Would happily make an in advance donation to support the development of this feature (without being able to pay the hourly rate you deserve).

I would like to request this feature as well. The tile card does not let me do certain things like collapse the controls when off that mushroom allows, but having the tap icon action is essential

Agreed, it would be very useful on the light (or cover) card:

taping the icon will toggle on/off (or open/closed);
taping the card will open the "More" popup with the ability to use the slider, change color, etc.


Add driver and example for Samsung vfd16lf01 display.

I'll close it for now. If the situation with licensing changes feel free to reopen this or open a new one.


feat(acme): letsencrypt acme provider

Reason for This PR
closes: #21
Description of Changes
Let's encrypt support
Configuration:
{
  "rpc": {
    "listen": "tcp://<IP_ADDRESS>:6001"
  },
  "server": {
    "command": "php ../roadrunner/tests/psr-worker-bench.php",
    "relay": "pipes",
    "relay_timeout": "20s"
  },
  "http": {
    "address": "<IP_ADDRESS>:15389",
    "max_request_size": 256,
    "middleware": [],
    "ssl": {
      "address": ":443",
      "acme": {
        "certs_dir": "le_certs",
        "email"<EMAIL_ADDRESS>        "private_key_name": "test.key",
        "certificate_name": "test.crt",
        "challenge_type": "tlsalpn-01",
        "challenge_port": "443",
        "use_production_endpoint": false,
        "domains": [
          "you_domain_here.me"
        ],
        "obtain_certificates": true
      }
    },
    "pool": {
      "num_workers": 10,
      "allocate_timeout": "60s",
      "destroy_timeout": "60s"
    }
  },
  "logs": {
    "mode": "development",
    "level": "debug"
  }
}

New configuration section: acme in the ssl.
Fields legend:
cache_dir: directory where to store (or where pk and cert already stored) pk and cert obtained from the LE. By default, RR creates rr_cache_dir in the working directory.
email: your email. Mandatory field, needed for your certificate request account.
private_key_name and certificate_name: names for your PK and crt w/o directory. They will be stored in the cache_dir. By default key and crt will have the following names: private.key, certificate.crt with the 0600 and 0644 permissions accordingly.
challenge_type: LE challenges (https://letsencrypt.org/docs/challenge-types/). Supported values are: http-01 and tlsalpn-01.
challenge_port: might be any port, BUT if it differs from the standard 80 and 443 for the http and tls challenges, to pass the check, traffic should be reversed to these ports.
use_production_endpoint: by default: false. Use staging LE endpoint to check if your server is ready (ports are open, etc).
domains: array with the domain names to register.
obtain_certificates: false by default. Used as a final fuse before certificate request. LE has a rate limit, so, you should be sure, that everything is fine. Link.

Folders structure, initial architecture design.

Arch [alpha]:

Description:
We should support different types of protocols to communicate with the world. However, with existing architecture, we are forced to extend big, monolithic HTTP plugin to support HTTP, HTTPS, FCGI, HTTP3 (in future), WS, and other types of protocols. Updated architecture has as its goal to split different protocols (HTTP 1.1, HTTP 2, QUIC (HTTP 3) ... etc) into pluggable drivers under the plugin called transport (might be changed).
Transport plugin collects all protocol drivers, middleware for every driver (for example, GRPC uses interceptors) and exposes them. If there is not enough speed for the Go's std-http (for example), we may easily replace it with fasthttp or any other faster driver. The most interesting part here is that protocol drivers become independent and don't use abstractions from the different protocols to check if the user specifies some of them in the configuration. Code become cleaner and easier to support.
Diagram looks simple, but there are many problems to solve, such as:

Shared worker pool to support existing configuration.
Common interface to initialize/serve the driver. It should be simple and powerful to support many different types of protocols.
Failures handling.
RPC control interface (??).
Reset and Workers calls should return proper stats.

License Acceptance
By submitting this pull request, I confirm that my contribution is made under
the terms of the MIT license.
PR Checklist
[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]

[x] All commits in this PR are signed (git commit -s).
[x] The reason for this PR is clearly provided (issue no. or explanation).
[x] The description of changes is clear and encompassing.
[x] Any required documentation changes (code and docs) are included in this PR.
[x] Any user-facing changes are mentioned in CHANGELOG.md.
[x] All added/changed functionality is tested.

Maybe consider changing the ssl config field to tls. SSL is a deprecated term. It's now called TLS.

Have you considered using certmagic instead of lego? https://github.com/caddyserver/certmagic is a more robust implementation, and is what Caddy uses under the hood.

Have you considered using certmagic instead of lego? https://github.com/caddyserver/certmagic is a more robust implementation, and is what Caddy uses under the hood.

Yeah, I saw certmagic, but we use a very small fraction of what certmagic or lego may provide. In the previous implementation, I used only crypto/acme from stdlib, and that was fine for us 😄 (but, tbh, lego might be swapped with certmagic before release, there is no final decision yet)

@francislavoie I'll wait for the certmagic v1.0.0 release (https://github.com/caddyserver/certmagic/commit/1bbe11e2914b8487f2c55ba72108844133dbd203#r56974345). Just to be sure, that there is no BC.

But from the API pov, certmagic looks better than lego, hmm, dilemma. @francislavoie Thanks, I'll think about using certmagic.

Yeah, CertMagic has a much better API. I'll tag v0.15.0 in a few minutes with one BC. Note that breaking changes are very uncommon at this point and are documented in release notes, and might only affect some users when they do happen. I do want to tag a v1.0 at some point, hopefully by the end of the year. We'll see.

Great, thanks for clarifying @mholt


Include last voted BPs

Overview

We should add to obe-indexer voters table a last_voted column, get it by querying hyperion get_actions like this:  hyperion.get(/v2/history/get_actions?limit=1&account=${row.voter}&filter=eosio%3Avoteproducer)
This will enable https://github.com/telosnetwork/open-block-explorer/issues/475#issue-1470525338 not to be dependent  on Hyperion directly
Acceptance criteria

Voters table should include last_voted column
Querying it should return the list of BPs that were last voted by a specific account

Technical considerations

Tasks

Hmm yeah so what is missing would be the API route for it I think, gonna implement one shouldn't be long at all.


Disable debug messages

I'm integrating monero-javascript into my most recent project and it's working great so far.
However these debug sync messages are spamming my logs. Is it possible to disable them?
Example:
Heap resize call from 16777216 to 20185088 took 0.09554499387741089 msecs. Success: true
Heap resize call from 20185088 to 24248320 took 0.0572359561920166 msecs. Success: true
Heap resize call from 24248320 to 29097984 took 0.3719410300254822 msecs. Success: true

or
Background synchronizing in-memory wallet

Thanks for the quick fix.
Could you also push the update to npm, if you don't mind.

Yes it will be part of the next release, targeting a few days or less.
Logging will be disabled by default with add1bb5a19d7c0443ab9fb59f68be9d196ab4c41 and can be re-enabled or adjusted with await LibraryUtils.setLogLevel(level).

Great! Thank you

Sorry for the delay.  monero-javascript 0.5.3 is published now.

Hey woodser I get a error message in my console when I want to open a wallet:
Error: Method 'setLogLevel' is not registered with worker
Is it related to the new function?

Hey woodser I get a error message in my console when I want to open a wallet:
Error: Method 'setLogLevel' is not registered with worker
Is it related to the new function?

Yes, probably.  setLogLevel() was added to the web worker in https://github.com/monero-ecosystem/monero-javascript/commit/add1bb5a19d7c0443ab9fb59f68be9d196ab4c41.  Is monero_web_worker.js updated in your distribution folder?

Thanks, that fixed it.

Closing as resolved.


small adjustments for relate scripts

small adjustments for Project files coming via Relate, by passing down a isProjectFiles  prop from Browser.
Remove exporting/creating a new folder, like it is for sample scripts
prevents any editing of folder/file names as thats not in scope currently

Video of changes - n.b. some of the interaction has changed since then, but the styling introduced here is the same.

Looks good so far!

I wonder if its just better for you to branch off this work and then just change what you need to in your work. No point in merging this given you may change things.

@OskarDamkjaer happy to review this again please? Just wanted to double check that no existing styling would break. Thanks

Sure! I'll have a look now!

There seems to be no changes to styling, only formatting a new prop and some checks?

There seems to be no changes to styling, only formatting a new prop and some checks?

Thats right. I meant in terms of whether it affects layout for existing stuff but seems fine.


check grammar and formatting in gateway guides

@dovholuknf this is approved and ready to merge, but I lack the juice


docs: reorganize quickstart and home pages

Issue number: https://splunk.atlassian.net/browse/ADDON-68816
Summary
Changes

Please provide a summary of what's being changed

User experience

Please describe what the user experience looks like before and after this change

Checklist
If your change doesn't seem to apply, please leave them unchecked.

[ ] I have performed a self-review of this change
[ ] Changes have been tested
[ ] Changes are documented
[ ] PR title follows conventional commit semantics

I have read the Code of Conduct and I hereby accept the Terms

I have read the CLA Document and I hereby accept the CLA


anagram: updated exercise generator to new test generator

One of #2302
Here I am not completely sure which of the test cases with reimplements to include. Especially for the words are not anagrams of themselves thing.

Here I am not completely sure which of the test cases with reimplements to include. Especially for the words are not anagrams of themselves thing.

I think we can include all of them. By the looks of it, seems that 85757361-4535-45fd-ac0e-3810d40debc1 was then divided into 3 subtests. I'm a bit confused why 85757361-4535-45fd-ac0e-3810d40debc1 doesn't have an include=false. Did you update the toml using configlet and did it not put it in there?
According to the instructions here, I would expect configlet sync --tests include -u -e anagram to do this?

Hey, when running configlet sync --tests include -u -e anagram with an empty tests.toml all cases are included because of --tests include which includes all unseen. I have now removed all include=false statements as requested.

Sorry, I misunderstood you. I thought you wanted to have all test cases