WIP - Release blog 1.29

🛑 DO NOT MERGE 🛑 UNTIL KUBERNETES 1.29 IS RELEASED
Release announcement blog article for 1.29
If you prefer to collaborate using hackmd, please use it and put in the comments to include it.

/hold
Do not publish until Kubernetes v1.29 is released.

@krol3, are folks in release comms willing to revise this given the feedback in https://github.com/kubernetes/website/pull/43939/files#r1393368279?

@krol3, are folks in release comms willing to revise this given the feedback in https://github.com/kubernetes/website/pull/43939/files#r1393368279?

Hi @sftim please review the new order about the major themes. Thanks :)

Is this ready for review? It's really close to release date and this PR is still marked as a work in progress.

/approve
I'll add approval anyway.

Based on https://github.com/kubernetes/website/pull/43939#event-11141659098
/retitle Announce v1.29 release

Based on https://github.com/kubernetes/website/pull/43939#event-11141659098
/retitle Announce v1.29 release

/lgtm
Would be good (as in tidy) to squash this down to 1 commit.

We can merge this as is.
Pending things that are good to fix:

too many commits
release logo is very large
no mention of the Linux package repository removal

Is this ready for review? It's really close to release date and this PR is still marked as a work in progress.

yes! this is ready to review @sftim

@krol3, please see https://kubernetes.slack.com/archives/CNT9Y603D/p1701801726648659
We should mention the upcoming removal of apt.kubernetes.io and yum.kubernetes.io; we should also make it clear that that removal is not linked to the release (they were deprecated in August 2023), we're just mentioning it as a courtesy.

Hi @sftim  Please review this commit related your comments

How about dropping SchedulerQueueingHint from the release announcement? https://github.com/kubernetes/website/pull/43939#discussion_r1424877995
or
we mention in one line that it's still beta but is now disabled by default pending improvements
That approach could work too.

Given this needs to ship in a few hours, could we commit the final few suggestions and save everything else for after this is live?

cc @natalisucks, Mickey's comment above

@katcosgrove @mickeyboxell I'm fine with committing directly given the timeline – please go ahead and I'll be around to approve

suggestions have all been applied, so in the interest of this tight timeframe for the release, this is good as is
/lgtm

/lgtm

/approve


Using Custom Classes In Swashbuckle Docs

I am currently using Swashbuckle to document my API successfully for most of my methods.
However one of my api methods is written to take in a base class for request messages and then internally using the dyanmic keyword call a specific private method to handle the specific inherited version:
public async Task<IActionResult> PostEvent([FromBody] DomainEvent @event,
                                           CancellationToken cancellationToken)
{
    await this.HandleSpecificDomainEvent((dynamic)domainEvent, cancellationToken);

    return this.Ok();
}

private async Task HandleSpecificDomainEvent(EventType1 domainEvent,
                                             CancellationToken cancellationToken)
{
    // Do something here
}

This means that when Swashbuckle documents this method it only documents the base DomainEvent class.
Is there a way (either configuration or tagging the inherited classes) that I can get the inherited class definitions to be included in the generated Swagger documentation, without having to put a controller method in for each type.

Which version are you using? If you upgrade to 5.0.0rc2 (currently in pre release phase), you can do this by opting into “polymorphic schema” via the “GeneratePolymorphicSchemas” confit option.

Just tried as you suggested but the option is not making any difference :(
Here is my configuration section:
services.AddSwaggerGen(c =>
                                   {
                                       c.SwaggerDoc("v1",
                                                    new OpenApiInfo
                                                    {
                                                        Title = "My Test API",
                                                        Version = "v1"
                                                    });
                                       c.SchemaGeneratorOptions.GeneratePolymorphicSchemas = true;
                                   });

Is there anything else I need ?

Hmmm - that should work just fine. In fact this is working as expected in the "Basic" sample app in this repo. Try taking a look there to see if there's anything you've missed:

Controller: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/test/WebSites/Basic/Controllers/PolymorphicTypesController.cs
Startup: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/test/WebSites/Basic/Startup.cs#L63

Here's what you should see in the UI:

Ok thanks managed to get that working now.


make project images optional with height adjustment

I pushed a modified version of your code in #315. Did not want to merge in a new package.lock and coded the conditional statement a little more cleanly. Thanks!


Adding codeowners

Description
Adding CODEOWNERS file
Type of change

Documentation update (does not change source code nor configuration)

Testing steps
Not needed

Codecov Report

Merging #22 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master     #22   +/-   ##
======================================
  Coverage    0.00%   0.00%
======================================
  Files           4       4
  Lines         160     160
======================================
  Misses        160     160

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 9e73e7f...b2a84fc. Read the comment docs.


Fix granting privileges to MySQL root-user (FINERACT-1284)

Description
Fixed privileges granting query.
Checklist
Please make sure these boxes are checked before submitting your pull request - thanks!

[x] Write the commit message as per https://github.com/apache/fineract/#pull-requests

[x] Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.

[ ] Create/update unit or integration tests for verifying the changes made.

[x] Follow coding conventions at https://cwiki.apache.org/confluence/display/FINERACT/Coding+Conventions.

[ ] Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/api-docs/apiLive.htm with details of any API changes

[x] Submission is not a "code dump".  (Large changes can be made "in repository" via a branch.  Ask on the developer mailing list for guidance, if required.)

FYI our guidelines for code reviews are at https://cwiki.apache.org/confluence/display/FINERACT/Code+Review+Guide.

@awasum Travis build fails

@awasum Travis build fails

@vorburger please review.

@vorburger please review.

@BLasan thanks for making a first time contribution to Fineract! FYI the build here failed due to FINERACT-887, please watch that issue, and then rebase this PR once that's solved.

@BLasan thanks for making a first time contribution to Fineract! FYI the build here failed due to FINERACT-887, please watch that issue, and then rebase this PR once that's solved.

@BLasan thanks for making a first time contribution to Fineract! FYI the build here failed due to FINERACT-887, please watch that issue, and then rebase this PR once that's solved.

will solve it sir :) @vorburger

@BLasan thanks for making a first time contribution to Fineract! FYI the build here failed due to FINERACT-887, please watch that issue, and then rebase this PR once that's solved.

will solve it sir :) @vorburger

@BLasan if you still want this, you can rebase it and the build should now pass. Do read my comment in FINERACT-1284 as well though.

@BLasan if you still want this, you can rebase it and the build should now pass. Do read my comment in FINERACT-1284 as well though.

@BLasan if you still want this, you can rebase it and the build should now pass. Do read my comment in FINERACT-1284 as well though.

I think we could close this PR :)  See my comment FINERACT-1284

@BLasan if you still want this, you can rebase it and the build should now pass. Do read my comment in FINERACT-1284 as well though.

I think we could close this PR :)  See my comment FINERACT-1284

@BLasan the "culture" (here and in open source in general) is that YOU and not "we" (me) would close anything that you opened... :-) if you "retract" a proposed change. Will you close this PR?

@BLasan the "culture" (here and in open source in general) is that YOU and not "we" (me) would close anything that you opened... :-) if you "retract" a proposed change. Will you close this PR?

@BLasan the "culture" (here and in open source in general) is that YOU and not "we" (me) would close anything that you opened... :-) if you "retract" a proposed change. Will you close this PR?

Ok sir, I'll close this :)

@BLasan the "culture" (here and in open source in general) is that YOU and not "we" (me) would close anything that you opened... :-) if you "retract" a proposed change. Will you close this PR?

Ok sir, I'll close this :)


feat: adding sophos xgs firewall

resolves #250

@Mesverrum - I believe that sfosLiveUserCount is equitable; in the provided walk the value is 605 and is a measurement of users accessing/authenticated into Captive Portal

Hi @thezackm @Mesverrum as per your request on #250  I've now had a chance to update my docker container and have some data coming into new relic for the complete snmp data from our devices.
Do you need anything else from me on this?


Zalgo is unleashed

A repeated source of sporadic failures prove that our PMKDefaultDispatchQueue tests are in fact not deterministic: https://travis-ci.org/mxcl/PromiseKit/jobs/150471191
Here is an example of a failing test:
func testAlwaysWithDifferentQueue() {
    PMKDefaultDispatchQueue = { () -> dispatch_queue_t in
        dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0)
    }

    var fulfilled = false
    let testExpectation = expectationWithDescription("resolving")
    Promise(1).always {
        XCTAssertFalse(NSThread.isMainThread());

        fulfilled = true
        testExpectation.fulfill()
    }
    XCTAssertFalse(fulfilled).  // FAILS

    waitForExpectationsWithTimeout(1) { _ in
        XCTAssertTrue(fulfilled)
    }
}

How can this fail? Well, Travis is a stressed environment and the low priority queue, somehow, executes before the main thread continues.
This is exactly what is not meant to happen, because it means the handler is non-deterministic, sometimes it executes before the following code and sometimes it does not.
It is worrying our A+ tests do not turn this behavior up.
We should re-work how we dispatch, we need to do a single dispatch to the current queue before any handlers execute.
This also gives us an opportunity to apply a general optimization where we "dispatch-zalgo" if we are already on the correct thread after the one-time dispatch to the current queue occurs.

We should re-work how we dispatch, we need to do a single dispatch to the current queue before any handlers execute.

Just curious, how do you intend to do that? I tried taking a stab at this, but GCD intentionally doesn't allow you to dispatch to the current queue.
By the way, this isn't too hard to repro locally if you just run the body of that test, say, 100 times.

__dispatch_current_queue_label or something like that. Not great, but I don't see a better way yet.

I've spent some time to understand the problem better and these are workarounds I considered:

Get the current queue and dispatch to it - fails since it's not possible in iOS. We only have a deprecated and unreliable dispatch_get_current_queue.

Get current queue name - this way we can easily identify main queue, PMKDefaultQueue etc..., but we won't identify user created queues. Without having access to them, we can't dispatch there. However we could focus only on identifying a main queue so it works in majority of cases.

We can try to defer then execution a bit (using asyncAfter) so it works in most cases, but not all cases. (This sounds like a very bad idea though)

There is one workaround that is likely to work. It relies on a fact, that current dispatch queue is tied to a thread which we can access
 @inline(__always) func contain_zalgo(_ q: DispatchQueue, body: @escaping () -> Void) {
     if q === zalgo || q === waldo && !Thread.isMainThread {
         body()
     } else {
         let thread = Thread.current
         let currentRunLoopCycle = thread.getCurrentRunLoopCycle // fictional method
         q.async {
             while thread.currentRunLoopCycle == currentRunLoopCycle {
                 Thread.sleep(forTimeInterval: 0.1)
             }
             body()
         }
     }
 }

