Request: Safe (statically checked) downcast operation

This is a request for a new expression form $Downcast<S>(t), with the
following semantics:

The type of t is required to be some T such that S <: T.
The type of the whole expression is S.
The runtime elision is simply t: i.e., this has no runtime effect.

The alternate form $Downcast(t) should infer the appropriate S.
This is morally equivalent to a first-class form of the function
function downcast<T, S: T>(t: T): S {
  return (t: any);
}

except that something like (downcast("wat"): number) typechecks
because T can be inferred to mixed or S can be inferred to
empty, so any use case must explicitly bound both type parameters,
which makes this formulation sufficiently inconvenient as to not be
actually useful. A first-class form need not suffer from this failure,
would not need to be defined or imported, and would not incur a runtime
penalty.

As motivation: it is frequently the case that I have a value nominally
of some type T that I know, from runtime invariants that cannot
reasonably encoded in the type system, is actually an instance of S.
The temptation is always to simply cast it through any, but this can
easily lead to errors due to a miscommunication between my mental model
and the actual code.
For instance, consider some code like the following:
declare class FruitStand {
  catalog(): Iterator<{fruit: Fruit, priceInCents: number}>;
}
class FruitMarket {
  appleStand: FruitStand;
  orangeStand: FruitStand;
  *apples(): Iterator<Apple> {
    for (const apple of this.appleStand.catalog()) {
      // We know that the `appleStand` actually only contains apples, so
      // this cast is surely safe!
      yield (apple: any);
    }
  }
  // …
}

The invariant that the apple store only holds Apples may well be true,
but the code is incorrect; it is casting from a {fruit, priceInCents}
record, when it really meant to just cast from a Fruit. (That is, the
code should properly yield (apple.fruit: any) instead.)
This kind of mistake may seem like trivial programmer error, but it is
an easy mistake to make. When the declaration is far from the call site
(say, in the above example, if catalog is defined in another module),
one might simply forget the correct type on the other end. Or, the
mistake can arise during refactoring: if catalog originally returned
an Iterator<Fruit>, a developer might decide to upgrade it to its
current signature by simply changing the type and fixing all the
resulting type errors—but this would fail to catch the any-cast in the
above client.
I’ve made mistakes identical in structure to this example on multiple
occasions.
Downcasts can be a natural and unavoidable part of writing real software
in a system like Flow, and it is unfortunate that in the current state
of affairs one must lose significantly more safety than is theoretically
required.

Downcasting is inherently unsafe and unlike languages like java, flow does not and can not provide runtime checks for it. If you want to catch these errors use strict mode, which doesn't allow the any type. In your motivating example you never express your assumption that the apple store only holds apples to the typesystem. If you can not do this, the typesystem can't help you.
Downcasting in flow can safely be done through type refinements.
Try
In your example it would be even better to parameterize FruitStand with the concrete Fruit type
Try
Downcasts are avoidable and should be avoided.

In your motivating example you never express your assumption that the
apple store only holds apples to the typesystem. If you can not do
this, the typesystem can't help you.

I completely agree: the type system can help me only insofar as I
properly express my invariants. And I try my hardest to do so—from
simply adding type parameters and using type refinements to cooking up
complex combinations of type-level dictionaries and $ObjMaps. But some
invariants are simply too complex to express to Flow’s type system. When
Flow simply doesn’t have the vocabulary to express the invariants that I
need, I am forced to cast through any.
You’re right, of course, that in the particular case of my previous
example it suffices to parameterize the type of FruitStand, but such
easy fixes are not always possible. Here; let me provide an example that
of code that we can prove is correct under all circumstances, but for
reasons that we simply cannot express to Flow.
Suppose that we have one module, called tshc.js, with the following
contents:
// @flow
// tshc.js

export opaque type TypesafeHeterogeneousContainer: _TSHC = _TSHC;
interface _TSHC {
  put(key: Symbol, value: mixed): void;
  getAll(key: Symbol): mixed[];
}

export function make(): TypesafeHeterogeneousContainer {
  const data: {[Symbol]: mixed[]} = {};
  function ensureExists(key: Symbol) {
    if (!data[key]) {
      data[key] = [];
    }
  }
  function put(key: Symbol, value: mixed): void {
    ensureExists(key);
    data[key].push(value);
  }
  function getAll(key: Symbol): mixed[] {
    ensureExists(key);
    return data[key].slice();
  }
  return {put, getAll};
}

Because of the way that the opaque types are set up, the only possible
way for a TypesafeHeterogeneousContainer to be constructed is for it
to be the result of a call to make(). Therefore, a client that
receives a TypesafeHeterogeneousContainer knows that it behaves
according to this implementation.
Now, suppose that we have another module, called widgets.js, with the
following contents:
// @flow
// widgets.js

import {type TypesafeHeterogeneousContainer} from "./tshc";

const TSHC_KEY: Symbol = Symbol("widget");
export type Widget = {|+gizmo: string, +doodad: number|};

function addWidget(collection: TypesafeHeterogeneousContainer, widget: Widget) {
  collection.put(TSHC_KEY, widget);
}

function getWidgets(collection: TypesafeHeterogeneousContainer): Widget[] {
  const definitelyWidgets = collection.getAll(TSHC_KEY);  // (*)
  return (((definitelyWidgets: mixed[]): any): Widget[]);
}

Because the TSHC_KEY is a Symbol that is not exported from the
widgets.js module, no other module can access its value, and so no
other client can call collection.put with TSHC_KEY as the first
argument. Therefore, on the line marked (*), we can be absolutely
certain that every element of getAll is actually a Widget.
Other modules like widget.js can of course adopt the same pattern, and
there can be arbitrarily many of these modules, and they might be known
only at runtime, so the typesafe heterogeneous container cannot be
parameterized over all of them.
Let me summarize. On the line marked (*), we have a value that Flow
knows is of type T, and which we know to be of type S, a more
specific type. There is no way to express the appropriate constraint to
Flow. Therefore, we are forced to cast through any.
This is a very real example, by the way. It is the backbone of a plugin
interface: the TSHC is the plugin manager, and modules like widget.js
are plugins interacting with a datastore. In fact, such a plugin
architecture is exactly what motivated me to open this feature request
in the first place.

Downcasts are avoidable and should be avoided.

It looks like you’re a Haskell person, so let me take the risk of
providing an analogy. Foreign function calls in Haskell are unsafe and
should be avoided—but sometimes they’re exactly what you need, and so
Haskell provides a facility for them. This facility doesn’t just expose
a blanket operation like
ffi :: FunctionName -> a -> IO b

; instead, it lets you declare the intended types:
foreign import ccall "hypot" hypot :: Double -> Double -> Double
foreign import ccall "getuid" getuid :: IO Int

main = do
  getuid >>= print       -- typesafe!
  print (hypot 3.0 4.0)  -- typesafe!

These declarations are still dangerous: nothing stops me from writing
foreign import ccall "hypot" hypot :: Int -> Int
foreign import ccall "getuid" getuid :: IO Double

and then getting unexpected behavior at runtime. Haskell does not and
cannot provide runtime checks that these declarations are correct. But
Haskell has at least given me the tools to limit the extent of the
danger. As long as my assumption that the actual type of "hypot"
matches the declaration—which I can’t prove to the Haskell
compiler—holds, the rest of the program is still safe.
In the same way, when I downcast from T to S, as long as my
assumption holds that—due to invariants that I can’t express to the Flow
typechecker—the provided value is actually an instance of S, the rest
of the program is still safe.
So, I would amend your claim to: downcasts are often avoidable and
should be avoided when possible. In the cases where they are
necessary, Flow should help the user as much as possible. This is all
I’m asking for.

Your problem boils down to the fact that you have badly modeled your _TSHC type. It's a container of some data type, but rather than providing an explicit type you just use mixed. The fact that it is an opaque type doesn't change anything. If you add some trivial generics to your example it works.
Try

Haskell FFI has nothing to do with the problem at hand.
Yes, the flow typesystem is not perfect and is filtering out useful programs. That is the nature of typesystems. But all your  examples can be solved inside of flow if you model your data correctly. Flow provides a way to circumvent the typechecker if you know that a program that does not typecheck is in fact correct. I don't think that there should be additional facilities to incentivize circumventing the typesystem.

@chisui, you misunderstand the example. The TSHC is a container not
just of widgets but of many types. (Hence: typesafe heterogeneous
container.) We have widget.js and mcguffin.js and zombo.js, all
storing data into the same instance of the data structure. With your
parameterized example, this is a _TSHC<Widget | McGuffin | Zombo>, but
then of course when you getAll(TSHC_KEY) in the widget module you
have to again cast from an array of union type to a more specific type.
In any case, the specifics of the example are not important. The salient
point is that there exist invariants—even relatively simple ones!—that
cannot be modeled inside Flow. In those cases, I want to be able to
easily sacrifice type safety locally, not globally.

Flow provides a way to circumvent the typechecker if you know that a
program that does not typecheck is in fact correct.

…but it only provides “entirely hands-off, completely unchecked” way to
circumvent this, not a precise “take this one additional axiom” approach.

I don't think that there should be additional facilities to
incentivize circumventing the typesystem.

In cases like these, I am already circumventing the type system. I will
continue to use any, overkill and distasteful though it is, because it
is the only option available to me.

Your typesafe heterogenous lists are not typesafe then.
Type refinements are a safe way of downcasting.

As I described there, there are ways to solve this problem with existing flow features. No special downcast utility type needed.

@chisui suggests working around the fact that filter does not refine
the result type by using the (as-of-yet unimplemented) flatMap.
There’s nothing wrong with this approach by itself, but replacing a
simple filter with a flatMap whose callback always returns a
subsingleton list violates Flow’s design principle of supporting
“JavaScript, your way”:

Flow is designed to understand idiomatic JavaScript. It understands
common JavaScript patterns and many of the weird things we JavaScript
developers love to do.

