MergeVersions Creating Nonexistant Duplicates

Hello, I had an issue arise where a hard drive wasn't mounting properly on my Jellyfin machine, and had to update the path of each of my libraries in Jellyfin to the new mount location.  Ever since then MergeVersions has been creating phantom duplicates of movies and tv shows that don't exist.
I have tried clearing the TMDB cache, scanning and cleaning the Jellyfin DB's, splitting the movies/shows followed by uninstalling and reinstalling the app.  These duplicates do not exist prior to reinstalling MergeVersions, and as soon as I merge either my movies or TV shows, every single movie and show has a duplicate, and the duplicates have their own duplicates (so 2 versions instead of 1, and 4 versions instead of 2).  If I try to access these phantom versions, they do not exist and I get an error.
The only thing I can think of is that MergeVersions has some kind of cache that I'm not seeing and don't have the ability to clear.  I have checked all the options.xml files for TV, Movies, and collections and all paths seem to be correct - no duplicate paths appear to exist within Jellyfin.  So I think this is an issue with MergeVersions.  Can you please advise as to how to fix this?
Thank you

Hello, I had an issue arise where a hard drive wasn't mounting properly on my Jellyfin machine, and had to update the path of each of my libraries in Jellyfin to the new mount location. Ever since then MergeVersions has been creating phantom duplicates of movies and tv shows that don't exist.
I have tried clearing the TMDB cache, scanning and cleaning the Jellyfin DB's, splitting the movies/shows followed by uninstalling and reinstalling the app. These duplicates do not exist prior to reinstalling MergeVersions, and as soon as I merge either my movies or TV shows, every single movie and show has a duplicate, and the duplicates have their own duplicates (so 2 versions instead of 1, and 4 versions instead of 2). If I try to access these phantom versions, they do not exist and I get an error.
The only thing I can think of is that MergeVersions has some kind of cache that I'm not seeing and don't have the ability to clear. I have checked all the options.xml files for TV, Movies, and collections and all paths seem to be correct - no duplicate paths appear to exist within Jellyfin. So I think this is an issue with MergeVersions. Can you please advise as to how to fix this?
Thank you

Hi, does it do that to you too?

i have the same but with an image loadet

Having the same issue here.
seems like might be related to some update:
https://github.com/danieladov/jellyfin-plugin-mergeversions/issues/62

Hi, could you provide the steps to reproduce the problem? I don't have much time at the moment, but I'll try to fix it when I can.

Hi, could you provide the steps to reproduce the problem? I don't have much time at the moment, but I'll try to fix it when I can.

Sure, here are some more information:
SETUP

I'm using multiple mounts to provide media content to the Jellyfin installation, so I'll have a mount for each person's media folder in my network, ie: /cloud/data/lucas and /cloud/data/john
Each library is composed from these multiple mounts, so Movie library has both /cloud/data/lucas/Movies and  /cloud/data/john/Movies
I've recently updated the paths to better organize the cloud folder, so all data is now under data, and no longer under the direct path of /cloud, so what was before /cloud/lucas/Movies/Movie Name (2020) is now /cloud/data/lucas/Movies/Movie Name (2020), and yes, I've deleted the old paths from the libraries
After updating the mounts and paths I've updated Jellyfin, all plugins, cleared all the caches, ran a full library scan replacing all metadata
I've noticed some errors in the logs related to outdated paths and looked into the plugins, then I've noticed that if I remove the MergeVersions plugin, all paths are correct, so the metadata is updated on the app and database
I've wen inside the filesystem, removed all files related to the plugin in my installation manually and reinstalled it after restarting the server
Immediately after installing the plugins, the doubled paths are back, so seems like something in the database or some hidden cache for the plugin itself that persists after a complete removal of the plugin

The Issue
If you go to any movie or series that have multiple versions (4k and 1080p, for example), it'll have multiple phantom versions of that movie:

If we go further down and check media information, you'll have multiple paths to the same file, both the outdated one and the correct one (look at the paths below):
Movie.2024.2160p.4K.WEB.x265.10bit.AAC5.1
Recipiente mkv
Path /media/lucas/Video/Movies/Movie (2024) [imdbid-00]/Movie.2024.2160p.4K.WEB.x265.10bit.AAC5.1.mkv
Size 5591 MB

Movie.2024.2160p.4K.WEB.x265.10bit.AAC5.1
Recipiente mkv
Path /media/data/lucas/Video/Movies/Movie (2024) [imdbid-00]/Movie.2024.2160p.4K.WEB.x265.10bit.AAC5.1.mkv
Size 5591 MB

Movie.2024.1080p.WEBRip.x265.10bit.AAC5.1
Recipiente mp4
Path /media/lucas/Video/Movies/Movie (2024) [imdbid-00]/Movie.2024.1080p.WEBRip.x265.10bit.AAC5.1-.mp4
Size 2091 MB

Movie.2024.1080p.WEBRip.x265.10bit.AAC5.1
Recipiente mp4
Path /media/data/lucas/Video/Movies/Movie (2024) [imdbid-00]/Movie.2024.1080p.WEBRip.x265.10bit.AAC5.1-.mp4
Size 2091 MB

In some cases, it lists a file that can't even be probed, in the case of this series, it won't even list the file data, I guess it was not present by the time it was scanned with the updated paths, but it still show up as a duplicate:
Series.S01E01.1080p.HEVC.x265-
Recipiente mkv
Path /media/data/lucas/Video/Series/Series (2024) [imdbid-00]/Season 01/Series.S01E01.1080p.HEVC.x265.mkv
Size 187 MB

Series.S01E01.1080p.HEVC.x265
Recipiente mkv
Path /media/lucas/Video/Series/Series (2024) [imdbid-00]/Season 01/Series.S01E01.1080p.HEVC.x265.mkv

If we split using the double headed arrow on the frontend interface, then the duplicates disappear, but as soon as we merge versions, they come back.
I hope that it gives you some more information to look into this issue, and if you have any further need of information, I'm willing to make a call to open the same exact environment in which this is happening with you, alright?
Thanks in advance and hope we can sort this out soon, love your plugins!

Sure, here are some more information:

Hi! Thanks for the detailed report.
Could you try using the attached plugin? Please follow these steps:

Stop the server.
Replace the existing plugin DLL in your plugins folder with the attached one.
Restart the server.
Split all movies and merge them again.

Let me know if this resolves the issue. Thanks!
Jellyfin-Plugin-MergeVersions.zip

Sure, here are some more information:

Hi! Thanks for the detailed report.
Could you try using the attached plugin? Please follow these steps:

Stop the server.
Replace the existing plugin DLL in your plugins folder with the attached one.
Restart the server.
Split all movies and merge them again.

Let me know if this resolves the issue. Thanks! Jellyfin-Plugin-MergeVersions.zip

This fixed the problem for me!


Memory Descriptor Size

Would it be possible to have a method which returns the size of the memory descriptor? size_of::<MemoryDescriptor>() isn't guaranteed to be right, but we need the memory descriptor size to determine how much extra memory to allocate for the memory map (it's supposed to be 2 entries I believe).
I'd be happy to write this up and submit a PR if you'd be willing to accept such a feature (it should be fairly quick).

I think that sounds reasonable, although I'm not very familiar with that part of the API. I'd be happy to look at a PR for that if you want to put one up.


fix(deps): update opi-api digest and api changes

Ok, I checked this patch thoroughly. We need to update some more lines:
diff --git a/pkg/backend/nvme_path.go b/pkg/backend/nvme_path.go
index e17f870..4aafceb 100644
--- a/pkg/backend/nvme_path.go
+++ b/pkg/backend/nvme_path.go
@@ -273,7 +273,7 @@ func (s *Server) StatsNvmePath(ctx context.Context, in *pb.StatsNvmePathRequest)
 }

 func (s *Server) opiTransportToSpdk(transport pb.NvmeTransportType) string {
-       return strings.ReplaceAll(transport.String(), "NVME_TRANSPORT_", "")
+       return strings.ReplaceAll(transport.String(), "NVME_TRANSPORT_TYPE_", "")
 }

 func (s *Server) opiMultipathToSpdk(multipath pb.NvmeMultipath) string {
diff --git a/pkg/utils/server.go b/pkg/utils/server.go
index b017426..96e4089 100644
--- a/pkg/utils/server.go
+++ b/pkg/utils/server.go
@@ -148,5 +148,5 @@ func OpiAdressFamilyToSpdk(adrfam pb.NvmeAddressFamily) string {
                return ""
        }

-       return strings.ReplaceAll(adrfam.String(), "NVME_ADRFAM_", "")
+       return strings.ReplaceAll(adrfam.String(), "NVME_ADDRESS_FAMILY_", "")
 }

and update godpu sha256 here to 4301eadbb4bd4803eb993a9fd40ae52f132e1c5489996af60777ab320765a8e0 sha256 was taken from here and the CI should pass

I also found a few updates needed in the README file and scripts for the same enums with an extensive search on the entire folder.  I added those changes to the PR also.


rtl support

is there any chance to make it RTL?

Thanks for the request. I will have a look how I can implement RTL.


Namespace not picked up on complex data-types

When adding a complex type like a map[string]map[string]{package}.{type} the generated RPC service doesn't include the namespace and thus can't compile.
Adding dummy methods with just GetEmptyType()(dummy {package}.{type}) makes the generator pick up the type correctly and link it accordingly

could you add a breaking example


v1.0.0 error darwin x64

:warning:Please attach $TMPDIR/vscode-dotnet-installer/log.txt for more details.
version: 1.0.0
env:
PATH:
/usr/bin
/bin
/usr/sbin
/sbin

log:
[20:43:00] Downloading .NET SDK
[20:43:02] StatusCodeError: 404 - "<?xml version=\"1.0\" encoding=\"utf-8\"?><Error>BlobNotFound<Message>The specified blob does not exist.\nRequestId:150315ee-501e-0138-1418-083f65000000\nTime:2022-12-04T19:43:01.9181692Z</Message></Error>"
[20:43:02] Retry downloading ... [1]
[20:43:02] StatusCodeError: 404 - "<?xml version=\"1.0\" encoding=\"utf-8\"?><Error>BlobNotFound<Message>The specified blob does not exist.\nRequestId:150317d6-501e-0138-4918-083f65000000\nTime:2022-12-04T19:43:02.4298801Z</Message></Error>"
[20:43:02] Retry downloading ... [2]
[20:43:03] StatusCodeError: 404 - "<?xml version=\"1.0\" encoding=\"utf-8\"?><Error>BlobNotFound<Message>The specified blob does not exist.\nRequestId:1503197c-501e-0138-4d18-083f65000000\nTime:2022-12-04T19:43:02.9415912Z</Message></Error>"
[20:43:03] Failed to download .NET SDK, continuing install process as the SDK install extension can acquire the extension later.
[20:43:03] Installing .NET SDK
[20:43:03] Error occurred
[20:43:03] Error: ENOENT: no such file or directory, scandir '/var/folders/jh/wj3hrpyd7j5cb3_2lykpnrnc0000gn/T/vscode-dotnet-installer/binaries/dotnetSdk/6.0.102'

