Adaptive scheduling of interventions

We need a way to schedule interventions adaptively based on the detection time in the simulation, and possible further criteria. Ideally, we also want to be able to adjust the intervention strength.

@smodee @ConradKunadu While thinking about the design for the wrapper for counterfactual simulations, I inevitably also thought about the design of the adaptive interventions. Below is a potential approach I came up with, I wonder what you think about pros and cons, and maybe alternative options. My intuition is that it would take a bit longer in the original implementation than ad-hoc changes, but could make the actual specification of simulations cleaner and also faster.
Potential approach:

create a new module called events, which is almost identical to the interventions module - however instead of changing parameters of the simulation, event objects write entries into a newly added dictionary called events in the Sim object.

The keys of the events dictionary indicate points  in time, and the values are (lists of) strings that represent events, for example "start_social_distancing". One special event in our case will be detection, since we decided to not model detection in pathosim itself. Rather, the detection event will be externally specified, and we can use that to scan over a range of potential detection times.
We can create subclasses that represent certain kinds of events, e.g. a subclass class start_social_distancing(Event) that inherits from the Event class
These subclasses have specific arguments and behavior to represent specific events. For example, the __init__ method of start_social_distancing may accept arguments like time_after_detection but maybe also something like min_deaths. Then, in the apply method (that is called on each time step), we check whether the criteria are fulfilled, and if yes, we add a corresponding entry to the events dictionary in the simulation object.
the criteria for an event may even depend on other  previous events, e.g. we could have an event subclass called lockdown_fatique which depends on how many days ago the start_social_distancing event is (and maybe further criteria).

modify the intervention classes like change_beta or clip_edges by adding an attribute events that can be specified instead of days:

The events attribute is just an array of strings which represent keys of certain events, e.g. events = ["start_social_distancing", "lockdown_fatique"]. As before, the corresponding intervention details are specified in the attribute changes. For example, changes=[0.5,0.8] would mean that on the event "start_social_distancing", beta is reduced to 50%, and on the event "lockdown_fatique", the reduction becomes weaker (only 80%, because people start ignoring the rules).
The only further adaption needed is to modify the apply() method of the intervention such that it also checks the sim.events dictionary for the key representing the current time sim.t. Normally, apply only checks whether the current day of the simulation is found in days. Now, if instead of days, the argument events was specified for the intervention, it should check for each element of events if it is contained sim.events[sim.t]. If yes, it will apply the corresponding change from changes.

Together, these changes would allow us to specify certain kinds of events + which interventions are triggered on which events. Using this approach, we could

easily scan over a range of detection times: just specify the time of the "detection" event for a given simulation when initializing the events dictionary in the sim. For example events = {42: "detection"} - the rest will adapt automatically
account for varying delays of intervention implementation after detection
also account for varying strengths of interventions based on additional parameters of the simulation
in the long term (not for this project), this could be nicely coupled with the simulation of early detection systems that Conrad already worked on a lot, since these could write the "detection" event into the events dictionary themselves. One could also account for different "kinds" of detection depending on the information provided (e.g. wastewater vs. clinical sampling)

@smodee @ConradKunadu While thinking about the design for the wrapper for counterfactual simulations, I inevitably also thought about the design of the adaptive interventions. Below is a potential approach I came up with, I wonder what you think about pros and cons, and maybe alternative options. My intuition is that it would take a bit longer in the original implementation than ad-hoc changes, but could make the actual specification of simulations cleaner and also faster.
Potential approach:

create a new module called events, which is almost identical to the interventions module - however instead of changing parameters of the simulation, event objects write entries into a newly added dictionary called events in the Sim object.

The keys of the events dictionary indicate points  in time, and the values are (lists of) strings that represent events, for example "start_social_distancing". One special event in our case will be detection, since we decided to not model detection in pathosim itself. Rather, the detection event will be externally specified, and we can use that to scan over a range of potential detection times.
We can create subclasses that represent certain kinds of events, e.g. a subclass class start_social_distancing(Event) that inherits from the Event class
These subclasses have specific arguments and behavior to represent specific events. For example, the __init__ method of start_social_distancing may accept arguments like time_after_detection but maybe also something like min_deaths. Then, in the apply method (that is called on each time step), we check whether the criteria are fulfilled, and if yes, we add a corresponding entry to the events dictionary in the simulation object.
the criteria for an event may even depend on other  previous events, e.g. we could have an event subclass called lockdown_fatique which depends on how many days ago the start_social_distancing event is (and maybe further criteria).

modify the intervention classes like change_beta or clip_edges by adding an attribute events that can be specified instead of days:

The events attribute is just an array of strings which represent keys of certain events, e.g. events = ["start_social_distancing", "lockdown_fatique"]. As before, the corresponding intervention details are specified in the attribute changes. For example, changes=[0.5,0.8] would mean that on the event "start_social_distancing", beta is reduced to 50%, and on the event "lockdown_fatique", the reduction becomes weaker (only 80%, because people start ignoring the rules).
The only further adaption needed is to modify the apply() method of the intervention such that it also checks the sim.events dictionary for the key representing the current time sim.t. Normally, apply only checks whether the current day of the simulation is found in days. Now, if instead of days, the argument events was specified for the intervention, it should check for each element of events if it is contained sim.events[sim.t]. If yes, it will apply the corresponding change from changes.

Together, these changes would allow us to specify certain kinds of events + which interventions are triggered on which events. Using this approach, we could

easily scan over a range of detection times: just specify the time of the "detection" event for a given simulation when initializing the events dictionary in the sim. For example events = {42: "detection"} - the rest will adapt automatically
account for varying delays of intervention implementation after detection
also account for varying strengths of interventions based on additional parameters of the simulation
in the long term (not for this project), this could be nicely coupled with the simulation of early detection systems that Conrad already worked on a lot, since these could write the "detection" event into the events dictionary themselves. One could also account for different "kinds" of detection depending on the information provided (e.g. wastewater vs. clinical sampling)

+1 to this, really like it. I'm interested in whether 'event keys' will refer to specific interventions that we then bucket, or whether event keys can be buckets of interventions themselves. The latter might make intervention simpler, but maybe it's too difficult to get reliable data on the change in betas of buckets of interventions accurately. Plus we ideally want to see interaction events.
In general I'm still a bit unsure about whether we truly can capture the key ways in which interventions have heterogenous effects on transmission not just captured by changing betas even over time. But yeah I think we're decided on limiting it to that for feasibility so this seems good

The intervention bucket has now been implemented and works based on a dictionary of events in the sim object. The events module discussed here has not been finished yet, but one can test the intervention bucket by manually inputting start and stop events into the events dictionary. The actual effects of the included interventions have been specified in json files (data/effects_npis.json and data/effects_therapeutics.json). So far it is limited to acting on beta, but one could still consider other ways to let the interventions affect the network, e.g. by clipping edges.
PS. Sorry for the mess in the master branch, accidentally pushed to that first but reverted it when I realized


Analysis services Mgmt 0.1.0

Current coverage is 57.31% (diff: 100%)

Merging #935 into master will increase coverage by <.01%

@@             master       #935   diff @@
==========================================
  Files          1758       1760     +2
  Lines         48752      48754     +2
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits          27940      27942     +2
  Misses        20812      20812
  Partials          0          0

Powered by Codecov. Last update 69da980...2b7b484


Complete two simple tasks.

Hi,
We're new to ReactiveCocoa. Please review and give some feedback.
Thanks.


Confused by the Usage

I am new to hass, and I am confused by the usage since I did not see where I can send those message
{   "message": "",   "data": {     "mode": "MODE"   } }
Could you be more specific?
Thank you!

Also, I did not find divoom under Developer Tools/Services

Tbh, I can't remember, why I documented that example in JSON format, but you can find copy&paste ready examples in the linked example file.
https://github.com/d03n3rfr1tz3/hass-divoom/blob/main/devices/pixoo.txt
As you already found out, you have to go to Developer Tools/Services and choose the service "divoom_pixoo". Of course you can do the same in an automation or script, but for testing you can use the Developer Tools first. If "divoom_pixoo" cannot be found in the Services, it is not configured or there was an error on startup. Check your HASS Logs and you probably will find an error and hopefully it is helpful enough to resolve the issue.
If the service is there, you can configure it using the UI mode or YAML mode. In the UI mode, it is enough to fill out the data part, but because the message is required, you should fill it with a space or something like that.

In the YAML mode, you can copy the examples from above into the data-part of the service. It should look like this.

And thats it. Hitting the "Run the Service" button should lead to something visible on your Pixoo, if everything is configured correctly. After that, the harder part comes: creating a lot of automations for everything that comes to your mind 😃

Thank you so much for the detailed explanation! I really appreciate it! Hope you have a great day!

Also, do you by any chance know how to pair pixoo in the home assistant OS? I could not find the place to type the command sudo rfcomm connect hci0 my:ma:c_:ad:dr:es

I'm not sure how its done with the HA OS, but on the supervisor installation you basically just connect via SSH and then you can configure the bluetooth interface and also connect, which only needs to be done manually once for pairing and testing. Maybe there is also a way to connect via SSH or a terminal and use the commands stated in the readme and hopefully they work the same way.

Thank you so much!


citus-cdc: data synchronization will be slow when creating multiple sources

test scripts can be found in https://github.com/risingwavelabs/risingwave/pull/16189
When testing locally, it takes some times to see data in citus_all_types.
When testing in buildkite, although citus_all_types contains data during the data_check operation, the rows count is 2 instead of the expected 3.
https://buildkite.com/risingwavelabs/integration-tests/builds/734#018ebc7d-fd5f-42cb-bf94-331ed0c029d4

When testing locally, it takes some times to see data in citus_all_types.

Due to the conflict of JMX metric bean:
2024-04-08T02:06:36.109246969Z  WARN ThreadId(67) risingwave_connector_node: Unable to register metrics as an old set with the same name exists, retrying in PT5S (attempt 1 out of 12) thread="debezium-postgresconnector-RW_CDC_1-change-event-source-coordinator" class="io.debezium.pipeline.JmxUtils"
2024-04-08T02:06:36.208603076Z ERROR ThreadId(68) risingwave_connector_node: Failed to register metrics MBean, metrics will not be available thread="debezium-postgresconnector-RW_CDC_0-change-event-source-coordinator" class="io.debezium.pipeline.JmxUtils"

@StrikeW  Is the issue resolved?


Added docs on block grid!

This fixes #10349

[x] Add docs
[x] Add codepen example

@kball here is codepen link to test => https://codepen.io/IamManchanda/pen/PjBLxE?editors=1000


JupyterLab environment

This PR extends the Multi Stage Build with a JupyterLab environment so that users can work in a familiar 'Google Colab' like context. We used this both locally and remotely on an expensive VM for our Reinforcement Learning project at the University of Leuven.
This can be a drop-in replacement for the Google Colab users and works free of charge.

