Leak within Vertices

Vertices, when used for dynamic batching such as particles, etc, that regenerate every frame eventually leads to a crash.
Reproduction:
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'dart:typed_data';
import 'dart:ui' as ui;

void main() { runApp(App()); }

class App extends StatelessWidget
{
  @override Widget build(BuildContext context)
  {
    return MaterialApp(
      home: View(),
      showPerformanceOverlay: true,
      title: 'vertices'
    );
  }
}

class View extends StatefulWidget { @override ViewState createState() { return ViewState(); } }

class ViewState extends State<View> with TickerProviderStateMixin
{
  final ViewPainter _painter = ViewPainter();
  Ticker _ticker;

  @override void initState()
  {
    super.initState();
    _ticker = createTicker(_painter.update);
    _ticker.start();
  }

  @override void dispose()
  {
    _ticker.stop();
    _ticker.dispose();
    super.dispose();
  }

  @override Widget build(BuildContext context)
  {
    return CustomPaint(
      isComplex: false,
      painter: _painter,
      willChange: true
    );
  }
}

class ViewPainter extends ChangeNotifier implements CustomPainter
{
  static const int uint16max = 65535;
  static const double verticesMB = 1.44177;

  final Int32List colors = Int32List(uint16max);
  final Float32List coords = Float32List(uint16max * 2);
  final Uint16List indices = Uint16List(uint16max);
  final Float32List positions = Float32List(uint16max * 2);

  double memory = 0.0;
  List<ui.Vertices> vertices = [];

  ViewPainter()
  {
    colors[0] = Colors.red.value;
    colors[1] = Colors.green.value;
    colors[2] = Colors.blue.value;
    colors[3] = Colors.yellow.value;
    indices[1] = indices[3] = 1;
    indices[2] = indices[5] = 3;
    indices[4] = 2;
    positions[2] = positions[4] = positions[5] = positions[7] = 250.0;
  }

  void update(Duration timeStamp)
  {
    vertices.clear();
    for(int v = 0; v < 3; v++)
    {
      vertices.add(ui.Vertices.raw(ui.VertexMode.triangles, positions, textureCoordinates: coords, colors: colors, indices: indices));
      memory += verticesMB;
    }
    debugPrint('total vert memory allocated: ' + memory.toStringAsFixed(1));
    notifyListeners();
  }

  void paint(ui.Canvas canvas, ui.Size size)
  {
    canvas.drawColor(Colors.white, BlendMode.srcOver);
    for(int v = 0; v < vertices.length; v++)
      canvas.drawVertices(vertices[v], BlendMode.srcOver, Paint());
  }

  @override bool hitTest(Offset position) { return true; }
  @override bool shouldRebuildSemantics(CustomPainter previous) { return false; }
  @override bool shouldRepaint(CustomPainter previous) { return true; }
  @override get semanticsBuilder { return null; }
}

I have not had a chance to verify this through a local engine, but is it possible this line:
sk_sp<SkVertices> vertices_;
should be:
flutter::SkiaGPUObject<SkVertices> vertices_;
so that it gets added to the unref queue?
Doctor:
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel master, v1.18.1-pre.11, on Microsoft Windows [Version 10.0.18362.720], locale en-US)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[√] Android Studio (version 3.6)
[√] VS Code, 64-bit edition (version 1.44.0)
[√] Connected device (1 available)

• No issues found!

C:\Users\User>flutter doctor -v
[√] Flutter (Channel master, v1.18.1-pre.11, on Microsoft Windows [Version 10.0.18362.720], locale en-US)
    • Flutter version 1.18.1-pre.11 at C:\flutter
    • Framework revision 2ce36f6199 (7 days ago), 2020-04-07 12:26:02 -0700
    • Engine revision 47f17a9ec3
    • Dart version 2.8.0 (build 2.8.0-dev.20.0 275a76f2fc)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at C:\Users\User\AppData\Local\Android\sdk
    • Platform android-29, build-tools 28.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)
    • All Android licenses accepted.

[√] Android Studio (version 3.6)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 45.0.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)

[√] VS Code, 64-bit edition (version 1.44.0)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 3.9.1

[√] Connected device (1 available)
    • SM J727P • 20c0f2a5 • android-arm64 • Android 8.1.0 (API 27)

• No issues found!

What is interesting is this receives OOM on android test device, but does not OOM on iphone test device, even after a long while. It does hiccup during collections though on iphone. I'm trying now to add dispose to Vertices in a local engine to see if providing an eager disposal will alleviate these larger collections and also prevent OOM on android. Example updated in original post to reach OOM faster. A full Vertices object is around 1.4mb so it makes sense to have a dispose method.

Adding a dispose to eagerly clear the dart wrapper failed to prevent OOM crashes on my android test device. Switching Vertices to use the unref queue seems more involved and non-trivial, and better suited for the engine authors. I think this is worth solving though and determining why vertices are not fully disposed of on android devices but are properly disposed on iOS. The reproducible in the original post should crash an android device after a minute or so.

@dnfield  - this may be related to https://github.com/flutter/flutter/issues/58438

Probably different from that issue - that issue is about trying to get the GC to be more aggressive when collecting picture objects.  I can take a quick look at this.  Strange that it would be Android only though.

I'm also not clear on why this would need to be using the unref queue - that's more about making sure the right thread is disposing things rather than making sure that the object is released.

Ah makes sense, I wasn't (and still not) super familiar with how the unref queue worked, I had just noticed that SkImages were added to the queue but not SkVertices. But your right, if they never move between threads then its probably unrelated to the queue. It was very odd that only Android was affected, but I wasn't able to determine anything that would cause that deviation.

I think this might be because we're not overriding GetApproximateSize in Vetices, so the GC thinks it's tiny when it's not.
We have a slight problem here in that we have to report the size before we actually know it, but Dart is adding some new API to help make that better so we can fix it.

On an iPhone, I'm seeing very large memory spikes, but it's under the threshhold of OOM killing the app - although on an old enough iPhone it would OOM.

Interesting, so it's eventually being collected and is not a leak, and the discrepancy is that the collection can occur before the iPhone OOMs but that collection doesn't occur before my Android OOMs. What I observed though is I really tried to get the iPhone to crash, I goosed the allocation count higher, much higher just to see if I could but it didn't OOM in my tests. Just struggled with collections.

I have something that's fixing this locally, going to work on getting a test for it.

I'm seeing memory hit 1.5gb occasionally on an iPhone 11. It would have to get up to around 2gb before it got killed.

Excellent, thanks for looking into this!

Going forward, the right way to do this will be to call vertices.dispose.


Bug: Multiple styles on the same text doesn't result in nested html tags

I was playing with your rich-text-editor example and I noticed that having multiple styles on the same text doesn't result in nested html tags, instead, it just keeps the first html tag and only updates its classes. For example, let's say I make the text "hello" bold, this is the result:
hello

Now I make the same text "italic":
hello

I expected:
hello

I'm not sure if this is the expected behavior or a bug. But I think in this situation most people expect em and strong tags to be nested.

This is a good question - there's a difference between italic styling and semantic emphasis:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/em#usage_notes
Currently, our implementation is taking the opinion that italic is a style and doesn't automatically convey emphasis. It's questionable whether or not this is the correct way to go about it.

Well, this is the first line of the MDN blog you linked:
The  HTML element marks text that **has stress emphasis**.

So based on that I think your implementation is wrong.
To be honest, in my case, I don't really care about the semantic meaning of em and strong tags. I use tailwindcss and its typography plugin to style my app. The typography plugin adds a set of default styles for html tags, including em and strong. I cloned your rich text editor example, added tailwindcss to it, and started playing with it. Then I noticed I can't have bold and italic styles at the same time and it took me a couple of minutes to figure out why.
I understand that this is not something that happens all the time, but my point is the current implementation makes it harder to add global styles because we can't make sure that italic texts always are inside the em tag.

This is the part that caught my attention:

Typically this element is displayed in italic type. However, it should not be used to apply italic styling;

I don't disagree with your general point - just adding something for us (the team) to consider. We definitely want to make sure we are making things easy for users of popular libraries like Tailwinds. As a library that prioritizes accessibility, we just need to think about changes we make around semantics. Looking back over this, though, I think that adding em tags
(in addition to the class) is most likely the right thing to do here.

Ok, thanks for replying. I'll close this issue.

I found this behavior really confusing. If an user wants to a text to be bold and italic Lexical should do this?!! Am I wrong?
Anyway, I created a CustomTextNode which might be of use for some people. I creates clean HTML like this:

Bold

Italic

Bold, italic

Bold, italic, underlined

Underlined

Bold, underlined

Italic, underlined

<s>Strikethrough</s>

import { TextNode, $createTextNode, isHTMLElement } from 'lexical';
import invariant from '../shared/invariant';

const MAPPING = {
	bold: 'strong',
	italic: 'em',
	strikethrough: 's',
	underline: 'u',
};

function applyFormatting(element, formatting) {

	//no formatting needed;
	if (Object.keys(formatting).every((key) => formatting[key] === false)) {
		return element;
	}

	//formatting is needed
	const text = element.innerText;
	const el = document.createElement('span'); //create temp span element
	el.innerText = text;

	const tagNames = Object.keys(formatting)
		.filter((key) => formatting[key])
		.map((key) => MAPPING[key]);

	const wrappedElement = tagNames.reduceRight((wrapped, tagName) => {
		const el = document.createElement(tagName);
		el.appendChild(wrapped);
		return el;
	}, el);

	el.replaceWith(...el.childNodes); //removes the temp span element

	return wrappedElement;
}

export class CustomTextNode extends TextNode {
	static getType() {
		return 'custom-text';
	}

	static clone(node) {
		return new CustomTextNode(node.__text);
	}

	static importJSON(serializedNode) {
		const node = $createTextNode(serializedNode.text);
		node.setFormat(serializedNode.format);
		node.setDetail(serializedNode.detail);
		node.setMode(serializedNode.mode);
		node.setStyle(serializedNode.style);
		return node;
	}