When we have a list of items and want to filter them, we naturally turn
to the filter function. I don’t want to make my code more convoluted
through this layer of indirection, and I certainly don’t want to read
code that looks like that.
What this filter example and the typesafe heterogeneous containers
that I mentioned earlier have in common is that they really are
typesafe, in the formal sense that guarantees of the preservation
theorem hold. That is, these programs are typesafe because if a variable
has static type τ, then at runtime its value always also has type τ.
In other words, “nothing goes wrong”, even though we had to cast through
any.
It is Flow’s goal to understand these kinds of natural JavaScript code.
Flow is not a Hindley–Milner typesystem, and not all code that
JavaScript developers write fits neatly into a Hindley–Milner framework.
A safe downcast operation helps Flow help developers more.

By the way, I note that this feature is built in to TypeScript:
const x: number = 3;

const a: 3 = x;  // fails, as expected
const b: 3 = x as 3;  // works!
const c: string = x as string;  // fails! 'number' not subtype of 'string'

I think your typescript example illustrates pretty well why having downcasts inside the language is pretty dangerous. Just change the code of x to any other number and the assignment to b still works. You can even have expressions like 1 as 2 which is simply wrong.
If you expose such a tool to the user it will be abused. It shouldn't be easy to subvert the typesystem. having to write an ugly cast through any makes you aware of what you are about to do. Exposing such a powerful and having it look the same as other utility types normalizes its use, in strict mode it should definitly not be possible to use.
That being said. I'm still not convinced that such a tool is actually needed. All examples I have seen can be reworked to work with the exsting features of flow.
Here is another attempt at your heterogenous collection without the need for the consumer of your data structure having to use ugly casts:
Try

Exposing such a powerful and having it look the same as other utility
types normalizes its use, in strict mode it should definitly not be
possible to use.

This is eminently reasonable, in my opinion. If strict-mode disables
any casts, it makes sense for it to also disable downcasts. (After
all, you can downcast to empty.) I’m totally open to a different
syntax. Calling the form $UncheckedDowncast or $UnsafeDowncast or
whatever would be fine with me, as would changing the grammar: e.g.,
making it an infix operator à la TypeScript’s as.

Just change the code of x to any other number and the assignment to
b still works.

Of course. This is the point.

Here is another attempt at your heterogenous collection without the
need for the consumer of your data structure having to use ugly casts:

Your code still has not managed to avoid an any-cast or take advantage
of type refinements. Furthermore, it is unsound: unlike the code that I
provided, clients can use your code without any additional casts to
violate type safety and produce runtime errors. Neither of these
indicates to me that the code has been “reworked to work with the
exsting features of flow”.

Can you explain to me how the heterogenous container example is unsound? All I did was adding a phantom type to the key type and make put and getAll to use this phantom type to check that only values of that type are put in and taken out.

The only way I could come up with to break the implementation is if
you allow the same Symbol to refer to different type:

Yes, that is precisely the problem:
const container = make();
const key = Symbol();
container.put(key, 17);
const myStrings: string[] = container.getAll(key);
myStrings[0].toLowerCase();  // runtime error, not caught statically

Indeed, making the ID type opaque and exposing a constructor fixes it.
Now, suppose that we make this modification. Where are we? We have
written some code that is fully typesafe, in the sense that any client
code without additional casts will be safe from runtime exceptions. And
yet the implementation of the TSHC still requires a cast through any:
we can prove that the cast is sound, but we can’t express that proof to
Flow.
Tomorrow I might come along and refactor the implementation of the TSHC
to be backed by immutable.js lists instead of raw arrays.
As this is an implementation-only change, the API to the user is not
affected, so my plan is to change the type definition of data and fix
all resulting type errors. Doing so, I find and fix errors in
ensureExists and put, while getAll is already type-correct and
needs no changes. And yet the function is now wrong: Immutable.Lists
do have a slice method, but it returns another Immutable.List, not
an array!
If the (data[key].slice(): any) had instead been a checked downcast,
then Flow would have been able to tell that Array<T> is not a subtype
of Immutable.List<T> and raised an appropriate error.

If you invariants that you don't express in the typesystem you need some other form of proof. The most realistic one beeing tests. If you have done so your tests should fail after this kind of refactoring.
$WhateverDowncast wouldn't help you in this case either since A <: B does not imply T<A> <: T<B>. For that to work we would need some way of stating variance of type parameters.

your tests should fail after this kind of refactoring

Of course, but you could say this about any feature that grants
additional typesafety. Types complement tests; tests complement types.

we would need some way of stating variance of type parameters.

immutable.js lists are covariant.
But this is all beside the larger point. The code with a checked
downcast is objectively strictly safer and has strictly stronger
invariants than the code with the cast through any.

And I demonstrated that most of these invariants can be expressed without subverting the typesystem. If we encounter some that we can not express we should not try to add more facilities to subvert the typesystem but rather make flow expressive enough to do so.

Your request seems self-contradictory (unsafe cast, yet safe and statically analyzed?), but -- if I'm understanding -- what you really want is an unsafe cast that still does some amount of type checking.
Perhaps $Subtype or $Supertype is what you're looking for? Example
I'm not sure how useful they really are, but I figured some documentation (including unsafety warnings) is better than none. Hence #6887

Hi @aij—thanks for your input.

what you really want is an unsafe cast that still does some amount of
type checking.

Yes: an unsafe cast that Flow verifies can possibly succeed.

Perhaps $Subtype or $Supertype is what you're looking for

No, I don’t think so. In your example baz = 42 indeed fails to
typecheck, but (baz: 42) does typecheck. This is because the subtype
of T can be selected to be empty, which can then be safely upcast
to number. For instance:
// @flow
type T = { foo: number };
type U = { foo: number, bar: string };
const baz: $Subtype<T> = { foo: 0 };
const quux: number = baz; // I want this to fail: _no_ `T` is a number.

I figured some documentation (including unsafety warnings) is better than none.

I appreciate the thought, and the documentation helps, but I still don’t
understand what $Subtype and $Supertype are actually doing and how
they interact with inference, so I don’t feel comfortable using them in
actual code. (It’s a shame—I don’t know any other way to specify lower
bounds on type parameters.)

You can  combine unsafe types to have differently unsafe types: This fails to typecheck. & will give you a subtype of two types, while | will give you a supertype. I have a feeling that's not quite what you're looking for though.
Of course, no need to go all the way to empty,  T & number is also a type, though given the right assumptions/axioms, it could be provably uninhabited. With a sufficiently expressive type system, proving all uninhabited types are uninhabited is not going to be generally possible though.
I'm curious: What does Typescript do? (Not saying flow should necessarily do the same thing...)

You can combine unsafe types to have differently unsafe types

Sure, but this is very ad hoc. Change the type of quux from number
to {| foo: string |} in your example and the trick doesn’t work. I
also think that it’s clear that this is not a clear or readable
workaround.

& will give you a subtype of two types

I wish that this were true, but it’s not. Flow’s intersection types
are badly broken. Contrary to what the docs suggest, these types are
not infima. For instance, they’re neither commutative nor associative
(see #5895, #6641).
Union types do seem to act as suprema, for what it’s worth.

Of course, no need to go all the way to empty, T & number is also
a type, though given the right assumptions/axioms, it could be
provably uninhabited.

Right, yes, of course. This is why existing workarounds do not suffice.
In my proposed $Downcast<S>(t), S would be required to be a subtype
of the declared type of t. (Not an arbitrary inferred type of t,
which could always be mixed.)

I'm curious: What does Typescript do?

In case you missed it, TypeScript has been discussed previously in this
thread. The summary is that its as-operator appears to behave exactly
as I want. This continues to be the case with your example:
// @flow
type T = { foo: number };
type U = { foo: number, bar: string };
const baz: T = { foo: 0 };
const quux: U = baz;  // fails (good)
const xuuq: U = baz as U;  // OK (good)

I wish that this were true, but it’s not. Flow’s intersection types
are badly broken.

I was assuming that was due to bugs rather than intentional... Note that I filed one of the issues you referenced. :smile:

In my proposed $Downcast<S>(t), S would be required to be a subtype of the declared type of t.

Does that imply t would have to be a variable rather than an expression? I'm not exactly sure where Flow uses declared types rather than annotations...

In case you missed it, TypeScript has been discussed previously in this thread.

That's why I asked. It sounded like it behaves like you wanted, so I was wondering what it does in order to produce that behavior.
The documentation you liked earlier says

Type assertions are a way to tell the compiler “trust me, I know what I’m doing.” A type assertion is like a type cast in other languages, but performs no special checking or restructuring of data. It has no runtime impact, and is used purely by the compiler. TypeScript assumes that you, the programmer, have performed any special checks that you need.

From what you said earlier:

Yes: an unsafe cast that Flow verifies can possibly succeed.

Re: incompleteness: Playing with the Typescript playground, whatever TS is doing, it seems to err on the side of rejecting even casts that can succeed:
type T = { foo: number };
type U = { foo: number, bar: string };
type V = { bar: string };
const baz = { foo: 0, bar: "" };
const qux: T = baz;
const quux: V = qux as V;  // fails
const xuuq: V = qux as U;  // OK

Which seems contrary to the documentation, since I know that qux really is a V.

Cool, sounds like we’re mostly on the same page. :-)

Does that imply t would have to be a variable rather than an
expression?

Perhaps. Or, if feasible, inference could find the most specific
inferred type of T assuming that the downcast weren’t there, and use
that type. Or, the T could be explicitly specified in the downcast,
making it $Downcast<T, S>. I’m not sure what’s best.

Re: incompleteness: Playing with the Typescript playground, whatever
TS is doing, it seems to err on the side of rejecting even casts that
can succeed:

Yep, this is definitely strange. A simple modification of this test case
shows that the “allowed to cast” relation is not transitive:
type T = { foo: number };
type U = { foo: number, bar: string };
type V = { bar: string };
declare var t: T;
(t as U);         // OK
((t as U) as V);  // OK
(t as V):         // not OK...?

I guess that I should retract the claim that TS-as does exactly what
I want! It still seems like a reasonably close approximation, though,
and again I haven’t looked into it very much.

Closing since downcasts cannot be safe.


Only convert inputs to FP16 when FP16 stage is used

Closes #336
Description
This PR ensures that

inputs are ONLY converted to FP16 if we are running the FP16 stage.
expected_input_dtypes are updated when the FP16 stage is used.