info: Started {"timestamp":"2022-12-04T19:42:57.302Z"}
verbose: Ids: {"machineId":"6c9d2bc8f91b89624add29c0abeae7fb42bf539fa1cdb2e3e57cd668fa9bcead","sessionId":"f8caa622-3c48-41b4-a747-778906bec78c1670182977158","timestamp":"2022-12-04T19:42:57.303Z"}
verbose: Packed binaries: {"timestamp":"2022-12-04T19:43:00.919Z"}
verbose: Installed components: {"vscode":{"homedir":"/Applications/Visual Studio Code.app","version":"1.62.3"},"extensions":[],"timestamp":"2022-12-04T19:43:00.923Z"}
info: .NET SDK download path: 'https://dotnetcli.azureedge.net/dotnet/Sdk/6.0.102/dotnet-sdk-6.0.102-osx-x64.zip' {"timestamp":"2022-12-04T19:43:00.938Z"}
info: .NET SDK download path: 'https://dotnetcli.azureedge.net/dotnet/Sdk/6.0.102/dotnet-sdk-6.0.102-osx-x64.zip' {"timestamp":"2022-12-04T19:43:02.022Z"}
info: .NET SDK download path: 'https://dotnetcli.azureedge.net/dotnet/Sdk/6.0.102/dotnet-sdk-6.0.102-osx-x64.zip' {"timestamp":"2022-12-04T19:43:02.534Z"}
error: ENOENT: no such file or directory, scandir '/var/folders/jh/wj3hrpyd7j5cb3_2lykpnrnc0000gn/T/vscode-dotnet-installer/binaries/dotnetSdk/6.0.102' {"errno":-2,"code":"ENOENT","syscall":"scandir","path":"/var/folders/jh/wj3hrpyd7j5cb3_2lykpnrnc0000gn/T/vscode-dotnet-installer/binaries/dotnetSdk/6.0.102","timestamp":"2022-12-04T19:43:03.075Z"}


Update github action runner

Is there an existing issue for this?

[X] I have searched the existing issues

Feature description
I use GitHub actions extensively as well as dependabot to update packages such as the actions used within workflows. While dependabot does a great job at updating actions, I do not believe it updates the runner versions the workflow is currently using. For example, if I was using the ubuntu-20.04 runner and a new runner was released, ubuntu-22.04, I would like dependabot to notice that and submit a pull request informing me to update it. While it is possible to simply update the runner to used the latest, I would like my builds to be as stable as possible and would like to test the workflow before blindly updating the runner.

Agreed, this would be helpful for a lot of folks.
Closing as a duplicate of:

https://github.com/dependabot/dependabot-core/issues/5541

See also:

https://github.com/dependabot/dependabot-core/issues/5819
https://github.com/dependabot/dependabot-core/issues/6247

@jeffwidman I don't think this should have been closed. This is different than the duplicate since this is looking at the runs-on value for jobs in workflows.

Good point. I'm no longer on the Dependabot team but perhaps @Nishnha or @jurre could reopen.


integration tests: add test that loads all maps and programs

initializeMapsAndPrograms() provides core functionality in sizing and loading eBPF maps and programs. So far per-kernel tests only load specific named eBPF programs and therefore could not catch Linux kernel version specific issues with eBPF programs that were not loaded.

Rebased this PR on top of https://github.com/open-telemetry/opentelemetry-ebpf-profiler/pull/206

rebased PR on main as https://github.com/open-telemetry/opentelemetry-ebpf-profiler/pull/206 got merged


Backmerge/4.0.2 to master

Codecov Report

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

@@           Coverage Diff            @@
##             master   #1249   +/-   ##
========================================
  Coverage          ?   2.56%
  Complexity        ?     125
========================================
  Files             ?     371
  Lines             ?   15108
  Branches          ?    1303
========================================
  Hits              ?     387
  Misses            ?   14696
  Partials          ?      25

Impacted Files
Coverage Δ
Complexity Δ

...ava/com/mercadopago/android/px/model/CardInfo.java
0% <ø> (ø)
0 <0> (?)

...android/px/internal/tracker/MPTrackingContext.java
0% <ø> (ø)
0 <0> (?)

..._confirm/components/ReviewAndConfirmContainer.java
0% <ø> (ø)
0 <0> (?)

...ndroid/px/configuration/AdvancedConfiguration.java
0% <ø> (ø)
0 <0> (?)

...om/mercadopago/android/px/model/PaymentResult.java
0% <ø> (ø)
0 <0> (?)

...d_confirm/components/ReviewAndConfirmRenderer.java
0% <ø> (ø)
0 <0> (?)

...mercadopago/android/px/internal/view/Renderer.java
0% <ø> (ø)
0 <0> (?)

.../features/guessing_card/GuessingCardPresenter.java
0% <ø> (ø)
0 <0> (?)

...nternal/features/cardvault/CardVaultPresenter.java
0% <0%> (ø)
0 <0> (?)

...oid/px/internal/features/SecurityCodeActivity.java
0% <0%> (ø)
0 <0> (?)

... and 43 more

Continue to review full report at Codecov.

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


LoadDataForUserAccount returns nil

Noticed a strange behaviour. Calling LoadDataForUserAccount("abc", inService: "xyz") sometimes returns nil. Other times it returns a value. The nil value consistently occurs after I use the camera. I'm running iOS 9. There is a value stored in keychain.
Any ideas why this issue is occurring. Noticed it after I upgraded Locksmith over the weekend.

Hmm that is weird. Could you possibly upload a sample project and some steps to reproduce? Other than that I’m kind of stumped sorry :/

On 29 Sep 2015, at 5:31 pm, Tony Arthur<EMAIL_ADDRESS>wrote:
Noticed a strange behaviour. Calling LoadDataForUserAccount("abc", inService: "xyz") sometimes returns nil. Other times it returns a value. The nil value consistently occurs after I use the camera. I'm running iOS 9. There is a value stored in keychain.
Any ideas why this issue is occurring. Noticed it after I upgraded Locksmith over the weekend.
—
Reply to this email directly or view it on GitHub https://github.com/matthewpalmer/Locksmith/issues/74.

Tried a new project and it works. Something must be wrong with my project. Probably occurred during conversion to Swift 2.0. Really weird.

Hi. I found similar problem. Just open the app, and press home button on device. Wait 15 minutes and open the app again. You'll get nil instead of data from keychain.
My AppDelegate code (nothing special):

import UIKit
import Locksmith

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        if !NSUserDefaults.standardUserDefaults().boolForKey("FirstRun") {

            let user = "12345"
            let password = "pass12345"

            do {

                try Locksmith.saveData(["User": user, "Password": password], forUserAccount: "User")
            }
            catch _ {

                print("Locksmith error")
            }

            NSUserDefaults.standardUserDefaults().setBool(true, forKey: "FirstRun")
        }

        return true
    }

    func applicationWillResignActive(application: UIApplication) {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    }

    func applicationDidEnterBackground(application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }

    func applicationWillEnterForeground(application: UIApplication) {

        let results = Locksmith.loadDataForUserAccount("User")

        print(results)
    }

    func applicationDidBecomeActive(application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }

    func applicationWillTerminate(application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }

}

Just like @orbitekk I've seen similar issues with fetching already stored values. So far I've tested it against both iOS 8 and iOS 9 with the same result.

I'm experiencing the same issue

Same here

Same here


Client Allocation Request for: GA tag

Client Allocation Questions
Core Information

Name: GA tag
Website / Social Media: [GA tag](GA tag), (GA tag, GA tag)
Region: Africa
DataCap Requested: 200 GiB
Addresses to be Notarized: GA tag
Notary Requested: Deon Erda

This user’s identity has has been verified through filplus.storage

This user’s identity has been verified through filplus.storage


release: v0.3.0

Bump the major version due to api's updating in #25.
Signed-off-by: Tim Zhang<EMAIL_ADDRESS>

The branch 0.2.x have been created. We could maintain the version 0.2.x through this branch.

The version has been published: https://crates.io/crates/vsock/0.3.0

Thanks!


Infer CMAKE_BUILD_TYPE from DEBUG enviroment variable

I'm relatively new to cmake and to custom rust/cargo build scripts so, correct me if I am wrong. Currently this library doesn't observe the DEBUG environment variable. It may be useful to do this in order support release/debug builds via cargo. I'm suggesting that if DEBUG="true" then set CMAKE_BUILD_TYPE="Debug" else if DEBUG="false" set CMAKE_BUILD_TYPE="Release" else don't set CMAKE_BUILD_TYPE.

Ah yeah so right now we infer debug/release based on cargo build vs cargo build --release, but adding and explicit env var seems reasonable to!

Since "DEBUG"(the environment variable) is not a common and standardized variable for these situations, I think cmake(the crate) should not treat it in a special way.
It's not hard as a user to do env!("DEBUG")/option_env!("DEBUG") and then treat that however you want, after which to call cmake_config.profile("[what the user wants]").


Add plugin to support ktor-server-resources

Description
Adds support for ktor resources plugin.
Closes #356
Type of change
Please delete options that are not relevant.

[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
Unit tests + playground
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] I have updated the CHANGELOG in the Unreleased section
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

Pending (hence a draft for now):

[ ] documentation
[ ] playground
[ ] deprecation warning for locations plugin

Will add this in the coming days when I find a free hour to kill :)

All done and ready for review :)

Great work, thanks again!


Singularity container/tutorial compatability

...
Hi,
I have installed cell2location using singularity image - I have v0.06. Following the cell2location tutorials provided (to estimate expression signatures) I find this version does not work as there is no RegressionModel in cell2location.models. I wonder if there is a new version of the container or a tutorial compatible with the current version?
Thanks.

Thanks for using cell2location! Unfortunately, we don't have an up-to-date container. If you need it you can build it yourself using the latest version of cell2location.


fdroid version

Add the app to fdroid.
I assume that the app is currently in early stage and therefore not added, but ultimately the app should be added to fdroid.

This is the inclusion policy that must be met to be able to submit. More info about submitting can be found here.
Here is the issue tracker to request your package to be available on F-Droid. After submitting, they can assist on what is needed to be done (if anything) to get it on F-Droid.

