Provide custom storage option

I think it would be useful, if the user of this library can choose where the items get stored. In my use case, I would like to use an in-memory storage instead of the localStorage, so I can use it for running API related tests in node. For me it would also work to just have a app://mem/{url...} endpoint which uses the memory instead.
I think if we do it this way, solid-rest-file could also use this as a base. Maybe this could also be moved to another package (e.g. solid-rest-handler) and solid-rest-browser and solid-rest-file use it?
Just random thoughts, so maybe I'm missing something :)

Afaik, solid-rest-browser and solid-rest-file both try to work as a mini solid pod. That's why I thought that a common implementation of the solid api spec could be beneficial. It could handle the different API methods (GET, POST, ... and also SPARQL) and accordingly write/read something from/to the storage and then create a response to it.
From what I see, the difference between solid-rest-browser and solid-rest-file is basically the way they store the information. The first stores it in localStorage, latter in the file system. But the way they handle requests seems to be the same. So if there is a solid-rest-foo package, they could both make use of it (which reduces rewriting code and makes changes in the API behavior only necessary in one place). Also it would make it possible to easily reuse it for different purposes (e.g. testing, connecting to e.g. dropbox, browser addon, ...) as this could be context-independent (ie could work in browser and node).
Disadvantages of this would also be, that the request handling is standardized, which means it is harder to customize/change certain things. For instance adding a login process to only one of the packages would be harder this way. But if they eventually diverge like that, the common base could be incorporated into e.g. solid-file-rest and then be independent of the common standard again.
If there are more differences than only the storage system it won't make any sense these two packages. Nonetheless I think it would be nice to have a context-independent package with a custom storage option.

I like what you are proposing.  Is this how you see it:

solid-rest

parses requests
based on the requested URI, calls a sub-package's storage methods
gets data from storage methods, prepares & sends response

solid-rest-localStorage

handles in-browser localStorage via app://ls/*

solid-rest-mem

handles in-browser cache via app://mem/*

solid-rest-file

handles file system via file:///*
The solid-rest package would essentially be the response and fetch methods from the current solid-rest-file and solid-rest-browser combined into one.

I abstracted the storage elements out and have solid-rest-file working with a storage-agnostic solid-rest.  Next for same thing with solid-rest-browser.  Will commit soon.

Another advantage of a centralized solid-rest is that it can provide tests which can be run against any of its descendants.  Here are the results of the tests on solid-rest usting solid-res-file
ok post container
ok post resource
ok put resource & return header.location
ok get resource
ok get container
ok 409 on delete non-empty folder
ok delete resource
ok delete folder
ok 404 on delete non-existant file
ok 404 on delete non-existant folder
ok 404 on post to non-existant container
ok 404 on get non-existant file
ok 404 on get non-existant folder
ok 405 on bad method

I have this all working now.  A solid-rest object that takes a solid-store object and then handles all the headers, request routing, response prep, etc. in ways that provide a default but can be over-written by the storage object.  The storage object only needs to provide about ten methods to perform the actual storage/retrieval.  I have two storage objects working so far - file system (the old solid-rest-file) and localStorage (the old solid-rest-browser).  I'd love it if you could create a third storage for your cache idea and would be open to any changes in solid-rest that you need.  I'll commit later to today..

It's live at https://github.com/jeff-zucker/solid-rest

I like what you are proposing. Is this how you see it:
solid-rest
    parses requests
    based on the requested URI, calls a sub-package's storage methods
    gets data from storage methods, prepares & sends response
solid-rest-localStorage
    handles in-browser localStorage via app://ls/*
solid-rest-mem
    handles in-browser cache via app://mem/*
solid-rest-file
    handles file system via file:///*