	exportJSON() {
		return {
			detail: this.getDetail(),
			format: this.getFormat(),
			mode: this.getMode(),
			style: this.getStyle(),
			text: this.getTextContent(),
			type: 'custom-text',
			version: 1,
		};
	}

	// This improves Lexical's basic text output in copy+paste plus
	// for headless mode where people might use Lexical to generate
	// HTML content and not have the ability to use CSS classes.
	exportDOM(editor) {
		let element = super.createDOM(editor._config, editor);

		invariant(
			element !== null && isHTMLElement(element),
			'Expected TextNode createDOM to always return a HTMLElement'
		);

		element.removeAttribute('class');

		const formatting = {
			bold: this.hasFormat('bold'),
			italic: this.hasFormat('italic'),
			strikethrough: this.hasFormat('strikethrough'),
			underline: this.hasFormat('underline'),
		};

		element = applyFormatting(element, formatting);

		return {
			element,
			after: (element) => {

				//remove those empty tags created by lexical
				if (element.tagName === 'SPAN' && element.attributes.length === 0) {
					return element.textContent;
				}

				return element;
			},
		};
	}
}

This is just quick and dirty. Might do a Typescript version when I got the time.

If a user wants text to be a combination of text styles (e.g. bold AND italic) Lexical should do this?!! Am I wrong?

Lexical already allows this, it's just implemented with styling instead of HTML tags for some formats.

Wrapping an em element in a strong element is not semantic and failed our internal accessibility audit some years ago.

@trueadm Are you sure? I cannot find anything related in the WHATWG HTML specification.
GitHub, Gmail, Stack Overflow, Wikipedia nests elements for instance. So I have just opened this issue: https://github.com/facebook/lexical/issues/5310


Showing the "Art" section of the manga

Where
In each manga in mangaDex website, there is a section called art,which shows various cover arts of the manta either with volume book cover or centerfold, etc.
Why/User Benefit
Its a feature I love about mangadex,my request might be niche, but mangadex put it there for a reason
Requirements
As you see fit to either adding an art button to the button raws under the manta info, or make it so its tabbed

2.10.0


Direct API tests cleanup

Some tidying up of test_direct_api.py:

removed * imports
remove monkey-patching by subclassing
added assertVectorAlmostEquals to compare Vectors and remove a bunch of .to_tuple()
simplified show_topology tests by refactoring the boilerplate

Hopefully the noise reduction can make adding more tests in the future a bit better.
Should the tests involving file io use temporary files instead of hardcoded filenames in the current directory?

Thank you for that!  Test cases tend to not get too much love so this is appreciated.

Should the tests involving file io use temporary files instead of hardcoded filenames in the current directory?

The tests run on three different OS's so messing around with temporary files seemed like unnecessary work.  However, I've done this before:
import tempfile

    temp_directory = tempfile.TemporaryDirectory()
    temp_directory_path = temp_directory.name
    original_directory_path = os.path.join(temp_directory_path, "original")

for a script that was creating patches and it worked on all three OSs.

Cleanest/safest you can go I believe is:
with tempfile.NamedTemporaryFile('w', suffix='.svg') as f:
    f.write('<svg><path d="M 0,1 L 2,3"/></svg>')
    f.flush()
    # `f.name` is the file path on disk

If you want I can refactor this way and throw it at the CI to see how bad that goes. Let me know and I can to it tomorrow.


Add website verification for Google Web Master Tools

A no-cost way to get some link stats

For someone like myself who has no idea what this is or does, mind providing some context please?

See https://support.google.com/webmasters/answer/35179?hl=en
This let's us tell webmaster tools that we own the site – so we can see search data, etc.

Thanks!

@kevmoo Do you mind syncing your own PRs?

I can if that's the process....

@leonsenft already merged this it seems...

Ah, yes, will be closed by https://github.com/dart-lang/angular/pull/1268.


deprecate /dev/sgx/ mounts

We keep the plugin backwards compatible with applications using the non-upstream /dev/sgx/* device nodes because those are still used by the SGX SDK: https://github.com/intel/intel-device-plugins-for-kubernetes/tree/main/cmd/sgx_plugin#backwards-compatibility-note
This issue is to notify that we'll drop these mounts as soon as the SGX SDK drops them.

This issue is to notify that we'll drop these mounts as soon as the SGX SDK drops them.

we have decided to not drop them just yet in our v0.24. #850 will be merged right after that release.


[ci] Consolidate Verible linting workflow into one stage

Problem
The current GitHub Actions (for Verible linting) have some dependencies on actions that use Node.js v12 (actions/checkout@v2 and<EMAIL_ADDRESS>which will be dropped on 2023-08-14.
These deprecated actions have newer versions that use Node.js 16, but github-script is a non-trivial update since our usage includes some actual Node.js code that needs porting.
Suggested fix
The docs for the Verible linter action have been updated to suggest using a single workflow, avoiding the need for github-script.
This PR updates to using this workflow, allowing us to update from deprecated dependencies.
We've been using this consolidated version of the linting workflow in lowRISC/opentitan for a couple of weeks (example). I believe the only issues we've seen were from an unrelated curl breakage.

It’s difficult to test here but the way we did it on OpenTitan was:

Merge the PR to my fork of the repo.
Have somebody open a PR on my fork with an intentional mistake.
Ensure the review comments are added.

I can sort this out next week.

@marnovandermaas here's a PR on my local fork showing this action running: https://github.com/jwnrt/ibex/pull/1

Looks like the merge queue failure is due to the Azure pipeline not being able to checkout the merged commit.
I'll try work out what's going on.

Rebased and tried again and it worked! Not sure what the actual issue was...


fix: dev: #188: Initialize ClusterManager only from BookKeeper module

Codecov Report

Merging #194 into master will increase coverage by 0.18%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master     #194      +/-   ##
==========================================
+ Coverage    21.9%   22.09%   +0.18%
==========================================
  Files          52       52
  Lines        2470     2449      -21
  Branches      257      247      -10
==========================================
  Hits          541      541
+ Misses       1892     1874      -18
+ Partials       37       34       -3

Impacted Files
Coverage Δ

...om/qubole/rubix/hadoop2/Hadoop2ClusterManager.java
68.57% <ø> (+7.59%)
:arrow_up:

.../qubole/rubix/hadoop2/Hadoop2ClusterManagerV2.java
58.82% <ø> (+11.45%)
:arrow_up:

...main/java/com/qubole/rubix/spi/ClusterManager.java
0% <ø> (ø)
:arrow_up:

.../com/qubole/rubix/presto/PrestoClusterManager.java
64.81% <ø> (+2.2%)
:arrow_up:

...m/qubole/rubix/core/utils/DummyClusterManager.java
0% <ø> (ø)
:arrow_up:

.../com/qubole/rubix/bookkeeper/BookKeeperServer.java
0% <0%> (ø)
:arrow_up:

.../com/qubole/rubix/bookkeeper/WorkerBookKeeper.java
0% <0%> (ø)
:arrow_up:

...com/qubole/rubix/hadoop2/CachingS3AFileSystem.java
0% <0%> (ø)
:arrow_up:

...qubole/rubix/presto/CachingPrestoS3FileSystem.java
0% <0%> (ø)
:arrow_up:

...n/java/com/qubole/rubix/bookkeeper/BookKeeper.java
0% <0%> (ø)
:arrow_up:

... and 9 more

@stagraqubole @amoghmargoor Can we review this one ?

Ping again for review.


Add many to many relations and Model services in SQL

Description
Add many to many relations and Model services in SQL
Questions

[ ] Question1

Status

[ ] Changelog updated
[ ] Ready to go

This pull request introduces 8 alerts and fixes 1 when merging ed2a2699674dae79277c08caf04639256e550a7b into 0a6fef463ee6d8706a78d558bc47bbc7831f3132 - view on LGTM.com
new alerts:

7 for Unused import
1 for Unused local variable

fixed alerts:

1 for Unused local variable

Comment posted by LGTM.com

This pull request introduces 8 alerts and fixes 1 when merging 391c3256b80cdf8981dabe10fc5673f31b5a1e9a into 0a6fef463ee6d8706a78d558bc47bbc7831f3132 - view on LGTM.com
new alerts:

7 for Unused import
1 for Unused local variable

fixed alerts:

1 for Unused local variable

Comment posted by LGTM.com

I miss QCArchiveBot... but the LGTM integration is better.

I patched up the name vs lname issues in the collections object. It is a bit odd here as the lname column is a database-only column used purely for quick lookup.
The remaining failure is that pulling a result under project returns an int index rather than string.
Getting close!

CI should pass, and then we should be ready to merge this!


Registry tool: can we simplify registry configuration in containers?

I've been trying various ways of running the registry tool in a container in a kubernetes cluster, and currently this seems the best way to configure the tool - I put this at the start of whatever script that I want to run:
# configure the registry tool to work with the service running in the cluster
registry config configurations create cluster \
	--registry.address=registry.default.svc.cluster.local:80 \
	--registry.insecure=true \
	--registry.location=global \
	--registry.project=myproject

It would be nice to be able to just run a container with kubectl run shell -ti --image IMAGE -- /bin/bash and have it open with an already-configured registry connection (basically automatically doing the above step). How might we do this? A container-around-a-container? A ConfigMap that pushes in .config/registry/active_config?

Running this in a dockerfile seems to work nicely:
# Configure the registry tool to run in a common cluster configuration.
RUN registry config configurations create cluster \
	--registry.address=registry.default.svc.cluster.local:80 \
	--registry.insecure=true \
	--registry.location=global \
	--registry.project=menagerie

Yes, that can work, but it would make the container statically configured. The easiest way to dynamically set config in K8s would be to just set env vars: https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container.

(Yes, we had hoped to get rid of the env vars for the CLI... but also running a CLI in a container in a K8s cluster seems a little odd...?)

...running a CLI in a container in a k8s cluster seems a little odd...

 I'd like to be able to run it in various ways as k8s jobs that either do a specific task (with a command-line passed in) or open a shell for exploring and trying the tools in the container. So in that sense, running the CLI makes sense to me. If I'm always using the CLI on the same project, I can just build my image so that it starts configured, which is handy, but maybe we want to keep/restore an environment-based override? For me this isn't urgent, but I expect it will come up for others.

You should be able to use env vars like "registry.address" etc. In fact, we're still binding the old APG_ variables: https://github.com/apigee/registry/blob/main/pkg/config/config.go#L200...  but those we'd still like to remove, I think?

Sorry, typo. Should be like: export registry_project=foo

That sounds great, but I haven't gotten it to work yet:
$ registry config list
registry.address = apiz.timbx.me:443
registry.insecure = false
registry.location = global
token-source = gcloud auth print-access-token

Your active configuration is: "home".
$ export registry_project=menagerie
$ registry get apis
Error: unsupported pattern apis
Usage:
  registry get PATTERN [flags]

Flags:
      --filter string   filter selected resources
  -h, --help            help for get
      --nested          include nested subresources in YAML output
  -o, --output string   output type (name|yaml|contents) (default "name")

Global Flags:
  -c, --config string              name of a configuration profile or path to config file
      --registry.address string    the server and port of the Registry API (eg. localhost:8080)
      --registry.insecure          if specified, client connects via http (not https)
      --registry.location string   the API Registry location
      --registry.project string    the API Registry project
      --registry.token string      the token to use for authorization to the API Registry

----
Need more help?
https://github.com/apigee/registry/wiki

Does it only work if there is no configuration present?

I apologize... I believe we have to use the APG_ prefix right now because of this: https://github.com/apigee/registry/blob/main/pkg/config/config.go#L280. So, only variables like APG_REGISTRY_ADDRESS can work until we remove that prefix.

Great, I added #1113 for visibility. That'll be worth a revision tag.
I assume that since this code is in pkg/config, every client that uses that will be affected (which would be great!).

@theganyo does endorsing REGISTRY_ADDRESS etc mean that we would stop warning about it being set when we run tests?

@theganyo does endorsing REGISTRY_ADDRESS etc mean that we would stop warning about it being set when we run tests?

Yes, I think so. We only emit warnings because we deprecated the APG_ env vars. If we have tests that would be broken by env vars, we should protect them appropriately.

The new environment variables are working great for me in a Helm chart that runs the controller:
apiVersion: batch/v1
kind: CronJob
metadata:
  name: controller
spec:
  schedule: "*/2 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: {{ .Chart.Name }}
            image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
            imagePullPolicy: {{ .Values.image.pullPolicy }}
            env:
            - name: REGISTRY_ADDRESS
              value: {{ .Values.registry.host }}:{{ .Values.registry.port }}
            - name: REGISTRY_INSECURE
              value: "true"
            - name: REGISTRY_PROJECT
              value: {{ .Values.registry.project }}
            - name: REGISTRY_LOCATION
              value: global
            command:
            - registry
            - resolve
            - artifacts/manifest
          restartPolicy: OnFailure