This is the inclusion policy that must be met to be able to submit. More info about submitting can be found here.
Here is the issue tracker to request your package to be available on F-Droid. After submitting, they can assist on what is needed to be done (if anything) to get it on F-Droid.

I took a look at their policy and process.
One blocker is that the app currently uses Firebase for analytics and crash reporting. The related anti-features are opt-in and Aves can run fine without them, but crash reporting has been essential for me to identify issues that I would never discover by myself. So, for now, Firebase is a must in the main flavour.
In principle I am not against creating another flavour specifically for F-Droid, stripped of Firebase. But there is currently a technical limitation: Flutter, the framework used by Aves, cannot handle flavours with different dependencies, so I can't define a flavour with Firebase and another without.
Until the Flutter issue above is resolved or F-Droid loosens their policy, I cannot submit Aves for inclusion.

I took a look at their policy and process.
One blocker is that the app currently uses Firebase for analytics and crash reporting. The related anti-features are opt-in and Aves can run fine without them, but crash reporting has been essential for me to identify issues that I would never discover by myself. So, for now, Firebase is a must in the main flavour.
In principle I am not against creating another flavour specifically for F-Droid, stripped of Firebase. But there is currently a technical limitation: Flutter, the framework used by Aves, cannot handle flavours with different dependencies, so I can't define a flavour with Firebase and another without.
Until the Flutter issue above is resolved or F-Droid loosens their policy, I cannot submit Aves for inclusion.

I hope that F-Droid will not loosens its policy towards users' privacy, that would be a betrayal of their basic principles! That said, if you're also concerned about the questionable policies regarding the data collected on Firebase, you can always use a free crash analysis solution (I'm thinking of ACRA for example)
Don't take this as a negative criticism, you are doing a great job!

I intend to try ACRA. I just need to find some free hosting that can accommodate its backend.

@flexagoon thanks for the link to catcher, I'll take a look!
Regarding F-Droid, I should probably give an update instead of letting this issue rot. Firebase is not actually what's blocking me now. I've discovered that F-Droid cannot handle API keys as a secret. To me that's a deal breaker, as I use an API key for Google Maps (which is a major part of the app), and I won't let this key be public.
So pure F-droid distribution seems out (unless there's a sensible solution to the API key conundrum) but, starting with the next release, Aves will likely be on IzzyOnDroid.

To me that's a deal breaker, as I use an API key for Google Maps (which is a major part of the app), and I won't let this key be public.

Is there some reason why you can't move over to OpenStreetMaps and use their API?

Let's distinguish the OSM editing API from their tiles. For Aves it's the tiles that I need, and the OSM tile usage policy is sensible: the tile servers are not free, so heavy use is forbidden. I don't want to rely on a service that cannot scale.
I added a few free alternative tile layers (the Stamen and Humanitarian OSM ones), but I certainly don't want the default (or worse, only) tile provider to be one of these. I will not abuse free services that depend on donations and good will.

How do all the FOSS map apps that use OSM do it? Are they basically just cheating?

How do all the FOSS map apps that use OSM do it? Are they basically just cheating?

What apps are you talking about? The most popular mobile OSM apps are Maps.Me/Organic Maps and OsmAnd, and they both use their own tile servers

@deckerst do you know how much resources OSM tileservers consume? If it's not too resource heavy, then I can host a tileserver for you on my RasPi

It's kind of you to suggest, but I'd rather not depend on an individual. Anyway, I've prepared a flavor of the app (for the next release, likely next week) that should satisfy Izzy's criteria.

It's kind of you to suggest, but I'd rather not depend on an individual. Anyway, I've prepared a flavor of the app (for the next release, likely next week) that should satisfy Izzy's criteria.

Yeah, I've seen that, that's great. Tho I dont know how good Izzy will be in the long run, since I saw that you plan to implement some ML stuff in the future, and that will increase the app size which is already almost too big for Izzy

The APK size limit for Izzy is 30 MB. Actually, the universal APK of Aves is already too big, that's why the Izzy flavoured app is built as split APKs (one per ABI). The split APK for armeabi-v7 currently sits at 13.3 MB.
As for ML, it's likely to be via ML Kit (the on-devices API from Google) so that it does not cost me anything, and it's already available to many people. I believe the ML models are not necessarily bundled with the app, so the file size is probably not the issue here. Rather, it will increase the number of non-free dependencies! We'll see. I don't know when I'll get to these features anyway.

it will increase the number of non-free dependencies!

This and also it'll break those features on De-Googled devices. So yeah, I suggest agains MLKit but unfortunately I'm also not aware of any opensource face recognition libraries (I only know Tesseract for text recognition)

Could you expand on the "De-Googled devices"? Do you mean devices where Google services are not possibly available (because of diplomacy or industry issues), or devices where the device owner decided to boycott the company?

I mean both, but mainly the second case, because those (including me) are one of the main use cases for using opensource apps

I mean both, but mainly the second case, because those (including me) are one of the main use cases for using opensource apps. Ppl who use custom ROMs like LineageOS, CalyxOS, GrapheneOS, etc.

I'm afraid we'll have a fundamental divergence of opinion about the topic. I open-source my code because I have no reason to close-source it. If possible I also use open-source code, but the priority to me is the resulting app, not an ideology. In other words: I do not develop an "open-source app", but I develop an "app" and that app happens to be mostly open-source.
To get back to the Google services, I think the way multiple apps can all benefit from the same set of on-devices services is neat. No need for each app to be bloated with various versions of large libraries. As far as I know, other ecosystems (like Huawei) provide similar on-devices services and I'm willing to make alternate versions tailored to these ecosystems (if there's demand).
As for free/libre software, I'm only vaguely aware of microG (which seems a brilliant idea but probably doesn't cover this). Are there ML components on the custom ROMs you mentioned? Is there a way for apps to use them without shipping their own versions?

but the priority to me is the resulting app, not an ideology

Yeah, I already figured that out, that's fine, I'm not an extreme Stallman-like "closed-source-should-be-illegal" opensource ambassador either, although I like the ideology and prefer using FOSS software whenever possible. What I'm saying is that a lot of people who use opensource software have degoogled devices, so you probably shouldn't just completely ignore that part of the userbase.

Are there ML components on the custom ROMs you mentioned

Lineage and Calyx don't have any. Graphene optionally supports installing Google Services in a sandboxed environment, so it kinda does.
But afaik developers of the opensource apps usually use some opensource ML libraries, and instead of bundling models with the app itself, the model is downloaded when you launch the app (eg. on the first app you see a message like "Do you want to instal models to enable AI features of the app?", and if you click yes, the models are downloaded and installed.

CalyxOS optionally runs microG, and Lineage can do so as well

it will increase the number of non-free dependencies!

This and also it'll break those features on De-Googled devices. So yeah, I suggest agains MLKit but unfortunately I'm also not aware of any opensource face recognition libraries (I only know Tesseract for text recognition)
Edit: oh wait, there's OpenCV

I'm confused. When did face recognition enter the conversation? Does this app use face recognition?

When did face recognition enter the conversation? Does this app use face recognition?

@strider72 it doesnt, but deckerst said that in the future Aves may have object and face recognition with Google ML Kit.
The discussion started here:
https://github.com/deckerst/aves/issues/29#issuecomment-962454989

The app is now on IzzyOnDroid! 🎉
@strider72 several features would be unlocked by using some ML:

face detection
image labeling
text extraction
selfie segmentation

All of these are important to some users, but some others will think they are useless or even scary (making these optional will be essential). I intend to tackle them in the (distant) future, but I'll need to find a performant library that does not increase the app size too much. Anyway, I don't need to decide now. Many other items have priority over this.
I'll close this issue. For distribution on F-Droid proper, I explained in the comments above the reasons why it's not happening. If you have ideas for workarounds that do not involve self-hosting or removing features, feel free to reach out.

By the way @deckerst, sorry for replying to a closed issue, but I've noticed that the Izzy flavour uses leaflet instead of Google Maps. Why does the Izzy version still have a dependency on Google Maps api then?

sorry for replying to a closed issue

No worries, feel free to voice your opinion on any issue, open or closed.
Both flavours use the same set of maps : Google, Humanitarian OSM and the Stamen ones. Nothing has changed (unless I messed up in a surprising way!). And I already explained why having Google as the default is important, given that the others run on donation or good will.
Oh but maybe I know what's happening... If the Google services are not available on your device, Aves automatically hides the Google maps from the available layers, and picks another one randomly. But if you run the same APK on a device that has the Google services, the Google maps options should show up and be used as default. Were the Google Map layers available for you before with Aves v1.5.4 but not anymore with the Izzy flavour of Aves v1.5.5?

I'll close this issue. For distribution on F-Droid proper, I explained in the comments above the reasons why it's not happening. If you have ideas for workarounds that do not involve self-hosting or removing features, feel free to reach out.

I'm not quite sure but if I understood this situation correctly, the only thing that's left would be this:

Firebase is not actually what's blocking me now. I've discovered that F-Droid cannot handle API keys as a secret.

And here an option to put an own API in the settings could be the solution. So unless the key isn't available, the map button could be disabled.
Also I have the feeling that aves wouldn't cause too much traffic on OSM, would it?
I really love aves and it would seriously be great to have in on the official F-Droid repos.

@alexanderadam actually I wanted to create a fully FOSS fork of Aves and publish it to F-Droid (only if @deckerst is fine with that, of course). Though I can't tell you a specific time when I'll try to do it. Most likely not in the next few months.

I wanted to create a fully FOSS fork of Aves and publish it to F-Droid

This sounds great but wouldn't it better if you'd rather provide PRs to the origin repo?
This way users could profit from fixes in both apps and increases the likelihood of having contributors at one place.

@alexanderadam no, this repository does not accept PRs and deckerst doesnt plan to. I think it would make sense to create a separate Aves-FOSS project, like Telegram-FOSS is for Telegram.

Oh, okay. I wasn't aware of that. :scream:
In that case you're obviously right. :+1:

@alexanderadam deckerst actually explained why PRs are not accepted:
https://github.com/deckerst/aves/discussions/159

Maybe a simple option to put an own API key in the settings could be the solution.

Let's think about regular users, who do not mind using the Google Maps services already on their device. Why would Aves force them to create their own API key to use them?
As for users who do not have the Google Maps services on their device, Aves already hides related features.
Anybody can use F-Droid to download and update the app, via the Izzy repo. I don't understand what the problem is.

create a fully FOSS fork of Aves and publish it to F-Droid (only if @deckerst is fine with that, of course)

If it's legal it's fine, you don't need my permission. That said, you won't get my blessing, as my opinion is the following: from a product perspective, the copycat culture is detrimental. Forking to provide a new product (with a new vision and active development) is great! But forking to provide the same product with tweaks is noisy: you get a dilution of product identity just to please a few vocal users. These few users do not represent users in general, so it's a shame that they have so much influence on what's visible on alternative stores like F-Droid.
As I said, this is my opinion, but you're free to fork and do whatever. Beauty of open-source.

@deckerst

As I said, this is my opinion, but you're free to fork and do whatever. Beauty of open-source

Obviously I am legally allowed to do this. But you are the creator of the app after all, so if you don't want me to do this, I won't.

These few users do not represent users in general, so it's a shame that they have so much influence on what's visible on alternative stores like F-Droid.

F-Droid is already the "foss app store" which (in the main repository) only allows 100% FOSS apps. So the userbase of F-Droid mostly consists of people who want FOSS apps as well. And I don't want to distribute the fork on anywhere else except F-Droid, your app will stay the only one on Google Play.
Also I think that creating a fork for that will save you some time, because you will no longer need to maintain a separate flavor that you don't personally need just for the few users who do.

Maybe you're right. In any case, a FOSS believer will eventually do it so it might as well be you, being understanding and constructive as you are.
I like the concept of F-Droid repositories, like IzzyOnDroid, because it allows people to decide for themselves what kind of app they want, instead of being served on the main repository degraded "pure FOSS" versions of legitimate apps. I value freedom of choice and thinking in nuances, so this idea of purity is concerning to me.

Highly interested in a fully libre fork of Aves. Until then I will not use or suggest others to use. Sorry.

With the app in my repo for a while now, I today wondered why I don't have it on one of my devices. Just installed it on a test device and found out why: Google Maps. Well, good thing is the app does not connect to GMaps directly but "just" to Mapbox. I'd really love to be "degraded to pure FOSS" please as you've put it, and have OSM instead :wink:
That said (without any malice in mind), I don't feel "degraded to pure FOSS", but rather "elevated" – as with "pure FOSS" I don't have to guess what's done with my data. I know, no guarantees – but chances are much lower that some "evil player" picks at them. No offense meant, and I'd trust you won't do such a thing willingly; but with proprietary things you cannot even tell for sure what it really does and so we all have to "trust blindly".
Having an Aves version "degraded to pure FOSS" would be the absolute icing on my cake; didn't take me longer than a minute to love the app…So maybe there's a chance?

Highly interested in a fully libre fork of Aves

Identically for me, I use a smartphone (Pixel) under grapheneos for this reason (exclude Google from my digital life), I would love Aves to be free of Google crap.
Thanks ❤

Aves does not use Mapbox, i wonder what makes you think so.

Thinking about it: That might be microG replacing GMaps in my case, so error in thinking on my end.

If someone wants to use Aves without Google Maps they already can.

Oh, nice – I wasn't aware of that (maybe we should point that out in the app description). Where can one perform that switch? I mean, make it the default before "something is called" (found it only in the info map itself, not in the global settings). And is it possible to use/define other OSM layers (e.g. Standard or ÖPNV – cycling & Co would be overdoing it I guess) as well? Still:
Offending libs:
---------------
* Google Maps API (/com/google/android/gms/maps): NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): NonFreeNet