I meant it slightly differently regarding the urls, but I think you implemented it the way I had in mind anyway: solid-rest, solid-rest-file etc. don't really care if the url is app://ls or file:///. If solid-rest (created with solid-rest-localStorage) gets a GET something://pod.abc.xyz/foo/bar.ext request it forwards it tells the solid-rest-localStorage to get the bar.ext file from the foo folder (and I think including the host too would make sense. So a file with the same name can be stored on different "virtual" pods).
That is also one thing I would change in the nice info graphic you've made: The solid-rest I had in mind only uses storage and forwards all requests to to that storage. I think this is also how you've implemented it, but the graphic suggests that one solid-rest instance is linked to multiple storages.
But I think you've done a really nice work. I still have to look into the interface between storage and solid-rest. Originally I only had a very minimalistic interface in mind. Basically the one used by Storage APIs, but based on Promises. So I was a bit surprised to hear about ten methods. I think this interface is something worth discussing.
I currently don't have much time for open source projects, so I only skimmed through your code. One thing I noticed is, that POST returns 404 if the item doesn't exist
  if( options.method==="POST"){
if( !objectExists ) return _response([404])

I'm really looking forward to work with this :)

You wrote

solid-rest, solid-rest-file etc. don't really care if the url is app://ls or file:///. If solid-rest (created with solid-rest-localStorage) gets a GET something://pod.abc.xyz/foo/bar.ext request it forwards it tells the solid-rest-localStorage to get the bar.ext file from the foo folder (and I think including the host too would make sense.

Given app://ls/foo/bar.txt, the auth client needs to see the app:// in order to send that URL to solid-rest/  Solid-rest needs to see the app://ls or app://cache part in order to decide whether to send the URL to localStorage or your package.  LocalStorage and your package get only /foo/bar.txt as the pathname and the supplied option (with  the full original URI added as options.uri).  The storage handler can do whatever it likes with /foo/bar.txt, including requiring a host prefix, if desired.  This makes more sense to me than requiring the host prefix in solid-rest.  For example, localStorage stores everything from the same host in its own silo so it is a given part and doesn't need to be made explicit.  But your package may need the host, and it's free to require it from upstream users.   This is what makes sense to me, glad to hear if you disagree.

Storage API does not distinguish between Resources and Containers,  So in some cases we need both a removeResource() and removeContainer() instead of just removeItem().  In cases where both can be accomplished with one method, you can just create a dummy method to satisfy the interface.  Make sense?

Also there are other optional methods in case you want to supply your own default headers or your own make-container-turtle methods, etc.

Given app://ls/foo/bar.txt, the auth client needs to see the app:// in order to send that URL to solid-rest/ Solid-rest needs to see the app://ls or app://cache part in order to decide whether to send the URL to localStorage or your package.

I would have implemented it a bit differently. In my imagination solid-rest doesn't need to decide if the url should be handled by localStorage or something different, but this is done by the user of solid-rest. For the solid-auth-client it could look like this:
const SolidRest = require('solid-rest')
const localStorage = require('solid-rest-local-storage')
const memStorage = require('solid-rest-mem-storage')

const localStoragePod = new SolidRest(localStorage)
const inMemoryPod = new SolidRest(memStorage)

// in the fetch method of solid-auth-client
fetch(url, options) {
  if (url.beginsWith('app://ls/')) {
    return localStoragePod.fetch(url, options)
  else if (url.beginsWith('app://mem/'))
    return inMemoryPod.fetch(url, options)
  // other app://.../ handlers and default handler
}

This could also be moved to a separate package which handles these different cases and has some default storages loaded (ie localStorage and inMemoryStorage).
This way solid-rest doesn't need to know which url prefixes (app://ls/) should be mapped to which storages (localStorage). On the one hand this makes the package size smaller as only storages which are really used would be imported. On the other hand this would allow the user to specify custom storages (depending on the implementation your version could allow that too).

The storage handler can do whatever it likes with /foo/bar.txt, including requiring a host prefix, if desired. This makes more sense to me than requiring the host prefix in solid-rest.

Ok, I think that was a misunderstanding. I also don't think that the host should be required by the solid-rest. What I wanted to say is, that it should be forwarded to the storage which should take it into consideration while storing the data (this means that https://first.host/file.ext gets stored separately from https://second.host/file.ext). I'm not sure if it would make sense to enforce that behavior though. Do you think this would be useful, or that it would limit some use cases?

In my imagination solid-rest doesn't need to decide if the url should be handled by localStorage or something different

The problem is that it pushes the ability to add new interfaces onto Ruben Verborgh.  Instead of me being able to just add a new interface, I would need to submit a PR to him and he would need to have additional requires in solid-auth-client.   He's a busy guy and does not always respond to PR requests in a timely fashion.  Also it would mean that any other auth packages would need to do the same.  If there are eventually  many auth packages, each would need the same code and would need to be updated for any changes downstream.  My way a new interface requires only changes in solid-rest, your way solid-auth-client, solid-auth-cli and any others need to get changed each time.
For your second point. yes, I can pass the host to the storage modules

Also it would mean that any other auth packages would need to do the same. If there are eventually many auth packages, each would need the same code and would need to be updated for any changes downstream.

Couldn't we create another package (solid-rest-handler) which maps the various "app://xyz" urls to the storages? This way code duplication wouldn't be necessary and solid-rest wouldn't need these url handlers built into it. I think custom storages are essential to solid-rest (could be done with app://xyz handling too I guess) and a smaller package size is nice too.

Instead of me being able to just add a new interface, I would need to submit a PR to him and he would need to have additional requires in solid-auth-client.

I understand that we should make things easy for him. But I don't really think that moving the code to another package makes his work easier. As a maintainer he should take care of what the code actually does, regardless of whether it is stored in solid-auth-client, solid-rest or solid-rest-handler. So when something changes in solid-rest and a PR is submitted to update to the new version, he should also take a look at the code changes in solid-rest (in my opinion).

I don't see how pushing a few if statements out of solid-rest would help anything or what putting those ifs in solid-client would solve.  It still prevents the problem of all auth packages having to duplicate the dispatching.  I agree with you about what a maintainer should do, but that is not always the same as what they will do.   I have so many things I need from Ruben (at the moment I've got PRs in on a ton of Ruben's packages - solid-cli, solid-client, and query-ldflex and rdflib - so my ability to request things is not large.  If there's a clear technical reason to do this, I wouldn't let the maintenance situation get in the way, but I'm having a hard time understanding what you think this change would help.  Can you explain?

I also don't see what another package solid-rest-handler above solid-rest would benefit.  Can you explain?

Sorry for the delayed response, I will try to explain my view on this. First of all, it is not a big issue for me, I would be happy with the handling inbuilt to solid-rest, and a bit more happy with the handling not inbuilt. But both ways should work.
There are three reasons why I'd move the handling logic out of solid-rest into solid-rest-handler (or however it would be called). They all resolve around the opinion, that I'd like to give the user the choice on what to include, rather than presetting several things:

Having the storages automatically added to the package leads to an increased library size. The localStorage, fileStorage and others which may come in the future would automatically be added. This includes all their dependencies like node-fetch and others. For several use cases this would be redundant package size.
I am not sure if this one applies, but I'll just raise the concern: I think that localStorage and nodejs methods (fs) could be a bit troublesome when building. I fear, that some building tools say: "LocalStorage is not defined" or something like this and the developer has to resolve this issue by changing some configs. Separating the default storages from solid-rest would make it environment agnostic.
Developers who want to use their own app:// urls shouldn't really do that, because it would probably interfere the inbuilt handlers. Hence app:// urls without the predefined handling couldn't be used.

If we move the default storages and the app://ls/ handling outside of solid-rest these three issues would be resolved, because the user can choose the storages and url handling needed for the app. We would still have everything you want inside solid-rest-handler, so no functionality would be lost.
solid-rest-handler would then take the role of connecting solid-rest, solid-rest-localstorage and solid-rest-filestorage. Here's a pseudo implementation for it, in case it isn't clear what it should do:
// solid-rest-handler
const SolidRest = require('solid-rest')
const localStorage = require('solid-rest-localstorage')
const fileStorage = require('solid-rest-filestorage')

const rest = {
  ls: new SolidRest(localStorage),
  fs: new SolidRest(fileStorage),
  // mem, ...
}

// app:// urls will be passed to this by solid-auth-client as proposed in your PR
function fetch(url, options) {
  const prefix = // get app://prefix/url
  return rest[prefix].fetch(url, options)
}

module.exports.fetch = fetch

Regarding the maintaining of solid-auth-client, I think the effect would be rather small. Instead of including solid-rest-browser now solid-rest-handler would be included. The code in solid-auth-client would stay the same. If he wants to check out the code, it is a bit more split up now, hence he would have to navigate a bit more between the repos. But I think that's just a minor change in maintaining work.

The decision as to whether solid-auth-cli automatically preloads some storage handlers is a separate question from how solid-rest works so let's just leave that aside for now.
Solid-rest-localStorage defines its own localStorage object when not in a browser so there is no way it can be undefined.  It is an extremely light-weight package with no dependencies.
You are mistaken about any storages being either required by, or default to solid-rest - it is completely storage agnostic and requires the storage handler to be loaded by the user.  In the case of solid-auth-cli I preloaded some defaults but that is done by solid-auth-cli, not solid-rest.
The browser will not preload storage handlers and will permit the user to bring their own
If I previously implied that solid-rest or solid-auth-client would be making decisions about which storage handler to use, that is not the case in the way it now works.
in the HTML page or app

load solidFooHandler
load solidRest
intialize the solid rest object with solidFooHandler, which will store the handler;s the prefix for URLs, in this case "foo"
calls to app://foo/*
* go to solid-auth-client which sees "app://" and passes it to the initialized solid-rest object
* since the solid rest object knows the foo prefix and the the fooHandler, it sends all read/write for app://foo to fooHandler there  are no choices to make and no hard-coding of storages.  If someone invents barHandler, they just make sure to define the prefix "bar" and then app://bar will go to barHandler and nothing needs to change in solid-auth-client or solid-rest - only in the user's code.

So I really do not understand what an intermediary solid-rest-handler object would do that this doesn't handle.

Sorry, I think I have misunderstood you. The current way solid-rest behaves completely aligns with my wishes. I thought that you would want to make it automatically handle app:// urls, hence I thought you'd also add localStorage and fileStorage as defaults.
I've just found out, that solid-rest-file does exactly what I said solid-rest-handler would do. The does the same thing, but is written in a slightly differernt way.
Just to be clear and we don't run into more misunderstandings here: Are you intending changes to the structure of solid-rest regarding the handling of app://prefix urls? If not I think my wishes align with your implementation :)

I have one more commit to make.  It will support multiple storage handlers each of which defines its own prefix.  So when solid rest gets a request for app:// foo it looks to see if one of the storage handlers that it was intialized with can handle that and if so, passes it to them.  And yes, I was pretty sure we were thinking along the same lines. :-)

Ok, thanks for the clarification.

I think this issue is resolved now :smile:


[KIWI-1967-fix] - IPR | BE | Delete User Session Based on IPV_F2F_USER_CANCEL_END events

API test failing in main has been commented out until after the Christmas code freeze when further investigation can be made. Canary deployments were failing because of this failing test. Attached evidence to show that functionality of IPV_F2F_USER_CANCEL_END works but test is failing

Async PR happening.

Confirmed that:

the automated test reliably fails in different environments
the functionality meets the test assertion criteria when run manually (adding an event to the queue for processing soft deletes the correct data)
application logging is as you expect for a deletion to occur (this is not very explicit though - room for improvement)
It's very unlikely to be a race condition in the tests (waited 10 seconds in a lower environment with very low data volumes)

Nothing else stands out to me as an obvious issue. Agree it's best to remove the test ready for the Christmas period.


ToDo: Game Adjustments

Fine tune the game further.
Armor/Weapon prices have been adjusted accordingly.l

Add a check to see if a character has enough money in the market.
Add a check to see if the player has an item already and prevent them from purchasing that item
Find secondary use for agility

purchaseEquipment() now checks this.player.gp amount and reacts to insufficient funds

Added an if statement to check if players already own an item and sends them back to the merchant menu.


Update Getting Started

As soon as the interface/API is fixed, we need a great Getting Started in both docs and readme.

Interface is now settled and readme and getting-started updated accordingly.


Subdivide line labels by segment on overzoomed tiles

We've found that our line labelling logic is insufficient for overzoomed tiles, because it only places one label per line, which often provides enough density at each tile's "native" zoom, but is too sparse (sometimes dramatically so) when tiles are overzoomed multiple levels. See #273.
This PR increases line label density by attempting to place multiple labels per line. For each line, up to 2^dz tiles are placed, where dz is the number of levels of overzooming being applied. For example, a z16 tile would still place 1 (2^0) label at z16, but when displayed at z18 the same line would place up to 4 (2^2) labels. This is done with a "coarse subdivide", splitting the line by segment. Each label placement is assigned a range of segments in which it can place.
Examples with and without subdivide:

This could likely be improved further, either with more precise (fractional segment) subdivide, and/or by inverting the pattern so that instead of creating multiple LineLabel instances per feature, we have one LineLabel instance that can emit multiple labels. But this approach was a straightforward and significant near-term improvement, and fits well with the current architecture (we already generate multiple label instances for Multi geometries). We could also adjust the heuristic to place more labels, but in my testing I found that label repeat distance was usually the limiting factor (we could adjust that default repeat value to increase density if desired).
@karimnaaji and I discussed this, some more investigation should be done on the ES side. He thought the same issues might apply, but from a quick glance I am not seeing the same magnitude of label sparsity on device.

Targeting this for 0.6.2 release.

@karimnaaji can you take a look please?

Yep, looking at this in details.

Logic looks good to me! It's a nice way to handle this. I will add an issue to track this on -es.
A thing I noticed is that when options.subdiv == line.length the first label would try to iterate on the entire line (with segment_index = 0, segment_max = lines.length), and next labels only on segments of length 1; shouldn't we let all of the try the entire line in that case?

@karimnaaji good catch! I'll check it out.


add a @NotNull to the variant name field - AGPUSH-1634

This is for https://issues.jboss.org/browse/AGPUSH-1634
The admin UI has it;s own check to make sure the name field is filled in before submitting, so this bug would have never been hit using the UI.
@matzew 👀

I think tests, e.g. here:
https://github.com/aerogear/aerogear-unifiedpush-server/blob/cbe1eeadfb647e4f1b6c8335feabe0daede97dd3/model/jpa/src/test/java/org/jboss/aerogear/unifiedpush/jpa/InstallationDaoTest.java#L598-L600
are still under the previous assumption, that a name is not required 😁

@matzew i was wondering where those tests were  :)

@matzew looks like i got all the tests now

@lholmquist thanks a lot, dude! 🎉


Not Resopnsive and still could make better by adding animation to it

The website is static and need to be changed to dynamic as could add a funcnality more to this

Please assign this issue to me @Riyasharma28 under GSSoC'24.


Should we migrate CircleCI to Github Actions?

Need some investigation into Actions to see if this would do what we need.

Nope.  CircleCI seems to be doing a good job for now.  Closing this issue.

Nope.  CircleCI seems to be doing a good job for now.  Closing this issue.


Update MD file on new branch 2017-17-08_13-11-58

:x: Validation status: errors

File
Status
Preview URL
Details

:x:Error

Details

Line 16: [Error] Restore nuget package W:\03p1-s.optemp\packages\opbuild.scripts.1.41.0-alpha-778-g9855cfb\tools\packages.config in folder:W:\03p1-s.optemp\packages failed, possibly due to transient errors from nuget servers. Please retry building your content. If the issue still happens, open a ticket in http://SiteHelp. Detailed error: Unable to read package from path 'opbuild.filemappreprocessor.1.41.0-alpha-778-g9855cfb.nupkg'.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Provide a snack

I think it's always great to provide a snack at https://snack.expo.dev/
It's always better to get a feel instead of only showcasing a video/gif.
Would also love to know, if this library works on web. I've inspected the code a little bit and you're using PanGestureHandler, I am very confident that this library should work with react-native-web out of the box. Also things we could test, if provided a Snack :)