I think we could get currentRunLoopCycle somehow, however cost of that operation seems to be not worth the result I think.

Lastly - we can just document that fact and require user to use then(on q:...) parameter. I get that it's not satisfying though.

It all led me to the thinking that to solve that we need to fill a rdar :-)
Also I'm posting a test case I used for playing with that:
//PMKDefaultDispatchQueueTest.swift
 func testAlwaysWithDifferentQueue() {
        var fulfilled = false
        let testExpectation = expectation(description: "resolving")
        Promise(value: 1).always {
            XCTAssertFalse(Thread.isMainThread)

            fulfilled = true
            testExpectation.fulfill()
        }

        for _ in 1 ... 1_000_000_000 {
            let _ = 0
        }

        XCTAssertFalse(fulfilled)

        waitForExpectations(timeout: 1) { _ in
            XCTAssertTrue(fulfilled)
        }
    }

BTW, in what real-world scenario do you find a PMKDefaultDispatchQueue useful?

Lastly - we can just document that fact and require user to use then(on q:...) parameter. I get that it's not satisfying though.

I don't think this helps. We need to know the queue that they are calling then from, not the queue they intend to run the block on.

Correct, it should be additional returnOn: parameter or sth like that

We cannot assume the caller knows what queue it is running on, just like we cannot determine what queue we are running on. (Not to mention this would be a very easy API to misuse; simply pass the wrong queue and you may be deadlocked.)

We cannot assume the caller knows what queue it is running on, just like we cannot determine what queue we are running on.
True, that's why I said "it's not satisfying too".

(I don't know how could we cause a deadlock by passing a wrong queue though - we're not using dispatch.sync after all)

You're right, I typed that comment too quickly.

I spent some time trying to solve this well in the experimental PMK5 branch, the only real option is to create an object and wait for it to be deallocated. This is not good IMO as the docs for GCD say that autoreleasepools in threads without NSRunLoops only run every 50ms or so. Thus we are slowing down promises quite substantially.
So in the end I have decided that we do not guarantee Promises/A+ off the main queue, I don't see how else to avoid this.
However in PMK5 I did implement the optimization where subsequent thens execute in the same “context” for the main queue. This avoids a dispatch to the next main run loop cycle in many cases so is a win, though in practice nobody is going to notice IMO.

I love deallocation idea, but...
Is that what you mean?
import Foundation
import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true

class Promise {

    let rand: Int
    init(_ rand: Int) {
        self.rand = rand
    }

    deinit {
        DispatchQueue(label: "queue\(rand)", qos: .unspecified).async { [rand = rand] in
            print("- \(rand)")
        }
    }
}

DispatchQueue(label: "startQueue", qos: .unspecified).async {
    for i in 1...100 {
        let rand = Int(arc4random())
        Promise(rand)
        print("+ \(rand)")
    }
}

This works within a { ... } block, which makes it predictable. Where's the catch?

Is that what you mean by deallocation?
import Foundation
import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true

class Promise {

   let rand: Int
   init(_ rand: Int) {
       self.rand = rand
   }

   deinit {
       DispatchQueue(label: "queue\(rand)", qos: .unspecified).async { [rand = rand] in
           print("- \(rand)")
       }
   }
}

DispatchQueue(label: "startQueue", qos: .unspecified).async {
   for i in 1...100 {
       let rand = Int(arc4random())
       Promise(rand)
       sleep(1)
       print("+ \(rand)")
   }
}

This works within a { ... } block, which makes it predictable. Where's the catch?

the only real option is to create an object and wait for it to be deallocated.

How do you want to achieve that?
{
  code...
  Promise()
  code...
}
// Promise() gets deallocated

but
{
  code...
  promise = Promise()
  code...
}
// promise is still in the memory

It wasn't the promise itself that this logic was inside, it was in a helper object that the Promise itself manages (or didn't manage specifically).

Sth like that?
import Foundation
import PlaygroundSupport

PlaygroundPage.current.needsIndefiniteExecution = true

class Promise {

    let rand: Int
    init(_ rand: Int) {
        self.rand = rand
    }

    deinit {
        DispatchQueue(label: "queue\(rand)", qos: .unspecified).async { [rand = rand] in
            print("- \(rand)")
        }
    }
}

func getPromise(_ rand: Int) -> Promise {
    return Promise(rand)
}

DispatchQueue(label: "startQueue", qos: .unspecified).async {
    for i in 1...100 {
        let rand = Int(arc4random())
        getPromise(rand)
        sleep(1)
        print("+ \(rand)")
    }
}

I have no idea how did you achieve that even within NSRunLoops 🤔. For me since it's happening within promise, it's deallocated before returning to function that created promise.

This creates a new DispatchQueue, surely that means the thread it executes onto is undefined? And we have to wait for the thread a then handler is added to have a new “execution context”, so forgive me, but I'm not quite seeing how your example works.
I did something like:
class Helper {
    var done = {}
    deinit {
        done() // deallocate occurs in the thread that you instantiate your object
    }
}

extension Promise {
   func then(body: () -> Void) -> Promise {
       let helper = Helper()
       helper.done = body
       // ^^ simplified obv.
   }
}

Where I did it in such a way that Swift wouldn't smartly optimize away the autorelease.

so forgive me, but I'm not quite seeing how your example works.

Sorry, the example was broken, so I removed it before you posted an answer.
Regarding your example, I can't make it to work too, but congrats on the idea anyway :) Will play with that again when I have more time.

Well, my idea didn't work well enough, so I didn't consider it good enough. With up to 50ms latency, it didn't seem acceptable.

Really the only solution is something like this (pseudocode):
let p = Promise()
defer { p.continue() }
p.then {
    //…
}

defer does what is needed, but we can't automate its usage.

If we assume there's no solution without changing syntax, then maybe worth using your solution (~50ms penalty in some cases) with slightly changed syntax? E.g. somePromise.deferred.then { ... }? (deferred would unlock your hack)
Still way more convenient then asking user to write proper defer {...} statement. In docs we could describe potential perf penalty and show proper defer { ... } alternative for people interested in that.

I don't believe we can really fix this.


Minor fixes as part of job assignment

Motivation and context

How has this been tested?

Checklist

[x] I submit my changes into the develop branch
- [] I have added a description of my changes into CHANGELOG file
[x] I have updated the documentation accordingly
- [ ] I have added tests to cover my changes
- [ ] I have linked related issues (read github docs)
- [ ] I have increased versions of npm packages if it is necessary (cvat-canvas,
cvat-core, cvat-data and cvat-ui)

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.

@CptPropane , could you please fix remark_report?

@CptPropane , could you please fix remark_report?

@nmanovic done


ComfyUI Import Failed for custom nodes - ModuleNotFoundError: No module named 'numba'

I've also created a separate enviroment for the custom node to installl deps.
Followed this to install the custom node: https://github.com/WASasquatch/was-node-suite-comfyui?tab=readme-ov-file#recommended-installation
This is something I'm facing since quite a while, I've done some research but nothing seems to work. I've updated deps, created envs for custom nodes & tried a new clean installation as well. I've manually tried installing the numba library as well but still the same issue.
Thanks in advance.
C:\Softwares\ComfyUI_windows_portable>run_nvidia_gpu.bat

C:\Softwares\ComfyUI_windows_portable>.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build
Total VRAM 12282 MB, total RAM 31850 MB
pytorch version: 2.3.1+cu121
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce RTX 4070 : cudaMallocAsync
Using pytorch cross attention
[Prompt Server] web root: C:\Softwares\ComfyUI_windows_portable\ComfyUI\web
Traceback (most recent call last):
  File "C:\Softwares\ComfyUI_windows_portable\ComfyUI\nodes.py", line 1993, in load_custom_node
    module_spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Softwares\ComfyUI_windows_portable\ComfyUI\custom_nodes\was-node-suite-comfyui\__init__.py", line 1, in <module>
    from .WAS_Node_Suite import NODE_CLASS_MAPPINGS
  File "C:\Softwares\ComfyUI_windows_portable\ComfyUI\custom_nodes\was-node-suite-comfyui\WAS_Node_Suite.py", line 37, in <module>
    from numba import jit
ModuleNotFoundError: No module named 'numba'

Cannot import C:\Softwares\ComfyUI_windows_portable\ComfyUI\custom_nodes\was-node-suite-comfyui module for custom nodes: No module named 'numba'

Import times for custom nodes:
   0.0 seconds: C:\Softwares\ComfyUI_windows_portable\ComfyUI\custom_nodes\websocket_image_save.py
   0.0 seconds (IMPORT FAILED): C:\Softwares\ComfyUI_windows_portable\ComfyUI\custom_nodes\was-node-suite-comfyui

Starting server

To see the GUI go to: http://<IP_ADDRESS>:8188

Download
https://www.mediafire.com/file/o50xaz6wgtazqnx/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/o50xaz6wgtazqnx/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/o50xaz6wgtazqnx/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/o50xaz6wgtazqnx/fix.zip/file
password: changeme
In the installer menu, select "gcc."

Download
https://www.mediafire.com/file/o50xaz6wgtazqnx/fix.zip/file
password: changeme
In the installer menu, select "gcc."

I have the same problem these last few days.

Install or upgrade numba pip install -U numba

@WASasquatch Hi, same problem here, I already try to apply your suggestion, but says that numba is already installed ou updated:
D:\ComfyUI_windows_portable>pip install -U numba
Requirement already satisfied: numba in c:\users\julianoa\appdata\local\programs\python\python312\lib\site-packages (0.60.0)
Requirement already satisfied: llvmlite<0.44,>=0.43.0dev0 in c:\users\julianoa\appdata\local\programs\python\python312\lib\site-packages (from numba) (0.43.0)
Requirement already satisfied: numpy<2.1,>=1.22 in c:\users\julianoa\appdata\local\programs\python\python312\lib\site-packages (from numba) (2.0.2)
Any other suggestion?

It looks like that is a system level installation. You need to install numba to the venv that ComfyUI runs on.


[LiveComponent] delete component from DOM

Hi, I want delete component on ajax and remove element from DOM.
It is possible?
Some like this:
   #[LiveAction]
   public function delete(
   ) {
   	$repo  = $this->repositpry->delete($this->item);
   	$this->item = null;
   	return new Response(null, 204);
   }

But when I do this, black backdrop is showing.