But if I omit (or forget to include) REGISTRY_LOCATION, I get an error when the controller is run (i.e #1105):
Error: invalid artifact name "artifacts/manifest", must match one of: [^projects/([A-Za-z0-9-.]+)/locations/global/artifacts/([A-Za-z0-9-.]+)$ ^projects/([A-Za-z0-9-.]+)/locations/global/apis/([A-Za-z0-9-.]+)/artifacts/([A-Za-z0-9-.]+)$ ^projects/([A-Za-z0-9-.]+)/locations/global/apis/([A-Za-z0-9-.]+)/versions/([A-Za-z0-9-.]+)/artifacts/([A-Za-z0-9-.]+)$ ^projects/([A-Za-z0-9-.]+)/locations/global/apis/([A-Za-z0-9-.]+)/versions/([A-Za-z0-9-.]+)/specs/([A-Za-z0-9-.]+)(?:@([a-z0-9-]+))?/artifacts/([A-Za-z0-9-.]+)$ ^projects/([A-Za-z0-9-.]+)/locations/global/apis/([A-Za-z0-9-.]+)/deployments/([A-Za-z0-9-.]+)(?:@([a-z0-9-]+))?/artifacts/([A-Za-z0-9-.]+)$]
Usage:
registry resolve MANIFEST_ARTIFACT [flags]
...

Anyway, I think this is resolved now and we can follow up on the location default in #1105.


Solved #700

This solves the issue of status bar not being transparent when navigation drawer is open.

Current coverage is 11.09% (diff: 100%)

No coverage report found for development at d818e34.

Powered by Codecov. Last update d818e34...e13d644


Fixed formatting errors

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] None of my changes are plagiarized from another source without proper attribution.
[x] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Congrats @storrence88 on your first pull request (PR)! 🎉
Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 📝


First HTTP request in Thread Group has twice latency than other HTTP request

Expected behavior
We created a thread group for testing APIs. The configurations we used are as follows:
Number of Threads: 50
Ramp-up Period: 0
Loop Count: 1
Startup delay: 0
We generated Aggregate Report but the first request always has double the response time and latency time as that of the other http request whereas on browser it is similar to other api requests. (Please refer the screenshot)

Even when we interchange the order of apis in JMeter, the first request always takes double the response time and latency time. (Please refer the screenshot)

We have also added HTTP Cache Manager to clear cache if any but are still getting the same results.
Expected behaviour: The latency and response time should be similar to that of the web application.
Please help us resolve this issue at the earliest.
Actual behavior
The latency and response time for the first HTTP request is almost double the rest of the HTTP requests and not at all similar that of the web application.
Steps to reproduce the problem

Download and install Apache JMeter
Create test plan
Create thread group with above configuration
Copy api as (bash) from web.
Go to Tools>Import from cURL
Add multiple apis.
Add Aggregate report
Execute test plan

JMeter Version
5.6.3
Java Version
openjdk version"11" 2018-09-25
OS Version
No response

Please provide us with a solution to this as we couldn't find a solution to this.

Just an idea: the 1st request is the one that opens a connection to the server and the connection pool is setup, the URL is cached, etc (I assume you use HTTPClient4 implementation). The rest of the connections might be re-used from the pool next, that's why you don't see a penalty anymore.
You should be able to see the connection times in JTL provided you selected in the Listener of choice to also 'Save Connect time'; you can also see this info in the 'View Results in Table' Listener.

try to run as Non-Gui mode


Method to_df() to transform anndata in pandas DF

It should implement the transformation only to a shallow dataframe (X, with obs_names and var_names as indexes).
It only bugs me that the dataframe returned has a slightly different precision than the one used to initialize the AnnData, eg:
> import pandas as pd
> import anndata as an
> df = pd.DataFrame(pd.np.random.rand(10,10), index=range(10), columns=range(10,20))
> df2 = an.AnnData(df, obs=df.index, var=df.columns).to_df()
> (df - df2).abs().max().max()
2.943521026921303e-08

Sounds good, thanks!


Resurrect RDS

Current pilot has regressed to not using RDS, which has the unfortunate effect of flushing envoy caches in mixerfiler on any config change. We should either resurrect RDS to preserve the caches, or share the caches between workers in envoy. The second option is more technically challenging since that requires locking discipline and can cause contention. The simpler option is to simply use RDS just like it was before the v2 change.
cc @louiscryan @rshriram

@kyessenov +1 to resurrect RDS rather than share caches between envoy threads. What was the particular issue of the regression?

I don't think there was a good reason for regression rather than lack of time, per @rshriram .

RDS is implemented - we chose to not use it to explore the impact of RDS on 503.
If we enable it - it should be with a flag and with testing evaluating 503 with and without.
Config change is not a frequent event ( Envoy is supposed to detect diffs ) - and flushing the cache
on config changes seems like a good feature, not a bug.  If mixer wants to keep the caches after
reconfig - it can implement it as well.
I have no issues with using RDS if it is confirmed it has no negative impact.

And I don't think it's a 'regression' - it was an explicit choice, and so far I haven't seen a 503 on config changes  when using v2.

Per @rshriram , he chose not to implement RDS. Unfortunately, config change is a frequent event in k8s world (any pod coming up seems to potentially trigger reconfiguration and cache flush). This is the theory behind why the rate limit suddenly became flake. The pre-allocated quotas are constantly flushed.

https://groups.google.com/forum/#!topic/istio-users/tqMx_BvfidQ

@kyessenov is this about having routes inside ADS but not inlined in the listeners, or completely separate RDS?

This is about RDS protocol, which may or may not be encapsulated as part of ADS. Basically, inlining HTTP routes into LDS configs forces envoy to perform an internal restart for that particular HTTP listener.

Mixer client started using per route config so as to not trash the entire listener when something changed.
This could be addressed in pilot or envoy,

If envoy is smarter about diffing old and new listener, inlined routes are fine
Rds seems easy enough as well.

won't work well if you have large number of inlined routes, any routes change would cause draining listeners. 2. is the right way to do.

Smart LDS diff == RDS :)

Sounds like a good plan, will need to test impact on 503s.

I noticed https://github.com/istio/istio/issues/5934#issuecomment-394863304 referenced my thread on istio-users. I'd really appreciate it if anyone could share any kind of workaround for the dropped connections on reconfiguration. Thanks!

Please note that while RDS fixes grpc streaming, it does not fix the flakes in the mixer test. There is more to do to fix those flakes.

fixed by #6081


Kubernetes setup

Hi there,
The kubernetes/helm setup is tightly coupled to nginx. We use kong as the alernative.
Could I suggest allowing users to disable the nginx resouces in the helm? Much like the other services such as Postgres, Minio etc?

You can already do that in vars.yaml, nginx installation is conditional.
https://github.com/openreplay/openreplay/blob/7fc8fab4d7d40248f7a22ca076ea9d0d12179c6e/scripts/helmcharts/openreplay/Chart.yaml#L31
You can add
ingress-nginx:
  enabled: false
  controller:
     ingressClassResource:
         name: (your ingress name)
     ingressClass: (your ingress name)


