Discussion: pass request to handler function instead of API endpoint

I am trying to create an LLM chain with state for my application. However, I can only use the request interface to talk to stateless API endpoints on server-side. It would be much more convenient if I could pass a handleRequest function that does any pre-processing of the message, handles state on the client and makes API calls if I so choose. I also read about interceptor functions that can intercept and modify the request, but it still demands it eventually passes to a server API endpoint. A handler function can do the job of requestInterceptor, responseInterceptor and request. I don't think streaming will work though. I am using SvelteKit

Hey @Niceadam, sorry I don't think I fully understand how the handleRequest function would work.

Would you mind elaborating on how it handles state on the client and makes API calls.
If you know of any libraries that already do this, they would be a good reference to see what we are aiming for here.
Also, if you could illustrate how you would intend to use it with a code example, that would be great! Thanks!

Yes, an example would help. Currently from what I understand, deepchat uses request prop to connect to an API endpoint.
<script lang="ts">
  import { onMount } from 'svelte';
  onMount(async () => {
    await import("deep-chat");
  })

  let request = JSON.stringify({
    "url": "/api/chatbot",
    "method": "POST",
  });

</script>

<main>
  <deep-chat
  request={request} />
</main>

Instead I was suggesting a new interface using a handler function:
<script lang="ts">
  import { onMount } from 'svelte';
  onMount(async () => {
    await import("deep-chat");
  })

  async function handleRequest({ request }) {
    // do stuff with request message
    await fetch("/api/chatbot", {method: "post"})
    // do stuff with response
  }
</script>

<main>
  <deep-chat
  handleRequest={handleRequest} />
</main>

I see what you mean, so it is more about constructing the request functionality yourself rather than leaving it to Deep Chat.
Whilst I like the idea - Deep Chat's goal is to minimize the amount of work that developers need to do and provide as much of an out of the box experience as possible, so eliminating the existing methodology would be going in the wrong direction.
Nevertheless, I do not mind bringing in another way to connect to APIs, something that would fit your use-case. However the immediate question I have is what unique things does handleRequest bring that requestInterceptor and responseInterceptor do not. You mentioned that they still demand to pass the request to an API - but doesn't handleRequest also demand this? And if Deep Chat would call this function (when the user attempts to send a message), wouldn't the intention be to retrieve a response?
Perphaps I am misunderstanding the use-case, maybe I could upgrade requestInterceptor to help out?

Just to note, I have recently upgraded responseInterceptor to handle asynchronous responses as there was a dev that had to do other processing before the final result could be set in the chat. I can attempt to do that in requestInterceptor if it would help.
Reference here.

Hi, I updated the requestInterceptor method to be able to handle async functions which should enable you to manipulate state and do other processing before the request is sent out. This is now available in version 1.1.23. Let me know if this helps.

Hi, there has been no activity on this issue for the past 3 days and if you don't mind I will be closing it.
Thankyou once again for the great suggestion! The goal of this and any other library is to help developers achieve their desired use cases, but the true challenge in this process is to facilitate as much as possible with smallest amount of code as possible, otherwise the library would collapse under its own complexity, hence I have to exercise rigorous caution when adding new features/capabilities to Deep Chat.
The core use cases should currently be covered by the interceptor methods, but if I will implement a feature for calling to APIs using a method like handleRequest I will surely re-open this issue.
Thankyou!

I Apologize for my delayed response, I am trying to connect Langchain to the deepchat component. Langchain stores memory of previous messages for context, it stores it on the client since the server is stateless. It also handles the calls to the LLM so there are no manual api calls to be made
<script>
	const llm = new CustomLLMApi();

	// Prompt
	const prompt = ChatPromptTemplate.fromPromptMessages([
		SystemMessagePromptTemplate.fromTemplate(`You are a chatbot talking to a human`),
		new MessagesPlaceholder('history'),
		HumanMessagePromptTemplate.fromTemplate('{input}')
	]);

	const memory = new BufferMemory({ returnMessage: true, memoryKey: 'history' });
	const chain = new ConversationChain({ llm: llm, prompt: prompt, memory: memory, verbose: true });

	async function handleRequest(request) {
		return await chain.call({ input: request.message });
	}
</script>

<DeepChat  handleRequest={handleRequest} />

I tried but couldn't rewrite it in terms of requestInterceptor, since it still requires a url, i tried setting up a dummy echo api endpoint, that just returns back the request, I do this since all my text is generated would already be generated in requestInterceptor  and I would already have my message from chain.call()

Ok I see, so you want to defer the request logic to a different library entirely. That is an interesting use-case and probably something we ultimately need if people want to use langchain and other tools. Let me explore this for a bit and see how I can facilitate this.

Hey, I have created a prototype version of the functionality to facilitate your requirement. It is accessible through the deep-chat-dev component version 9.0.0. This component is used pretty much the same as the deep-chat component, except it is just using a different import name. If you don't mind, could you test it with your use-case just to make sure that it is working the way you need it before I add it to the main library.
The new functionality should be accessible via the following approach:
The request property accepts a new handler value which should be the function containing code similar to what you have described in the handleRequest. The difference is that the function's first argument will contain a Request message body and the return async object should be Result.
Example:
function async handleRequest(body) {
  const message = body.messages[0];
  let response = fetch("/api/chatbot", {
    method: "POST",
    body: {
      message: message,
      chat_history: client_store
    }
  });
  const responseText = 'response';
  return { result: {text: responseText };
}

One additional note, currently the component is still expecting a url to be defined in the request as I haven't yet configured it to not do this, so for the prototype just add a "mock" string to keep the component happy, e.g:
<deep-chat request={{url: "mock", handler: handleRequest}} />

Let me know if this works for and if there are any problems with this. (I will add the functionality for error handling later on, but you can assume that it will be like the one in responseInterceptor.

Thank you for the fantastic response times. The above doesn't work for me with url: "mock" since it just makes a call to http://localhost/current-url/mock and errors out

Hey, that's strange, please check the code in the following live codesandbox to see if it helps.
It is very late where I live and I will be going to bed, I will be able to respond in ~10 hours. Please let me know if you can get it to work, if something doesn't seem right or opportunities for improvements. Thanks!

I am going to bed too, I will do more testing tomorrow since I still need to stringify deep-chat properties otherwise I get Uncaught SyntaxError: JSON.parse: unexpected character , but that is a separate issue.

When using Sveltekit, the trick is to conditionally render the deep-chat when the imported module has loaded. The live code examples have been updated to reflect this as well as the example above. I go into more depth why this needs to be done in the following issue.

I am using deep-chat-dev: 9.0.0 and sveltekit: 1.24.1, I have 2 persisting problems that I tried everything but could not figure it out 1) I still need to JSON.stringify, else I get Uncaught SyntaxError: JSON.parse: unexpected character 2) handler gets completely ignored and makes calls to url anyway, I think I had the same issue with requestInterceptor.
<script lang="ts">
  // Lanchain imports
	import { onMount } from 'svelte';
	import { deepChatStyles } from '$lib/static.js';

	onMount(async () => {
		await import('deep-chat-dev');
		isLoaded = true;
	});

	let isLoaded = false;

  // Langchain stuff...
	const chain = new ConversationChain({ llm: llm, prompt: prompt, memory: memory, verbose: true });

	async function handleRequest(body) {
		console.log(body);
		const response = await chain.call({ input: body.messages[0].text });
		return { result: { text: 'test' } };
	}

	const request = JSON.stringify({
		url: 'mock',
		handler: async (body) => {
			console.log('test');
			return { result: { text: 'test' } };
		}
	});

	const initialMessages = JSON.stringify([{ text: 'Hey, Welcome to test chatbot', role: 'ai' }]);
</script>