Testing
A test was added to build_model.py. You can also test the changes using the script below:
# labels: name::linear author::selftest test_group::selftest
import torch
import numpy as np
import os
from groqflow import groqit
import onnxflow.justbuildit.export as export
import onnxflow.justbuildit.stage as stage
from onnxflow.justbuildit.buildit import build_model

torch.manual_seed(0)
cache_location = ".cache/onnxflow_test_cache"

custom_sequence_fp32 = stage.Sequence(
    "custom_sequence_fp32",
    "Building Pytorch Model without fp16 conversion",
    [
        export.ExportPytorchModel(),
        export.OptimizeOnnxModel(),
    ],
    enable_model_validation=True,
)

custom_sequence_fp16 = stage.Sequence(
    "custom_sequence_fp16",
    "Building Pytorch Model with fp16 conversion",
    [
        export.ExportPytorchModel(),
        export.OptimizeOnnxModel(),
        export.ConvertOnnxToFp16(),
    ],
    enable_model_validation=True,
)

torch.manual_seed(0)

# Define model class
class SmallModel(torch.nn.Module):
    def __init__(self, input_size, output_size):
        super(SmallModel, self).__init__()
        self.fc = torch.nn.Linear(input_size, output_size)

    def forward(self, x):
        output = self.fc(x)
        return output

# Instantiate model and generate inputs
input_size = 10
output_size = 5
pytorch_model = SmallModel(input_size, output_size)
inputs = {"x": torch.rand(input_size)}

# Build model using fp32 inputs
build_name = "custom_sequence_fp32"
omodel = build_model(
    pytorch_model,
    inputs,
    build_name=build_name,
    rebuild="always",
    monitor=False,
    cache_dir=cache_location,
    sequence=custom_sequence_fp32,
)

inputs_path = os.path.join(cache_location, build_name, "inputs.npy")
assert np.load(inputs_path, allow_pickle=True)[0]["x"].dtype == np.float32

# Build model using fp16 inputs
build_name = "custom_sequence_fp16"
omodel = build_model(
    pytorch_model,
    inputs,
    build_name="custom_sequence_fp16",
    rebuild="always",
    monitor=False,
    cache_dir=cache_location,
    sequence=custom_sequence_fp16,
)

inputs_path = os.path.join(cache_location, build_name, "inputs.npy")
assert np.load(inputs_path, allow_pickle=True)[0]["x"].dtype == np.float16

I have a decision to make about this PR and my Magic 8 ball seems to be broken. Which solution is the most sound here?
Issue:
We are now ONLY converting the inputs to FP16 when the FP16 stage is run. This means that models that use the torch-eager/torch-compiled runtimes will now run in FP32 instead of FP16.
A consequence of this is that benchmarking a model using both ort and torch-eager (assuming the default sequences) will cause results to be overwritten due to the mismatched data types.
Potential solutions:
(1) Convert the inputs to FP16 also when torch-eager/torch-compiled are used
(2) Only check for input shapes, but not data types before building a model. Note: *_state.yaml will only keep track of the expected_input_dtype of the last model built if the code is not meaningfully refactored.
(3) Change the hashing logic to also include input dtypes


Privacy Manifest

Is your feature request related to a problem? Please describe.
Apple has announced the Privacy Manifest, required by apps and SDKs.
Third-party SDKs need to provide their own privacy manifest files that record the types of data they collect. Your app’s privacy manifest file doesn’t need to cover data collected by third-party SDKs that your app links to.
Describe the solution you'd like
When are you guys planning to include it?

Done.
The manifest is now available in development and will be part of the next release.
A "ZIPFoundation" section should show up in your privacy report if your main target already contains a privacy manifest. (Use "Generate privacy report" in the Xcode Organizer).
Let me know how it goes.

@weichsel looks good, but do we need to copy PrivacyInfo.xcprivacy to the resources folder? The documentation thus not mention where to put it. I was assuming it should go to the same level o Package.swift.

This doc says:

For example, put all resource files into a directory named Resources, resulting in all of your resource files residing at Sources/MyLibrary/Resources.

@weichsel yes, but until now it was for resource files used in the Package bundle. XCode is not combining the privacy manifests on my tests as described in the paragraph below either adding it as resource or not, it only takes into account the privacy manifest of the main app.

First, to help developers understand how third-party SDKs use data, we’re introducing new privacy manifests — files that outline the privacy practices of the third-party code in an app, in a single standard format. When developers prepare to distribute their app, Xcode will combine the privacy manifests across all the third-party SDKs that a developer is using into a single, easy-to-use report. With one comprehensive report that summarizes all the third-party SDKs found in an app, it will be even easier for developers to create more accurate Privacy Nutrition Labels.

I recently adopted Privacy Manifests for a client project and the Privacy Report in Xcode 15 picked up the manifest in the ZIPFoundation dependency. (Integrated via Xcode SPM support).
How's your setup? (Did you point your dependency to the development branch of ZIPFoundation. There's no release yet that includes this change)

@weichsel now it is generating the privacy report correctly, it was a folder mistake I made from my side. Thanks for the support!


Examples are very complicated

Can you just show me how to read from and write to a pin?

From the terminal:
sudo pigpio
pigs r 25
pigs w 25


IGListAdapterUpdaterDelegate docs are missing a param

https://github.com/Instagram/IGListKit/blob/master/Source/IGListAdapterUpdaterDelegate.h#L31-L39
The batch update data is missing! 😭

Discovered by @jessesquires in #127


Theme/Mail: Quotes in signature creates issues in Send Mail HTML

Greetings,
I have recently discovered that, when using the Theme on the Usermin interface, an issue can happen when the user has quotes in its signature. This causes the HTML to be broken and the users are unable to send mails.
Please see the image on details of what happens:

I am using Usermin version 1.812 and Authentic theme version 19.62.

Hi,
Thanks for the heads up.
That was an escaping issue. It's fixed with the latest commit.


"Illegal offset type in isset or empty"

Laravel: 8.60.0
mongodb Version: 3.8.4
PHP Version: 8.0.10
Database Driver & Version: mongodb-1.10.0

Description:
Hello,
Im using laravel with mongoDB and having a poblem while sending notification. Im sending notifications to queue/job like this:
https://i.ibb.co/55Lxwgv/1-ss.png
And Laravel doing something on this process then throwing error: Illegal offset type in isset or empty
Before the explain: if you try to get user->id like this, you will get something like this because im using mongoDB.
MongoDB\BSON\ObjectId {#695
+"oid": "58bab4018803fa0008413732"
}
Why am getting this illegal offset error? Let me give more detail:
in Illuminate\Support\Collection class, these two functions want string value but since i use mongoDB, it comes as like this:
https://i.ibb.co/jkbyWhN/2-ss.png
MongoDB\BSON\ObjectId {#695
+"oid": "58bab4018803fa0008413732"
}
then it throws an error. if i manipulate it in the plugin(i do not prefer) its work properly.
Is this problem with Laravel itself, or MongoDB? I also added trace log.
Log:
https://github.com/jenssegers/laravel-mongodb/files/7171495/trace-log.txt

We don't support mongo db, sorry.


Simplify notify_recipient method in Assignment model

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
In the Assignment model, the notify_recipient method can be simplified for better readability and adherence to Ruby on Rails conventions. Currently, the method uses an unnecessary instance variable @assignment, which can be removed without affecting functionality.
Steps To Reproduce
Circuitverse >app>models>assignment.rb
Expected Behavior
Codebase should eliminates unnecessary instance variable usage for improved code clarity.
Adheres to Ruby on Rails conventions for method simplicity.
Screenshots

we can upgrade the highlighted code
Device Information [optional]
- OS: Windows
- Browser: Google Chrome
- version: 120.0.6099.217

Additional context
No response
Are you working on this issue?
Yes

@tachyons @tanmoysrt  assign the issue related to unused code lines as discussed on Slack, and I will promptly work on resolving it.


Add 'linz:geospatial_type' property to item level metadata

Add a new property called 'linz:geospatial_type' that is a an enumeration of values (see below).
Geospatial Content Type
A general description of the type of content that can be found in the dataset.
e.g. 'Polygon', 'Grid', 'Pointcloud'
Should also be mandatory to summarise it at the collection level
e.g.  summaries{geospatial_type}
Enumeration
Create a list made up of all these possible values:
See OGC/ISO SQL/MM part 3 definitions for documentation purposes. However, most of these terms are well understood in the geo community.
Point
Linestring
Polygon
Multipoint
Multilinestring
Multipolygon
Geometry Collection
Circular String
Compound Curve
Curve Polygon
Multicurve
Multisurface
Polyhedral Surface
Triangle
Tin
Geometry (when mixed vector types are used in the same dataset)
Grid (Single band non-byte datatype, grayscale interpretation)
Greyscale or Grayscale? (Single band byte datatype, grayscale interpretation, with optional 2nd band for Alpha)
RGB (can also include RGBA where 4th band is defined as Alpha)
Multispectral (4 or more bands, but not including RGBA. Including RGBI)
Hyperspectral (10+ bands)
Colour Image
Black and White Image
Point Cloud

Just saw this way of describing a long list of enumerations in a README. Might be useful for this one? If you draft it @MitchellPaff  I can help with the descriptions for each one maybe?
https://github.com/stac-extensions/eo#common-band-names


[Docs] Add metadata to GridMap

I am encountering difficulties using WFC2DPreconditionDungeon with the GridMap demo. Specifically, I am unsure how to set metadata for grid tiles, such as "wfc_dungeon_road" and "wfc_dungeon_wall." I have attempted various combinations, including setting the metadata for each MeshInstance3D within the library-source, but have been unsuccessful in retrieving the metadata in the code (the assert(not passable_domain.is_empty()) in /wfc/problems/2d/preconditions/precondition_2d_dungeon.gd always fails).
Is it possible to use WFC2DPreconditionDungeon with gridmap?
How can I set the metadata in my grid tiles?
Suppose that I want to add WFC2DPreconditionDungeon with the gridmap demo, what are the steps that I should follow to set the "wfc_dungeon_road" and "wfc_dungeon_wall" metadata to the mesh?
Am I supposed to set metadata for each MeshInstance3D inside the library-source?
I can contribute by adding some documentation regarding that part when everything will be more clear.