3 offenders.

The first 2 are non-free (proprietary) libs included with the app :man_shrugging: (just stating the obvious, no offense meant of course)
And that said: the more I discover inside Aves, the more I like it :smiley:

Where can one perform that switch? I mean, make it the default before "something is called" (found it only in the info map itself, not in the global settings).

At the moment, users can only change the map layer through the map overlay (the one in Info page, as well as the full map page), but not from the app settings, as you've correctly assessed. The setting is sticky, though, so you don't need to do it again. I may revisit the settings page, but I'm careful as there are already a lot of settings and i try to avoid superfluous and redundant ones.

And is it possible to use/define other OSM layers

I'd like to eventually allow users to add custom layers. It's geeky by nature (with URLs, API keys...) but it would unlock useful layers that i won't make built-in (e.g. for licensing reasons, as I explained above for original OSM tiles).

but I'm careful as there are already a lot of settings

Yes, that's often the conflict. A possible alternative would be allowing to set a layer before the "first call" – i.e. when it would be used for the first time (eg using a popup, as if the user had triggered the layer selector manually).

add custom layers

That sounds cool, thanks! I personally mostly miss the "standard layer", but custom layers indeed would unlock a lot of potential.

I explained above for original OSM tiles

Scrolling up I couldn't find the reference (will try Ctrl-F next – ah, there; wasn't there something with many custom/self-hosted tile servers being added meanwhile? And wouldn't the danger to be locked-out apply to Google as well? I don't dare asking to make that an option to select from, we just had that question. But if each user could use their own API key, that'd be covered again, yeah), but noticed another remark: I hope you won't add ML Kit, as that'd be another proprietary dependency…

Not sure what I'm missing I skimmed the comments.
However if the non-free dependencies and non-free network services non-features could be fixed (removed) for a completely libre experience I'd install the app in a heartbeat.
Sounds like that is what is attempting to be done?

Sounds like that is what is attempting to be done?

@seniorm0ment not by me. If people have the Google Mobile Services installed on their device, i don't see why Aves wouldn't connect to them.

@deckerst I guess what @seniorm0ment was pointing at is that
Offending libs:
---------------
* Google Maps API (/com/google/android/gms/maps): NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): NonFreeNet

3 offenders.

will make an inclusion at F-Droid.org impossible. And as those libraries are proprietary, nobody but their developers can say for sure what they really do. Some of us have a "native mistrust" there – Google isn't exactly known as "the privacy respecters" but rather "the data collectors" :wink:
Which is also why I asked for that popup before showing a map for the first time:

A possible alternative would be allowing to set a layer before the "first call" – i.e. when it would be used for the first time (eg using a popup, as if the user had triggered the layer selector manually).

Would you consider that, maybe – so no data goes that way "by default" at least? Having GMaps selected as default would make it a single tap for those who don't care (or even prefer GMaps here), while us privacy folks would have a choice and then only need 2 taps (select OSM, confirm). A single time, on first call only. After that, the selection would be remembered as it is now. Should not be too hard I guess (in my naïvity I imagine that configuration field being NULL initially, thus prompting the described popup, and after the popup was confirmed it has a value).
Of course a "full floss flavor" would be even better – but that might also be a lot of work. Thinking aloud: if someone provided that flavor as PR, would you welcome it? Just to clarify: "extra flavor", so your current build would stay but you additionally could provide a FOSS build. If so, we could open an issue for that to be marked with an "help wanted" label – and I'd even make a "service call" on the Fediverse to hopefully attract potential supporting devs. If it works out, the FOSS build could be provided via F-Droid.org, while the current build could remain with my repo (to e.g. make switching from Play easy – which can be quite useful when some update gets stuck in their review, which I've heard is not exactly a rare case). To avoid confusion, the FOSS flavor could have a .foss or .fdroid appended to the applicationId even.

Would you consider that, maybe – so no data goes that way "by default" at least?

Yes, for the izzy build only. I'll keep the map layer provided by local mobile services as default for play and huawei.

Of course a "full floss flavor" would be even better – but that might also be a lot of work.

Another flavour is actually trivial. I already set up all the infra for the play/huawei/izzy flavours. I explained reasons above why I kept GMaps so far.

If it works out, the FOSS build could be provided via F-Droid.org, while the current build could remain with my repo.

That's interesting. If both builds are available to F-Droid users (i mean, users who added your repo would still have access to the "full" build), then I'm willing to make and provide the "degraded" foss build alongside.

That's interesting. If both builds are available to F-Droid users

That's the idea, yes. And as both are visible in the client, the "F/LOSS" one having a "suffix" to its applicationId (please make it an applicationId inside the flavor – I vaguely remember the F-Droid build system had issues with the applicationIdSuffix gradle feature, not sure if that's still the case) makes them show up in parallel if both repositories are enabled. If then the F-Droid one has a slightly different name as well (e.g. "Aves libre"), all confusion can be avoided. The full_description could even point out the differences plus where to get which version. I'd volunteer to provide the corresponding (suggested) phrasing then.

then I'm willing to make and provide the "degraded" foss build alongside.

Wonderful :star_struck: I'll then help getting it to F-Droid.org (disclosure: I'm one of the maintainers there).

@IzzySoft the libre flavour is ready, but i work with applicationIdSuffixes and other weirdness in the gradle files, so I'd like to check things further with you. Would you mind emailing me to continue and get it to f-droid (without spamming everybody here)?

@deckerst I'm not an Android dev or build expert myself, so I'm afraid I cannot much help with those details. But of course we have some members in our team who are familiar with such things. So may I recommend to either simply open a Request for Packaging aka RFP (the easy approach and generally a good start as you get first indications from our scanners) or go straight for a merge request at fdroiddata if you dare (the "straight-forward approach" giving you even more details and hopefully results in it being merged, thus Aves becoming available at F-Droid)? Discussion would then take place there, where it belongs. And I can pick up there as well, being one of the maintainers :smile:
While at least the RFP path is easy enough for even the average user to go, if you prefer I can open that one for you.

Aves v1.7.5 is available. With this release a few changes of interest to this thread:

there's now a libre flavour,
the izzy and libre flavour makes the user choose a map layer before seeing the map (in other words, no call to Google Maps if the user does not want it).

Recap of version differences here.
@IzzySoft About the libre flavour, the app ID is deckers.thibault.aves.libre, distinct from the normal app ID deckers.thibault.aves for all the other flavours. A "fat" APK for this flavour is already built and attached to the release. The gradle file has been modified to make sure that all the proprietary plugins and dependencies are guarded depending on flavours, but I've played with fdroidserver and it yields false positives, detecting google/crashlytics/huawei stuff as problematic even though they are not used for the libre flavour. So I'll let you request and handle things on the F-Droid side.
As far as I'm concerned Aves is now buildable without proprietary stuff:
# ./scripts/pub_get_all.sh
# ./scripts/update_flutter_version.sh
# ./scripts/apply_flavor_libre.sh
# flutter build apk -t lib/main_libre.dart --flavor libre

You can check the GitHub release workflow for reference.

Thanks @deckerst – and let me have a look:

A "fat" APK for this flavour is already built and attached to the release.

Cool! I just checked to make sure: my updater currently is nailed to only accept the ApkMatch: /izzy-armeabi-v7a/i (my repo cannot handle multiple APKs per release (yet) so I usually pick the one with the widest compatibility, which ATM is armeabi), so no conflicts.

The gradle file has been modified to make sure that all the proprietary plugins and dependencies are guarded depending on flavours, but I've played with fdroidserver and it yields false positives, detecting google/crashlytics/huawei stuff as problematic even though they are not used for the libre flavour.