<main>
	{#if isLoaded}
		<deep-chat {...deepChatStyles} {initialMessages} {request} />
	{/if}
</main>

That is strange, I have updated to "@sveltejs/kit": "^1.24.1" and everything appears to work fine on my end without the stringification. However I am not using the {...deepChatStyles} syntax which could be the problem on your end. Could you try to remove it and see if it fixes the problem?

To anyone reading this thread and using the Deep Chat version that is 1.3.0 or higher, the result object has been replaced with Response.

Based on a discussion in another issue, I have created another handler function that can be used for streaming called streamHandler. This is a temporary namespace as it uses a different strategy for interacting with Deep Chat that the original handler does not follow and I will merge everything into the one handler function when I can confirm that everything works as expected and I have modified everything to use the same strategy.
What strategy am I talking about? The original handler function above accepts a function that would return a Promise that returns a result when complete. We cannot use this approach in streaming as it expects multiple results for one request and there are other events that take place throughout its lifecycle which Deep Chat needs to be aware of. In the light of this, I have created another approach for streams:
Instead of waiting for a result, the streamHandler function will contain 2 arguments, the 1st will be the request message body (same as in the handler) and second will be events that will contain a map of functions that need to be triggered to tell the Deep Chat component what to do.
The type:
(
  body: any, // message body
  events: {
    onOpen: () => void; // should be called when the stream connection has been established
    onResult: (result: {text?: string; error?: string}) => void; // should be called to update streamed message or notify it about an error
    onClose: () => void; // should be called to allow the user to create a new request
    stopClicked: {listener: () => void}; // this will be triggered by the user and you can attach your own function to the listener to close the stream on your end (the component will no longer listen to the incoming messages any more, so stopping your stream when this is called is optional)
  }
) => void;

Example:
chatElement.request = {
  streamHandler: (body, events) => {
    // this is PSEUDO CODE for creating a stream using the @microsoft/fetch-event-source package and you should
    // tailor this to your streaming approach instead
    try {
      fetchEventSource('http://localhost:8080/chat-stream', {
        method: 'POST',
        body: JSON.stringify(body),
        async onopen(response) {
          if (response.ok) {
            events.onOpen; // stops the loading bubble and replaces it with a message bubble ready to receive text
          } else {
            events.onResult({error: 'Failed to connect to server'});
          }
        },
        onmessage(message) {
          events.onResult({text: message}); // adds text into the message bubble
        },
        onerror(message) {
          events.onResult({error: message}); // Deep Chat will no longer listen to this stream and display an error
        },
        onclose() {
          events.onClose(); // when stream is finished the stop button will be changed back to submit
        },
      });

      // triggered when the user clicks the stop button
      events.stopClicked.listener = () => {
        // logic to stop your stream, such as creating an abortController
      };
    } catch (e) {
      events.onResult({error: 'error'}); // Deep Chat will no longer listen to this stream and display an error
    }
  },
}

This is available in version 9.0.3 in deep-chat-dev and deep-chat-react-dev.
@GIOVANNI-75, let me know if you have any questions or issues when using this, thanks!

You were right, I was trying to spread props using the {...props} syntax but it doesn't seem to work for some reason. The handler function now works, Thanks!

That is strange, I have updated to "@sveltejs/kit": "^1.24.1" and everything appears to work fine on my end without the stringification. However I am not using the {...deepChatStyles} syntax which could be the problem on your end. Could you try to remove it and see if it fixes the problem?
Also, if you copy the code in this codesandbox, does it work for you?

it doesn't work for me

It works very well, some comments: (deep-chat-dev & react-dev)
the Url argument is still necessary, requestInterceptor & onNewMessage event no longer receives data, but data recovery is still possible via the streamHandler, moreover it is simpler logically to do everything there, fetch, logic and recovery of body , it doesn't pose a problem but it was just so that you take them into account.
I can never thank you enough for your work 🙏🏻

Happy to hear it is working for both of you!
I just looked at the code and saw that I accidentally removed the logic for the url to not be required (Doh!). I will release another update tomorrow where the url will be fixed and the interceptors and onNewMessage will also work as expected. Thankyou for letting me know!
If you experience any other issues or have any form of other feedback let me know!

Hey, I have made a lot of changes to the handler API functionality which should be its final iteration that is ready to be merged into the core package.
Handler functionality is now available for basic http requests, streams and websockets using the same handler property. It uses a Signals interface which is a map of functions that will notify Deep Chat on what is happening in the handler.
Type:
handler?: (body: any, signals: Signals) => void;

Signals {
  onResponse: (response: Response) => void;
  onOpen?: () => void;
  onClose?: () => void;
  stopClicked?: {listener: () => void}; // exclusive for streams
  newUserMessage?: {listener: (body: any) => void}; // exclusive for websockets
}

The onResponse function uses the Response type as its argument and is used for both successful and error responses.
Basic requests
Basic HTTP requests only use the onResponse signal:
chatElement.request = {
  handler: (body, signals) => {
    try {
      // other logic
      signals.onResponse({text: 'response text'});
    } catch (e) {
      signals.onResponse({error: 'error'});
    }
  },
}

Streaming/SSE
Make sure to have the stream property set to true:
If you are using TypeScript, you will need to add optionals around the signals if your linter is giving errors.
chatElement.request = {
  handler: (body, signals) => {
    // this is PSEUDO CODE for creating a stream using the @microsoft/fetch-event-source package and you should
    // tailor this to your streaming approach instead
    try {
      fetchEventSource('http://localhost:8080/chat-stream', {
        method: 'POST',
        body: JSON.stringify(body),
        async onopen(response) {
          if (response.ok) {
            signals.onOpen(); // stops the loading bubble and replaces it with a message bubble ready to receive text
          } else {
            signals.onResponse({error: 'Failed to connect to server'});
          }
        },
        onmessage(message) {
          signals.onResponse({text: message}); // adds text into the message bubble
        },
        onerror(message) {
          signals.onResponse({error: message}); // Deep Chat will no longer listen to this stream and display an error
        },
        onclose() {
          signals.onClose(); // when stream is finished the stop button will be changed back to submit
        },
      });

      // triggered when the user clicks the stop button
      signals.stopClicked.listener = () => {
        // logic to stop your stream, such as creating an abortController
      };
    } catch (e) {
      signals.onResponse({error: 'error'}); // Deep Chat will no longer listen to this stream and display an error
    }
  },
}

Websockets
Make sure to have the websocket property set to true. This example works with the example websocket project right out of the box. The onOpen property allows the user to send messages and if something happens to the connection using onClose prevents them from sending messages again for a better UX. Sending the "Connection error" error message will also display this error message inside the chat. This can be further customized using the errorMessages property.
If you are using TypeScript, you will need to add optionals around the signals if your linter is giving errors.
chatElement.request = {
  websocket: true,
  handler: (_, signals) => {
    try {
      const websocket = new WebSocket('ws://localhost:8080');
      websocket.onopen = () => {
        signals.onOpen();
      };
      websocket.onmessage = (message) => {
        const response = JSON.parse(message.data);
        signals.onResponse(response);
      };
      websocket.onclose = () => {
        signals.onClose();
        // reconnection logic here
      };
      websocket.onerror = () => {
        signals.onResponse({error: 'error'});
        // you can also use send 'Connection error' string to display the error, also explore errorMessages property
      };
      signals.newUserMessage.listener = (body) => {
        websocket.send(JSON.stringify(body));
      };
    } catch (e) {
      signals.onResponse({error: 'error'});
      signals.onClose();
      // reconnection logic here
    }
  },
}

Error Handling
All error handling must be done inside the handler and respond using the onResponse({error: message}) signal.
Release
This is currently available in deep-chat-dev and deep-chat-react-dev version 9.0.5. If all goes well, I am hoping to release this in the main deep-chat packages tomorrow.
Please send any feedback in regards to this.

Hey, I have made a lot of changes to the handler API functionality which should be its final iteration that is ready to be merged into the core package.
Handler functionality is now available for basic http requests, streams and websockets using the same handler property. It uses a Signals interface which is a map of functions that will notify Deep Chat on what is happening in the handler.
Type:
handler?: (body: any, signals: Signals) => void;

Signals {
  onResponse: (response: Response) => void;
  onOpen?: () => void;
  onClose?: () => void;
  stopClicked?: {listener: () => void}; // exclusive for streams
  newUserMessage?: {listener: (body: any) => void}; // exclusive for websockets
}

The onResponse function uses the Response type as its argument and is used for both successful and error responses.
Basic requests
Basic HTTP requests only use the onResponse signal:
chatElement.request = {
  handler: (body, signals) => {
    try {
      // other logic
      signals.onResponse({text: 'response text'});
    } catch (e) {
      signals.onResponse({error: 'error'});
    }
  },
}

Streaming/SSE
Make sure to have the stream property set to true:
If you are using TypeScript, you will need to add optionals around the signals if your linter is giving errors.
chatElement.request = {
  handler: (body, signals) => {
    // this is PSEUDO CODE for creating a stream using the @microsoft/fetch-event-source package and you should
    // tailor this to your streaming approach instead
    try {
      fetchEventSource('http://localhost:8080/chat-stream', {
        method: 'POST',
        body: JSON.stringify(body),
        async onopen(response) {
          if (response.ok) {
            signals.onOpen(); // stops the loading bubble and replaces it with a message bubble ready to receive text
          } else {
            signals.onResponse({error: 'Failed to connect to server'});
          }
        },
        onmessage(message) {
          signals.onResponse({text: message}); // adds text into the message bubble
        },
        onerror(message) {
          signals.onResponse({error: message}); // Deep Chat will no longer listen to this stream and display an error
        },
        onclose() {
          signals.onClose(); // when stream is finished the stop button will be changed back to submit
        },
      });

      // triggered when the user clicks the stop button
      signals.stopClicked.listener = () => {
        // logic to stop your stream, such as creating an abortController
      };
    } catch (e) {
      signals.onResponse({error: 'error'}); // Deep Chat will no longer listen to this stream and display an error
    }
  },
}

Websockets
Make sure to have the websocket property set to true. This example works with the example websocket project right out of the box. The onOpen property allows the user to send messages and if something happens to the connection using onClose prevents them from sending messages again for a better UX. Sending the "Connection error" error message will also display this error message inside the chat. This can be further customized using the errorMessages property.
If you are using TypeScript, you will need to add optionals around the signals if your linter is giving errors.
chatElement.request = {
  websocket: true,
  handler: (_, signals) => {
    try {
      const websocket = new WebSocket('ws://localhost:8080');
      websocket.onopen = () => {
        signals.onOpen();
      };
      websocket.onmessage = (message) => {
        const response = JSON.parse(message.data);
        signals.onResponse(response);
      };
      websocket.onclose = () => {
        signals.onClose();
        // reconnection logic here
      };
      websocket.onerror = () => {
        signals.onResponse({error: 'error'});
        // you can also use send 'Connection error' string to display the error, also explore errorMessages property
      };
      signals.newUserMessage.listener = (body) => {
        websocket.send(JSON.stringify(body));
      };
    } catch (e) {
      signals.onResponse({error: 'error'});
      signals.onClose();
      // reconnection logic here
    }
  },
}

Error Handling
All error handling must be done inside the handler and respond using the onResponse({error: message}) signal.
Release
This is currently available in deep-chat-dev and deep-chat-react-dev version 9.0.5. If all goes well, I am hoping to release this in the main deep-chat packages tomorrow.
Please send any feedback in regards to this.

@GIOVANNI-75 in regards to the requestInterceptor and onNewMessage not working in the previous version, I could not  replicate the problem and it was working for me. By any chance, could you try the version 9.0.5 to see if they work for you there just in-case I am not catching some problem.

Hey folks, the request handler functionality is now available in Deep Chat version 1.3.2 🎉🎉🎉🎉
Thankyou very much for your guidance and critical feedback to get this feature out and without your efforts it would not exist today.
I have additionally released a video to help introduce developers to this functionality.
Thankyou once again! If you experience any issues with this feature or have suggestions to improve it, feel free to add a comment here. For everything else, do not hesitate to create new issues. Thankyou!!!!!

It is a bit difficult to write the handler js functoin inside the connect json object in plain html w/ vanilla js.
Is it possible to add a onSubmmit event or beforeHandler listener to point to a js function?


onAction: fix sub prefix

Ternary statement was broken. Should fix the naming of subscriptions, rather than putting out undefined. Thanks! cc/ @timwis

Coverage increased (+0.04%) to 94.656% when pulling 4ed1c5f67603c5199f4e1f733bdc3ae3be065039 on fix-sub-name into b8a6d8e33f9a65456ab4c41cf331c3afde61acd4 on master.

Tests pass and see no harm in merging - means new version of choo-logger can be pushed :sparkles:

Published as v8.0.2


Update usages of torch.library APIs

We deprecated impl_abstract. This PR replaces it with the new API (register_fake). register_fake also (sometimes) requires a set_python_module in C++, so I add that as well.
Test Plan:

existing tests

hello，when i install vision by source code，i got this error：
/home/gai_test/wuyang/vision/torchvision/csrc/ops/nms.cpp:22:5: error: ‘class torch::Library’ has no member named ‘set_python_module’
   22 |   m.set_python_module("torchvision._meta_registrations");
      |     ^~~~~~~~~~~~~~~~~
error: command '/usr/bin/gcc' failed with exit code 1

is there any solutions?
thank you!

hello，when i install vision by source code，i got this error：
/home/gai_test/wuyang/vision/torchvision/csrc/ops/nms.cpp:22:5: error: ‘class torch::Library’ has no member named ‘set_python_module’
   22 |   m.set_python_module("torchvision._meta_registrations");
      |     ^~~~~~~~~~~~~~~~~
error: command '/usr/bin/gcc' failed with exit code 1

is there any solutions? thank you!

It seems like the versions are not matching. You can check the corresponding versions of Torch and TorchVision on the official website, and then switch TorchVision’s source code to the appropriate version.
INSTALLING PREVIOUS VERSIONS OF PYTORCH

hello，when i install vision by source code，i got this error：
/home/gai_test/wuyang/vision/torchvision/csrc/ops/nms.cpp:22:5: error: ‘class torch::Library’ has no member named ‘set_python_module’
   22 |   m.set_python_module("torchvision._meta_registrations");
      |     ^~~~~~~~~~~~~~~~~
error: command '/usr/bin/gcc' failed with exit code 1

is there any solutions? thank you!

It seems like the versions are not matching. You can check the corresponding versions of Torch and TorchVision on the official website, and then switch TorchVision’s source code to the appropriate version. INSTALLING PREVIOUS VERSIONS OF PYTORCH

I got the same problem, while I'm using torch==2.4.0 torchvision==0.19.0 on jetson(arch). They are matched.But I got error:
/vision-0.19.0/torchvision/csrc/ops/nms.cpp:22:5: error: ‘class torch::Library’ has no member named ‘set_python_module’


Implement outbound flow control

Prevent excessive buffering on the outbound stream observer using manual flow control

Codecov Report

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

@@            Coverage Diff             @@
##             develop      #42   +/-   ##
==========================================
  Coverage           ?   88.21%
  Complexity         ?       19
==========================================
  Files              ?       14
  Lines              ?      263
  Branches           ?       40
==========================================
  Hits               ?      232
  Misses             ?        9
  Partials           ?       22

Impacted Files
Coverage Δ
Complexity Δ

...us/coroutines/client/ClientStreamingCallChannel.kt
100% <100%> (ø)
0 <0> (?)

...s/coroutines/client/ClientResponseStreamChannel.kt
100% <100%> (ø)
9 <9> (?)

...rrer/krotoplus/coroutines/server/ServerChannels.kt
88.88% <100%> (ø)
0 <0> (?)

...oferrer/krotoplus/coroutines/client/ClientCalls.kt
96.29% <100%> (ø)
0 <0> (?)

...otoplus/coroutines/client/ClientBidiCallChannel.kt
100% <100%> (ø)
0 <0> (?)

...rcoferrer/krotoplus/coroutines/call/FlowControl.kt
77.27% <73.68%> (ø)
0 <0> (?)

.../marcoferrer/krotoplus/coroutines/call/CallExts.kt
82.85% <77.77%> (ø)
0 <0> (?)

...oferrer/krotoplus/coroutines/server/ServerCalls.kt
83.54% <85%> (ø)
0 <0> (?)

...utines/call/FlowControlledInboundStreamObserver.kt
86.36% <86.36%> (ø)
0 <0> (?)

Continue to review full report at Codecov.

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


Add free books from oreilly

Hi,
Can we add free books from Oreilly? http://www.oreilly.com/programming/free/

I can add them.

Done! Thanks to contributor @lougeniaC64


[$500] Desktop - Avatar isn't showing in the chat row until clicking into that row

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: <IP_ADDRESS>
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @kevinksullivan
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1697055821976289
Action Performed:

Sent a DM message to ~20 customers via our internal compose tool
Logged in
Saw the DMs

Expected Result:
All DMs would have the avatar of the person I am speaking with in the row
Actual Result:
Some of the DMs didn't show an avatar until clicking into that DM
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

http://g.recordit.co/96JvXGqDgK.gif

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~016c1d1ffb1e39b663
Upwork Job ID:<PHONE_NUMBER>749863936
Last Price Increase: 2023-11-02

Seeing as this applies to the Compose tool this will need to be internal.

Not overdue, forgot I to also add Engineering label.
Just want to check first though -- @situchan do you agree that this needs an internal engineer to make BE changes?

@stephanieelliott I think we should fix this in frontend.

Ah ok, thanks @situchan, adjusting labels.

Not overdue, awaiting proposals.

Still awaiting proposals.

Hi! I'm Bartek from Callstack and would to work in this issue. I'm gonna start to debug this and I'll be back with a proposal ASAP.

Could You just explain what is 'internal compose tool'?
Just wonder if I'm able to reproduce that by sending messages from. the app
@situchan @stephanieelliott

I am not sure. @kevinksullivan or @stephanieelliott may have answer.

Hey @kevinksullivan are you referring to the Compose tool in Concierge? Or are you referring to sending a group DM in newdot?

@kevinksullivan please send more information on how You send these 20s messages. That  helps me to reproduce the issue ;)

