CVAT build "failed to solve" on ffmpeg step

Actions before raising this issue

[X] I searched the existing issues and did not find anything similar.
[X] I read/searched the docs

Steps to Reproduce
One issue I was having was that the models tab of the UI did not appear when I composed locally on my machine. After some searching, I found that I needed to build using the following to get it to appear:
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml up -d --build
However, now I'm having an issue where the build does not complete:
[+] Running 17/17
 ✔ nuclio 16 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                54.0s
   ✔ 8921db27df28 Pull complete                                                                                2.3s
   ✔ 83e90619bc2e Pull complete                                                                                2.8s
   ✔ d52adec6f48b Pull complete                                                                                0.4s
   ✔ 10eb2ce358fa Pull complete                                                                                1.8s
   ✔ a1be370d6a52 Pull complete                                                                                3.1s
   ✔ 689b9959905b Pull complete                                                                                3.2s
   ✔ c7a81ce22aac Pull complete                                                                                12.5s
   ✔ 7a4a119313dc Pull complete                                                                                31.5s
   ✔ 5c9eb94870c3 Pull complete                                                                                15.9s
   ✔ ab80ada5b55c Pull complete                                                                                16.5s
   ✔ 620d1da16c8d Pull complete                                                                                22.9s
   ✔ 6bfb903299b1 Pull complete                                                                                16.9s
   ✔ 315e576e5c56 Pull complete                                                                                18.6s
   ✔ 41ba21494bef Pull complete                                                                                22.2s
   ✔ fd41585287c1 Pull complete                                                                                23.3s
   ✔ 0154e6475ce3 Pull complete                                                                                53.0s
[+] Building 234.1s (20/43)                                                                                docker:default
 => [cvat_server internal] load build definition from Dockerfile                                                                                0.0s
 => => transferring dockerfile: 6.45kB                                                                                0.0s
 => [cvat_server internal] load .dockerignore                                                                                0.0s
 => => transferring context: 198B                                                                                0.0s
 => [cvat_server internal] load metadata for docker.io/library/ubuntu:22.04                                                                                0.9s
 => [cvat_server internal] load metadata for docker.io/library/golang:1.20.5                                                                                0.9s
 => [cvat_server internal] load build context                                                                                0.1s
 => => transferring context: 4.58MB                                                                                0.1s
 => [cvat_server build-image-base 1/3] FROM docker.io/library/ubuntu:22.04@sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e                                                                                0.1s
 => => resolve docker.io/library/ubuntu:22.04@sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e                                                                                0.0s
 => => sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e 1.13kB / 1.13kB                                                                                0.0s
 => => sha256:aa772c98400ef833586d1d517d3e8de670f7e712bf581ce6053165081773259d 424B / 424B                                                                                0.0s
 => => sha256:ca2b0f26964cf2e80ba3e084d5983dab293fdb87485dc6445f3f7bbfc89d7459 2.30kB / 2.30kB                                                                                0.0s
 => [cvat_server build-smokescreen 1/3] FROM docker.io/library/golang:1.20.5@sha256:fd9306e1c664bd49a11d4a4a04e41303430e069e437d137876e9290a555e06fb                                                                                204.7s
 => => resolve docker.io/library/golang:1.20.5@sha256:fd9306e1c664bd49a11d4a4a04e41303430e069e437d137876e9290a555e06fb                                                                                0.0s
 => => sha256:fd9306e1c664bd49a11d4a4a04e41303430e069e437d137876e9290a555e06fb 2.36kB / 2.36kB                                                                                0.0s
 => => sha256:d5a118f29bfadd6529ee8da6b1261fab7d0d80de3bb9b496ee6a189a21f17029 6.86kB / 6.86kB                                                                                0.0s
 => => sha256:7dd206bea61ff3e3b54be1c20b58d8475ddd6f89df176146ddb7a2fd2c747ea2 24.03MB / 24.03MB                                                                                31.7s
 => => sha256:7f2cf491a0d8c1afcdc55120cda9d3777ee98852eff619c6c3e5a0b2386a69b4 1.58kB / 1.58kB                                                                                0.0s
 => => sha256:d52e4f012db158bb7c0fe215b98af1facaddcbaee530efd69b1bae07d597b711 49.55MB / 49.55MB                                                                                182.4s
 => => sha256:2320f9be4a9c605d1ac847cf67cec42b91484a7cf7c94996417a0c7c316deadc 64.11MB / 64.11MB                                                                                63.2s
 => => sha256:543c0c50a70de44530fb9f35321081e7dd67f9aeae1ca5ab99161eb6322e2868 92.23MB / 92.23MB                                                                                142.0s
 => => sha256:aec14dce7e7846bbadf40f19d3d871f619c54c1fa6296cc3cfaa810b3c66024d 100.20MB / 100.20MB                                                                                199.3s
 => => sha256:c7ad738259f2ede8cfe2e998bd5abecbbf5089124842893452008bc64055d4a9 155B / 155B                                                                                160.8s
 => => extracting sha256:d52e4f012db158bb7c0fe215b98af1facaddcbaee530efd69b1bae07d597b711                                                                                2.5s
 => => extracting sha256:7dd206bea61ff3e3b54be1c20b58d8475ddd6f89df176146ddb7a2fd2c747ea2                                                                                0.7s
 => => extracting sha256:2320f9be4a9c605d1ac847cf67cec42b91484a7cf7c94996417a0c7c316deadc                                                                                2.9s
 => => extracting sha256:543c0c50a70de44530fb9f35321081e7dd67f9aeae1ca5ab99161eb6322e2868                                                                                2.7s
 => => extracting sha256:aec14dce7e7846bbadf40f19d3d871f619c54c1fa6296cc3cfaa810b3c66024d                                                                                5.0s
 => => extracting sha256:c7ad738259f2ede8cfe2e998bd5abecbbf5089124842893452008bc64055d4a9                                                                                0.0s
 => [cvat_server build-image-base 2/3] RUN apt-get update &&     DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends install -yq         curl         g++         gcc         git         libgeos-dev         libldap2-dev         libsa  158.8s
 => CANCELED [cvat_server stage-4  2/20] RUN apt-get update &&     DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends install -yq         bzip2         ca-certificates         curl         git         libgeos-c1v5         libgl1     233.0s
 => [cvat_server build-image-base 3/3] RUN --mount=type=cache,target=/root/.cache/pip/http     python3 -m pip install -U pip==22.0.2                                                                                3.1s
 => [cvat_server build-image 1/4] COPY cvat/requirements/ /tmp/cvat/requirements/                                                                                0.1s
 => [cvat_server build-image-av 1/9] WORKDIR /tmp/openh264                                                                                0.1s
 => [cvat_server build-image-av 2/9] RUN curl -sL https://github.com/cisco/openh264/archive/v2.1.1.tar.gz --output - |     tar -zx --strip-components=1 &&     make -j5 && make install-shared PREFIX=/opt/ffmpeg && make clean                       68.1s
 => [cvat_server build-image 2/4] COPY utils/dataset_manifest/requirements.txt /tmp/utils/dataset_manifest/requirements.txt                                                                                0.0s
 => [cvat_server build-image 3/4] RUN sed -i '/^av==/d' /tmp/utils/dataset_manifest/requirements.txt                                                                                0.7s
 => CANCELED [cvat_server build-image 4/4] RUN --mount=type=cache,target=/root/.cache/pip/http     DATUMARO_HEADLESS=1 python3 -m pip wheel --no-deps     -r /tmp/cvat/requirements/production.txt     -w /tmp/wheelhouse                             70.3s
 => [cvat_server build-smokescreen 2/3] RUN git clone --depth=1 -b v0.0.4 https://github.com/stripe/smokescreen.git                                                                                8.1s
 => [cvat_server build-smokescreen 3/3] RUN cd smokescreen && go build -o /tmp/smokescreen                                                                                10.4s
 => [cvat_server build-image-av 3/9] WORKDIR /tmp/ffmpeg                                                                                0.0s
 => ERROR [cvat_server build-image-av 4/9] RUN curl -sL https://ffmpeg.org/releases/ffmpeg-4.3.1.tar.gz --output - |     tar -zx --strip-components=1 &&     ./configure --disable-nonfree --disable-gpl --enable-libopenh264         --enable-shared  2.6s
------
 > [cvat_server build-image-av 4/9] RUN curl -sL https://ffmpeg.org/releases/ffmpeg-4.3.1.tar.gz --output - |     tar -zx --strip-components=1 &&     ./configure --disable-nonfree --disable-gpl --enable-libopenh264         --enable-shared --disable-static --disable-doc --disable-programs --prefix="/opt/ffmpeg" &&     make -j5 && make install && make clean:
2.531
2.531 gzip: stdin: unexpected end of file
2.531 tar: Child returned status 1
2.531 tar: Error is not recoverable: exiting now
------
failed to solve: process "/bin/sh -c curl -sL https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz --output - |     tar -zx --strip-components=1 &&     ./configure --disable-nonfree --disable-gpl --ejziebart@BAH5CD0149V8B:~/repos/cvat$

I'm not sure why it's failing here... can anyone help?
Expected Behavior
I expect everything to build successfully.
Possible Solution
No response
Context
No response
Environment
Running on Ubuntu 20.04 on WSL2
commit bf4089ead320d8f6a80e0a1793c8406ec46daee8 (HEAD -> develop, origin/develop, origin/HEAD)
Docker version 25.0.4, build 1a576c5

Hello,
How may we reproduce the issue?

Hello, How may we reproduce the issue?
All I did was run the following:
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f components/serverless/docker-compose.serverless.yml up -d --build

I don't know if that will reproduce the error for you, but it causes the error for me.

Internally we build it often on different machines and do not meet such the error. I do not now how to help if we are unable to reproduce.
But this error:
2.531 gzip: stdin: unexpected end of file

seems like the .tar.gz file was not fully downloaded. Maybe networking issues. I may recommend only to try install with another network adapter (e.g. connect to smartphone wi-fi).

Hmmm, everything else works fine though. And it fails on the same step consistently at different times on different days. If it were networking I would expect the failures to be more random where I get unexpected end of files at other build steps. Just to be safe though, I skipped my network extenders and just connected through the main router. Same issue. No matter what I do, it always fails at the ffmpeg step.
Is it using some cached version of the file on subsequent builds? If so, how would I force a fresh build and have it re-download everything?

I suppose this may be closed

Yes actually just yesterday I reattempted this and got it to build. It does appear that the tar.gz file in question was not completely downloaded. Docker wouldn't stop using it on subsequent build attempts so I just cleared out the docker cache and it worked.