Hi.
I believed that there is a way to set metadata for meshes in mesh library. But now, after some research, it looks like I was wrong and it isn't actually possible 🤦♂.
I will add a way to specify metadata for meshes in mapper settings and/or different way to specify tile classes for dungeon generator.

I've added everything necessary to use dungeon generator with grid maps in master branch. Examples are there as well.

Support for 2d WFC with dungeon precondition on GridMaps is added in release 1.4. Now there are two ways to do it:

using metadata settings in mapper. See https://github.com/AlexeyBond/godot-constraint-solving/blob/master/addons/wfc/examples/demo_wfc_2d_gridmap_dungeon_mapper_meta.tscn
using a separate map. See https://github.com/AlexeyBond/godot-constraint-solving/blob/master/addons/wfc/examples/demo_wfc_2d_gridmap_dungeon_class_map.tscn


License Code

Assign appropriate license to code, include license definition information in code comment block at the top of the file.
Currently leaning toward a BSD license. Need to review the licenses currently applied to jQuery. It makes the most sense to use the same licensing structure as the dependent library.

Assigned with MIT and GPL dual license, matching jQuery. These are currently in the develop branch and will be released into the master branch with the next tag.


[Bug]: footer section heading link and other links not working.

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
when we click on any link title on the footer section it doesn't redirect us to the page.
Add Screenshots
No response
What browsers are you seeing the problem on?
Chrome
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC contributor
[X] I want to work on this issue
[X] I'm willing to provide further clarification or assistance if needed.

I would be grateful if you could assign this issue to me. I am eager to contribute to this project and look forward to working on it. Please let me know if you need any additional information from my side.


Couldn't find a debug adapter descriptor for debug type 'cppdbg' (extension might have failed to activate)

I am using VSCode to develop homebrew for the Game Boy Advance. Everything was working fine until I opened VSCode one day and the debugger stopped working.
Whenever I go to run and debug my code, this error pops up, "Couldn't find a debug adapter descriptor for debug type 'cppdbg' (extension might have failed to activate)". Sometimes, the game I am working on will pop up on the emulator before the I get the error message, and be able to play. Other times, the error message pops up and the emulator doesn't even load the game. Regardless, I am unable to use breakpoints or anything along those lines.
Note: I do have ms-vscode-cpptools installed and active in my VSCode, and have reloaded VSCode several times now to no avail.
I used a popular tutorial to configure my JSON to load the code into a GBA emulator.
My Launch.json looks like this:
{
    "version": "2.0.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "preLaunchTask": "gdb-debug",
            "postDebugTask": "stop emulation",
            "serverLaunchTimeout": 10000,
            "stopAtEntry": true,
            "program": "${workspaceFolder}/${workspaceFolderBasename}.elf",
            "MIMode": "gdb",
            "externalConsole": true,
            "cwd": "${workspaceFolder}",
            "targetArchitecture": "arm",
            "miDebuggerServerAddress": "localhost:2345",
            "windows": {
                "miDebuggerPath": "C:/devkitPro/devkitARM/bin/arm-none-eabi-gdb.exe",
                "setupCommands": [
                    {
                    "description": "Enable pretty-printing for gdb",
                    "ignoreFailures": true,
                        "text": "file ${workspaceFolder}/${workspaceFolderBasename}.elf -enable-pretty-printing"
                    }]
            },
            "osx":{
                "miDebuggerPath": "/opt/devkitPro/devkitARM/bin/arm-none-eabi-gdb",
                "setupCommands": [
                    {
                    "description": "Enable pretty-printing for gdb",
                    "ignoreFailures": true,
                        "text": "file ${workspaceFolder}/${workspaceFolderBasename}.elf -enable-pretty-printing"
                    }]
            },
        }
    ]
}

Platform and Versions

Operating System: Windows 10
C/C++: v0.29.0
VSCode Version: 1.48.0

Other Notes/Information
I hope I did a decent job of outlining the problem, I am newer to forum posts like this. If there is any more information needed I would be pleased to update the post.

I think this is a fine start for an issue, but unfortunately, it does not appear to be a CMake Tools issue.  I will transfer it over to the cpptools repo where the debugger lives and see if our debugger team can help you out.


[v19.0.0] Failed to init OpenVR client to update Chaperone boundary! Error: 119

Description
SteamVR refuses to start throwing this error: Failed to init OpenVR client to update Chaperone boundary! Error: 119
This error happens only on the new v19.0.0 release - no such issue happens if I launch v18.2.3.
Running as administrator does not solve the issue.
Happens with session.json from the previous version and when launching without this file present.
It seems to not happen for some time after fresh boot but then eventually starts happening. Fast boot is disabled.
session_log.txt
event.xml.txt
General Troubleshooting

[X] I carefully followed the instructions in the README and successfully completed the setup wizard
[X] I read the ALVR Wikis here and here

Environment
Hardware
CPU: R5 2600
GPU: GTX 1060
Audio: Onboard Realtek
Installation
ALVR Version: 19.0.0
SteamVR Version: 1.24.6
Install Type:

[ ] Packaged (exe, deb, rpm, etc)
[X] Portable (zip)
[ ] Source

OS Name and Version: Win10 21H1 19043.2130

... and yet the issue is still persisting...

Can you please do some bisection testing in the nightly releases history? Find the first nightly that manifests the issue.

Why didn't I think about doing it sooner! Silly me!
I've tested all nightly builds since ALVR v18.0.0-dev01+nightly.2022.05.11 and once I got to ALVR v18.0.0-dev05+nightly.2022.07.01 the issue started happening (ALVR v18.0.0-dev04+nightly.2022.06.28 is the last working).

Not silly at all :) I've added a note in the issue template. I'll look at it soon.

That's very strange, I can't see any changes related to the chaperone between June 28 and July 1. Can you try to build each commit in between separately to narrow down the issue even more? Also, did you try the latest nightly (v20)? There was a recent change about building the chaperone code when in debug mode.

ALVR v20.0.0-dev03+nightly.2022.12.20 launches without this issue, I will see if it continues to do so the following days

Great!

While this issue is gone I now encountered a new one - there is like a random chance that launching ALVR freezes my PC and produces audible coil whine coming from the PC... I think at this point I will stay with rock stable 18.2.3 and mark this as solved

If you can, please open another issue and/or find the offending commit as before.


flowy.gen.core incorrectly formats core module when entity name has underscores

 mix flowy.gen.core ComponentTypes ComponentType component_types name:string yields the following core module:
# lib/myproject/core/component_types.ex
defmodule :"Elixir.MyProject.Core.Component types" do
  alias MyProject.Queries.ComponentTypeQuery

  defdelegate all, to: Component typeQuery
  defdelegate get(id), to: Component typeQuery
  defdelegate last(limit), to: Component typeQuery
  defdelegate get!(id), to: Component typeQuery
  defdelegate update!(mode, attrs), to: Component typeQuery
  defdelegate update(mode, attrs), to: Component typeQuery
  defdelegate delete(mode), to: Component typeQuery
  defdelegate delete_all(), to: Component typeQuery
  defdelegate create(attrs), to: Component typeQuery
  defdelegate change(model, attrs \\ %{}), to: Component typeQuery, as: :changeset
end

should be:
# lib/myproject/core/component_types.ex
defmodule Elixir.MyProject.Core.ComponentTypes do
  alias MyProject.Queries.ComponentTypeQuery

  defdelegate all, to: ComponentTypeQuery
  defdelegate get(id), to: ComponentTypeQuery
  defdelegate last(limit), to: ComponentTypeQuery
  defdelegate get!(id), to: ComponentTypeQuery
  defdelegate update!(mode, attrs), to: ComponentTypeQuery
  defdelegate update(mode, attrs), to: ComponentTypeQuery
  defdelegate delete(mode), to: ComponentTypeQuery
  defdelegate delete_all(), to: ComponentTypeQuery
  defdelegate create(attrs), to: ComponentTypeQuery
  defdelegate change(model, attrs \\ %{}), to: ComponentTypeQuery, as: :changeset
end

I'll take a stab at fixing just wanted to log this in the meantime so I don't forget.

That's interesting, are you using the latest version (0.1.1) ? I just tried to generate a new resource, and I got it right:
defmodule Avance.Core.Projects do
  alias Avance.Queries.ProjectQuery

  defdelegate all, to: ProjectQuery
  defdelegate get(id), to: ProjectQuery
  defdelegate last(limit), to: ProjectQuery
  defdelegate get!(id), to: ProjectQuery
  defdelegate update!(mode, attrs), to: ProjectQuery
  defdelegate update(mode, attrs), to: ProjectQuery
  defdelegate delete(mode), to: ProjectQuery
  defdelegate delete_all(), to: ProjectQuery
  defdelegate create(attrs), to: ProjectQuery
  defdelegate change(model, attrs \\ %{}), to: ProjectQuery, as: :changeset
end

hmm yeah, I think the problem would be reproducible if your entity name was more than one word


Dinosaur Fighter is incomplete

It is missing a left walk, and left attack, waiting for Eman for the art

I have recieved the art for the Dinosaur fighter, going to add in now

Added via eeeed8a0e10ac899ab57a8183d71b5b631b1a471


failed with "Too many users have viewed or downloaded" but it's a new folder

Provide environment information
Python 3.9.7
gdown              5.1.0
What OS are you using?
macOS 13.0
Describe the Bug
I tried to download a new folder which had never been shared before. There are many videos in it. After downloading two of them, gdown failed with the error below. And I can access it via the browser.

Expected Behavior
No response
To Reproduce
No response

Can you give an example link for me to reproduce?

Can you give an example link for me to reproduce?

@wkentaro Thanks!
gdown --folder --remaining-ok https://drive.google.com/drive/folders/1cQYema_aW3I7n-B6Yvq6XGPBZamCZL14\?usp\=sharing

I think we will get the same error information after downloading 20 files. Could you please fix this error so that we can download more than 20 files in 24 hours?


[WIP] Modernizing code

Modernized C# sample.
WIP for the equivalent vb sample.

@rpetrusha , in the C# example, CityInfo is derived from IEqualityComparer<CityInfo> but  in the VB example it doesn't. Is it a mistake ?


interval date error in Sales.get_order_metrics()