I am sure it will work :)


Pub is unable to solve version contraints in some cases

This issue was originally filed by<EMAIL_ADDRESS>
What steps will reproduce the problem?

clone https://github.com/luizmineo/dart-pub-errors
run pub get in error2/test

What is the expected output? What do you see instead?
Pub should download and install all dependencies. Instead, it hangs for about 20 minutes, and exits with the follwing message:
Resolving dependencies... (13:27.3s)
Connection closed before full header was received
What version of the product are you using?
Dart 1.7.0-dev.4.6
On what operating system?
Ubuntu 14.04 x64
Please provide any additional information below.
For more details, please see issue #21298

This issue has been moved to dart-lang/pub#1170.


8/11/2023 Publish

@bebound , @Taojunshen Please see the conversation in MSFT Teams.  I'm leaving this PR open for reference purposes.  I am not going to resolve these conflicts as I'm not sure what branch is actually correct.  Please share insights on how these conflicts happened.


Automated Video Segmentation with SAM-2

Description:
I'm interested in using SAM-2 to automatically process a large number of videos to obtain segmentation results. Given the scale of the dataset, manually clicking to segment each video is not feasible.
Question:
Is there a way to automate the video processing in SAM-2, leveraging its capabilities for batch segmentation without requiring manual interaction for each video?
Additional Information:
Number of videos: 100, indoor scene, 25 frames for each
Desired output: Masks for all indoor objects (e.g., tables, chairs, etc.)
Looking forward to any guidance or suggestions on how to accomplish this.

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

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

This seems to be a potentially dangerous file, and it was intercepted during the download process

https://github.com/IDEA-Research/Grounded-SAM-2?tab=readme-ov-file#grounded-sam-2-video-object-tracking-demo

https://github.com/zrporz/AutoSeg-SAM2
We provide an implementation script for automatic segmentation that finds and tracks new objects by detecting the iou of the current unsegmented part with a static mask, feel free to use it!


Self-documenting Input type parameter subtrait

As commented by @rlidwka:

It is a bit unfortunate that Input is not self-documenting, ideally we'd have Input<T: InputType> instead of Input<T: Copy + Eq + And + Stuff>, and users could've just looked up which types implement InputType trait. [...]

Technically that would be an API breaking change, but I don't know whether users ever implemented custom input types.

I would like this as well for LWIM: ideally split between discrete and continuous inputs.


Single post formatting error.

When using the following plugins the single post template becomes corrupted.
Wired Impact Volunteer Management
Volunteer manager and Store locator from https://2ndnewhawscouts.org.uk/wordpress-plugins-for-scout-websites/
WP Store Locator
Issues can be seen here https://ryedaledistrictscouts.org.uk/volunteer-opportunity/squirrels-drey-leader

I have subsequently spoken with all of the providers of the other plugins I use and they have all pointed to the issue being the theme not supporting "custom post types"

Hi @HewittRDS,
What version of the theme are you using? You can find this in Appearance->Themes->Bootscout-theme.
Also, if you could also detail any options you are setting in the plugin or when creating a volunteering opportunity. Hopefully I'll be able to reproduce this on my end with that information and get a fix out.
Kind regards,
Jack

Hi Jack,
The theme is the latest version (2.4.1)
As for setting all are completely out of the box and these are the exact plugins in use.
SFL WIVM Extender v1.5 by David Breakwell and I have spoken with him, nothing in those plugins is causing the issue.
Wired Impact Volunteer Management 2.4 by Wired Impact, they have said it is happening because the these doesn't support Custom Post Type.
I hope this helps.
Kind Regards,
Mike - Ryedale District Support Team Member / 1st Kirkbymoorside Scout Troop Team Member
[signatureImage]

