Server restart warning not firing

The 5 minute warning to players that the server will restart is not firing off in RCON. Even after saving RCON settings. Server just restarts without any warnings.

Sorry about the late reply. For some reason I did not receive any notifications.
Are you still having this issue?

Yes. Still having issue
Sent from Proton Mail for iOS
On Sat, Nov 19, 2022 at 9:53 PM, Lacyway @.***> wrote:

Sorry about the late reply. For some reason I did not receive any notifications.
Are you still having this issue?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Would you be able to test any RCON commands with the RCON console to see if they go through?
I won't be able to test it locally for a bit. If you could test that for me that'd be a big help.

I can send messages with rcon no problem. Its just the auto warning doesnt fire for the auto restart server option. But I can test commands if you need me too. Just let me know which ones.
Sent from Proton Mail for iOS
On Sat, Nov 19, 2022 at 9:57 PM, Lacyway @.***> wrote:

Would you be able to test any RCON commands with the RCON console to see if they go through?
I won't be able to test it locally for a bit. If you could test that for me that'd be a big help.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

I'll try my best to test what could be wrong soon. Been busy with real life and kind of lost interest in V Rising, but if I have some spare time I'll investigate.
Sorry about that.

No worries. Most of my players know now when it will restart, so kind of used to it. But it would be nice if and when you have the time. Thanks.
Sent from Proton Mail for iOS
On Sat, Nov 19, 2022 at 10:08 PM, Lacyway @.***> wrote:

I'll try my best to test what could be wrong soon. Been busy with real life and kind of lost interest in V Rising, but if I have some spare time I'll investigate.
Sorry about that.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Should be fixed post 3.0 release


Fix border style

Describe the bug
Borders are kind of italic. (Only on Windows Terminal ).
How to fix them ?

I tried changing hlgroup doing like this : (using catppuccin colorscheme )
          DiagnosticSource = { italic = false },
          DiagnosticPos = { italic = false },
          DiagnosticWord = { italic = false },
          DiagnosticError = { italic = false },
          DiagnosticWarn = { italic = false },
          DiagnosticInfo = { italic = false },
          DiagnosticBorder = { italic = false },
          DiagnosticNormal = { italic = false },
          DiagnosticText = {},
          DiagnosticShowNormal = { italic = false },
          DiagnosticShowBorder = { italic = false },
          SagaBorder = { italic = false },
          LspSagaDiagnosticSource = { italic = false },
          LspSagaDiagnosticPos = { italic = false },
          LspSagaDiagnosticWord = { italic = false },
          LspSagaDiagnosticError = { italic = false },
          LspSagaDiagnosticWarn = { italic = false },
          LspSagaDiagnosticInfo = { italic = false },

Bid it didnt change anything.
This problem only appear on Windows Terminal, since I've the same configuration of neovim on my Linux and I've correct borders.
Steps to reproduce
I don't have any steps to reproduce the issue, since the only thing that changed was my OS and the terminal.
All I can share is my neovim configuration if someone wants to try it on a Windows Terminal + Fira Code Nerd Font.


Package Request: Kavita, a self-hosted digital library

Project description
Kavita is a fast, self-hosted digital library which supports a vast array of file formats, including ebook, comic, and manga formats.
Metadata

homepage URL: https://www.kavitareader.com/#downloads-v1-linux
source URL: https://github.com/Kareadita/Kavita
license: GPL3
platforms: unix, linux, darwin

Should be easier now that pkgs.buildNpmPackage exists

Relevant PRs: https://github.com/NixOS/nixpkgs/pull/227890 and https://github.com/NixOS/nixpkgs/issues/147923

I think this can be closed now as #228002 has been merged.


Compatible with pecl-mongodb

Compatible with pecl-mongodb for PHP 7 and earlier versions,
pecl-mongo package has deprecated and isn't available for PHP 7

Do you know if there is a way of telling mongodb to return arrays instead of objects?

Do you know if there is a way of telling mongodb to return arrays instead of objects?

There is a method named "toArray" for MongoDB\Driver\Cursor
see: http://php.net/manual/en/mongodb-driver-cursor.toarray.php

There is a method named "toArray" for MongoDB\Driver\Cursor
see: http://php.net/manual/en/mongodb-driver-cursor.toarray.php

You must use MongoDB\BSON\UTCDateTime for handle datetime

Make sure to rename the other getName and ensureIndex calls since they don't exist on https://github.com/mongodb/mongo-php-library anymore:
https://github.com/OFFLINE-GmbH/laravel-mongodb/compare/2dc68b03be0e9f9878937832029c16ca7d8fcf9d...OFFLINE-GmbH:ec2d90b26e6ec3fb3c2e24eea09ee873ef6666e8

Any update on this?

Yeah i'd be interested to know if there's any update too. If any help is required i'm more than happy to lend a hand where i can.

+1, i'm too interested and waiting.

These changes are on the pecl-mongodb branch; but not all tests are green yet.


Debian/Ubuntu support

Initial support for Debian/Ubuntu based systems. Based on discussion in #61, I restructured the repository files to separate the packaging files from the src files. The new file structure is shown at the bottom of this post.
A few notes:

Currently does not support any suspend functionality for Debian/Ubuntu
testrun.sh does not run automatically after installing, but passes all tests when run by itself
Unsure if/how the Arch Linux PKGBUILD file will be affected

yubikey-full-disk-encryption
|- CONTRIBUTING.md
|- LICENSE
|- README.md
|- packaging/
|   |- archlinux/
|   |   |- Makefile
|   |   |- PKGBUILD
|   |- debian/
|   |   |- Makefile
|   |   |- debian/
|   |   |   |- changelog
|   |   |   |- compat
|   |   |   |- control
|   |   |   |- copyright
|   |   |   |- rules
|   |   |   |- ykfde.postinst
|- src/
|   |- ykfde.conf
|   |- ykfde-enroll
|   |- ykfde-format
|   |- ykfde-open
|   |- testrun.sh
|   |- archlinux/
|   |   |- initramfs-suspend
|   |   |- ykfde-suspend
|   |   |- ykfde-suspend.service
|   |   |- hooks/
|   |   |   |- ykfde
|   |   |- install/
|   |   |   |- ykfde
|   |- debian/
|   |   |- key-script
|   |   |- hooks/
|   |   |   |- ykfde

Hi,
Is this still work in progress or not a active project anymore?
I have Ubuntu 22.04 and can not suspend my Lenovo T14s.

@lukas-fichtner The project is active but this support never left draft mode.

Oh that's too bad :(
In fact, I was lucky and it was due to a different problem. I only had to adjust the power setting "sleep state" in the BIOS and change it to Linux. Now the suspend mode works perfectly on my Lenovo.

This is a very good hint as my T14s is due on the 13th but yes, sounds off-topic to this specific MR.


No missing scripts

Unity version: 5.4.1f1
When attempting to use this, it just says "No missing scripts", even when I'm looking directly at a bunch of  them in the inspector. I also get the following error in the console:
get_dataPath is not allowed to be called from a ScriptableObject constructor (or instance field initializer), call it in OnEnable instead. Called from ScriptableObject 'MissingScriptResolverWindow'.
See "Script Serialization" page in the Unity Manual for further details.
UnityEngine.Application:get_dataPath()
Giacomelli.Unity.Metadata.Infrastructure.Bootstrap.MetadataBootstrap:Setup()
Giacomelli.Unity.EditorToolbox.WindowBase:.ctor(String, Single, Single)
Giacomelli.Unity.EditorToolbox.MissingScriptResolverWindow:.ctor()
UnityEditor.EditorWindow:GetWindow()
Giacomelli.Unity.EditorToolbox.MissingScriptResolverWindow:Init()

Can you upload a sample Unity project that shows the problem? This you help me to find the solution. Tks.

Giacomelli Issue Example.zip

Any update on this?


Replace infuraKey

When I put the infuraKey replacement for myself when applying for the infuraKey, network request will appear responseError (APIKit. ResponseError. UnacceptableStatusCode (403)) this error, How should the problem be solved?

@wangaojie001 can you see if the HTTP response body gives a clue? Which chain are you connecting to?

Already solved, just add polygon request permission to infura


"The record you attempted to access has been deleted" error when clearing Account field on Contact

Error message: "The record you attempted to access has been deleted. The user who deleted this record may be able to recover it from the Recycle Bin. Deleted data is stored in the Recycle Bin for 15 days."
I'm seeing this error in the following scenario:

Contact Record Type is originally something other than "Household Contact"
Contact is attached to an Account with a record type other than "Household Account"
Contact has blank address fields
User changes the record type to "Household Contact" and clicks Save
User edits the Contact again and clears the Account field (the goal is to allow the NPSP to create a new Household Account for the Contact)
User clicks Save

It will work if the Contact has any values in the Address fields.
I've reproduced this in both Production and Sandbox with NPSP v3.82.

**lurch: add

Tracking W-011655

@force2b I cannot reproduce this.  Are you still seeing this problem?  Are you sure it is not related to your contact record types (which NPSP does not have or use)?  Can you provide a debug log that includes the error?  Do you know what ID and object it is saying has been deleted?  What is in your recycle bin when you encounter this?

@force2b Hi Michael, any update on this?  thanks.

Sorry. I've been swamped. It's on my queue, but might be another week or so.

@force2b can you reproduce this still?  if not, we need to close this issue.  thanks.

@davidhabib Sorry for the delay. I set up a new org with NPSP3 installed, created the additional Contact record types to match the steps outlined above. Unfortunately I still could not reproduce this. It's really odd because the clients org doesn't have any customizations around the Address object, but clearly something is unique about that orgs config. I'll close this issue and dig around in their org more to see if I can find a true root cause. Sorry for adding any confusion.

Thanks for testing again @force2b


x/pkgsite: Request removal of obsolete package paths

The instructions at https://go.dev/about#removing-a-package suggest using module retract directives to remove package paths from the doc site. However, in this case I would like to remove a number of packages that I wrote, whose repositories have been moved (from Bitbucket to GitHub, as of 2019), and where the original repository has been deleted. I don't think I can do that via a go.mod directive.
If there is a different way to do this, can you please point me to the instructions? Otherwise, I would like to request removal of the following modules (with all their packages) from the doc site:
bitbucket.org/creachadair/bitstream
bitbucket.org/creachadair/blobstore
bitbucket.org/creachadair/cache
bitbucket.org/creachadair/cityhash
bitbucket.org/creachadair/ctrl
bitbucket.org/creachadair/culprit
bitbucket.org/creachadair/filedata
bitbucket.org/creachadair/fileinput
bitbucket.org/creachadair/flagstruct
bitbucket.org/creachadair/getpass
bitbucket.org/creachadair/goflags
bitbucket.org/creachadair/indexed
bitbucket.org/creachadair/ini
bitbucket.org/creachadair/keyfish
bitbucket.org/creachadair/misctools
bitbucket.org/creachadair/notifier
bitbucket.org/creachadair/pattern
bitbucket.org/creachadair/perm
bitbucket.org/creachadair/postscript
bitbucket.org/creachadair/prgfile
bitbucket.org/creachadair/pson
bitbucket.org/creachadair/scapegoat
bitbucket.org/creachadair/snapback
bitbucket.org/creachadair/stockopt
bitbucket.org/creachadair/tarsnap
bitbucket.org/creachadair/taskgroup
bitbucket.org/creachadair/vocab
bitbucket.org/creachadair/vql