Describe the bug
While passing a tuple of datetime to interval param, raises error
sp_api.base.exceptions.SellingApiBadRequestException: [{'code': 'InvalidInput', 'message': '{getOrderMetrics.arg1=must match "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{3})?(([+-]\\d\\d:\\d\\d)|Z)(\\[[a-zA-Z/_]+\\])?--[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{3})?(([+-]\\d\\d:\\d\\d)|Z)(\\[[a-zA-Z/_]+\\])?"}', 'details': ''}]

To Reproduce
today = datetime.now()
last_month = today-timedelta(days=30)
x = Sales().get_order_metrics(interval=(last_month, today), granularity=Granularity.DAY)

Expected behavior
_create_datetime_stamp function should parse the datetime into proper format.
Suggested solution : return datetime_obj.astimezone().isoformat(timespec="seconds") , this is compatible with python3.6+
Desktop (please complete the following information):

OS: Windows

@chimp-rb Thanks I was tearing my hair out with this and just assumed I was doing something wrong.
@saleweaver I can confirm the fix proposed works I am still too armature to know how to create a PR and make this simple fix in the repo.

Hi guys! If you can create a PR that'll be great, I can do it the next few days too. 😄


ngx_openidc_module.so version 1016001 instead of 1021000

Hi,
I am trying to implement the ngx_openid_module into Nginx Reverse Proxy.
I've managed to install all the dependencies (jansson, libmemcache, cjose, liboauth2, etc) and installed the ngx_openid_module rpm.  However during startup, nginx is complaining about the module version
nginx: [emerg] module "/usr/lib64/nginx/modules/ngx_openidc_module.so" version 1016001 instead of 1021000 in /etc/nginx/nginx.conf:8
I've tried to recompile the module following the steps here but it seems like the git do not have the config file for recompiling.
Any idea how can I solve the version issue?
The nginx I have is
# nginx -v
nginx version: nginx/1.21.0

what distribution are you on?

I'm running the RP on RHEL7

it seems you're not running the stock NGINX version 1.16.0 then

The Nginx package were installed using Yum
So to use this module, we'll need to stick with v1.16.0?

ok, I see that the stock NGINX version has been updated in the mean time; I'll update the RPM shortly; you'll have to compile from scratch in the mean time

I'm getting 1.20.1 now... https://centos.pkgs.org/7/epel-x86_64/nginx-1.20.1-2.el7.x86_64.rpm.html

I tried recompiling following this
But the git repo is missing the config file, how else can I compile the module?

Hi @zandbelt, are you able to advise on how to compile the module from github?

use ./autogen.sh first


Retrofit issue!

I'm using retrofit and creating instance of retrofit in this way.so how should I instantiate now?
private static final String BASE_URL = "base url";
public static Retrofit retrofit = null;

public static Retrofit getClient(){
    if(retrofit==null){
        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(new LoggingInterceptor()).build();

        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

    }
    return retrofit;
}

···java
ProgressManager.getInstance().with(new OkHttpClient.Builder())
.build();
With the above code, the framework will run, Retrofit's instantiation has nothing to do with the framework


[BUG] PHP Fatal error:  Uncaught Error: Call to a member function getMethodParameters()

Running ./vendor/bin/generateschema TYPO3\\CMS\\Fluid on version 8 LTS (composer ^8.7) and Fluid.SchemaGenerator (composer dev-master) I get following error:
PHP Fatal error:  Uncaught Error: Call to a member function getMethodParameters() on null in /var/www/vendor/typo3/cms/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php:119
Stack trace:
#0 /var/www/vendor/typo3/cms/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php(163): TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper->registerRenderMethodArguments()
#1 /var/www/vendor/typo3/fluid-schema-generator/src/ViewHelperDocumentation.php(69): TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper->prepareArguments()
#2 /var/www/vendor/typo3/fluid-schema-generator/src/SchemaGenerator.php(144): TYPO3\FluidSchemaGenerator\ViewHelperDocumentation->getArgumentDefinitions()
#3 /var/www/vendor/typo3/fluid-schema-generator/src/SchemaGenerator.php(130): TYPO3\FluidSchemaGenerator\SchemaGenerator->addAttributes(Object(TYPO3\FluidSchemaGenerator\ViewHelperDocumentation), Object(SimpleXMLElement))
#4 /var/www/vendor/typo3/fluid-schema-generator/src/SchemaGenerator.php(62): TYPO3\FluidSchemaGenerator\SchemaGenerator->g in /var/www/vendor/typo3/cms/typo3/sysext/fluid/Classes/Core/ViewHelper/AbstractViewHelper.php on line 119

I ended up using your https://fluidtypo3.org/schemas/fluid-master.xsd :)

Phew, okay, so this one has quite a lot of things to explain - I'll try to make this quick:

The main issue is that the new keyword is used to make class instances which doesn't then perform the injection that is required for the reflectionService attribute to be filled on CMS ViewHelpers - which is required for render method argument support to function.
I made a quick test locally if it is enough to specify a different RenderingContext class (it is for the prewarming tool I made) - however, that's not enough for generating ViewHelper docs. Among other problems, there are errors about undefined caches (extbase_object which is essential to object instanciation and injection). I've prepared https://review.typo3.org/#/c/52415/ which solves part of this, https://review.typo3.org/#/c/52416/ which solves yet another part and have a final plan to deprecated the LF constant in favor of PHP_EOL which does not have to be declared by runtime like LF does. With those three changes plus a feature for this package to allow setting a custom RenderingContext class name actually allows XSD generation on 8.7 without a wrapper script.
But for the time being it looks like this would have to be wrapped in a TYPO3 environment for it to work, which would imply adding this package as dependency and using a custom ViewHelperDocumentation class which uses ObjectManager to load VH instances.
There is also a schema generating sub-command in typo3_console and I've suggested to @helhum that maybe we can use this package as dependency and provide the schema generating command (with input arguments pre-tailored for CMS, e.g. no arguments means generate f: namespace). The long-term perspective for that would be that XSD generation becomes a built-in feature of TYPO3 (both on CLI and using PHP API) when typo3_console becomes a core dependency.

Hopefully that explains the entire situation and which steps to take next!

Best I can do for now: https://github.com/FluidTYPO3/fluidtypo3-development has been updated to add a CLI command that allows generating ViewHelper schemas while faking a lot of the otherwise necessary TYPO3 context. It's enough to generate ViewHelpers for the TYPO3 core and Flux and VHS but I haven't tested it on other candidates.
A better solution for this problem has to be achieved via for example typo3_console, see https://github.com/TYPO3-Console/typo3_console/pull/413

I found a similar extension which actually works for TYPO3 8
https://github.com/FluidTYPO3/schemaker/
The problem described here works there as they use:
$viewHelper = $this->objectManager->get($className);

to get the Viewhelper. See: https://github.com/FluidTYPO3/schemaker/blob/development/Classes/Service/SchemaService.php#L244-L246

Work is in progress trying to convince TYPO3 CMS to drop those ViewHelper base class overrides that impose the requirement for ObjectManager loading on every ViewHelper class.

https://review.typo3.org/52796 and subsequent removal of the business logic is key
https://github.com/TYPO3/Fluid/pull/271 in upstream used by TYPO3 CMS will replace the custom error handling TYPO3 CMS uses
A future patch to deprecate/remove a few properties on TYPO3 CMS abstract ViewHelper classes is the final piece to the puzzle.

Once those are all gone, schemas can be generated completely without any TYPO3 context.

The question is: do you want to make this extension compatible with v8 or do you want to wait until all the stuff is merged and a new TYPO3 release comes out?

do you want to make this extension compatible with v8 or do you want to wait until all the stuff is merged and a new TYPO3 release comes out?

If I understand that correctly and by "this extension" you mean typo3/fluid-schema-generator then no, I don't expect that will become directly compatible with TYPO3v8. Instead I expect to use typo3/fluid-schema-generator in EXT:schemaker and raise the minimum requirement to TYPO3 8.7. This is possible because the schema generator can be used with TYPO3v8, it just can't be used without the existing bootstrapping or a custom bootstrapping and my attempts to add various native TYPO3 features that would allow that, have all been rejected.
That being said, typo3/fluid-schema-generator will work directly with TYPO3v9, if you just stay away from using the deprecated render method arguments. Once https://review.typo3.org/#/c/53199/ is merged that compatibility is achieved, but you have to avoid use of render method arguments because any such use will trigger multiple TYPO3 framework features that require caches and so on.

it's merged!

Required patch is now merged - if you're interested, you should now be able to generate schemas for your ViewHelpers if you use TYPO3 master branch and avoid render method arguments.


Host machine stops sending stream feed

Hello,
I noticed this happens on a laptop and Steam Deck and ruled its happening on the actual host machine running Wolf.

GLib-WARNING **: 21:46:51.685: Idle source dispatched without callback. You must call g_source_set_callback().

The game stream just stops. The game is still running though, Controls still work, audio still works, but the video feed is frozen.
Any ideas?

Are you running the latest stable version? You can update using
docker pull ghcr.io/games-on-whales/wolf:stable

And restart the Wolf container.
If that still cause you issues, can you please share the full logs from the start of Wolf?

Yes, I start docker CLI with the following parameter: --pull=always.
Let me know if I need to run specific log levels.