Mini HowTo ?

I don't get how glorytun work...
what is <IP_ADDRESS> in the case of server and <IP_ADDRESS> ?
Where is run the command "glorytun path up <LOCAL_IP> rate tx 1mbit rx 20mbit" on the server?

Hi,
For the server part (on Linux) you can take a look at https://github.com/angt/mudock/blob/master/run.
The glorytun path up ... is used on the client side to add a new path.


chore(main): release 2.0.11

Auto generated release
2.0.11 (2024-06-04)
Miscellaneous Chores

minimal node runtime to 20 and package manager to pnpm 9 (b31a84d)
update purge packages to v5 (b31a84d)
update runtime versions (#157) (b31a84d)

Refactors

use pnpm setup action instead of corepack (b31a84d)

Build System

deps: bump @solidjs/start from 1.0.0 to 1.0.1 (#153) (1899e8f)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/jobtrek/grades-view-solid/releases/tag/v2.0.11 :sunflower:


Blameable behaviour without logged in User

Hi!
In my Symfony2 application, when I execute something without an User logged in (running a console command, a cron, or in "forgot password" feature), I'm getting this error:
[Doctrine\ORM\ORMInvalidArgumentException]
EntityManager#persist() expects parameter 1 to be an entity object, NULL given.

My question is: it's possible to define a default user/id for this cases?
If you have another solution, let me know please.
Thanks in advance!

Meanwhile I created an BlameableListener and override the
protected function updateField($object, $ea, $meta, $field)
{
    // If we don't have a user, we are in a task and set a default-user
    if (null === $this->getUserValue($meta, $field)) {
        $ur       = $ea->getObjectManager()->getRepository('UserBundle:User');
        $taskUser = $ur->findOneBy(array('username' => 'external'));
        $this->setUserValue($taskUser);
    }
    parent::updateField($object, $ea, $meta, $field);
}

More info: http://stackoverflow.com/questions/28275217/doctrine-blameable-extension-on-change-doesnt-work


merging request headers in REST API calls

Some of Gerrit's REST APIs expect requests with Content-Type different than 'application/json'. Configuring SSH keys is a good example (/accounts/self/sshkeys/).
This PR allows the caller of REST API to provide headers (including Content-Type) which will then override defaults specified in pygerrit.

Thanks for adding this feature.
I'm no longer actively maintaining this library.  I have moved development over to pygerrit2 which removes support for SSH and is a REST-only client.
Would you mind sending the PR there instead?  Or do you mind if I cherry-pick it there?
Also it would be good to add some tests for the dictionary merge mehod.

Thanks. I'll give pygerrit2 a try. Maybe this PR isn't even necessary.


Complex matrix_inverse inconsistency error

If I run the following code: https://github.com/nunodsousa/tensorflow_matrix_inversion/blob/master/tf_matrix_inversion.ipynb I obtain the inverse of a complex matrix. However, If I reduce 1E-4 times the values of the matrix, the results should be the same, apart of the 1E4 factor. However it returns similar errors to the one found in #13558.
Please go to Stack Overflow for help and support:
https://stackoverflow.com/questions/tagged/tensorflow
If you open a GitHub issue, here is our policy:

It must be a bug or a feature request.
The form below must be filled out.
It shouldn't be a TensorBoard issue. Those go here.

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**: Ubuntu 17.10
**TensorFlow installed from (source or binary): binary
**TensorFlow version (use command below): 1.3
**Python version: 3.6
**CUDA/cuDNN version: 5.5
GPU model and memory: Nvidia Gforce GTX 1080ti

@rmlarsen did you get a chance to look at #13558? Closing this for now as a duplicate of that issue but please reopen if it turns out not to be.

Yes, I so the #13558, however I don't know if it is exactly the same problem. I'm making a more detail set of tests and I repost the result. However, for small matrices (like 10x10) the inversion works fine. Also I already confirm that it is not a memory problem.


Feature/question more info

Description
Added in hover tooltips to the Mentee and Mentor application forms that users can utilize to view more info about individual input fields. These tooltips currently have placeholder text until Jason Long confirms the proper copy.
Changes live in the Mentor.js and Mentee.js files - utilized Ant-Design for styling
Video Link
Loom Video
Trello Link
Trello Card
Fix: As a potential mentor or mentee, I can view more info about a question on the application that I don’t understand
Type of change

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

Checklist:

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[X] I have removed unnecessary comments/console logs from my code
[X] My changes generate no new warnings
[X] I have checked my code and corrected any misspellings
[X] No duplicate code left within changed files
[X] Size of pull request kept to a minimum
[X] Pull request description clearly describes changes made & motivations for said changes

Matches the checklist above and looks really good. Good job! :)

It looks like it meets the structure of what is needed. Awesome! Why is the package-lock.json changed? Is a rebase commit all that is needed?


No global skips for Bandit security checks

Description

No global skips for Bandit security checks
Explicit skips in the code on few places only

Type of change

[x] Refactor
[ ] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library
[ ] Bump-up library or tool used for development (does not change the final image)

Or maybe disable the rule? It won't prevent pushing the commit with a secret.
It would just fail in CI. If we remove the rule, we move the responsibility to spot a secret to the reviewer.

Or maybe disable the rule? It won't prevent pushing the commit with a secret. It would just fail in CI. If we remove the rule, we move the responsibility to spot a secret to the reviewer.

the rule is useful to catch these situation. We just have some "artifical" secrets in the code (ideally it won't be the case)

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 95.42%. Comparing base (047ee0f) to head (fc3bd64).
Report is 23 commits behind head on main.

Additional details and impacted files

@@           Coverage Diff           @@
##             main    #1198   +/-   ##
=======================================
  Coverage   95.42%   95.42%
=======================================
  Files          56       56
  Lines        2381     2381
=======================================
  Hits         2272     2272
  Misses        109      109

Files
Coverage Δ

ols/constants.py
100.00% <100.00%> (ø)

/lgtm

/approve


⚠ Bofrost.at has degraded performance

In 66f7b78, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2159 ms

Resolved: Bofrost.at performance has improved in 52e8044.


Documentation update

Description of your changes

Focus on UXP + Universal Marketplace
Abstractions documentation update
Switch to declarative Configuration installation, avoid kubectl plugin usage
Various additional fixes

Signed-off-by: Yury Tsarev<EMAIL_ADDRESS>I have:

[x] Read and followed Upbound's contribution process.
[ ] Run make reviewable to ensure this PR is ready for review.
[ ] Added backport release-x.y labels to auto-backport this PR, as appropriate.

How has this code been tested
By following the guide

@ytsarev LGTM, just a few questions and one grammar change proposal, nothing blocking.

@jeanduplessis thanks a lot for the review! I've updated the wording and layout, could you please check the fixes?


Do not filter signing keys when no explicit encoding keys are present

Fix for #227 .

Of course, another possibility is to separate use=enc checking into its own function, e.g., shouldFilterSigningKeys and provide comments on why are we doing this.
But I think it might be a small enough check to do inline. Test names should provide sufficient info on what is going on.

Does not seem relevant anymore due to https://github.com/IdentityModel/oidc-client-js/commit/ecdc72b2e87c964f434e7d4b3a155dd32c824ff7.


Crashing in Android 4.3

Error inflating when using in android 4.3

Finally Found the answer
This bug is for android sdk versions below 18 to correct this problem go through below instruction:
first download source code and edit xml and Util.java class
Problem is in getWrappedDrawable method in Util.class You should replace this method with
` public Drawable drawableGetter (@DrawableRes int id) {
if (android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.LOLLIPOP) {
  return AppCompatResources.getDrawable(getContext(), id);
}

return ContextCompat.getDrawable(getContext(), id);

}`
and in Layouts of library you should add below codes to xml attributes:
  app:cardPreventCornerOverlap="false"         app:cardMaxElevation="0dp"         app:cardElevation="0dp"


Wave [Enhancement]

Refer this: https://njackwinterofcode.github.io/

I want to work on this ;)

In the next PRs, I will work on the bug present in the contact page, dark mode enhancement of the footer, and the footer present on the registration page :)


dice so nice incompatibility

Dice so Nice 3.4.0 occasionally breaks, throwing up an error when penetrating on a die roll.

Wait for dice to finish dropping.

Sometimes (but not every time) the following error will come up:
DiceBox.js:524 Uncaught TypeError: Cannot read property '0' of undefined
    at DiceBox.swapDiceFace (DiceBox.js:524)
    at DiceBox.rollDice (DiceBox.js:999)
    at DiceBox.start_throw (DiceBox.js:904)
    at main.js:860
    at main.js:722

Not yet sure if this is a DSN bug or a hackmaster dice code bug. Keeping this issue open as a reminder.

Confirmed I am only able to reproduce this behavior with the 'p' modifier. 'x' does not seem to do this.