CC @julieqiu @jba @jamalc

We can remove it.

This appears to have been done, at least inasmuch as I no longer see these packages listed in searches. I'm not sure if I'm intended to close this, but from where I sit it appears resolved. Thank you!


github: add schedule for nightly docker build

Fixes https://github.com/lightningnetwork/lnd/issues/6157.

Updated the tag to say daily. Though I wonder: Will people realize this isn't meant for mainnet or do we need to be more specific about it? E.G. daily-unstable or daily-no-mainnet or daily-do-not-use-for-mainnet?

Will people realize this isn't meant for mainnet or do we need to be more specific about it? E.G. daily-unstable or daily-no-mainnet or daily-do-not-use-for-mainnet?

Yeah I think something like that is a good idea. daily-testing-only?

Yeah I think something like that is a good idea. daily-testing-only?

Cool, I went with daily-testing-only.

Cool, these builds will show up on https://hub.docker.com/r/lightninglabs/lnd/tags ?

Yes, if everything runs as expected.

Is there a strong reason to turn this off? How about coexisting with the other daily tag system?

I think there was an issue with auto-syncing the images to a repo that has tag immutability turned on. But I think that single daily tag could just be ignored for that, then we could have both tagging systems. Any thoughts, @thinkmassive?

Either way is great but master sounds best sure

Added in #6346


Can't load ckpt

I use byol-pytorch-master/examples/lightning/train.py to generate ckpt locally after training, but when I load ckpt, there will be the following errors. How should I load it? Thanks a lot!

I tried this and it seemed okay, I don't know if it is correct.

At the same time, the resnet parameters have also changed. Is the ResNet model saved in this way correct?

yes, ckpt['state_dict'] saves the model's parameters. The way that pytorch lightning load checkpoint is different from pytorch, you should try the following code instead:
from torchvision import models
resnet = models.resnet50(pretrained=False)
cfg = dict(
    net=resnet,
    image_size = 256,
    hidden_layer = 'avgpool',
    projection_size = 256,
    projection_hidden_size = 4096,
    moving_average_decay = 0.99
)
model = SelfSupervisedLearner.load_from_checkpoint(
            'lightning_logs/version_1/checkpoints/epoch=127.ckpt', **cfg
          )

model = SelfSupervisedLearner.load_from_checkpoint(
'lightning_logs/version_1/checkpoints/epoch=127.ckpt', **cfg
)
when I tried this, I got another issue:" TypeError: load_from_checkpoint() got an unexpected keyword argument 'net'"

model = SelfSupervisedLearner.load_from_checkpoint(
'lightning_logs/version_1/checkpoints/epoch=127.ckpt', **cfg
)
when I tried this, I got another issue:" TypeError: load_from_checkpoint() got an unexpected keyword argument 'net'"


Enable puglSetPositionHint prior puglRealize

puglSetPositionHint() was without any effect if called prior puglRealize(). The main reason was that the "use the default position" condition in getInitialFrame() wasn't fulfilled and thus not used. The fallback for this was the window center algorithm which caused clipping in the majority of the LV2 hosts. And I just started to use the new position hints.
I made changes as discussed in #98. Win and mac edits were mainly copy/pasted from x11 but not tested.
I know you are currently working on this drafted branch. Feel free to take it, or get inspiration, or do something else with it.

Thanks, although the (usual) way I'm working on that branch isn't really compatible with literally merging this (or anything).  The current version incorporates most of the things here, if slightly differently.


Velocity class deletes a container data of dropped shulker boxes.

minecraft version: 1.20.4
magic version: 10.9.3-df02033
server: git-paper-435
When a dropped shulker box is pushed by Velocity class, its container NBT is deleted.
https://github.com/user-attachments/assets/70f29ac4-ed7b-4bc6-846a-41e6931847cb
This is the spell which is used in the above video.

This doesn't occur for any other container items like chest, barrel, etc... .
I can not use English well. So i'm sorry if my writing is difficult to read.

Hello, thank you for the report!
I have been unable to reproduce this. I tried with your exact setup- which is actually a little weird. You're making the shulker box itself cast a spell... I can't imagine that would happen under normal circumstances.
I also tried just using the "Push" spell on a dropped box.
In both cases the inventory stayed.
I believe there's something weird going on since you have it on video, but I will need to be able to reproduce it (make it happen again) to have any chance of fixing it.
Can you please tell me what version of magic and server you are using? The output of the following commands would be great to see:
/version
/magic

Thank you, sorry it's taken me so long to look into this!


Update secrets-good-practices.md

Thank @bezalel-7  for the PR, We have a policy on Trivial edits and since this qualifies as one, we would request you to go through the document and batch all grammatical or typo nits into one PR.


keypoint confidence score

First, the models have been quite accurate and fast to infer, thank you for that. However, in my application, usually at the beginning of videos, there are a couple of frames where the person walks into view and are partially occluded. I'm looking for a way to detect if the prediction's confidence level is low, like during starting frames. Is it possible to calculate a confidence score for each keypoint prediction? I've seen the extract_coordinates function in helpers.py, is there a way to get C score along with coordinate?

I've read more on confidence map and figured out the confidence score for each body part. It's the conf[int(peak_y),int(peak_x) in the function extract_coordinates in helpers.py. Although I wonder why when confidence score is higher than confidence level, 0.5 is added to peak_x and peak_y. Doesn't seem very significant.


fix Sankey Caps - or provide option?

I am working with Sankey - I use it to generate a network of O-D trips for NYC citibikes.
It is awesome, but one thing I found is that each edge caps with the square (?) - meaning that if radius of the node circle is similar to the width of the edge, we see edge corners.
It would be awesome to be able to either make round caps or stop edges at the node itself (see image below)

Since you closed this, what's your resolution? This might be a better default parameter.

'solid_capstyle':'round' for sankey line kwargs


Crash when using Live Coding with Melee Trace in C++

I keep getting this crash when I try to compile via live coding with MeleeTrace as a dependency. I'm not even calling anything in my Weapon constructor class, maybe except for calling 	UPROPERTY(EditAnywhere, Category = "Gameplay") FMeleeTraceInfo WeaponTraceInfo; in the .h file
Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Obj.cpp] [Line: 148] We are currently retrieving VTable ptr. Please use FVTableHelper constructor instead.

UnrealEditor_CoreUObject
UnrealEditor_MeleeTrace!InternalConstructor<UMeleeTraceShape_Line>() [D:\RocketSync\5.3.0-27405482+++UE5+Release-5.3\Working\Engine\Source\Runtime\CoreUObject\Public\UObject\Class.h:3597]
UnrealEditor_CoreUObject
UnrealEditor_MeleeTrace!UMeleeTraceShape_Line::MakeLineShape() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\MeleeTrace\Source\MeleeTrace\Private\MeleeTraceShape.cpp:23]
UnrealEditor_MeleeTrace!FMeleeTraceInfo::FMeleeTraceInfo() [D:\build\U5M-Marketplace\Sync\LocalBuilds\PluginTemp\HostProject\Plugins\MeleeTrace\Source\MeleeTrace\Private\MeleeTraceInfo.cpp:10]
UnrealEditor_MyGameProject_patch_0!AWeapon::AWeapon() [D:\Big Boss\Documents\Unreal Projects\MyGameProject\Intermediate\Build\Win64\UnrealEditor\Inc\MyGameProject\UHT\Weapon.gen.cpp:540]
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_MyGameProject_patch_0!AWeapon::GetPrivateStaticClass() [D:\Big Boss\Documents\Unreal Projects\MyGameProject\Intermediate\Build\Win64\UnrealEditor\Inc\MyGameProject\UHT\Weapon.gen.cpp:334]
UnrealEditor_CoreUObject
UnrealEditor_MyGameProject_patch_0!APlayerWeapon::GetPrivateStaticClass() [D:\Big Boss\Documents\Unreal Projects\MyGameProject\Intermediate\Build\Win64\UnrealEditor\Inc\MyGameProject\UHT\PlayerWeapon.gen.cpp:21]
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_LiveCoding
UnrealEditor_LiveCoding
UnrealEditor_LiveCoding
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll

@E3245 thanks for reaching out! That's is interesting, I think I've used live coding without any issues on version 5.3 which based on the crash log you also use. I will have a closer look to see if I can find something soon!

Hey, just wanted to let  you know that I've been able to reproduce it and am trying to see what is causing it and to patch it. Will update you once I get a resolution on this!

@E3245 I'm happy to say that I was able to fix this crash. If you urgently need this in your project then feel free to get latest version from the master branch. I will be preparing few more improvements and will try to make a new release to the marketplace and GitHub releases before the end of the week.
Thanks again for reporting the issue!

Closing the issue as this is fixed in release v1.4.0
Thanks for reporting the issue!


Twitter V2 Get Tweets API's Query Parameter not working

I'm following this twitter api documentation to get detailed information for a tweet, but I can't seem to get the full tweet details (retweet count, hearts, geotags etc etc) with this API. I'm only getting this response for a tweet from the API:
{
  edit_history_tweet_ids: [ '1766576440005333244' ],
  id: '1766576440005333244',
  text: 'RT @MOdesign19: Congratulations KTR. #saloneX #supportlocalfootball'
}

I've put the proper query parameters (like expansions, tweet.fields), but nothing seems to be getting me a detailed report of the tweet. This is what my code looks like:

const needle = require("needle");

const YOUR_BEARER_TOKEN = "MY-TOKEN-HERE";
const TWEET_ID = "1766576440005333244"; // Replace with the actual tweet ID

// Define the endpoint URL
const endpointUrl = `https://api.twitter.com/2/tweets/${TWEET_ID}`;

// Set up the request headers
const headers = {
  Authorization: `Bearer ${YOUR_BEARER_TOKEN}`,
  "Content-Type": "application/json",
};
// Specify the fields you want to retrieve
const tweetFields =
  "attachments,author_id,context_annotations,conversation_id,created_at,entities,geo,id,in_reply_to_user_id,lang,non_public_metrics,public_metrics,organic_metrics,promoted_metrics,possibly_sensitive,referenced_tweets,reply_settings,source,text,withheld";