[2024-09-06 09:39:12]
[2024-09-06 09:39:12] [ /etc/cont-init.d/10-setup_user.sh: executing... ]
[2024-09-06 09:39:12] **** Configure default user ****
[2024-09-06 09:39:12] Container running as root. Nothing to do.
[2024-09-06 09:39:12] DONE
[2024-09-06 09:39:12]
[2024-09-06 09:39:12] [ /etc/cont-init.d/15-setup_devices.sh: executing... ]
[2024-09-06 09:39:12] **** Configure devices ****
[2024-09-06 09:39:12] Exec device groups
[2024-09-06 09:39:12] Adding user 'root' to groups: gow-gid-107
[2024-09-06 09:39:12] DONE
[2024-09-06 09:39:12]
[2024-09-06 09:39:12] [ /etc/cont-init.d/30-nvidia.sh: executing... ]
[2024-09-06 09:39:12]
[2024-09-06 09:39:12] [ /etc/cont-init.d/init-gamescope.sh: executing... ]
[2024-09-06 09:39:12] Launching the container's startup script as user 'root'
amdgpu: os_same_file_description couldn't determine if two DRM fds reference the same file description.
If they do, bad things may happen!
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
0:00:00.099237977 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00m      adaptivedemux2 gstadaptivedemuxelement.c:41:adaptivedemux2_base_element_init:00m Failed to load libsoup library
0:00:00.099348073 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00m      adaptivedemux2 gstadaptivedemuxelement.c:41:adaptivedemux2_base_element_init:00m Failed to load libsoup library
0:00:00.099445586 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00m      adaptivedemux2 gstadaptivedemuxelement.c:41:adaptivedemux2_base_element_init:00m Failed to load libsoup library
0:00:00.106768160 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00;04m             default ges-meta-container.c:236:_set_value:GESAsset@0x5e30c73d033000m Could not set value on item: format-version
0:00:00.106783259 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00;04m             default ges-meta-container.c:236:_set_value:GESAsset@0x5e30c73d0c2000m Could not set value on item: format-version
0:00:00.106791995 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00;04m             default ges-meta-container.c:236:_set_value:GESAsset@0x5e30c73d147000m Could not set value on item: format-version
0:00:00.106992170 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00m           structure gststructure.c:2375:priv_gst_structure_parse_fields:00m Failed to find delimiter, r=mimetype
0:00:00.152571081 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00;04m             default gstvaapi.c:229:plugin_init:00m Cannot create a VA display
0:00:00.156975055 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00;01;36m  GST_PLUGIN_LOADING gstplugin.c:542:gst_plugin_register_func:00m plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so" failed to initialise
0:00:00.164737603 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00m          cudaloader gstcudaloader.cpp:260:gst_cuda_load_library_once_func:00m Could not open library libcuda.so.1, libcuda.so.1: cannot open shared object file: No such file or directory
0:00:00.266256194 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00m            vafilter gstvafilter.c:1743:gst_va_filter_has_compose:00m VPP does not support alpha blending
0:00:00.333906440 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00;01;36m  GST_PLUGIN_LOADING gstplugin.c:542:gst_plugin_register_func:00m plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so" failed to initialise
0:00:00.339599759 32m    100m 0x566b1d2fc0f0 33;01mWARN   00m 00m        GST_REGISTRY gstregistry.c:457:gst_registry_add_plugin:00m Not replacing plugin because new one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so) is blacklisted but for a different location than existing one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so)
0:00:00.336260351 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00;01;36m  GST_PLUGIN_LOADING gstplugin.c:542:gst_plugin_register_func:00m plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so" failed to initialise
0:00:00.339013231 35m  11800m 0x5e30c76f8c00 33;01mWARN   00m 00;01;36m  GST_PLUGIN_LOADING gstplugin.c:542:gst_plugin_register_func:00m plugin "/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so" failed to initialise
0:00:00.346914629 32m    100m 0x566b1d2fc0f0 33;01mWARN   00m 00m        GST_REGISTRY gstregistry.c:457:gst_registry_add_plugin:00m Not replacing plugin because new one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstvalidatessim.so) is blacklisted but for a different location than existing one (/usr/local/lib/x86_64-linux-gnu/gstreamer-1.0/validate/libgstvalidatessim.so)
37;1m16:39:13.179815399 INFO  | Gstreamer version: 1.25.0-10m
37;1m16:39:13.181096099 INFO  | Reading config file from: /etc/wolf/cfg/config.toml0m
amdgpu: os_same_file_description couldn't determine if two DRM fds reference the same file description.
If they do, bad things may happen!
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
37;1m16:39:13.356367413 INFO  | Using H264 encoder: qsv0m
37;1m16:39:13.356458774 INFO  | Using HEVC encoder: qsv0m
37;1m16:39:13.356520109 INFO  | Using AV1 encoder: qsv0m
33;1m16:39:13.356767373 WARN  | App Firefox render node (/dev/dri/renderD129) doesn't match the default GPU (/dev/dri/renderD128)0m
33;1m16:39:13.358654299 WARN  | App RetroArch render node (/dev/dri/renderD129) doesn't match the default GPU (/dev/dri/renderD128)0m
33;1m16:39:13.360435027 WARN  | App Lutris render node (/dev/dri/renderD129) doesn't match the default GPU (/dev/dri/renderD128)0m
33;1m16:39:13.362025628 WARN  | App Steam render node (/dev/dri/renderD129) doesn't match the default GPU (/dev/dri/renderD128)0m
33;1m16:39:13.363441542 WARN  | App Pegasus render node (/dev/dri/renderD129) doesn't match the default GPU (/dev/dri/renderD128)0m
33;1m16:39:13.364740927 WARN  | App Test ball render node (/dev/dri/renderD129) doesn't match the default GPU (/dev/dri/renderD128)0m
37;1m16:39:13.367225894 INFO  | Control server started on port: 479990m
37;1m16:39:13.367262432 INFO  | RTSP server started on port: 480100m
37;1m16:39:13.367285966 INFO  | HTTP server listening on port: 47989 0m
XDG_RUNTIME_DIR (/tmp/sockets) is not owned by us (uid 0), but by uid 1000! (This could e.g. happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)
33;1m16:39:13.367534262 WARN  | [PULSE] Unable to connect, Access denied0m
37;1m16:39:13.367578755 INFO  | Starting PulseAudio docker container0m
33;1m16:39:13.368776028 WARN  | [DOCKER] Container WolfPulseAudio already present, removing first0m
37;1m16:39:13.368955054 INFO  | HTTPS server listening on port: 47984 0m

Right, so you have two GPUs, and you are trying to use them at the same time, am I correct? How have you set that up? If you run everything on a single GPU does it work?
See the docs for reference: https://games-on-whales.github.io/wolf/stable/user/configuration.html#_multiple_gpu

In your docker compose can you try changing
-device /dev/dri/
To
-device /dev/dri/renderD12x
Replace x with the card number. Don’t think this will fix it but reduces variables within container
Get Outlook for iOShttps://aka.ms/o0ukef