This is probably caused by the hacky way the penetration code sets the dice results... When a "1" is rolled on a penetrating die, we tell foundry we rolled a "0" on that die, which works normally but I think the Dice So Nice code is trying to find the "0" face on the die (which doesn't exist) and make it face up, or something like that.
Maybe there's another way to get the dice results to work out correctly, or maybe it's possible to write some compatibility code somehow.

You might not need to alter your dice code for this. dsn offers quite a lot of machinery for driving die rolls manually. We could disable automatic 3drolls and manually tell dsn what to display.

Original solution wasn't enough. It would crash on any DieTerm without a result, like Operations. Worse, PoolTerms encapsulate multiple DieTerms on their own. No longer assuming a results member, and drill down into Pools as needed (or until we hit a recursion limit).


Fix error caused by librt not existing for newer glibc versions

I'm using Arch Linux nowadays, which uses a very new glibc. It seems that recently librt.so and some other libraries were merged into libc.so and replaced by stubs (source). Unfortunately, it doesn't appear that a stub for librt.so exists, and if it does, it is not compatible with Micropython's FFI for some reason.
Using the value of libc when librt.so does not exist seems to be a valid workaround, which is what I'm proposing here.

Looks good to me.
Thanks!


Fix commit compare style

as title
Fixes : #25825
Before

After change

+1 more needed to walk this out.


add Alchemize and entropic data to the website run UI, both current a…

Adds alchemize and entropic data for potions gained on a floor
Add to both current run and run history:
This one is tested locally.
Run history:

Current run:

You need to update potion_delta on line 1215 so that the per-floor count is correct. Aside from that, great job!

I'm not sure I understand what potion_delta represents. As the comment suggests, I'll be adding 1 to the count similar to how Entropic adds 2?

It's essentially "Potions gained - potions used/discarded", so you'd add the length of both variables to it. So if you get 6 potions from Alchemize, but used 5, then the delta would be 1. Before this change, delta would have been -5.

(And remove the workaround I put it, plus the comment, obviously)

I still don't think I understand what the delta is used for, but let me know how it looks now!

They're used to keep track of the game stuff over the length of the run (for stuff like graphs): https://github.com/Vgr255/TwitchCordBot/blob/main/gamedata.py#L846-L856

ah, that makes sense. Thank you


The work's story

Tell a story for the project.

There's a shift nowadays of people really think how to engage socially in ways that are interesting.

Eight Rules of The School of Life
The School of Life has produced 500 films and written 5 million words. This is an enormous problem.
To stand any hope of remaining in anyone’s mind, ideas – even very good ideas – need to be brief and reduced to an essence.
That’s why, for the sake of our followers, we’ve summarised everything we believe down to eight key points: the credo of The School of Life.
It goes as follows:

ACCEPT IMPERFECTION

We are inherently flawed and broken beings. Perfection is beyond us.
 Life will always continue to be – in central ways – about suffering.
We are all, from close up, scared, unsure, full of regret, longing and error.
No one is normal: the only people we can think of as normal are those we don’t yet know very well.

SHARE VULNERABILITY

Recognising that we are each one of us weak, mad and mistaken should inspire compassion for ourselves – and generosity towards others.
Knowing how to reveal our vulnerability and brokenness is the bedrock of true friendship, which we universally crave.
People do not reliably end up with the lives they deserve. There is no true justice in the way that rewards are distributed. We should embrace the concept of tragedy: random terrible things can and do befall most lives. We may fail and be good – and therefore need to be slower to judge and quicker to understand. Those who have failed are not ‘losers’; we may soon be among them. Be kind.

KNOW YOUR INSANITY

We cannot be entirely sane, but it is a basic requirement of maturity that we understand the ways in which we are insane, can warn others we care about what our insanities might make us do, early and in good time and before we have caused too much damage – and take constant steps to contain rather than act out our follies.
We should be able to have a ready answer – and never take offence – if someone asks us (as they should): ‘In what ways are you mad’?
Most of the madness comes down to childhood, which will – in a way unique to our situation – have unbalanced us. No one has yet had a ‘normal’ childhood; this is no insult to the efforts of families.

 Accept the certainty with good grace, in full daylight.  We are on a planet of seven billion comparable fools.
Embracing our idiocy should render us confident before challenges – for messing up is to be expected – comfortable with ourselves, and ready to extend a hand of friendship to our similarly broken and demented neighbours.
We should overcome shame and shyness because we have already shed so much of our pride.

YOU ARE GOOD ENOUGH

The alternative to perfection isn’t failure, it’s to make our peace with the idea that we are, each of us, ‘good enough’. Good enough parents, siblings, workers and humans.
‘Ordinary’ isn’t a name for failure. Understood more carefully, and seen with a more generous and perceptive eye, it contains the best of life.
Life is not elsewhere; it is, fully and properly, here and now.

OVERCOME ROMANTICISM

‘The one’ is a cruel invention. No-one is ever wholly ‘right’ nor indeed wholly wrong.
True love isn’t merely an admiration for strength, it is patience and compassion for our mutual weaknesses. Love is a capacity to bring imagination to bear on a person’s less impressive moments – and to bestow an ongoing degree of forgiveness for natural fragility.
No one should be expected to love us ‘just as we are’. Learning and developing are at the core of love. Genuine love involves two people helping each other to become the best version of themselves.
Compatibility isn’t a prerequisite for love; it is the achievement of love.

DESPAIR CHEERFULLY

We are under undue and unfair pressure to smile. But almost nothing will go entirely well: we can expect frustration, misunderstanding, misfortune and rebuffs. We should be allowed to be melancholy. Melancholy is not rage or bitterness, it is a noble species of sadness that arises when we are open to the fact that disappointment is at the heart of human experience. In our melancholy state, we can understand without fury or sentimentality that no one fully understands anyone else, that loneliness is universal and that every life has its full measure of sorrow.
But though there is a vast amount to feel sad about, we’re not individually cursed and against the backdrop of darkness, many small sweet things should stand out: a sunny day, a drifting cloud; dawn and dusk, a tender look. With the tragedy of existence firmly in mind, we can take pleasure in a single, uneventful day, some delicate flowers or an intimate conversation with a friend.  We can learn how to draw the full value from what is good, whenever, wherever and in whatever doses it arises.
Despair but do so cheerfully: believe in cheerful despair.

TRANSCEND YOURSELF

We are not at the center of anything; thankfully. We are miniscule bundles of evanescent matter on an infinitesimal corner of a boundless universe. We do not count one bit in the grander scheme. This is a liberation.
Rather than complaining that we are too small, we should delight in being humbled by a mighty ocean, a glacier, or planet Kepler 22b, 638 light-years from earth in the constellation of Cygnus.
We should gain relief from the thought of the kindly indifference of spatial infinity: an eternity where no-one will notice, and where the wind erodes the rocks in the space between the stars. Cosmic humility – taught to us by nature, history and the sky above us – is a blessing and a constant alternative to a life of frantic jostling, humourlessness and anxious pride.
**
A final point: some of this may sound convincing. But that isn’t enough. We know – in theory – about all of it. And yet in practice, any such ideas have a notoriously weak ability to motivate our actual behaviour and emotions. Our knowledge is both embedded within us and yet is ineffective for us.
We forget almost everything. Our memories are sieves, not robust buckets. What seemed a convincing call to action at 8am will be nothing more than a dim recollection by midday and an indecipherable contrail in our cloudy minds by evening. Our enthusiasms and resolutions can be counted upon to fade like the stars at dawn. Nothing much sticks.
For this reason, we need to go back over things. Maybe once a day, certainly once a week. A true good ‘school’ shouldn’t tell us only things we’ve never heard before; it would be deeply interested in rehearsing all that is theoretically known yet practically forgotten.
That’s why we should keep the eight rules in mind – and why the next step is to subscribe – and to return here often.


Torrent-Meta-Serch script

Hi,
I want to add a Python script which acts as a meta-searcher to query multiple Torrent-sites at once. I did this as a contribution during Hacktoberfest ^^
PR #275

Merged. Happy codding


Can not attach process in alpine container, report: failed to find libc in target process

I want to use scope to attach a process, but scope report: failed to find libc in target process
My steps is:

Run a alpine container with alpine:3.14
Run the golang program without CGO in alpine container
export SCOPE_ALLOW_MUSL_ATTACH=true
scope attach 14
Stdout is:
Attaching to process 14
error: failed to find libc in target process

Whether scope support alpine container now?
Thanks

Support for attaching to a process using musl libc, such as in an alpine distro, is not fully supported. Refer to issue #403 for details. This is expected to be resolved shortly. Stay tuned. This will be updated soon.

@iapaddler Got it, thank you very much for your update. I am looking forward it.

@fuhuasheng we resolved the issue with attaching to busybox processes in alpine. the update is in the master branch. if you pull that and build you should be able to attach as expected. let us know if you have issues or questions.


[Question] SSR and Cleanup

SSR
In the server, we won't be able to cleanup resources even if you return the cleanup function. That's because, there is no functionality to detect component unmount in the server. So, make sure to handle the cleanup logic by yourself in the server.

I don't quite understand this part. Let's say I'm using Mantra, Flow Router SSR and Redux and I have a container that looks like this:
import drawer from '../components/drawer.jsx';
import { compose, composeAll } from 'mantra-core';

export const composer = ({ context }, onData) => {
  const { Store } = context();

  const unsubscribe = Store.subscribe(() => {
    const isDrawerOpen = Store.getState().drawer.DRAWER_IS_OPEN;
    onData(null, { isDrawerOpen });
  });

  const isDrawerOpen = Store.getState().drawer.DRAWER_IS_OPEN;
  onData(null, { isDrawerOpen });

  const cleanUp = () => {
    unsubscribe();
  };

  return cleanUp;
};

export default composeAll(
  compose(composer)
)(Drawer);

So, in this case, does that mean that unsubscribe() won't get called? should I be worried about this?

Yes it won't run in the server. But that won't be an issue.
For SSR, we need to create a new Context from the scratch. Otherwise, there'll be issues related race conditions.
I'm working on a way to deal with this.

Let's track this here: https://github.com/kadirahq/mantra/issues/11


Milestone 6: Optional juice, if we get to it

Milestone 6: Optional juice, if we get to it
A coat of paint has been dropped in to improve and unify the graphics, there are particle effects for firing thrusters or shooting weapons, camera shakes on impact, and ships now explode when destroyed instead of popping out of existance.
Audio is now present to common actions.

Closing this, in favor of opening individual issues for balance and gameplay changes, visual effects, and sound.


css-loader breaking change - compileType option no longer valid

Versions

nuxt: ^2.15
node: 12.18.0

Reproduction
css-loader latest version dependency has a new breaking change
Steps to reproduce
Use latest css-loader version
What is Expected?
Successful build
What is actually happening?
Build errors:
Module build failed (from ./node_modules/css-loader/dist/cjs.js):
  ValidationError: Invalid options object. CSS Loader has been initialized using an options object that does not match the API schema.
  - options.modules has an unknown property 'compileType'. These properties are valid:
  object { auto?, mode?, exportGlobals?, localIdentName?, localIdentRegExp?, context?, hashPrefix?, getLocalIdent? }

my apologies, I think that I had an old css-loader version and compileType is a newer option.

Nevermind! Found the problem. I had @nuxt/tailwindcss 3.x, and upgrading to 4.x brought in a different version of postcss. What a twisted web we weave...

I had this same issue, according to my yarn.lock file, the vue-cli-tools wanted css-loader v3.6 but nuxt wanted >4.2 so i needed to add a resolution to resolve:
  "resolutions": {
    "css-loader": "^4.3.0"
  }

css-loader@^4 and css-loader@^3 and css-loader@^5 seem to just be swapping whether the error message is compileType or minimize.

yarn remove vue-loader fixed it, there was a rogue yarn add vue-loader that was ran in the past, likely unnecessarily.

this worked for me
  "resolutions": {
    "css-loader": "^5.2.7"
  }

css-loader v6.0.0
the modules.compileType option was removed in favor the modules.mode option with icss value, also the modules option can have icss string value
https://github.com/webpack-contrib/css-loader/releases#:~:text=the modules.compileType option was removed in favor the modules.mode option with icss value%2C also the modules option can have icss string value


optimize scope delegation

This is a refactoring of  @jrudolph's https://github.com/sbt/sbt/pull/3979 on top of test PR https://github.com/sbt/sbt/pull/4002
For every setting, we need to calculate the delegates, so indexedDelegates is one of hot methods.

build
sbt 1.1.1
1.1.x 3559de06
this patch

Cinnamon (125070 settings)
87.16 ± 0.53s
86.81±3.38s
80.36±2.61s

Akka      (30398 settings)
42.77 ± 1.52s
42.27±1.56s
41.44±0.70s

Given that 1.1.x branch doesn't have optimization changes merged in we can ignore the difference between sbt 1.1.1 and 1.1.x. Basically it's around 87s with few seconds of waffling.
With this patch, I am getting around 80s, which is 7s speedup.
As you can see, with Akka's build with much fewer settings there's roughly 1s speedup, so this patch likely won't help you much until you have a lot of subprojects.
In any case, 7s would be the lion's share of Johannes's ~10s speedup. I focused on just the delegation expansion, so this change is a lot more contained.

Thanks for taking that one for a spin and adding more tests, @eed3si9n!

Btw. on my 5 year old computer, Akka loads in 20 seconds, so there might be something else going on on your machine with the Akka build.

Btw. on my 5 year old computer, Akka loads in 20 seconds, so there might be something else going on on your machine with the Akka build.

Interesting. Maybe global settings causing this or global plugins (I only have addSbtPlugin("com.jsuereth" % "sbt-pgp" % "1.1.0") at the moment), but that's a big difference.

@dwijnand Can we put this into 1.1.2, or is there a blocker?

I too would love to have this in 1.1.2, but given the importance of scope delegation the fact that it isn't properly tested makes me wary of merging these kinds of refactorings without even a RC.
so imo our choices are either:

complete the retrofitting of test coverage for the scope delegation (aka #4002), or
cross our fingers and merge this into 1.x, and then make sure we really test 1.2.0-RC1 to make sure we haven't broken anything

I don't, at this time, have a strong preference for or against delaying sbt 1.1.2 for this change.

so imo our choices are either:

One approach that is useful when test coverage isn't great is to include a commit in the PR that includes the old and new implementations, and asserts the results are the same. You can run that commit through some real-world builds to check the tripwire never goes off.

Btw. on my 5 year old computer, Akka loads in 20 seconds, so there might be something else going on on your machine with the Akka build.

Finally figured this out. noob mistake on my part. Given sbt exit  43.68s user 4.22s system 247% cpu 19.323 total I was reading the user CPU time.

Merging this into 1.x so we can test it out during 1.2 RC cycle.


Simplify code by introducing Model._add_constaint()

This PR: Simplifies and shortens the code. I do not think it needs testing as it is tested implicitly.

[ ] Closes #xxxx.
[ ] Adds and passes relevant tests.
[ ] Has well-formatted code and documentation.

Notes:
Please read our contributing guidelines first.
In particular:

You must add tests when making code changes.
This keeps the code coverage level up, and helps ensure the changes work as intended.
When fixing a bug, you must add a test that would produce the bug in the master branch, and then show that it is fixed with the new code.
New code additions must be well formatted. Changes should pass the pre-commit workflow, which you can set up locally using pre-commit.
Docstring additions must render correctly, including escapes and LaTeX.
Finally, it is essential that all contributions in this PR are license-compatible with PyJobShop's MIT license.
Please check that this PR can be included into PyJobShop under the MIT license.

LGTM! (you can merge this)


Support all possible "lib to url" cases

Source: https://clojure.org/reference/deps_and_cli#_coord_attributes
Related: https://clojure.atlassian.net/browse/TDEPS-228

Lib format
Inferred :git/url

io.github.ORG/PROJECT
"https://github.com/ORG/PROJECT.git"

com.github.ORG/PROJECT
"https://github.com/ORG/PROJECT.git"

io.gitlab.ORG/PROJECT
"https://gitlab.com/ORG/PROJECT.git"

com.gitlab.ORG/PROJECT
"https://gitlab.com/ORG/PROJECT.git"

io.bitbucket.ORG/PROJECT
"https://bitbucket.org/ORG/PROJECT.git"

org.bitbucket.ORG/PROJECT
"https://bitbucket.org/ORG/PROJECT.git"

io.beanstalkapp.ORG/PROJECT
"https://ORG.git.beanstalkapp.com/PROJECT.git"

com.beanstalkapp.ORG/PROJECT
"https://ORG.git.beanstalkapp.com/PROJECT.git"

ht.sr.ORG/PROJECT
"https://git.sr.ht/~ORG/PROJECT"

This needs to be resolved in deps-info first: https://github.com/rads/deps-info/issues/1


HiDPI support on linux

I know HiDPI support is a problem with Java up to 8 (Java 9 should finally fix that) but is there a workaround to be able to use the editor without having the need to pull our eyes out? IntelliJ Idea works fine on HiDPI on my linux 4k laptop.
Thank you for your great work and any help!

I googled a second and found:
https://jaxenter.com/netbeans/hidpi-with-eclipse-and-netbeans (We already have the dpiaware switch)
and https://wiki.archlinux.org/index.php/HiDPI#NetBeans
What you can do is try the Netbeans Theme (Instead of the dark one). Maybe we set a constant font size. If that doesn't work, you can try those font size settings.
In general if you google, do so for netbeans instead of jMonkeyEngine sdk, as all these suggestions apply to the sdk.
The thing is on my MacBook Retina (Only 2800x...) I don't notice any problems. Maybe it is Linux-only related?

First of all, thank you for your input.
The issue is not only with linux but also with windows, it's really a Java problem that is supposed to get a proper fix with version 9 to be released this summer.
I changed the font size from the command line and it is better for sure, only problem is that the icons are truly small. But I guess I will live with that for a little while till there's a proper solution from upstream.

Just wondering on a status update for this issue. Apache netbeans is now in incubation (although I personally have not used it yet)

This is probably now ok with Netbeans 12 as base finally. The HiDPI things came in Netbeans 11 as far as I can remember.

This is working as far as I know. We are in the process of making the icons scale nicer, so yeah :)


How to open this on Blender?

Hello, I can only find *.asset files on this repository. But Blender can't open or import it.
Is there a *.blend file somewhere?

Hello, I can only find *.asset files on this repository. But Blender can't open or import it.
Is there a *.blend file somewhere?

The link for the original .blend files is this one:
http://bit.ly/jammoDB
Since there might be updates on the original files by Curiomatic - I imagined it would be easier to keep it separate from the repository.
Adding the link to the readme! Thanks for the heads up!


work for configuration hotload

Still need styles.css reload

https://github.com/codyduong/hitokage/assets/24193268/aebfaea5-4137-4f9c-9b6d-cb71da2877c0

theres lots a rx blocking call that if rearranged we could start the runtimes.
we do have to wait here sync or we risk dropping a controller: Bars -> Bar.BarDestroy (each) -> Widget.WidgetDestroy (each) -> ...
but we don't have to wait to summon the next bar

Upon testing this out it actually has a problem, when we send our AppMsg::Destroy or AppMsg::DestroyActual it will take longer than it will to construct new bars, at which point some of the bars we are deleting are our new bars. TODO

There is a problem with notify watcher, it runs multiple times when it shouldn't causing reloads of init.lua to be run multiple times, but because the newest one always disposes of previous this "doesn't result in any problems" but delays hotloading

https://github.com/codyduong/hitokage/assets/24193268/0294dd69-3a80-492b-a680-946e19c8f3f1


vscode: 1.57.0 -> 1.57.1

Motivation for this change
Upgrades vscode from 1.57.0 to 1.57.1
This PR was automatically generated by nixpkgs-upkeep.

CI workflow that created this PR.
Internal tag: 2c60452586e3807d36ed99544e930190.

Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 127280 at 1642cf81 run on aarch64-linux 1

2 packages built successfully:

vscode
vscode-with-extensions


fromString or jsonParser?

Hi! I'm just getting started with argonaut core, and the readme has a broken import
Specifically, this one:
import Data.Argonaut.Core (jsonParser)

Isn't it the fromString function? Are they both the same? Probably the readme should be updated, I couldn't run the examples.

Ah, the README is incorrect, but for a different reason -- jsonParser returns Either instead of Maybe.
The jsonParser function tries to parse a string of JSON into the Json type, which includes parsing objects, arrays, and so on, but it can fail if the string isn't valid JSON. This is typically what you want if you're turning some arbitrary JSON into Json.
The fromString function is only for converting strings that are meant to remain strings into Json. If the string contains "{ a: 10 }", for example, then fromString will keep it as that string whereas jsonParser will convert it into an object. It's pretty rare to use fromString in the real world.

Fixed in https://github.com/purescript-contrib/purescript-argonaut-core/commit/f315154d4c975bed89d03420a9cfeca04b2d0283


Nested Conditional for Presets

Description
One of the ideas I had was to try and create a bunch of presets / themes
similar to the ones used in daisyui - https://daisyui.com/docs/themes/
Looking here:
https://panda-css.com/docs/guides/multiple-themes
https://panda-css.com/docs/customization/presets
I think its possible via something like:
const preset1 = definePreset({
  conditions: {
    extend: {
      pinkTheme: '[data-theme=pink] &',
    },
  },
  theme: {
    semanticTokens: {
      colors: {
        rose: {
          50: { value: {_pinkTheme: "#fff1f2"} },
          800: { value: {_pinkTheme: "#9f2233"} },
        },
      },
    },
  }
})

Problem Statement/Justification
Currently I think it's only possible to use conditionals within semanticTokens and not tokens.
Maybe thats by design I'm not sure.
Adding in nested conditionals on semanticTokens at least might make it easier when writing multiple presets using different data-theme's
Proposed Solution or API
what would be nicer is if you could avoid naming the conditional on every property
const preset1 = definePreset({
  conditions: {
    extend: {
      pinkTheme: '[data-theme=pink] &',
    },
  },
  theme: {
    _pinkTheme: {
      semanticTokens: {
        colors: {
          rose: {
            50: { value: "#fff1f2"},
            800: { value: "#9f2233"},
          },
        },
      },
    }
  }
})

Alternatives
No response
Additional Information
No response

@grbd panda follows the W3C Token Format.
Every part of the config has their individual role, and tokens should not be conditional.
If you want multiple themes, we provide a guide for that.
https://panda-css.com/docs/guides/multiple-themes

Yeah I know I posted the same link above
In order to select different themes via data-theme you need conditionals
Currently it's possible to apply conditionals to semanticTokens (not tokens) but you have to do it for every prop individually
It's not that big of an issue since I can code around it, but it would have been a nice to have

@grbd could you give an example syntax code of how you'd love it to work

Maybe something like this
const preset1 = definePreset({
  conditions: {
    extend: {
      pinkTheme: '[data-theme=pink] &',
    },
  },
  theme: {
    semanticTokens: {
      _pinkTheme: {
        colors: {
          rose: {
            50: { value: "#fff1f2"},
            800: { value: "#9f2233"},
          },
        },
      },
    }
  }
})

@grbd how would you like to consume this in the code?

@grbd I'm not sure I see what advantage this has over this:

To try and explain what I'm trying to do

start off with an object that has a set number of default values for a theme
add to that some custom properties such as primary colors
then run a function(s) that adds in some secondary colors if they're missing calculated from the primary ones above
repeat multiple times for multiple themes under different names.

I'm not sure if this is a common design patttern since I'm not that familiar with design tokens myself
Similar to what's happening here
https://github.com/saadeghi/daisyui/blob/master/src/theming/themes.js
https://github.com/saadeghi/daisyui/blob/master/src/theming/functions.js#L73
Keeping the theme name on every prop just means I'll have to write some additional code to translate from one object to another is all.
I wasn't sure if this was something others might find useful


Fixed error code checking for Win32 systems

I came across your code here: https://www.reddit.com/r/cpp/comments/9c9kqz/do_cpp_users_wantneed_a_cross_platform_framework/e5ag74p
I've been stepping through it to learn about loading shared libraries and came across a possible error. FreeLibrary returns non-zero results on success, while dlclose() returns 0 on success. Also, it looks like the code always gets an error message and sets it, even if loading/unloading the shared library was successful.

I combined this PR with another since they are tiny

cc @drdanz @diegoferigo did you saw this?

did you saw this?

Actually no, thanks for pinging me! :sweat_smile:
The patch looks good (thanks @nitro44x), I wonder if this is in conflict with @diegoferigo changes in the blockfactory repo.

Nope, no conflicts. My changes are more on the factory side.

Perfect, I'll go on and merge this

Merged, thanks @nitro44x

No problem, glad to help


Normalize the line endings

State that all files should have LF line endings in the repo.
In the working tree they will have CRLF under Windows and LF under
Linux or MacOs.
This avoids future confusion when file change line endings "on disk"
because the editor uses line fieed when saveing files.

Pull Request Test Coverage Report for Build 381

393 of 399 (98.5%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 93.27%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pyads/ads.py
262
264
99.24%

pyads/constants.py
121
125
96.8%

Totals

Change from base Build 380:
0.0%

Covered Lines:
790

Relevant Lines:
847

💛  - Coveralls

@stlehmann: Merging this patch would show me as the author of nearly all lines -
unless you run "git blame -w"
Compare e.g
git blame  PKG-INFO
vs
git blame -w PKG-INFO
So feel free to merge this PR "as is" to to re-do the normalizing under your name.

Thanks for the hint and the PR. How did you even find out there was an issue the line-endings. I develop on Mac OS and Windows and didn't even recognize this.

Thanks again for this PR. As you suggested I renormalized the line-endings under my name to avoid confusion.

The hint was given by emacs saying "DOS" under Linux.
The more official hint can be digged into by using
git ls-files --eol


fix(toast): Make longer toasts available with pre-wrap

Short description of what this resolves:
Fixes longer toasts by changing white-space: pre to white-space: pre-wrap
Ionic Version: 4.0.0
Fixes: #16360

Thanks a lot for the PR!


only error on missing smugmug credentials when required

Codecov Report

Merging #87 (bd90c0c) into main (f2d774b) will increase coverage by 0.02%.
The diff coverage is 94.73%.

Additional details and impacted files

@@            Coverage Diff             @@
##             main      #87      +/-   ##
==========================================
+ Coverage   87.59%   87.61%   +0.02%
==========================================
  Files          16       16
  Lines        1669     1672       +3
==========================================
+ Hits         1462     1465       +3
  Misses        149      149
  Partials       58       58

Impacted Files
Coverage Δ

runtime.go
81.81% <ø> (ø)

iter.go
82.78% <75.00%> (+0.14%)
:arrow_up:

export.go
79.79% <100.00%> (ø)

find.go
94.11% <100.00%> (ø)

ls.go
86.72% <100.00%> (ø)

new.go
92.04% <100.00%> (+0.09%)
:arrow_up:

patch.go
95.47% <100.00%> (+0.02%)
:arrow_up:

rm.go
87.83% <100.00%> (ø)

up.go
82.71% <100.00%> (ø)

user.go
100.00% <100.00%> (ø)

Continue to review full report in Codecov by Sentry.

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


the random conversation in the first time if use GPT3 OpenAI API Key method

It should be

but when call it the first time:

I used to see this issue before in my project, may caused by wrong or missing conversationId or threadId stuff, so just mention here
feel free to ask further information or close this issue

Are you using the official API Key method or the browser autologin?

Are you using the official API Key method or the browser autologin?

sorry for not mention, I use the official API Key method

@mefengl thanks. Which model are you using? The default or did you pick another model?

@mefengl thanks. Which model are you using? The default or did you pick another model?

default one, text-davinci-003

@mefengl thanks for reporting this issue. Could you update to v3.0.1 and check again? It should be resolved now.

@mefengl thanks for reporting this issue. Could you update to v3.0.1 and check again? It should be resolved now.

it did, works fine for me now


Address of an account is not specified during account creation

Open "https://create.staging.fairdatasociety.org/#/register"
Enter username and password
Click Register
Click New address
Pass the mnemonic verification dialog
You will see the text below without an address which should be topped up

Expected: address of the account should be displayed.

who changed this, before address was displayed ?
On Thu, 1 Dec 2022 at 09:08, IgorShadurin @.***> wrote:

Open "https://create.staging.fairdatasociety.org/#/register"
Enter username and password
Click Register
Click New address
Pass the mnemonic verification dialog
You will see the text below without an address which should be
topped up

Expected: address of the account should be displayed.
[image: Screenshot 2022-12-01 at 10 52 08]
https://user-images.githubusercontent.com/1595061/204998310-7806a6dd-c760-4b76-b56a-d0b64ac35043.png
—
Reply to this email directly, view it on GitHub
https://github.com/fairDataSociety/fdp-create-account/issues/142, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMYXIMCYMGDSIXGHLXXH7TWLBMJBANCNFSM6AAAAAASQPXCOM
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I'm not sure how it was before, but it's not clear to me how to top up the wallet by following these instructions

@IgorShadurin Do you have any console error?

@IgorShadurin Do you have any console error?

nope


Accessing credstash table in another account

Hi, first of all I'd like to thank you for putting this project together. If I can get it to work, it's really going to solve a fairly serious problem for me, which is storing passwords in plain-text.
Unfortunately, I can't get it to work in it's current state because I  access my credstash(dynamodb) table like so:
credstash -t credential-store-dev -n arn:aws:iam::XXXX:role/credential-store-dev get database_password
To give you more information, we have an account, where the credstash dynamodb tables sit, and we use STS to assume role on this account, from our dev/staging/production accounts. For credstash, you just need to use the -n option so you can provide the ARN (which gives you the full path/including account number)
Is this possible to fix OR is there some way to get this working?
Thanks so much in advance!

This is currently not supported. AWS credentials and session handling are kept to the minimum.
It would be pretty trivial to add this. Actually the credstash package can work with a provided AWSSession. If you want to take a crack at this please go ahead.

@tmichel thanks for the response. Understood, yes I can see that it's not supported. I've already got credstash implemented for managing other secrets, it just would be nice to have it manage terraform secrets in the same way. My solution is going to be to simply create new credstash dynamodb table per each AWS account. Kind of messy, but it will have to do for now!

@cultavix We have a single AWS account but we do separate environments in separate VPCs and every environment has it's own credstash dynamodb table. I really like this setup because it isolates the secrets from each other. Limits exposure and also gives easier access control with IAM roles.


Updated Models and related functions

Added other components to models
Updated ToBaseProduct and GetRequiredPropertiesForCategories with new models
Updated ApplicationDbContext to handle new models

Side discussion, I noticed a lot of warning errors since many of our properties (notably strings) can be nullable. Should we go ahead and update these?

You can set them equal to string.empty to get rid of the error. Lets not have null properties in the product sub classes.


Typography layout

User story
As a designer, I want to be able to design type with layouts, so I can convey style with type.
Outline subtasks or tasks

Decide which specific steps need to be completed and who is responsible for each of them.

[x] Layout rules with type need to be defined
[x] Approved layout rules will be coded within WCSS for dev use
[ ] Design direction needs to be documented for designers to follow
[x] WCSS needs to be documented for devs to understand CSS API
[ ] Presentation documents should be created to roadshow this to all the designers
[x] Page needs to be added to the Doc Site to illustrate type layout strategy

Definition of “Done” (exit criteria)

The story is generally “done” when the user can complete the outlined task, but make sure to define what that is.

This story will be complete when there is a design resource in sketch for designers to follow, a documented page in the Doc site, the rules are applied to WCSS and the CSS API is updated.

All criteria have been met aside from Design documentation and Sketch file prep.
The updated UI styles are clearly represented in the Auro doc site.
The sketch file documentation work is assigned to @vidalmenAS for followup.


Unable to get latest version number/name

Hi There,
It seems this project is unable to get the version name/number of some applications. e.g: Instagram
The reason is these applications have different builds for special devices so they have a lot of builds for different devices and for this kind of application we are unable to get the latest version number I think it's really bad because we need to know what is the latest version number of each application since it's an important metrics to see applications updated or not.
Reported by @ATNoosh
Best,
M.

Can we get some applicationIds to test against? I'd then see if and what can be done about it. Don't want to rely on a single app with that :wink:
Further, as the version fields are literals (no arrays), if we can figure out we'd just return the highest one, regardless of the device, right?

He said me he is unable to get the Instagram version using our library. so here is the link:
https://play.google.com/store/apps/details?id=com.instagram.android&hl=en&gl=US

Further, as the version fields are literals (no arrays), if we can figure out we'd just return the highest one, regardless of the device, right?

Yes, it will be great.

It seems some popular apps are the same and we are not able to get their version.
But WhatsApp is okay and we are able to get the version.
The next examples are Skype, Netflix, Viber, TikTok which we are not able to get the version.

I've added a dump method (#30) to make investigating sources easier in cases like this. Unfortunately, I could not find separate versions mentioned anywhere. I assume those are only reviled when device information is passed.
I've only checked with Insta, though, as that was the only one where the package name was mentioned here :wink:

https://play.google.com/store/apps/details?id=com.skype.raider&hl=en&gl=US
https://play.google.com/store/apps/details?id=com.netflix.mediaclient&hl=en_US
https://play.google.com/store/apps/details?id=com.viber.voip&hl=en_US
https://play.google.com/store/apps/details?id=com.zhiliaoapp.musically&hl=en&gl=US

I could try those all as well, but as indicated above I'm afraid version info for them won't be available either unless logged-in and device details provided. I found no version details at all for Insta, and neither for Skype. More cross-checking would make sense to see if the structure is identical – but without any details at all, there's no structure to compare. So I fear there's not much we can do about this.
Be welcome to use the new method provided with the PR linked and take a look at the details available for yourself.

PS: I think I've identified the corresponding section in ds:5. Quoting from Skype (com.skype.raider):
            [
                [
                    null,
                    []
                ],
                [
                    [
                        [
                            29,
                            "10"
                        ]
                    ],
                    [
                        null,
                        []
                    ]
                ]
            ],

Note the first null: this is the place usually holding the versionName. The next block is the targetSdk (29 aka Android 10), then comes the minSdk (again unspecified). For comparison, same section from another app:
            [
                [
                    [
                        "1.14.5"
                    ]
                ],
                [
                    [
                        [
                            30,
                            "11"
                        ]
                    ],
                    [
                        [
                            [
                                28,
                                "9"
                            ]
                        ]
                    ]
                ]
            ],

Here it's a "one-fits-all", so all values are filled.
TL;DR: Unless you want to find a way to fake device information and get "some" data (but then maybe "no data" on other apps not supported by the specified device), I'd say you can close this issue as wontfix – at least I see no way how we can fix it.

It's a great update.

MAybe, but how does it help solving the issue? I wouldn't even know how to provide device details (especially without "logging in" to the lion's lair).

I think if it's a problem with the device or auths problem we need to send fake information (account needed?). Maybe send an agent of the latest model/brand phone to see what versions returned.
Or maybe I am wrong?

Most of the other crawlers require a Google account to start with. Guess this is one of the reasons. You cannot provide device details without specifying the account I'm afraid – and I wouldn't want to implement that (apart from the fact that I can't, as I don't even have an account to test with and neither want to create one).
I'd really love to know if there's a way to do that without account (ideally including fetching the APK). But I very much doubt it is. Been looking far too long for that already; if such a possibility would exist I should have encountered it. But I might be wrong, of course.

Hm, I stand corrected on this part. Here's what I get for Skype when setting the UA to Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36:
            [
                [
                    [
                        "<IP_ADDRESS>9"
                    ]
                ],
                [
                    [
                        [
                            31,
                            "12"
                        ]
                    ],
                    [
                        [
                            [
                                26,
                                "8.0"
                            ]
                        ]
                    ]
                ]
            ],

But I wouldn't want to have a UA hard-coded. So what to do? Suggestion:

new method setUA($userAgent)
if not called, don't set the UA explicitly (or would you prefer a default? If so, which one? And when to update? I'd say better leave that to those using the API).