From: JackFurby @.>
Sent: Saturday, April 6, 2024 2:50:30 PM
To: JackFurby/Bootscout-theme @.>
Cc: Mike Hewitt - Ryedale District Support Team Member / 1st Kirkbymoorside Team Member @.>; Mention @.>
Subject: Re: [JackFurby/Bootscout-theme] Single post formatting error. (Issue #71)
Hi @HewittRDShttps://github.com/HewittRDS,
What version of the theme are you using? You can find this in Appearance->Themes->Bootscout-theme.
Also, if you could also detail any options you are setting in the plugin or when creating a volunteering opportunity. Hopefully I'll be able to reproduce this on my end with that information and get a fix out.
Kind regards,
Jack
—
Reply to this email directly, view it on GitHubhttps://github.com/JackFurby/Bootscout-theme/issues/71#issuecomment-2041087581, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BHRKVSM3KJWBGBDIENP72I3Y374SNAVCNFSM6AAAAABFUGNOG6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBRGA4DONJYGE.
You are receiving this because you were mentioned.Message ID: @.***>
The content of this email is confidential and intended for the recipient specified in the message only. It is strictly forbidden to share any part of this message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future.

Hi HewittRDS,
Thank you for your reply about the theme and plugin configuration. Unfortunately, I have not been able to reproduce the issue on both my development site and a live site. I have included a screenshot below showing how volunteer opportunities are displayed on my end. Here are two troubleshooting steps I would take which might resolve your issue:

Re-install Wired Impact Volunteer Management plugin in case something went wrong when installing it the first time
Disable installed plugins one at a time until Volunteer Management works. If this fixes how volunteer opportunities are displayed then the last plugin you disabled is the cause of the issue.

I will continue to dig around a bit in case I missed something and will get back to you if anything changes.

So I have disabled all plugins and started again and yep the theme works perfectly right until I install the SFL WIVM Extender. Did you have it installed on your test build?
Kind Regards,
Mike - Ryedale District Support Team Member / 1st Kirkbymoorside Scout Troop Team Member
[signatureImage]

From: JackFurby @.>
Sent: Saturday, April 6, 2024 3:39:12 PM
To: JackFurby/Bootscout-theme @.>
Cc: Mike Hewitt - Ryedale District Support Team Member / 1st Kirkbymoorside Team Member @.>; Mention @.>
Subject: Re: [JackFurby/Bootscout-theme] Single post formatting error. (Issue #71)
Hi HewittRDS,
Thank you for your reply about the theme and plugin configuration. Unfortunately, I have not been able to reproduce the issue on both my development site and a live site. I have included a screenshot below showing how volunteer opportunities are displayed on my end. Here are two troubleshooting steps I would take which might resolve your issue:

Re-install Wired Impact Volunteer Management plugin in case something went wrong when installing it the first time
Disable installed plugins one at a time until Volunteer Management works. If this fixes how volunteer opportunities are displayed then the last plugin you disabled is the cause of the issue.

I will continue to dig around a bit in case I missed something and will get back to you if anything changes.
Kind regards,
Jack
Screenshot.2024-04-06.at.15-27-34.Test.opportunity.Bootscout.png (view on web)https://github.com/JackFurby/Bootscout-theme/assets/22617974/e0610ceb-8514-47a1-bd39-a22b16c935bf
—
Reply to this email directly, view it on GitHubhttps://github.com/JackFurby/Bootscout-theme/issues/71#issuecomment-2041107129, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BHRKVSLNMNVXEMEMTH6VEUDY4ACJBAVCNFSM6AAAAABFUGNOG6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBRGEYDOMJSHE.
You are receiving this because you were mentioned.Message ID: @.***>
The content of this email is confidential and intended for the recipient specified in the message only. It is strictly forbidden to share any part of this message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future.

Hi Mike,
Thank you for checking that. The SFL WIVM extender plugin also causes the issue on my end. I get the error message Deprecated: File Theme without header.php is deprecated since version 3.0.0 with no alternative available. It looks like this error message is raised when a plugin does not support block themes (such as Bootscout).
Unfortunately, this cannot be resolved by updating the theme and would require an update to the SFL WIVM extender plugin. I have briefly looked at their code, but I am not too familiar with plugin development so I cannot provide much help there.
I will close this issue now, but you can reopen it if you have anything new to add, or open a new issue if you have an unrelated problem with the theme.

The developer just asked me to change a file name to do_not_use_single-volunteer_opp.php in the plugin and report back so doing it now.
Kind Regards,
Mike - Ryedale District Support Team Member / 1st Kirkbymoorside Scout Troop Team Member
[signatureImage]

From: JackFurby @.>
Sent: Saturday, April 6, 2024 5:20:56 PM
To: JackFurby/Bootscout-theme @.>
Cc: Mike Hewitt - Ryedale District Support Team Member / 1st Kirkbymoorside Team Member @.>; Mention @.>
Subject: Re: [JackFurby/Bootscout-theme] Single post formatting error. (Issue #71)
Hi Mike,
Thank you for checking that. The SFL WIVM extender plugin also causes the issue on my end. I get the error message Deprecated: File Theme without header.php is deprecated since version 3.0.0 with no alternative available. It looks like this error message is raised when a plugin does not support block themes (such as Bootscout).
Unfortunately, this cannot be resolved by updating the theme and would require an update to the SFL WIVM extender plugin. I have briefly looked at their code, but I am not too familiar with plugin development so I cannot provide much help there.
I will close this issue now, but you can reopen it if you have anything new to add, or open a new issue if you have an unrelated problem with the theme.
Kind reagrds,
Jack
—
Reply to this email directly, view it on GitHubhttps://github.com/JackFurby/Bootscout-theme/issues/71#issuecomment-2041129944, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BHRKVSMTJKNUWW5TUKGABMDY4AOGRAVCNFSM6AAAAABFUGNOG6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBRGEZDSOJUGQ.
You are receiving this because you were mentioned.Message ID: @.***>
The content of this email is confidential and intended for the recipient specified in the message only. It is strictly forbidden to share any part of this message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future.

Deleted the file instead of renaming it and the issue disappeared.
Thanks for your help in resolving/identifying the issue.

Hi Mike,
I have just released a new update (2.4.3), which adds a few styling changes for WIVM and might be of interest for you.
Kind regards,
Jack

I've done the update and yes it looks better now, I also got the other plugin working by deleting that file and then adding a couple of spaces in the PHP file and two headers.
This is how it looks now with everything running
https://ryedaledistrictscouts.org.uk/volunteer-opportunity/squirrels-team-member
I also run the theme on the 1st Kirkbymoorside site too in standard form and it looks fantastic 😊 that is Https://1stkirkbymoorsidescouts.org.uk
Kind Regards,
Mike - Ryedale District Support Team Member / 1st Kirkbymoorside Scout Troop Team Member
[signatureImage]

From: JackFurby @.>
Sent: Sunday, April 7, 2024 10:47:38 AM
To: JackFurby/Bootscout-theme @.>
Cc: Mike Hewitt - Ryedale District Support Team Member / 1st Kirkbymoorside Team Member @.>; Mention @.>
Subject: Re: [JackFurby/Bootscout-theme] Single post formatting error. (Issue #71)
Hi Mike,
I have just released a new update (2.4.3), which adds a few styling changes for WIVM and might be of interest to you.
Kind regards,
Jack
—
Reply to this email directly, view it on GitHubhttps://github.com/JackFurby/Bootscout-theme/issues/71#issuecomment-2041398761, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BHRKVSLVDIHRGWPK42QIRRDY4EI3VAVCNFSM6AAAAABFUGNOG6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBRGM4TQNZWGE.
You are receiving this because you were mentioned.Message ID: @.***>
The content of this email is confidential and intended for the recipient specified in the message only. It is strictly forbidden to share any part of this message with any third party, without a written consent of the sender. If you received this message by mistake, please reply to this message and follow with its deletion, so that we can ensure such a mistake does not occur in the future.

Thanks so much for improving support for our volunteer management plugin @JackFurby. We really appreciate it!


merging menu/titlebar

mainly refs #53244
also refs #53252 #52920 #17180 #54575 #52954 #52952

@sbatten  I looked at the changes and they look good overall.
Both Joao and Ben are on vacation so I would not expect them to review this this or next week.
I tested this out on mac and it does not work, starting the workbench only shows three menus and clicking on the File does no actions.
On linux if I use the "custom" menu then there is no menu at all.
Is the plan to merge this in this milestone? If yes then I would expect you to test this out on all platforms and once it works let me know so I can also test it out and then we can merge it in. After that we would create some detailed test plan items and so on.

@isidorn yes, the plan is to do this, this milestone. I discovered the issue yesterday about it not working on macOS. I will fix these and test them as you suggest. I'll let you know when ready for further testing. Thanks!

@isidorn should be working on all platforms now

@sbatten I like it, filed https://github.com/Microsoft/vscode/issues/55859 as little follow up.
I notice that we still seem to hardcode some menus in the src/vs/code/electron-main/menubar.ts file (e.g. Terminal). What is the reason behind that, can we get rid of that and purely rely on the contributions?

@bpasero the menu is populated by contributions, or do you mean having the menu at a top-level should be based on contributions?

@sbatten I see the issue, so basically the top level entries are hardcoded because we have no contribution story for those?

@bpasero right, they just exist and can be contributed to. but I believe the menubar in the render process can be responsible for aggregating and ordering to keep it in one place


Error with camera source on Oppo device (scrcpy v2.2)

[X] I have read the FAQ.
[X] I have searched in existing issues.

Environment

OS: [e.g. Debian, Windows, macOS...] Windows 10
scrcpy version: [e.g. 1.12.1] 2.2
installation method: [e.g. manual build, apt, snap, brew, Windows release...] Windows release
device model: Oppo Find X3 Neo 5G
Android version: [e.g. 10] Android 13

Describe the bug
When trying to run the v2.2 version using the new camera feature, scrcpy crashes with the following error:
scrcpy --video-source=camera --camera-id=0 --camera-fps=20
scrcpy v2.2 <https://github.com/Genymobile/scrcpy>
INFO: Camera video source: control disabled
INFO: Camera video source: microphone audio source selected
INFO: ADB device found:
INFO:     -->   (usb)              c33fafdf            device  CPH2207
D:\Desktop\Proyectos\Software en Uso\scrcpy-win64-v2.2\scrcpy-server: 1 file pushed, 0 skipped. 67.7 MB/s (64363 bytes in 0.001s)
[server] INFO: Device: [OPPO] OPPO CPH2207 (Android 13)
[server] INFO: Using camera '0'
[server] ERROR: Exception on thread Thread[camera,5,main]
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.app.Application.getApplicationContext()' on a null object reference
        at android.hardware.camera2.OplusCamera2StatisticsManager.addInfo(OplusCamera2StatisticsManager.java:69)
        at android.hardware.camera2.impl.CameraDeviceImplExtImpl.extendsetInfo(CameraDeviceImplExtImpl.java:47)
        at android.hardware.camera2.impl.CameraDeviceImpl$1.run(CameraDeviceImpl.java:190)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:240)
        at android.os.Looper.loop(Looper.java:351)
        at android.os.HandlerThread.run(HandlerThread.java:67)
INFO: Renderer: direct3d
INFO: Texture: 4096x3072

I have tried running all types of commands.
What could it be? I don't know if it does affect other oppo devices
Thanks

Duplicate of #4392 (please test the provided binary :wink:)

sorry for that! thanks


Mouse following in Blind mode.

Broke custom bot names, cell recognition should be by cell_id not name.

Nice, but you could add a key to press to switch from mouse to cell and viceversa.. easy..

This make the bots like www.raga.pw bots? if yea, i will make a pull request later for some shortcuts/better ui

IT makes it like it... but only when bots are in range

I'ma use this, can i use with public feeder?

You need to run your own feeder server with nodejs.

@kcxx i have problems bots spawn only 4~10 with 1K socks5 proxies but with david's they spawn 500.

if they join they dont follow me.  (with my feeder)

@Mayed Read my comment... this is vased on old version so it will crash somethings

@hassanila97 what do u mean? when i first launched it  it worked for a few secs and then stopped

@ it works perfectly on ogar....

what exactly will crash?

@davidmann4 It's like you updated some code a while ago... and now if you merge this script all those updates are gone... you understand  (They're not so many btw)

@davidmann4 e updated it so now I think nothing will crash... no problem... sry

mv is the vector that bot should move.

Also you can press 'a' to change from mouse movement to cell movement

!? still do not get MV - I guess there are way better solutions to do this. Like offset calculation and overriding mode to normal for bots who know the offset

@kcxx   @hassanila97
now the bots doesnt follow even in blind mode so as david's one.
even in Ogar doesnt follow --__--

It's not my fault that you can't use software properly --__--
http://gfycat.com/PoorSlightAsianelephant

@kcxx can you help me fix it?

@kcxx  your ARE THE POORKCXXASIANELEPHANT BITCH

my bots arent moving although i have my own server :(  and why do the bots only show numbers on it?

@mayed505 Stop acting like a spoiled kid. Noone is going to help you that way.

Well u called me. Poorslightasianelephant......
 Noone is going to help you that way.
—
Reply to this email directly or view it on GitHub.

@mayed505 He didn't call you that, It's a random generated string.

LMAO

Where dfq is David.....  ---___---  som1 else needs to help David and also have write access... ☆___☆

@ItzLevvie  no.....

everyone can use this quickfix - i will not merge it since it is not well coded - as far as I understood it you added a new packet called MV - I do not undertsand why we need this

@davidmann4 Yeah it was more like a quick hack, not something to be used for production code.

@mayed505 It's a random generated string....

Do the bots follow you in public?

Someone can do a name generator for bots? like bagar.io, because i know a ogar server who have anti bots with much same names

@Lukkez http://textmechanic.com/text-tools/randomization-tools/random-string-generator/
just add ur prefix

Lol, much good

@kcxx  After the update my bots arent moving anymore

bots not follow me...

U have to use agar expose

link?

merge conflict

david can you send me the link?

@davidmann4 can you upload a new tutorial video??


rospilot: 1.3.4-0 in 'kinetic/distribution.yaml' [bloom]

Increasing version of package(s) in repository rospilot to 1.3.4-0:

upstream repository: https://github.com/rospilot/rospilot.git
release repository: https://github.com/rospilot/rospilot-release.git
distro file: kinetic/distribution.yaml
bloom version: 0.5.24
previous version for package: 1.3.3-0

rospilot
* Rescale PTS properly
* Fix usage of deprecated API
* Fix usage of invalid iterator
* Add more logging to camera node
* Fix data structure corruption due to race
* Contributors: Christopher Berner

Waiting for another sync...


Minimum requirements for the installation of Bravo

The feature request
Hello everyone,
Is it a minimum requirement to have Windows 10 to install Bravo for Power BI?
I am currently installing it on Windows 8.1 and I am getting the following error:
System.DllNotFoundException: Unable to load DLL 'Photino.Native' or one of its dependencies: No se encontró el proceso especificado. (0x8007007F)
at PhotinoNET.PhotinoWindow.Photino_register_win32(IntPtr hInstance)
at PhotinoNET.PhotinoWindow.<>c.<.ctor>b__238_0()
at PhotinoNET.PhotinoWindow.Invoke(Action workItem)
at PhotinoNET.PhotinoWindow..ctor(PhotinoWindow parent)
at Sqlbi.Bravo.Infrastructure.AppWindow.CreateWindow() in D:\a\1\s\src\Infrastructure\AppWindow.cs:line 58
at Sqlbi.Bravo.Infrastructure.AppWindow..ctor(IHost host, AppInstance instance) in D:\a\1\s\src\Infrastructure\AppWindow.cs:line 35
at Sqlbi.Bravo.Program.Main() in D:\a\1\s\src\Program.cs:line 25

I have installed the Microsoft Visual C++ runtime libraries and I am getting the following error:
The GetdpiforWindow procedure entry point cannot be found in the dynamic link library C:\Program Files\SQLBI\Bravo\'Photino.Native.dll
Regards
Proposed solution
Show what are the minimum requirements for installing Bravo for Power BI.
Additional context
No response

Hi @jafernandezpuga,
The minimum supported client version is Windows 10 version 1809 build 10.0.17763 ( Windows 10 October 2018 Update )
We will add this information to the project documentation and consider whether to add a warning during installation as well.

Added in 0.9.3


Resistance readout in display doesn't work

There are several issues with the resistance readout in the RLP display (Examples at 10V):

The resistance readout in the RLP display shows the ArachnidLabs logo instead of the Ohm symbol.
Problem with the deciamal point at "high" resistances (2.14 Ohm instead of 214 Ohm)
The value is not updated correctly. The restistance are updated in intervalls:

0mA-100mA:  2.14
110mA-200mA: 100
210mA-300mA: 50.2
310mA-400mA: 33.5
410mA-500mA: 25.1
510mA-600mA: 20.0
610mA-700mA: 16.7
710mA-800mA: 14.3
810mA-900mA: 12.5
...

Artefacts when displayed in the Main Display at 0A (a big "2.14" and a small "----" with ArachnidLabs logo in the left bottom corner)

Blurrycam illustration of artifacts when current set to 0.


[Script Commands Store – Find and manage your Raycast Script Commands] ...

Extension
https://www.raycast.com/tholanda/script-commands
Description
Error:
Command id unknown

Steps To Reproduce

Install Script Command Store extension
Search for Amphetamine
Install "Start Default Session" and "End Session" script commands
Both commands remain as "installed" in "Script Command Store"

Current Behaviour
Both commands remain as "installed" in "Script Command Store"
Expected Behaviour
Both commands should be uninstalled in Script Command Store

I've been able to reproduce it consistently.

Install script command of your choosing
Uninstall said script command
Open Script Command Store extension
Observe said command from step 1 still installed

There's no option to reinstall / install.  Only option is to uninstall, which throws the error:
Command id unknown

I also see errors about Raycast API.
Unfortunately I can't do a screen recording (this is a work machine and very restricted as far as installed software 🙁).

Yes, there are tons of things to fix in the store. I haven't had a lot of free time to work on them recently, so things just got old and they didn't get fixed. Since the last time I submitted the extension to the Store, Raycast has deprecated some APIs that I was making use of. This means that it isn't odd to me that you are seeing those errors from the Raycast API.
The good thing is that because of your report and another one I recently received, I have decided to invest a bit of time to fix those problems. Soon, I should submit an update fixing them all. I cannot promise when since I have my work schedule quite full. However, as soon as I submit it and it gets accepted, I will mention this issue here.
In any case, thank you for engaging here to report the problem.


684- Updated the images and made slight changes to text

Add here your WMS ID  684
General requirements

Information in the workshop is adequate and updated
Code is correct and working
Links are correct
Make sure you enter the help email link in your manifest.json
Please make sure WMS URLs are updated as needed after your PR is approved

Checklist - Refer to the QA document for the complete list
Please confirm that the following is completed before submitting your PR

[x ] All filenames are lower case (including folders, images, files, etc.)
[x] Filenames are descriptive
[x] Your workshop folder structure should be similar to the one used in the sample workshop (https://github.com/oracle-livelabs/common/tree/main/sample-livelabs-templates/sample-workshop)
[x] Are you using multiple versions (desktop/, sandbox/, tenancy/)? Make sure that each of them contains a manifest.json and an index.html
[x] Image references in markdown contain an alternate text

Hi @AnilmNair! Your branch has conflicts that must be resolved. Please solve them in order to merge the PR.


Remove obsolete Backported classes for jackson 1.5 support

Description
This ancient commit 10 years ago ( https://github.com/opensearch-project/opensearch-hadoop/commit/b919c173d4ad1dabc940c8edc40a6ebf0c9c0d05 ) added Backported classes to support jackson 1.5
But the hadoop version was quickly updated back to 1.8.8: https://github.com/opensearch-project/opensearch-hadoop/commit/76ca1a70b2458a031c545490c202370d1bc3d64d
And the hadoop version in the project are not using 1.5 anymore:
hadoop 3.1.2: jackson 1.9.13
hadoop 2.7.6: jackson 1.9.13
hadoop 2.2.0: jackson 1.8.8
so I think that jackson 1.5 support is no longer imporant.
These hardwired classes make it difficult to bump the jackson version to 1.9.13
Issues Resolved
This PR removes the backported classes and makes it easier to bump the jackson version later.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Thanks for the review @Xtansia I've updated the changelog.


eth-bytecode-db bug: grpc connection

we noted that eth-bytecode-db doesnt response on simple
curl 'https://eth-bytecode-db.services.blockscout.com/api/v2/verifier/solidity/versions'

also, service doesn't log anything. After a restart, error didnt go away. After smart-contract-verifier restart error resolved.
My assumption is that grpc connection between eth-bytecode-db and verifier is lost and couldn't be fixed for some reason.
My suggestion is to add logging and investigate the problem. Or move to http connections between services

We've improved logging capabilities for eth-bytecode-db and smart-contract-verifier services, so that now it would be easier to fix the problem if that occurs.
Besides that we are planning to move to the HTTP client for the eth-bytecode-db to send requests to the verifier


Fix #210 - Specify char array range to create string

Sorry, I noticed that created incorrect string.
[ 'a', 'b', 'c', '\0', '\0', '\0'... ]

It shoud be
[ 'a', 'b', 'c' ]

Please merge again.

Thanks for the fix. I noticed the missing length at first, but I assumed that everything is alright (should have reviewed more carefully; sorry for that!). Very nice that you double-checked. Much appreciated!


Move to default gcc version (in a docker)

Subj

It seems the default version for ubuntu 20 was in fact gcc-9, the fix is invalid


reindex search after sending content to content-store

Currently to update the homepage with recently ingested content the search service needs to be called manually to reindex its content.
As a temporary measure to automate this, a task should be added to repopulate search with recently ingested content
Task

add a task at the end of process_elife_zip_dag to that sends a POST request to http://api-gateway:8081/search/populate

Works as the content store processing is (currently) blocking. Other option is a (very?) frequent cron job, but given everything is reindexed this approach probably better for now.


Depreciated Java

Not sure if you are still working on this card any more. Since the latest update I have noticed that the add-on now says it is depreciated in the Configuration>Lovelace>Resources section. It also fails to load half of the time which I think is related to that as I have other depreciated front end add-ons that are doing the same. I have to refresh a few times for it to display the card now. Not sure if there are any tweaks I can do on my end so I figured I would reach out here. Let me know if you need more info.

This is a community card now, meaning not maintained by an active dev


Remove reference to etc1_global_selector_codebook from transcoder wiki page

I was trying to use the transcoder, and I was using the wiki found here:
https://github.com/BinomialLLC/basis_universal/wiki/How-to-Use-and-Configure-the-Transcoder
which has the following section:

Also, ideally once at startup, you need to create a single instance of the basist::etc1_global_selector_codebook class, like this:

basist::etc1_global_selector_codebook sel_codebook(basist::g_global_selector_cb_size, basist::g_global_selector_cb);

This did not compile, so I looked at the repo history and saw that etc1_global_selector_codebook was removed almost everywhere in commit deeb5ac.

..., removing global selector palette code (it was unused/dead code), ...

I would suggest removing the line from the wiki, as while it's easy on first compile to tell that it doesn't work, figuring out whether one must do something else instead can take some time. (My interpretation after reading through that commit is that there is no replacement operation necessary.)

Duplicate of #365, though this issue is probably more descriptive

@tim-rex Oh, thanks! I searched for "etc1_global_selector_codebook" and when I got no results I assumed there wasn't an issue yet. This has a "mentioned" link there now, so if there is value in the description it won't be lost. I'll close this.


Serve screenshot images

This pull request adds the ImageWriter status client. The ImageWriter is very similar to the FileWriter client except it does not output a debug file. I chose to make a new client for this instead of using FileWriter because the debug file from FileWriter could potentially have more information in the future which should maybe not be exposed? (kinda just guessing here)
The nginx config is very similar to the one from Splatoon2.ink (https://github.com/misenhower/splatoon2.ink/commit/0a9430af00f1d16b3229ce06f205e1f59cfb2a2e) with the addition of autoindex on so that the files can be found easily. These image paths should also be documented in the GitHub wiki.
Carrying on from #28, this pull request also adds a social:test:image npm script that is implemented in the same way as social:test:mastodon.

@catgirlinspace I didn't realize you were the one who originally requested that for Splatoon2.ink! 😄
This PR looks great to me, thank you! And good thinking on breaking it out to a different client class.


First i2c read (after write) returns 0???...=??, nth read return previous (n-1) (IDFGH-2862)

Environment

Development Kit:        none
Module or chip used:  ESP32-WROOM-32
IDF version: v4.0
Build System:         idf.py
Compiler version:    xtensa-esp32-elf-gcc (crosstool-NG esp-2019r2) 8.2.0
Operating System:     macOS
Using an IDE?: No
Power Supply:         usb

Problem Description
I've connected 2 esp32's using i2c, master and slave.
I want to do a combined write and read from the master.
(I couldn't figure out how to make this work by reading registers, so I'm just reading the buffer.)
The master sends some messages the slave should ignore.
Then the master sends a message for which he should "reply" (by storing the reply in its buffer)
The master should then read the message stored in the buffer.
However, the first time the master tries to read the buffer, he gets O????????????????????????????????=??(+original string send by master??), instead the expected reply.
The second time, the master reads the reply from the first command, instead of the second, and so on.
I'm guessing that the master does not wait until there is an actual value in the buffer.
However, I have no explanation to why/how the original string send by the master is attached to the reply, as they should be in different ringbuffers...
Expected Behavior
Master should reads the correct value from the buffer (once stored) when requested (instead of one cycle later).

Actual Behavior
Master reads strange things the first time, then it reads the previous reply.

Code to reproduce this issue
I've removed the ret checks, but all are ESP_OK.
This "works" when writing and sending in different command (with stop cmd before restart), and waiting 1 second between them.
But this would defeat the purpose as we want to guarantee that the response is the first item in the buffer and that no other cmd would be read in between them (SCL line should thus need to stay low, therefor I need to do this in one cmd and without the stop. I want to use this in a multi-master setup.)
master:
#define ACK_CHECK_EN                0x1
#define ACK_CHECK_DIS               0x0
#define ACK_VAL                     0x0
#define NACK_VAL                    0x1

void i2c_master_init() {
    i2c_config_t conf;
    conf.mode               = I2C_MODE_MASTER;
    conf.sda_io_num         = I2C_MASTER_SDA_IO;
    conf.sda_pullup_en      = GPIO_PULLUP_DISABLE;
    conf.scl_io_num         = I2C_MASTER_SCL_IO;
    conf.scl_pullup_en      = GPIO_PULLUP_DISABLE;
    conf.master.clk_speed   = I2C_MASTER_FREQ_HZ;
    esp_err_t ret = i2c_param_config(I2C_MASTER_NUM, &conf);
    ret = i2c_driver_install(I2C_MASTER_NUM, conf.mode, 0, 0, 0);
}

void i2c_master_read_slave(const uint8_t slave_add, uint8_t *data_wr, uint8_t* data_rd, size_t size_rd, bool local) {
    printf("Master writes: %s\n", data_wr);
    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, ( slave_add << 1 ) | I2C_MASTER_WRITE, ACK_CHECK_EN);
    i2c_master_write(cmd, data_wr, RW_TEST_LENGTH, ACK_CHECK_EN);
    i2c_master_start(cmd);  // send restart signal (yes, no stop before here)
    i2c_master_write_byte(cmd, ( slave_add << 1 ) | I2C_MASTER_READ, ACK_CHECK_EN);
    i2c_master_read(cmd, data_rd, size_rd, ACK_VAL); // no extra i2c_master_read with size_rd -1 as this is already in the i2c_master_read function
    i2c_master_stop(cmd);
    ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, TICKS_TO_WAIT);
    i2c_cmd_link_delete(cmd);
}

void app_main() {
    i2c_master_init();

    char command_1[] = "IGNORE THIS 0000";
    char command_2[] = "WHATS MY NUMBER? 0000";
    uint8_t *data_rd = (uint8_t*) calloc(RW_TEST_LENGTH, sizeof(uint8_t));
    uint8_t *data_wr = (uint8_t*) calloc(RW_TEST_LENGTH, sizeof(uint8_t));

    for (unsigned int nr = 0;;) {
        for (int i = 0; i < 5; ++i) {
            nr = (nr+1) % 10000;
            sprintf(command_1+sizeof(command_1)-5, "%.4u", nr);
            memset(data_wr, 0, RW_TEST_LENGTH);        // ensuring data_wr is clean
            memcpy(data_wr, command_1, sizeof(command_1));  // setting cmd in it
            write_to_control_unit(data_wr);             // write to control unit
        }
        nr = (nr+1) % 10000;
        sprintf(&command_2[sizeof(command_2)-5], "%.4u", nr);
        memset(data_wr, 0, RW_TEST_LENGTH*sizeof(uint8_t));
        memcpy(data_wr, command_2, sizeof(command_2));
        read_from_control_unit(data_wr, data_rd, RW_TEST_LENGTH);   // write to CU and read response

        printf("Master reads: %s\n", data_rd);
    }
}

slave:
void i2c_slave_init() {
    i2c_config_t conf_slave;
    conf_slave.sda_io_num       = I2C_SLAVE_SDA_IO;
    conf_slave.sda_pullup_en    = GPIO_PULLUP_DISABLE;
    conf_slave.scl_io_num       = I2C_SLAVE_SCL_IO;
    conf_slave.scl_pullup_en    = GPIO_PULLUP_DISABLE;
    conf_slave.mode             = I2C_MODE_SLAVE;
    conf_slave.slave.addr_10bit_en = 0;
    conf_slave.slave.slave_addr = ESP_SLAVE_ADDR;
    esp_err_t ret = i2c_param_config(I2C_SLAVE_NUM, &conf_slave);
    i2c_driver_install(I2C_SLAVE_NUM, conf_slave.mode, 1024, 1024, 0);
}

void app_main() {
    i2c_slave_init();

    char command_2[] = "WHATS MY NUMBER? ";

    uint8_t *data_rd = (uint8_t *) calloc(RW_TEST_LENGTH, sizeof(uint8_t));
    uint8_t *data_wr = (uint8_t *) calloc(RW_TEST_LENGTH, sizeof(uint8_t));

    for (;;) {
        int size_rd = i2c_slave_read_buffer(I2C_SLAVE_NUM, data_rd, RW_TEST_LENGTH, portMAX_DELAY);
        printf("SLAVE READ [%i] bytes: %s\n", size_rd, data_rd);

        bool cmd_found = true;
        for (i = 0; i < strlen(command_2); ++i) {
            if (data_rd[i] != command_2[i]) {
                cmd_found = false;
                break;
            }
        }
        if (cmd_found) {
            memset(data_wr, 0, RW_TEST_LENGTH); // ensuring data_wr is clean
            memcpy(data_wr, data_rd+i, 4);    // setting XXXX nr
            size_t d_size = i2c_slave_write_buffer(I2C_SLAVE_NUM, data_wr, RW_TEST_LENGTH, TICKS_TO_WAIT);
        }
    }
}

Hi, @MrCavemen
The slave does not support SCL stretch and the current driver do not support restart read operation (start+write+write+reastart+write+read+stop)  in slave mode.  If the application does not write data to the tx ringbuffer in advance(calling i2c_slave_write_buffer), some garbage values will be read by the master.
In your example,  when the master sends "WHATS MY NUMBER?"  message to the slave, the slave receives and stores it in the hardware rxfifo.  then the master read the slave, but the application  dose not feed the txbuffer  in advance,  some gaebrg value will be read.
thanks!!

@MrCavemen Thanks for reporting. Please help check the notes by @koobest , will close for now, thanks.


Visual update to minimize button

Theme values are applied to minimize button on Now Playing page and it's layout is changed so that it's no longer under podcast image.
Before

After

Hi @erdemyerebasmaz,
I have re-arranged the now playing screen, separating the image & title and the notes to make way for chapter support. The minimise button is no longer hidden by the image.

Hi @erdemyerebasmaz,
The only problem I have with using the primaryColor for this is that on the default light theme the minimise icon would be orange; the rest of the icons such as search, menu etc would be black. Do you just want that particular icon a different colour or apply that to search, menu etc too? If the latter, using primaryIconTheme could work.

Hi @erdemyerebasmaz,
The only problem I have with using the primaryColor for this is that on the default light theme the minimise icon would be orange; the rest of the icons such as search, menu etc would be black. Do you just want that particular icon a different colour or apply that to search, menu etc too? If the latter, using primaryIconTheme could work.

The latter, we have primaryIconTheme defined, unfortunately it does not apply to this icon.
We should add color: Theme.of(context).primaryIconTheme.color

OK, even easier then. I'll apply the primaryIconTheme colour to that icon.

Done and update pushed.


Miscellaneous Podboat code improvements/cleanup

Coverage increased (+0.05%) to 58.47% when pulling 50cf04e606a60cab1ab6281fd064240e3c1c437b on dennisschagt:feature/podboat-improvements into 865eec6e211e9e6b137144d1036ee79e659d95e2 on newsboat:master.

I decided to rebase directly, range-diff:


Fix: Percentage through file always 3 in length

Makes Percentage through file always 3 in length.
Befor:

After:

I like it! Thanks


url not known in this method

Salamo'alaykom,
I think in the line code bellow you to indicate api_url instead of url.
raise InvalidResponseError(f"\nUnable to retrive prayer times Url: {url}")
See:
https://github.com/yac69/mawaqit_times_calculator/blob/c44dc19568eff31ada0b84d5e68037d0bc91bb7f/mawaqit_times_calculator/pray_times_calculator.py#L95

Salam Yes, in all case, I have rewritten the mawaqit library from scratch. the new one is in the file mawaqit.py and exceptions are well defined and working well. Yacine Le 2022-06-13 18:13, hajtux @.> a écrit : > > > Salamo'alaykom, > > > > I think in the line code bellow you to indicate api_url instead of url. > > > > raise InvalidResponseError(f"\nUnable to retrive prayer times Url: {url}") > > > > See: > https://github.com/yac69/mawaqit_times_calculator/blob/c44dc19568eff31ada0b84d5e68037d0bc91bb7f/mawaqit_times_calculator/pray_times_calculator.py#L95 > > > > — > Reply to this email directly, view it on GitHub (https://github.com/yac69/mawaqit_times_calculator/issues/3), or unsubscribe (https://github.com/notifications/unsubscribe-auth/AMUGT5A4DD4RCN3CIX4NVX3VORXTDANCNFSM5YP5JYAQ). > You are receiving this because you are subscribed to this thread.Message ID: @.> > >


500.30 when publishing to .net 6 Web App with API

I am trying to do the follow from a web app:
Get the current user logged in (any way)
Used microsoft authentication
Allow get and post based on identity
The site works fine until I connect cosmosdb as a connected service and I tested a Get with the code mentioned on this front page.
It works locally but not after publishing.

The SDK does not return HTTP 500, potentially it's your Web Application failing, not handling the SDK response/exception.
The only way we can help you in this repository is if you share the Cosmos DB .NET SDK exception (if any), we cannot help debugging particular applications.

What is the proper way to make this happen with the SDK?
It would be nice to see an example from the SDK that uses Microsoft auth bearer with cosmos from a web app. That is all I'm really doing but can't pinpoint the lines of code I'm missing. From what I can tell, it should be working.

@ziron999 Not sure I understand your question.
Let's first start with, the HTTP 500 you are getting, it means there was an error. Which is the error? Are you logging it? If not, then that's where you need to start, you need to see which is actually the error in your app code that is generating this problem? The error if it's an exception, will contain details, the call stack, message and more information. That will tell you where to go next, maybe this has nothing to do with the SDK.
If the exception is an SDK generated from the SDK (type CosmosException) then please share all the details here and we can try to help you.
If the code works locally but not when deployed, it's basically the same code, so this is probably related to some configuration missing when deployed or some difference in the environment.
We cannot help troubleshooting your App, we can only help understanding SDK exceptions if any.

This can be closed, we have moved away from cosmos db


notes that are part of tasks

I have tasks on my Nextcloud server that have notes as part of the task.  In Errands I can't figure out how to view and edit those notes.

For now, you can't do that. But it is planned in the next releases.

Added in 45.1.


AzureBlobFileSystem: remove socket_timeout

socket_timeout option is not being used
closes #303

Thanks! Could you do this as a deprecation warning to avoid breaking code that was passing that?
Since we use None for the default, you'd need something like
# top-level
_socket_timeout_default = object()

def __init__(self, ... socket_timeout=_socket_timeout_default, ...):
    # in __init__
    if socket_timeout is not _socket_timeout_default:
        warnings.warn("message", FutureWarning)


Add Ada Style Guide

Overall the rendering looks good, except for the Bibliography. It has a bunch of empty items.
@reznikmm Would it be possible to have separate files for the sections in chapters? For example "Readability" is one very long page. Could it have separate sections like "Spelling", "Naming Conventions", etc.? These sections should then show up in the sidebar on the left.

I agree that we will benefit from file splitting, but right now I don't see a simple way to do it. (Any idea?) Let's merge the PR as is and make splitting latter?

so, what is the plan?

IANAL.  Reading the license text it seems like we need to include on each page:

[ ] title
[ ] original URI
[ ] attribution ("Adapted from work by various authors of the Ada Wikibook.  The original work has been modified.")
[ ] no endorsement clause -- just in case they move to v4 of the license ("Page not endorsed by Ada Style Guide Wikibook authors")
[ ] a link to the CC BY-SA 3.0, including text indicating that this particular content falls under that license
[ ] a note in the general footer of the site as a whole, "Licensed under Apache 2.0 unless otherwise noted."

e.g. something like this at the top of each page:
:::note

This page of the "Ada Quality and Style Guide" has been adapted from the original work at
https://en.wikibooks.org/wiki/Ada_Style_Guide, which is licensed under the the
[Creative Commons Attribution-ShareAlike License](https://creativecommons.org/licenses/by-sa/3.0/);
additional terms may apply.  Page not endorsed by Wikibooks or the Ada Style Guide Wikibook authors.

:::

@pyjarrett, done. Looks not so great :disappointed:, can we put the note at the bottom of pages?

@pyjarrett, done. Looks not so great 😞, can we put the note at the bottom of pages?

Bottom of the page is fine.

I moved CC SA note to the page end.


Basic Drag and Drop Dart example flaw

This issue was originally filed by<EMAIL_ADDRESS>
What steps will reproduce the problem?

Start the 'Basic Drag and Drop' Dart demo.
Drag one column over the header region of another.

What is the expected output? What do you see instead?
Instead of exchanging the inner.html of the dragged and target column, the dragged column is filled with contents of the target header, and target header is filled with contents of column. You can see by two lines appearing at the bottom of the targeted column and no line in the dragged column. Also, the 'over' styling does not work if you drag inside the header. It only works in the main part of the column.
What version of the product are you using? On what operating system?
Dart 1.2.0, Google Chrome  33.0.1750.152, Fedora 17
Please provide any additional information below.
The problem is that the _onDragEnter, _onDragover, and _onDragLeave listeners fire not only when the given element is dragged over, but will also fire in response to dragging inside a child element and the event.target will be the child element. Worse yet, dragging the mouse from the header to the main region of the column will cause _onDragEnter to fire first with the column as the event.target, followed by _onDragLeave firing with the header as the event.target. This makes turning on or off 'over' styling based simply on that last DragEnter or Dragleave event insufficient.
I have provided a possible solution that does not have these problems (with Chrome at least). First I provided a function that will ascend the DOM tree from a child element until it find a parent element with the column class. This is used in the _onDragEnter, _onDragover, _onDragLeave and _onDrop to retrieve the parent column element from a child element whether or not the event.target is the column or a child element of the column.
This still leaves the problem of the 'over' styling not being set when dragging in the header. To solve this I attached a 'dragCounter' attribute to the columns elements which is incremented on any _onDragEnter event and decremented on any _onDragLeave event. Now dragging back and forth between the header and body does not mess up the highlighting.
I have attached modified versions of the .dart .html and .css files with these changes. The .css file is slightly altered to make the headers more colorful and obvious.

Attachments:
dnd.dart (3.16 KB)
dnd.html (755 Bytes)
dnd.css (2.26 KB)

The drag-and-drop sample has been archived.


torbrowser: 5.5.5 -> 6.0

Things done

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

Used: nix-env --option build-use-sandbox true -f . -iA torbrowser for installing.

Built on platform(s)

[x] NixOS
[ ] OS X
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"

This command return:
nix-shell -p torbrowser --run "torbrowser-review wip"
/run/user/1000/nix-shell.osUdZA/rc: line 1: torbrowser-review: command not found

[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

You have to use nox-review, not torbrowser-review. :smile: But it won't matter for this package because no packages depend on it.

Ha OK, so not sure I understand this comment then ^^ Isn't nox a tool to install packages?

This doesn't work.

Works for me. Thanks!

This package is now unusable for me. This is why I had not already updated it (I'm one of the maintainers). I would have liked for this to be worked out before merging ...

@joachifm I don't understand why it works for me then… what problem do you experience?

@fpletz it fails to start the bundled tor, for some reason I have yet had the opportunity to look into.

Weird. :frowning: Do you maybe have tor running as a system service?
Just tested with the current master:
May 31 16:03:34.241 [notice] Tor v<IP_ADDRESS> (git-7a489a6389110120) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.1t and Zlib 1.2.8.
May 31 16:03:34.244 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
May 31 16:03:34.248 [notice] Read configuration file "/nix/store/x4xv9xfcaxb2sz3kl68p82p1j80zpa0n-tor-browser-6.0/share/tor-browser/Browser/TorBrowser/Data/Tor/torrc-defaults".
May 31 16:03:34.248 [notice] Read configuration file "/nix/store/x4xv9xfcaxb2sz3kl68p82p1j80zpa0n-tor-browser-6.0/share/tor-browser/Browser/TorBrowser/Data/Tor/torrc".
May 31 16:03:34.301 [notice] Opening Socks listener on <IP_ADDRESS>:9150
May 31 16:03:34.302 [notice] Opening Control listener on <IP_ADDRESS>:9151
May 31 16:03:34.000 [notice] Parsing GEOIP IPv4 file /home/fpletz/.torbrowser4/Data/Tor/geoip.
May 31 16:03:34.000 [notice] Parsing GEOIP IPv6 file /home/fpletz/.torbrowser4/Data/Tor/geoip6.
May 31 16:03:34.000 [notice] Bootstrapped 0%: Starting
May 31 16:03:35.000 [notice] Bootstrapped 5%: Connecting to directory server
May 31 16:03:35.000 [notice] Bootstrapped 80%: Connecting to the Tor network
May 31 16:03:35.000 [notice] Bootstrapped 85%: Finishing handshake with first hop
May 31 16:03:36.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
May 31 16:03:36.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
May 31 16:03:36.000 [notice] Bootstrapped 100%: Done
May 31 16:03:40.000 [notice] New control connection opened from <IP_ADDRESS>.
May 31 16:03:40.000 [notice] New control connection opened from <IP_ADDRESS>.

Testing if requests are in fact routed over tor succeeds, too.

Do you maybe have tor running as a system service?

I don't think that is relevant, I am able to use the tor-browser but I'm also running tor as a system service!

Nope, it just fails without giving a reason ... running the bundled tor directly works. Will have to do some more sleuthing. I'm sure it's something stupidly simple that just happens to escape me right now. No idea why it would show up for 6.0 but not 5.5.5, though.

I have resolved the issue. Given the nature of the problem and its fix, I fail to understand why you aren't affected. Did you happen to test against a fresh profile?

In a checkout of nixpkgs master with this patch I executed the following commands to test:
$ nix-build -A torbrowser
$ ./result/bin/tor-browser

@fpletz was there an existing torbrowser profile directory in your $HOME?

Ah, sorry, that's what you meant with profile. Here we go, after moving ~/.torbrowser4, torbrowser indeed fails to launch tor.

@fpletz thank you; that confirms my diagnosis. I will push a fix shortly.

More generally, this confirms that I should eventually get around to pushing my refactor that addresses the problem with stale profile data more fundamentally ...

Pushed a patch that fixes the problem for me, hopefully for you as well, please let me know if it does not.

Also works for me without a profile. Thanks!


[QUESTION] - Dependencies management with a multi-modules project

As a developer to use the library i import:
<dependency>
  <groupId>dev.langchain4j</groupId>
  <artifactId>langchain4j</artifactId>
  <version>${langchain4j.version}</version>
</dependency>

But this module drags code associated with every single store technology (milvius, weaviate etc...). Even if it is "just" the store class and POJO, some can be in conflict with each other. For instance, the Elastic needs Jackson whereas json is used everywhere.

Instead of loading implementation dynamically and changing the core for each new vector store why not keeping only the interfaces in core and pushing implementations to the dedicated modules ?
A developer could then only import the module langchain4j-milvius and the core will be loaded by transitivity. Think about how spring-data is operating: You have spring-data-cassandra, spring-data-redis but never import jsut spring-data,  it is imported by something else. I know python doing some FAT libraries but here decoupling is more java-ish.
So as refactoring actions would be:

Most of the code from the module langchain could go to langchain-core
Each store implementation are moved to their module.

As stated in the title it is more an open discussion. I think it is still time to operate such refactoring in the 0.x versions.

Hi @clun thanks for your question.

Even if it is "just" the store class and POJO, some can be in conflict with each other. For instance, the Elastic needs Jackson whereas json is used everywhere.

Actual implementations (with their dependencies) for each embedding store are currently living in their own modules and langchain4j (main dependency) does not depend on them. The only exception is chroma as it does not introduce any new dependencies to the langchain4j module. If you import langchain4j, you drag only a few classes for each integration that delegates actual logic to the implementaitons. They are supposed to depend only on default java types or some custom POJOs or enums. So there is no place for Jackson/GSON conflicts, etc. Do you face any conflicts?

Instead of loading implementation dynamically and changing the core for each new vector store why not keeping only the interfaces in core and pushing implementations to the dedicated modules ?

The only reason for dynamic loading is to increase the visibility of existing integrations. So that developer can go to the EmbeddingStore interface, click and see all available implementations. As long as this approach does not introduce problems for users and developers, I feel like this approach is a low price to pay for increased visibility. Especially considering that there is no extensive documentation yet.

A developer could then only import the module langchain4j-milvius and the core will be loaded by transitivity. Think about how spring-data is operating: You have spring-data-cassandra, spring-data-redis but never import jsut spring-data, it is imported by something else.

langchain4j-milvus (or others) can be imported as a standalone dependency (it will load langchain4j-core transitively) and used in isolation as an embedidng store only, but the idea is that in 95% of cases it will be used as a part of a RAG application, so one will need langchain4j (main module) and langchain4j-milvus.

As stated in the title it is more an open discussion.

Thanks for opening this discussion, I was not sure about the current approach, but did not yet hear good arguments against it or for a better option. Happy to hear your (and others) arguments.

I think it is still time to operate such refactoring in the 0.x versions.

If current approach starts to make problems, it can be changed seamlessly and without any changes required from the end users:

remove all XxxEmbeddingStore classes from langchain4j module
rename all XxxEmbeddingStoreImpl into XxxEmbeddingStore inside each specific module

Personally I do not like dynamic loading, but I see value in increased visibility.
From the perspective of a library user, it is more convenient to see all integrations in one place at all times. Check each integration class for javadocs, see what features are supported, what are not, etc. Each embedding store has it's own specifics.
And then once I try to use one of them, it suggest to import an optional dependency. Copy and paste the dependency from the console into the pom.xml and that's it.

@BOFA1ex @chenhaoqiang please share your opinions as well

The only reason for dynamic loading is to increase the visibility of existing integrations. So that developer can go to the EmbeddingStore interface, click and see all available implementations. As long as this approach does not introduce problems for users and developers, I feel like this approach is a low price to pay for increased visibility. Especially considering that there is no extensive documentation yet.

You are right, It allows you to see more quickly which specific implementatio(e.g. milvus) could be used before compilation.
But have u considered that released a version in each times, you need to sync the version of the currently all-integrated modules (there will be :many in the future).
And I don't think the progress of module updates will be consistent in the future.

Thank you @langchain4j for your quick reply and open mind.
I am also interested in contributing more to this project if I am useful. I am working on a PR to support another vector technology with the implementation of EmbeddedStore and ChatMemoryStore (code does not lie).

Visibility:: I think the visibility will come through (1) documentation. (2) the github project source organization.  Not so many people will go browsing the code, unfortunately). I am the creator or ff4j, can you tell which db is supported https://github.com/ff4j/ff4j. BTW Are you looking to setup a documentation page ? I did that work in the past and can propose a minimal repo something similar to Awesome Astra fairly quickly.

@BOFA1ex made a point about all modules not evolving at the same pace but when it comes to shipping you will release a new version with everything included. You do not want to ask yourself questions like is langchain4j-milvius:0.21.0 supported by langchain4j-core:0.18.0.

Dependency Injection: You may want to instantiate a store with DI instead of a constructor with lots of arguments. You should at least allow default constructors.

Code Quality: I am not a big fan of the code below, it is a little smell: either an abstract class is needed somewhere or code organization could be better.

@Override
public String add(Embedding embedding) {
   return implementation.add(embedding);
}

@Override
public void add(String id, Embedding embedding) {
  implementation.add(id, embedding);
}

I am a little pushy I realize but i stay open.

@BOFA1ex updating versions for all modules is a 30-seconds deal (replace everywhere at once), so this is not a problem.
As @clun has mentioned, we are releasing every module with the new version each time, even if there were no changes to that specific module. This makes it easier for users of the library.

@clun

I am also interested in contributing more to this project if I am useful.

Awesome, would be great to have you on board!

I am working on a PR to support another vector technology with the implementation of EmbeddedStore and ChatMemoryStore (code does not lie).

Nice, which one(s)?

I think the visibility will come through (1) documentation. (2) the github project source organization. Not so many people will go browsing the code, unfortunately)

For the long-term, when the project will stabilize, I completely agree. But at the moment new integrations are added pretty fast and we have no documentation yet, so this becomes an issue. Do you think current approach is causing troubles and needs a change asap? If no, I would put it in the backlog, there are lots of things in the issues that need addressing ...

I am the creator or ff4j, can you tell which db is supported https://github.com/ff4j/ff4j.

Not sure I understand the question. Do you mean which vector stores are currently supported in langchain4j? chroma, milvus, pinecone, weaviate. vespa and elastic are currently in progress, will be merged soon.

BTW Are you looking to setup a documentation page ?

Yes, I was planning to focus next week solely on writing documentation, getting-started guides, etc.

I did that work in the past and can propose a minimal repo something similar to Awesome Astra fairly quickly.

That would be awesome!

@BOFA1ex made a point about all modules not evolving at the same pace but when it comes to shipping you will release a new version with everything included. You do not want to ask yourself questions like is langchain4j-milvius:0.21.0 supported by langchain4j-core:0.18.0.

Agree, that's what we are doing now.

Dependency Injection: You may want to instantiate a store with DI instead of a constructor with lots of arguments. You should at least allow default constructors

Please help me understand this use case better. How all implementation-specific parameters (e.g. url, api keys, etc) will be set up in this case? In my understanding each EmbeddingStore implementation requires different parameters and should be initialized in one place all at once. So, for example with spring:
@Bean
EmbeddingStore<TextSegment> embeddingStore() {
    return new ChromaEmbeddingStore(<chroma-specific-parameters>);
}

Code Quality: I am not a big fan of the code below, it is a little smell: either an abstract class is needed somewhere or code organization could be better.

Good point, will refactor it soon.

Technology is AstraDb Vector Search, it can be both embedding store and ChatMemoryStore (as very fast).

I will go ahead and propose a skeleton repository for the documentation then.

Comment on FF4j was not really a question sorry.

For dependency injection, you are right we can go with a new

We could close this ticket.