Update project name

Update project name on the website since our team has decided to change the project name from BlogSite to WordNook. (Permission was taken from GSSoC team before changing project name)
Also removed inactive mentor from the list. (Inactive since 1 month)

@salil-naik @pr-1 can you please merge this ?


NO_LEAP Calendar Option

This would be very useful for climate forcings that have a "no_leap" calendar.  LEAPYR is defined at the top of make_dmy.c.

closed via #188.


Missing security token?

When I run your code against our cPanel server I receive an error indicating that the server has returned a 403 Forbidden for URL https://hostname.domain.com:2087/json-api/listaccts
Shouldn't the URL called be the code have a security token of the form cpsess###### in it somewhere?

Nevermind.  I figured out how to make it work.  I needed to set auth_type = 'hash" and password = "the remote API key found in the WHM web interface".


Algorithm ED25519 not found

Hi,
I have openssl with version LibreSSL 2.6.5 which does not support algorithm ed25519 for generating private key. So need help how to generate the private key using ed25519 algorithm because when ever I write

openssl genpkey -algorithm ed25519 -outform PEM -out test.pem

always prompt  Algorithm ed25519 not found and error in genkey.
Thank You.

Perhaps ask the LibreSSL people, this isn't a problem with OpenSSL.


setting: Align elements properly in invite users.

Adds a margin-top to Check all and Uncheck all elements.
Fixes #7488.

@Balaji2198 @akashnimare I'm a little confused; currently, it's a radio button, though there's a PR to change that; is this meant to be a change on top of that PR?  If so, you should include those commits in your branch (reset-to-pull-request will help for fetching the code;
Check out our GitHub guide for more details on it.).  See https://github.com/zulip/zulip/pull/7493.
Also, this should go in zulip.css with the other #invite-user code, not in app_components.css (which is meant to only contain reusable code)

@timabbott  This is not meant to be top of that PR. This PR will align the Check all and Uncheck all elements. Where #7493  will add the checkbox for add as administrator and align it.

@Balaji2198 can you paste a screenshot of how it looks vs how it will after your changes?

Sure. @akashnimare
Before

After

@timabbott @akashnimare  Up for review.

LGTM 👍
On Sat, 25 Nov 2017 at 9:51 PM, Balaji<EMAIL_ADDRESS>wrote:

@timabbott https://github.com/timabbott @akashnimare
https://github.com/akashnimare Up for review.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/zulip/zulip/pull/7506#issuecomment-346950435, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACKLZQqoExxojULtHAUFdH-qqgPY7BsRks5s6D6IgaJpZM4Qo1UR
.

Looking Good me too ..

Looks good, merged, thanks @Balaji2198 and reviewers!


Fix misnamed property in KMS key clean up job

Coverage remained the same at 54.346% when pulling 3281caf92a5dce48204e08ebbb3355cde0b5973b on bugfix/fix-misnamed-property-in-job into a212252220fada15fcfa00b0387919ade564787e on master.


Problem with "Google Material Icon Font" for offline?

I use this package on Meteor JS.
But I have problem with Google Material Icon Font for offline.
Please help me (How to add to offline?).

they now switch to material google font, you can take a look here https://design.google.com/icons/#ic_subject, it has an offline version where you can use for your local purpose.

Thanks for your reply.


Adds a test which demonstrates a bug in combining OIPT and BeforeAndAfter

I don't actually understand what the problem is, but the before block is being executed more than once per test.
@bvenners any ideas?

So I think what is happening here is that the outer.run() call is actually creating two instances of the test case.  Since the "x" counter was in the test case instance, both were incrementing x, which produces undefined results (on my machine, x was always 0, not 2).
Although two instances are being created, the test case is only invoked once.  This can be seen more clearly with the following version of the test:
      val count = new AtomicInteger(0)
      class FooSuite extends FunSuite with OneInstancePerTest with BeforeAndAfter {
        val id = count.incrementAndGet()
        var x = 0
        before {
          println(s"$id: before")
          x += 1
        }
        test("x is 1") {
          println(s"$id: test...")
          assert(x === 1)
        }
        after {
          println(s"$id: after")
        }
        override def newInstance = new FooSuite
      }
      val rep = new EventRecordingReporter
      val outer = new FooSuite
      println("calling run...")
      outer.run(None, Args(rep))
      assert(rep.testSucceededEventsReceived.size === 1)

which produces the following output
calling run...
1: before
2: before
2: test...
2: after
1: after

Fixed in #597?
it("should only run before / after once per test") {
  @volatile var x = 0
  class FooSuite extends FunSuite with OneInstancePerTest with BeforeAndAfter {
    before {
      println("WHATEVER")
      x += 1
    }

    test("x is 1") {
      assert(x === 1) // ✓
    }

    override def newInstance = new FooSuite
  }

  val rep = new EventRecordingReporter
  val outer = new FooSuite
  outer.run(None, Args(rep))
  assert(rep.testSucceededEventsReceived.size === 1)
}

@cla-bot[bot] check


Fix iterator syntax in MNIST custom loop example

For consistency with other examples.

@mitmul This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@mitmul This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@mitmul This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@mitmul This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@mitmul Can you make a backport PR?

@mitmul This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@mitmul This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@mitmul This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

@mitmul This pull-request is marked as to-be-backported, but the corresponding backport PR could not be found. Could you check?

I made a backport.


Fix effect cleanup on React 17