Not sure how exactly you've set that up. At F-Droid's RFP repo that would be even "expected behavior" as issuebot there does not know about the flavors (how could it, as there's no way to specify any). That's usually "fixed" with the MR, where the build recipe specifies the flavor. But then, for some reason my library scanner still reports GMS & GMaps to be detected, so something must be in there. Using apktool I've extracted the smali, and indeed there's a directory for /com/google/android/gms containing auth, common, dynamite and maps – all with "code" inside, so not just stubs. I'm not familiar enough with Flutter to investigate the cause. flutter build apk -t lib/main_libre.dart --flavor libre definitely should take care to build the specified flavor (at F-Droid we usually run flutter config --no-analytics before pub get all to make sure it keeps the analytics stuff out – but as I didn't detect any of that here, that seems to be not needed).
Looking at the scripts you've listed, my guess is you include Maps (plugins/aves_map is not removed), which most likely pulls in Google Maps for Flutter – which then pulls in GMS as GMaps depends on it. Could that be?
Nevertheless: I'd recommend going ahead and opening an RFP with F-Droid. As you've already worked with fdroidserver, you might as well jump that step and directly open a merge request with your *.yml at fdroiddata. Someone with deeper Flutter knowledge will hopefully find time to find out and help around.

When I run your tool on the izzy and libre apk bundled with the v1.7.5 release I get this:
tibo@redstart:~/code$ scanapk ~/Downloads/app-izzy-armeabi-v7a-release.apk
W: Cant find 9patch chunk in file: "aO.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Nk.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "s3.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "jZ.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "sn.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "uW.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Tx.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Pb.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "51.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "h-.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "m3.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "Hi.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "rj.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "z5.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "o1.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "YM.9.png". Renaming it to *.png.
No libsmali.jsonl entry for /com/shaded/fasterxml/jackson, this library will be ignored.

Libraries detected:
-------------------
* Android Support v4 (/android/support/v4): Development Framework, Apache-2.0
* AndroidX Activity (/androidx/activity): Utility, Apache-2.0
* Android Jetpack Annotations (/androidx/annotation): Utility, Apache-2.0
* Androidx Core (/androidx/core): Utility, Apache-2.0
* AndroidX Fragment (/androidx/fragment): UI Component, Apache-2.0
* Lifecycle (/androidx/lifecycle): Utility, Apache-2.0
* Android Multi Dex Library (/androidx/multidex): Utility, Apache-2.0
* Android Activity Saved State (/androidx/savedstate): Utility, Apache-2.0
* Startup (/androidx/startup): Utility, Apache-2.0
* Android Jetpack VersionedParcelable (/androidx/versionedparcelable): Utility, Apache-2.0
* Jetpack WindowManager Library (/androidx/window): Utility, Apache-2.0
* Glide (/com/bumptech/glide): Utility, BSD-2-Clause
* Google Maps API (/com/google/android/gms/maps): Map, Proprietary; NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): Development Framework, Proprietary; NonFreeDep
* Flutter (/io/flutter): Development Framework, BSD-3-Clause
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): Map, BSD-3-Clause; NonFreeNet
* url_launcher (/io/flutter/plugins/urllauncher): Utility, BSD-3-Clause
* flutter printing (/net/nfet/flutter/printing): Utility, Apache-2.0
* Android-TiffBitmapFactory (/org/beyka/tiffbitmapfactory): Utility, MIT
* Java MP4 Parser (/org/mp4parser): Utility, Apache-2.0
* ijkplayer (/tv/danmaku/ijk/media): Utility, LGPL-2.1-or-later

Offending libs:
---------------
* Google Maps API (/com/google/android/gms/maps): NonFreeDep,NonFreeNet
* Google Mobile Services (/com/google/android/gms): NonFreeDep
* Google Maps for Flutter (/io/flutter/plugins/googlemaps): NonFreeNet

3 offenders.

tibo@redstart:~/code$ scanapk ~/Downloads/app-libre-release.apk
No libsmali.jsonl entry for /com/shaded/fasterxml/jackson, this library will be ignored.

Libraries detected:
-------------------
* Android Support v4 (/android/support/v4): Development Framework, Apache-2.0
* AndroidX Activity (/androidx/activity): Utility, Apache-2.0
* Android Jetpack Annotations (/androidx/annotation): Utility, Apache-2.0
* Androidx Core (/androidx/core): Utility, Apache-2.0
* AndroidX Fragment (/androidx/fragment): UI Component, Apache-2.0
* Lifecycle (/androidx/lifecycle): Utility, Apache-2.0
* Android Multi Dex Library (/androidx/multidex): Utility, Apache-2.0
* Android Activity Saved State (/androidx/savedstate): Utility, Apache-2.0
* Startup (/androidx/startup): Utility, Apache-2.0
* Android Jetpack VersionedParcelable (/androidx/versionedparcelable): Utility, Apache-2.0
* Jetpack WindowManager Library (/androidx/window): Utility, Apache-2.0
* Glide (/com/bumptech/glide): Utility, BSD-2-Clause
* Flutter (/io/flutter): Development Framework, BSD-3-Clause
* url_launcher (/io/flutter/plugins/urllauncher): Utility, BSD-3-Clause
* flutter printing (/net/nfet/flutter/printing): Utility, Apache-2.0
* Android-TiffBitmapFactory (/org/beyka/tiffbitmapfactory): Utility, MIT
* Java MP4 Parser (/org/mp4parser): Utility, Apache-2.0
* ijkplayer (/tv/danmaku/ijk/media): Utility, LGPL-2.1-or-later

No offending libs found.

The izzy flavour has the usual offenders and the libre flavour has no offending libs, as expected.
About F-Droid and gradle, it seems F-Droid can usually understand flavours when the yml file declares the flavour used, but that's only a thing for regular java/kotlin projects. For Flutter projects, F-Droid doc says the yml shouldn't specify the gradle favour, and instead just include it in the flutter build command. I guess that's why the F-Droid check script fails with false positives. And it's not only the GMS stuff. For example, their script fails because it doesn't know the Maven repo https://developer.huawei.com/repo/ (which is only used with the huawei flavour). Anyway, I will submit the a packaging request and let them deal with it.

When I run your tool on the izzy and libre apk bundled with the v1.7.5 release I get this:

Yes, I indeed only checked the results in my repo – thus the "izzy" flavor. OK, then I misunderstood – apologies!

Anyway, I will submit the a packaging request and let them deal with it.

Good idea! There are other members in our team who are much more familiar with these realms and then would help to get it on. Thanks a lot!

Cf https://gitlab.com/fdroid/fdroiddata/-/merge_requests/12154

Great – and all pipelines passed, congrats! I've already started the review – but rather wait for my team mate concerning the ABI splits. He might also come up with ideas on reproducible builds: if you like those, that would be premium – if not, they are not mandatory.

Yeeeha! I just pushed the "merge" button. Aves should show up at F-Droid.org within a few days now!
For those curious: Review part 1 and part2.
Thanks a ton, @deckerst – that's a really great addition to the F-Droid catalog :heart_eyes:

Stand by for the next index: build monitor shows successful build of 3 Aves APKs :star_struck: So Aves will show up before the weekend probably.

Done

And tooted already. :trumpet: LOUDLY :see_no_evil:

Suggestion: as people are unlikely to simultaneously have the libre and "regular" versions installed, you can just have the icon labelled "Aves" without the "libre".
Having said that, thank you for releasing on F-Droid! :-)

Heh. I've compared different apps all labelled 'Contacts". But I see your point. :-)