// Set up the request parameters including the desired fields
const params = {
  "tweet.fields":
    "attachments,author_id,context_annotations,conversation_id,created_at,entities,geo,id,in_reply_to_user_id,lang,public_metrics,referenced_tweets,reply_settings,source,text,withheld",
  expansions: "author_id",
  "user.fields":
    "created_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,public_metrics,url,username,verified,verified_type,withheld",
  "media.fields":
    "duration_ms,height,media_key,preview_image_url,type,url,width,public_metrics,alt_text,variants",
  "place.fields":
    "contained_within,country,country_code,full_name,geo,id,name,place_type",
  "poll.fields": "duration_minutes,end_datetime,id,options,voting_status",
};

async function helloWorld() {
  // Make the GET request
  const response = await needle("get", endpointUrl, params, { headers });
  console.log(response.body.data);
}

helloWorld();

any update?


Prototype of a vertx HTTP server for strimzi-admin

This is a prototype of a suggested pluggable server using the Java
SPI. If you wish to run it, simply run a mvn clean package. The main
vertx application is in the http-server module and it can be run using
java -cp http-server/target/http-server-1.0-SNAPSHOT-fat.jar io.strimzi.http.server.Main
once you have built it.
The server has no endpoints defined and you need to add modules that implement the
RestService interface to the classpath. I have included 2 sample modules, health and
kafka-admin.
The health module adds two endpoints as follows:
GET /health/status
GET /health/liveness
The kafka-admin modules adds two endpoints as follows:
GET /kafka/topics
GET /kafka/topics/{topic-name} where {topic-name} can be anything.
Both modules serve up static sample JSON. To run the server to include them, you simply run the following from the command line:
java -cp kafka-admin/target/kafka-admin-1.0-SNAPSHOT-fat.jar:health/target/health-1.0-SNAPSHOT-fat.jar:http-server/target/http-server-1.0-SNAPSHOT-fat.jar io.strimzi.http.server.Main
Signed-off-by: Graeme McRobert<EMAIL_ADDRESS>

I left some comments but it's a good starting point overall.

@tombentley @scholzj @samuel-hawker @ppatierno Some of the questions in this PR are probably better answered in some sort of design outline. Would it be better for me to create a proposal document in the https://github.com/strimzi/proposals repository and combine the comments from this PR and the issue https://github.com/strimzi/strimzi-kafka-operator/issues/2540 so that there is a single place for the discussion in a readable form. When we are satisfied that it is the right direction then I will update the PR to reflect the code comments and any decisions from the discussion.

@gmcrobert +1000 from me ;-)

I have created the proposal: https://github.com/strimzi/proposals/pull/9

What is the progress of this PR?

@sknot-rh this PR has been superseded by https://github.com/strimzi/strimzi-admin/pull/5 . I will close this PR.


⚠ GitLab Server has degraded performance

In fc54379, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 6895 ms

Resolved: GitLab Server performance has improved in f1ef488.


TypeAdapter for RootModel doesn't work with RootModel instance

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
Hello!
It seems like the TypeAdapter doesn't work with instances of RootModel.
Let me demonstrate:
from typing import Any, Generic, Literal, TypeVar, Union
from pydantic import Field, RootModel, BaseModel, TypeAdapter

_S = TypeVar("_S")

class Ok(BaseModel, Generic[_S]):
    success: Literal[True] = True
    result: _S

class Error(BaseModel):
    success: Literal[False] = False

class APIResult(RootModel[Union[Ok[_S], Error]]):
    root: Union[Ok[_S], Error] = Field(discriminator="success")

api_result = APIResult(Ok(result="result"))
adapter: TypeAdapter[Any] = TypeAdapter(APIResult[str])
adapter.validate_python(api_result, from_attributes=True)

This results in:
Traceback (most recent call last):
  File "/Users/apawlucz/src/scripts/test_pydantic_generics.py", line 67, in <module>
    adapter.validate_python(api_result, from_attributes=True)
  File "/Users/apawlucz/opt/anaconda3/envs/rd_310/lib/python3.10/site-packages/pydantic/type_adapter.py", line 209, in validate_python
    return self.validator.validate_python(__object, strict=strict, from_attributes=from_attributes, context=context)
pydantic_core._pydantic_core.ValidationError: 1 validation error for APIResult[str]
  Unable to extract tag using discriminator 'success' [type=union_tag_not_found, input_value=APIResult(root=Ok(success=True, result='result')), input_type=APIResult]
    For further information visit https://errors.pydantic.dev/2.3/v/union_tag_not_found

After looking into this, this works when dumping the RootModel instance to dict first:
adapter.validate_python(api_result.dict(), from_attributes=True)

I'd rather expect validate_python() to be working regardless if dict is being passed or actual model instance.
Docs for TypeAdapter don't mention the RootModel.
To give a little bit of context:
the snippets above are just an example how serialization/validation works in FastAPI:
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def root() -> APIResult[str]:
    return APIResult(root="str")

So similarly this fixes the issue:
@app.get("/")
def root() -> APIResult[str]:
    return APIResult(root="str").dict()

But of course mypy doesn't like it (which is correct).
And then when starting the FastAPI app and going to the / root path this is what I'm getting:
  ... [TRUNCATED]

  File "/Users/apawlucz/opt/anaconda3/envs/rd_310/lib/python3.10/site-packages/fastapi/routing.py", line 294, in app
    content = await serialize_response(
  File "/Users/apawlucz/opt/anaconda3/envs/rd_310/lib/python3.10/site-packages/fastapi/routing.py", line 154, in serialize_response
    raise ResponseValidationError(
fastapi.exceptions.ResponseValidationError: 1 validation errors:
  {'type': 'union_tag_not_found', 'loc': ('response',), 'msg': "Unable to extract tag using discriminator 'success'", 'input': APIResult(root=Ok(success=True, pet_type='cat', result='str')), 'ctx': {'discriminator': "'success'"}, 'url': 'https://errors.pydantic.dev/2.3/v/union_tag_not_found'}

So this stems from the fact how the FastAPI uses TypeAdapter to validate the model.
This is how FastAPI instantiates TypeAdapter:

https://github.com/tiangolo/fastapi/blob/0.103.1/fastapi/_compat.py#L100-L103

And this is how it gets used:

https://github.com/tiangolo/fastapi/blob/0.103.1/fastapi/_compat.py#L117-L121

At first I thought this is a FastAPI bug, but now I'm leaning towards thinking this is rather a Pydantic bug (though not 100% sure).
Example Code
No response
Python, Pydantic & OS Version
pydantic version: 2.3.0
        pydantic-core version: 2.6.3
          pydantic-core build: profile=release pgo=false
                 install path: /Users/apawlucz/opt/anaconda3/envs/rd_310/lib/python3.10/site-packages/pydantic
               python version: 3.10.9 | packaged by conda-forge | (main, Feb  2 2023, 20:24:27) [Clang 14.0.6 ]
                     platform: macOS-13.5.2-x86_64-i386-64bit
     optional deps. installed: ['email-validator', 'typing-extensions']

FastAPI version: 0.103.1

Do you need the discriminator here? If you comment out the = Field(discriminator="success") the error goes away.
This makes sense because what's happening is it's trying to access the .success attribute to determine which case to validate as. The problem is that APIResult[str] wants to get an instance of APIResult[str], but you've passed an instance of APIResult, which is actually a parent class of APIResult[str]. (With pydantic generics, unlike "regular" generics, __class_getitem__ actually returns subclasses, not just GenericAliases. This is important because we store the validation logic in class attributes, and they need to be different for concrete parametrizations of the generic models.)
Because you are passing in an APIResult, which is not a subclass of APIResult[str], it tries to look for the discriminator for validation, but of course APIResult doesn't have an attribute success, it just has root.
I'll note that if you do give it an instance of the correct subclass, the error goes away:
from typing import Any, Generic, Literal, TypeVar, Union
from pydantic import Field, RootModel, BaseModel, TypeAdapter

_S = TypeVar("_S")

class Ok(BaseModel, Generic[_S]):
    success: Literal[True] = True
    result: _S

class Error(BaseModel):
    success: Literal[False] = False

class APIResult(RootModel[Union[Ok[_S], Error]]):
    root: Union[Ok[_S], Error] = Field(discriminator="success")

api_result = APIResult[str](Ok[str](result="result"))
adapter: TypeAdapter[Any] = TypeAdapter(APIResult[str])
adapter.validate_python(api_result, from_attributes=True)

This indeed works. Thank you!

Glad to hear that @dmontagu's solution worked for you!


Modern cicd manual

due to the madness following the tf merge, here's an attempt to pull in shobit's work in #44
I previously attempted in #57 but it was bonkers.

this works now.  checking one last time on a clean project end-to-end.
(* apart from SLOs)

ahoy @muncus it works

note: there are two instances where I had to hardcode a branch, see the last couple commits.  these should be removed on submission. (or just after).

works end to end now.


Discrepancy in replicating Figure 3 baseline experiment with 4 GPUs Instead of 8

Hello!
I attempted to replicate the baseline experiment depicted as the orange line "Baseline: 8x batch size with data parallelism" in Figure 3 using the following launch code:
torchrun --nproc_per_node=4 \
    train_fsdp.py \
    --sharding-strategy NO_SHARD \
    --per-device-train-batch-size 32 \
    --precision bf16-mixed \
    --total-batch-size 512 \
    --total-steps 88000 \
    --project OpenDiLoCo \
    --lr 4e-4 \
    --path_model PrimeIntellect/llama-150m-fresh \
    --log-activations-steps 200 \
    --ckpt.interval 8000 \
    --ckpt.path 150_ckpt

This is compared to the launch code provided under the "150m DDP Baseline" section in the README:
torchrun --nproc_per_node=8 \
    train_fsdp.py \
    --sharding-strategy NO_SHARD \
    --per-device-train-batch-size 32 \
    --precision bf16-mixed \
    --total-batch-size 512 \
    --total-steps 88000 \
    --project OpenDiLoCo \
    --lr 4e-4 \
    --path_model PrimeIntellect/llama-150m-fresh \
    --log-activations-steps 200 \
    --ckpt.interval 8000 \
    --ckpt.path 150_ckpt

The only difference is the number of GPUs used for the experiment; unfortunately, I have only 4 GPUs at my disposal.
After examining the code in train_fsdp.py, it seems the executions should be very similar due to the same amount of computation corresponding to one step of the algorithm. Specifically, the code includes:
assert config.total_batch_size % world_size == 0
batch_size = config.total_batch_size // world_size

assert batch_size % config.per_device_train_batch_size == 0
gradient_accumulation_steps = batch_size // config.per_device_train_batch_size

# ...

for step, batch in enumerate(train_dataloader, start=start_step * gradient_accumulation_steps):
    real_step = (step + 1) // gradient_accumulation_steps
    is_accumulating = bool((step + 1) % gradient_accumulation_steps)

    # ...

    with model.no_sync() if is_accumulating else nullcontext():
        outputs = model(**batch)
        loss = outputs.loss / gradient_accumulation_steps

        loss_batch += loss.detach()

        scaler.scale(loss).backward()

Given that config.total_batch_size is the same in both the paper's and my runs, the execution in my case ends up having twice the gradient_accumulation_steps due to having half the number of GPUs. This means that during one real step, the same number of batches are utilized. Therefore, aside from stochasticity in the AdamW optimizer, the runs should be approximately similar.
However, I was surprised to observe worse results, which I present in the plot below:

Compared to Figure 3 in the OpenDiLoCo paper, the perplexity I obtained is about one point lower. While this might seem like a small difference, considering that the baseline experiment with a 1x batch size yields around 16 perplexity, achieving around 15 perplexity with an 8x larger batch size might undermine the efficacy of the entire approach.
What do you think could be causing this issue? Did I make a mistake in the launch code, or is there indeed a significant difference between running the code on 4 GPUs versus 8 GPUs?

I think you are correct in your assumption that the change in nproc-per-node should not affect the experiment. That should be no issue.
As for the result of your experiment, I dont think anything is wrong, the perplexity graph you obtained is similar to the blue line in the paper:

The orange line is obtained from setting a batch size of 4096.
The purpose of the plot is to show that using DiLoCo results in a graph that will be between DDP with the chosen per worker batch size (1/8 the flops of the DiLoCo with 8 workers) and DDP with 8 times the batch size (similar flops to DiLoCo with 8 workers). What we observe is that beyond ~86k steps, the perplexity is roughly the same, making the reduced communication overhead of using DiLoCo a "free lunch"

Thank you for pointing out the need to adjust the batch size to replicate the orange line results. It would be helpful to include a comment about this in the README file to prevent misunderstandings.


How to just format css without minfying?

How would I format css without minifying it?
I am looking along the lines of plugin uglify which has an option that does that for .js files by setting beautify: true.
Is there something similar in clean-css? Thank you.

We have a ticket #209 regarding formating but I didn't have a chance to look at it yet. Closing this as a duplicate for now.


Add the Date to the Digest + efficiency changes

This adds the date to the digest and it should theoretically be able to process two levels of images. Unfortunately I do not have a account that has that issue, so if someone could pull this branch and check that would be fantastic.
I also changed the digest code for that page, I may have gotten a little bit carried away but hopefully this should limit the number of images in the local directory.

@cthorn2 can you try this one?

Looks good.


cy.task('Matching image snapshot') failed with the following error

Hi, I'm using image snapshot lib and I got the following issue with it.

Little additionЖ: you need to setup setupNodeEvents inside e2e or component config sections as described in Cypress documentation.

Has this been resolved? I am using Cypress 9 and still have this issue

that's not an issue. you just need properly configure your plugin, instructions already given above.

I ran into this as well and thought it might help to share the full cypress.config.js I have:
const { defineConfig } = require('cypress')
const { addMatchImageSnapshotPlugin } = require('cypress-image-snapshot/plugin')

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {
      // implement node event listeners here
      addMatchImageSnapshotPlugin(on, config)
    },
  }
})