Looking at the thread in Slack, this seems to be our internal composer tool. As discussed there we should move this back to internal!
https://expensify.slack.com/archives/C049HHMV9SM/p1697055821976289

Does this affect the users receiving the messages? Or just our internal employees?

@puneetlath it affects the message sender only - so only our internal employees in this case!

Ok got it. Seems not super urgent then.
And when you sign out and sign back in, are the avatars in the LHN? My guess is that we don't send a pusher update which is why this is the case.

@stephanieelliott just a friendly bump on the question above when you have a chance.

Just tested @puneetlath -- yep, the avatars populate in the LHN on signout/signin!

Hey @puneetlath what do you think about this one -- worth fixing? If yes, does it need to be fixed internally or is there a portion we can make external?

I'm thinking that it's not worth fixing right now since it only affects internal employees. What do you think?

I agree, esp considering it doesn't affect functionality. Let's close it for now!


AWS: Improve worker pool name

In https://github.com/kinvolk/lokomotive/pull/638/commits/20b7b696a61ba6ec706140feeaae6c25dfb3dfae we reverted a change which prefixed an auto scaling group name with the cluster name. Having the prefix has the following advantages:

It makes it less likely to have name clashes (ASG names must be unique).
It helps keep things DRY in the cluster config (the user doesn't have to prefix the worker pool name with the cluster name).
It makes it easy to see which cluster an ASG belongs to.

The reason for reverting was avoiding breaking upgrades. Maybe we can find a way to make this change in two phases across two releases without breaking things? :thinking:

Another problem:
cluster "aws" {
  ...
  cluster_name     = "johannes-test"

  worker_pool "johannes-test-p1" { ... }
}

The above config results in instances with the following name: johannes-test-johannes-test-p1-worker. I cannot omit the johannes-test- prefix in worker_pool because then the ASG is named p1.

The reason for reverting was avoiding breaking upgrades. Maybe we can find a way to make this change in two phases across two releases without breaking things? thinking

One way would be to add new autoscaling group with new name and then resize old group to 0, but we would have to make sure that the operation is done gracefully. Then, in the next release we can simply remove old group.


CSV import is being truncated

It appears that the CSV import is being truncated. I have a list of keywords here
keywords.txt
When importing using the popup, the list stops at letter "L" and goes no further.

Sorry - this was my fault. The data I thought was correct contained erroneous commas. Works as intended once the source is correct.


Bring server up to date with schemas

Schemas change: https://github.com/ga4gh/schemas/pull/378 needs to be reflected in the server.

I updated the Compliance suite to match the schemas, including https://github.com/ga4gh/schemas/pull/378.  Now several tests fail with HTTP response 404 in calls to searchReferences with default SearchReferencesRequest.  The exception body is
{"errorCode":1854344246,"message":"referenceSetId 'None' not found"}

(errorCode may vary)
I'm doing this to get the reference ID.  The client.references.searchReferences(refsReq) call throws the exception.
    public static String getValidReferenceId(Client client) throws AvroRemoteException {
        final SearchReferencesRequest refsReq = SearchReferencesRequest.newBuilder().build();
        final SearchReferencesResponse refsResp = client.references.searchReferences(refsReq);
        final List<Reference> references = refsResp.getReferences();

        return references.get(0).getId();
    }

This may be a thinko on my part, or it may be a different bug entirely.  According to the comments in SearchReferencesRequest in referencemethods.avdl,
/**
  If not null, return only references which belong to this reference set.
  */
  union { null, string } referenceSetId = null;

it should be legit to issue a SearchReferencesRequest without settings its referenceSetId field.
However, when I do set it, the call to searchReferences works.  The modified code is:
public static String getValidReferenceId(Client client) throws AvroRemoteException {
        final SearchReferenceSetsRequest refSetsReq = SearchReferenceSetsRequest.newBuilder().build();
        final SearchReferenceSetsResponse refSetsResp = client.references.searchReferenceSets(refSetsReq);

        final List<ReferenceSet> refSets = refSetsResp.getReferenceSets();
        final SearchReferencesRequest refsReq = SearchReferencesRequest
                .newBuilder()
                .setReferenceSetId(refSets.get(0).getId())
                .build();
        final SearchReferencesResponse refsResp = client.references.searchReferences(refsReq);
        final List<Reference> references = refsResp.getReferences();

        return references.get(0).getId();
    }

See PR ga4gh/schemas#392 for an update on this. Basically, this is a bug in the schemas in my view and should be fixed.

Looks like @dcolligan is working on this in #600.

There is one more PR open on the schemas that we need to include before we can close this issue: ga4gh/schemas#403.

Mostly fixed in #600

Fixed in #623.


Update app.js

Summary
Describe the goal of this PR. Mention any related Issue numbers.
Requirements (place an x in each [ ])

[ ] I've read and understood the Contributing Guidelines and have done my best effort to follow them.
[ ] I've read and agree to the Code of Conduct.

Hey @andresgarcia-unanime, we will not be accepting this patch. I do not think this statement is correct:

// Heroku don't support fixed port

Heroku definitely supports binding to a specific port. Heroku's docs mention to bind to a port specified by the PORT environment variable. It is even used in the heroku getting-started node-js application template.


the time training for one epoch with boundary-loss is too long, are there some answers？

@min-star , Yes, it takes so long because the distance transform map was computed online. It's a good research topic to reduce the computational cost for distance transformap-related loss functions.

thanks for your answer!


[explore] checkbox control won't uncheck

Coverage remained the same at 69.118% when pulling 41cbff39bedbaf4617b6598b617ea820548ed734 on mistercrunch:fix_checkbox into 147c12dddf0da742f1c33c6fee3b2a4b9dbd12c8 on apache:master.

Coverage remained the same at 69.118% when pulling 97dcec5675786af1421f885f7b6eda61883c0a19 on mistercrunch:fix_checkbox into 147c12dddf0da742f1c33c6fee3b2a4b9dbd12c8 on apache:master.

Coverage remained the same at 69.118% when pulling 97dcec5675786af1421f885f7b6eda61883c0a19 on mistercrunch:fix_checkbox into 147c12dddf0da742f1c33c6fee3b2a4b9dbd12c8 on apache:master.

Coverage remained the same at 69.118% when pulling 97dcec5675786af1421f885f7b6eda61883c0a19 on mistercrunch:fix_checkbox into 147c12dddf0da742f1c33c6fee3b2a4b9dbd12c8 on apache:master.


evalutation error on my own dadaset

Hi , I trained a model on my own dataset, i met such error when i evalutate the model ,what's wrong about it?
julie@loaclhost compressai % python -m compressai.utils.eval_model checkpoint /Users/julie/compressai/data/test/ -a bmshj2018-factorized -p checkpoint_best_loss.pth.tar
Traceback (most recent call last):
File "/Users/julie/opt/anaconda3/envs/torch/lib/python3.8/runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/Users/julie/opt/anaconda3/envs/torch/lib/python3.8/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/Users/julie/compressai/compressai/utils/eval_model/main.py", line 286, in
main(sys.argv[1:])
File "/Users/julie/compressai/compressai/utils/eval_model/main.py", line 264, in main
model = load_func(*opts, run)
File "/Users/julie/compressai/compressai/utils/eval_model/main.py", line 145, in load_checkpoint
return architectures[arch].from_state_dict(torch.load(checkpoint_path)).eval()
File "/Users/julie/compressai/compressai/models/priors.py", line 184, in from_state_dict
N = state_dict["g_a.0.weight"].size(0)
KeyError: 'g_a.0.weight'

Hi, thanks for the report!
Did you train a model based on the bmshj2018-factorized architecture? or the toy network in the example training file?
Can you run print(torch.load("checkpoint_best_loss.pth.tar").keys()) ?

Hi, thanks for the report!
Did you train a model based on the bmshj2018-factorized architecture? or the toy network in the example training file?
Can you run print(torch.load("checkpoint_best_loss.pth.tar").keys()) ?

Hi, thanks for the report!
Did you train a model based on the bmshj2018-factorized architecture? or the toy network in the example training file?
Can you run print(torch.load("checkpoint_best_loss.pth.tar").keys()) ?

Thanks so much for your quick reply!
I trained the model in the example  training file:
python3 examples/train.py -d /path/to/my/image/dataset/ --epochs 300 -lr 1e-4 --batch-size 16 --save , just replace my own dataset;  So what should i use about the argument  "-a ?"
when i run the :"print(torch.load("checkpoint_best_loss.pth.tar").keys())",  got "dict_keys(['epoch', 'state_dict', 'loss', 'optimizer', 'aux_optimizer'])"

Hi, thanks for the report!
Did you train a model based on the bmshj2018-factorized architecture? or the toy network in the example training file?
Can you run print(torch.load("checkpoint_best_loss.pth.tar").keys()) ?

Thanks so much for your quick reply!
I trained the model in the example  training file:
python3 examples/train.py -d /path/to/my/image/dataset/ --epochs 300 -lr 1e-4 --batch-size 16 --save , just replace my own dataset;  So what should i use about the argument  "-a ?"
when i run the :"print(torch.load("checkpoint_best_loss.pth.tar").keys())",  got "dict_keys(['epoch', 'state_dict', 'loss', 'optimizer', 'aux_optimizer'])"

ok thanks, so the toy model in the example training file is not defined in the reference compressai models. If you want to use compressai.utils.eval_model you need to use one of the implemented architecture or add support for a custom architecture.

ok thanks, so the toy model in the example training file is not defined in the reference compressai models. If you want to use compressai.utils.eval_model you need to use one of the implemented architecture or add support for a custom architecture.

ok thanks, so the toy model in the example training file is not defined in the reference compressai models. If you want to use compressai.utils.eval_model you need to use one of the implemented architectures or add support for a custom architecture.

Hi, I trained the model in the following command:
python3 examples/train.py -m bmshj2018-factorized -d images
--batch-size 16 -lr 1e-4 --save --cuda
bmshj2018-factorized is the default architecture. However, when I evaluate the model with the command:
python -m compressai.utils.eval_model checkpoint images/test
-a bmshj2018-factorized -p checkpoint.pth.tar
I got the error:
File "/project/6003167/compressai/compressai/models/google.py", line 285, in from_state_dict
N = state_dict["g_a.0.weight"].size(0)
KeyError: 'g_a.0.weight'


We could not find your user account - For old users

Describe the bug
I have a user I created 2 months ago, before I deployed PassCore - When I try to change his password, I get the following error:
We could not find your user account.
But if I create a new user in AD, there is no problem reseting his password.
To Reproduce
Steps to reproduce the behavior:

Tried to change an old user pass, not working
Created new user, changed his pass - now it works

Expected behavior
To change everyone password, no matter when the user has been created.
Version: PassCore v3.1.0

@AvivMalka @bmeyer06 Hey guys, please indicate what OS' you're running Passcore on; as well as if you are relying on Active Directory, or LDAP. I know the latter is being worked on for improvements.

I'm running it on Windows Server 2016 Datacenter. It's relying on Active Directory.

@AvivMalka @bmeyer06 I think this can be a problem for old group policies, and/or an inability for the user to log into the server; #147 might be related.

I don't see how that could be. I have a subset group of users that all perform the same function, are all members of the exact same security groups and user accounts all exist in the same OU, and the issue happens on ~25% of them (give or take).
On the server side, the new environment (which has the issue) is running 2016. The older environment (which works great for everyone) is running 2012 R2. They have the exact same GPOs applied and are in the same OU. So unless it's somehow something with the GPO that only affects server 2016 - but if that was the case I imagine that it would impact all users, not a subset.

@bmeyer06 At my last job, where I deployed Passcore, I observed a behavior like you're describing with users that hadn't been active on the system in a while. Remote users may need to log in on the actual network itself, to get their AD profiles to update correctly. The company was also doing stringent password requirements.

Hi I have installed successfully. I am able to browse. configured all required information. Now the problem is, when we try to change password it shows message "We could not find your user account" Pl. help here in diagnose the problem and resolve the same.

@unquietwiki Windows 2012 R2 with Active Directory.
I still don't see anything on the logs.. Tried to reinstall it so many times - nada

I'm having this issue as well - "We could not find your user account"
I've updated the DefaultDomain in appsettings.json and have tried both our usual domain and our short domain names.  With the previous version I would append the domain in passwordcontroller.cs by doing model.Username +=<EMAIL_ADDRESS>, and it worked ... but domain.com doesn't work for the DefaultDomain.
Is there any logging besides the IIS logging that can make it so that I can see the exact LDAP query that's being sent to our DC?
Passcore is running on 2008R2 querying AD.

Hi,
Same here, no errors in logs. It only works for new created users... Important to note that "old users" was created copying existing ones (for group membreship) with "password never expire" and now I want to use this website to force all to change their AD passwords. I have installed on multiple machines (including one DC) with same result.
Passcore running on Windows2016Server Standard (1607) querying AD.
Thank you

Please check issue #221
Closing this ticket.


Move docs to gh-pages branch

Since the docs are auto-generated it would be better to have them in the gh-pages branch. This would simplify access (GitHub serves the HTML automatically) and also avoid inadvertent editions of the HTML in the main branch.

best practice is to have the markdown sources in main branch and render as html in the gh-pages branch.


** Online Manual ** here in Wiki

The manual for this ESPRI project is Online available in the Wiki.

You can also select  at the top

If you have an idea for the manual, create an Issue with label [Documentation]

Hi there, my first comment, great work! how do I set the esp32 so it can be connected with my local WIFI pls? I can't find anything in the user manual talks about it. I tried to change the wifi to the 'station mode', but I am now stuck and can not connect with the the http://<IP_ADDRESS> anymore. Can anyone help pls?


[ci] Add branch protections to .asf.yaml

Moving these into the repo means we will be able to change them at-will.
tvm-ci/pr-merge will change soon into tvm-ci/pr-head to fix an
unrelated bug, but codifying it here means we can more easily coordinate
the change.
cc @areusch

cc @tqchen did we figure out where the current restriction is?

Those steps sound reasonable to me

btw @driazati on a separate topic, any background reading about pr-head?

It's to fix the CI behavior where editing your PR title/body would trigger a CI rebuild even if no code was pushed, see https://github.com/apache/tvm/pull/10778 for detaisls

I see, thanks, I just searched around and did not find a lot about pr-head, would be nice to have a link to doc if there is any, but not required for the pr


CI: Add GitHub workflows, including testing, linting, release drafting, and documentation generation

Introduce workflows for automating release notes drafting, documentation generation, and dependency updates, enhancing CI/CD processes.
Copied from:

https://github.com/airbytehq/airbyte-python-cdk-test/pull/1

@coderabbitai review

@coderabbitai review


if let semantically equivalence to if is wrong w.r.t. scope

The equivalence is wrong because the scope of the expression in the predicate has to live as long as the consequent because of the ability to ref in the pattern.
Or something like that.

For the record:
if let a = b { c } /* optional else */ d

Desugars to:
match b {
    a => c,
    _ => d
}

So b is in scope, not only for c but also for d (except for what a moves out).


OpenVINO integration improvements

Changed sync inference call with async call – that boost throughput with multi concurrency
Added option to configure more parameters – performance_hint and numeric value of NUM_STREAMS. That way it is possible to tune the performance to the load
Added documentation and example how to configure triton for low and high concurrency load
Added and documented all OV frontends – before only IR format was supported

Thanks for the contribution and explanation on the question! Can you fill and email us the CLA?

Received the CLA. Thanks for your contribution!


Additional option "skipAnnotations" for the export of spec

I added an additional option "skipAnnotations" for the export of spec. When we export the spec and the user wants to share the spec with others, outside the organization, the annotations reveal sensitive information about the configuration of the kong gateway, like client_ids and clients_secrets. If the flag -s is set, all x-kong-* annotations are removed. I also adjusted the tests.

@mod42 did you push all your changes? Only see a new test added on files here.


sheetCore: make configs require types?

This probably isn't going to happen.   If you need to convert things into Sheets-compatible dates, use a kiDataClass or the convertToSheetDate_ function.


Question regarding the native T1w to ACPC alignment matrix in qsiprep version 18.0

When the qsiprep version 18.0 is run, for the anat results, we get something like
dyhan316@node1:	~.../QSIPREP/qsiprep/sub-130917/anat$ ls
sub-130917_desc-aseg_dseg.nii.gz
sub-130917_desc-brain_mask.nii.gz
sub-130917_desc-preproc_T1w.nii.gz
sub-130917_dseg.nii.gz
sub-130917_from-MNI152NLin2009cAsym_to-T1w_mode-image_xfm.h5
sub-130917_from-orig_to-T1w_mode-image_xfm.txt
sub-130917_from-T1wACPC_to-T1wNative_mode-image_xfm.mat
sub-130917_from-T1wNative_to-T1wACPC_mode-image_xfm.mat
sub-130917_from-T1w_to-MNI152NLin2009cAsym_mode-image_xfm.h5

We want to use the sub-130917_from-T1wNative_to-T1wACPC_mode-image_xfm.mat matrix to perform flirt. However, the .mat is something like :
{'Euler3DTransform_double_3_3': array([[-2.77838481e-01],
       [-2.69921907e-02],
       [-9.94353438e-02],
       [ 3.00136876e+00],
       [-5.26759567e+01],
       [-3.28785992e+00]]), 'fixed': array([[ 0.23592858],
       [21.99948692],
       [ 9.74520206],
       [ 0.        ]])}

How can I change this into a 4x4 matrix form to use for flirt?

You can use c3d to convert  between ITK transforms and FSL-style transforms. Something like
c3d_affine_tool -ref sub-130917_desc-preproc_T1w.nii.gz -src your_non-acpc_image.nii -itk sub-130917_from-T1wNative_to-T1wACPC_mode-image_xfm.mat -ras2fsl -o fsl_transformation_file.mat
should work. More robust would be to use antsApplyTransforms -d 3 -i your_non-acpc_image.nii -o your_image_in_acpc.nii -t sub-130917_from-T1wNative_to-T1wACPC_mode-image_xfm.mat --interpolation BSpline

@mattcieslak  Thank you for your response! Using antsApplyTrnasform on the mat file, I was able to get something like this!  (The base grey image is the qsiprep image, and the overlay is the warped BIDS anat image)

The code used was
##1. read images (https://antspy.readthedocs.io/en/latest/core.html#ants.image_read)
bids_img = ants.image_read(filename = './BIDS/sub-150758/anat/sub-150758_T1w.nii.gz')
qsi_img = ants.image_read(filename = './QSIPREP/sub-150758/anat/sub-150758_desc-preproc_T1w.nii.gz')

##2. Apply the trnasform
warped_image = ants.apply_transforms(fixed = qsi_img, moving = bids_img,
                     transformlist = './QSIPREP_ver18_with_matrix/sub-150758_from-T1wNative_to-T1wACPC_mode-image_xfm.mat',
                                     interpolator = "bSpline")

It seems that the alignment was slightly off?
Is this expected? Why is this happening?
One oddity I found that might help is that the bids img and the qsiprep image have different dimensions, as the data below shows :
bids_img, qsi_img
=========
(ANTsImage (LPI)
 	 Pixel Type : float (float32)
 	 Components : 1
 	 Dimensions : (512, 512, 120)
 	 Spacing    : (0.4297, 0.4297, 1.0)
 	 Origin     : (113.4008, 83.5237, -40.7669)
 	 Direction  : [-1.      0.      0.0038  0.     -1.      0.      0.0038  0.      1.    ],
 ANTsImage (RAI)
 	 Pixel Type : float (float32)
 	 Components : 1
 	 Dimensions : (193, 229, 193)
 	 Spacing    : (1.0, 1.0, 1.0)
 	 Origin     : (-96.0, -96.0, -78.0)
 	 Direction  : [1. 0. 0. 0. 1. 0. 0. 0. 1.])

Hi, it seems that I am having a similar issue with qsiprep version 0.20.0: the resulting image after antsApplyTransforms is not aligned with the output of qsiprep in the T1w ACPC space.
I described the issue here: https://neurostars.org/t/qsiprep-amico-noddi-and-space-t1/28529/3?u=jsein

@julfou81 and @dyhan316 are your original T1w images oblique?

Hi @mattcieslak , thank you for your question!
Yes indeed, the original T1w image is oblique:
3dinfo sub-JEU02_ses-01_T1w.nii.gz
++ 3dinfo: AFNI version=AFNI_22.1.14 (Jun 24 2022) [64-bit]

Dataset File:    /Users/jsein/Documents/Centre_IRMf/DATA/BIDS/EcriPark/derivatives/qsiprep/sub-JEU02_ses-01_T1w.nii.gz
Identifier Code: NII_K8Q8CrSlSAIy2lM2_pnuhw  Creation Date: Sat Mar  9 20:30:57 2024
Template Space:  ORIG
Dataset Type:    Anat Bucket (-abuc)
Byte Order:      LSB_FIRST {assumed} [this CPU native = LSB_FIRST]
Storage Mode:    NIFTI
Storage Space:   25,165,824 (25 million) bytes
Geometry String: "MATRIX(-0.996849,0.052032,-0.059925,96.11948,-0.037712,-0.97495,-0.219202,136.4017,-0.069829,-0.216251,0.973837,-109.5287):192,256,256"
Data Axes Tilt:  Oblique (13.135 deg. from plumb)
Data Axes Approximate Orientation:
  first  (x) = Left-to-Right
  second (y) = Posterior-to-Anterior
  third  (z) = Inferior-to-Superior   [-orient LPI]
R-to-L extent:   -94.881 [R] -to-    96.119 [L] -step-     1.000 mm [192 voxels]
A-to-P extent:  -118.598 [A] -to-   136.402 [P] -step-     1.000 mm [256 voxels]
I-to-S extent:  -109.529 [I] -to-   145.471 [S] -step-     1.000 mm [256 voxels]
Number of values stored at each pixel = 1
  -- At sub-brick #0 '?' datum type is short [*0.04]

I just saw your comment on Neurostars. Thank you!


Stick to kubernetes-client version managed in Quarkus BOM

kube-client 4.9.0 in Quarkus 1.4.2, and kube-client 4.9.1 in Quarkus master.
This changes is actually motivated by the issues I see when upgrading to Camel 3.3.0 that uses kube client 4.10

This changes is actually motivated by the issues I see when upgrading to Camel 3.3.0 that uses kube client 4.10

After testing properly, I can say that the current change does not help. Let me come up with something different.


"Between" function is fails query parsing

Given statement:
Select column1 from table1 where field1 between 10 AND 20
Will fail parsing. Can be observed on demo site as well

Thank you @gertheber!


Adds custom action list command

Adds new spo customaction list command the the cli tool.
Pull request solving #19
Also replaces ensureAccessToken by getAccessToken in the customaction list command. Fix that had to be made, reference #111.
Please let me know if any questions.

Coverage remained the same at 100.0% when pulling 642a5229e5180356cefa6378a117b242603a0a2e on VelinGeorgiev:customaction-list-with-fixes into a771a94c162273162c6e7170be384c969066af99 on SharePoint:dev.

Hey @waldekmastykarz  I replaced ensureAccessToken with getAccessToken, but still cannot (do not know how to) get desired proper behavior to swap between the auth context. See my tests and output:
C:\Projects\office365-cli (customaction-list -> origin<EMAIL_ADDRESS>λ o365 spo cdn origin list
Error: https://xxx.sharepoint.com/sites/xxx is not a tenant admin site. Connect to your tenant admin site and try again

C:\Projects\office365-cli (customaction-list -> origin<EMAIL_ADDRESS>λ o365
o365$ spo connect  https://xxx-admin.sharepoint.com
To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code DKBL9LXXX to authenticate.
o365$ spo cdn origin list
*/MASTERPAGE
*/STYLE LIBRARY
SITES/...
*/CLIENTSIDEASSETS
o365$ spo customaction list -u https://xxx.sharepoint.com/sites/xxx
Error: 401 - {"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}
o365$ spo disconnect
o365$ spo connect  https://xxx-admin.sharepoint.com
To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code DJSPXXXX to authenticate.
o365$ spo cdn origin list
*/MASTERPAGE
*/STYLE LIBRARY
SITES/...
*/CLIENTSIDEASSETS
o365$  spo customaction list -u https://xxx.sharepoint.com/sites/xxx
Error: 401 - {"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}
o365$ spo app install -i 81c00f3b-71f6-487d-abe7-f29d5803c328 -s https://xxx.sharepoint.com/sites/xxx
Error: 401 - "{\"error_description\":\"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown.\"}"
o365$ spo connect https://xxx.sharepoint.com/sites/xxx
To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code DVKT6Y8GK to authenticate.
o365$ spo app install -i 81c00f3b-71f6-487d-abe7-f29d5803c328 -s https://xxx.sharepoint.com/sites/xxx
o365$

See: #118

Merged manually. When merging also changed the code a bit, so that the site access token is being passed to the getCustomActions and searchAllScopes methods:
https://github.com/SharePoint/office365-cli/blob/bd2361710599e1a1ea401468c9cb092fbf986a17/src/o365/spo/commands/customaction/customaction-list.ts#L62-L64

Thanks!

Thank you! Once again awesome work! 💪


Nested JSON-File

Hi, is it possible to build the document a way that the json is nested more than one time?
I mean to use multiple hashes.
Like:
{ "id": {     "sub_id": {         "key": "val     },     "sub_id_two": {         "key": "val     }     ... }
Thank you and best regards,
Sergej

Hi, if I understood correctly, this format isn't supported at the moment. But, can you provide a example spreadsheet example that could result in this?

Hi, like i wrote above I want a JSON-file, that looks like this:
{     "id": {         "sub_id": {             "key": "val"         },         "sub_id_two": {             "key": "val"         }     },     "id_two": {         "sub_id": {             "key": "val"         },         "...": "..."     } }
At the moment I can do only this one:
{"id": { "key": "val", "key": "val"}, "id": {"key":"val", "key","val"}}.
Is this possible?
my application looks like this:
gsjson({     spreadsheetId: 'ID is hidden',     hash: 'id' })
Thank you.

Oh, sorry. One Moment - just read your answer incorrectly.

Hi,
I want to reach a table like this.
I've got like several ID's.
Then inside of each ID I've got several sub_id which contains elements.

Hey there,
I implemented a feature for this (https://github.com/bassarisse/google-spreadsheet-to-json/commit/654accda49634adfe0947cfe9750894a906a5484). With the example you provided, I could generate the following JSON:
{
    "type1": {
        "id": "type1",
        "sub_id": {
            "elem1": "foo 1",
            "elem2": "foo 2",
            "elem3": "foo 3"
        },
        "sub_id_two": {
            "elem1": "foo 1",
            "elem2": "foo 2",
            "elem3": "foo 3"
        },
        "sub_id_three": {
            "elem1": "foo 1",
            "elem2": "foo 2",
            "elem3": "foo 3"
        }
    },
    (...)
}

I'll publish a new version soon, hope it fits your needs.


codebase/spring-ai-with-chromadb-vector-store [BAEL-8848]

Codebase for the article: Spring AI With ChromaDB Vector Store

retest this please


Finished Mower

Does work Mower do the Job already?
How did you created the Housing. Because of TBD.

Hi, sorry for the three years only response. :-/
No, I never got time to finish this project, other more urgent missions got in the way.
But there are plenty of other robot-mower projects out there that is already battletested and proven.


Bug: order of face joint idx

In skeleton.py line58:
face_joint_idx = [2,1,17,16]
l_hip, r_hip, sdr_r, sdr_l = face_joint_idx
needs to be changed to :
r_hip, l_hip, sdr_r, sdr_l = face_joint_idx
Otherwise: the computed forward direction may be z+ or maybe z-.

Yes, I mentioned the related bug in issue ：Raw code bug in inverse_kinematics_np Function. #107   as well. However, the author may consider it a minor issue, and anyone who has reviewed the code would likely make a quick fix.


Adds command spo file retentionlabel remove, Closes #4163

This PR adds the command spo file retentionlabel remove, which clears the retentionlabel from a file.
Closes #4163

Let's put this on hold until #4233 is completed

Could you rebase this one on the latest main @nicodecleyre?

I'm clearing myself for now as I don't know if I have time left before going on holidays!

I'm clearing myself for now as I don't know if I have time left before going on holidays!

Enjoy the holidays! 🎄

Will do, thanks!

Ok @nicodecleyre, Let's fix some minor points before we merge this in. Great work 👏

Thank you for your review! processed your feedback!

Merged manually, well done! 👏


How to convert back from Koala dataframe to Databricks dataframe

Hi, this maybe a silly question - I can convert from my Databricks dataframe to Koalas using
cleanKoalaDf = ks.from_pandas(cleanDf.toPandas())
I then do some processing (E.g. get_dummies). Now I want to convert back to a Databricks dataframe but I can't find the appropriate method?

I don't understand what do you mean by Databricks dataframe. But, from the example you gave, I can guess that cleanDf is a spark DataFrame.
Here is a small example of how to move between Koalas DataFrame, Pandas DataFrame and Spark DataFrame. Hope it helps.
pdf means Pandas DataFrame
kdf means Koalas DataFrame
sdf means Spark DataFrame
import databricks.koalas as ks
import pandas as pd
from pyspark.sql import SparkSession

pdf = pd.DataFrame({
    'a': [1, 2, 3, 4, 5, 6, 7, 8, 9],
    'b': [4, 5, 6, 3, 2, 1, 0, 0, 0],
}, index=[0, 1, 3, 5, 6, 8, 9, 9, 9])

# Pandas DataFrame <=> Koalas DataFrame

kdf = ks.from_pandas(pdf)

pdf = kdf.toPandas()

print(pdf.head())

# Spark DataFrame => Koalas DataFrame => Pandas DataFrame

spark = SparkSession.builder.getOrCreate()

sdf = spark.createDataFrame(pdf)

kdf = ks.DataFrame(sdf)

pdf = kdf.toPandas()

print(pdf.head())

Yes, thanks - that is what I was looking for - so I first convert to Pandas and then to a Spark dataframe.

Hi, this maybe a silly question - I can convert from my Databricks dataframe to Koalas using
cleanKoalaDf = ks.from_pandas(cleanDf.toPandas())
I then do some processing (E.g. get_dummies). Now I want to convert back to a Databricks dataframe but I can't find the appropriate method?

You need not go from koalas -> pandas -> spark dataframe. You can go directly from a koalas dataframe to spark via the to_spark() method (https://koalas.readthedocs.io/en/latest/reference/api/databricks.koalas.DataFrame.to_spark.html)

I wrote some documentations for this :-) https://koalas.readthedocs.io/en/latest/user_guide/pandas_pyspark.html


Switch to subtle-ng

Hello, I'm working with some zkcrypto crates that depend on subtle-ng but I'm not able to interoperate with the ff family of crates since we're still on the subtle package here.
Do you mind taking this change to switch us over to subtle-ng? We'll have to propagate this change throughout other packages as well.

Ping on this issue.
I have a crate I'd like to publish that is depending on this branch. I'd rather not publish my fork of ff to crates.io
Would you prefer a PR with just the subtle-ng change  (no clippy run)?

I just wanted to note that if you do this, it will be a difficult transition for @RustCrypto.
We use subtle for https://github.com/RustCrypto/elliptic-curves but also in quite a few other things like symmetric cryptography implementations. If this were to change then we would wind up in the situation where some crates are using subtle-ng and others are using subtle.
For crates that combine things like ECC and symmetric cryptography, such as ECIES systems, this means that until we can get everything switched over (and we are just wrapping up a set of symmetric crypto releases), crates like this would have to deal with e.g. incompatible Choice and CtOption as sourced from both subtle and subtle-ng.

I'm not intimately familiar with the history of these crates, but the README on https://github.com/zkcrypto/subtle-ng suggests that subtle is not maintained by someone who likes to co-operate with the community.
So, sure, there will be some pain in the transition, but I'd feel much better if a low-level dependency of the crypto ecosystem is maintained by a group we can all trust and work with.
If someone has more knowledge of the state of these two crates, please share!


Fix typos in docs

A couple of instances of hello-world snuck through as hello-word.

Thank you!!


Add configuration for mvn versions plugin

Ignore -M and beta versions
Ignore jlink 3.2.0 version which has issues and it's not usable

retest this please

retest this please


Invalid sticker pack: non-compliant or prerelease tools

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I have read the Contribution Guidelines

Issue Description
Fastfile:
  lane :appstore_profiles do
    match(type: 'appstore', app_identifier: "#{app_identifier}")
    match(type: 'appstore', app_identifier: "#{app_identifier}.MessagesExtension")
  end

  lane :build_release do
    appstore_profiles
    gym(
      configuration: "Release",
      output_name: "#{app_name}-release.ipa"
    )
  end

  lane :beta do
    build_release
    pilot
  end

Command:
fastlane beta
Results in:
Email form iTunes Connect:
Invalid iMessage App - Your iMessage app contains an invalid sticker pack. The app may have been built or signed with non-compliant or prerelease tools. For more information, go to developer.apple.com.
Archiving with Xcode, then submitting through Xcode works fine.
Environment
✅ fastlane environment ✅
Stack

Key
Value

OS
10.12.1

Ruby
2.3.1

Bundler?
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
8.1

Git
git version 2.10.1

Installation Source
/usr/local/bin/fastlane

Host
Mac OS X 10.12.1 (16B2555)

Ruby Lib Dir
/usr/local/Cellar/ruby/2.3.1_2/lib

OpenSSL Version
OpenSSL 1.0.2j  26 Sep 2016

fastlane files:
`./fastlane/Fastfile`
fastlane_version "1.104.0"

default_platform :ios

app_name = "Shop"
app_identifier = CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)

platform :ios do

  lane :development_profiles do
    match(type: 'development', app_identifier: "#{app_identifier}")
    match(type: 'development', app_identifier: "#{app_identifier}.MessagesExtension")
  end

  lane :appstore_profiles do
    match(type: 'appstore', app_identifier: "#{app_identifier}")
    match(type: 'appstore', app_identifier: "#{app_identifier}.MessagesExtension")
  end

  lane :profiles do
    development_profiles
    appstore_profiles
  end

  lane :build_development do
    development_profiles
    gym(
      configuration: "Debug",
      output_name: "#{app_name}-development.ipa"
    )
  end

  lane :build_release do
    appstore_profiles
    gym(
      configuration: "Release",
      output_name: "#{app_name}-release.ipa"
    )
  end

  lane :hockeyapp do |options|
    hockey(
      ipa: "../../builds/#{Time.now.strftime('%F')}/#{app_name}-#{(options[:release] ? "release" : "development")}.ipa",
      dsym: "../../builds/#{Time.now.strftime('%F')}/#{app_name}-#{(options[:release] ? "release" : "development")}.app.dSYM.zip",
      api_token: "2e2f1260692140dba94474a4b66e9a56",
      notes: "Build " + (ENV["BUILD_NUMBER"] ? ENV["BUILD_NUMBER"] + " " : "") + "From " + git_branch + " branch on " + Time.now.strftime('%F') + " at " + Time.now.strftime('%T'),
      notify: "0"
    )
  end

  lane :ci do
    build_development
    hockeyapp
  end

  lane :beta do
    build_release
    pilot
  end

  lane :release do
    deliver(
      ipa: "../../builds/#{Time.now.strftime('%F')}/#{app_name}-release.ipa",
      force: true,
      skip_metadata: true,
      skip_screenshots: true
    )
  end

  lane :screenshots do
    deliver(
      skip_binary_upload: true
    )
  end

  after_all do |lane|
  end

  error do |lane, exception|
  end
end

`./fastlane/Appfile`
app_identifier "com.marketamerica.MAMobile"
apple_id<EMAIL_ADDRESS>

fastlane gems

Gem
Version
Update-Status

credentials_manager
0.16.2
✅ Up-To-Date

fastlane_core
0.53.0
✅ Up-To-Date

spaceship
0.37.0
✅ Up-To-Date

deliver
1.15.0
✅ Up-To-Date

snapshot
1.16.3
✅ Up-To-Date

frameit
3.0.0
✅ Up-To-Date

pem
1.4.0
✅ Up-To-Date

cert
1.4.3
✅ Up-To-Date

sigh
1.11.2
✅ Up-To-Date

produce
1.3.0
✅ Up-To-Date

gym
1.12.0
✅ Up-To-Date

pilot
1.12.0
✅ Up-To-Date

supply
0.7.1
✅ Up-To-Date

match
0.10.0
✅ Up-To-Date

screengrab
0.5.5
✅ Up-To-Date

fastlane
1.107.0
✅ Up-To-Date

Loaded fastlane plugins:
No plugins Loaded
Loaded gems

Gem
Version

did_you_mean
1.0.0

highline
1.7.8

commander
4.4.0

terminal-table
1.4.5

json
1.8.3

multipart-post
2.0.0

faraday
0.9.2

faraday_middleware
0.10.0

dotenv
2.1.1

net-ssh
3.2.0

net-sftp
2.1.2

plist
3.1.0

rubyzip
1.1.7

security
0.1.3

krausefx-shenzhen
0.14.10

slack-notifier
1.5.1

i18n
0.7.0

thread_safe
0.3.5

tzinfo
1.2.2

minitest
5.8.3

activesupport
<IP_ADDRESS>

colored
1.2

claide
1.0.1

xcodeproj
1.3.3

rouge
1.11.1

xcpretty
0.2.4

terminal-notifier
1.7.1

addressable
2.3.8

xcode-install
2.0.7

word_wrap
1.0.0

multi_json
1.12.1

babosa
1.0.2

excon
0.54.0

gh_inspector
1.0.2

credentials_manager
0.16.2

fastlane_core
0.53.0

bundler
1.13.6

multi_xml
0.5.5

unf_ext
<IP_ADDRESS>

unf
0.1.4

domain_name
0.5.20160826

http-cookie
1.0.3

faraday-cookie_jar
0.0.6

fastimage
1.6.8

mini_magick
4.5.1

uber
0.0.15

representable
2.3.0

retriable
2.1.0

mime-types-data
3.2016.0521

mime-types
3.1

hurley
0.2

little-plugger
1.1.4

logging
2.1.0

jwt
1.5.6

memoist
0.15.0

os
0.9.6

signet
0.7.3

googleauth
0.5.1

httpclient
<IP_ADDRESS>

google-api-client
0.9.19

io-console
0.4.5

generated on: 2016-11-04

@tabrindle Thanks for reaching out. Can you confirm if this happens on all projects or just one? Are you able to make this happen consistently? I've reached out to the core team to have them take a look. Thanks!

please see the sample app - with a sticker-pack extension using fastlane 👍
https://github.com/hjanuschka/sticker-pack-with-fastlane
be sure to not use use_legacy_build_api  - and also ensure that you remove the sim. frameworks with a custom script phase.
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
  if [[ -d "Frameworks" ]]; then
    rm -fr Frameworks
  fi

This happens consistently, on two (cordova) projects with the same configuration. Am going to try disabling use_legacy_build_api, sounds like that is the issue. I will reopen if this is not solved with your suggestions. Thank you @TKBurner and @hjanuschka.


FooterLink ignores the rule last:mr-0 when Tooltip is introduced.

Describe the bug
This is related to themesberg/flowbite-svelte-blocks#51. The default classes for FooterLink are mr-4 last:mr-0 md:mr-6. When the Tooltip element is introduced, since the last FooterLink is no longer the last element anymore, it ignores the rule for last:mr-0. This can cause a flickering effect.
Reproduction
The demo page for Default dashboard footer has this exact example. For reference, I will also attach a video.
Screencast from 2023-10-30 01-32-29.webm
Flowbite version and System Info
System:
    OS: Linux 6.1 NixOS 23.11 (Tapir) 23.11 (Tapir)
    CPU: (8) x64 Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
    Memory: 3.48 GB / 7.53 GB
    Container: Yes
    Shell: 5.2.15 - /run/current-system/sw/bin/bash
  Binaries:
    Node: 18.17.1 - /nix/store/1l03gdg4w3cvkygvbxsq9i19flnp1p3y-nodejs-18.17.1/bin/node
    npm: 9.6.7 - /nix/store/1l03gdg4w3cvkygvbxsq9i19flnp1p3y-nodejs-18.17.1/bin/npm
    pnpm: 8.5.1 - /nix/store/pw1lyxbamcg3i5pkgm2n5w3f5zz0hrdk-pnpm-8.5.1/bin/pnpm
  npmPackages:
    @sveltejs/kit: ^1.27.1 => 1.27.1
    flowbite-svelte: ^0.44.18 => 0.44.18
    svelte: ^4.2.2 => 4.2.2
    vite: ^4.5.0 => 4.5.0

Two issues here:

flickering: try to add placement="bottom-end" to the last tooltip
right margin: try to add class last-of-type:mr-0 to that FooterLink

Tell me if that helps.

@jjagielka looks like adding last-of-type:mr-0 to classLi fixes the flickering for me. We can remove last:mr-0, which is the default class, as it does nothing here. The last tool-tip looks kinda odd with placement="bottom", but interestingly, it works just fine with placement="bottom-start".

I think we can close that ticket.


Right adjoint to Functor.Slice.Free

Supercedes #370
I started over with a better understanding of the problem space, on top of the cleaned up version of the module. Also, I'm making this branch in the agda repo rather than my own fork so it's easier for other contributors to make commits.

[X] Functor
[x] Adjoint
[ ] Corresponding functor and adjoint for base changes

Even with what I have so far there's a lot of potential for simplifying the proofs.
An insight I've had is that the proof passed in to universal constructions (and other ways to construct a morphism or object from a proof) should generally be abstract. for compilation times. Other proofs don't matter nearly as much in this respect. This is because we generally have many many copies of the morphism term in other terms and types.

This isn't complete but it's at a point where I'd like some other eyes on it if anyone wants to take a look

Looks like I've broken Categories.Category.CartesianClosed.Locally.Properties, a module which I had honestly forgotten about, but I think I should be able to entirely replace that with Categories.Functor.Slice.BaseChange, with an actual proof of adjointness soon. It's making me wonder if there's a simpler implementation of InternalSections, though

I'd like to finish this off... but I've gotten lost with what was going on with it :(

Anything I could do to help?

Remaining considerations:

Define the next base change functor (composition of slice⇒slice-slice and InternalSections)
Define the base change adunction
Can the proofs be simplified? They're huge and scary
Can the environment of InternalSections be simplified? We don't need all products
Is BaseChange⁎ in Categories.Category.CartesianClosed.Locally the same thing as what we're defining in this PR? Is it a viable way to simplify the definitions?

I'm not happy with this and I don't think I'm going to become happy with this from where it is now.


Panic on executing a 32-bit static linux binary

Trying to run ./usercorn ~/go/bin/oh on 32-bit linux ends in:

panic: Kernel not found for syscall 'modify_ldt'

goroutine 17 [running, locked to thread]:
github.com/lunixbochs/usercorn/go.(*Usercorn).Syscall(0x1851e100, 0x7b, 0x825f3c0, 0xa, 0x18511ae0, 0x18511ae0, 0x0, 0x0, 0x0)
        /home/petevine/go/src/github.com/lunixbochs/usercorn/go/usercorn.go:586 +0x5e6
github.com/lunixbochs/usercorn/go/arch/x86.LinuxSyscall(0xb27eaa78, 0x1851e100)
        /home/petevine/go/src/github.com/lunixbochs/usercorn/go/arch/x86/linux.go:22 +0xdd
github.com/lunixbochs/usercorn/go/arch/x86.LinuxInterrupt(0xb27eaa78, 0x1851e100, 0x80)
        /home/petevine/go/src/github.com/lunixbochs/usercorn/go/arch/x86/linux.go:28 +0x35
github.com/lunixbochs/usercorn/go.(*Usercorn).addHooks.func5(0xb27eaa00, 0x185a2880, 0x80)
        /home/petevine/go/src/github.com/lunixbochs/usercorn/go/usercorn.go:465 +0x53
github.com/unicorn-engine/unicorn/bindings/go/unicorn.hookInterrupt(0xb30261f0, 0x80, 0x185a3250)
        /home/petevine/go1.5/src/github.com/unicorn-engine/unicorn/bindings/go/unicorn/hook.go:42 +0x41

goroutine 1 [syscall, locked to thread]:
github.com/unicorn-engine/unicorn/bindings/go/unicorn._Cfunc_uc_emu_start(0xb30261f0, 0x8096490, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0)
        github.com/unicorn-engine/unicorn/bindings/go/unicorn/_obj/_cgo_gotypes.go:123 +0x37
github.com/unicorn-engine/unicorn/bindings/go/unicorn.(*uc).StartWithOptions(0x185a2880, 0x8096490, 0x0, 0xffffffff, 0xffffffff, 0x1854fd28, 0x0, 0x0)
        /home/petevine/go1.5/src/github.com/unicorn-engine/unicorn/bindings/go/unicorn/unicorn.go:80 +0x6c
github.com/unicorn-engine/unicorn/bindings/go/unicorn.(*uc).Start(0x185a2880, 0x8096490, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0)
        /home/petevine/go1.5/src/github.com/unicorn-engine/unicorn/bindings/go/unicorn/unicorn.go:85 +0x72
github.com/lunixbochs/usercorn/go.(*Usercorn).Run(0x1851e100, 0x1850a188, 0x1, 0x1, 0x1850c380, 0x36, 0x36, 0x0, 0x0)
        /home/petevine/go/src/github.com/lunixbochs/usercorn/go/usercorn.go:168 +0xdbb
main.main()
        /home/petevine/go/src/github.com/lunixbochs/usercorn/go/usercorn/cli.go:82 +0x89f

goroutine 18 [syscall, locked to thread]:
runtime.goexit()
        /home/petevine/go/src/runtime/asm_386.s:1662 +0x1

Should this go into one of your own issues perhaps?

Just a missing syscall. Need to "subclass" the Linux kernel in arch/x86 just like it is in x86_64, and add a function ModifyLdt like this http://linux.die.net/man/2/modify_ldt
I'm assuming this is followed by a syscall to set FS or GS? Can you strace the process running normally and post that?

Here you are:
oh_trace.txt

fwiw there's no threading yet, which is tracked in some upstream Unicorn issue

What's the most complex kind of binary usercorn can handle at the moment?

Many features from busybox x86_64 work.

The 64-bit busybox binary prints the help screen without a problem indeed, but for example:
busybox-x86_64 ls -l => panic: Kernel not found for syscall getdents64
busybox-x86_64 whoami => panic: Kernel not found for syscall geteuid
busybox-x86_64 df  => panic: Kernel not found for syscall statfs
and so on probably.
The 32-bit busybox on the other hand just goes:
panic: Kernel not found for syscall 'set_thread_area'

Yes, I've tried most of them already. I'm currently prioritizing fixing dynamic linker support over adding syscalls, though adding a syscall can be pretty easy if you want to try it.

Could you add one so I can analyse the commit and see if it's easy enough :)

Here are some examples:
Simple:

dup https://github.com/lunixbochs/usercorn/commit/0e03b06e78b2c979827b962235958a8395416b1b
chroot https://github.com/lunixbochs/usercorn/commit/5764eda47221324699f79ed803544c63c2e2c2cb
link https://github.com/lunixbochs/usercorn/commit/ba7d5c14e463cf7dc37cf252b939c5cc90ab1333

The harder ones I've been working on are socket and file related, like select and getdents64

getdents https://github.com/lunixbochs/usercorn/blob/master/go/kernel/linux/io.go#L15

An easy one to add for practice would be Geteuid() in go/kernel/posix/user.go.

Thanks a lot, I'll see what I can do.

Reference for modify_ldt:
https://github.com/lunixbochs/qemu/blob/master/linux-user/syscall.c#L4228
https://github.com/lunixbochs/qemu/blob/master/linux-user/syscall.c#L4116
https://github.com/lunixbochs/qemu/blob/master/linux-user/syscall.c#L4228

getdents64 implemented :)

Indeed, ls still saying no though :)
./usercorn ~/Downloads/busybox-x86_64 ls -l go/usercorn
total 0

I get an error with ls -l on go/usercorn but not on other directories. Probably an issue with folders containing almost no files.

I can see ls -l from busybox-x86_64  can already print everything very nicely, except for the first line which always shows: total 0
The story with busybox-armv5 is a little different:
?rwxr-x--t    0 4096     4096<PHONE_NUMBER>420188828 Jan  1  1970 .
invalid fetch: @0x400001d0, 0x1 = 0x0
This looks familiar except it used to happen at the end, after successful execution:
https://github.com/lunixbochs/usercorn/issues/148

getdents likely needs to be adapted to support the arm struct packing format

the arm crash at end was fixed by e4d77cd

Nope, I've not managed to discover anything new.


OGD Website: Update all workflows to use latest versions of official GH actions

This was already resolved by #79


How to change strategy in provider

Currently I am migrating to beemo v2 and I am facing issue with webpack config. I would like to change strategy from STRATEGY_REFERENCE to STRATEGY_CREATE.
I didn't find any guidance on how to do it or if it is even possible.
I want to change strategy so we can update configs the same way as eslint or typescript, but this isn't possible when using reference.

@rajzik There's no way to change it on the provider, only on the consumer.
module.exports = {
    module: '<config-module>',
    drivers: [
        [
            'webpack',
            {
                configStrategy: 'create',
            },
        ],
    ],
};


Add new crate (atomic_polyfill) for atomics. #9

Thanks for taking a look at this. I think the atomic wrapper implementations in the arch/ crate can be removed, and dependencies should use polyfill instead.

Well I looked the docs and assumed I had an implementation for compiler_fence on. Ill try to figure something out. Also noted regarding the arch crate.

Drogue-device-ng is now using atomic_polyfill where needed


unable to access the service

receiving this message and it is redirecting into chatgpt 3.5. please explain how we can access those models

They are only available to ChatGPT Plus and Enterprise users at this time.

Yes we put that information in the page :)


Basic Authentication documentation

Adding basic documentation for authentication and cleaning a couple things up.

End to end tests are failing for this PR, but this is a broader issue.  A test PR was opened up on master with no changes tests there also failed.  End to end tests off of this branch are also passing when running locally, making it hard to understand what's happening.  The usual log output that we depend on to debug is also not getting printed by the GitHub workflow.


Changed cell.error to cell.errorMessage & added help data.

(Closes #525)
Changed cell.error to cell.errorMessage and added the informations into the internal help system.
@wetneb: I did the correction, and took the initiative to update the internal help system.
Regards, A.

@wetneb: can we merge it or should another person review it? If so, who?
Regards, A.

Given the discussion on the issue we are good to go.

Added to 3.4


compatibility w/ Linux?

Hi Maxime,
I'm trying to do the same for Linux.
Do you have any insight?
I followed your Readme, but stuck here

Hi, at what step exactly?

The VMSVGA graphics controller seems to be necessary for macOS to boot

VMSVGA emulates the VMware Workstation graphics adapter with the “VMware SVGA 3D” acceleration method.

From https://intoguide.com/install-vm-tool-virtualbox-macos-catalina/
Moreover, all the tutorials say to use this graphic controller even if it is reported as an invalid parameter.

From https://najigram.com/2022/01/run-macos-in-virtualbox-on-linux-os/
This tutorial recommends VBoxVGA. Maybe the issue comes from your Linux: something is missing for VirtualBox so macOS cannot run as it should.


Generations with Batch Size > 1 often error out

Issue:
When Neutral Prompt extension is enabled, even if you're not using any of the prompt AND_* trigger words, changing the batch size > 1 often results in an error where the first image generates fine but the remaining images display glitched visuals and eventually throw a VAE error.
Reproducible: Yes, if you don't get the JS error reported in #64.
Prompt:
a photo of a bicycle
Steps: 20, Sampler: DPM++ 2M Karras, CFG scale: 7, Seed: 526409519, Size: 512x512, Model hash: 338b85bc4f, Model: juggernaut_reborn, CFG Rescale phi: 0, Version: v1.7.0

(note: It does not seem to matter what Checkpoint you use)
Error Message:
*** Error completing request 20/20 [00:01<00:00,  9.64it/s]
*** Arguments: ('task(u7pfcmw5h72gu64)', 'a photo of a bicycle', '', [], 20, 'DPM++ 2M Karras', 1, 2, 7, 512, 512, False, 0.7, 2, 'Latent', 0, 0, 0, 'Use same checkpoint', 'Use same sampler', '', '', [], <gradio.routes.Request object at 0x000002398DE1FF70>, 0, False, '', 0.8, -1, False, -1, 0, 0, 0, 0, False, False, 'positive', 'comma', 0, False, False, 'start', '', 1, '', [], 0, '', [], 0, '', [], True, False, False, False, 0, False) {}
    Traceback (most recent call last):
      File "C:\Users\hello\pinokio\api\automatic1111.git\app\modules\call_queue.py", line 57, in f
        res = list(func(*args, **kwargs))
      File "C:\Users\hello\pinokio\api\automatic1111.git\app\modules\call_queue.py", line 36, in f
        res = func(*args, **kwargs)
      File "C:\Users\hello\pinokio\api\automatic1111.git\app\modules\txt2img.py", line 55, in txt2img
        processed = processing.process_images(p)
      File "C:\Users\hello\pinokio\api\automatic1111.git\app\modules\processing.py", line 734, in process_images
        res = process_images_inner(p)
      File "C:\Users\hello\pinokio\api\automatic1111.git\app\modules\processing.py", line 875, in process_images_inner
        x_samples_ddim = decode_latent_batch(p.sd_model, samples_ddim, target_device=devices.cpu, check_for_nans=True)
      File "C:\Users\hello\pinokio\api\automatic1111.git\app\modules\processing.py", line 603, in decode_latent_batch
        raise e
      File "C:\Users\hello\pinokio\api\automatic1111.git\app\modules\processing.py", line 600, in decode_latent_batch
        devices.test_for_nans(sample, "vae")
      File "C:\Users\hello\pinokio\api\automatic1111.git\app\modules\devices.py", line 150, in test_for_nans
        raise NansException(message)
    modules.devices.NansException: A tensor with all NaNs was produced in VAE. Use --disable-nan-check commandline argument to disable this check.

https://github.com/ljleb/sd-webui-neutral-prompt/assets/2160089/251edb97-002a-4f0d-a92e-b19fc339bcbe

The same here.  This could be because there's not enough precision to represent the picture. Try adding --no-half-vae commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.

Thanks, I probably messed up something in the last update. I remember testing batch_size > 1 and even pushed a commit for it, but maybe I missed something.

It did break the batch so even before it bombs out with the VAE error, all the batch images are identical.
I also noticed that it runs even if there isn't any of the AND_* keywords and I think it does change the outcome of the image (but adding the keyword to the prompt changes the image anyway so it's hard to test).
Can you add a check for the existence of the AND_* keywords and if not present just return out of the create_sampler_hijack()?
It looks like the only check in there is for an unsupported sampler and otherwise it runs no matter what the prompt.
I can add this as a separate issue if you want?

The last commit on main about delta-space should render prompts that use 0 or more normal AND keywords exactly the same, whether the extension is active or not. Is it possible you are not using the latest commit? I'll reverify this to be sure.

I am using version 185638f2 | 2024-01-28 16:22:51 although I just ran the updater and see the new commits option 🤦so I applied and restarted and now it says current and the version is still 185638f2 | 2024-01-28 16:22:51 so I have no idea lol

https://github.com/ljleb/sd-webui-neutral-prompt/commit/185638f2 is the last version. I guess this is a problem in the latest version then, I'll try to reproduce shortly.

I just pushed a fix, it should not be a problem anymore. I was using the flattened prompt index directly instead of looking into the cond indices list for the actual unet batch index.

I tested the small difference issue and, at least on my side, I it is not reproducible it in the latest commit:

generation with neutral prompt enabled (click to show)
![grid-0003](https://github.com/ljleb/sd-webui-neutral-prompt/assets/32277961/8f5024df-0d11-40ae-be3e-ed283eecd4c5)

generation with neutral prompt disabled (click to show)
![grid-0004](https://github.com/ljleb/sd-webui-neutral-prompt/assets/32277961/84f8fefb-e53f-41a5-9d12-d7f5bd5c8764)

I had to run unexpectedly but I'll test this in a bit and close it if it's all good. Thank you!

Seems to work great! Thanks for the quick fix!


holder/ini.php

Need more refactoring.
Should patch from StyleCL to remove issues and improve runtime.

Removed, using parsing instead


[question] Connections from database

This is more a question than an issue. I was wondering how I would go about getting the list of connections from a database. I am using a web hook to fire off rocketeer when my production branch is updated. I want to have a web interface from which I can activate/deactivate connections for auto deployment. Thank you.

Anything?


Make entire header bar area "grabbable" to move the window

The window seems to be draggable if clicked in the top ~20px of the header bar, but it would be nice if you could click to drag anywhere in the header bar. Ie. everything above the horizontal grey line (well, except for the blue buttons)

+1

Would be nice. Probably an easy hack to do.

If this gets implemented, moving the 3 rainbow buttons a bit out of the way of the gear icon would also be welcomed


add makesydebib command, urls display in bib

added a makesydebib command which does

\bibliographystyle{unsrt}
\bibliography{references}

urls display in bibliography now

@Erik-J-D thoughts?

howpublished is the right way to do this, but I think makesydebib is overkill if all it does is call bibliography  and bibliographystyle, also doesn't do anything syde specific.

@Erik-J-D it also fixed the text alignment of the bibliography now (just pushed commit)

looks good to me, rebase on master pls and I'll merge

@Erik-J-D done

@ndey96 np. Just noticed you only compiled the report pdf not the wtr as well

@Erik-J-D updated