Shall I go for that?

Nice.
I think we can set a default one, but it should be possible to change it as well.

Well, false alert. I just played with it: Skype now returns a version even without the UA set. Let me try the other candidates from above:

com.skype.raider: version returned in both cases
com.netflix.mediaclient: in both cases, "Varies with device" (also when using device specific UA)
com.viber.voip: "Varies with device"
com.zhiliaoapp.musically: "Varies with device"

So there doesn't seem to be a difference. UAs tried:
$ua = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36";
$ua = "Dalvik/2.1.0 (Linux; U; Android 10; HD1903 Build/QKQ1.190716.003)"; // OnePlus 7T
$ua = "Dalvik/2.1.0 (Linux; U; Android 7.1.1; SM-G5528 Build/NMF26X)"; // Samsung Galaxy On5
$ua = "Dalvik/2.1.0 (Linux; U; Android 13; Redmi Note 8 Build/TQ2A.230505.002.A1)";

I can still send a PR for the UA-handling, who knows where it might come in handy. Though it does not seem to have any effect now, it might have for other cases. Maybe leave it undocumented/debug-only.
And no, I'd rather refrain from setting a default one. Might falsify results or cause trouble in other places. Remember, some apps are only available for certain devices etc; if the device is not specified there's a chance you still get results – with the wrong one specified, you might not.