Kudos, this just fixed my error

Thanks you so much!


Make null constraints consistent and use before_commit

Fixes #20 by switching from after_commit to before_commit for
the operation that sets created_by_id and updated_by_id so
that we don't violate postgresql's null constraints.
This also allows us to use them consistently across all tables that
use created_by_id, so there's a migration for this.

@tmfrnz per https://github.com/dumparkltd/marine-defrag-server/issues/20#issuecomment-968625221
we need to decide how to handle the seeds records because it currently doesn't let us run the seeds we have with the null constraints:
rails aborted!
ActiveRecord::NotNullViolation: PG::NotNullViolation: ERROR:  null value in column "created_by_id" of relation "taxonomies" violates not-null constraint
DETAIL:  Failing row contains (1, Convention status, null, 2021-11-15 20:54:20.802569, 2021-11-15 20:54:20.802569, t, null, f, null, null, null, null, null, null, null, null, null).
marine-defrag-server/db/seeds.rb:116:in `base_seeds!'
marine-defrag-server/db/seeds.rb:11:in `initialize'
marine-defrag-server/db/seeds.rb:525:in `new'
marine-defrag-server/db/seeds.rb:525:in `<top (required)>'

Caused by:
PG::NotNullViolation: ERROR:  null value in column "created_by_id" of relation "taxonomies" violates not-null constraint
DETAIL:  Failing row contains (1, Convention status, null, 2021-11-15 20:54:20.802569, 2021-11-15 20:54:20.802569, t, null, f, null, null, null, null, null, null, null, null, null).
marine-defrag-server/db/seeds.rb:116:in `base_seeds!'
marine-defrag-server/db/seeds.rb:11:in `initialize'
marine-defrag-server/db/seeds.rb:525:in `new'
marine-defrag-server/db/seeds.rb:525:in `<top (required)>'
Tasks: TOP => db:seed

not sure if i fully understand your question and/or context but
a) I don't think we generally need a not null constraint on 'updated_by_idorcreated_by_id  b) 'updated_by_id or created_by_id fields are certainly not needed for all non-editable configuration records (https://github.com/dumparkltd/marine-defrag-server/issues?q=is%3Aissue+label%3AConfigRecord)

@tmfrnz OK cool, I'll remove the columns created_by_id and updated_by_id from every table which has a label of ConfigRecord which is:

actortype_taxonomies
actortypes
measuretype_taxonomies
measuretypes
resourcestypes
roles
taxonomies

Is that correct?

thanks @parndt that is pretty much correct at least the tables currently relevant for this project (except it should be resourcetypes).
other non-editable config tables not currently relevant are

frameworks
framework_taxonomies

Cool, thanks, I've updated the list because I'll refer to it later.

@tmfrnz I changed tack on this and removed the not null constraints because, you are right, they're not ultimately that helpful for us.
I also updated the seeds file to create the relationships directly instead of passing objects in. Let me know if you want me to revert this.

@tmfrnz I changed tack on this and removed the not null constraints because, you are right, they're not ultimately that helpful for us.
I also updated the seeds file to create the relationships directly instead of passing objects in. Let me know if you want me to revert this.

thanks @parndt, looks great!

happy to confirm this worked on the dev environment


fix: bail out when clicking with meta or ctrl modifier keys

The current implementation of the link component prevents the default behavior of opening a link in a new tab when doing cmd+click on Mac or ctrl+click on Windows. This PR restores this functionality.

I think we should copy https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191 to match the behavior.

Makes sense! I've updated the PR. Let me know if there's anything else I can do 🙂

Published in 0.0.4! Thanks!


Audit all uses of unsafe

[ ] Collect all unsafe expressions
[ ] Make sure they all have a comment with the respective reasoning
[ ] Publish the results & merge missing reasoning into the respective repos

The following crates should be included:

specs
shred
hibitset

Working on this now.

I've covered most of it in #566, but some points remain.


Build with Maven 3.5.2

Needed as a fix for https://issues.apache.org/jira/browse/MDEPLOY-221

should also the dailyBuild jobs and release-jobs on master should update to this Maven version?

I thought they are reusing the constants? Technically we only need this for the deploy jobs. Not sure if there is any harm upgrading it everywhere, probably not.

Let's upgrade only the deploy + PR jobs now. If everything goes well, we can upgrade the rest of the places.


dom-repeat: Duplicate values result in unsynchronized data

The collection-based key abstraction currently assumes unique array element identity.
Problem can be observed here (type bbbbb in the top input, and observe data out of sync):
http://jsbin.com/rabize/edit?html,output

+1, this would be really nice to have.
The workaround as suggested https://github.com/Polymer/polymer/issues/2667#issuecomment-167875621 is to wrap primitives in an object.
['analgesic', null, 'analgesic' ] -> [{k: 'analgesic'}, {k: null}, {k: 'analgesic'}]

I've come across this issue as well, it's quite a big problem when having an array of any non object type

I just ran into this with 1.4.0, but I don't believe I have duplicate values in my string array.
I have this tap handler:
addStep: function() {
    this.push("recipe.directions", "");
}

and I'm using paper-inputs for each recipe.directions element within dom-repeat.  I'm adding text to each step before I add the next one, so I don't think there are ever duplicate values.
I found the following workaround:
this.push("recipe.directions", new String());

This likely works because typeof new String() === 'object'

@kevinpschaaf are you still working on this? Would be nice to not have such a constrain on value uniqueness, especially when talking about binding on form inputs.

Original JSBin is now working correctly with Polymer 2, thus I am closing this issue.


Add Ukrainian support

Added Ukrainian language translations.

I don't known why test is not successful.

@epoberezkin, look please. It seems that coveralls is not assessing the situation correctly. Yes?


[Extensibility enhancements]No max duration on test suite

According to:

https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-performance-toolkit#using-bcpt-to-produce-a-large-test-database
We can use BCPT to create big databases with test data. This setting is preventing just that since it had max time of 4 hours to run the test suite.

@henrikfrovst, is this something we can support?

On a different note: this repository is slowly shutting down for PRs related to tools and the System Application. Going forward, please create issues and PRs for tools and the System Application in our brand new, much improved BCApps repo 🥳

On a different note: this repository is slowly shutting down for PRs related to tools and the System Application. Going forward, please create issues and PRs for tools and the System Application in our brand new, much improved BCApps repo 🥳
Definitely! Will do that 😎

@henrikfrovst, is this something we can support?
A middle way would be to do BCTP setup where you can pick the max test run time.
For instance an enum:

Max 4 hours
Max 40 hours (if you can support that)
No Limit.

If you can't support "No Limit" then make an error messages that  explains detailed that Msft doesn't support that but it can be done by manually changing the code in the app + link to repo.

Thanks for bringing this up. I understand the challenge and will review the suggestions and come back.

At this point we will not be opening up for unlimited execution time. We have created a work item to add more flexibility for local instances of the tool (not running against a Sandbox), and hence opening up for generating larger DBs.

Based on @henrikfrovst's comment, I'm going to close this PR. Henrik has created an internal work item for his team to make improvements in the direction of this PR.


Fix get db prep value when value is unicode

Replaces PR https://github.com/dcramer/django-uuidfield/pull/29

Found the same bug, and happy to see someone done a PR already thanks @zebuline


core: Publish shorthand as a dedicated package

... which would benefit the entire CSS-in-JS community!
I've been creating PRs toward inline-style-expand-shorthand, which is currently the only shorthand expander the entire CSS-in-JS community has, but none of them has been merged.

@SukkaW it's something that we can consider, after #52 will be merged I will followup on that 👍

@layershifter
A friendly ping since #52 has been merged, would you mind starting working on this? I'd expect it is being published as @griffel/shorthand.
And I can start working on porting features from inline-style-expand-shorthand to Griffel!

@SukkaW this is not our top priority now, but it will eventually happen.

Request the "flex" shorthands, thanks.

@SukkaW Griffel now has support for CSS shorthands in #531, the most of shorthands.*() are now deprecated, we don't plan to publish them.