From: IvanOOZE @.>
Sent: Saturday, September 7, 2024 2:55:48 AM
To: games-on-whales/wolf @.>
Cc: Subscribed @.***>
Subject: Re: [games-on-whales/wolf] Host machine stops sending stream feed (Issue #117)
Right, so you have two GPUs, and you are trying to use them at the same time, am I correct? How have you set that up? If you run everything on a single GPU does it work?
See the docs for reference: https://games-on-whales.github.io/wolf/stable/user/configuration.html#_multiple_gpu
Originally, I had different GPUs for WOLF_RENDER_NODE and WOLF_ENCODER_NODE.
I since switched to a single GPU for both ENV.
The same problem manifested itself in both configurations.
sudo docker run
--name wolf
--restart=always
--pull=always
-d
-e PUID=1000
-e PGID=1000
-p 47984:47984/tcp
-p 47989:47989/tcp
-p 47999:47999/udp
-p 48010:48010/tcp
-p 48100-48110:48100-48110/udp
-p 48200-48210:48200-48210/udp
-e TZ=America/Los_Angeles
-e WOLF_RENDER_NODE=/dev/dri/renderD129
-e WOLF_ENCODER_NODE=/dev/dri/renderD128
-e WOLF_STOP_CONTAINER_ON_EXIT=TRUE
-e XDG_RUNTIME_DIR=/tmp/sockets
-v /tmp/sockets:/tmp/sockets:rw
-e HOST_APPS_STATE_FOLDER=/etc/wolf
-v /srv/docker/wolf/config:/etc/wolf:rw
-v /var/run/docker.sock:/var/run/docker.sock:rw
--device /dev/dri/
--device /dev/uinput
-v /dev/shm:/dev/shm:rw
-v /dev/input:/dev/input:rw
-v /run/udev:/run/udev:rw
--device-cgroup-rule "c 13:* rmw"
ghcr.io/games-on-whales/wolf:stable
—
Reply to this email directly, view it on GitHubhttps://github.com/games-on-whales/wolf/issues/117#issuecomment-2334459949, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACPIAFBQVTH7IJIZ4WIV623ZVHNBJAVCNFSM6AAAAABNVUN7ISVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZUGQ2TSOJUHE.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

In your docker compose can you try changing
-device /dev/dri/
To
-device /dev/dri/renderD12x
Replace x with the card number. Don’t think this will fix it but reduces variables within container

In your docker compose can you try changing
-device /dev/dri/
To
-device /dev/dri/renderD12x
Replace x with the card number. Don’t think this will fix it but reduces variables within container
Also just to confirm, both cards are AMD? Looking through the logs it shows AMD driver loading

7900xtx and ARC A770

I'm also running into this issue on a fresh install, two AMD GPUs (AMD iGPU and 7800 XT).
Happy to share more details if it's useful but everything here matches my experience as well.

Happy to share more details if it's useful but everything here matches my experience as well.

Yes, please!
How are you running Wolf, is it the latest version and logs from starting the container up until the error message manifests. Possibly with the WOLF_LOG_LEVEL=DEBUG set.

I am still running some tests.
This is more complicated because there are a lot of variables, like which kernel is being ran and which drivers are being used.
I have had some issues with 6.10.7-xanmod1 that seems to have been fixed recently.
I will continue to test, and by test I mean play games, and see if I can get the issue to manifest itself again.

Will get you to the DEBUG level log shortly.
logs.txt

I think I see what is happening here. It has something to do with the bitrate set in Moonlight.
For both laptop and Steam Deck OLED, both of these devices are using Wifi-6e.
If I push for bitrates around 50Mbps, it seems to reach the crashing point much faster than if I used a lower bitrate, say 30Mbps.
DEBUG_logs.txt
Error is at line 18136.
I will do some more testing.

I can confirm IvanCharcos suspicion, I can do 4K, 150MBps streaming while on gigabit Ethernet without issues now. As soon as I switch to WiFi it starts to cause the original bug.

I will close the issue. I think this is more of a WiFi issue than it is a Wolf one. Thanks again. Awesome software BTW!


After BroadcastTransactionAsync() how can I get the TxID?

Normally I can get the TxID when I signed the transaction online.
But here since we are signing offline, we won't get any TxID when signing.
And the result returned by BroadcastTransactionAsync() is only TRUE. Nothing else.

Normally I can get the TxID when I signed the transaction online.
But here since we are signing offline, we won't get any TxID when signing.
And the result returned by BroadcastTransactionAsync() is only TRUE. Nothing else.

var transactionSigned = transactionClient.GetTransactionSign(transaction.Transaction, privateKey);
var result = await transactionClient.BroadcastTransactionAsync(transactionSigned);
var txId = transactionSigned.GetTxid();


Add support to mobile/landline for bulk uploads

Description
Bulk uploads require UI intervention to receive Email/Text notification
Proposed solution
Add support for bulk uploads to select mobile or landline and whether they want email / text notifications

closing this infavor of this #3360


Make sure PVC has a VolumeName

We need it to list Manila shares with the share name with the PVC VolumeName

/lgtm
/approve

/cherry-pick release-4.15


Space lost in the API page because of the legend

I find it a shame that the legend takes so much space in the API pages whereas generally you don't need it.
Maybe have a way to fold/unfold it?

Done


hr has border color hardcoded

Suggestion:
border-top: 1px solid @grayLighter;

Closing for #1895.


[ARO] az aro: Fix table output

Description
Fixes a bug in az aro {command} --output table (az aro list --output table, for example) when the comamnd fails due to not taking into account potential None values in data in some edge cases table output currently fails. For example:

When there are no worker profiles (cluster only has masters or we failed to get data from API server)
When a worker profile does not have count (machine set was scaled to 0)

Testing Guide
Create an ARO cluster, scale all machine sets to 0 and try to run az aro list --output table.
History Notes

[ARO] az aro: Fix table output

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

add to S169

Could you please add __init__.py under tests/ and its child directory latest/?

Good catch! Added __init__.py into these dirs. But I think we also need to update request recordings. I'll look into how to do it now.

Good catch! Added __init__.py into these dirs. But I think we also need to update request recordings. I'll look into how to do it now.

One reason why CI failed is azure-mgmt-network has bumped to a newer version, you could re-recordin test to resolve this.
But still need you fix the problem for your modifcation if any.

@jiasli @haroldrandom please take a look. I rebased on top of dev branch which now has __init__.py files for tests and new recordings and added some extra test for table output.


Some shortcuts don't work

I've been using st for some (long) time and I've never had a problem with it. But now zooming hasn't worked for a few days. I tried to solve this problem in several ways (including reinstalling st and installing previous versions), but it doesn't work.
Looking for a solution, I noticed that the zoom mechanics work quite well (when I changed the shortcuts to Alt+j/k), so the problem must be related to the correct reading of the shift key when it is used with another modifier (uppercase letters and single 'ShiftMask' also works).
Maybe someone had similar problem and managed to solve it?

Have you possibly bound that same sequence as a global key binding in
another program? I have not had such a problem and there hasn't been an
update to this build in a while.
On 20/01/03 10:28AM, infiltratorXYZ wrote:

I've been using st for some (long) time and I've never had a problem with it. But now zooming hasn't worked for a few days. I tried to solve this problem in several ways (including reinstalling st and installing previous versions), but it doesn't work.
Looking for a solution, I noticed that the zoom mechanics work quite well (when I changed the shortcuts to Alt+j/k), so the problem must be related to the correct reading of the shift key when it is used with another modifier (uppercase letters and single 'ShiftMask' also works).
Maybe someone had similar problem and managed to solve it?
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/LukeSmithxyz/st/issues/152

I don't think so. I've never used Alt+Shift+(...) shortcuts outside the terminal.
I'm going to look into this problem in a while. Maybe I'll find a solution. So far the Alt+h/l keys for zooming are pretty well for me.
If I find something, I'll post here.
By the way, I think your work on this build is very reasonable. It's very comfy configuration. I really appreciate it every day.

Do you use Luke’s rice / LARBS?
If so I’d check the sxhkd config at ~/.config/sxhkd/sxhkdrc

I had the same problem and it was due to the sxhkd binding for moving floating windows, which is in the default config, I think. Deleted it, reloaded sxhkd and zooming works like a charm.
# Move floating windows
alt + shift + {h,j,k,l}
       bspc node -v {-20 0,0 20,0 -20,20 0}


better doc on  @jscad/core

Hi team, thanks for the great efforts on the fantastic library.
I used to use the lib as jscad.compile(script, params), well after the updates, it doesn't work that way any more.
and I guess @jscad/core is the right way to execute the compile function.
The usage has little information on that. Could you please add more details on the usage.
Sorry if I am abusing the issues section and please feel free to close the issue.
Regards

@zfan40 no problem.
the building of the script (from pieces) and parameters is slightly different between CLI and WEB. Are you looking for a WEB solution?

@z3dev yes I am looking for the web solution.

So, there’s the UMD version of the V1 viewer here.

Thanks @z3dev
I find the test case quite helpful
and looking at the core lib, compile and generateOutput are core functions that are preferably added into the doc. As this isn't a production issue, I am going to close it.


sort

Is there any way to sort the list of found records so that I could more easily determine things that are not the right person simply by looking at the collection year?  sorting by collector or determiner column would also be amazing.

I would very much like to do this, but it's a question of indexing on columns and that translates directly to more memory on the cloud server & sadly, that requires more money. A similar request is #12. As a compromise, one way to make this possible is to download as a csv file and then do the sorting/filtering in a spreadsheet then upload the claims. It's not as pleasing and immediate, but at least is more performant.


Make --deny=... support added, changed, and removed

In #72 the foundation for denying API diffs was implemented.
This PR is the next step to allow only certain changes to APIs via CLI parameter.
Tell me what you think, whether this looks good to you. If it does, I can of course add tests!

Thank you for making a follow-up PR!
You have real bad luck with CI because you yet again hit a failure not caused by your changes.
If you rebase on main branch after fetch it should pass.
As for the PR itself, some high level comments:

The terminology we should use is added, changed, removed (not deleted). I might have wrongly use "deleted" myself in places, but it should be "removed".
I'm thinking the CLI should look like this: --deny=added --deny=removed --deny=changed. Maybe even allow combinations such like this: --deny=changed,removed, but feel free to wait with that.
Before a CR I would like tests to be in place and pass in CI, because that indicates significant maturity of the code, and I prefer to review mature code :)

Rebased, fixed your suggestions and also added tests. I'm not 100% sure about whether the tests are correct though, so you should probably have a look at them first :laughing:

Just a tip in case you didn't know: You can run ./scripts/run-ci-locally.sh to see if CI will pass. 99% of the time the script is accurate. I would say 100% for code like in this PR. So you don't have to push code here to see if CI will pass :)

Here's another heads-up: I just merged https://github.com/Enselic/cargo-public-api/pull/90.
It does not cause any merge conflict with this PR (I did a test-merge), but I recommend you rebase on main again to not accidentally start introducing conflicts in your own code.

Rebase was a cake :cake: and I took the liberty to squash away my fixups while I was at it.
Do you have any pointers what I need to fix to get the CI green? I am not seeing it right now :see_no_evil:

(The PR title is used in the autogenerated release-notes, so I changed it to be more descriptive)

I just saw that CI passes! Nice job! Maybe we should land this PR as-is (after review), and then I could look into doing my suggested improvements on top of that (but you are also more than welcomed to take a shot if you are interested)
Let me know your preference

I am a big fan of "get it right the first time", so I am happy to continue iterating on this!