PS: I'd wonder if the UA should change anything. It's not he UA Google looks for, it's an entire device profile. Take e.g. a look at Raccoon, which uses DummyDroid to create such profiles. And that needs – tada! – a Google account (see "System requirements"), as the profile is bound to a GSF ID.
So, do you still want me to make a PR for the UA spoofing, @BaseMax? As pointed out, I don't think it will be much help. But if you want it, I'd just have to commit and push; all set here in a separate branch.

Nice.
If you did it, send it. Thanks.

OK, done & merged. As there were other explicit stream_context_create() definitions, I've replaced them with calls to the new createStreamContext() method while on it, so at least we got some immediate use from it (and less redundant code).
Did not solve this issue here, though – and I don't think we can easily solve it anyway. But who knows what surprises might lurk out there…

Heya, Do you think this feature was completely added? We can close this issue or still there is something that need to think and work about.


Game doesn't fully close upon Quitting

Describe the bug
When you quit the game, the game doesn't fully close which leads to several problems, such as:

You can't restart the game unless you open Task Manager and end the 'gta_sa.exe' task;
If your window mode is set to Fullscreen, the "Exit to Windows" screen will be stuck on your screen no matter what you do, until you find a way to, again, end the task using Task Manager (or any task-ending application for that matter)

To Reproduce
Simply enter the game and then press the Quit button at the Landing Page or under the 'Game' tab in the in-game Pause Menu.
Expected behavior
The game fully closes with no problem whatsoever.
Screenshots