V2.0 list public events

Added ability to list public events.

Codecov Report

Merging #330 into v2.0 will increase coverage by 0.5%.
The diff coverage is 98.38%.

@@           Coverage Diff            @@
##             v2.0    #330     +/-   ##
========================================
+ Coverage   87.59%   88.1%   +0.5%
========================================
  Files          30      31      +1
  Lines        1217    1269     +52
========================================
+ Hits         1066    1118     +52
  Misses        151     151

Impacted Files
Coverage Δ

konfera/views.py
100% <100%> (ø)
:arrow_up:

konfera/tests/test_views.py
100% <100%> (ø)
:arrow_up:

konfera/migrations/0003_auto_20171110_1007.py
100% <100%> (ø)

konfera/serializers.py
100% <100%> (ø)
:arrow_up:

konfera/urls.py
100% <100%> (ø)
:arrow_up:

konfera/models/event.py
93.02% <75%> (-0.16%)
:arrow_down:

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 6eb15ce...151b065. Read the comment docs.


Fix for issue #28

Disabling all dragging into the WebView by subclassing it (as ACEWebView) and overriding performDragOperation

Cool! This could be extended to address #28


Update admindoc.md

Line numbering change

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


How to create poll keyboard

Required Information

PHP version: 7
PHP Telegram Bot version: Last version
Using MySQL database: yes
Update Method: getUpdates
Self-signed certificate: no

I want to have keyboard with default action than sending itself text ,
for example in a poll keyboard , we should show a text and send only the choose of user to moderate , not all of button text .
example :
https://core.telegram.org/file/811140184/1/5YJxx-rostA/ad3f74094485fb97bd
thanks in advance

Hi @mellat
Not quite sure I understand exactly what you want.
The example that you linked, will print the entire button text when it is pressed.
Could you maybe explain what you would like in more detail with examples please?
Also, as far as I'm aware PHP version 5.7 was declined, so I'm not sure what version you're on. Did you mean PHP 7?

I want to send a value (like ID) when a button clicked .
example :
`
$keyboard = [[
'category1' => 2 ,
'category2' => 4
]];
                $reply_keyboard_markup = new ReplyKeyboardMarkup(
                    [
                        'keyboard' => $keyboard ,
                        'resize_keyboard' => true,
                        'one_time_keyboard' => true,
                        'selective' => true
                    ]
                );

`
Note : This code in incorrect and I just write it to say what I want.

Unfortunately that does not work with normal buttons.
Passing a different value than what's on the button only works for InlineKeyboardButtons using callback_data.
Hope this helps somehow 😕

I use genericMessageCommnet and handle buttons text as input .
thank you @noplanman


🐛 No disk space left on device even trying to change size in /etc/elemental/config.yaml

Kairos version:

NAME="kairos-ubuntu"
VERSION="v1.6.1-k3sv1.26.1+k3s1"
ID="kairos"
ID_LIKE="kairos-ubuntu"
VERSION_ID="v1.6.1-k3sv1.26.1+k3s1"
PRETTY_NAME="kairos-ubuntu v1.6.1-k3sv1.26.1+k3s1"
ANSI_COLOR="0;32"
BUG_REPORT_URL="https://github.com/kairos-io/kairos/issues/new/choose"
HOME_URL="https://github.com/kairos-io/provider-kairos"
IMAGE_REPO="quay.io/kairos/kairos-ubuntu"
IMAGE_LABEL="latest"
GITHUB_REPO="kairos-io/provider-kairos"
VARIANT="core"
FLAVOR="opensuse-leap
CPU architecture, OS, and Version:

Linux localhost 5.19.0-31-generic #32-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan 20 15:20:08 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Describe the bug

I've seen here that when the custom image to install is bigger than 3GB, size specified in /etc/elemental/config.yaml file needs to be modified. So I've tried to insert in my Dockerfile a COPY instruction to copy elemental config with 4000 as size in all field, but without success.
I'm installing a 3.5GB custom image using image field in install cloud-init declaration. So, I've created an .iso image using aurora boot with a mounted cloud-init file that create a user and in before-install stage I've used files instruction in order to change /etc/elemental/config.yaml content but this doesn't work as expected and the error no disk space left on device is returned when image pulling is terminated and installation starts.
Further, I'm sure is not a disk space issue because I've allocated a 80GB disk on VirtualBox.
mounted cloud-init file:
#cloud-config

install:
  auto: true
  device: "auto"
  reboot: true
  image: "MYCUSTOMIMAGE"

stages:
  boot:
    - name: "Setup users"
      users:
        kairos:                       # The username for the user.
          passwd: "kairos"                      # The password for the user.
  before-install:
    - name: "Increase elemental image size"
      files:
        - path: /etc/elemental/config.yaml
          content: |
            install:
              grub-entry-name: "Kairos"
              system:
                size: 4000
              recovery-system:
                size: 4000
            upgrade:
              grub-entry-name: "Kairos"
              recovery-system:
                size: 4000
              system:
                size: 4000
            reset:
              grub-entry-name: "Kairos"
              system:
                size: 4000

Expected behavior

I need to have a .iso with 4GB size specified in /etc/elemental/config.yaml in order to install a 3.4GB custom image.