This fixes useEffect clean up timing brought up by changes in React 17 (https://it.reactjs.org/blog/2020/08/10/react-v17-rc.html#potential-issues). #232

Hey @arivi it looks like this project is no longer maintained. See #248 I am potentially looking into forking the project.
Thanks,
daniel-sudz


Support flashing via USB-SERIAL-JTAG

It seems the current stub can't handle uart over usb-serial-jtag.

Closed by #26


Could not install package 'Naxam.AFNetworking.iOS <IP_ADDRESS>' into a project that targets 'Xamarin.WatchOS,Version=v1.0'

I'm unable to use this in my Apple Watch App built using Xamarin. I get the following error when trying to add the NuGet package:
Could not install package 'Naxam.AFNetworking.iOS <IP_ADDRESS>'. You are trying to install this package into a project that targets 'Xamarin.WatchOS,Version=v1.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

Thanks for your help,
John

Hey, it is only built for iOS. However, you could build for WacthOS yourself based on our code.


Plotting R scripts check for missing input and output

and quit with exit code recognizable by GATK.

@samuelklee I think it's good to go.

looks good, i think!


fix: Artwork placeholder stuck bug given dismissed modal event

The type of this PR is: Bugfix

This PR resolves NX-3070
Description
Fixes a bug when coming back from modal on Android that was stuck in the loading state of Artwork component. That was happening due to a racing condition from a double relay.refetch, one was canceling the other, and since we relied on the callback of one of those refetches to set the loading state to false on Android that was canceled and never set back to false.
https://user-images.githubusercontent.com/15792853/152151778-599387d5-5d35-4fd3-b0d0-a51bf401c5ec.mov

PR Checklist (tick all before merging)

[x] I have included screenshots or videos to illustrate my changes, or I have not changed anything that impacts the UI.
[x] I have tested my changes on iOS and Android.
[x] I have added tests/stories for my changes, or my changes don't require testing/stories, or I have included a link to a separate Jira ticket covering the tests.
[x] I have added a feature flag, or my changes don't require a feature flag. (How do I add one?)
[x] I have documented any follow-up work that this PR will require, or it does not require any.
[x] I have added an app state migration, or my changes do not require one. (What are migrations?)
[x] I have added a changelog entry below or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

iOS user-facing changes

Android user-facing changes

Dev changes

Warnings

:warning:

❌ An error occurred while validating your changelog, please make sure you provided a valid changelog.

  Generated by :no_entry_sign: dangerJS against 95de4743c392907b0602b669f69bc05ca757e797


Use index UID instead of index ID for ingest WAL queue

The current ingest logic uses the index ID for the WAL queue. The following bug exists:

spawn a node
create an index
ingest some docs
kill the node
delete the index
recreate the index
respawn the node
phantom documents appear

Fixed in ingest v2.


Update batch-linux-nodes.md

Changed to latest image reference.
I could not find any image in existing image(Publisher: Canonical, Offer: Ubuntuserver, SKU: 20.04-LTS), failed to add pool.
After changed to the latest image, successfully added.

@microsoft-github-policy-service agree

#sign-off


Logo?

Is your feature request related to a problem? Please describe.
I think, that currently the plain TUM logo is a bit plain and would like to discuss this.
Describe the solution you'd like
A more distinct Logo could open us up to making stickers/ other merch :wink:
As a starting point, what do you think about this Logo?

TUMlive.svg
TUMlive.afdesign.zip
Describe alternatives you've considered
Sticking to the current logo is also fine.

Looks Good!

I really like the logo you provided!

Considering that it will be quite small when displayed in the header, the edges and padding of the live text might be a little to sharp and small. Also a simpler version where the red box is just a dot might look cool as a favicon?

I noticed that parts of the svg are just a base64 endoded png, this might be something we could also tackle.

Also, the red of the logo and live indicator should match, I don't think it makes a huge difference which to go forward with.

@0ql looks good as well! Though I probably wouldn't go for a gradient

Also, the red of the logo and live indicator should match, I don't think it makes a huge difference which to go forward with.

hmm…
I could not find a color for this in  /web/assets/css/main.css
and don't find a colour/icon matching the description in /web/assets/css/icons.css
is the mentioned colour the same red as here:

Otherwise: Could you point me to the right colour?

The little text next to a Livestream on the start page has the background red-800 https://tailwindcss.com/docs/background-color

Foremost, thanks for being patient, the beginning of the semester is always stressful…
Here are the updated drafts (I have worked on spacing, font and integrated the colours)
Logo:

Favoticon:

I could create a PR adding the new logo, if it's final?

No need, the logo can be configured without any changes to the code. We'll
do a trial run with these. Love them ☺
On Thu, 3 Nov 2022, 20:21 Kaffee☕, @.***> wrote:

I could create a PR adding the new logo, if it's final?
—
Reply to this email directly, view it on GitHub
https://github.com/joschahenningsen/TUM-Live/issues/711#issuecomment-1302564707,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKV24QE37HXW5DPHNTVDJV3WGQGDJANCNFSM6AAAAAARAJQG2Y
.
You are receiving this because you commented.Message ID:
@.***>

Deployed the new icon. Not sure if the webapp has the right one already. If not this needs to be editable as well.


Added prop for custom styling of options container

This is a prop that have been implemented in many of the many forks of this modul. It also resolves #19

Thanks @mikaello


Explorer rendering is slow

re #15455

close all editors, open explorer with ~50 files/folders visible
add profiling instruction for viewlet restore (console.profile, console.profileEnd in https://github.com/Microsoft/vscode/blob/master/src/vs/workbench/electron-browser/workbench.ts#L289)
reload the workbench
🐌 restoring the explorer takes ~450ms, 200ms of that time is spend in the tree, a significant amount of time is spend in FileLabel, ResourceLabel, IconLabel

CPU-20170105T174926.cpuprofile.zip

@jrieken I am not seeing the same or any significant amount of time spend in the labels when I run. The labels should not have an impact on the number of folders expanded because they only kick in to the visible viewport of the tree. I also see some viewlet unrelated times in that profile (spawn, JSON??)
Attached is a trace of expanding every folder in the extensions directory of our source tree (including all of node_modules which gives a large test set).
Most of the time is spend in paths.isEqualOrParent which I am able to fix. Looking at the second trace, most time is imho spend resolving files from disk and updating the tree (which is https://github.com/Microsoft/vscode/issues/18180).
Before:
CPU-20170112T081858_before.cpuprofile.zip
After:
CPU-20170112T081926_after.cpuprofile.zip

I drilled very deep into the setInput and expandAll call found the renderer to take time (apart from the tree burning time). Unsure where I have seen the 200ms but I see this (in the original trace). Also looking in the traces

Yeah, unsure where that time came from. With newer version I don't see it anymore. Maybe some dom-distorition effects?


Add stickyTopOffset property

Hey, thanks for the contribution! Some questions for you...
1.) How do you see the stickyTopOffset property differ from something like stickyStyle={{top: ...}}?
2.) Did you remove the PureRenderingMixin in order to address issue #7? In other words, by merging your PR, can I close out that issue?
Thanks!

Hey!

I removed stickyTopOffset and use this.props.stickyStyle.top to set isSticky properly. Basically this is required when you have already something sticked on top (say menu) and want to show your block bellow.
Not really. I think this problem still exists.

Check out the current demo on master and see if the topOffset property implementation behaves as you would expect.

Haven't had a chance to check this out yet, but it looks close. Quick question though, does setting the position to 'relative' in 'shouldBeSticky' disrupt the document flow for non-relative, positioned elements?

I haven't encountered any issues, but it is definitely possible that some stylesheets may cause some undesired behavior.  Having said that, the check happens so fast that its imperceptible in my experience, and if and when users complain about it, I will be sure to make the appropriate fix. Are you having issues?
Just FYI, I made this change because its more stateless than the previous approach. If you can think of a better way, I'd absolutely consider it.


SQ-176/Search bug

Removing toFlowable did the trick, I didn't see the point in using it and @rock3r doesn't remember the reason so yolo.
Fixes #176
The "problem" now is that the search state is restored to the empty state every time we go back into it.

@rock3r also never try to be all


Issue for blocking/loading issues

Blocking is an issue right now. It has come up in multiple places:

https://github.com/kephale/cryocanvas/issues/5
computing background is slow: https://github.com/kephale/cryocanvas/issues/6
related but not exactly the same: https://github.com/kephale/cryocanvas/issues/9

@Janeece identified surprise slowness with:

select a layer without changing visibility
select a tool but not interacting with canvas
toggling live prediction/model fitting
using the UI but not the canvas

Many of these were resolved in: https://github.com/kephale/cryocanvas/commit/81fdb387fdff16eb570a4fd2c9e0dff8b86befd7

https://github.com/kephale/cryocanvas/pull/7 nneds to get referenced here too!

I believe these are all resolved now with:

https://github.com/cellcanvas/cellcanvas/commit/6b078ed9b4a16268a7b284c400363955b599889e
https://github.com/cellcanvas/cellcanvas/commit/1ce8cad9d0aaa69fa65048257b86969e41bd6c0b

Nice! 🎉


⚠ ClamAV has degraded performance

In 386961a, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 70 ms

Resolved: ClamAV performance has improved in 8232317.


Add useful methods to RailDirection and LogAxis interfaces

SpongeAPI | SpongeCommon
Added several missing methods, without which it is impossible to transform rails and logs.
Resolves: https://github.com/SpongePowered/SpongeAPI/issues/2026

@dualspiral Yay or nay?

No.

Given the fact that in API 8 it became possible to easily transform any blocks, including from modifications, this PR now does not make much sense, so I will close it (and the implementation PR).


Cleanup colors

Rename colors according to the names used in our Figma files
mapping to SAP web brand color names are in comments
update / change all occurences / references
bump to 1.4.2

Default colors fixed.


Fix order configuration loaded on startup in default WebApplicationBuilder

Summary
The order of configuration providers read on startup of the application was incorrect. appsettings.<env>.json has higher priority that appsettings.json.
Proof: https://github.com/dotnet/aspnetcore/blob/6a8083a9c4a6f28c21c8564e08d56bbe48e6b16b/src/DefaultBuilder/src/WebApplicationBuilder.cs#L273
Fixes #Issue_Number (if available)

Internal previews

📄 File
🔗 Preview link

docs/core/extensions/configuration.md
Configuration in .NET

Hi @szymczakk - one thing to note is that this article is describing Host.CreateDefaultBuilder, not WebApplication. This order was just updated last week, see #39663. I agree the doc should do a better job at more clearer representing this as it is a bit confusing now.


Add Ollama API integration with AgentOps

Add Ollama API Integration with AgentOps
Overview
This pull request integrates the Ollama API with AgentOps, enabling tracking of both synchronous and asynchronous interactions. The following changes were made:
Changes Made

llm_tracker.py:

Added support for Ollama API.
Implemented methods to handle synchronous and asynchronous responses.
Patched Ollama chat methods for tracking.

client.py:

Initialized and utilized the updated LlmTracker.
Ensured override_api method in LlmTracker is called during client initialization.

Test Script
Created a test script to verify the integration. The script performs synchronous and asynchronous calls to the Ollama API and logs the interactions.
Test Script:
import ollama
from agentops import Client
import asyncio

# Initialize the AgentOps client with your API key
client = Client(api_key="YOUR_API_KEY_HERE")

# Start a session
session_id = client.start_session(tags=["ollama_test"])

try:
    # Synchronous chat call to Ollama API
    sync_response = ollama.chat(
        model='orca-mini',
        messages=[{'role': 'user', 'content': 'Why is the sky blue?'}]
    )
    print("Sync Response:", sync_response)

    # Asynchronous chat call to Ollama API using asyncio.to_thread to run the sync method
    async def async_chat():
        response = await asyncio.to_thread(ollama.chat,
                                           model="orca-mini",
                                           messages=[{"role": "user", "content": "Why is the sky blue?"}])
        return response

    async def main():
        async_response = await async_chat()
        print("Async Response:", async_response)

    asyncio.run(main())

    # End the session successfully
    client.end_session("Success")

except Exception as e:
    # End the session with failure if there is an exception
    client.end_session("Fail", str(e))
    raise
Results
The script successfully logged interactions with the Ollama API and provided session replay links for review. Both synchronous and asynchronous interactions were tracked and logged correctly.

Conclusion
This integration enables comprehensive monitoring and analysis of interactions with Ollama, facilitating better understanding and debugging of API usage within the AgentOps framework.

#237 also exists for ollama support

#237 also exists for ollama support

I thought I could give it a try. Let me know how can I proceed. Thanks.

#237 also exists for ollama support

I thought I could give it a try. Let me know how can I proceed. Thanks.

Thanks @sarath59 for helping. Perhaps we can combine the changes in this PR with #237? Namely, you've provided the unit tests for this, whereas that branch has not.

#237 also exists for ollama support

I thought I could give it a try. Let me know how can I proceed. Thanks.

Thanks @sarath59 for helping. Perhaps we can combine the changes in this PR with #237? Namely, you've provided the unit tests for this, whereas that branch has not.

Sure @areibman , I am good with that if that helps. Let me know if I could help with anything else. Thanks.

closed in favor of #237


UDM Pro and iOS / apple issue

See this post on Reddit:
Post on reddit
I have everything set up as normal and instructed per the config pages, but even with an entirely blank filter / block situation, I still get the lack of internet connection warning.

Forgot to add, I noticed on my Windows 11 box that is connected to the UDM Pro network there was a report of no internet in network status. So it seems the issue is not isolated to apple devices only.

@cuonglm that is correct.

@justinbadal We need to have a look at your account, please email<EMAIL_ADDRESS>and reference this thread.

@yegors thanks. I emailed the address.

I have the same issue but with Asus Merlin router, seemed like only on iPhones

We reproduced the issue. Investigating.

Cause found: When Apple device joins a network, it queries for captive.apple.com. This domain bypasses the DOH configuration, and uses a native OS resolver (this is needed to make captive portals work). On a UDM/UDR, this request fails to resolve while ctrld is running, which causes the "No network connection" message.
We will fix this.

Whoa! Thank you guys so much for working on this!

New user: In the auto generated config of ctrld on my UDM I see the line
'captive.apple.com' = []},
Nevertheless I still have the problem described here. So if it has been fixed it does not work on my side.

New user: In the auto generated config of ctrld on my UDM I see the line
'captive.apple.com' = []},
Nevertheless I still have the problem described here. So if it has been fixed it does not work on my side.

This will only be fixed in next release of ctrld.

This is resolved in the latest release: https://github.com/Control-D-Inc/ctrld/releases/tag/v1.3.0

Unfortunately I'm still seeing this issue while running 1.3.0. iOS thinks there is no network when connected to my UDM-Pro running ctrld 1.3.0.

Are you sure you're running v1.3.0 with default configuration? We had multiple people confirm this is resolved, including ourselves.

Yep v1.3.0 and no config changes. Just re-pulled the binary and will see how it is over the next few days.

Yep v1.3.0 and no config changes. Just re-pulled the binary and will see how it is over the next few days.

Do you use --cd flag or local config?

I just run sh -c 'sh -c "$(curl -sL https://api.controld.com/dl)" -s RESOLVER_ID_HERE' and that's it.

Can you SSH into your UDM and run: nslookup captive.apple.com
What's the output?

Sure,

Sure,

Could you show the content of ctrld.toml?

@mattmill98 After you uninstall ctrld, what's the output of nslookup captive.apple.com?

Here:

Did you have any special config for dnsmasq? What's the DNS server that you use when ctrld uninstalled?
What's the content of /etc/resolv.conf (after uninstall ctrld)?

Please try a dev build using this install command:
sh -c 'sh -c "$(curl -sSL https://api.controld.com/dl)"'