Additional context
I do have the following mods installed:

Essentials Pack (I deleted the Windowed Mode mod)
PortableGTA
GInput

However, I don't think the mods affected this in any way.

Remove all the mods and try on vanilla, that's all I can say.

I did some testing, and found out it was because GInput was installed through modloader instead of being in the game directory.
Sorry for wasting your time


fix: skopeo copy image fails

What type of PR is this?

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for reviewers:

Please check the following list before waiting reviewers:

[ ] Already committed the CRD files to the Helm Chart if you created some new CRDs
[ ] Already added the permission for the new API
[ ] Already added the RBAC markers for the new controllers

Does this PR introduce a user-facing change??

none

/cherrypick release-3.4

/cherrypick release-3.4

/cherrypick release-3.4


Game Grid

Need to extend GameManager to physically draw the 3x3 game grid on the right hand side of the screen leaving a tiny bit of space between the game grid borders and the card borders.
The game grid is 3x3. Each card is 166 width and 266 height plus a 5px border on all sides. That makes each card a total of 176px width and 276px height.
If we leave 5px padding on all sides of each card and make the grid border 2px, that should make the game grid a total of 566px wide and 866px height.
This leaves plenty of room on the right side of the screen.
The GameManager should be capable of displaying the game grid with it's contents. This means blank grids would have no card on them while filled grids would have cards on them.
@brettschalin will start this work. Please document your progress in this issue. Once you are done with this, we will reconvene to determine where to proceed from here. (I will likely do the next batch of work once you are done)

Closed. Thanks @brettschalin