Hi @mudler,
I've tried to add the following configuration as indicated in #209 but I get the same error.
Lines added to cloud-init files (I've just changed the device that in my case is /dev/sda):
stages:
  boot:
  # TODO: check which device exists
  - if:  '[ -e /dev/sda ] && (kairos-agent state get boot | grep -q unknown)'
    name: "Create partitions"
    commands:
      - |
        parted --script --machine -- /dev/sda mklabel msdos
    layout:
      device:
        path: /dev/sda
      add_partitions:
        - fsLabel: COS_STATE
          size: 16240 # At least 16gb
          pLabel: state

You could try to override the config for elemental to set the partition sizes in order to increase the COS_STATE partition, see https://github.com/kairos-io/elemental-cli/blob/main/config.yaml.example#L26
And then  also override the image size https://github.com/kairos-io/elemental-cli/blob/main/config.yaml.example#L69
But, this file needs to be on the rootfs that its gonna be installed, as before-install runs as part of the elemental lifecicle, it means that it has loaded the values already in memory so even if you change it there, it wont work.
Let me have a quick look to see how if this can be overriden easily

blergh, no impossible because we pass our own custom elemental config to the installer.....this will go away once we merge the confgi and elemental back into the agent so we can have our default config and then users can override it somehow :/

This PR should fix custom partitioning as soon as it's merged: https://github.com/kairos-io/kairos-agent/pull/32

I've got the same problem, solved by using the elemental object install.system and set the partition size of 16GB in my case
#cloud-config

install:
  system:
    label: COS_ACTIVE
    size: 16384
    fs: ext4
  auto: true
  device: "auto"
  reboot: true
  image: "MYCUSTOMIMAGE"

Hey folks, from 2.4.0 this should be easily configrable via cloud-config as shown in https://kairos.io/docs/advanced/configuring_partitions/ and on the full config: https://kairos.io/docs/reference/configuration/

Closing this as it has been fixed for several versions.


stdenv: run patchShebangs on the configure script when it's a file

if the configure script has a /usr/bin/env or some other shebang which is not in the sandbox then there will be errors such as
...-stdenv-linux/setup: line 1299: ./configure: cannot execute: required file not found
There are 250 files which patchShebangs ./configure
https://github.com/search?q=NOT+is%3Afork+lang%3Anix+%2FpatchShebangs+.\%2Fconfigure%2F&type=code
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/configure-cannot-execute-during-nix-build-but-not-during-nix-develop-i/35052/6

Rebuilding the world with this; should be done in ~10 hours.

Rebuilding the world with this; should be done in ~10 hours.

:+1: , I still have to add the treewide removal of the now unnecessary patchShebang's but

Resolved conflict


Adding custom error messages to Except utils

Hi !
I've been transitioning a test suite to vulcan and the only feature that I'm missing from the forge-std Test contract is the ability to specify a custom error message.
Ex:
assertEq(a, b, "a is not equal to b");

which was a really really nice feature as it really helped identify the exact failing condition
I was wondering if you would be open to extending the Expect utility to also have this feature with something like
expect(a).toEqual(b, "a is not equal to b")

Or something more exotic
because("a should be equal to b").expect(a).toEqual(b);

I could help implementing this, just lmk if it's something you think would fit in this library !

Merged: #231


VNC without SSH Tunnel

Hello,
Is there any way to connect to a VNC server without an SSH tunnel, similar to how the RDP functionality has been implemented?

Not right now, mainly because xpipe does not implement advanced encryption measures for VNC. The SSH tunnel guarantees that all traffic is encrypted. Without that, it would be insecure.
Do you have the system that is not reachable via SSH?

Thanks for the info. Just trying to migrate from RoyalTS as I've switched to using Windows & Ubuntu 50% of the time rather than Windows 100% of the time.
I've got a number of windows clients with VNC setup behind a secure VPN so the insecurity aspect isn't relevant for those.

I guess in these cases it would be secure, but xpipe doesn't know that for sure. Also implementing all the advanced encryption extensions for VNC would be a lot of work. With SSH it's just much easier.
Is this a problem for you, i.e. are you unable to connect via SSH?

Also to add to this, having an active shell connection in the background with SSH allows xpipe to realize a few additional features. E.g. to support dropping files directly into the VNC session. That would not be possible without SSH.

Appreciate the quick replies - I'll give things a try in the week and see what's feasible. A number of the windows machines don't have SSH and I couldn't seem to get them running on there but will have a play and see what happens.

There are several known issues with OpenSSH on Windows. Most of the time the solution is to manually install the latest OpenSSH server, e.g. as in https://github.com/xpipe-io/xpipe/issues/257#issuecomment-2096945084

I would be interested in having this functionality as well.
I'm trying to connect to a PLC that is running a VNC server.
However, it is not possible to connect to the with SSH because it is locked by the vendor.
Maybe with regard to the security aspect it would be a possibility to only allow "direct" VNC connections in local subnets.
That would at least provide some assurance to XPipe that the connection isn't fully unencrypted (VPN) or at least in a local network, where security wouldn't be such a big factor.
For now I am using a bit of a workaround by utilizing a script which opens RealVNC's VNC viewer with a saved config file.
While that works it would be great to have a one-click solution for this.

I see your point. I would have to think about how to solve this the best way. That would probably require adding a new connection type for direct VNC connections

In 11.2, XPipe now supports a limited amount of encrypted transfer methods. It makes sense to enable this now. You can now create direct VNC connections that do not require a tunnel.


Handle signals

We should probably do some signal handling.. like SIGTERM leading to a somewhat gracious shutdown and SIGHUP should reload the configuration file.
There's a section in the default configuration file stating that SIGHUP reloads the file. This is obviously not true until this issue is completed and so is noted by a TODO entry. Remove that entry as soon as this issue is complete.

I don't really know what to do with SIGTERM and SIGKILL different than today and since SIGHUP is handled with the above commits, I'm closing this one. We'll reopen a new one once we come up with something to do differently for some signal :)


Describe your bug here.
i tried compiling
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
n

💀

hi

hi hyd

Every day
I lose hope in humanity

bro really tried compiling


Fix freeVars computation for MatchGroup

Fixes #1502.
Previously a MatchGroup is treated as a single unit when computing bounded and free variables, which means in the added test case, x is considered bounded (but it is free in the first branch), and it would incorrectly suggest LambdaCase.
The correct approach is to compute the bounded and free variables for each branch individually, then combine them.

is this still desired to be merged @zliu41? if so shall we perhaps queue it behind https://github.com/ndmitchell/hlint/pull/1544, rebase on master once that lands, review and land? do please let me know!

is this still desired to be merged @zliu41? if so shall we perhaps queue it behind #1544, rebase on master once that lands, review and land? do please let me know!

by the way, in case it turns out to be relevant, due to a recent refactoring of HsLam on GHC HEAD, the ghc-next branch has another change to free var calculations relative to the ghc-9.8.1 branch:
diff --git a/src/GHC/Util/FreeVars.hs b/src/GHC/Util/FreeVars.hs
index de546d6a..f57abad5 100644
--- a/src/GHC/Util/FreeVars.hs
+++ b/src/GHC/Util/FreeVars.hs
@@ -99,8 +99,8 @@ unqualNames _ = []
 instance FreeVars (LocatedA (HsExpr GhcPs)) where
   freeVars (L _ (HsVar _ x)) = Set.fromList $ unqualNames x -- Variable.
   freeVars (L _ (HsUnboundVar _ x)) = Set.fromList [rdrNameOcc x] -- Unbound variable; also used for "holes".
-  freeVars (L _ (HsLam _ mg)) = free (allVars mg) -- Lambda abstraction.   Great find/fix.


Migrate Manager context methods to C++ + rename

What
Migrate context management methods to C++ from Python, and updated names to be more meaningful.
Why
Freeze/Thaw imply a behaviour that no longer exists. It used to be a requirement that a context wasn't used after freeze, but this is no longer necessary now it is de-coupled from transactions. It is perfectly legitimate for a host to get the token from a context to pass to a child process, etc... or hold this in a document whilst a process restarts.
ACs

Move:

Manager.createContext -> Manager::createContext
Manager.freezeContext -> std::string Manager::persistenceTokenForContext(const Context& context)
Manager.thawContext -> Manager::contextFromPersistenceToken(const std::string& token)
ManagerInterface.freezeState -> ManagerInterface::persistenceTokenForState
ManagerInterface.thawState -> ManagerInterface::stateFromPersistenceToken

Update relevant documentation to introduce the persistence concept.

persistence was the best name we could come up with. It is not great, but it helps reinforce the concept that the token is to allow you to keep a context alive beyond the object's lifetime.


Scala.JS/Native support

Macros are supported, and uses no other dependencies, so I assume it should be easy to cross build for Scala.Js too.
See http://stackoverflow.com/questions/30143126/how-do-i-port-an-existing-scala-library-to-scalajs

The POC succeeded, but not yet ready to be merged: https://github.com/mkotsbak/contextual/tree/scalajs_support

Triple build for Scala Native seems to work here: https://github.com/mkotsbak/contextual/tree/sbt-crossproject

Thank you for doing these investigations! Given my poor skills getting SBT to do what I want it to, I'd be very interested in getting PRs for these!

Will try to look more into it. I'm still unsure if all is correct, but it seems to work and the generated jars seems to contain the right files.


fix: return valid arn from createTriggers function

fixes issue #361
createTriggers function in file .sst/platform/src/components/aws/cognito-user-pool.ts currently returns full function object.
The triggers are then directly passed to the lambdaConfig properties on line 278.
However, this property is expecting the arn value. Fix returns this value instead.
Cognito doesn't automatically have permission to invoke the trigger functions. So new permissions policies have to be created for each of the functions after the pool has been created

Thanks @jaduplessis!


OpenSSF Technology Consumption Architecture for Dependency Management

This document captures technologies that are hosted in OpenSSF and some technologies in CNCF. The technical stack in this document demonstrates how OSS security technologies make software supply chain more secure through dependency management.
The goals of this document are:
To help open source producers quickly navigate the OSS security technology landscape, discover, adopt and contribute to technical initiatives.
To provide an easy model for our end user organizations large and small to have a framework/reference architecture to help them think about adopting OpenSSF technical projects and guidance.

This looks really good, content-wise. From a presentation standpoint, the headings throw me off a bit because as a reader, I don't immediately see how to answer the questions the document says I have. One suggestion would be to organize the sections to match the three use cases in the "Intended Audience" section. Something like
# OpenSSF projects (instead of "Open Source Software Dependency Management")

## Producing secure open source

## Consuming secure open source

## Contributing to OpenSSF projects

Alternatively, that h1 could go away and the h2s could become h1s. I'd be happy to put together a draft if you'd find that helpful.

This looks really good, content-wise. From a presentation standpoint, the headings throw me off a bit because as a reader, I don't immediately see how to answer the questions the document says I have. One suggestion would be to organize the sections to match the three use cases in the "Intended Audience" section. Something like
# OpenSSF projects (instead of "Open Source Software Dependency Management")

## Producing secure open source

## Consuming secure open source

## Contributing to OpenSSF projects

Alternatively, that h1 could go away and the h2s could become h1s. I'd be happy to put together a draft if you'd find that helpful.

Thank you @funnelfiasco for taking the time.... I'm very grateful that you are willing to update the document, and would love to see the new content structure.

Thank yoo @kairoaraujo for the updates, very much appreciate it!

@Danajoyluck I put my suggestions in a gist. There's probably a lot of polish needed, but it generally just re-organizes things to match the three questions the doc is intended to answer.
I hope this is useful. Happy to talk through my choices if you'd like


Associating metadata with Model properties for runtime reflection?

Given a property name for a given model, I'm needing a mechanism to extract custom defined information about its associated property. I want, for example, to be able to associate custom formatter functions with different props, or to be able to mark a prop as required.
I could build a look aside table, but mobx-keystone's runtime types seem well suited to this, and it'd be nice to have everything about a prop be defined in a single place. I'm wondering if a) there's already existing code for looking up the type of a prop, and b), whether there's a way to add a generic data value to any runtime prop?

Ah, think I see how this could work, using composition, i.e. create a new TypeInfo and have it wrap an existing type, like types.refinement does.
And it looks like the mechanism in typeCheck()  could be used to get the typeInfo:
    const modelType = typesModel<this>(this.constructor as any)
   ...

but typesModel() isn't exported, so no joy. Seems like adding something like Model.getTypeInfo(propKey: string) would be a useful public function. Happy to create a pull request if you think this is the right approach.

Aha, looks like I can do this:
@model('MyModel')
class MyModel extends Model({
  aPropValue: tProp(types.string, '')
}) {}

const type = types.model(MyModel);
const modelTypeInfo = getTypeInfo(type) as ModelTypeInfo;
const propTypeInfo = modelTypeInfo.props.aPropValue.typeInfo;

Yes, that's the right way to get the type info out of a model.
Why do you wanna avoid your own system to get custom data?
const customData = new WeakMap();

@model('MyModel')
class MyModel extends Model({
  aPropValue: tProp(types.string, '')
}) {}

customData.set(MyModel, {
  aPropValue: "beautiful"
})

const m = new MyModel(...)

customData.get(m.constructor) // { aPropValue: ... }

you could even type a setCustomData/getCustomData so it only accepts valid prop Names and so they do the m.constructor part auto if needed

Yes, not a terrible alternative, it's just that there's something nice about declaring everything about a prop in a single place.  Same reason decorators are nice, more readable, fewer footguns.
Especially since you have a nice design for runtime property reflection. I don't really need the runtime type checking, but would certainly use it for custom reflection.
I'm considering something like this right now:
const labeledStringType = (displayName: string) => {
  return types.annotation<{displayName: string}>(types.string, {displayName});
}

@model('MyModel')
class MyModel extends Model({
  myProp: tProp(labeledStringType('A Full Display Name'), '')
}) {}

It looks like some of the types creation API isn't exported though, so I may not be able to build this with vanilla mobx-keystone. Would types.annotation be of interest as a pull request if it turns out to be straightforward, or alternatively exposing the necessary types functions for external extensibility?

I've created a pull request for this for your consideration: https://github.com/xaviergonz/mobx-keystone/pull/461
As a final pitch, I should add the broader reason for the interest. A big frustration with Typescript has been that it doesn't provide runtime reflection, which can be a powerful tool. This library is very close to providing the missing piece for data, since it offers a schema at runtime.
Prop type annotations would help bridge this gap, and open many doors for metaprogramming. And while reflection hasn't really been emphasized (other than type checking), it seems consistent with the rest of the library's philosophy.

And thanks for MVVM :) I used it when I used to work with WPF ;)

Excellent, thanks for the responsiveness on this.
And you're welcome :-) (though I can't take all the credit).

Coming back to say I no longer think this is a good approach for the scenarios I originally envisioned. It involved tightly coupling model declaration with view related behavior, which is poor practice.
Since mobx-keystone provides unique type naming, a better approach is to use prop type discovery to acquire a type id, and then use that to map any view related attributes elsewhere.
I imagine there are still model-specific use cases for prop tags. If anyone has any suggestions for those, I'm happy to update the doc example to reflect a more appropriate usage.


[Feature Request]: Change location in change theme icon

Is there an existing issue for this?

[X] I have searched the existing issues

Feature Description
The user experience would be enhanced if the "Change Theme" icon was positioned at the top instead of the bottom, making it more accessible and convenient for users.
Use Case
Easy accessibility: I can quickly switch between themes without scrolling down to the bottom.
Improved user experience: The prominent icon placement would make it more intuitive and user-friendly.
Time-saving: I can swiftly change the theme to suit my preferences or needs, saving time and effort.
Enhanced customization: The easy access to theme options would encourage me to explore and utilize different themes, making my experience more engaging and personalized.
Benefits
Easy accessibility: I can quickly switch between themes without scrolling down to the bottom.
Improved user experience: The prominent icon placement would make it more intuitive and user-friendly.
Time-saving: I can swiftly change the theme to suit my preferences or needs, saving time and effort.
Enhanced customization: The easy access to theme options would encourage me to explore and utilize different themes, making my experience more engaging and personalized.
Add ScreenShots
No response
Priority
Medium
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

Let it be there.

Hello @anniepauline! Your issue #437 has been closed. Thank you for your contribution!


Filtering by the result returned by subquery