@strider72 those at least (mostly) have different icons (unless they've kept the default Andy-Bot). At one point I had 3 different versions of Aves on the same device. Where it not for the different icons I would not have known which to delete :see_no_evil: Well, actually I use adb uninstall <packageName> so I wasn't really lost at that point. But if you e.g. want to check whether a certain tasks works differently in a different build, different icons are really helpful.


Spin height change during rotation will cause the browser display scrollbars

TuSimple/naive-ui version (版本)
2.35.0
Vue version (Vue 版本)
3.3.6
Browser and its version (浏览器及其版本)
Chrome(118.0.5993.88)
System and its version (系统及其版本)
Linux 6.5.7 (Archlinux)
Reappearance steps (重现步骤)
<n-layout>
    <n-layout-content content-style="width:200px">
      <n-card title="Spin overflow">
        <n-spin :show="true">
          <template></template>
        </n-spin>
      </n-card>
    </n-layout-content>
  </n-layout>

Expected results (期望的结果)
不会出现滚动条
Actual results (实际的结果)

https://codesandbox.io/p/sandbox/vite-skxwpj
Remarks (补充说明)
Spin 旋转时元素高度改变会使 n-layout 出现滚动条
是否可以给 n-spin-content 添加一个 min-height (根号二倍 Spin 大小？) 来避免这个问题

Provide a based on CodeSandbox or stackblitz [Minimal, Reproducible Example] (https://stackoverflow.com/help/minimal-reproducible-example)

Provide a based on CodeSandbox or stackblitz [Minimal, Reproducible Example] (https://stackoverflow.com/help/minimal-reproducible-example)

https://codesandbox.io/p/sandbox/vite-skxwpj

It looks fine, because the loading icon is a rectangle, when rotated to four corners, because the height is too low, the four corners are convex, so there will be a scroll bar, you can adjust the height or overflow

We could perhaps add a min-height (sqrt(2) times of element height) to n-spin to avoid this issue.

Welcome PR  :tada:


Prometheus reads all .db files from PROMETHEUS_MULTIPROC_DIR without regard

prometheus-client==0.15.0
The method collect on prometheus_client.multiprocess.MultiProcessCollector reads all .db files, leading to memory issues, as it reads SQLite databases.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/........./........../.............py", line 20, in .........................
    data = generate_latest(registry)
  File "/usr/lib/python3.8/site-packages/prometheus_client/exposition.py", line 198, in generate_latest
    for metric in registry.collect():
  File "/usr/lib/python3.8/site-packages/prometheus_client/registry.py", line 97, in collect
    yield from collector.collect()
  File "/usr/lib/python3.8/site-packages/prometheus_client/multiprocess.py", line 153, in collect
    return self.merge(files, accumulate=True)
  File "/usr/lib/python3.8/site-packages/prometheus_client/multiprocess.py", line 45, in merge
    metrics = MultiProcessCollector._read_metrics(files)
  File "/usr/lib/python3.8/site-packages/prometheus_client/multiprocess.py", line 73, in _read_metrics
    for key, value, _ in file_values:
  File "/usr/lib/python3.8/site-packages/prometheus_client/mmap_dict.py", line 43, in _read_all_values
    value = _unpack_double(data, pos)[0]
struct.error: unpack_from requires a buffer of at least<PHONE_NUMBER> bytes for unpacking 8 bytes at offset<PHONE_NUMBER> (actual buffer size is 12288)

The issue is on collect() method:
def collect(self):
    files = glob.glob(os.path.join(self._path, '*.db'))
    return self.merge(files, accumulate=True)

I believe that there should be some kind of file validation to assure that the file is related to a prometheus metric, e.g:
import re

POSSIBLE_PROMETHEUS_FILENAMES_INCLUDE = {'counter', '...', 'histogram', 'gauge_livesum'}

def collect(self):
    files = glob.glob(os.path.join(self._path, '*.db'))
    #
    # assert files
    valid_files =  [f for f in files if re.split('_\d+.db', f)[0] in POSSIBLE_PROMETHEUS_FILENAMES_INCLUDE]
    #
    #
    return self.merge(valid_files, accumulate=True)

Best practice would certainly be to have all of the prometheus files in their own folder, especially since the folder is supposed to be wiped between process starts. That said, some additional safety seems reasonable to me.


Does the latest MJML support running in the Java Nashorn engine?

I want to call out to the mjml.js [Nashorn](using https://www.oracle.com/technical-resources/articles/java/jf14-nashorn.html) from a Java server, because I need to convert from MJML -> HTML on the fly in Java. Is that supported in the latest version of MJML?

Mjml depends on commonjs modules and nodejs builtins (fs/path) and as far as I'm aware Nashorn does not support these, but I could be wrong.

OK yeah it looks like you're right, thanks for confirming!


ERROR: exception 'InvalidArgumentException' with message 'Command "command:check" is not defined.

Hello,
I am using your code to run a cron job every minute, and I am getting this error on live server (works fine on my local machine). Here is what I have done:
 <?php

use Indatus\Dispatcher\Scheduling\ScheduledCommand;
use Indatus\Dispatcher\Scheduling\Schedulable;
use Indatus\Dispatcher\Drivers\Cron\Scheduler;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class TestCommand extends ScheduledCommand {

	/**
	 * The console command name.
	 *
	 * @var string
	 */
	protected $name = 'command:check';

	/**
	 * The console command description.
	 *
	 * @var string
	 */
	protected $description = 'Check if the meberships are verified.';

	/**
	 * Create a new command instance.
	 *
	 * @return void
	 */
	public function __construct()
	{
		parent::__construct();
	}

	/**
	 * When a command should run
	 *
	 * @param Scheduler $scheduler
	 * @return \Indatus\Dispatcher\Scheduling\Schedulable
	 */
	public function schedule(Schedulable $scheduler)
	{
		return $scheduler->everyMinutes(1);
	}

	/**
	 * Execute the console command.
	 *
	 * @return mixed
	 */
	public function fire()
	{
		Log::info('I was here @ ' . date('H:i:s'));
	}

	/**
	 * Get the console command arguments.
	 *
	 * @return array
	 */
	protected function getArguments()
	{
		return array(
			// array('example', InputArgument::REQUIRED, 'An example argument.'),
		);
	}

	/**
	 * Get the console command options.
	 *
	 * @return array
	 */
	protected function getOptions()
	{
		return array(
			// array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
		);
	}

}

So basically, I'm just writing a line in my Storage/laravel.log file every time the scheduler is run. When I do **php artisan scheduled:run** on my local machine, it writes a new line in my log file.
Now, I've uploaded the code on my server and have created a cron job as:
http://awesomescreenshot.com/09a64zii1f
The cron is running every minute as expected and the log file is also being updated every minute, but instead of the message I am writing in log file, its writing following error every minute:
 [2016-09-24 09:20:01] production.ERROR: exception 'InvalidArgumentException' with message 'Command "command:check" is not defined.

 Did you mean this?
     command:make' in /home/mhjamil/public_html/l4-cron/test/vendor/symfony/console/Symfony/Component/Console/Application.php:564
 Stack trace:
 #0 /home/mhjamil/public_html/l4-cron/test/vendor/symfony/console/Symfony/Component/Console/Application.php(190): Symfony\Component\Console\Application->find('command:check')
 #1 /home/mhjamil/public_html/l4-cron/test/vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
 #2 /home/mhjamil/public_html/l4-cron/test/artisan(58): Symfony\Component\Console\Application->run()
 #3 {main} [] []

Can you please help me with this and tell what I am doing wrong, this is just a test project that is why I'm running the cron every minute. I want to use this in a real project in L4.2 (which I did long ago), and want to run scheduler once every day.
Looking forward to your reply soon.

Cron command screenshot is attached for you convenience.

And by the way, I've registered the command in app/start/artisan.php as
Artisan::add(new TestCommand);
Also the command php artisan command:check runs successfully on my local machine, but when I upload it to my server it says Command "command:check" is not defined.

I don't see any obvious errors in the code or setup, however this isn't a Dispatcher issue so I'm going to close it out.  I'd highly suggest posting on StackOverflow.com.


401 Unauthorized issues

Using the new SDK, I am getting the error
The `Authorization` http header of your request was incorrect or expired. The header value is expected to be of the format "Bearer TOKEN" (without quotation marks), where TOKEN is a valid access token (e.g. "Bearer ABC123def456GHI789jkl0"). For more information, see https://developer.squareup.com/docs/build-basics/using-rest-api#__set-the-headers__ .

Currently, using my sandbox connected to the latest API version. I have confirmed that the request headers being sent do contain the correct sandbox application id,
request: {
    method: 'GET',
    url: 'https://connect.squareupsandbox.com/v2/locations',
    headers: {
      'user-agent': 'Square-TypeScript-SDK/8.0.0',
      authorization: 'Bearer <>',
      'Square-Version': '2020-12-16',
      accept: 'application/json'
    }
  },

I've left it out for security purposes. This is a similar issue for all endpoints. Any help here would be appreciated.

I just realized that I should be using the token and not the application ID. My fault. Sorry about the unnecessary ticket.

I just realized that I should be using the token and not the application ID. My fault. Sorry about the unnecessary ticket.


Support propagating c++ exception to python

Signed-off-by: zh Wang<EMAIL_ADDRESS>issue: #383

/lgtm
/approve


Can't import the named export

./node_modules/axios-cache-interceptor/dist/index.mjs
Can't import the named export 'deferred' from non EcmaScript module (only default export is available)

I don't have access to webpack's config file and ejecting it is not ideal. I think this is better solved in axios-cache-interceptor export file.

Does your package.json setups your nodejs code as an ecmascript one?

Closes as stale.


Localized values with locale exported with empty values

When trying to export localized fields e.g. name.en-US the exporter just returns empty values.
exported-categories_(3).txt

Clarification: It works fine for 'name.en' but not for 'name.en-US'


EU, USA and UK Flag or Country Shapes

I urgently need either the flags or the country shapes of the EU, the US and the UK to make it easy for website users to visually understand where they are clicking.
As of now, we are using the currency icons as an interim solution but it's not ideal:

They could potentially look similar to these:

Thank you! :)

Color is far too critical for understanding here that it's not an appropriate use-case for monochromatic line icons like Phosphor. I recommend using the emoji flag set, or use one of the many libraries made explicitly for this purpose:

https://flagpack.xyz/
https://gitlab.com/catamphetamine/country-flag-icons
https://github.com/danalloway/react-country-flag


Add minlength and maxlength options. Make required optional. Add validation help text.

Fixes #17.

Hey @jziggas I'm not sure you've had a need for this module since way back in 2015, but I thought I'd let you know I forked it here and added your code.


Removing the generic Reverse API and adding no-op byte overloads.

Notes from System.Binary API review:

Add Reverse overload for byte & sbyte (which is a no-op).

This is a no-op and added only for consistency. This allows the caller to read a struct of numeric primitives and reverse each field rather than having to skip byte/sbyte fields.

Remove the generic Reverse API. Edit: Moved to Pipelines ReadWriteExtensions
The rest of the APIs are fine to move to corefx as is to System.Buffers dll (and namespace)

cc @dotnet/corefxlab-contrib, @pakrym, @davidfowl

I think it would be good to describe why reverse on byte makes sense. Otherwise looks good.

I think it would be good to describe why reverse on byte makes sense (in the PR description).

Done


value for domain asset32type violates check constraint

The following error occurred on launchpad network
sqlErrorMsg = "value for domain asset32type violates check constraint \"asset32type_check\
"",
More logging from sync, that did not manage to start
[db-sync-node:Error:746] [2021-01-19 15:10:37.52 UTC] runDBThread: DbInsertException "insertMaTxOut" (SqlError {sql
State = "23514", sqlExecStatus = FatalError, sqlErrorMsg = "value for domain asset32type violates check constraint
\"asset32type_check\"", sqlErrorDetail = "", sqlErrorHint = ""})
[db-sync-node:Error:741] [2021-01-19 15:10:37.52 UTC] ChainSyncWithBlocksPtcl: DbInsertException "insertMaTxOut" (S
qlError {sqlState = "23514", sqlExecStatus = FatalError, sqlErrorMsg = "value for domain asset32type violates check
 constraint \"asset32type_check\"", sqlErrorDetail = "", sqlErrorHint = ""})
[db-sync-node.Mux:Info:738] [2021-01-19 15:10:37.52 UTC] Bearer on ConnectionId {localAddress = LocalAddress "", re
moteAddress = LocalAddress "*****"} event: State: Dead
[db-sync-node.Mux:Notice:738] [2021-01-19 15:10:37.52 UTC] Bearer on ConnectionId {localAddress = LocalAddress "",
remoteAddress = LocalAddress "*****"} event: Miniprotocol MiniProtocolNum 5 Initiat
orDir terminated with exception DbInsertException "insertMaTxOut" (SqlError {sqlState = "23514", sqlExecStatus = Fa
talError, sqlErrorMsg = "value for domain asset32type violates check constraint \"asset32type_check\"", sqlErrorDet
ail = "", sqlErrorHint = ""})
[db-sync-node.Subscription:Error:737] [2021-01-19 15:10:37.52 UTC] [String "Application Exception: LocalAddress \"/
******" DbInsertException \"insertMaTxOut\" (SqlError {sqlState = \"23514\", sqlExec
Status = FatalError, sqlErrorMsg = \"value for domain asset32type violates check constraint \\\"asset32type_check\\
\"\", sqlErrorDetail = \"\", sqlErrorHint = \"\"})",String "SubscriptionTrace"]
[db-sync-node.ErrorPolicy:Error:4] [2021-01-19 15:10:37.52 UTC] [String "ErrorPolicyUnhandledApplicationException (
DbInsertException \"insertMaTxOut\" (SqlError {sqlState = \"23514\", sqlExecStatus = FatalError, sqlErrorMsg = \"va
lue for domain asset32type violates check constraint \\\"asset32type_check\\\"\", sqlErrorDetail = \"\", sqlErrorHi
nt = \"\"}))",String "ErrorPolicyTrace",String "LocalAddress \"*****""]
[db-sync-node.Subscription:Notice:28] [2021-01-19 15:10:38.52 UTC] [String "Restarting Subscription after 1.7808603
98s desired valency 1 current valency 0",String "SubscriptionTrace"]

Workaround
To get sync started again was to drop constraint asset32type_check
The prime suspect
A very loooooooong asset name
link to the asset in our blockchainintelligence solution
cardano-node: 1.24.2
cardano-db-sync: 7.1.0

This is not a bug in db-sync.
The problem is that version 1.24.2 of the node allows assets to be defined with names that are longer than 32 bytes. This is out of spec. Once its on the chain, db-sync correctly flags this as an error.
The required length check is present in the soon to be tagged version 1.25.0` of the node.
For now, on your testnet, dropping that constraint is reasonable, but it is not something that should done in the repo.

This is not a bug in db-sync.
The problem is that version 1.24.2 of the node allows assets to be defined with names that are longer than 32 bytes. This is out of spec. Once its on the chain, db-sync correctly flags this as an error.
The required length check is present in the soon to be tagged version 1.25.0` of the node.
For now, on your testnet, dropping that constraint is reasonable, but it is not something that should done in the repo.

Great stuff! Good to hear

Great stuff! Good to hear


Allow skipping the initial event in file watcher

Signed-off-by: Krzesimir Nowak<EMAIL_ADDRESS>

I cherry-picked this into my branch, so should we close?

Also, as it is this produces a warning for unused code.

Yeah, because nothing uses it, but you will. ;)

You can close it if you have no issues.


Bound operations not appended to non-contained navigation property paths

Related to https://github.com/microsoft/OpenAPI.NET.OData/issues/201
With this bound operation:

and given this non-contained navigation property:

and given a schema namespace value of microsoft.graph
We expect to generate paths similar to below:
.../followedSites/microsoft.graph.add
This is not the case with the current version because we check the containment of the navigation property here.
According to the spec. doc., see ref:
Actions and Functions MAY be bound to an entity type, primitive type, complex type, or a collection...
The namespace- or alias-qualified name of a bound operation may be appended to any URL that identifies
a resource whose type matches, or is derived from, the type of the binding parameter.

This may be applied to any navigation property segment as long as its type matches the type of the binding parameter.

Thanks for documenting this in details. I'm torn here.
Historically we've decided to only bind operations to contained navigation properties, entity sets or singletons. Or in other words to only have operations on the entities canonical path. This is to avoid expanding too many paths and growing the description too much. It makes sense since why would one call an operation on a "deeper path" when a shallower one is already available?
This case is an interesting example, and poor API design IMHO. The followed sites should instead be a collection of "followedSite", contained. FollowedSite is a new entity type that semantically belongs to the user (is contained), has a non-contained reference to site (existing entity), and potentially other properties like "followedDate", "followedReason", etc...
But since the API is not getting fixed any time soon, we probably out to make an opiniated decision here.
What would be the consequence of setting contains target true for that property?
Can we rely on an annotation/attribute that would signal "bind operations even though this is not contained"?
Do we have other cases like this one?

after a quick chat with @darrelmiller it looks like there's no such annotation. Can you have a look at the implications of changing contains target for that property? and see if we have other instances of that scenario?

after a quick chat with @darrelmiller it looks like there's no such annotation. Can you have a look at the implications of changing contains target for that property? and see if we have other instances of that scenario?

Appending ContainsTarget=true generates 1042 more paths. I'm collating the list of other navigation props. that have a similar issue.

The number of similar scenarios are quite significant. Below are just a couple of them:
Navigation properties:

filesFolder
createdOnBehalfOf
owners
directReports
manager
memberOf
transitiveMemberOf
registeredOwners
members
driveItem
group
teachers
schools
user
acceptedSenders
calendar
membersWithLicenseErrors
parentNotebook
parentSection
baseTypes
sites
channel

Entities:

directoryObject

directReports/{directoryObject-id}
memberOf/{directoryObject-id}
transitiveMemberOf/{directoryObject-id}

driveItem
contentType
site

Clearly, setting their containment to true will be unfeasible, as the number of paths generated will just be humongous.

From discussions with @darrelmiller, the recommendation was to come up with a custom annotation that will be appended to a given operation. This annotation will list the non-contained navigation properties that should append paths to the given operation. The annotation would look something like:

This was the proposal from Mike for the annotations to be used.

After further discussions, the below annotation structure has been arrived at:
<Term Name="RequiresExplicitBinding" Type="Core.Tag" DefaultValue="true" AppliesTo="Action, Function">
  <Annotation Name="Description" Edm.String="This bound action or function is only available on model elements annotated with the ExplicitOperationBinding term."/>
</Term>

<Term Name="ExplicitOperationBindings" Type="Collection(Edm.String)">
   <Annotation Name="Description" Edm.String="The qualified names of explicitly bound operations that are supported on the target model element. These bindings are in addition to any bindings to the type of the target model element not annotated with RequiresExplicitBinding"/>
</Term>

Example usage:
<Action Name="forward" IsBound="true" >
  <AnnotationTerm="Org.OData.Capabilities.V1.RequiresExplicitBinding"/>
  <ParameterName="bindingParameter" Type="self.email"/>
  <ParameterName="recipient" Type="Collection(self.recipent)"/>
  <ReturnTypeType="self.email" />
</Action>

<Annotations Target="self.Container/me/email">
  <Annotation Term="Org.OData.Capabilities.V1.ExplicitOperationBindings">
    <Collection>
      <String>self.forward</String>
    </Collection>
  </Annotation>
</Annotations>

Find further reading of the proposal here

This issue is blocked while waiting for the resolution of: https://github.com/OData/odata.net/issues/2543

Can we confirm that we are no longer blocked?

Can we confirm that we are no longer blocked?

This is now unblocked. The PR to resolve this: https://github.com/microsoft/OpenAPI.NET.OData/pull/378

Resolved by: https://github.com/microsoft/OpenAPI.NET.OData/pull/378


Possible atomicity violation in crossbeam-channel SyncWaker notify

https://github.com/crossbeam-rs/crossbeam/blob/424f926673d652f306f266d4309ed8717e931144/crossbeam-channel/src/waker.rs#L221-L231
is_empty is an AtomicBool.
In function SyncWaker::notify()

load is_empty to check
lock and notify
store new value to is_empty

The struct implements Sync and notify() takes an immutable self, so it can be called in two threads.
To me, it seems that the function intends to notify only once when is_empty is not true.
However, the following sequence may happen:
Th1: 1->W->W->W->2
Th2: W->1->2->3
Thread 1 load is_empty and check, then Thread 2 notify and change the is_empty. Thread 2 executes notify again. Now notify() is called twice.
The fix is to lift the lock before the is_empty check, or check is_empty again after the lock.

The reason why I didn't bother with the additional is_empty check after locking is because I thought spurious notifications are not much of a problem (they might sometimes hurt performance, but not correctness).
I'd accept a PR adding an additional is_empty check after the lock :)

Fixed in #478


Update scodec-bits to 1.1.30

Updates org.scodec:scodec-bits from 1.1.13 to 1.1.30.
GitHub Release Notes - Changelog - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scodec", artifactId = "scodec-bits" } ]

labels: library-update, early-semver-patch, semver-spec-patch

Superseded by #383.


Update contributors.yaml

Reflecting the latest changes on the council repo.
Thanks @ivanov for your time and contributions, happy to have you back whenever you want!

Can you also please remove me? I'm stepping down effective 2024-12-13. Thanks.

Can you also please remove me? I'm stepping down effective 2024-12-13. Thanks.

Sure. Would you be able to open a PR in https://github.com/jupyterlab/council too? Thanks!

Done: https://github.com/jupyterlab/council/pull/26


Adding Sub-100k Bitbars Collection

changed "inscription_icon": to --> "e40f972a91ab1cb2848da4600dfadb589aed942bd4a7c47b8893edf23bc350e0i0"

had to remove the last lines of inscriptions.json to remove double listings of inscriptions in the metadata


Want to add a dice game made using js

The project is a web-based dice game application. The goal of the game is to simulate rolling two dice and displaying the result to the user.

in this game we roll two dice and displaying the result to the user. so i am interested to solve the issue please assign me this project.

please assign me this issue under GSSoC'23.


Corrects "inputs" command reference, which moved from Cromwell to wdltool

Addresses https://github.com/broadinstitute/wdl/issues/34, and:
Fixes a few wdl examples, which did not work as documented.
Fixes a few instances where output did not match with the wdl.
Added output examples where omitted.

👍

👍
Thanks!


Fix bbox not being set on routing result

fixes #36

The problem is now that it zooms very close to the route even if it is very small and once it is the same points it zooms out to world wide. Instead we should probably define a minimum bbox and additionally ensure that the markers are inside this bbox.

https://github.com/graphhopper/graphhopper-maps/issues/53


Fixed typos.

@yyx990803 Would you help to review this? Thank you in advance.

Thanks for the PR @bringtree!
The files inside the packages folder are auto-generated and should not be changed. Can you please reset those back and modify the corresponding source files?

Sorry, I will do it after class.

Sorry, I will do it after class.@posva

No worries 😉  Thanks

sorry, i can't deal with it. i can't understand the codes. i think i should learn JS harder.

@posva I have updated the pull request,  may you take a look when you are available, thank you!

@bringtree thank you. I'm checking it now


Update UML Diagrams and Corresponding Text in DG

Updated some of the UML diagrams in the DG as well as the corresponding hyperlinks + names in DG.
Rest of the UML Diagrams should be updated by the other Ryan!
Related to issue https://github.com/AY2122S2-CS2103T-T09-2/tp/issues/95.

Codecov Report

Merging #96 (41af4b3) into master (9b84b83) will decrease coverage by 0.05%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##             master      #96      +/-   ##
============================================
- Coverage     73.22%   73.16%   -0.06%
  Complexity      445      445
============================================
  Files            76       76
  Lines          1322     1323       +1
  Branches        140      140
============================================
  Hits            968      968
- Misses          320      321       +1
  Partials         34       34

Impacted Files
Coverage Δ

src/main/java/seedu/linkedout/MainApp.java
0.00% <0.00%> (ø)

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 e634fef...41af4b3. Read the comment docs.


Update variable group stopped working this afternoon. It looks like the task autoupgraded.

Azure DevOps Extension you are using
https://github.com/rfennell/AzurePipelines/blob/master/Extensions/BuildUpdating/BuildVariableTask/BuildVariableTask.ps1
Where are you running it?

Azure DevOps Service (VSTS)
On private and hosted build agents.

Version of Extension/Task
Version: 1.15.1
(1.14.1 was working)
Expected behaviour and actual behaviour
We have a step that updates a project specific build number in a library group. Has been working for months and stopped today around UK lunchtime.
Versions of the task have been updated and new ones are failing.
All our builds are broken.
now getting an error
"Cannot set variable [ProjectBuildId] as variable could not be found in the a pipeline or associated variablegroups"
I rechecked config and tried completely new pipelines and variable groups.
Steps to reproduce the problem
Set up a pipeline, add the task.
yaml (but we use old designer)
steps:

task: richardfennellBM.BM-VSTS-BuildUpdating-Tasks.BuildVariableTask-Task.BuildVariableTask@1
displayName: 'Update Build Variable'
inputs:
variable: ProjectBuildId
value: '$(ProjectBuildId)'

Set up a variable group with correct permissions and a ProjectBuildId variable.
Run a build.

I want to confirm some bad behavior as well.
Version 1.15.1
In my case, all of my custom task conditions get wiped, bricking the build definition for further use.

OK looks like the fix for #527 backwards compatibility has regressed the variable group update.
I will look at is ASAP, but I doubt it will be today

This has been fixed in 1.16.1
I had introduced a regression, fixing the regression of losing support for TFS2017.
This has been fixed by adding logic to check what version of APIs are available at start of operations. This has been tested on TFS2017 and Azure DevOps for both variables and variable groups
@fortunerayzor  thanks for letting me know about this gap in my testing. I have revised my release process to include extra builds to test this use case.

Thanks for the super quick turnaround. I apologise for not being helpful, My wife had a baby on thursday so I have not really had time to work.

Sorry for introducing the regression, no excuse on my part for poor testing. I have fixed the release pipeline now with extra tests so this one should no happen again
Oh and congratulation on the new arrival, hope you are all doing well


fix: pxe_stack role — rationalize single and double quote nested usage

Hi!
When tweaking the DGX-OS curtin file to configure all network interfaces in DHCP after 1st reboot in the so-called "late commands", fix improper use of single & double quotes (don't use single quotes for both inner quotes and outer quotes).
Here: using single quotes as outer, and double quotes as inner because when need shell variable expansion.
Also simplifying the code a little.
Thanks!

Dear @sla31
Thanks a lot for this PR. It looks ok to me, and I don't have a DGX to ensure all of this works in curtin environment of DGXos, so I will trust you blind on that one 😊


Portus doesn't support Tag case sensitivity and makes the UI stop updating

The docker registry won't allow uppercase in a image name but it does on tags, but Portus doesn't support this feature. When Portus tries to insert a new tag with the same name as another one but with different upper-lowercase combination, it fails the insert and it doesn't continue updating the rest of the Catalog that the registry sent, so the ui never gets updated and the db insert is failing every minute.
What I had to do to support Tags case sensitivity (Because the registry does I want to be able to do it) is to change the collation of the name column of the tags table in the portus db from utf8_genetal_ci to utf8_bin. It would be nice if the default database creation came with this collation since the beginning.
Thanks,
Ale

Thanks for reporting 👍

We have hit this bug twice now.  Identifying when this bug stops the indexing is tricky, and the workaround is really hackey.  Its a showstopper in real use.

Just experienced this myself, lots of cases of the crono process throwing exceptions on a CatalogJob trying to INSERT both LATEST and latest etc.

+1 Experienced the same

@Alebmurillo @jmellor @rikkuness @raghu999 PR #1494 should do the trick. I've tried to document the issue as much as possible. Feel free to try it out and check if it fixes your issue (it does for me 😉)


undefined reference

I'm getting the following problem. Could you let me know if I'm doing anything wrong?

> Making example
>
>
> g++ -I../lib/libcurl-7.56.0/include -I../lib/jsoncpp-1.8.3/include -I../lib/libwebsockets-2.4.0/include -I../lib/libbinacpp/include \
> example.cpp \
> -L../lib/libcurl-7.56.0/lib \
> -L../lib/libwebsockets-2.4.0/lib \
> -L../lib/libbinacpp/lib \
> -lcurl -ljsoncpp  -lcrypto -lwebsockets -lbinacpp -o example
> /tmp/cc56eHqY.o: In function `main':
> example.cpp:(.text+0x85): undefined reference to `BinaCPP::init(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
> collect2: error: ld returned 1 exit status
> Makefile:25: recipe for target 'example' failed
> make: *** [example] Error 1

I just imported all the CPP files from the src folder and it got solved.


i trained custom pose classification model but its giving error at the time of inference

im using windows 10 system
getting this error, i followed the official blog of Tensorflow
https://www.tensorflow.org/lite/tutorials/pose_classification  for model training
this blog hasn't provided inference script
so I tried official https://github.com/tensorflow/examples/tree/master/lite/examples/pose_estimation/raspberry_pi for .tflite inference but getting isse
Cannot set tensor: Got value of type FLOAT32 but expected type UINT8 for input 0, name: serving_default_input:0

Hi @akashAD98 !
Sorry for the late response.
You can set inference input and output as float32 as a work around.
converter.inference_input_type = tf.float32
converter.inference_output_type = tf.float32

Ref.
Detailed usage can be found here.
Thank you!


[SPARK-32997][K8S] Support dynamic PVC creation and deletion in K8s driver

What changes were proposed in this pull request?
This PR aims to support dynamic PVC creation and deletion in K8s driver.
Configuration
This PR reuses the existing PVC volume configs.
spark.kubernetes.driver.volumes.persistentVolumeClaim.spark-local-dir-1.options.claimName=OnDemand
spark.kubernetes.driver.volumes.persistentVolumeClaim.spark-local-dir-1.options.storageClass=gp2
spark.kubernetes.driver.volumes.persistentVolumeClaim.spark-local-dir-1.options.sizeLimit=200Gi
spark.kubernetes.driver.volumes.persistentVolumeClaim.spark-local-dir-1.mount.path=/data
spark.kubernetes.driver.volumes.persistentVolumeClaim.spark-local-dir-1.mount.readOnly=false

PVC
$ kubectl get pvc | grep driver
tpcds-d6087874c6705564-driver-pvc-0  Bound    pvc-fae914a2-ca5c-4e1e-8aba-54a35357d072   200Gi RWO gp2 12m

Disk
$ k exec -it tpcds-d6087874c6705564-driver -- df -h | grep data
/dev/nvme5n1    197G   61M  197G   1% /data

$ k exec -it tpcds-d6087874c6705564-driver -- ls -al /data
total 28
drwxr-xr-x  5 root root  4096 Sep 25 18:06 .
drwxr-xr-x  1 root root    63 Sep 25 18:06 ..
drwxr-xr-x 66 root root  4096 Sep 25 18:09 blockmgr-2c9a8cc5-a05c-45fe-a58e-b8f42da88a57
drwx------  2 root root 16384 Sep 25 18:06 lost+found
drwx------  4 root root  4096 Sep 25 18:07 spark-0448efe7-da2c-4f3a-bd3c-769aadb11dd6

NOTE
This should be used carefully because Apache Spark doesn't delete driver pod automatically. Since the driver PVC shares the lifecycle of driver pod, it will exist after the job completion until the pod deletion. However, if the users are already using pre-populated PVCs, this isn't a regression at all in terms of the cost.
$ k get pod -l spark-role=driver
NAME                            READY   STATUS      RESTARTS   AGE
tpcds-d6087874c6705564-driver   0/1     Completed   0          35m

Why are the changes needed?
Like executors, driver also needs larger PVC.
Does this PR introduce any user-facing change?
Yes. This is a new feature.
How was this patch tested?
Pass the newly added test case.

Test build #129121 has started for PR 29873 at commit 90c552c.

Test build #129121 has finished for PR 29873 at commit 90c552c.

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

Merged build finished. Test PASSed.

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

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33740/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33740/

Merged build finished. Test PASSed.

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

Could you review this please, @holdenk ?

Could you review this, please, @dbtsai and @viirya ?


Option to hide multi-day events

**Is your feature request related to a problem?
If I have an event starting say Monday 10am continuing untill say Thu 4pm I would not like to have it visible all the time.
Describe the solution you'd like
An option to hide events longer than 1d.
Describe alternatives you've considered
Full day events hiding option doesn't cover this usecase.
Additional context
N/A

@tjsuominen I think that could be difficult to filter the events that start in one day and finish in the next one but that are just something overnight instead of those events the are similar to all day events.

Understood.


: path parameter seems to be ignored when building project

I created a test react app using webpack with the following rendering:
class App extends React.Component {
        render() {
                return (

Globalize test

    <FormatCurrency currency="USD">{150}</FormatCurrency>
    <FormatMessage path="msgTest"/>
    <FormatMessage path="msgTest2">Test fallback</FormatMessage>
    <FormatMessage variables={{ number: numberFormatter( 123.456 ) }}>{"Globalize.formatNumber: {number}"}</FormatMessage>

);
        }
};
After running webpack, the "msgTest" message doesn't get transferred from the source messages.json to the target i18n/[locale].js.
When using "writeMessages: true" in the ReactGlobalizePlugin, I get this entry in my source messages.json:
"Test fallback": "Test fallback"
...when I was expecting:
"msgTest2": "Test fallback"
When I then try to run the App in the browser, I get:
vendor.js:5550 Uncaught TypeError: Cannot read property 'apply' of undefined
...which happens in:
	Globalize.prototype.formatMessage = function( path /* , variables */ ) {
		return this.messageFormatter( path ).apply( {}, [].slice.call( arguments, 1 ) );
	};
Thank you,
Felipe

Thank you for filing this issue.
This plugin has had significant tests using the default message (i.e., no path property, the message itself becomes the key), but very few (to none) using the path property.
I'll look into it in the next coming days and will give you a better response.


Upgrading from 0.24.2 to 0.25.0

Just updated my program anchor_lang and anchor_spl dependencies from 0.24.2 to 0.25.0, then upgraded the program, and now some of my endpoints don't work. I'm getting:
"failed to send transaction: Transaction simulation failed: Error processing Instruction 0: custom program error: 0x0"
If I go and change the dependencies back to 0.24.2 and upgrade the program, everything is fine again. I'm not really sure what could be going on here, as this is literally the only change.

Hope you found the help you needed, even if it wasn't here