Let us know if this resolved the issue.

This dev build appears to fix it as I can now nslookup captive.apple.com. Will let you know if I see any issues on my apple devices over the next few days.

I was having this same issue with my Firewalla. The dev build appears to fix it.


[BEAM-753] Pin the version of dependencies

Pin the version of all dependencies between a known good version and up to (not including) the next major version.

R: @charlesccychen

Thanks! LGTM.

R: @robertwb
Adding Robert for merge.

Thank you.

This was not merged to the python-sdk branch, reopening it.

And now it's in the official apache branch.

Thank you!


make "control+/" do block comments like in python #48

implement this. its so useful . dont know why it doesnt work when editing bat files .
this apply here to .
its the only 2 plugins for bat in jetbrains ides (or is there any other ?) so one that include it will be good.

fun fact . the IDEs already do that by default what was messing in that is this one and this other(https://github.com/aefimov/idea-batch/issues/48) plugins that i have had just installed few time ago without even testing. uninstalled both and solved


installation: pytest-runner>=2.7.1

Replaces the manual pytest integration with pytest-runner.

Signed-off-by: Sami Hiltunen<EMAIL_ADDRESS>

Coverage remained the same at 100.0% when pulling 1bdc7d0f885209b0fa22fe9c054707310106dee0 on SamiHiltunen:pytest-runner into f2ed2e4eaa9f61afb10bcf952a9c2019eed3138b on inveniosoftware:master.


[e2e]: nodejs push main node16 slsa3

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/12310502280
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.nodejs.push.main.node16.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.nodejs.push.main.node16.slsa3.yml
Trigger: push
Branch: main
Date: Fri Dec 13 06:09:32 UTC 2024

Repo: https://github.com/slsa-framework/example-package/tree/main
Run: https://github.com/slsa-framework/example-package/actions/runs/12327451556
Workflow file: https://github.com/slsa-framework/example-package/tree/main/.github/workflows/e2e.nodejs.push.main.node16.slsa3.yml
Workflow runs: https://github.com/slsa-framework/example-package/actions/workflows/e2e.nodejs.push.main.node16.slsa3.yml
Trigger: push
Branch: main
Date: Sat Dec 14 06:08:21 UTC 2024
Tests are passing now. Closing this issue.


Xaw3d: 1.6.5 -> 1.6.6

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/xaw3d/versions.
meta.description for Xaw3d is: 3D widget set based on the Athena Widget set
Updates performed

Version update

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 1.6.6 with grep in /nix/store/q4xglvjl9dyqsx3b18dyjz9f0cwv0yzj-Xaw3d-1.6.6
found 1.6.6 in filename of file in /nix/store/q4xglvjl9dyqsx3b18dyjz9f0cwv0yzj-Xaw3d-1.6.6

Rebuild report (if merged into master) (click to expand)

6123 total rebuild path(s)

6123 package rebuild(s)

First fifty rebuilds by attrpath
Xaw3d
aerc
afew
agda
agdaPackages._1lab
agdaPackages.agda
agdaPackages.agda-categories
agdaPackages.agda-prelude
agdaPackages.cubical
agdaPackages.functional-linear-algebra
agdaPackages.standard-library
alot
astroid
auctex
cflow
cscope
easycrypt
emacs
emacs-gtk
emacs-lsp-booster
emacs28
emacs28-gtk2
emacs28-gtk3
emacs29
emacs29-gtk3
emacsPackages.a
emacsPackages.aa-edit-mode
emacsPackages.aangit
emacsPackages.aas
emacsPackages.abc-mode
emacsPackages.abgaben
emacsPackages.abl-mode
emacsPackages.abridge-diff
emacsPackages.abs-mode
emacsPackages.abyss-theme
emacsPackages.ac-alchemist
emacsPackages.ac-c-headers
emacsPackages.ac-capf
emacsPackages.ac-cider
emacsPackages.ac-clang
emacsPackages.ac-dcd
emacsPackages.ac-emacs-eclim
emacsPackages.ac-emmet
emacsPackages.ac-emoji
emacsPackages.ac-etags
emacsPackages.ac-geiser
emacsPackages.ac-haskell-process
emacsPackages.ac-helm
emacsPackages.ac-html
emacsPackages.ac-html-angular

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/q4xglvjl9dyqsx3b18dyjz9f0cwv0yzj-Xaw3d-1.6.6 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A Xaw3d https://github.com/r-ryantm/nixpkgs/archive/899a9d82ca27bb93ed55831032b9dd937fc419b4.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/899a9d82ca27bb93ed55831032b9dd937fc419b4#Xaw3d

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/q4xglvjl9dyqsx3b18dyjz9f0cwv0yzj-Xaw3d-1.6.6
ls -la /nix/store/q4xglvjl9dyqsx3b18dyjz9f0cwv0yzj-Xaw3d-1.6.6/bin

Pre-merge build results
NixPkgs review skipped

Maintainer pings

@ofborg eval

@ofborg build emacs


20220205 issue18 cmake

Areg - framework's sources added.
Open to any changes/modification :)

Requested changes will be resolved very soon :)

My apologies, some of sources left behind.

If we are ready to compile the library with Cmake then please add a target for it, or maybe I am missing something?

@biwiki , i'm not sure that we are ready.
@Ali-Nasrolahi , can you please let me know what we can compile with cmake at the moment?

I agree with @biwiki, not yet. Although after adding sources and headers (which is currently progressing) I believe it'll be pretty much done.

Gents,
I created new branch:
https://github.com/aregtech/areg-sdk/tree/20220701-candidate
Let's move our changes here.
I send an invitation to @Ali-Nasrolahi to join contributor list. I think it is fare if you merge your work with 20220701-candidate branch, so that your user name is officially listed for this project :)
Of course, if you have time / mood to do so. Otherwise, i can do.
@biwiki, I also refactored String object in this branch:
https://github.com/aregtech/areg-sdk/tree/20220528-adapt-stl
I know that you made lots of changes with strings. If you have important / valuable changes to move to candidate branch, feel free. Probably merging will be not so easy and would require lots of re-work, that's why would recommend only those, which are relevant with optimization / bug fixes. In this release I want to focus on optimization.

I also created new discussion, let's move there :)
https://github.com/aregtech/areg-sdk/discussions/56


SRG Appendix entries list

Running list of SRG requests to add to our document appendix:

[x] age-1 index residual plots
[x] update max age selectivity sensitivity runs and add figures
[x] Updated relative fishing intensity decision table (will also be in the E.S. and the main tables) {Do we need it in here?} - no, I think we just fix it in the document and not put it in here

@aaronmberger-nwfsc  - didn't see you assigned this. I've done it (as mentioned in Slack). Hope you haven't started....


Hardfork rework - Block Expiration

reference: https://github.com/lbryio/lbrycrd/pull/137
Chainquery calculates if a block is expired using the same value that lbrycrd uses. The main problem here is that chainquery will need to be updated when the above pull request is approved and released. This information is fed to lighthouse as well, for search capabilities.
https://github.com/lbryio/chainquery/blob/master/daemon/jobs/claimtriesync.go#L21

solved with 49afb006f243ec6229d03c4357457bf845ce3de1


OVDB-27: MeshToVolume uses infinite memory when given NANs

Check for NANs when computing distances to avoid infinite loops
with bad input geometry.
Rename the computeDistance to updateDistance to better reflect
its behaviour.

LGTM, but please add an entry to the change logs.

Added entry to change logs.  Immediately regretted that we have a single conflict-prone change log :>


Is there an example of PaddlePaddle here?

http://paddle-inference-dist.bj.bcebos.com/int8/resnet50_int8_model.tar.gz


cleanup: Refactor ObjectWriteStreambuf.

There internal::CurlObjectWriteStreambuf was not adding value, there
was nothing "curl" about it (not anymore), it just made the inheritance
tree deeper.
Updated the API/ABI baseline, all the changes are in the internal::
namespace and therefore not part of the public API.

This change is

PTAL.


Don't add comma between each ref character in merged fields

E.g. for an extra field added with --fields Notes,
merged output should be something like
C1,C2: Note 1
C3,C4: Note 2
instead of
C,1,,C,2: Note 1
C,3,,C,4: Note 2

Thanks by your contribution, @daglem.


Improve Arrow table slice serialization

Closing this PR. The one commit in here was already cherry-picked, and we decided to pick this up at a later point in time after initial flatbuffers support has landed.


Issue with path of some files when running on Windows

I am currently using the extension on a laptop running Windows.
I ran into an issue where some of the files would not show the parent/children when other ones did. After a bit of debugging, it seems to be related to the fact that document.uri.path returns a string with the drive letter sometimes capital and sometimes not.
Some files were showing: path: "/c:/Users/xxx/model1.sql" when others are showing path: "/C:/Users/xxx/model2.sql" (in one case the C: drive is uppercase and in the other one it is lower case).
A quick fix for this use case might be to change the file manifestContainer.ts and use fsPath instead of path, while catering for both Unix and Windows file systems. Replacing
if (currentFilePath.path.startsWith(projectRootUri.path + "/"))

by
if (currentFilePath.fsPath.startsWith(projectRootUri.fsPath + "/") || currentFilePath.fsPath.startsWith(projectRootUri.fsPath + "\\"))

Happy to submit a PR if it's OK

We refactored the code quite a bit. You could help us in testing the PR.
Thanks for raising the issue!

Hi. I just did a quick test with the new version in the PR and the models are showing correctly, even for the files that are not working for me in the current version.

Hi. I just did a quick test with the new version in the PR and the models are showing correctly, even for the files that are not working for me in the current version.


Could not find a matching version - miniflux/picofeed @stable

composer require miniflux/picofeed @stable
[InvalidArgumentException]
Could not find a matching version of package miniflux/picofeed. Check the package spelling, your version constraint and that the package is available in a stability which matches your minimum-stability (dev).
Any insights appreciated.

I'm not sure what you mean by "active"
Here's the package I use: https://packagist.org/packages/p3k/picofeed


Bump Gradle version to 4.0.0 really

For Android Studio 4.0.0 Stable
Also use Gradle 6.3
Kotlin 1.3.72
Target 29 Android 10Q
Build 29.0.3
Last dependencies implementation
See, this example works with this combination of libraries.

@googlebot I signed it!

There are a lot of changes in this PR - please separate them out to individual PRs group by topic (SDK changes, individual library updates, etc).


Allow installation to other directories