Hi there,
Thanks so much for a great library - been enjoying using it so far. Something I am running into that I haven't been able to figure out myself is how to insert a where condition on the result returned by a subquery helper.
We have a subquery that is doing a count, and when that is returned to the main query, I want to be able to filter on the results based on the count <= a number. This is doable in sql but not sure how to compose correctly in Kysely.
I have potshotted the following code in the playground and getting a reference error:
import { Species, Database } from "type-editor";

const species: Species = "hamster";

const filterByCount = true;

function withCount() {
  const eb = expressionBuilder<Database, "person">();

  return eb
    .selectFrom("pet")
    .whereRef("pet.owner_id", "=", "person.id")
    .select(({ fn }) =>
      fn.countAll<number>().as("count"),
    )
    .as("count");
}

const rows = await db
  .selectFrom("person")
  .select(withCount)
  .$if(!!filterByCount, (qb) =>
    qb.where((eb) => withCount(eb), "<", 3),
  )
  .execute();

if I include the subquery directly in the body of the where like this, it compiles and returns expected result.
  .selectFrom("person")
  .select(withCount)
  .$if(!!filterByCount, (qb) =>
    qb.where(
      (eb) =>
        eb
          .selectFrom("pet")
          .whereRef("pet.owner_id", "=", "person.id")
          .select(({ fn }) =>
            fn.countAll<number>().as("assignedDocumentsCount"),
          ),
      "<",
      3,
    ),
  )
  .execute();

We are using the withCount helper in more than one place, so would be great to make it reusable.
Any guidance or input would be much appreciated!

You can't have an alias when you use the query in a where statement.

By the way, you can share a link to the playground by saving (shift+cmd+s) or by clicking the More(F1) button and clicking save and shorten link.

Thanks so much for a speedy reply. Implemented the suggested changes and got it to work how we wanted it. Good to know about the aliases - since we have quite a few helpers implemented this way.

The alias is just an SQL alias. It literally adds  AS "theaAlias" at the end of the expression. That's an SQL thing, not a Kysely limitation.