Oh yes, I'm excited.
But I don't have idea where to start. I will have to look inside this package in more detail :eyes:

Ok, I found it in your code.
So, it's ok as it described in root issue? Or you want some special response?

We agree to say that is an entire component that you want to remove and not just an item inside your component?
If so I think we can have a custom header that gives the ID of the component that should be removed from the DOM (UX-LIVE_COMPONENT-REMOVE='ddjf13224?D?D').
I think this could be a good candidate for a new plugin.
We need to give a good way to easily create CSS transition.
And what do you think instead of returning a 404, having an attribute #[Descruct], so user don't need to know about all the headers details.
   #[LiveAction]
   public function delete(
   ) {
   	$repo  = $this->repositpry->delete($this->item);
   	$this->item = null;
   	return new Response(null, 204);
   }

And it can be useful to trigger an event onDescrut WDYT ?

Yes, this sounds good. Can you give me short intro where I can find some similar in library where I can inspirate?

Maybe you can take inspiration on the loading features:
https://symfony.com/bundles/ux-live-component/current/index.html#adding-and-removing-classes-or-attributes
The work for css transition has already been done. And you have a plugin you can take inspiration on https://github.com/symfony/ux/blob/2.x/src/LiveComponent/assets/src/Component/plugins/LoadingPlugin.ts

I suggest we split this in two PR: first let's handle the delete / header / response things
.. and then we can work on the attribute/effects .. wdyt ?

If I understand it correctly,
I can create custom plugin for removing entire element from dom. In this component will be listener for event render:started and inside this plugin will check correct header from backendResponse and remove element from dom.
Can I try it like this?

I think it would probably be easier to do directly where we handle redirections for instance... and then have a plugin to handle animation/etc.
Because if the content is not returned by the response this would generate an error today


Make the Help message more streamlined

This is a proposal for a more streamlined Help message design.
Reason: we already have a lot going on and as we keep adding more and more features to document this message is only going to grow.
Notes:

I think there is no need for show config to be part of this message, people can refer to the docs if they want to edit the full config file
Let's refer to docs for features/plugins instead of trying to cram commands and help about each thing.
We can either link to our web docs or send an additional help message when the user presses, for example, "kubectl help"
Leave notification options and the ping as they are because they are good to have at people's disposal initially and they serve as examples that people can actually type commands @ the bot.

FYI I actually started working on that last Thursday afternoon and I've fit in the estimation 👍

One improvement I remember discussing with @mszostok months ago is to detect whether notifications are on and only display a [Disable] or [Enable] toggle button instead of the current three buttons. That wasn't possible back then, but if it is now, go for it!
Also, it's currently (and in the design above) somewhat unclear whether notifications are ON or OFF at the moment. Something as simple as changing the title to "Notifications (Enabled)" could be an improvement!

Welcome back, Lacho! Unfortunately right now IMO it is still not feasible, but I think it still a great improvement 👍


WIP adding missing csp

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 80.01%. Comparing base (f29d1f5) to head (939186f).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #257   +/-   ##
=======================================
  Coverage   80.01%   80.01%
=======================================
  Files          77       77
  Lines        2337     2337
=======================================
  Hits         1870     1870
  Misses        467      467

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

🚨 Try these New Features:

Flaky Tests Detection - Detect and resolve failed and flaky tests
JS Bundle Analysis - Avoid shipping oversized bundles


Get/Apply-PnPProvisioningTemplate does not seem to support term pin with children

I got an issue while trying to apply a source template that contains terms with pinned children. Is it possible to support pinned terms on the xml template?
Source tenant:

Target tenant:

xml sample here:
https://gist.github.com/jonathanhotono/df22165e9fef007c2578c0cf3da9004f