The build system always produces a marginPolish binary that links to libMarginCore.so.SOVERSION in the build folder. Neither the standard cmake -DCMAKE_INSTALL_PREFIX=/path/to/install nor the make DESTDIR=/path/to/install options seem to change this. Normally this wouldn't be a problem, as I could just compile it directly at the destination, but in this case that is a network filesystem (Gluster) and there seems to be a cmake bug (?) causing the build to fail for some obscure reason (permissions are fine):
    Change Dir: /home/aorth/src/git/MarginPolish/buil/CMakeFiles/CMakeTmp

    Run Build Command:"/usr/bin/gmake" "cmTC_1207d/fast"
    gmake: Makefile: Permission denied
    gmake: *** No rule to make target `cmTC_1207d/fast'.  Stop.

It would be nice if the build system properly supported make install or similar mechanism for directing the final location of the binary and library.
CentOS 7, GlusterFS 5.7, cmake 3.13.5, marginPolish v1.0.0.

Hi alanorth, sorry about the late response.  You can use the -DCMAKE_INSTALL_LIBDIR=/your/dir to install the .SO into a custom directory.  I think I know how we can get the headers installed in a custom directory, but haven't gotten it quite worked out yet.
We split the compilation of marginPolish into a .so and an executable for use with Shasta, but it should be very easy to get it to compile as a standalone.  I will probably get this working next week, as this should be the best solution (unless you are writing code which utilizes the .SO).

Thanks for the response, @tpesout. I think I must be missing something... I'm trying to install marginPolish as a standalone executable on my cluster:
$ cmake3 -DCMAKE_INSTALL_PREFIX=/path/to/marginpolish/v1.0.0 -DCMAKE_INSTALL_LIBDIR=/path/to/marginpolish/v1.0.0/lib64 ..
$ make install

The marginPolish binary is always linked against the .SO in the build directory:
$ ldd marginPolish | grep libMarginCore
        libMarginCore.so.SOVERSION => /tmp/MarginPolish/build/libMarginCore.so.SOVERSION (0x00007f9480251000)

I've pushed a build up to master where marginPolish builds without the .SO.  Please give it a try and let me know if that works for you!  You shouldn't need to make install (as this just installs the marginCore library); just regenerate the cmake file, make, and move the marginPolish executable to your desired bin directory.

Thanks @tpesout. This is working on our CentOS 7 environment. I'll make sure to tell our researchers to cite you. :tongue:


Wrong encoding when titles have accents

Or any of the other fields with text. It causes 3DS themes with info.smdh made with bannertools to crash Anemone3DS.
So I fixed it by implementing utf8 to utf16 like this:
static void utf8_to_utf16(u16* dst, std::string src, size_t maxLen) {
    std::u16string utf16str = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>{}.from_bytes(src.data());

    if(maxLen == 0) {
        return;
    }

    size_t n = 0;
    while(src[n]) {
        dst[n] = (u16) utf16str[n];
        if(n++ >= maxLen) {
            return;
        }
}
}

Appears to work with more common accents and some Japanese.

Looks like my original implementation was a quick job that just worked to convert characters with equivalent UTF-8 and UTF-16 values. I'll replace it with proper conversion soon.

Sorry for the delay, this should be fixed now. Can you confirm that the issue is fixed?

Yes, it works now. Thanks.


⚠ Bofrost.com has degraded performance

In e97c6b3, Bofrost.com (https://www.bofrost.com) experienced degraded performance:

HTTP code: 200
Response time: 1478 ms

Resolved: Bofrost.com performance has improved in e11fa6a.


[Avatar] Avatar "src" not positioned correctly in circle

Problem Description
using Avatar component with a src attribute to a url or image that is bigger than the size passed in.
<Avatar src='https://www.fillmurray.com/500/900' size={100} backgroundColor='rgba(0,0,0,0)' />

the background property is set here and there is a backgroundSize defined as well, but becomes initial when it's rendered to the browser.
depending in the size of the image, this produces an unusable avatar because the image is either repeated or offset from the top/left because it doesn't get sized properly to fill the size passed in.
fix
this is solved by modifying the Avatar.js file here:
backgroundSize: 'cover',
backgroundPosition: 'top center'

i would make a PR for this issue, but i don't know how to do this
Versions

Material-UI: 0.15.0-beta.1
React: 15.0.1
Browser: chrome

Hi @rkstar ,
I just tried to reproduce what you said and even with your changes I am getting the same effect as I do without incorporating your changes.
Can you post your desired design of avatar here possibly a screenshot and the one without that? It will help fix it quickly

<Avatar
  src='https://www.fillmurray.com/300/300'
  size={100}
  backgroundColor='rgba(0,0,0,0)'
  style={{border: 0}} />

here is the avatar with unmodified code:

i modified node_modules/material-ui/Avatar/Avatar.js after line 58 adding the backgroundSize and backgroundPosition lines.
  if (src && avatar.borderColor) {
    (0, _simpleAssign2.default)(styles.root, {
      background: 'url(' + src + ')',
      backgroundSize: 'cover',
      backgroundPosition: 'top center',
      backgroundOrigin: 'border-box',
      border: 'solid 1px ' + avatar.borderColor,
      height: size - 2,
      width: size - 2
    });
  }

here is the avatar with changes:

@rkstar : Thanks for your quick reply. I will try reproducing this.
If this is the case in HEAD then I will submit a PR on your behalf.

@rkstar : Still not able to reproduce the issue. Are you enclosing your Avatar in some other component?
<Avatar       src="https://www.fillmurray.com/200/300"       size={100}       backgroundColor="rgba(0,0,0,0)"       style={{border: 0}} />
I used the same component of urs but I didnot make changes in the Avatar.js. It looks fine.

@tintin1343 yes, the Avatar component is down a couple of divs:
const container = {
    border: '1px solid grey'
  },
  flexbox = {
    display: 'flex',
    flexWrap: 'wrap',
    justifyContent: 'space-between',
    padding: '10px'
  },
  avatar = {
    flex: '0 content',
    width: '120px',
    paddingRight: '10px'
  }

      <Avatar
        src='https://www.fillmurray.com/300/300'
        size={100}
        backgroundColor='rgba(0,0,0,0)'
        style={{border: 0}} />

is it possible i'm seeing this issue because the Avatar is inside a flex box?

@rkstar : It could be the case. When I re-created the issue for the first time on the docs site , the Avatar was inside the ListItem component and I remember getting an issue like this.
Just for trial sake try remove all the divs and just place the Avatar component. It should work and then enclose it within div and apply style one at a time and notice the change. That should give you an idea about the css causing the issue.
Why are you using the flexWrap component? how many avatars are gonna be placed inside the div?

Why have you assigned a flex value of 0? remove thats anyway not needed.
I am closing the issue since its not related to Material-ui. If you still need help do post below in the comments.

i went right back to the studs and i'm still seeing the same problem.  there are no styles at all now.
https://www.fillmurray.com/300/300

here's what i have:
my-colors.js
import {colors as DefaultColors} from 'material-ui/styles'

let Colors = Object.assign({
  pinterest: {red: 'rgba(189,8,28,1)'}, /* #bd081c */
  google: {red: 'rgba(219,90,60,1)'}, /* #db5a3c */
  facebook: {blue: 'rgba(59,89,152,1)'}, /* #3B5998 */
  twitter: {blue: 'rgba(64,153,255,1)'}, /* #4099FF */
  linkedin: {blue: 'rgba(51,138,176,1)'}, /* #338AB0 */
  buffer: {blue: 'rgba(50,156,237,1)'}, /* #329ced */
  app: {
    red: 'rgba(203,0,0,1)', /* #CB0000 */
    pink: 'rgba(244, 61, 112, 1)', /* #f43d70 */
    green: 'rgba(30, 223, 179, 1)', /* #1edfb3 */
    blue: 'rgba(49, 108, 233, 1)', /* #316ce9 */
    purple: 'rgba(46, 53, 143, 1)', /* #2e358f */
    yellow: 'rgba(251, 200, 45, 1)', /* #fbc82d */
    darkGrey: 'rgba(70, 70, 70, 1)', /* #464646 */
    grey: 'rgba(168, 168, 170, 1)', /* #a8a8aa */
    lightGrey: 'rgba(221, 223, 226, .5)', /* #dddfe2 */
    white: 'rgba(239, 243, 246, 1)' /* #eff3f6 */
  }
}, DefaultColors)

export default Colors

my-ui.js
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'
import getMuiTheme from 'material-ui/styles/getMuiTheme'
import lightBaseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'
import {fade} from 'material-ui/utils/colorManipulator'
import Colors from './my-colors'

const ModTheme = Object.assign(lightBaseTheme, {
  palette: {
    primary1Color: Colors.app.red,
    primary2Color: Colors.app.green,
    primary3Color: Colors.app.darkGrey,
    accent1Color: Colors.app.blue,
    accent2Color: Colors.app.purple,
    accent3Color: Colors.grey500,
    textColor: Colors.darkBlack,
    alternateTextColor: Colors.white,
    canvasColor: Colors.app.white,
    borderColor: Colors.grey300,
    disabledColor: fade(Colors.darkBlack, 0.3),
    pickerHeaderColor: Colors.app.pink,
    clockCircleColor: fade(Colors.darkBlack, 0.07),
    shadowColor: Colors.fullBlack,
  },
  datePicker: {
    color: Colors.app.red,
    textColor: Colors.white,
    calendarTextColor: Colors.darkBlack,
    selectColor: Colors.app.red,
    selectTextColor: Colors.white,
    calendarYearBackgroundColor: Colors.white,
  }
}),
  Theme = getMuiTheme(ModTheme)

export {
  MuiThemeProvider,
  Theme
}

main.jsx
import {MuiThemeProvider, Theme} from 'my-ui'
...
  render(){
    return (
      <MuiThemeProvider muiTheme={Theme}>
        <Avatar
          src='https://www.fillmurray.com/300/300'
          size={100} backgroundColor='rgba(0,0,0,0)'
           />
      </MuiThemeProvider>
    )
  }

That is weird. I tried reproducing the exact same thing as u and it worked perfectly fine.

hmmm.  i will keep digging i guess.  thanks for your help!

Its definitely the them or the some css which you haven't imported properly.
I did just implement the Avatar on itself.

Looks fine to me. Try digging a bit more it should not be difficult to debug now that we know the cause of the issue.

hey @rkstar, did you find a solution to this? I'm getting the same issue.

I can also confirm the issue.  I ended up building a component locally as a workaround for the time being (it's really nothing more than an empty div with styling).  One thing that I noticed when testing is that I would often get different results before/after clearing cache as well as in different browsers.  That said, I was never totally unable to reproduce the issue.

@tonyjmnz no solution yet.  only what i posted above, but that's pretty bogus.
for my part, when i strip away ALL css from my site and load in an avatar all by itself, as @tintin1343 did above, it works, just like above.  i've since added back in some bare bones css rules and this issue is back.  and it's unruly!
the avatar will sometimes display correctly, sometimes it will be 50% height and repeat, and sometimes the image will be full size and you'll only see the little corner of it that appears in the circle of the avatar component.  all of this on the same page even!  here's a screenshot

I'm getting this issue too. For me it happens whenever I change the src props for an Avatar component. Normally it get's rendered with background-size, background-origin and background-position-* which makes the component looking perfect. When I change the src prop the avatar gets re-rendered without any of the parameters mentioned before

I too am coming across this on the latest stable 0.15.0.
Small images seem to repeat and larger image don't scale properly.
In my particular case, the bug appears when someone tries to update their profile avatar.
Whats strange is if you alter a file and have webpack re-build, it shows the image properly.
Also, renders properly if the user updates their profile with the new photo and refreshes the page.

@christopherdro my original fix worked for me in the latest 0.15.0 stable release as well as the alpha/beta before it.  i can't find what is causing this issue to occur, but i think that @izziaraffaele is on to something here:

Normally it get's rendered with background-size, background-origin and background-position-* which makes the component looking perfect. When I change the src prop the avatar gets re-rendered without any of the parameters mentioned before.

does react reuse components if you render an array and then change the order of elements on re-render?

@tintin1343 Could  please clarify the status? Will it be fixed in the next version or should the issue be reopened?
I can't say if the fix proposed by the OP is fine but something got broken between 0.14.4 and 0.15.0 (resp. left and right images below... using the official components page itself).
I think the problem occurs when the image is not a square.
In the meantime, does anybody have a workaround (without patching the code)? I'm stuck.

@Sabst, for my part, whenever I import a component from an external library I always create a global container component.  This way I can swap things out or make global changes very easily.  So as a workaround, I just replaced the M-UI Avatar with my own custom one.  There's really not much to it anyway.
export default class myAvatar extends Component {
  shouldComponentUpdate(nextProps, nextState, nextContext) {
    return this.props.src != nextProps.src
      || this.props.size != nextProps.size
      || this.props.onClick != nextProps.onClick;
  }

  render() {
    const { src, size, onClick, style } = this.props;
    var newStyle = {
      cursor:'pointer',
      width: size ? size + 'px' : '40px',
      height: size ? size + 'px' : '40px',
      color:'rgb(255, 255, 255)',
      display:'inline-block',
      textAlign:'center',
      lineHeight:'40px',
      fontSize:'24px',
      borderRadius:'50%',
      left:'0px',
      WebkitUserSelect:'none',
      border:'1px solid rgba(128, 128, 128, 0.14902)',
      backgroundImage: 'url("' + src + '")',
      backgroundClip: 'border-box',
      backgroundSize:'cover',
      backgroundPosition:'50% 50%'
    };
    Object.assign(newStyle, style);
    return

;
  }
}

I haven't had any problems with background image position/size.  Maybe that will help.

@jamesbillinger Thanks, your component works great (I just had to set the border to 0px to be perfect in my case): I will use it as a workaround.
I hope the original Avatar component will be fixed though.
As a side-note and regarding your wrapping approach, I'm impressed this is working well for you (or I misunderstood what you are doing exactly). There are so many different UI library flavors, each with their specific component hierarchies, props, states..., that I never thought such a wrapping could work (or would be limited to a subset of common features). Also, the last time I tried to refactor my code by wrapping the ListItem into an application-specific component, this ended up in tears as, apparently, the ListItems want to stay as a direct child of their parent List.
You certainly use specific patterns for your wrapping to work... do you have a description of that, like a blog post or equivalent? Or maybe a github project putting that into practice?

For something like ListItem, I will return the component directly but override some props.  It still allows me to make global changes - or replace the component altogether - from the one place.  I don't use List/ListItem because of the terribly poor performance, but as an example this is my Modal component that I use as a wrapper for Dialog.  It's a bit messy, but it may answer your question.
export default class MyModal extends Component {
  static propTypes = {
    show: PropTypes.bool
  };

  render() {
    const {closeAction, closeText, submitAction, submitText, show, children, style, hideHeader, hideFooter, width, requireCloseButton, bodyStyle, contentStyle, ...props} = this.props;
    var actions = [];
    if (closeAction) {
      actions.push(
        <Button label={closeText || (submitAction ? 'Cancel' : 'Close')} secondary={true} onTouchTap={closeAction} />
      );
    }
    if (submitAction) {
      actions.push(
        <Button label={submitText || 'Submit'} primary={true} keyboardFocused={true} onTouchTap={submitAction} type='submit'/>
      );
    }
    if (props.actions) {
      actions = props.actions;
    }
    var newContentStyle = {
      width:'unset',
      maxHeight: 'calc(100% - 100px)',
      maxWidth:'calc(100% - 100px)',
      position: 'fixed',
      top: '50%',
      left: '50%',
      transform: 'translate(-50%, -50%)',
      overflowY:'hidden'
    };
    Object.assign(newContentStyle, contentStyle);
    var newBodyStyle = {
      padding:'24px',
      paddingTop:'24px',
      paddingBottom:'24px',
      overflowY:'auto',
      overflowX:'hidden',
      overflow:'auto'
    };
    var height = 120;
    if (props.title) {
      height += 56;
    }
    if (!hideFooter && actions) {
      height += 66;
    }
    newBodyStyle.maxHeight = 'calc(100vh - ' + height + 'px)';
    Object.assign(newBodyStyle, bodyStyle);

    var actionsContainerStyle = {
      boxSizing: 'border-box',
      WebkitTapHighlightColor: 'rgba(0,0,0,0)',
      padding: '8px',
      marginBottom: '8px',
      width: '100%',
      textAlign: 'right',
      marginTop:'0px',
      border:'none',
      position:'relative'
    };
    if (hideFooter || !actions) {
      actionsContainerStyle.display = 'none';
    }
    var titleStyle = {
      margin:'0px', marginBottom:'0px', padding:'24px 24px 0px 24px', color:'#212121', fontSize:'24px', lineHeight:'32px', fontWeight:'400', border:'none'
    };
    var rootStyle = {
      display: 'flex',
      alignItems: 'center',
      justifyContent: 'center',
      paddingTop: '0px'
    };
    Object.assign(rootStyle, style);
    if (width) {
      newContentStyle.width = props.width;
      newContentStyle.maxWidth = props.width;
    }
    if (props.contentStyle) {
      Object.assign(contentStyle, props.contentStyle);
    }
    return (
      <Dialog ref='myDialog' open={show || props.open || false} onRequestClose={requireCloseButton ? function(){} : closeAction}
              contentStyle={newContentStyle} bodyStyle={newBodyStyle} actionsContainerStyle={actionsContainerStyle} titleStyle={titleStyle} style={rootStyle}
              actions={!hideFooter && actions}  autoScrollBodyContent={false} autoDetectWindowHeight={false} repositionOnUpdate={false} {...props}>
        {children}
      </Dialog>
    );
  }
};

@mbrookes or @nathanmarks Can you please reopen this issue (see May 14th comment) ? Or do you prefer to create a new issue and leave this one closed?
Thanks.

Here the bug :

@rande What version of Material-UI is that with?

@mbrookes the version is<EMAIL_ADDRESS>This is the computed css when image is correctly rendered:
background: transparent url("https://getcomposer.org/img/logo-composer-transparent.png") repeat scroll 0% 0% / 40px auto border-box;

This is the computed css when image is broken:
background: transparent url("https://getcomposer.org/img/logo-composer-transparent.png") repeat scroll 0% 0%;

Looks like the ratio is not computed after a change. Also this problem does not occur with a svg file.

@rande Could you test with 0.15.1?

@mbrookes look ok for image now. However the default color for background is now rgb(188, 188, 188).

fixed by adding backgroundColor="rgba(0, 0, 0, 0);" to the Avatar.

@mbrookes thanks for your quick response ;)

When I copy and paste the following code, this is the result I get:
<Avatar src="https://www.fillmurray.com/200/300" size={100} backgroundColor="rgba(0,0,0,0)" style={{border: 0}} />

Is there a way to "crop" non-square pictures? I want them to fit in the circle, not to stretch

It would be object-fit if microsoft weren't dragging their heels: http://caniuse.com/#search=object-fit

@mbrookes that doesn't seem to work


Add gitsigns recommended keymaps as an optional plugin

Add gitsigns recommended keymaps as an optional plugin
Compared to previous PR: https://github.com/nvim-lua/kickstart.nvim/pull/740 this also updates the code to match the latest example in gitsigns README:

changed gs to gitsigns
changed the navigation to the new nav_hunk() api

Note, the which-key leader keys are still inside the main init.lua, hope that's fine, if not that can also be moved.

Well done and thank you! Great to make this functionality available to folks!


FIX[!PR]

As Apollo is evolving, the ApolloClient require to add the Cache arguments and pass a HttpLink rather than a createBatchingNetworkInterface.

Thanks for your PR, but there is already a next branch.


refactor(loadsave): simplify interface

this PR simplifies the loadsave abstraction to remove state like encryption and mode. those are now injected through a pipeline factory. It also handles more explicitly the cases where a readonly loadsaver is needed, so that readonly operations on manifest can happen. this is now possible by requesting explicitly a read-only loadsaver.
also adds missing unit test coverage and documentation.

This change is

should be ok now. the tag pointer on context propagation is biting back. this needs to be tackled as part of technical debt


Place comments on the columns rather in source.

It will help others to understand easily.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.9 out of 10 committers have signed the CLA.:white_check_mark: YaelRiv:white_check_mark: arielshaqed:white_check_mark: tzahij:white_check_mark: nopcoder:white_check_mark: ozkatz:white_check_mark: sourhub226:white_check_mark: itaiad200:white_check_mark: johnnyaug:white_check_mark: kzuri:x: jengjengYou have signed the CLA already but the status is still pending? Let us recheck it.

Codecov Report

:exclamation: No coverage uploaded for pull request base (YaelRiv-patch-1@969cc0a). Click here to learn what that means.
The diff coverage is n/a.

@@                Coverage Diff                 @@
##             YaelRiv-patch-1     #699   +/-   ##
==================================================
  Coverage                   ?   41.07%
==================================================
  Files                      ?      129
  Lines                      ?    10044
  Branches                   ?        0
==================================================
  Hits                       ?     4126
  Misses                     ?     5380
  Partials                   ?      538

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 969cc0a...c469192. Read the comment docs.

Hi @medemayur-maker , I cannot find what changes you made.  the PR is orobably between the wrong pair of branches.  I'll go ahead and close it.  Please do open a new PR, but make sure to put your branch in your repository so that it includes the changes which you made.
Thanks!


Renovate git dependencies

Example: gulpjs/gulp.git#4.0
gulp 4 is not release to npm, even as a "future" or prerelease, so this is pointing to a branch in the repo: https://github.com/gulpjs/gulp/tree/4.0
Could we:

Detect new tags/branches within a repo (e.g. 4.0.0, 4.0.1, 4.1, etc)?
Detect when gulp 4.0 is released to npm and raise a PR for that?

I'm not sure the first is feasible, but the second would be desirable.
We could try this approach:

If a git reference is used, then get the package's package.json off github to look up its npm package
check if package name in that package.json matches the name in user's package.json (exit if not - it's probably a fork or something)
get the package from npm and make sure that the repository matches (if not, it's probably a fork)
see if there are any matching releases on npm
we need a new classification - it would not pinning or upgrading, it would be..  "converting" dependency gulp from github to npm

I wonder how common this type of setup is though? e.g. how often does a repo:
(1) not publish a pre-release
(2) name a work-in-progress branch with a valid semver

Detect when gulp 4.0 is released to npm and raise a PR for that?

This would, as you said, be a really desirable feature. I'm not sure, though, how you would know whether the transition from repo URL reference to npm reference is desired on the part of the renovated repository owner? Would such a PR against my repository be unwanted?
Why I would want such a feature is for the following reasons:

Pulling packages from an npm-compatible registry is considered best practice. Projects move around on GitHub/GitLab all the time. However, a project's name on an npm-compatible registry is static. It will never be moved, and probably never unpublished. While I currently encourage a lot of developers to use version 4 of GulpJS from GitHub, the instant version 4 is available on the npm registry, I plan on encouraging everyone to switch over.
Once version 4 is available on the npm registry, I don't see the Gulp maintainers continuing the 4 branch on GitHub (they actually deleted the semver branch for the gulp-cli version that supports Gulp 4 after they published that version of gulp-cli to npm). Therefore, converting package references is a way of maintaining continuity for consumers, and helping to align them with a project maintainer's current practice.

I wonder how common this type of setup is though?

Well, semver support for GitHub is now a first-class feature in npm version 5.
npm 5 release notes (user/repo#semver:^1.2.3) - http://blog.npmjs.org/post/161081169345/v500
So npm developed a feature to make it easier to use git repositories directly. That seems to anticipate a large desire to use branches on platforms like GitHub and GitLab.

Well, semver support for GitHub is now a first-class feature in npm version 5

Seems like this issue then has at least two parts:

Support git semver ranges starting with GitHub
"Porting" git URL dependencies back to npm

This second one is definitely "tricky" though:

How to match to npm
How to determine if there's a version on npm worth moving to

A common use case I've seen for GitHub URLs is that someone forks a package's repository, fixes a problem themselves - or perhaps hacks a feature - and then depends on #master of their own fork. In such cases I don't think there's anything renovate can do except warn the user that we're not watching/upgrading that. More generally, I think that if the repository they are depending on is not the same repository as l listed in the corresponding npm package's metadata (i.e. in package>repository>url) then we have to ignore. Perhaps though we still check if that tag exists on the repository and warn if it doesn't?
Then we're back to the case where someone is depending on a tag on the actual repository of the dependency, such as this gulp case. I can think of at least three ways this might be done:

Explicit semver ranges, e.g. instead of gulpjs/gulp.git#4.0 it might be gulpjs/gulp.git#semver:4.0
Pointing to a branch/tag that happens to also look like a version, e.g. gulpjs/gulp.git#4.0
Other (e.g. #master, #next, #fix/foo

I can't see any way to renovate (3). (1) can definitely be renovated, e.g. to branch 4.1 if it gets created. Then, can (1) or (2) be intelligently "ported" back to npm? Is it enough to check:

Is this the proper repository of the package of the same name?
Are there any versions on npm matching the git tag being used currently?

I think that if the repository they are depending on is not the same repository as l listed in the corresponding npm package's metadata (i.e. in package>repository>url) then we have to ignore

Agreed.
For (2), I would just treat it as a pinned dependency, and when converting it to npm, just match it against a specific version.
I think, given that, your two bullet points are sufficient to make to convert a git repository reference to an npm package registry reference.

I have a use case for this, for a repo we decided to depend on it raw from git because we just want the source. It would be great if Renovate was able to simply increase the commit hash specified after # to the latest HEAD of the default branch of the repository when new commits are pushed.

@felixfbecker can you copy/paste what the exact reference looks like in your package.json?

Yep:
  "dependencies": {
    "@sourcegraph/webapp": "sourcegraph/sourcegraph#a0bb5545dec1faab7e7df35b58a375522b66c1a0"
  },

where the repo is github.com/sourcegraph/sourcegraph (private) and the commit hash is a0bb5545dec1faab7e7df35b58a375522b66c1a0

I’ve been experimenting with this today and already have this particular use case working actually. Just need a little time to round off the edge cases and add tests. Expect it to be live in the app early next week.

Unfortunately I need to take that back a little. GitHub authentication for private repositories is a whole other matter which would need to be worked out after in #817. We can update the lockfile but if npm install doesn't have credentials then the lock file part will fail. Seems npm only supports either (a) explicitly adding username/password into the package.json or (b) falling back to system git credentials. I will look into that afterwards.

What authentication does Renovate have through the GitHub app?
I could also supply a GitHub token in Renovate config.
You can use a GitHub token in a GitHub git clone URL, and you could maybe write that to ~/.ssh/config.
But we’re also gonna open source that particular repo soon so if that already works that’s great.

It's documented a little in #817. To npm install a private GitHub repo you need either an SSH key that's been authorised to the private repo being installed, or you need a full username:password exposed in the package.json to authenticate over HTTPS. As far as I'm aware, there's no way to take an app's token (specific for an installation only, valid for one hour) and use that for SSH authentication, so the only option is a username:password in the package.json definition. I'm thinking whether I can do a search/replace before and after lock file update to temporarily add the bot's token to the package.json before then removing it again after from it and the lock file.

Yes, I was definitely meaning token but wrote username:password instead. I am doing some experimenting now with tokens and substitution.


Precomputed blocks dumped to file and/or logs

This PR adds support for s-expression-encoded precomputed blocks, written to file or to the log depending on startup flags.
Still TODO:

generate a sample block and use it to test serialization consistency

This needs to happen before this can be merged Done.

GraphQL+CLI support for enabling/disabling/changing the block file and whether they are included in the logs

This is simple and does not need to happen before this can be merged

Checklist:

[ ] Document code purpose, how to use it

Mention expected invariants, implicit constraints

[ ] Tests were added for the new behavior

Document test purpose, significance of failures
Test names should reflect their purpose

[ ] All tests pass (CI will check this if you didn't)
[ ] Serialized types are in stable-versioned modules
[ ] Does this close issues? List them:

Some sample blocks.

JSON mixed with s-exp sounds even harder to read than just one or the other, and neither of these seem like the proper format for this. If there is a 1-1 mapping between a block and it's s-exp then don't complicate it with non-deterministic json formatting on top

JSON mixed with s-exp sounds even harder to read than just one or the other

It was harder to do as well, I switched to a representation in pure JSON. (S-exps are still supported for reading, we can support writing them later if it turns out we want it.)

neither of these seem like the proper format for this.

We've committed to it now :man_shrugging:

Is it or can it be minified json? Adding some rules around ordering and formatting will make it more likely that two logs of the same blocks by different nodes are truly identical

[blocks-cli-json.txt](Sample blocks in the json format)

Is it or can it be minified json?

It is, the attached sample file should be representative of the output.

Updated to replace the internal_command_statuses field with internal_command_balances in an easier-to-use, more concise format. Sample here. (Relevant discussion in #7084.)


Uploading jpg image with '' in file name say it's not a supported file type

I tried uploading an image named "3.jpg" via drag and drop using Chrome v46 on Debian 8/Gnome 3.14.1 and I got the unsupported image type message:

The image type you uploaded is not supported. Please use .PNG, .JPG, .GIF, .SVG.

The server itself I believe is Ghost 0.7.5 on Ubuntu 14.04 (month old DitigalOcean droplet without modification).

Hi @Tyriar,
Thanks for your report. I am able to reproduce the issue and will look into a solution. I would however advise against using filenames with '' in them as this character is not valid in the path segment of a URL. The solution will probably involve catching this early and providing a better error message. An alternative would be to replace invalid characters after upload.

What's interesting is that while the browser correctly sends the filename "nora.jpg" it ends up getting passed to the upload.add api as:
{"uploadimage":{"type":"image/jpeg","encoding":"7bit","name":".jpg","path":"/var/folders/y4/kz59xtt17wdg1tx63l1hpn7r0000gn/T/145276163720625b2916b5c49db617f52fa5ea48efee7"},"context":{"user":1}}

I tracked this down to be caused by busboy: https://github.com/mscdex/busboy/blob/master/lib/types/multipart.js#L160-L161 and https://github.com/mscdex/busboy/blob/master/lib/utils.js#L180-L185
The above lines treat the filename as a windows path nor followed by a path separator and a file with the name .jpg. Since busboy is only giving us the filename and not the "path" we don't have an easy way to check for invalid characters (like path separators).

So the right fix might be for busboy to sanitize file names based on the OS so they work for all OS'?

We switched to using multer ages ago, however this still happens.
As halfdan explained, we never get the real filename passed to us - just .jpg in this case, and then path.extname here: https://github.com/TryGhost/Ghost/blob/7eb316b7865d658021ce7065eb3b5de1a7d04472/core/server/api/utils.js#L313-L313 returns an empty string, causing the validation to fail.
This bug has been open for over a year, and as far as I'm aware no one else has run into it. I think this is a pretty extreme edgecase, enough that neither busboy nor multer have proper handling.
If someone wants to submit a fix that would be great, however I don't think this bug is serious enough to warrant keeping the bug report open any longer, particularly given that the issue needs to be resolved inside of busboy & multer.


Assessments should be numbered

One comment was that the assessments should be numbered, for example (very rough example):

If this is implemented, it needs to integrate with issues #10 and #11

implemented


soroban-rpc: Transaction simulation should assist in determining state expiration.

What problem does your feature solve?
It can be hard (and slow) to determine when and what to restore when a transaction simulation fails due to expired ledger entries.
What would you like to see?
An amendment to the simulateTransaction response schema:
+  expiredEntries: string[];
+  restorationFootprint: string;

which would be:

a list of base64-encoded xdr.LedgerKey instances corresponding to entries that the system knows have expired at the time of the simulation
a base64-encoded xdr.SorobanTransactionData instance that would correspond to a restoreFootprintOp transaction's sorobanData field (fee info, etc.), so that the client can immediately submit a restoration transaction (without running a sim)

What alternatives are there?
I don't think there is one. IF (and this is a big "if") you have the relevant xdr.LedgerKey[]s already, you can

call getLedgerEntries to acquire the xdr.LedgerEntry[]s that have expired
you then parse+compare that response to determine which restoreFootprintOps are needed

However, this is problematic for several reasons:

there is extra latency due to the additional request+processing
that extra latency can introduce edge cases in ledger expiration timing
you still need the keys, which is not feasible without, I dunno, storing all of your tx envelopes client-side

I am not sure we can implement this without changes to the soroban-env-host library.
Let me explain. Host function preflighting works by trying to execute a host function (through  the soroban-env-host library) and recording what ledger entries have been accessed.
When a host function executes, it needs to access ledger entries. To do so, soroban-rpc plugs its ledger storage into soroban-env-host.
Although soroban-rpc stores all ledger entries (expired or not) it hides expired ledger entries during host function execution to simulate what really would happen when the preflighted transaction is submitted.
Thus, in the eyes of soroban-env-host when the host function tries to access an expired entry, it will simply think it's missing. Leading to missing entry errors.
Now, what we could maybe do is stop hiding expired entries to soroban-env-host  and somehow figure out whether the computed ledger-footprint contains expired entries after executing the host function.
However, I don't know if that would be safe or whether it would work:

Does the Host check the ledger entry expirations? (if this is the case, then it doesn't matter whether we hide expired or not)
Can we safely tell which entries would had required restoring? It's obvious that any expired entry in the readonly footprint would require expiring. But how about the readwrite footprint? Maybe the contract could had written fresh entry with the same key without requiring an explicit restore.

MVP: at least finding one ledger key that has expired at a time
You would need to resubmit to find other expired ledger entries in the set.

This should certainly be possible, provided that soroban-env-host  gives us an identifiable error from which we can extract which ledger entry is missing.
I don't think we have that today, do we @dmkozh ?

I think it’s going to be feasible, since contracts can’t know whether a persistent entry expired or not.

My general comment on this would be that host operates on a valid snapshot of ledger and produces a set of changes to it. One of the criteria for being 'valid' is that none of the entries have expired. That means that snapshot provider can inject whatever logic feasible. Core fails transaction when an expired entry is encountered, and preflight snapshot provider can just 'recover' the expired entry automatically and take a note of that. As long as host sees valid ledger entries in the snapshot, everything should work just fine. This will also allow collecting all the expired entries on the code path, as long as they're accessible in some way in the preflight snapshot.

@dmkozh so, if I understand you correctly, you're suggesting the following:

The soroban-rpc would treat all entries as "live" entries.
Throughout the simulation, the soroban-rpc would "record" the entries that have been accessed but are expired.
It would return to the caller a list of these keys.

There are two possible issues that I'm seeing with this approach:

If the entry was deleted from soroban-rpc, and is available only on ESS, that won't work.
If a smart contract would "test" the existence of another ledger entry ( i.e. read-only ), the output of the simulate would be as if it's required.  example for that would be a contract that has no data, and would create it's own data after the first/second invocation.

The soroban-rpc would treat all entries as "live" entries.

To be clear, 'treat as live' means 'update the expiration ledger to be live before returning the value to host from the callback'.

If the entry was deleted from soroban-rpc, and is available only on ESS, that won't work.

Sure, we obviously can't use an entry that isn't stored by soroban-rpc. This can only be a best-effort feature, depending on the eviction policy of soroban-rpc db. For the evicted entries core will store a bloom filter, probably soroban-rpc would need to do the same.

If a smart contract would "test" the existence of another ledger entry ( i.e. read-only ), the output of the simulate would be as if it's required. example for that would be a contract that has no data, and would create it's own data after the first/second invocation.

Not sure I understand. Any ledger access (even a simple has check) has to be reflected in the snapshot. Again, from the host/contract standpoint there are no expired entries, there are only entries that exist or don't exist (as specified by the snapshot provider). It's the responsibility of core/soroban-rpc to provide the correct information. So if no expired entries are involved, then everything will work just fine. If there are expired entries, then core/soroban-rpc need to take a corresponding action.

I think that the tldr of what you're describing above is that the soroban-rpc can only provide feedback on accessed expired entries. It is for the caller of the simulateTransaction to understand the meaning behind the contract, since:

A contract can fail due to a missing ledger entry; but it can also fail due to an existence of a ledger entry.
A contract can succeed regardless of the existence of a missing ledger entry.
The error returned by a contract doesn't indicate whether a required entry was missing.
The number of missing entries is undefined, as contract can change it's behavior per the existence of an entry.

Proving a "hint" on expired ledger entries is not very definitive. There might be no better option though.

I think you're confusing the terms here. 'Missing' entry is an entry for which we can say 'this entry does not exist in the ledger'. Contracts indeed might have different behavior depending on entries being missing or present - but this has nothing to do with expiration. Expired entries are not missing entries and they shouldn't in any way affect the contract logic.
I think returning as many expired ledger entries as possible is good enough (and I'm not sure if there are better options even in theory).

Could we list some terminology here to clarify the discussion?

"missing" == never existed on chain, or was explicitly deleted. has(key) -> false
"expired" == past it's TTL, but still in-memory in core + rpc. has(key) -> exception

Should be indistinguishable from an evicted entry, afaik.

"evicted" == only in ESS. has(key) -> exception

I don't think it's generally possible to return more than one expired/evicted LedgerKey from a single simulateTransaction. My assumption is that the contract is loading the LedgerEntry in order to read the data and make some decision based on that data. So, continuing contract execution past an evicted entry load is not really possible (since rpc won't have the data). We can show the data for expired entries and continue execution, but I'm not really convinced that is a good idea because it makes a weird distinction between expired/evicted that isn't relevant for the client (afaik).

"expired" and "evicted" is the same thing semantically and ideally we shouldn't distinguish between these. Otherwise, this looks correct.
FWIW evictions shouldn't necessarily correlate between bucket list and soroban-rpc DB and might have different eviction schedules and rules. The only requirement is that both should maintain some index of evicted keys (when there are evictions).
I still think it's better to provide 'best-effort' service for returning as many expired keys as possible. I would also expect this 'best effort' to work really well most of the time, because it's much more likely that a user hits a recently expired entry and not something that has been expired for, say, more than a year. I don't think it's too confusing - we can just say 'these keys have definitely expired, but there might be more', which is a general caveat about using preflight (it never can guarantee that exactly the same thing will happen on-chain).

"expired" and "evicted" is the same thing semantically and ideally we shouldn't distinguish between these. Otherwise, this looks correct.

From a user-perspective, I agree. But I think it might be causing some confusion for us in this discussion right now, so wanted to highlight the difference for clarity.

I still think it's better to provide 'best-effort' service for returning as many expired keys as possible. I would also expect this 'best effort' to work really well most of the time,

Yeah, as long as we're clear it's "best-effort" that seems fine. My expectation is that it wouldn't really do much most of the time, because entries would either be "live" and frequently access, or very expired, and almost never accessed. But that's just a guess!

because entries would either be "live" and frequently access, or very expired, and almost never accessed

These 'never accessed' entries don't have a high chance to occur in preflight as well. This is mostly for the newer deployments that weren't bumped for whatever reason - expiration proved to be a big problem on futurenet and I would expect the same on mainnet.


An example that creates ColliderDesc from THREE.js mesh

Hi, it should be good to have an example that creates a ColliderDesc.trimesh from a THREE.js mesh. It will make it easier for those who want to apply rapier.js to an existing three.js project.
Here is my try, but it's not easy to know whether it's correct or not since I can't visualize the trimesh.
let vertices = threeMesh.geometry.getAttribute('position');
let indices = threeMesh.geometry.index;
if (indices == null) {
    // unindexed bufferedgeometry
    indices = [...Array(vertices.count).keys()]
}
let colliderDesc = RAPIER.ColliderDesc.trimesh(vertices, indices);

lib will soon has some APIs to provide raw geometry data as lines. so that you can draw these lines in your rendering engine to visualize easily.
the data from THREE usually wont match with the physics mesh because usually physic mesh will be much simpler then the actually game world geometry. so, better draw physics world with the data from physics world but not from your THREE world.

Not sure if this would be a right place to ask, if RAPIER.ColliderDesc.trimesh(vertices, indices) is fully implemented or this is still on the roadmap? I tried load a simple model 3D of the cube:

import('@dimforge/rapier3d').then(rapierModule => {

    setupScene()

    RAPIER = rapierModule;
    console.log("initRapier()");

    let gravity = { x: 0.0, y: -2.1, z: 0.0 };
    let world = new RAPIER.World(gravity);
    const eventQueue = new RAPIER.EventQueue(true);

    // Load the 3D model using Three.js's GLTFLoader
    const loader = new GLTFLoader();

    loader.load('models/floor1.glb', function (gltf) {

      scene.add(gltf.scene)

      const model = gltf.scene.children[0].geometry;

          // Ensure vertices and indices are correctly defined and formatted
          const vertices = new Float32Array(model.attributes.position.array);

          let indices;
          if (model.index) {
              indices = new Uint32Array(model.index.array);
          } else {
              // Handle unindexed geometry by generating indices
              indices = new Uint32Array([...Array(vertices.length / 3).keys()]);
          }

          console.log('Vertices:', vertices);
          console.log('Indices:', indices);

        try {
            const trimesh = new RAPIER.TriMesh(vertices, indices);
            console.log('TriMesh created successfully', trimesh);

            const isValid = validateMapping(trimesh.vertices, trimesh.indices);
            console.log("isValid",isValid)

            console.log('Vertices length:', vertices.length);
            console.log('Indices length:', indices.length);

            let groundColliderDesc = RAPIER.ColliderDesc.trimesh(trimesh)
            //     // .setTranslation(0, groundHeight, 0)
            //     // .setActiveEvents(RAPIER.ActiveEvents.COLLISION_EVENTS);

            let groundCollider = world.createCollider(groundColliderDesc);

            init()

            window.groundColliderHandle = groundCollider.handle;
            window.myRapierWorld = world;
            window.eventQueue = eventQueue;

        } catch (error) {
            console.error('Failed to create TriMesh:', error);
        }
    });
});

got this errors:

Any clue?