WHOOOP!
CI green! Can I ask you to spend a little portion of your Sunday for a review? If everything is fine, I will do a full history cleanup and then we can do a final round before we merge this - or, of course, if you find anything that can be improved, reiterate (I'm of course more than happy to)!

Your latest suggestions were added in this rebase+squash. I am ready to merge here! :tada:

CI falls because rustdoc JSON format changed in nightly as I mentioned 😅
I'll take care of updating rustdoc JSON and then rebase this and get it merged today 👍

Just ping me for the rebase! :wink:

Is it ok if I do it? I'll keep your commits and just add a commit to update readme and --help text

Okay, if that suits your workflow better, feel free! :tada: :+1: :smile:

👍

:tada:

Released as v0.14.0 (:tada:)


Unhandled rejection Error: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node

@cheton I saw this issue occurs in the last example of your demo when moving an item from the left list to the right list

So far I cannot figure out a way to easily reproduce this issue, but sometimes this will happen when calling unmountHostComponent within react-dom, as shown below:

When the exception occurrs in removeChild(currentParent, node.stateNode), it shows that the parentInstance is on the left side:

However, the child node itself is actually on the right:

I believe the way we manipulate the DOM may cause unexpexcted behaviour to React, but I'm not sure what actions will affect React's Virtual DOM in this case.

@cheton It only happens if you move an item from the left to the right on the demo above the last one.. and then when you do the same thing on the last demo it causes the error

@owen-m1 The removeChild exception is occurred within react-dom when calling unmountHostComponent in React v16 (Fiber) (or processUpdates in DOMChildrenOperation with React v15), not the line #64 in src/Sortable.jsx as you mentioned:

So even remove the line of removeChild from the code will not help, I just removed the line and can confirm this issue still happened.

@cheton Yeah you're right.. I wasn't using the debugger. Could it be that when you are changing the state of the list on the left, react DOM sees it needs to remove the list item you dragged to the right, but when it tries to remove it, it cannot because Sortable has already moved it to the other list.

@cheton  I'm facing the same error in my react app can you provide us a jsfiddle of the Controlled Component(Clone items from left to right without duplication.) provided at the very end of the link http://sortablejs.github.io/react-sortablejs/ ?
I think the onChange function is missing from my child elements. I added it, as I saw in the react debugger. but I'm clueless at this point. Thanks.

You can fix this by moving the DOM element back to its original position in your onAdd handler and letting React handle its removal. This is how they do it in the react-sortablejs module:
https://github.com/SortableJS/react-sortablejs/blob/114a66438a170581a35aba58960914af23151132/src/Sortable.jsx#L58-L59
You might be able to get away with passing null instead of tracking the reference node, which adds the node back as its parent's last child. You probably have to have a key property on the child nodes, though.

Currently, this can be reproduce by following steps

Select item from Uncontrolled list on the left, then drag it to the right.
Select item from Controlled list on the left, then drag it to the right.
You will see error in the console

Below is an gif console logging the event handler from the sortable.js and reproduces of the this bug.

Thank @ultralabed for fixing this issue. It's fixed in v1.5.1 and was published to npm. Please let us know whether you are still facing this issue.


Process hub auditor role

From @jctanner: if the auditor is added to a team and tries to auth an Internal Server Error is thrown.  We should track that down before merge

Based on conversations in slack, the traceback I was seeing related to the "Default" organization is expected if the migrate_service_data command hasn't yet been run to sync the ansible_ids across the platform.


Fresh installs doesn't build .css files

Laravel Mix Version<EMAIL_ADDRESS>Node Version : v7.4.0
NPM Version : 4.4.4
OS: Windows 10
Laravel : 5.4.23

Steps To Reproduce:

composer global require "laravel/installer"
laravel new blog
cd blog
composer install
npm install
npm install cross-env
npm run dev or npm run production

Only .js files compiled, .css not compiled.. is it my machine bugged ?

i forgot.. #749


Add "Deep color scheme"

Notes:
I cannot get an unfunky-looking preview due to the dimensions of my screen, so if anyone else wants to fix that, feel free.
Also, I think the readme looks a bit wonky with only one other scheme.

Lovely job 💕


examples/texture shader problem

Hi, let me start by saying thanks for writing three-d. I'm hoping to use it (or something like it) for a project that renders panorama photos with a measurement overlay, and it looks like an easy way to get a web implementation going quickly.
I'm looking through the examples for code I can use, and I'm getting a shader error from examples/texture:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: FailedToFindUniform { message: "Failed to find uniform viewProjectionInverse" }', examples/texture/main.rs:94:16
I noticed viewProjectionInverse in the most recent commit (https://github.com/asny/three-d/commit/4340b3ea1240d22454b41ff747022ab7a0e74224); is this still a work-in-progress?

Hi. Thanks and thanks for your interest in three-d. It sounds like a perfect use-case for three-d so please let me know if there is something missing to be able to use it. And if you will use it for an application, please consider sharing the result with me.
About the problem, it is a bug, but it is not a problem on windows+web, mac+web and mac+desktop, so I am interested to hear what platform you are using? Anyway, I tried to fix it in version 0.4.2, did it work?
Generally, the project is still work in progress, but the core parts are pretty stable and, unless you need a new feature, you can just stick to one version.

Hi. Thanks and thanks for your interest in three-d. It sounds like a perfect use-case for three-d so please let me know if there is something missing to be able to use it. And if you will use it for an application, please consider sharing the result with me.
About the problem, it is a bug, but it is not a problem on windows+web, mac+web and mac+desktop, so I am interested to hear what platform you are using? Anyway, I tried to fix it in version 0.4.2, did it work?
Generally, the project is still work in progress, but the core parts are pretty stable and, unless you need a new feature, you can just stick to one version.

I'm using linux w/ web+desktop; It looks like that last fix did it, I can now build and run and see two penguins standing on a textured box in both the application window and a browser.
FYI: the texture example at https://asny.github.io/three-d/ still doesn't work for me. Also, probably unrelated: on the same page, the After Effects and Imposters examples don't work for me (all the others do).
If my project ends up being viable, I will definitely host it on github and let you know.
I may have some more questions in the future for you that are not related to a specific issue report. Github just added a new Discussions feature that can be turned on for individual repos: I've never tried it before, but it might be interesting to try it if you're interested in turning it on.

I'm using linux w/ web+desktop; It looks like that last fix did it, I can now build and run and see two penguins standing on a textured box in both the application window and a browser.
FYI: the texture example at https://asny.github.io/three-d/ still doesn't work for me. Also, probably unrelated: on the same page, the After Effects and Imposters examples don't work for me (all the others do).
If my project ends up being viable, I will definitely host it on github and let you know.
I may have some more questions in the future for you that are not related to a specific issue report. Github just added a new Discussions feature that can be turned on for individual repos: I've never tried it before, but it might be interesting to try it if you're interested in turning it on.

Great, two penguins on a box sounds about right :)
I hadn't updated the examples at https://asny.github.io/three-d/, but I have now, so it should work. It is probably the same issue with After Effects and Imposters examples, so they should also work now. Otherwise, please let me know.

If my project ends up being viable, I will definitely host it on github and let you know.
Sounds great 👍

Great idea about Discussions, I have turned it on, so just ask away!

Great, two penguins on a box sounds about right :)
I hadn't updated the examples at https://asny.github.io/three-d/, but I have now, so it should work. It is probably the same issue with After Effects and Imposters examples, so they should also work now. Otherwise, please let me know.

If my project ends up being viable, I will definitely host it on github and let you know.
Sounds great 👍

Great idea about Discussions, I have turned it on, so just ask away!


[All Hosts] (common apis) Move the binding article to Common from Word

Docs Build status updates of commit dbe015f:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/toc.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


[BUG] auto_restore_enabled = true not working

Describe the bug
When I open nvim without any arguments, I expect auto-session to automatically restore the previous session for the directory that I'm in. Instead, neovim just starts with the standard intro screen.
To Reproduce

Set auto-session config as (using kickstart.nvim project setup):

return {
  'rmagatti/auto-session',
  event = 'VeryLazy',
  opts = {
    auto_save_enabled = true,
    auto_restore_enabled = true,
  },
}

Ensure that sessions directory is empty so there are no existing sessions.
Run nvim
Open "a.txt"
I can see session file being created for the directory I ran nvim in
Run :qa in neovim
Run nvim again
Expect "a.txt" to be opened automatically. Instead I get the standard neovim welcome screen.
If I manually run :SessionRestore, then "a.txt" is opened as expected

Screenshots
If applicable, add screenshots to help explain your problem.
Baseline (please complete the following information):

Result of set sessionoptions?: sessionoptions=blank,buffers,curdir,folds,help,tabpages,winsize,terminal
OS. e.g uname -a: MacOS
Neovim version nvim --version: v0.10.0
URL to your current config (if public)

Additional context

Can you add log_level = 'debug' to your opts and paste what it shows?

I second what @cameronr said but also I wouldn't recommend using VeryLazy with auto-session necessarily. auto-session does some things that themselves depend on events that are fired after plugins are loaded but way before the VeryLazy event from lazy. This might even be the cause of your issues.

Just noticed that your config has event = 'VeryLazy'. That will break session loading because the VeryLazy event happens after the VimEnter event we use to trigger session loading. It will work if you change the config to:
return {
  'rmagatti/auto-session',
  lazy = false,
  opts = {
    -- auto_restore and auto_save are true by default so don't have to set them here
  },
}

I'm going to look into adding a checkhealth alert if event = VeryLazy and auto_restore = true


OBBStandardRoIHead

Hello, could you explain the similarities and differences between OBBStandardRoIHead and OrientedStandardRoIHead in mmrotate?
How should I proceed if I want to use OBBStandardRoIHead in mmrotate?

Hello, I have another question: In OBBStandardRoIHead, the "Simplest base ROI head including one bbox head and one mask head"—was this newly added in this paper, or was it already required in the original detection?


cachetools does not work in Python 2?

some people were getting import errors when I had cachetools.func decorating functions. not sure if this is a python 2 issue - check it out

probably not gonna use cachetools anymore

testing


Configure version 1.1.0 for WFS layers

Given this issue with QGIS I suggest to force the configuration to 1.1.0 for the WFS layers. Geoserver supports it and it will grant that edits won't break the geometries.
I suppose it-s a matter of setting it here

working on it, should be ready soon

This is now implemented and has been included in version 0.9.5 of the plugin. I think we can close this issue


is there a way to accept the raw string rather than input_ids, segment_id, etc when using tf serving

would also be very interested in an answer to this


New interface proposal

CC @prateekgogia @xmudrii @roberthbailey

@roberthbailey going to merge and get your nit's in the follow up PR I am working on!


expose indexer gateway with caddy

https://github.com/threefoldtech/tf_operations/issues/2288

https://github.com/threefoldtech/grid_deployment/commit/59eee1382f8c3714557b2959fb3ed00854dcae2a


[Bug] Crosshair vertical is using horizontal styles

Version
9.0.0-alpha7
Steps to Reproduce
See here: https://github.com/liihuu/KLineChart/blob/0ffb9a8e4d4535d93dbcb9a27c272207d8b7c8a1/src/view/CrosshairLineView.ts#L30-L48
Current Behavior
Trying to style the vertical cursor is not possible at the moment since it copies the horizontal cursor configuration.
Expected Behavior
Separate styling.
Environment
- OS:
- Browser:
- Framework:

Any additional comments?
No response

Fixed it.


SD +FAT32 stuck at root directory

When I try to load the SD+FAT32 diskimg, it gets stuck at the root directory:
All I did was download the disk image and put it on the card.

Try reformatting the card and loading the files on again. There is a lot of FAT table checking done in the sample.


Test dragging window separator with mouse

This PR adds a test to check dragging the horizontal & vertical
window separator using the mouse.

Codecov Report

Merging #4226 into master will increase coverage by 0.08%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #4226      +/-   ##
==========================================
+ Coverage   79.53%   79.62%   +0.08%
==========================================
  Files         106      106
  Lines      141554   141554
==========================================
+ Hits       112590   112712     +122
+ Misses      28964    28842     -122

Impacted Files
Coverage Δ

src/ex_cmds2.c
84.87% <0%> (-0.1%)
:arrow_down:

src/message.c
76.38% <0%> (-0.05%)
:arrow_down:

src/terminal.c
79.32% <0%> (-0.04%)
:arrow_down:

src/gui_gtk_x11.c
48.96% <0%> (+0.04%)
:arrow_up:

src/term.c
68.74% <0%> (+0.1%)
:arrow_up:

src/os_unix.c
59.53% <0%> (+0.13%)
:arrow_up:

src/if_xcmdsrv.c
84.02% <0%> (+0.17%)
:arrow_up:

src/gui.c
57.63% <0%> (+0.25%)
:arrow_up:

src/normal.c
76.73% <0%> (+0.27%)
:arrow_up:

src/ui.c
53.5% <0%> (+1.79%)
:arrow_up:

... and 1 more

Continue to review full report at Codecov.

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