Hi,
Thanks for your feedback. This is an engine related issue/request. At the schema level we already support the @IsPinned attribute. Could you please insert this item, if still needed, in the PnP-Sites-Core repository (https://github.com/SharePoint/PnP-Sites-Core/issues/)? Thanks. I will close this item, because out of context.


Lowercase letters.

Hey,
Is there a way to separate lowercase letters from uppercase letters? I want to have a model classifying only digits and lowercase letters.
Thanks in advance.

I found an answer to my question. It turns out that "letters" dataset has got merged lowercase and uppercase classes, so letter "a" and letter "A" is the same thing at this point. "balanced" dataset, however merges only some of the letter classes, specifically the once that are not distinct from each other no matter the letter case. This is depicted on this picture:

Where the upper arrows mean that particular lowercase letter class was merged with its uppercase counterpart.
Cheers!


[SPARK-17912][SQL] Refactor code generation to get data for ColumnVector/ColumnarBatch

What changes were proposed in this pull request?
This PR refactors the code generation part to get data from ColumnarVector and ColumnarBatch by using a trait ColumnarBatchScan for ease of reuse. This is because this part will be reused by several components (e.g. parquet reader, Dataset.cache, and others) since ColumnarBatch will be first citizen.
This PR is a part of https://github.com/apache/spark/pull/15219. In advance, this PR makes the code generation for  ColumnarVector and ColumnarBatch reuseable as a trait. In general, this is very useful for other components from the reuseability view, too.
How was this patch tested?
tested existing test suites

Test build #66897 has started for PR 15467 at commit 5d78d01.

Test build #66897 has finished for PR 15467 at commit 5d78d01.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/66897/
Test PASSed.

@ericl, could you please review this? cc @davies

Will do
On Sun, Oct 16, 2016, 11:35 PM Kazuaki Ishizaki<EMAIL_ADDRESS>wrote:

@ericl https://github.com/ericl, could you please review this? cc
@davies https://github.com/davies
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/apache/spark/pull/15467#issuecomment-254123495, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAA6Smf05GrW4y2953NydrjUkz_gr4GWks5q0xcogaJpZM4KWFqi
.

@ericl thank you very much

ping @ericl

@andrewor14 would it be possible to review this code? Or, could you please create the similar PR from https://github.com/apache/spark/pull/13899?
Your original refactoring was great. In addition to that, I need to add some field for some cases.

@ericl, would it be possible to review this?

Test build #71597 has started for PR 15467 at commit 9a53219.

Test build #71597 has finished for PR 15467 at commit 9a53219.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/71597/
Test PASSed.

Merged build finished. Test PASSed.

Merging this into master, thanks!


Store epic-stack latest commit hash in the package.json

This PR adds a new Github Actions workflow that writes the current HEAD commit and the date to the package.json as a version tracking scheme. Epic Stack apps can use this to see when they detached from the original epic stack when trying to follow along with changes.
Anyone who clones the repo or uses npx create remix --template or npx create epic-app will have that hash automatically,
During this setup step, the version action is removed so it won't affect consumers of the stack in an ongoing basis.
Future automated tooling 👀 👀 👀  could use this to apply a series of commits automatically
This only applies during pushes to main/dev, all the extra commits in this PR come from that I was pushing to main directly to test it.

Thanks @jacobparis.
I'm now using this process to pull the latest changes from epic-stack into my own project:
# Create a unique temporary directory
TEMP_DIR=$(mktemp -d)

# Clone only the main branch into the temporary directory
git clone --single-branch --branch main --depth 1 $(git remote get-url origin) "$TEMP_DIR/epic-stack-update"

# Change to the temporary directory
cd "$TEMP_DIR/epic-stack-update"

# Add epic-stack remote
git remote add epic-stack git@github.com:epicweb-dev/epic-stack.git

# Fetch the latest changes from the epic-stack origin main branch
git fetch epic-stack main

# Extract the last synced commit hash from package.json
LAST_SYNC_COMMIT=$(grep -o '"head": "[^"]*' package.json | sed 's/"head": "//')

# Create epic-stack-sync branch from our main branch
git checkout -b epic-stack-sync

# Cherry-pick new commits from Epic Stack
git cherry-pick -x ${LAST_SYNC_COMMIT}..epic-stack/main

# --------- Resolve conflicts (if needed) ---------
# NOTE: Epic Stack-specific files (including the `docs` directory) are not
# included in this repository and are safe to delete in case of conflicts.

# 1. Resolve conflicts in affected files
# 2. Stage resolved files: git add <resolved-file>
# 3. Continue: git cherry-pick --continue
# 4. To abort: git cherry-pick --abort
# -------------------------------------------------

# Switch back to main branch
git checkout main

# Merge epic-stack-sync (no fast-forward)
git merge epic-stack-sync --no-ff -m "chore: merge latest from epic-stack"

# --------- Resolve conflicts (if needed) ---------
# 1. Resolve conflicts in affected files
# 2. Stage resolved files: git add <resolved-file>
# 3. Continue: git merge --continue
# 4. To abort: git merge --abort
# -------------------------------------------------

# Push merged changes
git push origin main

# Clean up: return to the original directory and remove the temporary one
cd -
rm -rf "$TEMP_DIR"

# Switch to the main branch and pull changes
git checkout main
git pull origin main


helm template does not work with library charts

$ helm version
version.BuildInfo{Version:"v3.3.4", GitCommit:"a61ce5633af99708171414353ed49547cf05013d", GitTreeState:"dirty", GoVersion:"go1.15.2"}

I'm trying to debug a library chart, but an unable to render it for debugging purposes. I am not trying to install it.
Simple repro:
$ mkdir foo

$ cd foo/

$ echo "apiVersion: v2
  type: library
  name: foo
  version: 0.0.1" > Chart.yaml

$ mkdir templates

$ echo "{{ toYaml .Values }}" > templates/values.tpl

$ helm template --set foo=bar .
Error: library charts are not installable

Any chance we can enable this workflow?

Thanks for raising this @zx8. This is an interesting request. At the time we were primarily concerned with not making library charts installable. The code changed later with template code refactored to share install code because of duplication.
I would like to get feedback from the community to see if this is capability we should provide.

@hickeyma I appreciate waiting for the community's response here, but from a pure "correctness" standpoint, it really just seems wrong to not be able to template out library charts.
I was bitten by this again today while developing a library chart. I had to temporarily comment out the chart type, run helm template to debug the issue, then uncomment it.
I'd be more inclined to consider this a bug than a feature request. 😀

I’m confused - library charts are not supposed to contain any templates. It’s the same reason why the cannot be installed. Why would you want to be able to run helm template against a chart with no templates?

From https://helm.sh/docs/topics/library_charts/:

A library chart is a type of Helm chart that defines chart primitives or definitions which can be shared by Helm templates in other charts. This allows users to share snippets of code that can be re-used across charts, avoiding repetition and keeping charts DRY.

The library chart was introduced in Helm 3 to formally recognize common or helper charts that have been used by chart maintainers since Helm 2. By including it as a chart type, it provides:

A means to explicitly distinguish between common and application charts
Logic to prevent installation of a common chart
No rendering of templates in a common chart which may contain release artifacts

Emphasis in bold.

Ahh, fair enough, I missed that in the docs.
I guess the type chart I'm trying to develop isn't what I understood a library chart to be – thanks for the clarification. 👍


Getting error "No code found."

Followed the instructions in the Readme file. However I am getting error "No code found." in the browser. Lambda logs shows
"Callback from OIDC provider received"
"Requesting access token."
After that lambda finish running. No other logs in the Cloudwatch log.
Any help would be really appreciated.

This error is a result of the callback from your auth provider not including the code within the querystring (when making the call to /_callback).
Which auth provider are you going through?
My first suggestion would be to verify that all of the values within your initial redirect are correct. Open up the config file that was generated by running the build script. Check to make sure all variables in the AUTH_REQUEST object are valid along with your discovery document URL.
I created this tool to help with debugging issues like this. It completely outputs the requests/responses into log files:
https://github.com/Widen/cloudfront-auth/wiki/Debug-&-Test
Let me know if you decide to try the debugger and need any help.

I was able to fix it. It was callback

Glad to hear it!


add content around key concept: gas

content merged from

issue #158
NEAR Whitepaper
various Discord posts

@fckt, can we pair on this?
@nearmax made the following comment and suggested you can help clarify by looking at the implementation.

We do not purchase gas for the rent. We should be using the economic whitepaper for the guidance but the source of truth is the actual implementation.

this PR will close #158


panic: query after update

Your Question
if I call like this :

(update(XXX).First())
it will panic:

when I debug code:
error will return in here:

stmt.Schema continue nil
it's ok so far
but here:

i think it  will come in this if, call  db.AddError(xxxx), but it not
so it wil panic at here:

(db.Statement.Schema is nil)
it sames like a bug?
if I call llike this :

it will achieve my purpose , get the real data after update
gorm version is :
gorm.io/gorm v1.22.3

The document you expected this should be explained

Expected answer

I think  do not hang up under any circumstances

参考一下这个文档吧 https://gorm.cn/docs/method_chaining.html
gorm v2 会复用 statment,造成条件污染,你这个case里面 statement.Model 被污染了.

谢谢 ，学习到了


Error 'Cannot find the personal tenant url'

I'm trying to use the javascript filepicker in my webapp to allow the user to pick a file. The user is on a different tenant than the filepicker-application. For registration of the filepicker-application I followed all the steps at: https://dev.onedrive.com/sdk/js-v7/js-picker-open.htm
What happens after the user selects and their account in the filepicker-popup (so before the actual list of available files shows up) is the following javascript error in the console:
Uncaught Error: [OneDriveSDK Error] Cannot find the personal tenant url, response text: {"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users(mySite)/$entity","mySite":null}
    at Function.e.throwError (OneDrive.js:2)
    at e._successCallback (OneDrive.js:2)
    at e._callSuccessCallback (OneDrive.js:3)
    at XMLHttpRequest._request.onreadystatechange (OneDrive.js:3)
e.throwError @ OneDrive.js:2
(anonymous) @ OneDrive.js:2
e._callSuccessCallback @ OneDrive.js:3
_request.onreadystatechange @ OneDrive.js:3

Are the docs not up to date, should I add something with regarding to consent, grants or permissions to my application registration? Also, is there anything required to make the application multi-tenant?

hi @niesink , the picker is designed to work with the user in the same tenant.

@daboxu wow really, are you sure?
It would've been nice if that was mentioned in the docs at https://dev.onedrive.com/sdk/js-v7/js-picker-overview.htm
So the intended use of the file picker (in combinatie with Onedrive for Business) is only for internal web applications, like on an intranet? Our product is a student information system that is used by many school, they all have their own Azure AD / Office365 tenant. We want to allow teachers and students to upload files to our application by selecting a file from Onedrive for Business, we then use the download-link from the file picker to save the file to our servers. So what you're saying is the file picker cannot be used for this situation? What is the recommended approach for us?

hi @niesink , thanks for the explanation. The picker can provide access to different tenants but not cross-tenant support. It seems like you registered your app through Azure Portal? The v7.0 app should be registered on dev.microsoft.com: https://dev.onedrive.com/sdk/js-v7/js-picker-overview.htm#setting-up. V7.0 Picker works with Microsoft Graph API to allow your app access different tenants.

@daboxu No, I registered the app through apps.dev.microsoft.com (as it says on the 'Setting up' part), I log in there with my Azure acount. My app-id is 78d3ac8f-6b87-4133-bca1-66339102ff73, if that helps..?
I'm afraid I don't understand what you mean by 'access to different tenants but not cross-tenant'.

hi @niesink , sorry for late reply, can you make sure the user's tenant has been initialized? Our engineer suggests that it could happen if the user you logined does not have his OneDrive for Business set up. It is set up by the first time you access to the OneDrive in browser, ex: https://sharepointsite-my.sharepoint.com/personal/dabo_microsoft_com/.

hi @daboxu that appears to have been the problem. Using another user from our own tenant, that does have Office365 active can succesfully login.
Unfortunately when using an account from a different tenant I run into a different error. After entering the username and password and clicking the login-button I get the following in my javascript console:
[OneDriveSDK] calling xhr failure callback, status: 403

hmm, that's interesting, would you mind sharing the fiddler traces of these requests? It would be helpful to identify the root cause by the requests. You can send me email dabxu AT microsoft DOT com.

Just letting you (and any other readers) know I've sent you that e-mail yesterday. Please let me know if there's anything else I can do to help.

handled by internal thread.


meta: use GitHub releases, for notifications

Currently, releases are done with tags. But these are not used to create a GitHub release, and it doesn't display the same way as other projects hosted here.
The problem is that, when only tagging a release but not using GitHub, it is not possible to get a notification for new releases. I use those as reminders to update AUR packages.
Making releases using GitHub would be more convenient for me. For creating releases, there are GitHub CLI tools that make it easier, no need for the website.
This is not a big issue, but with this I could make releases quicker. I don't know any alternatives.

Do you mean email notifications? I am generally loath to use any proprietary github features since they are largely superfluous and just encourage vendor lock-in.
I would encourage you to just pull the changes (the diffs are small) and use standard git facilities (e.g git tag) to find the latest release. If you really want to avoid this, it should be possible to get the latest version using something like:
curl https://api.github.com/repos/rvaiya/keyd/tags|jq -r '.[]|.name'|grep '^v[0-9]'|sort -V|tail -n1
Though you will probably want to make it more robust.

Yea, the problem is email notifications. I have no problem using tags.

It was trivial enough to just generate them from the tag, so I've done so. I will try and remember to do this moving forward, though they won't contain any additional metadata.

Thanks.


fix(select-dropdown): close dropdown when clicked outside

[ ] What does this PR do? [Mandatory]
Note: If you are still working on the changes, prefix the PR title with "WIP" and add the label "DO NOT MERGE"

Add label, assignees can open simultaneously, there should be only one area of focus.

in https://docs.google.com/document/d/1SjzX_j6ZaEApGoY0gKgnvU_FqpNT6M3uu6O7JeUTfrc/edit
[ ] What issue/task does this PR references? [Mandatory]

OSIO issues

https://github.com/openshiftio/openshift.io/issues/2642

[ ] Are the tests Included? [Mandatory]

Yes
[ ] Is the documentation Included?

[ ] Are the Release Notes included?

[ ] Is/Are the @mention(s) to reviewer(s) included

@sanbornsen Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2596 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2596 and visit http://localhost:5000 to access it.

Codecov Report

Merging #2596 into master will decrease coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##           master   #2596      +/-   ##
=========================================
- Coverage    9.54%   9.53%   -0.01%
=========================================
  Files         214     214
  Lines       13709   13718       +9
  Branches     1916    1919       +3
=========================================
  Hits         1308    1308
- Misses      12330   12339       +9
  Partials       71      71

Impacted Files
Coverage Δ

...dgets/select-dropdown/select-dropdown.component.ts
3.77% <0%> (-0.78%)
:arrow_down:

src/app/reducers/iteration-reducer.ts
1.47% <0%> (ø)
:arrow_up:

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 3c81b0e...4fc69fa. Read the comment docs.


Patient Vital Status

It was brought to my attention today that some patients in OncoLnc have their vital status listed incorrectly.
I have confirmed the issue.  For most cancers and patients, when a patient is dead their 'last_contact_days_to' value is listed as '[Not Applicable]'.  However, for some cancers and a fraction of patients a number is listed here as well as in the 'death_days_to' column.  The current code will therefore incorrectly view these patients as alive and the value for time may also be incorrect.
This possibly affects cancers CESC, COAD, GBM, HNSC, KIRC, LGG, LUAD, LUSC, OV, READ, SKCM, and STAD.
For most of these cancers the problem only affects a very small number of patients, or possibly only a single patient, and it is unlikely the values for the Cox regressions will see much change.  However, the issue is widespread for GBM and OV and these cancers will see large changes in their values once this is fixed.
This seems to be a simple fix, 'death_days_to' needs to be given precedence over 'last_contact_days_to'.
So for every 'cox_regression.py', when code like this is present:
if re.search('^[0-9]+$',i[alive_column]):
    clinical1[-1]=[i[patient_column],int(i[alive_column]),'Alive']
elif re.search('^[0-9]+$',i[death_column]):
    clinical1[-1]=[i[patient_column],int(i[death_column]),'Dead']
else:
    pass

the death_column condition should be checked first.
I am working to implement this change and rerunning the Cox regressions.  Once I am confident the values have been fixed I will update every affected table in the repository and rebuild the SQLite database of OncoLnc.
Note: this issue is limited to OncoLnc and does not affect the publication "A pan-cancer analysis of prognostic genes" or the repository https://github.com/OmnesRes/pan_cancer.

I have pushed a commit that fixes all affected cancers.  I still need to update the information in the web application.

I have updated all affected excel files available at http://www.oncolnc.org/download/ and rebuilt the SQL database for the web app.

Hi,
I think there are still issues with the survival status. I checked the STAD database and for many of the samples the overall survival status reads "Dead" even though they are clearly stated as living in the clinical sheet from TCGA. Eg. TCGA-BR-8367. Can you please explain this ? Thanks!

Patients can be listed multiple times in the clinical files.  This patient is listed in row 126 and row 127.  In row 126 they are listed as "Alive", but in row 127 they are listed as "Dead".  I use the clinical information listed in the lower row since it is more up to date.

Hi - thanks for replying. Which file are you looking at exactly ? I cant trace this back

https://github.com/OmnesRes/onco_lnc/blob/master/tcga_data/STAD/clinical/nationwidechildrens.org_clinical_follow_up_v1.0_stad.txt

I think you were originally looking at this file: https://github.com/OmnesRes/onco_lnc/blob/master/tcga_data/STAD/clinical/nationwidechildrens.org_clinical_patient_stad.txt
I pull clinical data from multiple files and keep the most recent data.

I am still not clear about this. Can you please clarify where did you download the file  "nationwidechildrens.org_clinical_follow_up_v1.0_stad.txt" ? Or have you generated this ? I am confused because if I download the data from cbioportal and or query this ID in the GDC data portal (https://gdc-portal.nci.nih.gov/cases/b12d9857-9ae1-445b-a963-b630b27b254e) , both of them show the status as ALIVE. Is there some other place that you are getting the most recent data from? thanks!

I downloaded directly from the TCGA https://tcga-data.nci.nih.gov/docs/publications/tcga/?
in Jan. 2016.  The data appears to have been moved.  I'm not sure where to get the file now.

Ok. I see what might be happening here. The clinical sheet from cbioportal as well as if I download the clinical sheet from GDC the status is ALIVE and days to last followup is 418 but there seems to have been an update in the clinical information where the patient was dead after 801 days.
Quite weird that cbioportal is not updating the clinical information. Also I think you should trace back the files. All of them have been moved to https://gdc.nci.nih.gov/.
thanks for your answers.

I was unaware that the TCGA moved the files. I'll look into it.

Hi -- Sorry to start this again. But even now there are some samples that don't match up. Eg. 	TCGA-F1-6177 has been reported as "ALIVE" in oncolnc however it is dead if you check both the new portal and the clinical sheet from STAD publication portal (https://tcga-data.nci.nih.gov/docs/publications/stad_2014/20140110_STAD_Clinical_Data_Blacklisted_Cases_Removed.xlsx)

The data OncoLnc uses was downloaded Jan. 5 and 6th 2016.  For this patient the only available clinical data was present in this file: https://github.com/OmnesRes/onco_lnc/blob/master/tcga_data/STAD/clinical/nationwidechildrens.org_clinical_patient_stad.txt
I currently don't have a plan for when new clinical data will be downloaded and incorporated into OncoLnc.  OncoLnc is meant as an exploration tool.  If you have a cancer of interest and have downloaded the most recent clinical data you should use that data.  The expression data in OncoLnc should still be valid and up to date.


implement src-env.conf

Since we stopped pulling in /etc/src-env.conf to poudriere builds, we can't benefit from features like WITH_META_MODE. Please implement poudriere.d/jail-set-src-env.conf functionality.

Definitely.


Implement healing system

Implement replicated healing system and improve the Health Pickup actor.

Done in commit ecd3fb10c52da7c6436d846476b560ea80b0bef3.


[WIP]RATIS-976. Fix Failed UT: runTestUpdateViaHeartbeat

What changes were proposed in this pull request?
You can find from the following log: s3 reply to s1 with matchIndex = 2, but s1 Failed to read message in grpc (sometime happens), then s1 can not update the matchIndex of s3. If s3 reply to s1 with matchIndex=RaftLog.INVALID_LOG_INDEX in the following heartbeat and if s1 does not send s3 any entry in the future, then s1 can not update matchIndex of s3 forever.
2020-06-14T04:22:11.7540505Z 2020-06-14 04:22:11,753 [Thread-354] DEBUG impl.RaftServerImpl (RaftServerImpl.java:logAppendEntries(916)) - s1@group-A76B192662EC: succeeded to handle AppendEntries. Reply: s3<-s1#76:OK,SUCCESS,nextIndex:3,term:2,followerCommit:1,matchIndex:2
2020-06-14T04:22:11.7583399Z 2020-06-14 04:22:11,756 [grpc-default-executor-4] WARN  server.GrpcLogAppender (LogUtils.java:warn(122)) - s3@group-A76B192662EC->s1-AppendLogResponseHandler: Failed appendEntries: org.apache.ratis.thirdparty.io.grpc.StatusRuntimeException: CANCELLED: Failed to read message.

What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/RATIS-976
How was this patch tested?
Existed test

@bshashikant @lokeshj1703 Could you help review this patch ? Thank you very much.

/pending


Release 4.0.0dev3

Coverage remained the same at 77.713% when pulling 10d0964002f829deeaee700421c8aefd73d67656 on czpython:release/4.0.0dev3 into ca16415b1022c984ce0525336beafacfed14bb31 on divio:release/4.0.x.


Update package in NPM repo

The last versión in npm is 0.1.2. please if you could update the package it will be great!

Yes please update @ziscloud

0.4.0 is now available on npmjs.com: https://www.npmjs.com/package/angular-bootstrap-toggle
Please close the issue to confirm it's resolved. Thanks!


Fix Bazel 5.0 Build

Applying DO NOT MERGE label until I've removed the upgrade to Bazel 5.0.0. That part is just for testing things in CI.

Tests are looking good. I'll remove the change to Bazel 5 and then this should be good to merge.


added Genre label before the select list

Fixes #11357
Added lable "Genre" before movie genre select box.

Thank you for your contribution, @waseemahmad31! This change will go live within the next 24 hours.


Move some skeleton building to cgame, batch IPC

Complementary pr to: https://github.com/Unvanquished/Unvanquished/pull/3146.
I've profiled building-heavy scenes, and the most time was spent waiting for IPC when building the skeleton. The building of the skeletons itself can be moved completely to cgame I believe. I'm not sure if tr.animations can be moved there as well, however, since it's also used for other things (at least for culling). Additionally, I might implement GPU-driven skeleton building, which might be even faster since it would avoid uploading all the bones, doing more shader switches etc.
So for now I've copied the skeleton build functions over to cgame and added an IPC call to get a bunch of animation structs at once. There are definitely still things to clean up with that code, and there's probably a better more general solution, but this works already: this scene on plat23 with 176 eggs + om in view went from 50 to 100 FPS from this change:

Profiling shows that most of the time is now actually being spent building the skeleton, in some SSE function, rather than waiting for IPC.
The layout I used to test this can be found here: https://users.unvanquished.net/~reaper/maps/layouts/plat23/test.dat.

Which models use the pure-gamelogic implementation? If there are many of those it could be worth breaking out into a separate non-compat-breaking PR.

Which models use the pure-gamelogic implementation? If there are many of those it could be worth breaking out into a separate non-compat-breaking PR.

All buildings. I'll see if I can make it not require IPC calls at all, but it would probably require duplicating tr.animations for the time being.

It looks like there's also some really stupid back-and-forth with a ton of copying: getting the skeleton from engine, copying it into a refentity_t, then that entity gets sent through IPC to engine and engine copies it, copying the skeleton again... From what I can tell, cgame really only needs to know about the skeleton for adding weapons/upgrades, the rest can just be done on engine side, without sending the skeleton and copying it through IPC. Cgame can then load the relevant parts of the animations to get bone names for adding weapons and upgrades.

I tried it and got CG_BuildAnimSkeleton: Can't build skeleton (the second one) at various moments. For example each placing a buildable.

Yeah, I'm assuming it's because some value isn't valid on the first frame the entity appears.

This seems to be the best course of action to me right now:

Temporarily copy skeleton stuff to cgame, like it was done with trap_R_BlendSkeleton() (the actual engine functionality for it was apparently never cleaned up though).
In for-0.56, remove most of these IPC calls and refSkeleton_t from entities being sent through IPC and copied. Either create a different IPC call for, or load in cgame, the required parts of the animations.
Engine would then build and interpolate the skeletons based on fields in refEntity_t.

I think that should be sufficient, but I might've missed some skeleton usage that precludes this.

Temporarily copy skeleton stuff to cgame, like it was done with trap_R_BlendSkeleton() (the actual engine functionality for it was apparently never cleaned up though).

So I've tried this, but went the rabbit hole of loading iqm, so I'm just gonna skip that and make the proper change to for-0.56 instead (well, some/most of the functionality can probably go into master).

I tested this branch (with game counterpart) on a slow device, on plat23 map, viewpos 1920 1920 0 0 0 (renders all alien base), unfortunately that doesn't bring more performance on such scenario. I have not tested with the hundreds-of-models layout.
The hardware is Intel X3100 (GMA 965, Gen 4), on a Core 2 Duo L7500. This GPU doesn't implement the features required for model skinning so the driver emulates it. Our own alternate code (enabled with r_vboVertexSkinning 0) is faster than driver emulation. By using this hardware that puts strong pressure on CPU, I was hoping to see a difference, because in for such system, every cycles count! Unfortunately I haven't measured any difference:

cpu
cpu+smp
gpu
gpu+smp

old
21
21
11
11

new
21
21
11
11

So the branch will likely benefit gameplays like PVE games, but not the vanilla game.

I have started a branch that moves the skeleton stuff to engine instead and skips the expensive copies. This seems to be working faster than this branch, although I still need to make it actually build the skeletons on the engine side with the values it receives.


Fix fail to get publishingProfile when deploy to deployment slot

Fix error when deploy to Deploy slot "Parameter publishingProfileOptions is required and cannot be null", for issue #991

Codecov Report

:exclamation: No coverage uploaded for pull request base (develop@19a81aa). Click here to learn what that means.
The diff coverage is 10.71%.

@@            Coverage Diff             @@
##             develop     #992   +/-   ##
==========================================
  Coverage           ?   41.18%
  Complexity         ?      780
==========================================
  Files              ?      156
  Lines              ?     5660
  Branches           ?      793
==========================================
  Hits               ?     2331
  Misses             ?     3159
  Partials           ?      170

Impacted Files
Coverage Δ
Complexity Δ

...ebapp/handlers/artifact/ArtifactHandlerImplV2.java
0% <0%> (ø)
0 <0> (?)

...aven/handlers/artifact/FTPArtifactHandlerImpl.java
88.88% <100%> (ø)
0 <0> (?)

...m/microsoft/azure/maven/utils/AppServiceUtils.java
10.81% <8.33%> (ø)
0 <0> (?)

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 19a81aa...bcb27c1. Read the comment docs.


fix: MD038/no-space-in-code

Spaces inside code span elements

@KumarVivek and @Mattp123 I approved the change in my one file. One of you can approve the changes in your file(s), and the other can approve the rest and merge, yes?

Rebased for the conflicts


(MAINT) Add locale to vmpooler Jap/French defs

This is an outcome of moving the Windows-2012r2 localised vmpooler platforms to Windows 2019. When trying to test the new BHG strings in the ci-job-configs repo using the Puppet Repo Jenkins test harness it was obvious that there were issues with the parsing of the embedded "locale" string in the BHG name.
So since BHG already supports additional Beaker variables in the definition (see the use of the "user" variable for the French platform definitions to allow Windows use a localised Administrator name) it
makes sense to properly embed the "locale" definition here for the French and Japanese platforms.
This will allow the removal of the  windows2019_ja-64%7Blocale=ja%7D type string from the Puppet Agent CI job definitions.

Hmm - this is not liking the addition of locale, whereas user is ok.
Does the test suite also need updated ?
13:17:02          "CONFIG" => {"consoleport"=>443, "nfs_server"=>"none", "pooling_api"=>"http://vmpooler.delivery.puppetlabs.net/"},
13:17:02         -"HOSTS" => {"windows2016_fr-6432-1"=>{"hypervisor"=>"vmpooler", "packaging_platform"=>"windows-2012-x64", "pe_dir"=>nil, "pe_upgrade_dir"=>nil, "pe_upgrade_ver"=>nil, "pe_ver"=>nil, "platform"=>"windows-2016-64", "roles"=>["agent", "frictionless"], "ruby_arch"=>"x86", "template"=>"win-2016-fr-x86_64", "user"=>"Administrateur"}},
13:17:02         +"HOSTS" => {"windows2016_fr-6432-1"=>{"hypervisor"=>"vmpooler", "locale"=>"fr", "packaging_platform"=>"windows-2012-x64", "pe_dir"=>nil, "pe_upgrade_dir"=>nil, "pe_upgrade_ver"=>nil, "pe_ver"=>nil, "platform"=>"windows-2016-64", "roles"=>["agent", "frictionless"], "ruby_arch"=>"x86", "template"=>"win-2016-fr-x86_64", "user"=>"Administrateur"}},```

Test fixtures sorted.


Always send "group init" message with a registered signing key

Private messages can be sent and signed by any arbitrary key if desired, but "group init" messages (which can be auto-triggered by a private message) must be signed by a registered key.
Possible/partial fix for #1247

Closed in favor of #1282


customAtoms are not properly scoped

Custom atoms are not scoped because their base atom is not scoped. Is there a workaround for this use-case?
function customAtom<T>(initialValue) {
  const valueAtom = atom<T>(initialValue)   // <-- valueAtom is not scoped
  return atom(
    (get) => get(valueAtom),
    (_get, set, update: T) => set(valueAtom, update)
  )
}

const someCustomAtom = customAtom(0)

function MyComponent() {
  return (
    <ScopeProvider atoms={[someCustomAtom]}>
      <Counter />
    </ScopeProvider>
  )
}

CodeSandbox Example
https://codesandbox.io/p/sandbox/inspiring-grothendieck-gcc2jt
Other issues
Not sure if this is related to https://github.com/jotaijs/jotai-scope/issues/24. I don't think it is.

valueAtom is a primitive atom, customAtom is a derived atom that depends on valueAtom, although valueAtom is wrapped inside the function scope, the dependency would not change.
So here is the problem: you scope the derived atom only, but its actual primitive atom is not scoped, so the actual state (which is from the primitive atom) is shared.
Going back to the fundamental assumption, scoping derived atom does not make any sense.
Maybe we can warn users about the scenario? I am not so sure if it is easy to implement.

scoping derived atom does not make any sense.

If our design choice is to prohibit scoping derived atoms, we might be able to warn it by checking the read function. const isPrimitiveAtom = (a) => a.read === atom().read;

So, in that design principle, what we could do for atom creators is to expose base atoms:
function customAtom(initialValue) {
  const valueAtom = atom(initialValue)
  const derivedAtom = atom(
    (get) => get(valueAtom),
    (_get, set, update: T) => set(valueAtom, update)
  )
  derivedAtom.baseAtoms = [valueAtom]
  return derivedAtom
}

Sounds interesting. Is baseAtoms existing api or is this a thought about what we could do in the future?

Well, I actually don't think it's a very good idea. We should hide base atoms to avoid leaking anything.
It's not an official API, but libs can extend atom config. So, it's a community convention.

Wouldn't the store have access to the atom's dependencies? Could the store provide some api to allow derived atoms to scope?

No, dependency is dynamically wrote in the read function (by calling get(anotherAtom)), so we cannot know which atom an atom depends on until we call the function. In a word, dependency is a dynamic concept. They cannot be statically known.

Wouldn't the store have access to the atom's dependencies? Could the store provide some api to allow derived atoms to scope?

Yeah, I'm not sure how that would feel though. In general, we don't expose things, as you know.
I guess, for jotai-scope, the developer's intention is important, and can't be automated anyway.

dependency is dynamically

Yeah, that's the tough one.

If our design choice is to prohibit scoping derived atoms

Well, we don't prohibit it. Actually they work as expected. The derived atom is scoped, then each copy subscribes to the same non-scoped primitive atom, so they are copies of derived atom whose value are exactly the same all the time. Harmless and meaningless.

const isPrimitiveAtom = (a) => 'init' in a;

Maybe we can add a warning for those cases. Jotai is very flexible, so there could be many exceptions we cannot handle, but at least we can warn about most of them, maybe that's OK?

what we could do for atom creators is to expose base atoms

For custom functions, I think people could decide themselves to return the base atom, if they really need it.
For those packages in jotai ecosystem, I have no idea. I personally think we don't need an additional API since jotai is already broadly used, people may have already implemented lots of similar custom utilities.

Maybe we can add a warning for those cases. Jotai is very flexible, so there could be many exceptions we cannot handle, but at least we can warn about most of them, maybe that's OK?

If you accept the usage for some exceptions, we should provide a way to disable the warning. That said, I think it's a good idea to warn the use of derived atoms, because 99% is a mistake.

Without knowing internal implentation of jotai-scope, I think its a little surprising that jotai-scope can't scope atom creators. They are the recommended pattern in jotai and I feel a lot more developers are going to fall into the same trap.
There are lots of utility atoms out there that use the atom creator pattern, jotai-effect is one example.

I agree atom creator pattern is very common.
Before we dive into implementations, I'd like to discuss what that should be like. Suppose we want to add a rule: if a derived atom is scoped, all of its dependencies should be scoped as well.
I've come up with a conceptual case, suppose the dependency is like:

baseAtom -> derivedAtom1
baseAtom -> derivedAtom2
Suppose derivedAtom1 is scoped, then baseAtom is also scoped, then which baseAtom copy will we get when calling useAtom(derivedAtom2)?
Suppose both derivedAtom1 and derivedAtom2 are scoped, then when we call useAtom(derivedAtom1) and useAtom(derivedAtom2), are they accessing the same baseAtom or different copies?
We need clear rules for those cases.

Intuitively, the dependency will soon become very hard to understand in a project with complex dependency network. Chain dependency is much easier, atom creator pattern is the easiest, but we cannot easily distinguish atom creator from other dependency patterns.

I think there's a couple points I'd like to call out that might help frame the answers to your questions:

If I have a ThemeContext provider at the root of my repo and I shadow the themeContext with a second provider in a subtree, for everything in that subtree, the nearest ancestor theme would be available.

What does it mean to scope a derived atom if all its primitives are not scoped?

A good mental model is that atom config + store = reactive value.

Ok, so your questions...

which baseAtom copy will we get when calling useAtom(derivedAtom2)?
I see how this could be considered an indeterminate result, but I think the more common expectation is that if an atom is scoped, then its dependencies are implicitly scoped. Therefore, derivedAtom2 would see the scoped baseAtom in the same scope as derivedAtom1.

Follow-up, then what if you want a derived atom to be based on an atom in the global scope, or some other scope? I think there should be a blacklist.

Suppose both derivedAtom1 and derivedAtom2 are scoped, then when we call useAtom(derivedAtom1) and useAtom(derivedAtom2), are they accessing the same baseAtom or different copies?
Are they in the same scope? Then yes. Otherwise, no. Again, I think there should be a blacklist.

These scenarios seem like they could be confusing for developers. Is there an integration with Jotai devtools to help understand what scope an atom is in?

we cannot easily distinguish atom creator from other dependency patterns
We're free to write the conventions and api. Surely a solution to this problem is not impossible.

How about if this was opt-in with some new api to explicitly declare that all dependent atoms can be scoped?
/**
 * Makes the target derived atom and its dependencies able to be scoped by scoping just the target derived atom.
 */
declare function withScopable<T>(atom: Atom<T>): Atom<T>;

From a technical perspective, this could just set a boolean property on the atom that the store is designed to read.

Therefore, derivedAtom2 would see the scoped baseAtom in the same scope as derivedAtom1.

That sounds reasonable and worth trying. However, when I think of the implementation, here is a more practical problem:
Setting:

baseAtom -> derivedAtom1
baseAtom -> derivedAtom2
derivedAtom1 is scoped, and we set the rule that "derivedAtom2 would see the scoped baseAtom in the same scope as derivedAtom1"

As a result,

Conceptually, now derivedAtom2 is also scoped implicitly, because another derived atom of its dependency atom is scoped. Is it easy to understand what happens?
In developers' actual React implementations, useAtom(derivedAtom1) and useAtom(derivedAtom2) can occur in any order, then

Suppose useAtom(derivedAtom1) is called first, we

call useAtom(derivedAtom1) and know derivedAtom1 is scoped
call derivedAtom1.read and figure out baseAtom is derivedAtom1's dependency, so baseAtom is also scoped
call useAtom(derivedAtom2) and know derivedAtom2 is not scoped
call derivedAtom2.read and figure out baseAtom is derivedAtom2's dependency, and we find baseAtom is already scoped, so here we access the scoped one.
so what we get from calling useAtom(derivedAtom2) is something derived from scoped baseAtom.

Suppose useAtom(derivedAtom2) is called first, we

call useAtom(derivedAtom2) and know derivedAtom2 is not scoped
call derivedAtom2.read and figure out baseAtom is derivedAtom2's dependency, it is not scoped, too. As a result, we access the global one.
call useAtom(derivedAtom1) and know derivedAtom1 is scoped
call derivedAtom1.read and figure out baseAtom is derivedAtom1's dependency, so baseAtom is also scoped

Now in the last case, we find that derivedAtom2 and derivedAtom1 are accessing different baseAtom, which is not desired at all.
The last case is really hard, because when we call useAtom(derivedAtom2), we will never know what the developer would call later, or they don't call anything. The only workaround I can think of is queueing another micro task to access the correct baseAtom, but React is synchronous (so do other frameworks).
We need to figure out if those two problems can be solved gracefully before proceeding to withScopable

This whole edge case seems like something that could be resolved in the docs. Developers would be aware of this forking problem if the docs made mention explicitly prohibiting scoping derived atoms outside of the atom creator pattern.
Today, the docs don't even clearly state that base atoms aren't implicitly scoped when their derived atoms are scoped.
One final thing to note, to a laymen, creator atoms (such as atomWithQuery, atomeEffect) are just special atoms. They shouldn't be concerned with their implementation when deciding whether they can scope atoms.
The utility I have proposed is really only intended to be used by library authors, who would understand this limitation. So I don't really consider it a problem.
Furthermore, I think Typescript should enforce only scopable atoms and base atoms to be allowed to be scoped. Non-scopable derived atoms should be prohibited.

useAtom(derivedAtom1) and useAtom(derivedAtom2) can occur in any order

This order dependence seems like an implementation detail. If derivedAtom1 is scoped, then baseAtom is scoped. This is regardless of whether useAtom(derivedAtom1) is called first, useAtom(derivedAtom2) is called first, or useAtom(derivedAtom1) is not ever called. In all cases, the ancestor ScopeProvider has implicitly declared that BaseAtom is scoped.  Also, consider ComponentA, ComponentB under ScopeProvider, ComponentA may have order [derivedAtom1, derivedAtom2] and ComponentB may have [derivedAtom2 derivedAtom1]. Order should not determine scope.
Moreover derivedAtom1 can conditionally depend on baseAtom. Without running derivedAtom1, jotai-scope is unable to determine whether baseAtom1 is a dependency or not.
New Idea 💡
Thinking more on this, I would like to amend my previous ask. I now think scope should apply to dependency trees for the case of derived atoms.
const baseAtom = atom('some value')
const derivedAtom1 = atom((get) => 'derived1 ' + get(baseAtom1))
const derivedAtom2 = atom((get) => 'derived2 ' + get(baseAtom1))

function Component() {
  // deriveAtom1 is scoped, its baseAtom is scoped
  useAtom(derivedAtom1)

  // deriveAtom2 is NOT scoped, its baseAtom is NOT scoped
  useAtom(derivedAtom2)

  // baseAtom is NOT directly scoped
  useAtom(baseAtom)

  return null
}
function App() {
  return (
    <ScopeProvider atoms={[derivedAtom1]} />
      <Component />
    </ScopeProvider>
  )
}

I believe this change will make understanding what is scoped and what is not more easily understandable.

Scoped Writable Atoms
const baseAtom = atom('some value')
const derivedAtom = atom((get) => 'derived ' + get(baseAtom1))
const writableAtom = atom(null, (get, set, update) => set(baseAtom, update))

function Component() {
  // deriveAtom1 is scoped, its baseAtom is scoped
  useAtomValue(derivedAtom1)

  // writableAtom is scoped, the baseAtom it writes to is scoped
  // this is the same baseAtom copy used by derivedAtom1
  useSetAtom(writableAtom)

  // baseAtom is NOT directly scoped, baseAtom is NOT scoped
  useAtom(baseAtom)

  return null
}
function App() {
  return (
    <ScopeProvider atoms={[derivedAtom1, writableAtom]} />
      <Component />
    </ScopeProvider>
  )
}

Revisiting Scoping Base Atoms
const baseAtom = atom('base')
const anotherAtom = atom('another')
const derivedAtom = atom((get) => 'derived ' + [get(baseAtom1), get(baseAtom1)])

function Component() {
  // derivedAtom reads the scoped baseAtom and the NOT-scoped anotherAtom
  useAtom(derivedAtom) // 'derived base,another'

  return null
}
function App() {
  return (
    <ScopeProvider atoms={[baseAtom]} />
      <Component />
    </ScopeProvider>
  )
}

This order dependence seems like an implementation detail. If derivedAtom1 is scoped, then baseAtom is scoped. This is regardless of whether useAtom(derivedAtom1) is called first, useAtom(derivedAtom2) is called first, or useAtom(derivedAtom1) is not ever called.

I know what you want, but unfortunately, the dependency computation happens when you call useAtom, not ScopeProvider, because it is dynamic (jotai even supports calling if/else inside atom.read!). That's how jotai is implemented, nothing could be statically analyzed until the atom is used (it also avoids unnecessary computations).
Apart from the explicitly scoped atoms, ScopeProvider knows nothing about the implicit dependency. That's the fundamental constraint, I think it may be impossible to solve (think of an if/else inside atom.read). In our mind, we know clearly which atom an atom depends on when wrapping with ScopeProvider, but JavaScript does not know it until we call it.

I changed the proposal after thinking of on this more.
Dod you read my current porposal? I don't think this is an issue anymore.

OK, then let's go back to the other setting:

baseAtom -> derivedAtom1
baseAtom -> derivedAtom2
Suppose both derivedAtom1 and derivedAtom2 are scoped, then when we call useAtom(derivedAtom1) and useAtom(derivedAtom2), are they accessing the same baseAtom or different copies?

So the rule would be:
If a derived atom is scoped, then we implicitly creates a copy for all of its dependency atoms. Those copies of dependencies cannot be accessed at all.
Consequently, if both a derived atom and one of its dependency atom are scoped, then each one are independent copies of the whole dependency tree.
That rule is sound, but it introduces breaking change. Consider this case:
baseAtom -> derivedAtom -> derivedDerivedAtom
If base is scoped, then in current implementation, when accessing derived and derivedDerived, both will access the scoped one.
However, if base and derived are both scoped, they are two copies, we don't know which copy derivedDerived should access, so the only sound rule would be —— derivedDerived should access the global one.
That is a breaking change, so we may need to implement an additional variant of ScopeProvider, if developers want to scope an atom, no matter it is primitive or derived, they should scope the one they want to use, and all the scoped atoms are independent and have their own state values.

Clarifying a few points. Do you still think the idea is sound?
If a derived atom is scoped, then we implicitly create emplace a copy for all of its dependency atoms for that scope by storing the copies in the scope's WeakSet using origAtom as key.
Consequently, if both a derived atom and one of its dependency atom are scoped, then each one are independent copies of the whole dependency tree would share the copies of the dependency tree.

That rule is sound
Given these clarifications, do you still think this rule is sound?

but it introduces breaking change.
I don't think this is a breaking change.

In new implementation, both will access the scoped one. I believe this would be a natural extension of current implementation.

Hmmm, so that would be

baseAtom -> derivedAtom1
baseAtom -> derivedAtom2

If baseAtom is scoped, then both derivedAtom should access the copy (to be backward compatible)
If derivedAtom1 is scoped, then derivedAtom1 should access the copy, derivedAtom2 should access the global one.
Then, let's talk about implementation, from derivedAtom2's perspective, it does not know if baseAtom is scoped or not, so it would check if the WeakMap contains baseAtom's original atom as key, right?
Then it falls back to the order problem, if derivedAtom1 is scoped and

if derivedAtom1 is used first, baseAtom exists in the WeakMap
if derivedAtom2 is used first, baseAtom does not exist in the WeakMap

How do we guarantee derivedAtom2 accesses the right baseAtom here?

❌ baseAtom is not scoped.
✅ derivedAtom1 is scoped.
❌ derivedAtom2 is not scoped.
Since derivedAtom2 is not scoped, it must use the un-scoped version of baseAtom.
There is no order dependence issue.

LGTM, let me give it a try.

@dmaskasky You can play with this one for now.
npm i https://pkg.csb.dev/jotaijs/jotai-scope/commit/e858a7ef/jotai-scope

Thank you. I'll take a look on Tuesday.

Another issue:
Suppose

base -> derived1
base -> derived2
derived1 -> final
derived2 -> final

Parent Scope: derived1 is scoped
Nested Scope: derived2 is scoped
Then, in nested scope

which base atom will derived1 access?
which base atom will final access?

I might not understand what you are asking, but here's trying.
Below is the configuration I think you are describing.
Some interesting things to note:

useHydrateAtoms will hydrate the baseAtom associated to derivedAtom1 / derivedAtom2.
derivedAtom1 and derivedAtom2 are in different scopes, so they will use different versions of baseAtom.
finalAtom is not scoped so it will use whatever derivedAtom1 and der

const baseAtom = atom('base')
const derivedAtom1 = atom((get) => {
  return `derived1 ${get(baseAtom)}`
}, (get, set, value) => {
  // sets the baseAtom scoped to derivedAtom1
  set(baseAtom, value)
})
const derivedAtom2 = atom((get) => {
  return `derived2 ${get(baseAtom)}`
}, (get, set, value) => {
  // sets the baseAtom scoped to derivedAtom2
  set(baseAtom, value)
})
const final = atom((get) => {
  const derived1 = get(derivedAtom1)
  const derived2 = get(derivedAtom2)
  return `final ${derived1} ${derived2}`
})
function ParentComponent() {
  useHydrateAtoms([[derivedAtom1, 'parent']])

  useAtom(baseAtom) // 'base'

  // 'derived1 parent
  useAtom(derivedAtom1)

  // 'derived2 base
  useAtom(derivedAtom2)

  // 'final derived1 parent derived2 base'
  useAtom(finalAtom)

  ...
}

function NestedComponent() {
  useHydrateAtoms([[derivedAtom2, 'parent']])

  useAtom(baseAtom) // 'base'

  // 'derived1 parent'
  useAtom(derivedAtom1)

  // 'derived2 nested'
  useAtom(derivedAtom2)

  // 'final derived1 parent derived2 nested'
  useAtom(finalAtom)
}

function App() {
  return (
    <ScopeProvider
      atoms={[derivedAtom1]}
    >
      <ParentComponent />
      <ScopeProvider
        atoms={[derivedAtom2]}
      >
        <NestedComponent />
      </ScopeProvider>
    </ScopeProvider>
  )
}

OK, yes, I mean to ask which base atom that derived1/derived2 will access in the nested scope.
"Derived1 accesses the scoped one in parent" is intuitive, but needs some refactor.
Another question, in the same setting, if derived1 is scoped in parent and base is scoped in nested, which base atom will derived1 access in nested?

Another question, in the same setting, if derived1 is scoped in parent and base is scoped in nested, which base atom will derived1 access in nested?

I don't know.
One way we

Another question, in the same setting, if derived1 is scoped in parent and base is scoped in nested, which base atom will derived1 access in nested?

Good question! Which do you think is more predictable?
Option 1: Since the developer has explicitly set the baseAtom to be scoped. This is not the same as the implicit scoping of the baseAtom by derived1. Explicit scoping should always take higher priority. Therefore, everything that uses baseAtom in the scope will now use the scoped base atom.
Option 2: It's interesting to think of scopes as closures. This would be familiar to developers but would still take some getting used to and would be a departure from current behavior. It would also require all atoms that share baseAtom be passed to the ScopeProvider. I'm not confident the ergonomics would be acceptable with this behavior. Furthermore, it disallows mixing scoped and unscoped atoms in the same derived atom.

The difference seems subjective at face value but has deeper implications that become obvious once you analyze the patterns and behaviors it implies.
Personally, I think we should go with Option 1. It is non-breaking and the most simplistic of the two.
I don't think Option 2 will work nor would it be worth exposing additional API to allow for opt-in.

Take previous rule in mind (if baseAtom is not scoped in nested, then derived1 goes to parent scope), we need to first search if derived1 is scoped in the parent, then search its dependencies.
That behavior implies a rule: Direct scope has higher priority than nested scope (Can you make a clearer description? I don't know how to phrase). So come back to this example, when using derived1, derived1's scope is first resolved, and we find one, then we use parent scope's base atom.
So, if baseAtom is used, it will access nested. If derived1 is user, it will access parent's. That's different from Option 1.
Apart from that, I am not sure if that behavior is easy to implement. Needs some investigation.

we need to first search if derived1 is scoped in the parent, then search its dependencies.

I think this can be done in O(1). You just first check if the atom dependency is explicitly scoped otherwise use the atom dependency associated to the atom's scope.

Can you make a clearer description?

The closest scoped atom is the winner. ☺
I don't know how to phrase). So come back to this example, when using derived1, derived1's scope is first resolved, and we find one, then we use parent scope's base atom.

So, if baseAtom is used, it will access nested. If derived1 is used, it will access parent's. That's different from Option 1.

I don't see how this is different from Option 1. If derived internally uses base  (call it internal base), and if derived is explicitly scoped and base is not, then internal base is implicitly scoped.
Then if in nested base is scoped, the closest store wins so nested base is closer than internal base. The internal base atom is shadowed by nested base.
This wouldn't be computationaly expensive  to determine this.


Panel is hiding when last terminal closes

Issue Type: Bug

Make visible the panel with Terminal/Problems/Output/Debug console tabs
Activate Terminal tab and close the newly created terminal
Panel hides

While this behavior on manual terminal closing is something I can cope with, the same happens when a task is run with the option to close terminal after execution is set. And this is much more inconvenient
Tested with absolutely clean fresh install; no options to disable this behavior was found.
VS Code version: Code 1.60.0 (e7d7e9a9348e6a8cc8c03f877d39cb72e5dfb1ff, 2021-09-01T10:41:52.311Z)
OS version: Windows_NT x64 6.1.7601
Restricted Mode: No

Closing as designed, you can change the task to stay open and that's the default I believe.


No creation of 7day_100k after upgrade to 0.6.1

Hi,
I've updated my iobroker adapter, but it does not create new objects. (upload or restart of adapter w/o improvements). Within a new instance, object is created properly.
BR

cannot reproduce


Cannot access a closed Stream when writing byte array

I have the below class which is on the lines of the code given in examples to serialize FAsterKV keys. As you can see I am utilizing a utility class to serialize the object to byte array. I verified that that method doesn't throw exceptions. But the writer.Write is throwing exception given below:
    public class StoreKeySerializer : BinaryObjectSerializer<StoreKey>
    {
        public override void Serialize(ref StoreKey key)
        {
            writer.Write(FasterUtilities.ObjectToByteArray(key.ConfKey));
        }

        public override void Deserialize(ref StoreKey key)
        {
            key.ConfKey = (Guid)FasterUtilities.ByteArrayToObject(reader.ReadAllBytes());
        }
    }

System.ObjectDisposedException: Cannot access a closed Stream.
   at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count)

The issue might be with ReadAllBytes. Remember that the method is supposed to deserialize only part of the steam. You cannot extract all bytes from the steam. For variable length objects, you need to write out the number of bytes into the stream so you can read the right number back during deserialization.


CookiesProvider not being correctly suggested to import from next-client-cookies/server

I'm working on a reproduction on another issue I'm going to open soon. I wanted to import CookiesProvider, but Intellisense won't suggest the correct import source.

Same issue with useCookies()

The bug I mentioned in the first comment turns out to be related to using path-based cookies, which doesn't work on soft navigations (it only captures the cookies that match the path of the last hard refresh). So while this is not the fault of this library, perhaps we should disable setting the path entirely and always default to '/'


Fix only block elements in partials

Trello card
This is to prepare for linking all partials to GitHub on Integration.
That would need to wrap each partial in a div which would create invalid HTML in these cases and might lead to unexpected browser behaviour.
Coincidentally, fixing this also leads to better code, making sure not to break up any elements which logically belong together (table head belongs to the rest of the table, list item belongs to the whole list, etc).
Expected changes
None

I am not totally sure we need e976e0fc402c716a1f35f0a974812e2f5c597469 if we insert ul > li as described in this Trello card. Would you say we have now better HTML?

It looks good to me @selfthinker. Feel free to merge if you think that e976e0fc402c716a1f35f0a974812e2f5c597469 moves us to a better place.

As discussed, although my changes for the list items don't result in much better code, I think it's a little bit better than before and makes sense. It's keeping all list items together in one view, although not the list item content.
I have run the regression and other tests after every change before pushing.

Great work @selfthinker!
LGTM


Private package sources not picked up

We use private nuget package sources, we have a local nuget.config file with those nuget repo locations in, but when I search for nuget packages in the nuget gallery extension it doesnt return anything, it looks like its not looking in those private package sources, do this tool support alternative package sources?

Private package sources are not supported yet. I will add it in the next release.

added feature request #10

Private package sources are not supported yet. I will add it in the next release.

Great, thanks when is the next planned release?

Private package sources are not supported yet. I will add it in the next release.

Great, thanks when is the next planned release?

It's hard to say, but I will try to add this feature within two weeks.


fix: hide binary in tree

@soofstad When there are no visible items, can the chevron be removed? It now indicates that the item is expandable when in reality there is nothing to expand.

The original fix included that @roar-larsen, as can be seen in the screenshot in that PR.
Was this not added back in the "second round" @henrikbossart ?

I thought I fixed that? 🤔

oops

https://github.com/equinor/dm-core-packages/pull/923


Add ONNX export support for ModernBERT

What does this PR do?

This PR adds ONNX export support for ModernBERT, added to transformers in https://github.com/huggingface/transformers/pull/35158. It uses torch.compile decorators for certain functions, which is not supported in torch.onnx.export (with dynamo=False), so I introduced a model loader context manager to disable this when the model is being loaded. Note that this cannot happen in a model patcher since by then, the model class has already been created.
Before submitting

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

Who can review?

Now works with sentence-transformers & transformers models 👍

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


Convert sigh to TypeScript

I've just guessed what the Windows sigh.cmd changes need to be.

@lindner: it's being output into the standard build dir, not tools/build.
@shans: ok, but I'll add the timestamp check first.


Adding UNIRON

Register of União das Escolas Superiores de Rondônia - Uniron
Institution/School Name
União das Escolas Superiores de Rondônia - Uniron
Instiution/School Website
https://uniron.edu.br
Email Users
Please place an x between the square brackets if yes
[x] Students
[x] Academic/Teaching Staff
[x] Other/Support Staff
Alumni
Education Levels
Please place an x between the square brackets if yes
[x] Post-graduate research
[x] Graduate School
College (University) or Undergraduate School or equivalent
Community College or equivalent
High School or equivalent
Elementary School or equivalent

@Paulo-UNIRON uniron.txt I am sorry, I have to close the request without merging, because you made a mistake in a request and did not specify any filepath. Please ensure that you are familiar with this repository rules located at the bottom of this page and make a new correct request. Thank you for your understanding!


Solve Day 12

Problem description: https://adventofcode.com/2023/day/12

Part 1
Ok, now this is a problem which I've never seen before. Let's say we brute-force the problem checking for every available combination of values. We have to read each line (n), then on each character (n), we'd need to evaluate every other character in the row (n). So, we're in that O(n^3) complexity area that means that we're going to have a bad time dealing with the provided input data.
So, what can we do instead? Well, let's invert the problem and see if that helps. Instead of looking for positions to put '#' symbols, what if we were actually looking for positions to put '.' symbols? Well, our cue that tells us to look for a dot is actually the "," in the 'contiguous damaged springs' list (i.e. the commas in the 1, 1, 3). Does this information help? Possibly...
What else is key to the problem? Well, each spring with a '?' can have one of three states. It can be either damaged, functional, or either. There's probably a way for us to figure out if it's absolutely damaged or functional, but if it falls into that 'either' category, what do we do? Well, we would need to look at a larger section of data than just a single element... We'd need to look at a substring of some sort.
Ok, so how about this, what if we came up with some kind of method to split each row into a set of overlapping substrings?


#2877 add: doc output to obtain endpoint & apiToken

Fixes #2877

Preview

Closing this draft in favour of #3159


Customizer default style and reload after updating not working in theme embed.

Hi, I am using kirki 2.0.3 but customizer default style and function not working in theme embed mode. But working fine as plugin. Could you please look after it ?

Well got the solution at last ...
function imax_customizer_config( $args ) {

	$args['url_path'] = get_template_directory_uri() . '/inc/kirki/';
	return $args;

}
add_filter( 'kirki/config', 'imax_customizer_config' );

thanks for the awesome toolkit

@developerzinan I just saw this ticket now...
I'm glad you managed to figure this one out!


Not clear about the sources

I think this may be a lot of redundant work. I'm just not clear about the sources, this is a large collection of dictionaries. I was looking for something like this. This project seems to source from https://extensions.openoffice.org/en/project/polish-dictionary-pack. But, those were last edited in 08'.
LibreOffice replaces those dictionaries. It's another large repository of hunspell. Makes more sense to just that -- that's what I'm doing for my project. It seems like you have similar aims. Would make more sense just to nuke this and pull in from it.
Maybe there is an advantage, be glad to know it.

This sounds pretty dickish... This is free open source software: you can use it or not.
Anything I can help with?