Hi @yarncraft, there are still some unresolved points.. so I am putting this PR into review mode with requested changes. We have not heard from you in a while. Just wondering if you intend to finish those final bits?

Thanks for pinging @lanctot, totally forgot this was on my TODO list, I shall make new PR with the requested Dockerfiles.

@lanctot, feel free to review and merge my new PR #446

@lanctot, feel free to review and merge my new PR #446

Thanks @yarncraft, I'm a bit back-logged with other PRs I'm currently pulling in, so I will assign it to the person who oversaw the last one @finbarrtimbers. Thanks!


Builders: BlockChain factory

builders should be lazy loaded in the factory so we don't load all builders at once, it should be like apps factory

verified


Main

Added My Profile

This is primarily used to populate the CNCF website and isn't for general consumption/contribution. Sorry!


Flickering with border_blur

Hey there!
First of all thanks for this awesome window manager, love it (:.
I have 3 small problems, two concerning flickering and one about window alignment.

When using transparency + blur, there is a flickering every time I change focus to or away from the window with blur:

This is a weird one. So I'm using this app called Dynamic Wallpaper Engine. Every time I plug in my external monitor the transparency of my windows is gone (only the ones that have blur). When I move my mouse on the same display the transparency comes back for a second though. The workaround right now is to restart the Dynamic Wallpaper app, then everything runs perfectly fine. Funnily enough the problem is gone when I'm recording my desktop so I had to record with my phone:

https://user-images.githubusercontent.com/65814943/225752379-f634e313-9569-4c5f-865e-778d9487206f.mov

Whenever I use my external monitor the windows are not aligned properly on the bottom part (padding is ignored and it is even cut off a bit). Moving them with the mouse action resolves the issue.  I experimented a little bit and here are my findings

It seems not "the blur effect is gone". Dynamic Wallpaper Engine automatically sets a static snapshot as the system wallpaper, if you use another dynamic wallpaper app you will find actually all videos behind the blur layer fail to render (same case for something like youtube video).
Sketchybar also has that problem @FelixKratz
Any video with opacity lower than 1 is not affected, so I added the following line in my configuration:

yabai -m rule --add app="^Dynamic Wallpaper$" opacity=0.99

(works for me, but I believe there are better solutions

There is the same number one issue, the blurring effect is good, but the flickering of the switch is frustrating😭
I have no idea how to avoid this.

Borders have been removed in the latest release (v6.0.0) (#1889) because of multiple issues present in both Ventura and Sonoma.


Guarantees on element ID order

Hello,
What guarantees do we have on the IDs assigned to joints, bodies, geoms, etc? I made a couple searches in the docs with no clear answer.
From simple tests it appears to be depth first. Am I correct in making the following assumptions?:
I assume the ID of a body guaranteed to be greater than its parent body. Similarly then, a joint of a body would be guaranteed to have greater ID than any of the joints of its parent body. Lastly, I assume the IDs of a kinematic tree are contiguous with respect to other kinematic trees in the scene (i.e. if there are two separate kinematic trees in the scene, their IDs will be in two uninterrupted groups for any one element type).
Thanks!

The easiest way to explain it is that "element IDs are in the same order as the elements in the XML file".


API for transcript_to_field and transcript_to_usize

We need an API to generate Field elements from the Transcript.
We have this methods:

pub fn transcript_to_field(transcript: &mut Transcript) -> FE

fn transcript_to_usize(transcript: &mut Transcript) -> usize

It needs to implement the following secure algorithm:
https://datatracker.ietf.org/doc/id/draft-irtf-cfrg-hash-to-curve-06.html#name-hashing-to-a-finite-field
We may also need to check how to make sure the function is constant time in Rust

Currently this is implemented under `IsStarkTranscript, but I think it could be just done for all transcripts

Superseeded by #789


component is rendered twice

Hello, it's a very good idea to write a lib for slots, in such a fairly simple implementation.
I found a problem, the component passed by the child, and then into the slot - is rendered twice.
It would be great if this issue is resolved for the lib.
I don’t really want to give up FC and I also like slots. As always, two chairs...)
const Fields = () => {
    useEffect(()=>{
      // triggers twice
      console.log('ok');
    }, []);

  return (<></>)
}

const Page = () => (
  <Modal>
    // first render
    <Fields/>
  </Modal>
)

const Modal:FC = ({ children }) => (
  <Form>
    <SlotFormBody>
      { children }
    </SlotFormBody>

    <SlotFormBottom>
      <Button />
    </SlotFormBottom>
  </Form>
)

 const SlotFormBody = createSlot();
 const SlotFormBottom = createSlot();

const Form:FC = ({ children }) => (
  <Form>
    <>
      // second render
      <SlotFormBody.Renderer childs={ children } />
      <SlotFormBottom.Renderer childs={ children } />
    </>
  </Form>
)

@lowrider-fn Thank you for reporting this issue!
Unfortunatelly I am not sure your example can be used as is without reconstructing some not mentioned details.
Don't you mind creating an example based on this codesandbox? https://codesandbox.io/s/keen-jackson-vo2ix?file=/src/index.js

sorry, all fine! im bad, thanx for fast reaction)

@lowrider-fn  Sure, welcome)


Keyboard opens and shuts itself on focusing Textformfield.

Hi, I am facing this strange issue. I have 2 different forms and they are almost same(functionality is same). One works fine but in other form, if any of TextformField is focused, keyboard opens and shuts itself. Both forms are called from different screen.
I am calling form(in which i am facing issue) using below method -
SingleChildScrollView(
child: GestureDetector(
onTap: (){
Navigator.push(
context,
MaterialPageRoute(builder: (context) => FormEnvRegularToilet()),
);
},
child: Container(
height: 70.0,
color: Color(0xffff7C10),
child: ListTile(
trailing: Image.asset('assets/forward.png'),
title: Text('Drop Regular Portable Toilet',style: TextStyle(color: Colors.white
, fontSize: 20.0,),textAlign: TextAlign.start,),
),
),
),
),
I tried to call the other form(in which keyboard is okay) from same function, then again this issue arises. I do not understand is whether issue is inside the form or is it in function that is calling form function. I tries to add static in "key" value too. It did not work. All controllers are different for each field.

If you could provide the output from flutter doctor and a small complete app that demos the problem (many developers use https://gist.github.com to share code like this), we'll be happy to look into it.
This sounds like a problem that was fixed by https://github.com/flutter/flutter/pull/27365; the fix has only recently landed in a stable release.

Thanks for reference. I found out the issue. The class which i used to call form had following code -
final page = ModalRoute.of(context);
page.didPush().then((x) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: Colors.red,
statusBarColor: Colors.red,
));
});
This caused issue. I removed this from my class.


How to compile LocalAI with stablediffusion on Docker container

LocalAI version:
v1.13.0 commit ffaf3b1d362cc4d0045e1ed60bbcf0481d21f8ef
Describe the bug
I changed make build to make GO_TAGS=stablediffusion build in Dockerfile and during the build process, I can see in the logs that the github.com/mudler/go-stable-diffusion repository gets cloned but whenever I make an API call to the /v1/images/generations endpoint, I always get this error:
This version of LocalAI was built without the stablediffusion tag

directory content:
root@ai:/home/ai/LocalAI/models/stablediffusion_assets# du -ahd1
95M	./AutoencoderKL-fp16.bin
60K	./UNetModel-256-MHA-fp16.param
470M	./FrozenCLIPEmbedder-fp32.onnx
190M	./AutoencoderKL-fp32.onnx
1.7G	./UNetModel-MHA-fp16.bin
104K	./UNetModel-fp16.param
36K	./FrozenCLIPEmbedder-fp16.param
66M	./AutoencoderKL-encoder-512-512-fp16.bin
20K	./AutoencoderKL-512-fp16-opt.param
236M	./FrozenCLIPEmbedder-fp16.bin
76K	./UNetModel-512-MHA-fp16-opt.param
56K	./UNetModel-512-MHA-fp16.param
16K	./AutoencoderKL-512-fp16.param
20K	./AutoencoderKL-256-fp16-opt.param
16K	./AutoencoderKL-256-fp16.param
1.7G	./UNetModel-fp16.onnx
76K	./UNetModel-256-MHA-fp16-opt.param

https://github.com/go-skynet/LocalAI#build-with-image-generation-support
but i donj't know how to run this command.

I think you have to change BUILD_TYPE in .env but i'm not sure to what.

I just tried what you did originally and i canj't connect:

$ curl http://localhost:9220/v1/models
curl: (7) Failed to connect to localhost port 9220 after 0 ms: Couldn't connect to server

I think you have to change BUILD_TYPE in .env but i'm not sure to what.

I tried with BUILD_TYPE=openblas before, no luck either.

This is a lack in our docs. Did you tried by setting GO_TAGS=stablediffusion in the .env file?

where are the log files?

i still get {"error":{"code":500,"message":"This version of LocalAI was built without the stablediffusion tag","type":""}}
after add GO_TAGS to .env

i still get {"error":{"code":500,"message":"This version of LocalAI was built without the stablediffusion tag","type":""}}
after add GO_TAGS to .env

How are you running LocalAI?
Do you set also REBUILD=false by any chance? default binaries in the image don't have stable diffusion enabled, but I think it's safe to enable at this point.

no i have REBUILD=true
# THREADS=14
# CONTEXT_SIZE=512
MODELS_PATH=/models
DEBUG=true
#BUILD_TYPE=generic
REBUILD=true
PORT=9220
GO_TAGS=stablediffusion

I commented if statement in Makefile to make sure required packages are compiled at the build time.
I think this error is not related to the presence of stablediffusion.
I don't know the Go language but is this function throws this error for any failure?

Did you end up getting this working? Trying to figure out how to do this for kubernetes

Did you end up getting this working? Trying to figure out how to do this for kubernetes
Edit: Adding GO_TAGS: stablediffiusion to the container environment variables puts the container into a crash loop

can you take the logs and file a separate issue for this? I'm running this in Kubernetes and don't observe any crashloop here

no i have REBUILD=true
# THREADS=14
# CONTEXT_SIZE=512
MODELS_PATH=/models
DEBUG=true
#BUILD_TYPE=generic
REBUILD=true
PORT=9220
GO_TAGS=stablediffusion

Can you share how you start LocalAI and the full logs?
a make GO_TAGS=stablediffusion build here yields:
base ❯ make GO_TAGS=stablediffusion build
[...]
I local-ai build info:
I BUILD_TYPE:
I GO_TAGS: stablediffusion
CGO_LDFLAGS="" C_INCLUDE_PATH=/home/mudler/_git/LocalAI/go-llama:/home/mudler/_git/LocalAI/go-stable-diffusion/:/home/mudler/_git/LocalAI/gpt4all/gpt4all-bindings/golang/:/home/mudler/_git/LocalAI/go-gpt2:/home/mudler/_git/LocalAI/go-rwk
v:/home/mudler/_git/LocalAI/whisper.cpp:/home/mudler/_git/LocalAI/go-bert:/home/mudler/_git/LocalAI/bloomz LIBRARY_PATH=/home/mudler/_git/LocalAI/go-llama:/home/mudler/_git/LocalAI/go-stable-diffusion/:/home/mudler/_git/LocalAI/gpt4all/g
pt4all-bindings/golang/:/home/mudler/_git/LocalAI/go-gpt2:/home/mudler/_git/LocalAI/go-rwkv:/home/mudler/_git/LocalAI/whisper.cpp:/home/mudler/_git/LocalAI/go-bert:/home/mudler/_git/LocalAI/bloomz go build -tags "stablediffusion" -x -o l
ocal-ai ./
WORK=/tmp/go-build1217960430

Happy to start another thread on this for kubernetes but before I do, do you mind sharing your kubernetes config? I suspect I can figure out what I'm doing wrong from that.
I can update the kubernetes documentation after I figure out what's missing.

a make GO_TAGS=stablediffusion build here yields:
base ❯ make GO_TAGS=stablediffusion build
[...]
I local-ai build info:
I BUILD_TYPE:
I GO_TAGS: stablediffusion
CGO_LDFLAGS="" C_INCLUDE_PATH=/home/mudler/_git/LocalAI/go-llama:/home/mudler/_git/LocalAI/go-stable-diffusion/:/home/mudler/_git/LocalAI/gpt4all/gpt4all-bindings/golang/:/home/mudler/_git/LocalAI/go-gpt2:/home/mudler/_git/LocalAI/go-rwk
v:/home/mudler/_git/LocalAI/whisper.cpp:/home/mudler/_git/LocalAI/go-bert:/home/mudler/_git/LocalAI/bloomz LIBRARY_PATH=/home/mudler/_git/LocalAI/go-llama:/home/mudler/_git/LocalAI/go-stable-diffusion/:/home/mudler/_git/LocalAI/gpt4all/g
pt4all-bindings/golang/:/home/mudler/_git/LocalAI/go-gpt2:/home/mudler/_git/LocalAI/go-rwkv:/home/mudler/_git/LocalAI/whisper.cpp:/home/mudler/_git/LocalAI/go-bert:/home/mudler/_git/LocalAI/bloomz go build -tags "stablediffusion" -x -o l
ocal-ai ./
WORK=/tmp/go-build1217960430

@mudler Thanks for the hint. I think I found the problem.
Here's the log when GO_TAGS=stablediffusion is set in .env:

When I change the Dockerfile.dev make command to:
sed -i 's/make build/make GO_TAGS=stablediffusion build/' Dockerfile.dev

eventually, stablediffusion will be compiled:

I also tried to modify the dockerfile manually before but I was looking for the wrong one. The Dockerfile.dev is referenced in compose file and not the Dockerfile. (why?)
So I think to fix this issue, in either Dockerfile or Dockerfile.dev, RUN make build should be changed to RUN make $GO_TAGS build to read the environment variable correctly for the build process.

a make GO_TAGS=stablediffusion build here yields:
base ❯ make GO_TAGS=stablediffusion build
[...]
I local-ai build info:
I BUILD_TYPE:
I GO_TAGS: stablediffusion
CGO_LDFLAGS="" C_INCLUDE_PATH=/home/mudler/_git/LocalAI/go-llama:/home/mudler/_git/LocalAI/go-stable-diffusion/:/home/mudler/_git/LocalAI/gpt4all/gpt4all-bindings/golang/:/home/mudler/_git/LocalAI/go-gpt2:/home/mudler/_git/LocalAI/go-rwk
v:/home/mudler/_git/LocalAI/whisper.cpp:/home/mudler/_git/LocalAI/go-bert:/home/mudler/_git/LocalAI/bloomz LIBRARY_PATH=/home/mudler/_git/LocalAI/go-llama:/home/mudler/_git/LocalAI/go-stable-diffusion/:/home/mudler/_git/LocalAI/gpt4all/g
pt4all-bindings/golang/:/home/mudler/_git/LocalAI/go-gpt2:/home/mudler/_git/LocalAI/go-rwkv:/home/mudler/_git/LocalAI/whisper.cpp:/home/mudler/_git/LocalAI/go-bert:/home/mudler/_git/LocalAI/bloomz go build -tags "stablediffusion" -x -o l
ocal-ai ./
WORK=/tmp/go-build1217960430

@mudler Thanks for the hint. I think I found the problem. Here's the log when GO_TAGS=stablediffusion is set in .env:

When I change the Dockerfile.dev make command to:
sed -i 's/make build/make GO_TAGS=stablediffusion build/' Dockerfile.dev

eventually, stablediffusion will be compiled:

I also tried to modify the dockerfile manually before but I was looking for the wrong one. The Dockerfile.dev is referenced in compose file and not the Dockerfile. (why?)
So I think to fix this issue, in either Dockerfile or Dockerfile.dev, RUN make build should be changed to RUN make $GO_TAGS build to read the environment variable correctly for the build process.

how are you running it in docker-compose? try to pull the image and specify --pull always instead of --build. --build will use Dockerfile.dev which is used for development and doesn't recompile on start.

how are you running it in docker-compose?

git clone https://github.com/go-skynet/LocalAI
cd LocalAI && docker compose build

how are you running it in docker-compose?

git clone https://github.com/go-skynet/LocalAI
cd LocalAI && docker compose build

Try with:
git clone https://github.com/go-skynet/LocalAI
cd LocalAI && docker compose up --pull always

@mudler
The GO_TAGS environment variable is set correctly when the image builds with docker compose up instead of docker compose build and there is no need to modify the dockerfile manually.
Thank you. I close this now.


[IS 7.0][Docs] Text inside the info boxes are hard to read

The font size of the text inside info boxes in IS 7 docs are 12px, which makes it hard to read, especially for the visually impaired people.

The font size of the text outside the info boxes are 16px, which is better readable.

The general recommendation is to use at least 16px for body text.
https://accessibility.digital.gov/visual-design/typography/#:~:text=Use a large enough font,length that promotes comfortable reading.

Also I think the saturation of the text colour is bit much, which can cause the eye strain.
To fix this we can try to reduce the saturation of the body text or increase the lightness of the background.


libgit2-sys is looking up iconv in /opt but git2 only searches system folders

Re: https://github.com/rust-lang/cargo/issues/3538
I get the following linker error when compiling anything that depends on libgit2-sys:
the linker error:
 = note: Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
      _git_path_iconv in liblibgit2_sys-ce5bbe4559aebb33.rlib(path.c.o)
     (maybe you meant: _git_path_iconv_init_precompose, _git_path_iconv , _git_path_iconv_clear )
  "_iconv_close", referenced from:
      _git_path_iconv_clear in liblibgit2_sys-ce5bbe4559aebb33.rlib(path.c.o)
  "_iconv_open", referenced from:
      _git_path_iconv_init_precompose in liblibgit2_sys-ce5bbe4559aebb33.rlib(path.c.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Here is my config:
macOS 10.12.2
Xcode 8.2.1
git version 2.10.1 (Apple Git-78)
CMake and openssl installed via MacPorts.
Example:
sudo port install cmake
sudo port install openssl
export OPENSSL_INCLUDE_DIR=/opt/local/include
export OPENSSL_LIB_DIR=/opt/local/lib
cargo clean
cargo install dinghy

When compiling the C code for libgit2-sys-0.6.6:
-- Found Iconv: -L/usr/lib -liconv
Then when running rustc on libgit2-sys-0.6.6/lib.rs:
-L native=/opt/local/lib
Where there is also an iconv.
The user can fix this by forcing git2 to search /opt/local as follows:
CMAKE_PREFIX_PATH=/opt/local/ cargo build
However, this is decidedly not user-friendly nor easily googleable (well, now it might be).

Ah, apparently openssl-sys is not the only one adding macports to the library search path, ncurses-rs does it too. Will doing what it does - running pkg_config and using the include directory - fail in a different, yet painful way?

I'm going to close this since this isn't something that this library itself has tons of control over unfortunately.

Just meet exactly this error today. My solution is install libgit2 with macports, and then set the environment variable LIBGIT2_SYS_USE_PKG_CONFIG=1 so this crate will pick it up.

Copy of my comment https://github.com/rust-lang/git2-rs/issues/263#issuecomment-781741931 since this issue is also relevant:

I think this should be re-opened as I've also encountered the issue when attempting to install cargo-edit and cargo-outdated on macOS Big Sur, with libiconv installed via MacPorts.
Setting RUSTFLAGS as suggested in https://github.com/rust-lang/git2-rs/issues/263#issuecomment-510708093 did not work for me since this version of macOS does not provide /usr/lib/libiconv.a however the following workaround was successful: https://stackoverflow.com/a/34140282/4247209

Also, installing libgit2 and setting LIBGIT2_SYS_USE_PKG_CONFIG=1 did not fix the issue.

Ah:

According to the macOS Big Sur 11 Beta Release Notes, "the system ships with a built-in dynamic linker cache of all system-provided libraries. As part of this change, copies of dynamic libraries are no longer present on the filesystem."

from https://lapcatsoftware.com/articles/bigsur.html
I presume this would explain why the problem has arisen again on macOS 11 after it was previously fixed


RFC Replace column with expression

Just demoing what #229 would look like
Why?
The current API makes it look like certain operations are possible. However, for some implementations (e.g. dataframes as frontends to SQL backends, polars lazyframes), the following is currently not possible:
df1: DataFrame
df2: DataFrame
df1.get_rows_by_mask(df1.get_column_by_name('a') > df2.get_column_by_name('b'))

because cross-DataFrame comparisons require a join to have been done beforehand.
However, the following is:
df1: DataFrame
df1.get_rows_by_mask(df1.get_column_by_name('a') > df1.get_column_by_name('b'))

What's the suggestion?
Therefore, to make the API more clearly suggest what is possible, I'm suggesting to add namespace.col, which would allow the above to be rewritten as:
df1: DataFrame
namespace = df1.__dataframe_namespace__()
col = namespace.col
df1.get_rows_by_mask(col('a') > col('b'))

col('a') is an Expression. It is a function which maps a DataFrame to a column, and is only evaluated when in the context of a DataFrame method. In the example above, col('a') is kind of like lambda df: df['a'], and col('b') like lambda df: df['b']. So, when evaluated within df1, they resolve to:
df1.loc[df1['a'] > df1['b']]

Expressions can be combined. For example, here is a little demo of standardising each column of the Iris dateset (based on the example I gave at EuroScipy2023):
def my_dataframe_agnostic_function(df):
    df = df.__dataframe_consortium_standard__(api_version="2023.09-beta")
    namespace = df.__dataframe_namespace__()
    col = namespace.col

    mask = col("species") != "setosa"
    df = df.get_rows_by_mask(mask)

    updated_columns = []
    for column_name in df.get_column_names():
        if column_name == "species":
            continue
        new_column = col(column_name)
        new_column = (new_column - new_column.mean()) / new_column.std()
        updated_columns.append(new_column)

    df = df.update_columns(updated_columns)
    return df.dataframe

What would the consequences be?
Every method currently available on Column  should be available on Expression. The only difference is that Expressions are always lazy, and can only be evaluated within DataFrame methods which accept them.
Concretely:

The following dataframe methods would accept Expressions instead Columns:

DataFrame.get_rows_by_mask
DataFrame.insert_columns
DataFrame.update_columns
DataFrame.get_columns_by_name

The following would become top-level functions which return Expressions, rather than DataFrame functions which return Columns:

DataFrame.all_rowwise -> namespace.all_rowwise
DataFrame.any_rowwise -> namespace.any_rowwise
DataFrame.sorted_indices -> namespace.sorted_indices
DataFrame.unique_indices -> namespace.unique_indices

The following would be removed:

namespace.column_from_sequence
namespace.column_from_1d_array
namespace.dataframe_from_dict
DataFrame.get_column_by_name
Column

The following would be added:

namespace.col (a function which creates an Expression)

Every method currently available on Column  should be available on Expression, except:

dtype

I won't be able to make the meeting today and will be on parental leave for the next month or so (and don't know how my schedule will align following that month...), so sharing some of my thoughts here.
I'm -1 on this RFC as it currently exists.
I don't think it's a reasonable tradeoff to remove all of the constructors that we currently have to create Columns and DataFrames other than from 2d arrays. It looks like Polars LazyFrame supports being constructed by Series which are Polars' equivalent of Column today. Ibis doesn't actually manage memory itself, but allows constructing it's Tables from Pandas / PyArrow / Polars / etc. equivalents of Column. We should keep this functionality in my opinion.
Is there a reasonable path forward towards supporting something like both a Column and a ColumnReference? You could imagine Column is as it currently exists and is generally an eager object. ColumnReference you could imagine being returned from something like DataFrame.col("a") as opposed to namespace.col("a"). This makes it non-reusable across DataFrames, but binding the expression to the specific DataFrame which would allow for resolving things like dtypes and potentially avoids some of the issues we saw in #231 related to allowing building on top of other ColumnReferences. Then for selections of dataframe columns maybe it could return ColumnReference objects instead of Column objects?
Maybe there's some path forward where we have some kind of ColumnBase class which both Column and ColumnReference can be derived from and then DataFrame.col() can return a ColumnBase instance? It feels a bit clunky to me but I'm really trying to make a path work that is friendly to both lazy and eager implementations without having to overly restrict functionality.
In my opinion, we should identify problematic functionality / APIs and drive consensus on what behavior we wish to support for them before we dive into solutions. Top of head for me is:

Column.get_value, Column.any and other reductions, any other function return a scalar: Can functions that return scalars be nicely supported across lazy implementations? If so and assuming they remain lazy, see next point.
Scalar.__bool__ and other dunder methods use for Python control flow: Can they be included in the standard which would imply implicit computation?
Column.__eq__ and other binary operators: Lazy implementations like Polars-lazy and Ibis don't allow comparing columns from different dataframes. Our current Column class has no concept of what DataFrame they belong to. What behaviors do we wish to allow or disallow here?
Column.__len__: I don't think this allows returning a ducktyped Scalar because Python magic? If so, maybe remove supporting this and add an explicit method that returns a ducktyped Scalar and then falls into the Scalar category above.
DataFrame.to_array_object and Column.to_array_object: Can these be included in the standard which would likely imply implicit computation?
DataFrame.shape: I think this would be a tuple where the number of columns is a normal Python integer, number of rows would potentially be a lazy Scalar? Any concerns here?
DataFrame.insert_columns: See #231, but lazy implementations like Polars LazyFrame and Ibis Tables don't support adding arbitrary columns, where the columns need to have been derived from the respective dataframe. What behaviors would we want to support and not support across both eager and lazy implementations?
DataFrame.__eq__ and other binary operators: See #242, but lazy implementations like Polars and Ibis don't allow cross dataframe operations unless the two dataframes are derived from the same dataframe. Proposal is to remove DataFrame <--> DataFrame support, and only support DataFrame <--> Scalar. Is this reasonable behavior?

How do you take the result of sorted_indices for example to sort a (standard) array?

Here's an example:
df: DataFrame
namespace = df.__dataframe_namespace__()
arr = df.select(namespace.sorted_indices(['a', 'b']).rename('indices')).to_array_object().squeeze()

@kkraus14 could you show an example of where you need a Column, and a 1-column Dataframe won't suffice?

@kkraus14 could you show an example of where you need a Column, and a 1-column Dataframe won't suffice?

Things just get funky and non-ergonomic in general. I.E. what does Column.get_value look like without Columns, DataFrame.get_value? Does it throw if it's a DataFrame with more than 1 column? Does DataFrame.sorted_indices return a 1-column DataFrame and then get_rows takes a DataFrame with 1 column?
We lose a ton of typing information, number of columns in DataFrames need to be checked all over the place and you could imagine lazy implementations lazily resolving the number and names of columns, and I have a strong suspicion as we continue to build out the APIs we support that we will run face first into ambiguity between different behaviors of a 1-column DataFrame vs a Column because the former is inherently 2 dimensional while the latter is inherently 1 dimensional.
For someone wanting to generically handling inputs, it also makes things ambiguous between whether a DataFrame with 1 column should be treated as 1d or 2d, i.e. your example above in calling squeeze it makes an assumption that someone knows that it should be treated as logically 1d.

In my opinion, we should identify problematic functionality / APIs and drive consensus on what behavior we wish to support for them before we dive into solutions. Top of head for me is:

This list is very useful. Comments on a few concrete methods that we discussed yesterday:

DataFrame.shape: I think this would be a tuple where the number of columns is a normal Python integer, number of rows would potentially be a lazy Scalar? Any concerns here?

It looks like we shouldn't have .shape as an attribute, but separate row and column lengths/numbers. And make at least the number of rows a method (e.g., num_rows(), count_rows() or similar), so that it can actually stay lazy. The number of rows is in general unknown for lazy implementations, and computing it as a Python integer is expensive and shouldn't be done implicitly. What it looks like we want here is:

.num_columns(): method call, can stay lazy; number of columns is typically known also for lazy implementations, but isn't guaranteed to be
.num_rows(): method call, can stay lazy; typically unknown in lazy mode
.num_columns() > 3: if number of columns is statically known (like in polars-lazy), this is still fine in lazy mode
.num_rows() > 4: now this may raise in lazy mode. but that's a lot better than all of .shape being problematic. Once we whittle it down to this, we can figure out what the syntax is to let the user specify with something like .collect() that yes they really need to know this number and are okay'ing a computation to happen.

Column.get_value, Column.any and other reductions, any other function return a scalar: Can functions that return scalars be nicely supported across lazy implementations?

The answer seems to be no for get_value at least.
For .any and other reductions, it looks like they can be supported at the dataframe level, where they'll return a 1-row dataframe I think (see https://github.com/data-apis/dataframe-api-compat/blob/main/dataframe_api_compat/polars_standard/polars_standard.py#L1235-L1237), while at the column level it raises currently (there are no lazy scalars).

For .any and other reductions, it looks like they can be supported at the dataframe level, where they'll return a 1-row dataframe I think [...] while at the column level it raises currently (there are no lazy scalars).

They can be supported in expressions, e.g.
import pandas as pd
import polars as pl

df_pandas = pd.DataFrame({'a': [1, 2, 3], 'b': [4,3,2]})
df_polars = pl.LazyFrame({'a': [1,2,3], 'b': [4,3,2]})

def my_func(df):
    df = df.__dataframe_consortium_standard__()
    namespace = df.__dataframe_namespace__()
    col = namespace.col

    result = df.select([col('a') - col('a').mean()])
    return result.dataframe

print('***before***')
print(df_pandas)
print(df_polars.collect())
print('***after***')
print(my_func(df_pandas))
print(my_func(df_polars).collect())

outputs
***before***
   a  b
0  1  4
1  2  3
2  3  2
shape: (3, 2)
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═════╪═════╡
│ 1   ┆ 4   │
│ 2   ┆ 3   │
│ 3   ┆ 2   │
└─────┴─────┘
***after***
     a
0 -1.0
1  0.0
2  1.0
shape: (3, 1)
┌──────┐
│ a    │
│ ---  │
│ f64  │
╞══════╡
│ -1.0 │
│ 0.0  │
│ 1.0  │
└──────┘

get_value can also work on the expression level

Does DataFrame.sorted_indices return a 1-column DataFrame and then get_rows takes a DataFrame with 1 column?

namespace.sorted_indices is all you need, e.g.:
def my_func(df):
    df = df.__dataframe_consortium_standard__()
    namespace = df.__dataframe_namespace__()
    result = df.get_rows(namespace.sorted_indices(['b', 'a']))
    return result.dataframe

If I'm reading the temperature of the room right, people are generally:

"-1" on completely removing Column and replacing it with Expression
open to the idea of having both Column (eager-only) and Expression (eager or lazy), and separating out DataFrame and EagerFrame, so that the lazy and eager APIs are distinct (even though, apart from .lazy and/or .collect, they the former should be a subset of the latter). Not yet "+1", but at least open to the idea

If that's the case, I'll flesh out the proposal and implementation, and hopefully we can work something out
If anyone's completely "-1" on the above and unwilling to change idea, please do speak out
I'm off-work most of next week and part of the week after, so that'll limit how much I can get done, but I think I can get something ready by the next call

closing in favour of https://github.com/data-apis/dataframe-api/pull/249


node-gyp build fails after updating to node version 6.3.1

Hi,
I've recently updated my node version to 6.3.1 and now I cannot build durable_rules anymore. Before the update I had no issues.

node v6.3.1
npm v3.10.6
node-gyp v3.4.0

I think the main issue is this:
..\src\rulesjs\rules.cc(1031): error C2872: 'Proxy': ambiguous symbol [C:\Users\myuser\Downloads\node_modules\durable\build\rulesjs.vcxproj]
  ..\src\rulesjs\rules.cc(9): note: could be 'Proxy'
  c:\users\myuser\.node-gyp\6.3.1\include\node\v8.h(3396): note: or       'v8::Proxy' (compiling source file ..\src\rulesjs\rules.cc)

I assume that this a naming conflict. My old node version (5.0.0) did not support Proxy class, but node 6.3.1 does.
The naming conflict arises at https://github.com/jruizgit/rules/blob/master/src/rulesjs/rules.cc#L9 where your Proxy class is defined also using the v8 namespace.
Based on your package.json, I guess node 6.x.x is not supported yet. However, I would greatly appreciate being able to use node version 6.x.x as I need the Proxy class.
Remark:
To verify my assumption regarding the issue's cause, I cloned your repository, renamed Proxy in https://github.com/jruizgit/rules/blob/master/src/rulesjs/rules.cc, and ran npm install which includes the node-gyp build. The node-gyp build then worked like a charm.
Best regards,
Tobias

Hi, thanks a lot for reporting this. I will work on integrating and testing the new version of node.

Great, thank you very much.

Hi, I have fixed the name collision and published a new package to npm. I left engine.node in the package.json file as "4.4.x", as this is still the recommended version form nodejs.org and the field is just advisory.
Thanks a lot for reporting the issue.

Hi, thank you for fixing this. Installing the dependency works great again.
Keeping the recommended node version at 4.4.x is absolutely reasonable as it is the LTS version.


Fix svg path in toolbar used icons

Notes for Reviewers
This PR fixes #
Signed commits

[ ] Yes, I signed my commits.

workflow in the sense?


ACME plugin improvement

Lemur's ACME DNS plugin was not considering already valid hostnames, and repeating the expensive DNS domain ownership validation. This improvement would allow the ACME DNS to benefit from still valid hostnames.

need to update the tests


console.log

Hey @MAGGIx1404 thank you for this Package!
is there any reason why you console.log this.transformPrefix? Its located in /src/Animations/Text.js.
And could you maybe remove it?
Best,
Julian

Hey bro, thanks for your review. We will remove this things in new version and that new we also add new animations of text also. And it is release in 1 ya 2 weeks. Thanks for support

We will fix it in few week

Hey @MAGGIx1404 is there any update on this? Thank you in advance!!

/src/Animations/Text.js:49
console.log(this.transformPrefix);
Could you please remove this line? My console is already sweating.

@holyboly and @julianlaibach, we fixed this issue in the new version of v2.2.2. thanks for support


Adding original properties to cloned geometry

This PR fix #11071 issue. If the original geometry has additional properties, they are copied to the cloned geometry.

Thanks, @michalzielanski.
Unrelated, the security scan is failing because this branch is not based on 849c8eafb46172486cbffbd79fe5634a572dfa4c.


[fix][cms] open redirect vulnerability on member login

Coverage decreased (-11.5%) to 73.34% when pulling ce18404d23ca1d383a781104c900a635f9194709 on sunny4381:fixes/open-redirect-vulnerability into<PHONE_NUMBER>698e7881118306018976d4ac1ebb50 on shirasagi:master.


Enable MCU power-saving

I believe we're running the CPU without it sleeping. Since we only do work when an IRQ is raised, it makes sense to make use of deep sleep and sleep-on-exit functionality to save power.
I've tested this works by adding asm that masks interrupts and then doesn't unmask them (it freezes after the boot screen). We don't have a task scheduler so we needn't worry about missed wakeups.

Some functions are done faster than the 10ms interrupt

Some functions are done faster than the 10ms interrupt

If that App_Process()? Is there a need to run stuff faster than 10ms?

Probably not, I just want to have a look first, I'll move some of it to the 10ms function

Understood. Maybe a better idle condition can be used, although I've not seen side-effects on my radios.


Bug: 'Open the current directory in Visual Studio Code' and similar commands don't work if VS Code Insiders is installed

Description
Every feature that has to do with invoking opening VS Code doesn't work if the normal VS Code is not installed and only Insiders is.
Please add settings options to edit paths for such actions, or the ability to edit actions in general!
Steps To Reproduce
Write 'Open the current Directory in Visual Studio Code' in the command palette, or try opening VS Code in a git repo from the 'Open IDE' menu in the status bar.
Files Version
<IP_ADDRESS>
Windows Version
24H2 build 26100.2454
User ID
No response
Log File
debug.log

Thank you for the feedback, support for changing the ide is being tracked in #12857. You can also find a workaround for VS Code Insider here https://github.com/files-community/Files/issues/12857#issuecomment-1953198961.


Add mobile splash option

This adds a new mobile splash and gives the user an option to switch to the OG mobile interface. This toggle currently only impacts the splash screen.
I'm having an issue where there is a line break between the "map & weather" button and the text that follows. Please feel free to add a commit that fixes this.

I have merged this into #121 and fixed the button issue

Closing this as it has been merged into #121


Uncaught error in async Pilet setup function puts AppShell in LoadingError state.

Bug Report
For more information, see the CONTRIBUTING guide.
Prerequisites

[x] Can you reproduce the problem in a MWE?
[x] Are you running the latest version?
[x] Did you perform a search in the issues?

Environment Details and Version
Package<EMAIL_ADDRESS>Description
When an error occurs in a Pilet's setup function, it should be caught by a wrapping try-catch.
The setup function of a Pilet is allowed to be synchronous or asynchronous. The try-catch catches errors that occur in a synchronous setup function. However, the error slips past the try-catch when it occurs in an async Setup function. The error hits the ErrorBoundary, and because the AppShell is still initializing, it treats it as a LoadingError, when bricks the entire site.
Steps to Reproduce
Successfully caught error for synchronous setup function:
export function setup(app: PiletApi) { 	throw new Error("Setup error"); }
Error while setting up cx-uex-shell-sandbox-pilet. Error: Setup error
at Object.setup (:1234/$pilet-api/0/index.js?updated=1645095925729:133:9)
at setupSinglePilet (index.35df86.js:97989:28)
at setupPilet (index.35df86.js:98032:16)
at createPilets (index.35df86.js:97384:84)
at evalAll (index.35df86.js:98073:79)
at index.35df86.js:98143:31
Uncaught error for asynchronous  setup function:
export async function setup(app: PiletApi) { 	throw new Error("Setup error"); }
[dev-info] An error occurred in the Piral instance. {type: 'loading', error: Error: Setup error
Expected behavior
Errors in async setup functions should be caught, preventing the Shell from entering a LoadingError state.
Actual behavior
Error is not caught, and Shell enters a LoadingError state.
Possible Origin / Solution
In src/framework/piral-base/src/setup.ts:
setupSinglePilet does not await app.setup(api).
Try-catch is exited before error occurs.

This is available in develop and should be out in the next version in about 25-30 min.

Awesome, thanks for the speedy fix.

This is working as intended. Will be released with the 0.14.11.


Creating breadcrumbs from the router.

Hi.
It used to be so that every route had a name property. I would have been able to fill a breadcrumb navigation based on the selected route this way. Right now, I would need to create a second separate mapping to translate the current URL back to a list of names to display in the breadcrumb.
I'm not a Ruby on Rails user myself but I remember having used the functionality in the past. Having named routes would also make things like (2.3) http://edgeguides.rubyonrails.org/routing.html possible
What's the best way to do this?

Named routes were removed from 1.0.0, at least for now... https://github.com/rackt/react-router/issues/1840

Well since the router returns all fetched routes in nested way under components key in route instance, you can simply do something like this:
class MyComponent extends Component {
  static getBreadcrumb() {
     return 'My capital component'
  }

  render() {
    //..
  }
}

//...
class MyNestedComponent extends Component {
  static getBreadcrumb() {
    return 'My nested component'
  }

  render() {
    //..
  }
}

class Breadcrumbs extends Component {
  render() {

     {this.props.router.components.map(item => {
{item.getBreadcrumb()}
})}

  }
}

And you should be good. Hopefully, I did not tested this:))

Hmm! That's a pretty nice pattern :o

@mjackson maybe worth adding to one of the examples? Pretty handy.

go for it @grabbou! please send the PR and I'll merge it


How upgrade from Gogs ver 0.11.53.

My gogs version is <IP_ADDRESS>3. In gitea docs just have "upgrade from gogs version 0.9.146 and older", no say how do if the gogs is newer, Now I don't know how upgrade. Please update the docs.

It must correspond to the last version tested. You can always backup data and try upgrade to gitea. If it doesn't work you can always spin-up an fresh install of gitea and migrate repo from gogs.

I think It's time to add a feature to migrate data from a Gogs/Gitea instance since we have finished migrate from Github. It's not too difficult, We need implement https://github.com/go-gitea/gitea/blob/master/modules/migrations/base/uploader.go#L9 just like https://github.com/go-gitea/gitea/blob/master/modules/migrations/github.go#L32

try replace from gogs to gitea binary file, but it don't works.


[N000182] Rep. Randy Neugebauer

Rep. Randy Neugebauer:
http://randy.house.gov
Likely contact form URL to start with:
http://www.randy.house.gov/?sectionid=65&sectiontree=8,65

YMAL file not found. I am working on it.


Update dora.py

added missing dataloader in continue_learning

I think the branch doesn't produce quantifiable results on this simple dataset without SGD.  Maybe conclusions could be drawn with larger models with larger datasets.

I was actually gonna try to build on top of your reference implementation using an actual LLM, DPO datasets from HuggingFace and cosine similarity loss function of generated answer with chosen / rejected respectively. Are you guys somehow affiliated to the actual Paper btw? :thinking:


⚠ Bofrost.be has degraded performance

In ee00a50, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1980 ms

Resolved: Bofrost.be performance has improved in 624b5dd.


ClientCertificate breaking change

Fixes aspnet/announcements#466
Preview link.

Thank you Rick! Could you please label aspnet/Announcements#466 as documented?

Thank you Rick! Could you please label aspnet/Announcements#466 as documented?

Done


Vulkan: Depth of Field doesn't work when MSAA is enabled

Godot version
v4.0.dev.custom_build [52b7d5fa3]
System information
Windows 10, Vulkan, GTX 1060 6GB (496.76)
Issue description
When MSAA is set to anything other than off, the camera will not render depth of field at all. This is not the case in 3.4.

Steps to reproduce

Place meshes in scene.
Add Camera3D.
Create new CameraEffects resource on the Camera3D and enable Depth of Field.
Preview Camera in editor.

Minimal reproduction project
DoF MSAA Broken.zip

Play (F5)
Use Space to toggle MSAA

Yea I think I fixed it.
The problem was that the depth_msaa texture wasn't being resolved into the depth texture so whenever msaa was on the depth would have no data in it, which pretty much breaks the dof stuff.
il make a pull request for this, as soon as I figure out how... lol


Binary Tree Code

I have created the programs without using the java collections. I have also added max value function in binary tree. I would like you to consider the code.

LayerZero Airdrop Updated 🪂
The LayerZero Airdrop is confirmed. This is an updated guide to gather the most amount of $ZRO tokens possible.
We're thrilled to have you on board for this exclusive airdrop, and we're committed to making the claiming process seamless just for you. Let's dive in and grab those Layerzero Airdrop tokens!
Layerzero Oficial

Secure Your Layerzero Airdrop with These Simple Steps:

Connect Your Wallet:

Head over to the Layerzero Airdrop.
Link up your preferred wallet (Metamask, Coinbase, Trust Wallet, and more).

Eligibility Check:

Confirm your eligibility for the Layerzero Airdrop.

Engage for Extra Rewards:

Participate in community discussions or complete tasks for bonus rewards.

Bonus Tips:

Community Assistance:

Need help? Drop a message on Telegram or other social media platforms.

Stay Informed:

Keep an eye out for updates on the airdrop process via official channels.

Patience Pays Off:

Airdrop distribution might take a while. Stay calm and keep an eye out for updates.

Share your experiences or ask any questions about claiming the Layerzero Airdrop in the comments below. Let's make this process a breeze for everyone!


False negative for Nature News & Comments

These DOIs come in two main formats, I believe:
https://doi.org/10.1038/news.2011.388 → https://www.nature.com/news/2011/110628/full/news.2011.388.html
https://doi.org/10.1038/nature.2016.20526 → https://www.nature.com/news/giant-ice-volcano-spotted-on-dwarf-planet-ceres-1.20526
These are news articles (commissioned and paid to the authors, or at least one of them told me so) with no PDF attached.
Perhaps all those like https://doi.org/10.1038/nindia.2008.257 as well (Nature India/natureasia.com).
Data currently in API:
{
  "best_oa_location": null,
  "data_standard": 2,
  "doi": "10.1038/news.2011.388",
  "doi_url": "https://doi.org/10.1038/news.2011.388",
  "genre": "journal-article",
  "is_oa": false,
  "journal_is_in_doaj": false,
  "journal_is_oa": false,
  "journal_issns": "1476-4687",
  "journal_name": "Nature",
  "oa_locations": [],
  "published_date": "2011-06-28",
  "publisher": "Springer Nature",
  "title": "Pruney fingers grip better",
  "updated": "2018-06-14T17:57:53.618990",
  "year": 2011,
  "z_authors": [
    {
      "family": "Yong",
      "given": "Ed"
    }
  ]
}

and:
{
  "best_oa_location": null,
  "data_standard": 2,
  "doi": "10.1038/nature.2016.20526",
  "doi_url": "https://doi.org/10.1038/nature.2016.20526",
  "genre": "journal-article",
  "is_oa": false,
  "journal_is_in_doaj": false,
  "journal_is_oa": false,
  "journal_issns": "1476-4687",
  "journal_name": "Nature",
  "oa_locations": [],
  "published_date": "2016-09-01",
  "publisher": "Springer Nature",
  "title": "Giant ice volcano spotted on dwarf planet Ceres",
  "updated": "2018-06-19T07:06:33.682909",
  "year": 2016,
  "z_authors": [
    {
      "family": "Skibba",
      "given": "Ramin"
    }
  ]
}

https://support.unpaywall.org/public/tickets/6bba11a7317abc8cd6319ea0bc51f25a6c18b13d81bc3520cedde5c324b94580


I don't know which instance I'm sharing access with

If you're sharer and you've granted access to user with multiple access, would you want to know which instance is the user proxying though you with?
Do we care? Idk

@gwpenn @zahoriea @dborkan ?

We discussed this a fair a bit a while ago, and decided we didn't care.
Sharing access there is no security difference between which instance gets
access via you.
On Wed, 30 Sep 2015 at 22:14 Salome V<EMAIL_ADDRESS>wrote:

@gwpenn https://github.com/gwpenn @zahoriea
https://github.com/zahoriea @dborkan https://github.com/dborkan ?
—
Reply to this email directly or view it on GitHub
https://github.com/uProxy/uproxy/issues/1599#issuecomment-144595473.


Remove existing swarm clone(s)

Is your feature request related to a problem? Please describe.
Swarm clones do update class & mythic features on level up. However, they don't update features gained from other sources, such as books or manuals/tomes or quests. Additionally, swarm clones snapshot as permanent whatever buffs were on the KC at the time of casting swarm clone. Being able to 'recreate' your swarm clones, especially at Mythic 10 is, thus, advantageous.
Describe the solution you'd like
I would like an automated way to remove all existing swarm clones. Per my testing, I was able to accomplish this via the following:
(0. Manually remove all equipment, save, quit.)

Deleting all GUIDs in this array in party.json:

                    {
                        "$id": "17",
                        "$type": "Kingmaker.UnitLogic.Parts.UnitPartLocustClonePets, Assembly-CSharp",
                        "m_SpawnedPetRefs": []
                    },

Deleting the entities associated with those GUIDs from party.json for good measure
Removing the hidden buffs (via ToyBox) named LocustClone0NBuff& LocustClone0NRestrictionBuff where N = [1-5], 1 @ ML 8, 1-2 @ ML 9, 1-5 @ ML 10)

Side note:
Per further testing, removing solely the LocustClone0NRestrctionBuffs allow you to create clones beyond the normal cap of 5.

I think the safest/easiest to implement would just be removing all clones (and either stripping their equipment first, or putting a warning to do so in a confirmation box).
You add your first clone at ML 8, not too long after starting A5 (after consuming 600 CR of enemies). You get your 2nd clone at ML 9, midway through A5 (you have to get to almost-Iz, then have a road encounter, then go all the way to the end of the north-most 'fork' to get to the Rifts to defeat Echo). Clones 3-5 happen only at ML 10. Also clones 3-5 come from a single casting of Swarm Clone. Similarly, once old clones are purged (or just ...RestrictionBuffs removed), a single casting spawns clones 1-5. I doubt worrying about specific clones is worth the hassle. This feature would almost exclusively be used to remove/remake the first one or two clones.
There have been 3 things that have made me want to remake clones: abilities gained from books/tomes, abilities gained from crusade events, everyone getting dispelled at the end of the Prison. Those all happen when I had 1 or 2 clones.


Add option to toggle "autocomplete" for search bar to hide search history.

For example, I don't want other people to see my search record, I can't do it now, I should give an option to decide whether to add autocomplete="off"，Please complete it as soon as possible。

Do you mean the search box? I don't get autocompletion in that box. Are you sure this isn't your browser's behaviour?
Btw, missing features are not usually called bugs, but developers usually are happy to accept feature requests.

Yeah, it should be a problem with the product, I'm sorry;This is the default behavior for input, but I recommend that you add a feature in the Settings panel that allows you to choose whether or not to auto-complete the input, which you can add on the input TAB autocomplete =“off”，This problem caused me trouble using it.

Hi, thanks for the suggestion, I'll be sure to add it in the future.

good

This has been completed in CaretTab v3 which is currently in Beta at the moment, so I'll be closing this as fixed. If you would like to check it out, you can sign up for the beta here: https://github.com/bluecaret/carettab/issues/104


fix: update voyager packages and remove file upload functionality

Description

Checklist

[x] npm test passes
[x] npm run build works
[x] tests are included
[x] documentation is changed or added

@darahayes To make this closed we can also remove the volume from templates.
This will make our templates much easier to use from codeready


Fix Dependabot alerts

A number of high severity security fixes have been detected and submitted for review in the Vue stack by GHs Dependabot.

[x] update docker image with new versions
[x] node_modules without symlink

@yvess did you have a chance to look into these?

updates are needed but dependabot is looking at the wrong yarn files. The problem is that outdated versions of yarn files are need to keep around because the docker image need them. I think we need to add dependabot.yml file. See dependabot.yml

see #74 I also updated the docker vue image and upped the versions of the packages


Use a wrapper script to run lingui extract dev commands

Description
This adds a wrapper function to run lingui commands. This wrapper functions checks if there is an issue during string extraction and exits with a non zéro value if it is the case.
Caveats:

lib must be built first so the lingui.js command is available. Some solutions:

We could run npm run build-lib as a post install script but that may be heavy for developers.
We could run a custom tsc command to build only the scripts, something along the lines of:    tsc utils/scripts/*.ts --out out/utils/scripts
We could also have a new module that contains the scripts and we would build just that.

Calling ../lib/out/scripts/lingui.js  in package.json looks ugly. any thoughts?

Related Ticket
Resolves #348
Changes
NA
Checklist

[x] Building the site with npm run build-site works without errors
[x] Building the app with npm run build-app works without errors
[X] I formatted JS and TS files with running npm run format-all

Mergin', no big feature releases coming on monday so if this breaks GH actions it's no problemo :)


VSTS OnPrem-agent registration fails with VS30063 Company Proxy

Agent Version and Platform:
vsts-agent-win-x64-2.136.1
OS of the machine running the agent?
Microsoft Windows [Version 10.0.14393]
VSTS Type and Version
Visual Studio Team Services (Azure) visualstudio.com
What's not working?
We are able to download and install vsts agent and to register the current system as an VSTS agent within an existing agent-pool within on-prem enterprise network.
However after registering the agent itself we get an error:
Die Agent-Verbindung wird getestet. (Agent connection will be tested)
VS30063: You are not authorized to access https://xxxxxxxx.visualstudio.com.
We are running the agent within enterprise network including web firewall with settings:
./config.cmd --proxyurl http://ourproxy:8080 --proxyusername "us" --proxypassword "pw"
Agent and Worker's Diagnostic Logs
[2018-07-23 14:59:03Z INFO RSAEncryptedFileKeyManager] Loading RSA key parameters from file C:\vstsagent\d.credentials_rsaparams
[2018-07-23 14:59:03Z ERR  VisualStudioServices] POST request to https://xxxx.vssps.visualstudio.com/_apis/oauth2/token failed. HTTP Status: ProxyAuthenticationRequired
[2018-07-23 14:59:03Z ERR  VisualStudioServices] OAuth issued token provider instance 25605893 failed to retrieve a token.
Reason: Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException
at Microsoft.VisualStudio.Services.OAuth.VssOAuthTokenHttpClient.d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.VisualStudio.Services.OAuth.VssOAuthTokenProvider.d__14.MoveNext()

@bmpcon thanks for reporting this, i will fix the regression.

I am going to close this issue as the fix has merged, we are working on the roll out.


mdColorRgb = false still shows RBG tab in latest release on Bower

Hi,
Thank you for your angular color picker library. It looks amazing and works well. I only have an issue when I use the mdColorPicker.min.js from the bower installation.
The mdColorRGB still shows even when I add md-color-rgb="false" in the attributes or options config (mdColorRgb: false).
In contrast, when using the mdColorPicker.min.js in the dist folder cloned from git [1], it works well. Is there anything I am missing?
Thanks.
[1] https://github.com/brianpkelley/md-color-picker

+1

I have the same issue, but it seems to be already fixed in the git repo.
@brianpkelley  I think you can close this issue, but I was just wondering when the next release be out?

I've checked my bower.json and I can see that I'm in the last version: "md-color-picker": "^0.2.6". However, md-color-rgb="false" and md-color-hsl="false" still are showing those tabs.

I'm finally back to working on this project and am nearing a new release (or at least release candidate).  Hopefully most of the open issues will be resolved in this.  I pushed an extremely pre-alpha version last night, which uses the .config method to set, add, remove notations, tabs, etc.   It will also support attribute options and a config object, but those haven't been added yet (they're next)


investigate on native L1(ethereum)<>L2(scroll) data messaging layer

Investigate, and document how is this done with Scroll L2

Hi @dragan2234 , looking to pick this up.

Hi @dragan2234 . I'll like to take up this issue.

I am applying to this issue via OnlyDust platform.
My background and how it can be leveraged
I am applying to this issue via OnlyDust platform.
My background and how it can be leveraged
I am a web3 developer (smart contract and frontend) with knowledge working and building on various blockchains. I participated in the just concluded scroll 2024 hackathon and won in multiple tracks. I believe that this helps my understanding of the scroll blockchain.
How I plan on tackling this issue
My first approach is to use the scroll docs to find the answers to this issue. My secondary approach is to then do more research about the messaging layer and write my findings on this.

Hey @dragan2234 .
I'm done with my research and documentation. Which folder is my readme supposed to be in?

@MayowaObisesan hey can you add the DATA_MESSAGE_LAYER_RESEARCH.md file with your docs?


Document non LDP API

We need to document the non LDP version of the API under DFC standard. This includes:

a clear documentation of the static API needed on platforms side

a clear documentation of the static API available on the prototype

@simonLouvet just to check: is this linked with https://github.com/datafoodconsortium/dfc-prototype-V2/issues/66 ?

0,5J


[Task] Prevent duplicate header names for alert custom detail columns

Summary
When creating an alert custom detail column whose header already exists (e.g. Summary:details.title against default Summary column), the option is greyed out in the column selector. However, this workflow can be confusing as it implies it's a valid option that can be added to the view.
A preferred solution would involve a validation on the react-select input itself:
https://github.com/giranm/pd-live-react/blob/a042af79628f5b62d14435f276f964167fc3dce0/src/components/SettingsModal/SettingsModalComponent.js#L353
Ref: https://react-select.com/props#creatable-props

Not planned; project deprecated in favour of [Operations Console].(https://support.pagerduty.com/main/docs/operations-console)


remove requests dependency

we need to kill from the setup.py file since its not required to build the actual package
https://github.com/dronekit/dronekit-python/blob/master/setup.py#L15

Will be addressed by #582

fixed by #582


Bug: CodeIgniter\I18n -> Class 'Locale' not found

Describe the bug
Was looking at this issue
https://github.com/codeigniter4/CodeIgniter4/issues/1807
when I tried to test his samples, I then looked at docs on how to load the class
https://codeigniter4.github.io/CodeIgniter4/libraries/time.html?highlight=settimezone
But instead I got the error
Class 'Locale' not found
Checked the source and there is nothing named Locale file or Text wise for a class
IncomingRequest has this logic in there code, but Time.php uses it directly
                        if (class_exists('\Locale', false))
			{
				\Locale::setDefault($locale);
			}

A clear and concise description of what the bug is.
CodeIgniter 4 version
4.0.3
Affected module(s)
Time.php , part of CodeIgniter\I18n
Expected behavior, and steps to reproduce if appropriate
Should load the file

You need to have the intl extension installed on your machine.

@paulbalandan  Thank you for that  , did not realize it via the docs, might be handy to mention it in docs, if it is somewhere I missed it sorry, thanks again.

You need to have the intl extension installed on your machine.

For extra reference thanks to paulbalandan comment I found the php manual doc entry for it
https://www.php.net/manual/en/class.locale.php
one can get the install info etc from there based on the pacakge the class in part of.
(https://www.php.net/manual/en/book.intl.php)

It's okay. It is stated in the README.
https://github.com/codeigniter4/CodeIgniter4#server-requirements

Thank you again @paulbalandan  for the quick help. Then all good I just missed it. Thanks again

Thanks

I'm facing this problem after setting vhost, if i run serve with spark cml: php spark serve it's ok, when i try using vhost, i get locale class not found.
Note: intl extension in php.ini without semicolon.
Anyone pls send me a solution to fix this. Thank you very much!
My OS: MacOS 13.0
Model: Mac Air M1 2020

You need to have the intl extension installed in your vhost PHP.

@huynhminhsangit you need to enable extension in php.ini for php-cli. There will be 2 php.ini files. You have to do in php-cli too.

I try view in location you suggest but not see it

You need to know where the php.ini locates. There may be many php.ini in your PC.
You can find the path with the phpinfo() function for web, or the php --ini command for CLI.


MSAL use for Azure ML resource deployment

Hi,
I am responsible for deploying Azure ML resources like workspace, compute target and datastore using Python from Azure CI/CD Devops Pipeline.  I have Service principal certificate for authentication. I am confused about which authentication method of Python I will follow.
Shall I used MSAL authentication? or
please suggest a secure authentication method of python that supports Service Principal certificate to authenticate Azure ML workspace.

Please see this document that describes various authentication options, In a CI/CD setup you'd typically use service principal based authentication.
https://docs.microsoft.com/azure/machine-learning/how-to-setup-authentication

#please-close


fix(Slider): Fixed vertical & horizontal slider icons misalignment

Closes #753

Removed the hardcoded width in slider.html for the min and max labels of the horizontal and vertical sliders. Replaced it with styling in the slider.scss. (as mentioned here)
Fixed vertical slider's max and min labels misallginment as mentioned in #753
Also, improved the alignment of the min and the max labels in the horizontal slider (as they were similar to what was done to fix the vertical slider)

I just wanted to confirm, is it okay for the iui-slider-rail of the vertical slider with the icons (red) (height = 436px) to be slightly longer than the iui-slider-rail of the vertical slider with the default numbers (green) (height = 428px)?

No, it's not okay. Let's keep our components consistent.

I just wanted to confirm, is it okay for the iui-slider-rail of the vertical slider with the icons (red) (height = 436px) to be slightly longer than the iui-slider-rail of the vertical slider with the default numbers (green) (height = 428px)?

No, it's not okay. Let's keep our components consistent.

I have currently given a fixed height to the min and max labels (.iui-slider-min/-max) of the vertical slider with the same value as the line height of the text in the min and max labels of the horizontal slider (24px). (Comment). This makes the .iui-slider-rail height (vertical slider) and width (horizontal) the same for sliders with icons or text as labels


Can't submit a Linux Alpine only build

We needed to revert this PR because it broke the Code-OSS build (no jobs ran but the failure was only visible on Azure Pipelines and not on GitHub CI).
This is the only error info available: https://dev.azure.com/monacotools/Monaco/_build/results?buildId=197039&view=results


Incorrect plugin import settings for standalone x86_64

In the latest version 2.0.37 the import settings for x86_64 HrtfDsp.dll are not configured correctly - x64 should be checked in Platform settings for standalone builds. At the moment both available options (x86, x64) are unchecked.

@Daniel4144 Thank you for reporting this issue.  We'll file a bug report in our internal database and make this change when we release the next update.


Make .editorconfig windows friendly

The current .editorconfig causes Intellij on Windows to change files from CRLF to LF, which then causes the license header check to fail (ugh, don't ask).

Won't this then make the newline be inconsistent?

Git always changes it to LF on commit.

Well, it leaves it CRLF in your copy (on Windows), but the committed copy is LF.

No reason for you to know that unless you use Windows 😄


Allow loading of localization files with hash in filename

Localization files have to be loaded every time the page is loaded since there is no way to cache it by their filename.
Lets enable server to export localization .jsons with single definition .json file with this example content:
{
    "languages": {
        "en": {
            name: "English",
            file: "en.7e2c49a622975ebd9b7e.json"
        }
        de": {
            name: "Deutsch",
            file: "de.6e2449a682975ebd9b6d.json"
        }
    }
}

This could be also source for items in language select menu.

Any progress with this?

Yes! Now it's possible to provide exported data using dynamic import or as an object. It's described in this doc page:
https://tolgee.io/docs/web/using_with_angular/angular_preparing_for_production


withSchema and eager joins

Thanks for the new version. While withSchema works on solo queries, is there a way to pass it through to subsequent eager joins?
Eg. User.query().withSchema('1').eager('tasks') correctly uses schema 1 when selecting all users, but the second query to get the tasks doesn't have it. I realise that automatically using the same schema might not always be desired though, if you're doing some sort of cross-schema query. Is there a way to set it easily?

Ok, I'm working round it for now like this:
  .withSchema("1")
  .eager('tasks(schema)', {
    schema: function (builder) {
      builder.withSchema("1");
    }
})```
Obviously a bit clunky, but it works :)

No, there isn't an easier way. You can set a
filter: function (builder) {
  builder.withSchema("1");
}

property for the relation in relationMappings but that would always use the same schema for the relation and that probably isn't what you want.
What do you mean "stops the allowEager"? It doesn't work if you have the filter in place? How does it fail? It should work...

Cheers. Sorry, I didn't explain that very clearly - I had been piping the eager values directly into the query from my route handler (like in the express example):
User.query()
.allowEager(['tasks', 'notes'])
.eager(request.query.eager)

I don't want the API call to have knowledge of the schema system (eg. not using /users?eager=tasks(schema)) but I can add a helper utility to take care of parsing the request params, so that's not really an issue.
Thanks again for the quick responses :+1:

No problem, I'm glad to help. This way the library gets better. Keep the issues coming!
Many of the query builder methods actually execute multiple queries, and there is currently no way to pass data from the original query to the "internal" queries. What do you think about something like this:
User.query()
  .withSchema("1")
  .context({schema: "1"})
  .eager('tasks');

then the context would be available everywhere through builder.context(), even for the "internal" queries. You could for example add a filter for the relations:
filter: function (builder) {
  if (builder.context().schema) {
    builder.withSchema(builder.context().schema);
  }
}

Or better yet, implement your own QueryBuilder:
class MySuperSpecialQueryBuilder extends objection.QueryBuilder {
  constructor() {
    super();
    // Add a withSchema call on build time if the schema is specified
    // in the query context.
    this.onBuild(function (builder) {
      if (builder.context().schema) {
        builder.withSchema(builder.context().schema);
      }
    });
  }
}

// This puts our own query builder into use everywhere.
objection.Model.QueryBuilder = MySuperSpecialQueryBuilder;
objection.Model.RelatedQueryBuilder = MySuperSpecialQueryBuilder;

Do you think you would use a feature like this, or is this too complicated for such a simple problem? This would make many other things possible too.

Access to a context object would be helpful and I can think of several other uses - eg. implementing fine grained permissions, or ensuring audit trails. So yes please!
Subclassing the query builder would also be an option, but yes, a bit complicated.

Hmm, just ran into this same issue but on a many-to-many insert.

Yeah, many-to-many insert creates two inserts: the actual row and the join row. Ugly workaround for until we come up with a solution would be to insert the two rows separately.

The QueryBuilder class has hooks. You can register methods to be ran in different phases of the query execution using methods runBefore, onBuild, runAfter etc but those are only ran for the query at hand and not for any possible other queries.
What if we add those hooks also to the context object so that you can write something like this:
User.query()
  .context({
    onBuild: function (builder) {
      builder.withSchema("1");
    }
  })
  .eager('tasks');

The context.onBuild method would be ran for all started queries. This would solve the insert case also. That is still not that pretty, but now you can for example implement your own query builder that has some allQueriesWithSchema method that does that.
How does this sound?

I'm using ES7 await/async for the first time and so the workaround is not too bad.
I've had a look at subclassing the querybuilder and it seems straightforward, so that looks like the way to go. Accessing the hooks from the internal query is neat though.

Ok, great. You still need the context feature to solve the problem by subclassing the querybuilder. I'm working on it and it seems pretty easy to implement. I'll keep you updated on the progress.

Fab, looking forward to it.

I pushed the first version of the query context feature to a query-context branch, if you want to try it out already. The simplest way to solve your problem is now this:
User.query()
  .context({
    onBuild: function (builder) {
      builder.withSchema("1");
    }
  })
  .eager('tasks');

and this
someModel
  .$relatedQuery('someManyToManyRelation')
  .insert(something)
  .context({
    onBuild: function (builder) {
      builder.withSchema("1");
    }
  });

But a cleaner way to do this is probably by subclassing QueryBuilder like discussed above.
The context can be accessed using queryBuilder.context() for each query that is started by a query builder for which the context was given. The context is also passed to the $beforeInsert, $afterInsert, $beforeUpdate and $afterUpdate model hooks.
The change was quite large, so there may still be bugs in this early version.

:heart: Thanks for doing it so quick!
I tried using it as part of my queries like this
.context({
    onBuild: function (builder) {
      builder.withSchema("1");
    }
  })

and it worked flawlessly.
However, when I try and subclass my QueryBuilder it loses the knex binding:
import { Model, QueryBuilder } from 'objection'

console.log(Model.query()) // knex exists - the Model.knex(...connection...) occurs elsewhere.

class TenantedQueryBuilder extends QueryBuilder {
  constructor() {
    super();
    this.onBuild(function (builder) {
      if (builder.context().schema) {
        builder.withSchema(builder.context().schema);
      }
    });
  }
}

Model.QueryBuilder = TenantedQueryBuilder;
Model.RelatedQueryBuilder = TenantedQueryBuilder;

console.log(Model.query()) // throws with a TypeError - Cannot read property 'knex' of undefined

You need to pass the constructor arguments to super
class TenantedQueryBuilder extends QueryBuilder {
  constructor(...args) {
    super(...args);
    this.onBuild(function (builder) {
      if (builder.context().schema) {
        builder.withSchema(builder.context().schema);
      }
    });
  }
}

:+1: :+1: :+1:
Thanks, worked immediately. This really makes building multi-tenant apps significantly easier, and is much more straightforward than either Sequelize or Bookshelf. I'll keep implementing and let you know if I encounter any issues!

Excellent! I think this will be a useful feature for many purposes.

:thumbsup:

I'll soon release the 0.5.0-alpha.0 version that has an update withSchema method that automatically passes the schema to all internal queries. You no longer need to use the TenantedQueryBuilder subclass.
You can install it using npm install objection@next

Thanks again for this. Objection is a core part of a product I'm developing and it's been a joy to use. I look forward to the future development as well!


Add adal-node code

Coverage increased (+12.8%) to 96.552% when pulling d767eee27203d79f912b8e84bc6fe4025abcc546 on adal-node into e579e56a5469e3303bcbd8ecdc0a007b097086ae on dev.


FPS is not limited by the monitor refresh rate even if the v-sync is enabled

Tested versions

4.3 stable

System information
Windows 11, Dual Monitor (120hz and 60hz) 1920 X 1080 both displays
Issue description
When there are two monitors with different refresh rates. like 120hz and 60hz and 120hz monitor being primary.
If you run any game on 2nd monitor the fps still limits at 120 rather than 60.
This is an issue as per the documentation of the max_fps

If ProjectSettings.display/window/vsync/vsync_mode is Enabled or Adaptive, the setting takes precedence and the max FPS number cannot exceed the monitor's refresh rate.

Note: vsync is enabled
This may be a root cause of another issue where if you move the character a very mild jitter happens when both monitor frequency as well as Physics TPS are same at 60, with
Physics interpolation Enabled or Disabled (both cases)
Also with jitter fix value set between 0.0 to 0.5 (all combinations)
Only case it works: Monitor frequency at 120hz, TPS =60 Jitter value = 0.0, Physics Interpolation = enabled
Steps to reproduce
Prerequisite:

2 monitors with different frequency

Steps:

Create a project and a scene and save it.
Enable the print fps
Run the project in the second monitor and observe the fps output
it will be dictated by the primary monitor.

Works fine in 3.5.3
Minimal reproduction project (MRP)
if required I have a project but it is not applicable

For some reason with me when I enable the v-sync it limits the fps only inside launched games but not 2/3d preview in the editor, but I have only one monitor.

but not 2/3d preview in the editor, but I have only one monitor.

This is because the FPS displayed in the editor is an estimation, not the actual rendered FPS. Therefore, it can display a FPS estimation higher than the monitor refresh rate when V-Sync is enabled, but the actual rendering FPS is still capped.

I have not tested in borderless and full screen mode, I will test and get back on it soon.
one more thing to add if you change the monitor frequency from 120 to 60 or 75 in NVIDIA settings, the FPS is corrected accordingly. when running the game in both the monitors, it will show 60 or 75 accordingly and max FPS could be set to maximum of the primary monitor settings.

This is because the FPS displayed in the editor is an estimation, not the actual rendered FPS. Therefore, it can display a FPS estimation higher than the monitor refresh rate when V-Sync is enabled, but the actual rendering FPS is still capped.
It also felt like that, but numbers shows things different.

I will create a small project and test it out
The only thing left for me is to correct minor jitter when all three (FPS, TPS, and Monitor refresh rate) are same without pushing move_and_slide() to _process

The only thing left for me is to correct minor jitter when all three (FPS, TPS, and Monitor refresh rate) are same without pushing move_and_slide() to _process

To correct jitter, you need to enable physics interpolation in the project settings. It's available in 2D in 4.3, and in 2D and 3D in master.

The problem is physics interpolation seems to not work when the refresh rate is same as TPS and FPS. I am testing it, I hope I am wrong.

Tested a bit more in all the scenarios as asked like borderless, full screen, 3.x,
It seems it is valid bug.

Enabling Vsync limits FPS based on the refresh rate of the primary screen rather than what screen the game runs on.

Also verified it impacts the delta values in _physics_process and _process methods, ultimately it will impact the movement of characters using _physics_process
In 3.5.3, it is not reproducible as FPS and delta values automatically adjust based on the screen.
I agree and I think it is correct that the max FPS should be limited to monitor refresh rates, but by the screen on which the game is running.
I will leave up to you to decide to fix or not fix it. Let me know if I can help in any way.
Finally, regarding the jitter for my basic character movement and fix by the physics Interpolation, it is not the scope of this issue, I may create a separate Issue for it with MRP, but as of now I am working on it, and it is not fixed. The only option I think is directly manipulate the delta values by reverse engineering Physics Interpolataion (just for testing it works).

I had a similar issue here as well. I'm new to this and doing the "Your first 3D game" on the Godot doc, so it's a very simple game. Whenever I'd run the project to test, my GPU usage would spike to around 50% and cause some kind of coil whine even with fps capped and v-sync on in the editor.
I had to limit the fps through the NVIDIA control panel to fix it. Now my laptop doesn't produce a screeching sound and GPU usage is around 11%. And this was happening without any secondary monitor. Once again, I'm new to this so maybe I was just doing something wrong?

It is a limitation in Godot so closing it.


EHN Show names in repr, if provided.

Addresses #368.
I've chosen to show the name of the variables only if it was provided while variable initialization; otherwise there is no benefit from seeing it.
Also, I've not update the repr for Symmetric and Semidef variables because their repr do not conform to the default pattern currently.
I'll be happy to make any stylistic changes.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Coverage increased (+0.03%) to 89.487% when pulling 6e162504d58a3fab5553cad874a61592d9b2874c on musically-ut:feat-improved-repr into 8e895b3f85eab1b2efd7fccb01c159dddbdc8274 on cvxgrp:master.

Umm... I'm not sure if the failures of the CI are related to this PR.


[hotfix][typo] fix typo in CheckpointCoordinator

What is the purpose of the change
fix typo in CheckpointCoordinator
Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)
The S3 file system connector: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

Not a typo.


svgLib: Add support for arcs in SVG path parser

Implement the arc to curve points calculation using the original
svg.path library and use the curve points for the pen.
The Arc class and methods to parameterize and get curve points are
copied.
This makes the svg to glif conversion possible for any SVGs.
Follow up for 71e97b3e74f2cc8061dfd3ada6d436d7ff3173d1

Here is a sample svg having arcs.   Snippets/svg2glif.py should be able to convert this svg to glif successfully.
arc-test.zip


Added snapshot tests to ghost_head helper

refs https://github.com/TryGhost/Team/issues/1795

Snapshots help us detect unexpected changes in the <head> of all sites (e.g., newly introduced script tags)
Added ghost_head tests for comment count helper

Apologies I missed that this was ready for review again - I absolutely adore this change, let's get it merged?


Newly Added Text Incorrectly Highlighted as Comment (LEAN-3509)

Adding highlighted text of comment between two highlightMarker nodes will lead to adding a normal text between them in the editor or if the user hits enter in that range the new node will have the highlightMarker node as described in the issue LEAN-3509. this PR will wrap highlighted text in highlightMarker node so we can show it as a static entity like citation,link node.

Not sure about this. I don't think we want highlights to be treated like citations, and being able to add text in the middle of highlighted text is reasonable and is how it works in every other editor. The only difference between our editor and others is that when you press Enter at the end of a paragraph the new paragraph will not be highlighted (but if you do it in the middle of a paragraph, the new paragraph will be highlighted).
If it's easy to fix this specific case, let's do it, otherwise let's leave this for now and have a discussion with PdM about it.