Gotcha, is there a way to reference the alias directly instead of doing another subquery in the where?
for example:
  .selectFrom("person")
  .select(withCount().as('count'))
  .$if(!!filterByCount, (qb) =>
    qb.where('count', "<", 3),
  )
  .execute();```


Added customTagNames to formatThread

I need to retrieve the tags of the threads, thus added this to formatThread() in utils.js.

Ok we can probably do this, but can you please give more information about what this is?  I'm not aware of tag names for threads.. maybe a feature I didn't hear about?  What format is the data in? If you're going to add this, can you also tweak the docs to reflect it?

The tags are called labels in the GUI and documentation:
https://www.facebook.com/help/935707876542654
In a thread object, the following member appears (example):
"page_thread_info": {
	"flagged": false,
	"customTagNames": ["My label"]
}

Full example

Added  'customTagNames' to the list of properties in the callback from getThreadList in DOCS.md

Does this only happen messages sent by pages?  What happens if you're just sending/receiving as a user account?  I would imagine the page_thread_info field wouldn't exist in this case, causing formatThread() to throw an exception?

You are right, the page_thread_info field is not there for messages in a user account. Moreover, when there are no customTagNames, the value is an empty array:
"page_thread_info": []
Is there a way around this? For those who use Facebook Pages, labeling is a very useful feature.

I think I would be okay with simply only including this field for pages.  If it is a normal user message (i.e. no page_thread_info field, simply do not include that field in the returned object?
@bsansouci let me know what you think of this.
Regarding the second issue, it looks like page_thread_info is sometimes an object and sometimes an empty array?  What does the flagged: false refer to in the original example?  Could this be something we could either strip out or default to false if unspecified?  Maybe I'm misunderstanding what's going on.

Here is a screenshot showing how to flag a thread:

I assume the flagged field refers this. Also you can see the labels (tags) 'Joshua' and 'Voice'.

The retrieval of customTagNames now handles undefined page_thread_info objects. In these cases, customTagNames: undefined will be returned. The same happens when no labels has been assigned a page thread. Have tested it against user threads, as well as page threads with and without labels.
You might want to take a look at my way of checking for undefined, I'm not a javascript programmer. It works, but for all I know, there could be better ways :)

Also, I guess we should give some thought to whether it is best to flatten the structure by adding the page_thread_info children directly to the root, as done in this request, or whether we should maintain the original structure by letting customTagNames (and flagged) be children of a pageThreadInfo object.

Hey @matthiashhh, can you explain the difference between this PR and the one I just merged https://github.com/Schmavery/facebook-chat-api/pull/308 ?

I'm going to close this, as it seems like #308 fixed the same issue.  Thanks for much for investigating this @matthiashhh, and please comment if there's anything we missed :)


OpenXR: Add support for binding modifiers

Adds support for OpenXR binding modifiers to the action map.
This allows you to add modifiers to inputs such as applying thresholds or offsetting values, etc.
Binding modifiers can add additional input paths or change the type of an input path.
Todos:

[x] Create infrastructure for binding extension system to the action map
[x] Make UI changes to the action map UI
[x] Implement support for haptic triggers
[x] Implement analog threshold extension (may move this into vendor plugin)

[X] implement resource class
[x] implement UI

[x] Implement dpad binding extension

[x] implement resource class
[x] implement UI

Depends on:

#97392
#98163

There is now a demo for this project that can be found here:
https://github.com/godotengine/godot-demo-projects/pull/1137
Some improvements that can be done (possibly in follow up PRs):

[ ] Should show our modifier button icon in a different color if there are modifiers defined.
[ ] Should find a way to limit the modifiers you can create to those that are applicable.

Contributed by Khronos Group through the Godot Integration Project

Back working on this after dealing with a bout of the flu. Starting to get an interface together but need to change direction slightly.

While some of this is a bit of an unknown (but likely) future, I changed our action map structure slightly so we can record binding modifiers both on interaction profiles and on individual bindings.
Right now the dpad modifier is a bit of the odd duckling being the only modifier that is linked to an action set/source path combination and is thus recorded on the interaction profile level.
The analog threshold modifier is linked to an action/source path combo which is recorded as a binding (hence the changes in #98163) and it is very likely that this is going to be true for future modifiers as well.
Right now they are all added to the next chain or XrInteractionProfileSuggestedBinding when calling xrSuggestInteractionProfileBindings however this may change/be enhanced in the future.

UI is finally coming together. Binding modifiers are accessible either on the interaction profile (1) or for individual bindings (2):

Either button opens up a popup that allows for creating applicable binding modifiers on that level:

I still need to change the dialog for selecting a new binding modifier as it doesn't filter by type, and we only have the two modifiers right now but that will change in the near future.

Some interesting feedback concerning the DPad modifier extension that we need to ensure gets documented well.
The extension actually does two things when enabled.

It adds new binding paths you can use for each thumbstick and thumbpad input. These paths are immediately usable even if you do not add a dpad binding modifier
And it adds the dpad binding modifier, which lets you customise the dpad behaviour

All the new paths have been added to the meta data database. In doing this I've cleaned up a lot of the code to make it easier to manage. Still planning on adding a bit of extra logic in the UI when editing the action map so we only show bindings that are available based on which extensions have been selected in project settings so we don't get a whole bunch the user isn't using.

Other then needing to do some more testing, this should now all work.
My only remaining issue is that I had to use the EditorInspector class to make the property editors work properly but these introduce the resource section into the UI and I haven't found a way to supress this:

These sections make no sense in this context so I hope there is a way to remove them.

One more extra thing, this PR also introduces the OpenXRHapticBase base class and OpenXRHapticVibration class, currently only used for the new features in the action map. There are a number of vendor specific implementations of the haptic feedback OpenXR struct that forms the base of this implementation that are also used for triggering haptic feedback pulses from code.
I'm thinking of replacing OpenXRAPI::trigger_haptic_pulse with a version that takes an OpenXRHapticBase object as a parameter and we'll be able to perform different haptic effects as they are added to the OpenXR spec generically.
This is something we'll do in a separate PR however.

Maybe you can figure out why the tests fail.

editor/editor_inspector.cpp:4098:57: runtime error: member access within null pointer of type 'struct EditorFeatureProfileManager'
editor/editor_inspector.cpp:4098:154: runtime error: member access within null pointer of type 'struct Node'

================================================================
handle_crash: Program crashed with signal 11
Engine version: Godot Engine v4.4.dev.gh-97140 (b26897c0a0f76a2c8ee1f48419e975911b95d691)
Dumping the backtrace. Please include this when reporting the bug to the project developer.
[1] ./bin/godot.linuxbsd.editor.dev.double.x86_64.san(+0x380b26f7) [0x55bd781cc6f7] (??:?)
[2] /lib/x86_64-linux-gnu/libc.so.6(+0x43090) [0x7fc58e828090] (??:0)
[3] EditorInspector::_notification(int) (??:?)
[4] EditorInspector::_notificationv(int, bool) (??:?)
[5] Object::notification(int, bool) (??:?)
[6] Node::_propagate_ready() (??:?)
[7] Node::_propagate_ready() (??:?)
[8] Node::_propagate_ready() (??:?)
[9] Node::_set_tree(SceneTree*) (??:?)
[10] Node::_add_child_nocheck(Node*, StringName const&, Node::InternalMode) (??:?)
[11] Node::add_child(Node*, bool, Node::InternalMode) (??:?)
[12] void call_with_variant_args_helper<__UnexistingClass, Node*, bool, Node::InternalMode, 0ul, 1ul, 2ul>(__UnexistingClass*, void (__UnexistingClass::*)(Node*, bool, Node::InternalMode), Variant const**, Callable::CallError&, IndexSequence<0ul, 1ul, 2ul>) (??:?)
[13] void call_with_variant_args_dv<__UnexistingClass, Node*, bool, Node::InternalMode>(__UnexistingClass*, void (__UnexistingClass::*)(Node*, bool, Node::InternalMode), Variant const**, int, Callable::CallError&, Vector<Variant> const&) (??:?)
[14] MethodBindT<Node*, bool, Node::InternalMode>::call(Object*, Variant const**, int, Callable::CallError&) const (??:?)
[15] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (??:?)
[16] GDScriptInstance::callp(StringName const&, Variant const**, int, Callable::CallError&) (??:?)
[17] Object::callp(StringName const&, Variant const**, int, Callable::CallError&) (??:?)
[18] Variant::callp(StringName const&, Variant const**, int, Variant&, Callable::CallError&) (??:?)
[19] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (??:?)
[20] GDScriptInstance::callp(StringName const&, Variant const**, int, Callable::CallError&) (??:?)
[21] Node::_gdvirtual__ready_call() (??:?)
[22] Node::_notification(int) (??:?)
[23] Node::_notificationv(int, bool) (??:?)
[24] Object::notification(int, bool) (??:?)
[25] Node::_propagate_ready() (??:?)
[26] Node::_set_tree(SceneTree*) (??:?)
[27] Node::_add_child_nocheck(Node*, StringName const&, Node::InternalMode) (??:?)
[28] Node::add_child(Node*, bool, Node::InternalMode) (??:?)
[29] void call_with_variant_args_helper<__UnexistingClass, Node*, bool, Node::InternalMode, 0ul, 1ul, 2ul>(__UnexistingClass*, void (__UnexistingClass::*)(Node*, bool, Node::InternalMode), Variant const**, Callable::CallError&, IndexSequence<0ul, 1ul, 2ul>) (??:?)
[30] void call_with_variant_args_dv<__UnexistingClass, Node*, bool, Node::InternalMode>(__UnexistingClass*, void (__UnexistingClass::*)(Node*, bool, Node::InternalMode), Variant const**, int, Callable::CallError&, Vector<Variant> const&) (??:?)
[31] MethodBindT<Node*, bool, Node::InternalMode>::call(Object*, Variant const**, int, Callable::CallError&) const (??:?)
[32] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (??:?)
[33] GDScriptInstance::callp(StringName const&, Variant const**, int, Callable::CallError&) (??:?)
[34] Node::_gdvirtual__process_call(double) (??:?)
[35] Node::_notification(int) (??:?)
[36] Node::_notificationv(int, bool) (??:?)
[37] CanvasItem::_notificationv(int, bool) (??:?)
[38] Control::_notificationv(int, bool) (??:?)
[39] Object::notification(int, bool) (??:?)
[40] SceneTree::_process_group(SceneTree::ProcessGroup*, bool) (??:?)
[41] SceneTree::_process(bool) (??:?)
[42] SceneTree::process(double) (??:?)
[43] Main::iteration() (??:?)
[44] OS_LinuxBSD::run() (??:?)
[45] ./bin/godot.linuxbsd.editor.dev.double.x86_64.san(main+0x4a3) [0x55bd781cbf9c] (??:?)
[46] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7fc58e809083] (??:0)
[47] ./bin/godot.linuxbsd.editor.dev.double.x86_64.san(_start+0x2e) [0x55bd781cba3e] (??:?)
-- END OF BACKTRACE --

Maybe you can figure out why the tests fail.

Looks like a failure to check for NULL parameters with standard unit tests. Sadly on a part of the API that is completely unrelated to this work, so I don't know why it's suddenly failing.

Hmm I wonder, the line of code that fails is EditorFeatureProfileManager::get_singleton()->connect("current_feature_profile_changed", callable_mp(this, &EditorInspector::_feature_profile_changed));
I'm guessing the testing doesn't setup the editor classes so possibly me using the EditorInspector in classes that are exposed as they are designed to be subclassed in the vendors plugin.

@BastiaanOlij Is there a test project that can be used to help validate those changes?

@m4gr3d, I added a demo project on godot-demo-projects, see link in OP.

Is that expected? If so, how should dpad modifiers be added?

DPad modifiers aren't added to individual bindings, they are added to the interaction profile with the binding button on the right.
I need to figure out if I can add additional filters to the standard popup. I didn't want to create two separate base classes but maybe i need to go down that route.

@BastiaanOlij:

DPad modifiers aren't added to individual bindings, they are added to the interaction profile with the binding button on the right.
I need to figure out if I can add additional filters to the standard popup. I didn't want to create two separate base classes but maybe i need to go down that route.

I think even just having a more user-friendly error message would be OK. Right now, I'm getting a very programmer-y error and the modifier just fails to be added.
Maybe we just need a popup with an explanation?

@BastiaanOlij:

DPad modifiers aren't added to individual bindings, they are added to the interaction profile with the binding button on the right.
I need to figure out if I can add additional filters to the standard popup. I didn't want to create two separate base classes but maybe i need to go down that route.

I think even just having a more user-friendly error message would be OK. Right now, I'm getting a very programmer-y error and the modifier just fails to be added.
Maybe we just need a popup with an explanation?

I decided to go down the subclass path after all. So there is now an OpenXRIPBindingModifier class for binding modifiers that are recorded on interaction profile level, and a OpenXRActionBindingModifier class for binding modifiers that are recorded on individual actions/bindings.
Right now it seems a little overkill but once more binding modifiers become available it will start to make a whole lot more sense I recon.

@dsnopek Thanks for checking it again though, I do think it's time we merge this and any further things we find we can deal with later. It's a big PR but for people who don't use binding modifiers it's fairly low risk.
@AThousandShips dang :) That's a lot of cleanup of existing code. Worth doing I guess, I'll go through it later today :)

Limited it largely to new code 😅


Splitting API

Currently, Splitting.chars, Splitting.words, etc read quite well as an API, but in terms of flexibility, it can be a little tough to do more custom splits.
For example, I needed to include whitespace in a char split, and this is as simple as I could implement that.
Splitting('[data-splitting]')
  .map(function(s, i) {
    Splitting.index(s, "char", Splitting.split(s.el, 'char', ''));
  });

https://codepen.io/shshaw/pen/7d1bd8f2c49fc6d6b8a405afcdee021a
The way Splitting.index and Splitting.split work could use some retooling, but I think a simple API change could solve the core issue here.
Splitting({
   target: String|Node|Element|SplittingInstance
   split: "chars"|"words"|"lines"|"children"|String|RegularExp|Function
   key: String
   return: "string"|"array"
});

With a shorthand available for default or user added split functions:
Splitting(target, splitType /* "chars","words","lines", etc. */);

And for an even simpler setup...
//

//

Splitting(); // Automatically targets each [data-splitting] element and applies the value in the data attribute or defaults to "chars"

With the new API, my original example could be simplified down to this:
Splitting({
  target: '[data-splitting]',
  split: '',
  key: 'char'
});

Any thoughts @notoriousb1t?

I think the direction of Splitting({ /* ... */ }) is going to be more flexible for api changes and extensibility, so I agree this is a better direction.  I would recommend a few changes to the naming conventions for read-out-loud-ability.
Splitting({
    targets: 'div',
    on: 'chars',
    returns: 'string'
})

That would read out loud as "Splitting targets ____ on _____ and returns ____".  Being able to call Splitting() and have it read from data attributes would be fantastic.  I think that removes the barrier of entry for people that are nervous about using JavaScript, but are otherwise very capable with HTML and CSS>
My personal experience with supporting additional signatures like Splitting(target, splitType /* "chars","words","lines", etc. */); has not been positive.  It ultimately means that duplicate document must be drawn up and it provides a poor upgrade path from Splitting(target, splitType) to Splitting({ /* more complicated config */ }).
I don't 100% understand the nuance between key and split in your examples. What is the difference?

Split is what the text will be divided by (String, RegEx, function), with
convenient shortcuts for various uses (words, chars, children, lines)
key is what the CSS vars will be named by ( —char-index, —char-total, etc)
On Fri, Jun 22, 2018 at 11:30 PM Christopher Wallis <
<EMAIL_ADDRESS>wrote:

I think the direction of Splitting({ /* ... */ }) is going to be more
flexible for api changes and extensibility, so I agree this is a better
direction. I would recommend a few changes to the naming conventions for
read-out-loud-ability.
Splitting({
targets: 'div',
on: 'chars',
returns: 'string'
})
That would read out loud as "Splitting targets ____ on _____ and returns
____". Being able to call Splitting() and have it read from data
attributes would be fantastic. I think that removes the barrier of entry
for people that are nervous about using JavaScript, but are otherwise very
capable with HTML and CSS>
My personal experience with supporting additional signatures like Splitting(target,
splitType /* "chars","words","lines", etc. /); has not been positive. It
ultimately means that duplicate document must be drawn up and it provides a
poor upgrade path from Splitting(target, splitType) to Splitting({ / more
complicated config */ }).
I don't 100% understand the nuance between key and split in your examples.
What is the difference?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/shshaw/Splitting/issues/4#issuecomment-399630020, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAvbw8nDGNA8iJoUrNOqOG0h-1G0dgkyks5t_cRVgaJpZM4U0BeA
.

I see, so key is the variable prefix?  That makes sense.

Exactly. If the user provides a function to split, then they give a key for
Splitting to apply the prefixed vars.
If they don’t provide the key and it’s not a plug-in/default function,
should it do default vars (—index —total) or no vars?
On Sat, Jun 23, 2018 at 7:04 AM Christopher Wallis<EMAIL_ADDRESS>wrote:

I see, so key is the variable prefix? That makes sense.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/shshaw/Splitting/issues/4#issuecomment-399671951, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAvbw-oXNfYXVvv_r9OER6NYTlDTSQXSks5t_i7KgaJpZM4U0BeA
.

Because vars cascade downward, I think it would be safer to no assign --index, --total without a key.  Maybe use --splitting-index, --splitting-total?

Yeah, that or --split-index + --split-total.
Also, by instead of split or on?
Splitting({
  target: ...,
  by: ...
});

Say you want to pre-split for Vue/React or whatever instead of a selector/node. This is currently handled via Splitting.fromString.
In the new API, should we use a string property instead of target, or use a separate method, like Splitting.string?
Splitting({
  string: 'hello world',
  by: 'chars',
  return: 'string'
});
// returns '...'

Splitting.fromString('hello world', 'chars');
// or

Splitting.fromString({
  target: 'hello world',
  by: 'chars',
  return: 'string'|'element'
});

Split by makes sense and wouldn't be mislead someone to think it is an event handler.
I think it might make sense to use a separate option instead of a new signature.  The string: '' is on the right track.   I think using the word content might be a little clearer depending on the specifics. Can Spitting.fromString accept html content?

From our recent discussion:

Drop the return option
Move the string splitting functionality out to something like Splitting.innerHTML({...}) with the shortcut of Splitting.innerHTML('my text', 'chars');

Regarding Splitting.children / custom user functions, an options parameter containing an array of arguments to pass to the by parsing function.
Splitting({
  target: '.parent',
  by: 'children', // maps to a function via the plugin api
  key: 'item',
  options: ['.child-selector'] // Array of arguments to pass to the custom function?
});

So for plugin-like functionality in the API,
Splitting.add({
  name: 'children', // This would then be available in `Splitting({ by: 'children' })`
  key: 'child', // Default key
  by: function(target, options) {
    // Function run for each `target`, which is guaranteed to be an `Element` at this point)
    return Array.prototype.slice.call( target.querySelectorAll(options[0]) , 0);
    // Function should always return an array of Elements that are then passed to a `Splitting.index` style function to apply the `--key-index` var to items and `--key-total` to the target
  }
});

I merged the test branch from before into master locally and then pushed that up to 1.0.0.  I also re-arranged the code for the new api and got the existing test cases to pass.
We still need more tests to cover all the apis, but at the very least we have a working build I think for Splitting({ target: ..., by: ... })

https://github.com/shshaw/Splitting/tree/1.0.0

Solid. I'll look it over. Thanks 👍


encorbellment, desmoscolex (logical-conflict)

This pull request was generated by the 'mq' tool

/trunk merge